From 2a2198e8c53177e8c88e01185f0d22746fad6f53 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Thu, 20 Feb 2025 21:45:17 -0700 Subject: [PATCH 001/117] Initial commit for migration to Mkdocs. - Adds uv for python environment and dependencies. - Removes all ruby/pandoc content. - Begins adding configuration for Mkdocs based on other BLS Mkdocs projects. - Remaining work includes fixing internal links, tables, and probes. --- doc/.gitignore | 14 +- doc/.pylintrc | 585 +++++ doc/checkdoc.bat | 4 - doc/config/css/base.css | 94 - doc/config/defaults.yaml | 82 - doc/config/reference/.gitignore | 3 - .../reference/record-index-exceptions.yaml | 2 - doc/config/template/site-template.html | 80 - doc/config/template/template.tex | 291 --- doc/dodo.py | 21 + doc/lib/command.rb | 36 - doc/lib/coverage_check.rb | 348 --- doc/lib/cse.rb | 26 - doc/lib/def_parser.rb | 309 --- doc/lib/lineproc.rb | 29 - doc/lib/md.rb | 26 - doc/lib/pandoc.rb | 358 --- doc/lib/probes.rb | 130 -- doc/lib/section_index.rb | 39 - doc/lib/slug.rb | 17 - doc/lib/split_md.rb | 46 - doc/lib/table.rb | 318 --- doc/lib/tables.rb | 169 -- doc/lib/template.rb | 59 - doc/lib/toc.rb | 104 - doc/lib/utils.rb | 21 - doc/lib/verify_links.rb | 88 - doc/lib/xlink.rb | 440 ---- doc/package.json | 16 - doc/pyproject.toml | 33 + doc/rakefile.rb | 1986 ---------------- doc/src/about-cse.md | 7 - doc/src/cse-user-manual.yaml | 113 - .../assets/images}/fd_block.png | Bin .../assets/images}/fd_context.png | Bin .../{media => docs/assets/images}/fd_dims.png | Bin .../{media => docs/assets/images}/fd_refs.png | Bin .../{media => docs/assets/images}/image1.png | Bin .../assets/images}/pv_fixed.png | Bin .../assets/images}/pv_horiz_tracker_east.png | Bin .../assets/images}/pv_horiz_tracker_south.png | Bin .../images}/pv_tilted_tracker_south.png | Bin doc/src/docs/assets/javascript/extra_js.js | 6 + .../docs/assets/stylesheets/extra_styles.css | 5 + .../input-data--member-table-definition.csv | 6 + .../tables/input-data--member-table.csv | 2 + doc/src/docs/enduses.md | 26 + doc/src/{ => docs}/index.md | 13 + .../{records => docs/input-data}/afmeter.md | 0 .../input-data}/airhandler.md | 2022 ++++++++--------- .../{records => docs/input-data}/battery.md | 0 .../{records => docs/input-data}/boiler.md | 0 .../{records => docs/input-data}/chiller.md | 0 .../input-data}/construction.md | 0 .../{records => docs/input-data}/coolplant.md | 0 .../{records => docs/input-data}/descond.md | 0 .../{records => docs/input-data}/dhwdayuse.md | 0 .../input-data}/dhwheater-doc.md | 0 .../{records => docs/input-data}/dhwheater.md | 0 .../input-data}/dhwheatrec.md | 0 .../{records => docs/input-data}/dhwloop.md | 0 .../input-data}/dhwloopbranch.md | 0 .../input-data}/dhwloopheater.md | 0 .../input-data}/dhwlooppump.md | 0 .../input-data}/dhwloopseg.md | 0 .../{records => docs/input-data}/dhwmeter.md | 0 .../{records => docs/input-data}/dhwpump.md | 0 .../input-data}/dhwsolarcollector.md | 0 .../input-data}/dhwsolarsys.md | 0 .../input-data}/dhwsolartank.md | 0 .../{records => docs/input-data}/dhwsys.md | 0 .../{records => docs/input-data}/dhwtank.md | 0 .../{records => docs/input-data}/dhwuse.md | 0 doc/src/{records => docs/input-data}/doas.md | 0 doc/src/{records => docs/input-data}/door.md | 0 .../{records => docs/input-data}/ductseg.md | 0 .../{records => docs/input-data}/export.md | 0 .../{records => docs/input-data}/exportcol.md | 0 .../input-data}/exportfile.md | 0 doc/src/docs/input-data/fndblock.md | 153 ++ .../input-data}/foundation.md | 61 +- doc/src/{records => docs/input-data}/gain.md | 0 .../{records => docs/input-data}/glazetype.md | 0 .../{records => docs/input-data}/heatplant.md | 0 .../{records => docs/input-data}/holiday.md | 0 .../{records => docs/input-data}/hploop.md | 0 .../input-data}/importfile.md | 0 .../input-data/index.md} | 26 +- .../{records => docs/input-data}/inverse.md | 0 .../{records => docs/input-data}/izxfer.md | 0 doc/src/{records => docs/input-data}/layer.md | 0 .../{records => docs/input-data}/loadmeter.md | 0 .../{records => docs/input-data}/material.md | 0 doc/src/{records => docs/input-data}/meter.md | 0 .../input-data}/performancemap.md | 0 .../{records => docs/input-data}/perimeter.md | 0 doc/src/docs/input-data/pvarray.md | 287 +++ .../{records => docs/input-data}/report.md | 0 .../{records => docs/input-data}/reportcol.md | 0 .../input-data}/reportfile.md | 0 doc/src/{records => docs/input-data}/rsys.md | 0 .../{records => docs/input-data}/sgdist.md | 0 doc/src/{records => docs/input-data}/shade.md | 0 .../{records => docs/input-data}/shadex.md | 0 .../{records => docs/input-data}/surface.md | 0 .../{records => docs/input-data}/terminal.md | 465 ++-- .../input-data}/top-members.md | 0 .../input-data}/towerplant.md | 0 .../{records => docs/input-data}/window.md | 0 doc/src/{records => docs/input-data}/zone.md | 0 doc/src/{ => docs}/input-structure.md | 1061 +++++---- doc/src/{ => docs}/introduction.md | 0 doc/src/{ => docs}/operation.md | 41 +- doc/src/docs/output-reports.md | 249 ++ doc/src/docs/probe-definitions/index.md | 1 + doc/src/docs/probe-definitions/probe-1.md | 0 doc/src/enduses.md | 26 - doc/src/mkdocs.yml | 116 + doc/src/output-reports.md | 242 -- doc/src/records/fndblock.md | 153 -- doc/src/records/pvarray.md | 288 --- .../input-data--member-table-definition.csv | 6 - doc/src/web-page.yaml | 19 - doc/test/coverage_check_test.rb | 528 ----- doc/test/rakefile_test.rb | 16 - doc/test/resources/airhandler.md | 1547 ------------- doc/test/resources/boiler.md | 141 -- doc/test/resources/chiller.md | 300 --- doc/test/resources/construction.md | 34 - doc/test/resources/coolplant.md | 93 - doc/test/resources/cullist-snippet.txt | 14 - doc/test/resources/cullist.txt | 909 -------- doc/test/resources/dhwheater.md | 246 -- doc/test/resources/dhwloop.md | 59 - doc/test/resources/dhwloopbranch.md | 91 - doc/test/resources/dhwlooppump.md | 45 - doc/test/resources/dhwloopseg.md | 95 - doc/test/resources/dhwpump.md | 45 - doc/test/resources/dhwsys.md | 139 -- doc/test/resources/dhwtank.md | 81 - doc/test/resources/door.md | 148 -- doc/test/resources/ductseg.md | 149 -- doc/test/resources/export.md | 160 -- doc/test/resources/exportcol.md | 65 - doc/test/resources/exportfile.md | 52 - doc/test/resources/gain.md | 123 - doc/test/resources/glazetype.md | 147 -- doc/test/resources/heatplant.md | 72 - doc/test/resources/holiday.md | 150 -- doc/test/resources/hploop.md | 3 - doc/test/resources/importfile.md | 102 - doc/test/resources/izxfer.md | 274 --- doc/test/resources/layer.md | 59 - doc/test/resources/material.md | 79 - doc/test/resources/meter.md | 69 - doc/test/resources/perimeter.md | 37 - doc/test/resources/pvarray.md | 224 -- doc/test/resources/report.md | 280 --- doc/test/resources/reportcol.md | 80 - doc/test/resources/reportfile.md | 92 - doc/test/resources/rsys.md | 360 --- doc/test/resources/sgdist.md | 84 - doc/test/resources/shade.md | 128 -- doc/test/resources/surface.md | 304 --- doc/test/resources/terminal.md | 392 ---- doc/test/resources/top-members.md | 463 ---- doc/test/resources/towerplant.md | 306 --- doc/test/resources/window.md | 201 -- doc/test/resources/zone.md | 321 --- doc/test/table_test.rb | 124 - doc/test/template_test.rb | 38 - doc/test/test_helper.rb | 8 - doc/test/xlink_test.rb | 68 - doc/uv.lock | 988 ++++++++ 174 files changed, 4380 insertions(+), 17321 deletions(-) create mode 100644 doc/.pylintrc delete mode 100644 doc/checkdoc.bat delete mode 100644 doc/config/css/base.css delete mode 100644 doc/config/defaults.yaml delete mode 100644 doc/config/reference/.gitignore delete mode 100644 doc/config/reference/record-index-exceptions.yaml delete mode 100644 doc/config/template/site-template.html delete mode 100644 doc/config/template/template.tex create mode 100644 doc/dodo.py delete mode 100644 doc/lib/command.rb delete mode 100644 doc/lib/coverage_check.rb delete mode 100644 doc/lib/cse.rb delete mode 100644 doc/lib/def_parser.rb delete mode 100644 doc/lib/lineproc.rb delete mode 100644 doc/lib/md.rb delete mode 100644 doc/lib/pandoc.rb delete mode 100644 doc/lib/probes.rb delete mode 100644 doc/lib/section_index.rb delete mode 100644 doc/lib/slug.rb delete mode 100644 doc/lib/split_md.rb delete mode 100644 doc/lib/table.rb delete mode 100644 doc/lib/tables.rb delete mode 100644 doc/lib/template.rb delete mode 100644 doc/lib/toc.rb delete mode 100644 doc/lib/utils.rb delete mode 100644 doc/lib/verify_links.rb delete mode 100644 doc/lib/xlink.rb delete mode 100644 doc/package.json create mode 100644 doc/pyproject.toml delete mode 100644 doc/rakefile.rb delete mode 100644 doc/src/about-cse.md delete mode 100644 doc/src/cse-user-manual.yaml rename doc/src/{media => docs/assets/images}/fd_block.png (100%) rename doc/src/{media => docs/assets/images}/fd_context.png (100%) rename doc/src/{media => docs/assets/images}/fd_dims.png (100%) rename doc/src/{media => docs/assets/images}/fd_refs.png (100%) rename doc/src/{media => docs/assets/images}/image1.png (100%) rename doc/src/{media => docs/assets/images}/pv_fixed.png (100%) rename doc/src/{media => docs/assets/images}/pv_horiz_tracker_east.png (100%) rename doc/src/{media => docs/assets/images}/pv_horiz_tracker_south.png (100%) rename doc/src/{media => docs/assets/images}/pv_tilted_tracker_south.png (100%) create mode 100644 doc/src/docs/assets/javascript/extra_js.js create mode 100644 doc/src/docs/assets/stylesheets/extra_styles.css create mode 100644 doc/src/docs/assets/tables/input-data--member-table-definition.csv create mode 100644 doc/src/docs/assets/tables/input-data--member-table.csv create mode 100644 doc/src/docs/enduses.md rename doc/src/{ => docs}/index.md (72%) rename doc/src/{records => docs/input-data}/afmeter.md (100%) rename doc/src/{records => docs/input-data}/airhandler.md (51%) rename doc/src/{records => docs/input-data}/battery.md (100%) rename doc/src/{records => docs/input-data}/boiler.md (100%) rename doc/src/{records => docs/input-data}/chiller.md (100%) rename doc/src/{records => docs/input-data}/construction.md (100%) rename doc/src/{records => docs/input-data}/coolplant.md (100%) rename doc/src/{records => docs/input-data}/descond.md (100%) rename doc/src/{records => docs/input-data}/dhwdayuse.md (100%) rename doc/src/{records => docs/input-data}/dhwheater-doc.md (100%) rename doc/src/{records => docs/input-data}/dhwheater.md (100%) rename doc/src/{records => docs/input-data}/dhwheatrec.md (100%) rename doc/src/{records => docs/input-data}/dhwloop.md (100%) rename doc/src/{records => docs/input-data}/dhwloopbranch.md (100%) rename doc/src/{records => docs/input-data}/dhwloopheater.md (100%) rename doc/src/{records => docs/input-data}/dhwlooppump.md (100%) rename doc/src/{records => docs/input-data}/dhwloopseg.md (100%) rename doc/src/{records => docs/input-data}/dhwmeter.md (100%) rename doc/src/{records => docs/input-data}/dhwpump.md (100%) rename doc/src/{records => docs/input-data}/dhwsolarcollector.md (100%) rename doc/src/{records => docs/input-data}/dhwsolarsys.md (100%) rename doc/src/{records => docs/input-data}/dhwsolartank.md (100%) rename doc/src/{records => docs/input-data}/dhwsys.md (100%) rename doc/src/{records => docs/input-data}/dhwtank.md (100%) rename doc/src/{records => docs/input-data}/dhwuse.md (100%) rename doc/src/{records => docs/input-data}/doas.md (100%) rename doc/src/{records => docs/input-data}/door.md (100%) rename doc/src/{records => docs/input-data}/ductseg.md (100%) rename doc/src/{records => docs/input-data}/export.md (100%) rename doc/src/{records => docs/input-data}/exportcol.md (100%) rename doc/src/{records => docs/input-data}/exportfile.md (100%) create mode 100644 doc/src/docs/input-data/fndblock.md rename doc/src/{records => docs/input-data}/foundation.md (71%) rename doc/src/{records => docs/input-data}/gain.md (100%) rename doc/src/{records => docs/input-data}/glazetype.md (100%) rename doc/src/{records => docs/input-data}/heatplant.md (100%) rename doc/src/{records => docs/input-data}/holiday.md (100%) rename doc/src/{records => docs/input-data}/hploop.md (100%) rename doc/src/{records => docs/input-data}/importfile.md (100%) rename doc/src/{input-data.md => docs/input-data/index.md} (60%) rename doc/src/{records => docs/input-data}/inverse.md (100%) rename doc/src/{records => docs/input-data}/izxfer.md (100%) rename doc/src/{records => docs/input-data}/layer.md (100%) rename doc/src/{records => docs/input-data}/loadmeter.md (100%) rename doc/src/{records => docs/input-data}/material.md (100%) rename doc/src/{records => docs/input-data}/meter.md (100%) rename doc/src/{records => docs/input-data}/performancemap.md (100%) rename doc/src/{records => docs/input-data}/perimeter.md (100%) create mode 100644 doc/src/docs/input-data/pvarray.md rename doc/src/{records => docs/input-data}/report.md (100%) rename doc/src/{records => docs/input-data}/reportcol.md (100%) rename doc/src/{records => docs/input-data}/reportfile.md (100%) rename doc/src/{records => docs/input-data}/rsys.md (100%) rename doc/src/{records => docs/input-data}/sgdist.md (100%) rename doc/src/{records => docs/input-data}/shade.md (100%) rename doc/src/{records => docs/input-data}/shadex.md (100%) rename doc/src/{records => docs/input-data}/surface.md (100%) rename doc/src/{records => docs/input-data}/terminal.md (55%) rename doc/src/{records => docs/input-data}/top-members.md (100%) rename doc/src/{records => docs/input-data}/towerplant.md (100%) rename doc/src/{records => docs/input-data}/window.md (100%) rename doc/src/{records => docs/input-data}/zone.md (100%) rename doc/src/{ => docs}/input-structure.md (66%) rename doc/src/{ => docs}/introduction.md (100%) rename doc/src/{ => docs}/operation.md (63%) create mode 100644 doc/src/docs/output-reports.md create mode 100644 doc/src/docs/probe-definitions/index.md create mode 100644 doc/src/docs/probe-definitions/probe-1.md delete mode 100644 doc/src/enduses.md create mode 100644 doc/src/mkdocs.yml delete mode 100644 doc/src/output-reports.md delete mode 100644 doc/src/records/fndblock.md delete mode 100644 doc/src/records/pvarray.md delete mode 100644 doc/src/tables/input-data--member-table-definition.csv delete mode 100644 doc/src/web-page.yaml delete mode 100644 doc/test/coverage_check_test.rb delete mode 100644 doc/test/rakefile_test.rb delete mode 100644 doc/test/resources/airhandler.md delete mode 100644 doc/test/resources/boiler.md delete mode 100644 doc/test/resources/chiller.md delete mode 100644 doc/test/resources/construction.md delete mode 100644 doc/test/resources/coolplant.md delete mode 100644 doc/test/resources/cullist-snippet.txt delete mode 100644 doc/test/resources/cullist.txt delete mode 100644 doc/test/resources/dhwheater.md delete mode 100644 doc/test/resources/dhwloop.md delete mode 100644 doc/test/resources/dhwloopbranch.md delete mode 100644 doc/test/resources/dhwlooppump.md delete mode 100644 doc/test/resources/dhwloopseg.md delete mode 100644 doc/test/resources/dhwpump.md delete mode 100644 doc/test/resources/dhwsys.md delete mode 100644 doc/test/resources/dhwtank.md delete mode 100644 doc/test/resources/door.md delete mode 100644 doc/test/resources/ductseg.md delete mode 100644 doc/test/resources/export.md delete mode 100644 doc/test/resources/exportcol.md delete mode 100644 doc/test/resources/exportfile.md delete mode 100644 doc/test/resources/gain.md delete mode 100644 doc/test/resources/glazetype.md delete mode 100644 doc/test/resources/heatplant.md delete mode 100644 doc/test/resources/holiday.md delete mode 100644 doc/test/resources/hploop.md delete mode 100644 doc/test/resources/importfile.md delete mode 100644 doc/test/resources/izxfer.md delete mode 100644 doc/test/resources/layer.md delete mode 100644 doc/test/resources/material.md delete mode 100644 doc/test/resources/meter.md delete mode 100644 doc/test/resources/perimeter.md delete mode 100644 doc/test/resources/pvarray.md delete mode 100644 doc/test/resources/report.md delete mode 100644 doc/test/resources/reportcol.md delete mode 100644 doc/test/resources/reportfile.md delete mode 100644 doc/test/resources/rsys.md delete mode 100644 doc/test/resources/sgdist.md delete mode 100644 doc/test/resources/shade.md delete mode 100644 doc/test/resources/surface.md delete mode 100644 doc/test/resources/terminal.md delete mode 100644 doc/test/resources/top-members.md delete mode 100644 doc/test/resources/towerplant.md delete mode 100644 doc/test/resources/window.md delete mode 100644 doc/test/resources/zone.md delete mode 100644 doc/test/table_test.rb delete mode 100644 doc/test/template_test.rb delete mode 100644 doc/test/test_helper.rb delete mode 100644 doc/test/xlink_test.rb create mode 100644 doc/uv.lock diff --git a/doc/.gitignore b/doc/.gitignore index 5c6615501..13e7223c2 100644 --- a/doc/.gitignore +++ b/doc/.gitignore @@ -1,9 +1,13 @@ build/ -output/ -node_modules/ config.yaml -erb-out.txt -documentation-coverage-report.txt -package-lock.json + +*.egg*/ +.doit.* +.pytest_cache/ +.vscode/ +.venv/ +__pycache__/ +dist/ + diff --git a/doc/.pylintrc b/doc/.pylintrc new file mode 100644 index 000000000..12335f318 --- /dev/null +++ b/doc/.pylintrc @@ -0,0 +1,585 @@ +[MASTER] + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code. +extension-pkg-allow-list= + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code. (This is an alternative name to extension-pkg-allow-list +# for backward compatibility.) +extension-pkg-whitelist= + +# Return non-zero exit code if any of these messages/categories are detected, +# even if score is above --fail-under value. Syntax same as enable. Messages +# specified are enabled, while categories only check already-enabled messages. +fail-on= + +# Specify a score threshold to be exceeded before program exits with error. +fail-under=10.0 + +# Files or directories to be skipped. They should be base names, not paths. +ignore=CVS + +# Add files or directories matching the regex patterns to the ignore-list. The +# regex matches against paths and can be in Posix or Windows format. +ignore-paths= + +# Files or directories matching the regex patterns are skipped. The regex +# matches against base names, not paths. The default value ignores emacs file +# locks +ignore-patterns=^\.# + +# Python code to execute, usually for sys.path manipulation such as +# pygtk.require(). +#init-hook= + +# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the +# number of processors available to use. +jobs=1 + +# Control the amount of potential inferred values when inferring a single +# object. This can help the performance when dealing with large functions or +# complex, nested conditions. +limit-inference-results=100 + +# List of plugins (as comma separated values of python module names) to load, +# usually to register additional checkers. +load-plugins= + +# Pickle collected data for later comparisons. +persistent=yes + +# Minimum Python version to use for version dependent checks. Will default to +# the version used to run pylint. +py-version=3.10 + +# Discover python modules and packages in the file system subtree. +recursive=no + +# When enabled, pylint would attempt to guess common misconfiguration and emit +# user-friendly hints instead of false-positive error messages. +suggestion-mode=yes + +# Allow loading of arbitrary C extensions. Extensions are imported into the +# active Python interpreter and may run arbitrary code. +unsafe-load-any-extension=no + + +[MESSAGES CONTROL] + +# Only show warnings with the listed confidence levels. Leave empty to show +# all. Valid levels: HIGH, CONTROL_FLOW, INFERENCE, INFERENCE_FAILURE, +# UNDEFINED. +confidence= + +# Disable the message, report, category or checker with the given id(s). You +# can either give multiple identifiers separated by comma (,) or put this +# option multiple times (only on the command line, not in the configuration +# file where it should appear only once). You can also use "--disable=all" to +# disable everything first and then re-enable specific checks. For example, if +# you want to run only the similarities checker, you can use "--disable=all +# --enable=similarities". If you want to run only the classes checker, but have +# no Warning level messages displayed, use "--disable=all --enable=classes +# --disable=W". +disable=raw-checker-failed, + bad-inline-option, + locally-disabled, + file-ignored, + suppressed-message, + useless-suppression, + deprecated-pragma, + use-symbolic-message-instead + +# Enable the message, report, category or checker with the given id(s). You can +# either give multiple identifier separated by comma (,) or put this option +# multiple time (only on the command line, not in the configuration file where +# it should appear only once). See also the "--disable" option for examples. +enable=c-extension-no-member + + +[REPORTS] + +# Python expression which should return a score less than or equal to 10. You +# have access to the variables 'fatal', 'error', 'warning', 'refactor', +# 'convention', and 'info' which contain the number of messages in each +# category, as well as 'statement' which is the total number of statements +# analyzed. This score is used by the global evaluation report (RP0004). +evaluation=max(0, 0 if fatal else 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)) + +# Template used to display messages. This is a python new-style format string +# used to format the message information. See doc for all details. +#msg-template= + +# Set the output format. Available formats are text, parseable, colorized, json +# and msvs (visual studio). You can also give a reporter class, e.g. +# mypackage.mymodule.MyReporterClass. +output-format=text + +# Tells whether to display a full report or only the messages. +reports=no + +# Activate the evaluation score. +score=yes + + +[REFACTORING] + +# Maximum number of nested blocks for function / method body +max-nested-blocks=5 + +# Complete name of functions that never returns. When checking for +# inconsistent-return-statements if a never returning function is called then +# it will be considered as an explicit return statement and no message will be +# printed. +never-returning-functions=sys.exit,argparse.parse_error + + +[LOGGING] + +# The type of string formatting that logging methods do. `old` means using % +# formatting, `new` is for `{}` formatting. +logging-format-style=old + +# Logging modules to check that the string format arguments are in logging +# function parameter format. +logging-modules=logging + + +[SPELLING] + +# Limits count of emitted suggestions for spelling mistakes. +max-spelling-suggestions=4 + +# Spelling dictionary name. Available dictionaries: none. To make it work, +# install the 'python-enchant' package. +spelling-dict= + +# List of comma separated words that should be considered directives if they +# appear and the beginning of a comment and should not be checked. +spelling-ignore-comment-directives=fmt: on,fmt: off,noqa:,noqa,nosec,isort:skip,mypy: + +# List of comma separated words that should not be checked. +spelling-ignore-words= + +# A path to a file that contains the private dictionary; one word per line. +spelling-private-dict-file= + +# Tells whether to store unknown words to the private dictionary (see the +# --spelling-private-dict-file option) instead of raising a message. +spelling-store-unknown-words=no + + +[MISCELLANEOUS] + +# List of note tags to take in consideration, separated by a comma. +notes=FIXME, + XXX, + TODO + +# Regular expression of note tags to take in consideration. +#notes-rgx= + + +[TYPECHECK] + +# List of decorators that produce context managers, such as +# contextlib.contextmanager. Add to this list to register other decorators that +# produce valid context managers. +contextmanager-decorators=contextlib.contextmanager + +# List of members which are set dynamically and missed by pylint inference +# system, and so shouldn't trigger E1101 when accessed. Python regular +# expressions are accepted. +generated-members= + +# Tells whether missing members accessed in mixin class should be ignored. A +# class is considered mixin if its name matches the mixin-class-rgx option. +ignore-mixin-members=yes + +# Tells whether to warn about missing members when the owner of the attribute +# is inferred to be None. +ignore-none=yes + +# This flag controls whether pylint should warn about no-member and similar +# checks whenever an opaque object is returned when inferring. The inference +# can return multiple potential results while evaluating a Python object, but +# some branches might not be evaluated, which results in partial inference. In +# that case, it might be useful to still emit no-member and other checks for +# the rest of the inferred objects. +ignore-on-opaque-inference=yes + +# List of class names for which member attributes should not be checked (useful +# for classes with dynamically set attributes). This supports the use of +# qualified names. +ignored-classes=optparse.Values,thread._local,_thread._local + +# List of module names for which member attributes should not be checked +# (useful for modules/projects where namespaces are manipulated during runtime +# and thus existing member attributes cannot be deduced by static analysis). It +# supports qualified module names, as well as Unix pattern matching. +ignored-modules= + +# Show a hint with possible names when a member name was not found. The aspect +# of finding the hint is based on edit distance. +missing-member-hint=yes + +# The minimum edit distance a name should have in order to be considered a +# similar match for a missing member name. +missing-member-hint-distance=1 + +# The total number of similar names that should be taken in consideration when +# showing a hint for a missing member. +missing-member-max-choices=1 + +# Regex pattern to define which classes are considered mixins ignore-mixin- +# members is set to 'yes' +mixin-class-rgx=.*[Mm]ixin + +# List of decorators that change the signature of a decorated function. +signature-mutators= + + +[VARIABLES] + +# List of additional names supposed to be defined in builtins. Remember that +# you should avoid defining new builtins when possible. +additional-builtins= + +# Tells whether unused global variables should be treated as a violation. +allow-global-unused-variables=yes + +# List of names allowed to shadow builtins +allowed-redefined-builtins= + +# List of strings which can identify a callback function by name. A callback +# name must start or end with one of those strings. +callbacks=cb_, + _cb + +# A regular expression matching the name of dummy variables (i.e. expected to +# not be used). +dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ + +# Argument names that match this expression will be ignored. Default to name +# with leading underscore. +ignored-argument-names=_.*|^ignored_|^unused_ + +# Tells whether we should check for unused import in __init__ files. +init-import=no + +# List of qualified module names which can have objects that can redefine +# builtins. +redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io + + +[FORMAT] + +# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. +expected-line-ending-format= + +# Regexp for a line that is allowed to be longer than the limit. +ignore-long-lines=^\s*(# )??$ + +# Number of spaces of indent required inside a hanging or continued line. +indent-after-paren=4 + +# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 +# tab). +indent-string=' ' + +# Maximum number of characters on a single line. +max-line-length=120 + +# Maximum number of lines in a module. +max-module-lines=1000 + +# Allow the body of a class to be on the same line as the declaration if body +# contains single statement. +single-line-class-stmt=no + +# Allow the body of an if to be on the same line as the test if there is no +# else. +single-line-if-stmt=no + + +[SIMILARITIES] + +# Comments are removed from the similarity computation +ignore-comments=yes + +# Docstrings are removed from the similarity computation +ignore-docstrings=yes + +# Imports are removed from the similarity computation +ignore-imports=no + +# Signatures are removed from the similarity computation +ignore-signatures=no + +# Minimum lines number of a similarity. +min-similarity-lines=4 + + +[STRING] + +# This flag controls whether inconsistent-quotes generates a warning when the +# character used as a quote delimiter is used inconsistently within a module. +check-quote-consistency=no + +# This flag controls whether the implicit-str-concat should generate a warning +# on implicit string concatenation in sequences defined over several lines. +check-str-concat-over-line-jumps=no + + +[BASIC] + +# Naming style matching correct argument names. +argument-naming-style=snake_case + +# Regular expression matching correct argument names. Overrides argument- +# naming-style. If left empty, argument names will be checked with the set +# naming style. +#argument-rgx= + +# Naming style matching correct attribute names. +attr-naming-style=snake_case + +# Regular expression matching correct attribute names. Overrides attr-naming- +# style. If left empty, attribute names will be checked with the set naming +# style. +#attr-rgx= + +# Bad variable names which should always be refused, separated by a comma. +bad-names=foo, + bar, + baz, + toto, + tutu, + tata + +# Bad variable names regexes, separated by a comma. If names match any regex, +# they will always be refused +bad-names-rgxs= + +# Naming style matching correct class attribute names. +class-attribute-naming-style=any + +# Regular expression matching correct class attribute names. Overrides class- +# attribute-naming-style. If left empty, class attribute names will be checked +# with the set naming style. +#class-attribute-rgx= + +# Naming style matching correct class constant names. +class-const-naming-style=UPPER_CASE + +# Regular expression matching correct class constant names. Overrides class- +# const-naming-style. If left empty, class constant names will be checked with +# the set naming style. +#class-const-rgx= + +# Naming style matching correct class names. +class-naming-style=PascalCase + +# Regular expression matching correct class names. Overrides class-naming- +# style. If left empty, class names will be checked with the set naming style. +#class-rgx= + +# Naming style matching correct constant names. +const-naming-style=UPPER_CASE + +# Regular expression matching correct constant names. Overrides const-naming- +# style. If left empty, constant names will be checked with the set naming +# style. +#const-rgx= + +# Minimum line length for functions/classes that require docstrings, shorter +# ones are exempt. +docstring-min-length=-1 + +# Naming style matching correct function names. +function-naming-style=snake_case + +# Regular expression matching correct function names. Overrides function- +# naming-style. If left empty, function names will be checked with the set +# naming style. +#function-rgx= + +# Good variable names which should always be accepted, separated by a comma. +good-names=i, + j, + k, + ex, + Run, + _ + +# Good variable names regexes, separated by a comma. If names match any regex, +# they will always be accepted +good-names-rgxs= + +# Include a hint for the correct naming format with invalid-name. +include-naming-hint=no + +# Naming style matching correct inline iteration names. +inlinevar-naming-style=any + +# Regular expression matching correct inline iteration names. Overrides +# inlinevar-naming-style. If left empty, inline iteration names will be checked +# with the set naming style. +#inlinevar-rgx= + +# Naming style matching correct method names. +method-naming-style=snake_case + +# Regular expression matching correct method names. Overrides method-naming- +# style. If left empty, method names will be checked with the set naming style. +#method-rgx= + +# Naming style matching correct module names. +module-naming-style=snake_case + +# Regular expression matching correct module names. Overrides module-naming- +# style. If left empty, module names will be checked with the set naming style. +#module-rgx= + +# Colon-delimited sets of names that determine each other's naming style when +# the name regexes allow several styles. +name-group= + +# Regular expression which should only match function or class names that do +# not require a docstring. +no-docstring-rgx=^_ + +# List of decorators that produce properties, such as abc.abstractproperty. Add +# to this list to register other decorators that produce valid properties. +# These decorators are taken in consideration only for invalid-name. +property-classes=abc.abstractproperty + +# Regular expression matching correct type variable names. If left empty, type +# variable names will be checked with the set naming style. +#typevar-rgx= + +# Naming style matching correct variable names. +variable-naming-style=snake_case + +# Regular expression matching correct variable names. Overrides variable- +# naming-style. If left empty, variable names will be checked with the set +# naming style. +variable-rgx=[a-z] # Allow single-letter variables (useful in list comprehensions, exception propagation, etc.) + + +[CLASSES] + +# Warn about protected attribute access inside special methods +check-protected-access-in-special-methods=no + +# List of method names used to declare (i.e. assign) instance attributes. +defining-attr-methods=__init__, + __new__, + setUp, + __post_init__ + +# List of member names, which should be excluded from the protected access +# warning. +exclude-protected=_asdict, + _fields, + _replace, + _source, + _make + +# List of valid names for the first argument in a class method. +valid-classmethod-first-arg=cls + +# List of valid names for the first argument in a metaclass class method. +valid-metaclass-classmethod-first-arg=cls + + +[IMPORTS] + +# List of modules that can be imported at any level, not just the top level +# one. +allow-any-import-level= + +# Allow wildcard imports from modules that define __all__. +allow-wildcard-with-all=no + +# Analyse import fallback blocks. This can be used to support both Python 2 and +# 3 compatible code, which means that the block might have code that exists +# only in one or another interpreter, leading to false positives when analysed. +analyse-fallback-blocks=no + +# Deprecated modules which should not be used, separated by a comma. +deprecated-modules= + +# Output a graph (.gv or any supported image format) of external dependencies +# to the given file (report RP0402 must not be disabled). +ext-import-graph= + +# Output a graph (.gv or any supported image format) of all (i.e. internal and +# external) dependencies to the given file (report RP0402 must not be +# disabled). +import-graph= + +# Output a graph (.gv or any supported image format) of internal dependencies +# to the given file (report RP0402 must not be disabled). +int-import-graph= + +# Force import order to recognize a module as part of the standard +# compatibility libraries. +known-standard-library= + +# Force import order to recognize a module as part of a third party library. +known-third-party=enchant + +# Couples of modules and preferred modules, separated by a comma. +preferred-modules= + + +[DESIGN] + +# List of regular expressions of class ancestor names to ignore when counting +# public methods (see R0903) +exclude-too-few-public-methods= + +# List of qualified class names to ignore when counting class parents (see +# R0901) +ignored-parents= + +# Maximum number of arguments for function / method. +max-args=5 + +# Maximum number of attributes for a class (see R0902). +max-attributes=7 + +# Maximum number of boolean expressions in an if statement (see R0916). +max-bool-expr=5 + +# Maximum number of branch for function / method body. +max-branches=12 + +# Maximum number of locals for function / method body. +max-locals=15 + +# Maximum number of parents for a class (see R0901). +max-parents=7 + +# Maximum number of public methods for a class (see R0904). +max-public-methods=20 + +# Maximum number of return / yield for function / method body. +max-returns=6 + +# Maximum number of statements in function / method body. +max-statements=50 + +# Minimum number of public methods for a class (see R0903). +min-public-methods=2 + + +[EXCEPTIONS] + +# Exceptions that will emit a warning when being caught. Defaults to +# "BaseException, Exception". +overgeneral-exceptions=BaseException, + Exception diff --git a/doc/checkdoc.bat b/doc/checkdoc.bat deleted file mode 100644 index 778d783b8..000000000 --- a/doc/checkdoc.bat +++ /dev/null @@ -1,4 +0,0 @@ -:: fast build of CSE documentation (single HTML only) -call rake build_html_single -call rake coverage -start output\cse-user-manual.html diff --git a/doc/config/css/base.css b/doc/config/css/base.css deleted file mode 100644 index ed0bdad73..000000000 --- a/doc/config/css/base.css +++ /dev/null @@ -1,94 +0,0 @@ -@media all {html {font-size: 24px;}} -@media all and (max-width:1000px){html {font-size: 24px;}} -@media all and (max-width: 960px){html {font-size: 22px;}} -@media all and (max-width: 920px){html {font-size: 21px;}} -@media all and (max-width: 880px){html {font-size: 20px;}} -@media all and (max-width: 840px){html {font-size: 19px;}} -@media all and (max-width: 800px){html {font-size: 18px;}} -@media all and (max-width: 760px){html {font-size: 17px;}} -@media all and (max-width: 720px){html {font-size: 16px;}} -@media all and (max-width: 680px){html {font-size: 15px;}} -@media all and (max-width: 640px){html {font-size: 14px;}} -@media all and (max-width: 600px){html {font-size: 13px;}} -@media all and (max-width: 560px){html {font-size: 12px;}} -@media all and (max-width: 520px){html {font-size: 10px;}} -body { - width: 1000px; - margin: 0 auto; -} -body > * { - font-size: 100%; - margin-left: 2.5rem; - margin-right: 2.5rem; - text-align: justify; -} -table { - font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; - background: #fff; - width: 100%; - border-collapse: collapse; - text-align: left; - margin-left: auto; - margin-right: auto; -} -table th { - font-size: 100%; - font-weight: normal; - color: #039; - border-bottom: 2px solid #6678b1; - padding: 10px 8px; -} -table td { - color: #669; - font-size: 80%; - padding: 9px 8px 0; - vertical-align: top; -} -h1 { - font-family: "Helvetica"; - text-transform: uppercase; - border-top: 1px solid #666; - padding-top: 0em; - font-size: 170%; -} -h1.subtitle { - font-size: 125%; - border: none; -} -pre { - background-color: #fbf1d2; - padding-top: 1rem; - padding-bottom: 1rem; -} -td code { - font-size: 80%; -} -pre code { - font-size: 60%; - font-weight: lighter; - width: 100%; -} -.nav-bar { - display: inline-block; - list-style: none; -} -.nav-bar li { - padding-left: 1em; - padding-right: 1em; - display: inline; -} -.footer { - font-size: 60%; - font-weight: lighter; - width: 100%; - border-top: medium solid black; - padding: 1em; -} -.draft { - font-weight: bold; - text-align: center; - color: cornflowerblue; -} -.underline { - text-decoration: underline; -} diff --git a/doc/config/defaults.yaml b/doc/config/defaults.yaml deleted file mode 100644 index a6cabbdeb..000000000 --- a/doc/config/defaults.yaml +++ /dev/null @@ -1,82 +0,0 @@ -# Copyright (c) 1997-2018 The CSE Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license -# that can be found in the LICENSE file. -# The branch in this git repository used for "GitHub Pages" -# see https://pages.github.com/ -docs-branch: "gh-pages" -# the source directory for the documentation -src-dir: "src" -# The reference directory with various reference files -reference-dir: "config/reference" -# Path to CSSNano if it is present -# see http://cssnano.co/ -cssnano-exe: "node_modules/.bin/cssnano" -# Path to html-minifier -# see https://github.com/kangax/html-minifier -html-minifier-exe: "node_modules/.bin/html-minifier" -# Flag on whether to use Node.js or not -# if yes, node is used to compress the HTML and CSS files -use-node?: true -# Flag on whether or not to use GitHub pages -# if yes, when the documentation is generated, it is set up for easier use to -# push to github pages -use-ghpages?: true -# Flag on whether to build the PDFs or not. Defaults to false since PDF -# requires more dependencies -build-pdf?: false -# Location of the build directory (relative to this file) -build-dir: 'build' -# Location of the final output directory -output-dir: 'output' -# URL of the remote origin. This is also the location where the gh-pages branch -remote-repo-url: "https://github.com/cse-sim/cse.git" -# Flag to build under 'draft' status or not -draft?: false -# If true, runs verification after a build to check generated document links -verify-links?: true -# If true, runs verification after a build to check that manifests include all -# files and that all files expected are accounted for -verify-manifest?: true -# Flag to set the verbosity of output -verbose?: false -# Run documentation coverage report by default? -# This report checks doc/config/reference/cullist.txt against what's in the -# documentation to determine if the documentation is covering all topics -coverage?: true -# This flag determines whether the "table pre-processing language" is made -# active during ERB preprocessing or not. If this is set to "true", then -# the directives available in lib/table.rb in the class Main are available -# within ERB -use-table-lang?: true -# if defined, the path below directs the table preprocessing language as to -# where to find CSV table files. Only relevant if "use-table-lang?" is true -table-path: "src/tables" -# if true, the build directory will be automatically deleted after output -# is created. Defaults to false as the system only rebuilds what is needed -# so it is more efficient to keep the build directory around. Note: this -# is the same as calling "rake clean" after building and will only be -# invoked on the default "rake" or "rake build" tasks. Also, NOTE that -# if your output directory is inside of the build directory, it will -# be deleted, too! -delete-build-dir?: false -# this variable holds various "flags" to pass into the ERB preprocessor -# NOTE: Only define variable keys that could be standard Ruby variables! -# For example, "some-variable: 10" would not work since "some-variable" -# is not a valid Ruby variable name. On a related note, all variables must -# be lower case due to a restriction of how we pass these variables into -# the ERB preprocessor and due to Ruby associating a semantics with upper -# case names. -context: - build_all: true - test_erb: false - inactive_CNE_records: false # true -> include TERMINAL, CHILLER, etc - # (records not used in CA compliance) - comfort_model: false # true -> include ZONE comfort model inputs - not_yet_implemented: false # true -> include portions that are explicitly - # labeled as NYI. - # Residential Alternative Calculation Method document link at CA/CEC - # Note: linking to the BEES reference section as the location of standards on - # the CA website is believed to change often - racm_url: "http://www.bwilcox.com/BEES/reference.html" - # show_comments: if true, show comments, otherwise don't - show_comments: false diff --git a/doc/config/reference/.gitignore b/doc/config/reference/.gitignore deleted file mode 100644 index ff1491a56..000000000 --- a/doc/config/reference/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -cullist.txt -probes.txt -probes_input.yaml diff --git a/doc/config/reference/record-index-exceptions.yaml b/doc/config/reference/record-index-exceptions.yaml deleted file mode 100644 index c55e914e7..000000000 --- a/doc/config/reference/record-index-exceptions.yaml +++ /dev/null @@ -1,2 +0,0 @@ ---- -TOP-MEMBERS: {"TOP": "top-members.html#top-members"} diff --git a/doc/config/template/site-template.html b/doc/config/template/site-template.html deleted file mode 100644 index 8760f7fb8..000000000 --- a/doc/config/template/site-template.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - -$for(author-meta)$ - -$endfor$ -$if(date-meta)$ - -$endif$ -$if(keywords)$ - -$endif$ - $if(title-prefix)$$title-prefix$ – $endif$$pagetitle$ - -$if(quotes)$ - -$endif$ -$if(highlighting-css)$ - -$endif$ -$for(css)$ - -$endfor$ -$if(math)$ - $math$ -$endif$ - -$for(header-includes)$ - $header-includes$ -$endfor$ - - -$for(include-before)$ -$include-before$ -$endfor$ -$if(title)$ -
-

$title$

-$if(subtitle)$ -

$subtitle$

-$endif$ -$for(author)$ -

$author$

-$endfor$ -$if(date)$ -

$date$

-$endif$ -$if(draft)$ -

DRAFT

-$endif$ -$if(do-nav)$ - -$endif$ -
-$endif$ -$if(toc)$ - -$endif$ -
-$body$ -
- -$for(include-after)$ -$include-after$ -$endfor$ - - diff --git a/doc/config/template/template.tex b/doc/config/template/template.tex deleted file mode 100644 index eb293c5d9..000000000 --- a/doc/config/template/template.tex +++ /dev/null @@ -1,291 +0,0 @@ -\documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$babel-lang$,$endif$$if(papersize)$$papersize$paper,$endif$$for(classoption)$$classoption$$sep$,$endfor$]{$documentclass$} -$if(fontfamily)$ -\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$} -$else$ -\usepackage{lmodern} -$endif$ -$if(linestretch)$ -\usepackage{setspace} -\setstretch{$linestretch$} -$endif$ -\usepackage{amssymb,amsmath} -% BEGIN add bold math -\usepackage{bm} -% END add bold math -\usepackage{ifxetex,ifluatex} -\usepackage{fixltx2e} % provides \textsubscript -\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex - \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc} - \usepackage[utf8]{inputenc} -$if(euro)$ - \usepackage{eurosym} -$endif$ -\else % if luatex or xelatex - \ifxetex - \usepackage{mathspec} - \else - \usepackage{fontspec} - \fi - \defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase} -$for(fontfamilies)$ - \newfontfamily{$fontfamilies.name$}[$fontfamilies.options$]{$fontfamilies.font$} -$endfor$ -$if(euro)$ - \newcommand{\euro}{€} -$endif$ -$if(mainfont)$ - \setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$} -$endif$ -$if(sansfont)$ - \setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$} -$endif$ -$if(monofont)$ - \setmonofont[Mapping=tex-ansi$if(monofontoptions)$,$for(monofontoptions)$$monofontoptions$$sep$,$endfor$$endif$]{$monofont$} -$endif$ -$if(mathfont)$ - \setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} -$endif$ -$if(CJKmainfont)$ - \usepackage{xeCJK} - \setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$} -$endif$ -\fi -% use upquote if available, for straight quotes in verbatim environments -\IfFileExists{upquote.sty}{\usepackage{upquote}}{} -% use microtype if available -\IfFileExists{microtype.sty}{% -\usepackage{microtype} -\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts -}{} -$if(geometry)$ -\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry} -$endif$ -% BEGIN fancy header addition Aug 16, 2016 -% NOTE: See http://tex.stackexchange.com/questions/241523/header-line-doesnt-span-width-of-page -% Fancy Header must be loaded *AFTER* geometry -\usepackage{fancyhdr} -\pagestyle{fancy} -\fancyhead[CO,CE]{$header$} -\fancyfoot[CO,CE]{$footer$$if(draft)$ -- DRAFT --$endif$} -\fancyfoot[LE,RO]{\thepage} -\renewcommand{\headrulewidth}{0.4pt} -\renewcommand{\footrulewidth}{0.4pt} -% END fancy header addition Aug 16, 2016 -\usepackage[unicode=true]{hyperref} -$if(colorlinks)$ -\PassOptionsToPackage{usenames,dvipsnames}{color} % color is loaded by hyperref -$endif$ -\hypersetup{ -$if(title-meta)$ - pdftitle={$title-meta$}, -$endif$ -$if(author-meta)$ - pdfauthor={$author-meta$}, -$endif$ -$if(keywords)$ - pdfkeywords={$for(keywords)$$keywords$$sep$; $endfor$}, -$endif$ -$if(colorlinks)$ - colorlinks=true, - linkcolor=$if(linkcolor)$$linkcolor$$else$Maroon$endif$, - citecolor=$if(citecolor)$$citecolor$$else$Blue$endif$, - urlcolor=$if(urlcolor)$$urlcolor$$else$Blue$endif$, -$else$ - pdfborder={0 0 0}, -$endif$ - breaklinks=true} -\urlstyle{same} % don't use monospace font for urls -$if(lang)$ -\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex - \usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel} -$if(babel-newcommands)$ - $babel-newcommands$ -$endif$ -\else - \usepackage{polyglossia} - \setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$} -$for(polyglossia-otherlangs)$ - \setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$} -$endfor$ -\fi -$endif$ -$if(natbib)$ -\usepackage{natbib} -\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} -$endif$ -$if(biblatex)$ -\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex} -$for(bibliography)$ -\addbibresource{$bibliography$} -$endfor$ -$endif$ -$if(listings)$ -\usepackage{listings} -$endif$ -$if(lhs)$ -\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} -$endif$ -$if(highlighting-macros)$ -$highlighting-macros$ -$endif$ -$if(verbatim-in-note)$ -\usepackage{fancyvrb} -\VerbatimFootnotes % allows verbatim text in footnotes -$endif$ -$if(tables)$ -\usepackage{longtable,booktabs} -$endif$ -$if(graphics)$ -\usepackage{graphicx,grffile} -\makeatletter -\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} -\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi} -\makeatother -% Scale images if necessary, so that they will not overflow the page -% margins by default, and it is still possible to overwrite the defaults -% using explicit options in \includegraphics[width, height, ...]{} -\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} -$endif$ -$if(links-as-notes)$ -% Make links footnotes instead of hotlinks: -\renewcommand{\href}[2]{#2\footnote{\url{#1}}} -$endif$ -$if(strikeout)$ -\usepackage[normalem]{ulem} -% avoid problems with \sout in headers with hyperref: -\pdfstringdefDisableCommands{\renewcommand{\sout}{}} -$endif$ -$if(indent)$ -$else$ -\IfFileExists{parskip.sty}{% -\usepackage{parskip} -}{% else -\setlength{\parindent}{0pt} -\setlength{\parskip}{6pt plus 2pt minus 1pt} -} -$endif$ -\setlength{\emergencystretch}{3em} % prevent overfull lines -\providecommand{\tightlist}{% - \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} -$if(numbersections)$ -\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$} -$else$ -\setcounter{secnumdepth}{0} -$endif$ -$if(subparagraph)$ -$else$ -% Redefines (sub)paragraphs to behave more like sections -\ifx\paragraph\undefined\else -\let\oldparagraph\paragraph -\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}} -\fi -\ifx\subparagraph\undefined\else -\let\oldsubparagraph\subparagraph -\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}} -\fi -$endif$ -$if(dir)$ -\ifxetex - % load bidi as late as possible as it modifies e.g. graphicx - $if(latex-dir-rtl)$ - \usepackage[RTLdocument]{bidi} - $else$ - \usepackage{bidi} - $endif$ -\fi -\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex - \TeXXeTstate=1 - \newcommand{\RL}[1]{\beginR #1\endR} - \newcommand{\LR}[1]{\beginL #1\endL} - \newenvironment{RTL}{\beginR}{\endR} - \newenvironment{LTR}{\beginL}{\endL} -\fi -$endif$ -$for(header-includes)$ -$header-includes$ -$endfor$ - -$if(title)$ -\title{$title$$if(thanks)$\thanks{$thanks$}$endif$} -$endif$ -$if(subtitle)$ -\providecommand{\subtitle}[1]{} -\subtitle{$subtitle$} -$endif$ -$if(author)$ -\author{$for(author)$$author$$sep$ \and $endfor$} -$endif$ -$if(institute)$ -\institute{$for(institute)$$institute$$sep$ \and $endfor$} -$endif$ -\date{$date$} - -\begin{document} -\begin{titlepage} -\centering - $if(draft)$ - {\Large DRAFT \par} - \vspace{1cm} - $endif$ - {\LARGE $title$ \par} - $if(subtitle)$ - \vspace{1cm} - {\Large $subtitle$ \par} - $endif$ - \vspace{4cm} - {\Large $date$ \par} - \vspace{$if(draft)$13cm$else$14cm$endif$} - {\small Copyright (c) 1997-$if(current_year)$$current_year$$else$2017$endif$ The CSE Authors. All rights reserved. \par} - - \vfill - -\end{titlepage} -$if(abstract)$ -\begin{abstract} -$abstract$ -\end{abstract} -$endif$ - -$for(include-before)$ -$include-before$ - -$endfor$ -$if(toc)$ -{ -$if(colorlinks)$ -\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$black$endif$} -$endif$ -\setcounter{tocdepth}{$toc-depth$} -\tableofcontents -} -$endif$ -$if(lot)$ -\listoftables -$endif$ -$if(lof)$ -\listoffigures -$endif$ -$body$ - -$if(natbib)$ -$if(bibliography)$ -$if(biblio-title)$ -$if(book-class)$ -\renewcommand\bibname{$biblio-title$} -$else$ -\renewcommand\refname{$biblio-title$} -$endif$ -$endif$ -\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$} - -$endif$ -$endif$ -$if(biblatex)$ -\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$ - -$endif$ -$for(include-after)$ -$include-after$ - -$endfor$ -\end{document} diff --git a/doc/dodo.py b/doc/dodo.py new file mode 100644 index 000000000..16f49f623 --- /dev/null +++ b/doc/dodo.py @@ -0,0 +1,21 @@ +# TODO Render Jinja2 templates, then serve or build (or use a Jinja template plugin) + + +def task_get_probes(): + """Run `cse -p` to get all possible probes.""" + + +def render_templates(): + """Render Jinja2 templates into Markdown for use by Mkdocs""" + + +def serve(): + """Serve docs for local development""" + + +def build(): + """Build docs""" + + +def task_test(): + """Run unit tests""" diff --git a/doc/lib/command.rb b/doc/lib/command.rb deleted file mode 100644 index 02f042b77..000000000 --- a/doc/lib/command.rb +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright (c) 1997-2016 The CSE Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license -# that can be found in the LICENSE file. -require('open3') - -module Command - # Run :: String (Array String) ?String ?Bool -> String - # Given a command (a String), an array of strings of options, and an optional - # input string to feed into the program, and an optional flag to print if - # verbose, return program's output, erroring if the program errors - Run = lambda do |cmd, opts, input=nil, verbose=false| - opts_str = if opts.instance_of?("".class) - opts - else - opts.join(' ') - end - cmd = "#{cmd} #{opts_str}" - output = error = exit_status = nil - Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thr| - stdin.puts(input) if input - stdin.close - stdout.set_encoding('utf-8') - output = stdout.read - error = stderr.read - exit_status = wait_thr.value - end - if verbose - puts("cmd : #{cmd}") - puts("input : #{input}") - puts("output: #{output}") - puts("error : #{error}") - end - raise error unless exit_status.success? - output - end -end diff --git a/doc/lib/coverage_check.rb b/doc/lib/coverage_check.rb deleted file mode 100644 index bc1f72200..000000000 --- a/doc/lib/coverage_check.rb +++ /dev/null @@ -1,348 +0,0 @@ -require 'set' - -module CoverageCheck - # String -> (Or Nil String) - # Given a line of markdown, recognize an ATX header and return the header - # itself or return nil - MdHeader = lambda do |line| - m = line.match(/^#+\s+(.*)$/) - if m - m[1].strip - else - nil - end - end - # String -> (Or Nil String) - # Given a line of markdown, recognize a data item header and return it, or - # return nil. - DataItemHeader = lambda do |line| - m = line.match(/^\*\*(.*)\*\*\\?\s*$/) - if m - header = m[1].split(/=/)[0].gsub(/\*/,'').strip - if Ignore[header] - nil - else - header - end - else - nil - end - end - IgnoredHeaders = Set.new(["Related Probes"].map(&:downcase)) - # String -> Bool - # Return true if the given header should be ignored - Ignore = lambda do |header| - hdc = header.downcase - IgnoredHeaders.each do |ih| - return true if hdc.include?(ih) or ih.include?(hdc) - end - false - end - # String -> (Map String (Set String)) - # Given the content of a markdown document of a record and its input, return - # a RecordInputSet for the records and input fields found in that document - ParseRecordDocument = lambda do |content| - output = {} - current_header = nil - content.lines.map(&:chomp).each do |line| - h = MdHeader[line] - if h and not Ignore[h] - current_header = h - output[current_header] = Set.new unless output.include?(h) - else - input_hdr = DataItemHeader[line] - if input_hdr - output[current_header] << input_hdr - end - end - end - output - end - # String -> (Map String (Set String)) - # Given a file path to a markdown document containing record documentation, - # return a RecordInputSet for the records and input fields found in that - # document. - ReadRecordDocument = lambda do |path| - ParseRecordDocument[File.read(path)] - end - # (Array String) -> (Map String (Set String)) - # Given an array of file paths to record documentation, consecutively - # construct a RecordInputSet from all of the documents listed. Note: it is an - # error for a document to define the same Record Name, Record Input Field - # combination. - ReadAllRecordDocuments = lambda do |paths| - output = {} - paths.each do |path| - new_output = ReadRecordDocument[path] - new_output.keys.each do |k| - if output.include?(k) - raise "Duplicate keys found: #{k} at #{path}" - end - end - output.merge!(new_output) - end - output - end - # String -> (Map String (Set String)) - # Given the string content of the results of `cse -c > cullist.txt`, - # parse that into a RecordInputSet - ParseCulList = lambda do |content| - output = {} - current_record = nil - content.lines.map(&:chomp).each_with_index do |line, idx| - next unless idx > 3 - record = line.match(/^(\S+).*$/) - if record - current_record = record[1].strip - output[current_record] = Set.new unless output.include?(current_record) - elsif !current_record.nil? - field = line.match(/^ (\S+).*$/) - if field - output[current_record] << field[1].strip - end - end - end - output - end - # String -> (Map String (Set String)) - # Given the path to a cullist.txt file (i.e., the result of `cse -c > - # cullist.txt`), read the file and parse it into a RecordInputSet - ReadCulList = lambda do |path| - ParseCulList[File.read(path)] - end - # Given two sets and an optional flag (defaults to false) that, if true, - # compares on case, if false, doesn't; check for differences between the - # contents of set 1 and the contents of set 2, reporting items in the first - # set (but not in the second) and items in the second set (but not in the - # first) - # ARGUMENTS - # s1: (Set String), the first set - # s2: (Set String), the second set - # case_matters: ?Bool, if true compare with case, else case-insensitive; default: false - # keys_to_ignore: ?(Or (Set String) nil): a set of keys to ignore; default nil - # RETURNS - # (Or Nil - # (Record :in_1st_not_2nd (Or Nil (Set String)) - # :in_2nd_not_1st (Or Nil (Set String)))) - SetDifferences = lambda do |s1, s2, case_matters=false, keys_to_ignore=nil| - keys_to_ignore ||= Set.new - if s1 == s2 - nil - elsif case_matters - s1_ = s1 - keys_to_ignore - s2_ = s2 - keys_to_ignore - if s1_ == s2_ - nil - else - { - :in_1st_not_2nd => s1_ - s2_, - :in_2nd_not_1st => s2_ - s1_, - } - end - else - keys_to_ignore_dc = Set.new(keys_to_ignore.map {|k|k.downcase}) - f = lambda {|m, item| m.merge({item.downcase => item})} - m1 = s1.inject({}, &f) - m2 = s2.inject({}, &f) - s1_ = Set.new(m1.keys) - keys_to_ignore_dc - s2_ = Set.new(m2.keys) - keys_to_ignore_dc - if s1_ == s2_ - nil - else - { - :in_1st_not_2nd => Set.new((s1_ - s2_ - keys_to_ignore_dc).map {|k| m1[k]}), - :in_2nd_not_1st => Set.new((s2_ - s1_ - keys_to_ignore_dc).map {|k| m2[k]}), - } - end - end - end - # (Map String (Set String)) -> (Map String (Set String)) - # Given a map from string to set of string, adjust the map so that fields - # with spacing in them get collapsed to the record defined by the first word - # through set union - AdjustMap = lambda do |m| - n = {} - m.each do |k, v| - new_k = (k =~ /\s+/) ? k.split(/\s+/)[0] : k - if n.include?(new_k) - n[new_k] += v - else - n[new_k] = v - end - end - n - end - # (Map String (Set String)) -> (Map String (Set String)) - # Adjust a record input set to drop all fields that end with "Name" - DropNameFields = lambda do |ris| - n = {} - ris.each do |k, vs| - n[k] = vs.reject {|v| v.end_with?("Name")}.to_set - end - n - end - # RecordInputSet -> RecordInputSet - # Downcase a record input set - DowncaseRecordInputSet = lambda do |ris| - n = {} - ris.each do |k, vs| - n[k.downcase] = vs.map(&:downcase).to_set - end - n - end - # (Map String (Set String)) (Map String (Set String)) ?Bool -> - # (Map String (Set String)) - # Given a record input set and a reference record input set and an optional - # boolean flag (defaulting to false) that, if true, compares case sensitive, - # drop all fields that end with "Name" UNLESS they also appear in the - # reference. Note: compares - DropNameFieldsIfNotInRef = lambda do |ris, ref, case_sensitive=false| - ref = case_sensitive ? ref : DowncaseRecordInputSet[ref] - name = case_sensitive ? "Name" : "name" - n = {} - ris.each do |k, vs| - kk = case_sensitive ? k : k.downcase - n[k] = vs.reject {|v| - w = case_sensitive ? v : v.downcase - w.end_with?(name) && !(ref.include?(kk) && ref[kk].include?(w)) - }.to_set - end - n - end - # Given two RecordInputSet objects, an optional flag (defaulting to false) - # which, if true, compares based on case, and optional records to ignore and - # record fields to ignore, compare the two RecordInputSet objects, returning - # any differences. If no differences, return nil. - # ARGUMENTS: - # - ris1: (Map String (Set String)) - # - ris2: (Map String (Set String)) - # - case_matters: ?Bool - # - records_to_ignore: ?(Set String) - # - record_fields_to_ignore: ?(Map String (Set String)) - # RETURN: - # (Or Nil - # (Record :records_in_1st_not_2nd (Or Nil (Set String)) - # :records_in_2nd_not_1st (Or Nil (Set String)) - # String - # (Record :in_1st_not_2nd (Or Nil (Set String)) - # :in_2nd_not_1st (Or Nil (Set String))))) - RecordInputSetDifferences = lambda do |ris1, ris2, case_matters=false, records_to_ignore=nil, record_fields_to_ignore=nil| - records_to_ignore ||= Set.new - record_fields_to_ignore ||= {} - if !case_matters - # if case doesn't matter, downcase all keys - ris1 = ris1.keys.inject({}) {|m, k| m.merge({k.downcase => Set.new(ris1[k].map {|ris1k|ris1k.downcase})})} - ris2 = ris2.keys.inject({}) {|m, k| m.merge({k.downcase => Set.new(ris2[k].map {|ris2k|ris2k.downcase})})} - records_to_ignore = Set.new(records_to_ignore.map {|k| k.downcase}) - record_fields_to_ignore = record_fields_to_ignore.keys.inject({}) {|m, k| m.merge({k.downcase => record_fields_to_ignore[k]})} - end - if ris1 == ris2 - nil - else - g = lambda {|x,y|{records_in_1st_not_2nd: x, records_in_2nd_not_1st: y}} - ks1 = Set.new(ris1.keys) - ks2 = Set.new(ris2.keys) - key_diffs = SetDifferences[ks1, ks2, case_matters, records_to_ignore] - out = nil - if key_diffs - out = g[key_diffs[:in_1st_not_2nd], key_diffs[:in_2nd_not_1st]] - end - # check fields - fsd = :field_set_differences - ks = ks1 & ks2 - ks.each do |k| - # ignore based on lookup that is both case sensitive and insensitive - next if records_to_ignore.include?(k) - field_ignores = record_fields_to_ignore.fetch(k, Set.new) - diffs = SetDifferences[ - ris1.fetch(k, Set.new), ris2.fetch(k, Set.new), - case_matters, field_ignores] - if diffs - if out - out[fsd] = {} unless out.include?(fsd) - out[fsd][k] = diffs - else - out = g[nil, nil] - out[fsd] = {} unless out.include?(fsd) - out[fsd][k] = diffs - end - end - end - out - end - end - # (Map * *) String * * String String -> String - # Given a map, a string for a name of what the map represents (e.g., - # Records, Data Input Fields, etc.), two keys into the map, and two strings - # to name the variations represented by the two keys, report off on the - # differences as a string. - DiffsToString = lambda do |diffs, name, k1, k2, a, b, indent=0| - if diffs.nil? - "" - else - ind = " "*indent - s = "" - s += "#{name}:\n" if !name.nil? and !diffs.nil? and (diffs[k1] or diffs[k2]) - [[k1,a,b], [k2,b,a]].each do |k, x, y| - if diffs[k] - s += "#{ind}in #{x} but not in #{y}:\n" unless diffs[k].nil? or diffs[k].empty? - diffs[k].sort.each do |r| - s += "#{ind}- #{r}\n" - end - else - s += "" - end - end - s - end - end - # (Or Nil - # (Record :records_in_1st_not_2nd (Or Nil (Set String)) - # :records_in_2nd_not_1st (Or Nil (Set String)) - # :field_set_differences - # (Or Nil - # (Map String - # (Record :in_1st_not_2nd (Or Nil (Set String)) - # :in_2nd_not_1st (Or Nil (Set String))))))) - # -> String - # Given the output of RecordInputSetDifferences, format it and retun as a string - RecordInputSetDifferencesToString = lambda do |diffs, a=nil, b=nil| - a ||= "First" - b ||= "Second" - if diffs.nil? - "No changes detected between #{a} and #{b}" - else - s = "" - if diffs[:records_in_1st_not_2nd] or diffs[:records_in_1st_not_2nd] - s += "RECORD INCONSISTENCIES:\n" - s += DiffsToString[ - diffs, - nil, - :records_in_1st_not_2nd, - :records_in_2nd_not_1st, - a, - b, - 4 - ] - end - if diffs[:field_set_differences] - ks = diffs[:field_set_differences].keys.sort - if ks and !ks.empty? - s += "DATA FIELD INCONSISTENCIES:\n" - ks.each do |k| - s += DiffsToString[ - diffs[:field_set_differences][k], - k, - :in_1st_not_2nd, - :in_2nd_not_1st, - a, - b, - 4 - ] - end - end - end - s - end - end -end diff --git a/doc/lib/cse.rb b/doc/lib/cse.rb deleted file mode 100644 index de7ecc2ac..000000000 --- a/doc/lib/cse.rb +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 1997-2016 The CSE Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license -# that can be found in the LICENSE file. -require_relative('command') - -module CSE - # Create an Alias - C = Command - - cse_path = ENV.has_key?('CSE_EXE_PATH') ? ENV['CSE_EXE_PATH'] : '..\\builds\\cse' - - # (Or (Array String) String) ?String -> String - # Given an array of strings of options to cse and an optional input to - Run = lambda do |opts, input=nil| - C::Run[cse_path, opts, input] - end - - CullList = lambda do - Run[["-c", "> #{File.join('config','reference','cullist.txt')}"]] - end - - ProbesList = lambda do - Run[["-p", "> #{File.join('config','reference','probes.txt')}"]] - end - -end diff --git a/doc/lib/def_parser.rb b/doc/lib/def_parser.rb deleted file mode 100644 index 9363f34e8..000000000 --- a/doc/lib/def_parser.rb +++ /dev/null @@ -1,309 +0,0 @@ -# Copyright (c) 1997-2018 The CSE Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license -# that can be found in the LICENSE file. -require 'tmpdir' -require 'tempfile' -require 'yaml' -require 'set' -require 'irb' - -require_relative 'command' - -module DefParser - # This is the starting state for the parser - THIS_DIR = File.expand_path(File.dirname(__FILE__)) - IsWindows = !((ENV['OS'] =~ /win/i).nil?) - LoadFromReference = lambda do |fname| - ref_dir = File.expand_path(File.join(THIS_DIR, '..', 'config', 'reference'), THIS_DIR) - path = File.join(ref_dir, fname) - File.read(path) - end - LoadProbes = lambda {LoadFromReference["probes.txt"]} - LoadFromSrc = lambda do |fname| - src_dir = File.expand_path(File.join(THIS_DIR, '..', '..', 'src'), THIS_DIR) - path = File.join(src_dir, fname) - File.read(path) - end - LoadCnRecsOrig = lambda {LoadFromSrc['CNRECS.DEF']} - LoadCnFieldsOrig = lambda {LoadFromSrc['CNFIELDS.DEF']} - LoadCndTypesOrig = lambda {LoadFromSrc['CNDTYPES.DEF']} - # String -> String - # Load via the C Pre-processor - LoadViaCpp = lambda do |fname, with_comments=false| - output = nil - Tempfile.open('temp_file') do |f| - # Call the c preprocessor - src_dir = File.expand_path(File.join(THIS_DIR, '..', '..', 'src'), THIS_DIR) - path = File.join(src_dir, fname) - tgt_path = f.path - if IsWindows - opts = [] - opts << "/I\"#{src_dir}\"" - opts << "/C" if with_comments - opts << "/EP" - opts << "/TP" - opts << "\"#{path}\"" - output = Command::Run["cl", opts, nil, false] - else - `cpp -I#{src_dir} -xc++ #{path} #{tgt_path}` - output = File.read(f.path) - end - end - output - end - LoadCnRecs = lambda {LoadViaCpp['CNRECS.DEF']} - LoadCnRecsWithComments = lambda{LoadViaCpp['CNRECS.DEF', true]} - LoadCndTypes = lambda {LoadViaCpp['CNDTYPES.DEF']} - MkRecord = lambda do |id, name, fields| - { - :id => id, - :name => name, - :fields => fields - } - end - ReplaceMultiLineCommentsKeepSpace = lambda do |txt| - txt.gsub(/\/\*[^*]*\*\//m) {|m| m.gsub(/[^\n]/, ' ')} - end - # Parser for CNFIELDS.DEF - ParseUnits = lambda do |input| - data = {} - ReplaceMultiLineCommentsKeepSpace[input].lines.map(&:chomp).each do |line| - next if line =~/^\s*$/ - next if line =~ /^\s*\/\/.*$/ - toks = line.split(/\s+/) - comment_match = line.match(/^.*?\/\/(.*)$/) - data[toks[0]] = { - :typename => toks[0], - :datatype => toks[1], - :limits => toks[2], - :units => toks[3], - } - if comment_match - data[toks[0]][:description] = comment_match[1].strip - end - end - data - end - ParseCnFields = lambda {ParseUnits[LoadCnFieldsOrig[]]} - ParseTypes = lambda do |input| - - end - ParseCnTypes = lambda {ParseTypes[LoadCndTypes[]]} - ParseCseDashP = lambda do |input| - records = {} - fields = [] - name = nil - input.lines.map(&:chomp).each do |line| - if line.start_with?("@") - re = Regexp.new( - /^@(?[a-zA-Z_0-9]+)/.source + - /(?\[1\.\.\])?\./.source + - /(?\s+I)?/.source + - /(?\s+R)?/.source + - /(?\s+owner:\s+[a-zA-Z_0-9]+)?.*$/.source - ) - m = line.match(re) - if m - # add fields from last record - records[name][:fields] = fields if name - fields = [] - name = m["name"] - records[name] = {} - records[name][:input] = ! m["input"].nil? - records[name][:runtime] = ! m["runtime"].nil? - if m["owner"].nil? - records[name][:owner] = "--" - else - records[name][:owner] = m["owner"].strip.split(/\s+/)[1] - end - records[name][:array] = ! m["array"].nil? - end - elsif line =~ /^\s*$/ or name.nil? - next - else - field = { - :name => line[0..20].strip, - :input => line[21..24].strip == "I", - :runtime => line[25..28].strip == "R", - :type => line[29..49].strip, - :variability => line[50..-1].strip - } - fields << field - end - end - # add fields that may not have been added - records[name][:fields] = fields unless records[name].include?(:fields) - records - end - ParseProbesTxt = lambda {ParseCseDashP[LoadProbes[]]} - VERBOSE = false - CleanStr = lambda do |s| - s.encode('UTF-8', - :invalid => :replace, - :undef => :replace, - :replace => '') - end - # String (Array String) Int -> (Tuple (Or Nil String) Int) - # Given a line, an array of reference lines, and an integer for current - # position in reference lines, return a tuple of the comment description for - # the given line and the new position, or nil and the current position if - # nothing is found. - FindDescription = lambda do |line, ref_lines, current_ref_idx| - stripped_line = line.strip - next_ref_idx = current_ref_idx - ref_line = nil - ref_lines.each_with_index do |rl, ref_idx| - next if ref_idx < current_ref_idx - rl_ = rl.gsub(/\t/, ' ').gsub(/\/\//, ' ').gsub(/\/\*/, ' ') + " " - if rl_.include?(stripped_line + " ") - next_ref_idx = ref_idx - ref_line = rl - break - end - end - if ref_line - puts("matching:\n\t#{line.strip[0..40]}\n with\n\t#{ref_line.strip[0..40]}\n") if VERBOSE - m = ref_line.match(/^.*?\/\/(.*)$/) - if m - # match // ... lines - description = CleanStr[m[1].strip] - puts("found field!: #{description[0..40]}") if VERBOSE - [description, next_ref_idx] - else - # match /* ... lines - n = ref_line.match(/^.*?\/\*(.*)$/) - if n - description = CleanStr[n[1].strip.gsub(/\*\//, '')] - puts("found field!: #{description[0..40]}") if VERBOSE - [description, next_ref_idx] - else - [nil, current_ref_idx] - end - end - else - [nil, current_ref_idx] - end - end - Parse = lambda do |input, reference=nil| - in_record = false - record_id = nil - record_name = nil - record_fields = [] - output = {} - variability = Set.new([ - "e" ,# field varies at end of interval. - "p" ,# with above, field varies at post-calc stage, not start (intermediate results) - "f" ,# value available after input, before setup; before re-setup after autosize. - "r" ,# runly (start of run) variability, including things set by input check/setup - "y" ,# runly (end of run) variability, including things set by input check/setup - "s" ,# subhour - "h" ,# hour - "mh",# month-hour - "d" ,# day - "m" ,# month - "z" ,# constant - "i" ,# after input, before checking/setup - ]) - ref_lines = reference.lines.map(&:chomp) if reference - current_ref_idx = 0 - input.lines.map(&:chomp).each_with_index do |line, idx| - if line =~ /^\s*RECORD/ - m = line.match(/^\s*RECORD\s+([a-zA-Z_0-9-]*)\s*\"([^"]*)\"\s+\*(RAT|STRUCT|SUBSTRUCT).*$/) - if m and (m[3] == "RAT") - in_record = true - record_id = m[1] - record_name = m[2] - elsif m and (m[1] == "ZNRES_IVL_SUB") - # TODO: fix this special-casing to more generally handle parsing and - # association of substructs with their parent RAT objects. - in_record = true - record_id = "ZNRES" - record_name = "znRes" - end - elsif line =~ /^\s*\*declare.*$/ - next - elsif line =~ /^\s*$/ - next - elsif ((line =~ /^\s*\*.*$/) or (line.split(/\s+/).length >= 2 and in_record)) and !(line =~ /^\s*\*END.*$/) - # take the last two items - spec, name = line.split(/\s+/)[-2..-1] - next if spec.nil? || name.nil? || spec.include?('*') || name.include?('*') - field = { - :spec => spec, - :name => name.gsub(/;/,'') - } - if reference - description, current_ref_idx = FindDescription[ - line, ref_lines, current_ref_idx] - field[:description] = description if description - end - toks = line.gsub(/#{spec}\s+#{name}\s*$/, '') - .strip - .split(/\*/) - .map(&:strip) - .reject(&:empty?).map {|x| x.split(/\s+/)} - hide = false - toks.each do |tok| - t = tok[0].downcase - if t == "hide" - hide = true - elsif variability.include?(t) - if field.include?(:variability) - field[:variability] += [t] - else - field[:variability] = [t] - end - elsif t == "array" - field[:array] = true - begin - field[:size] = tok[1].to_i - rescue => e - puts("!!! Attempt to read array size as an integer on line #{idx} failed;\n#{e.message}") - puts("!!! tok=#{tok.inspect}") - puts("!!! Storing and moving on...") - field[:size] = tok[1] - end - elsif t == "noname" - hide = true - elsif t == "nest" - hide = true - else - puts("!!! Ignoring #{t}; tok: #{tok}\n!!! line[#{idx}]: #{line}") - end - end - record_fields << field unless hide - elsif (line =~ /^\s*[a-zA-Z_0-9]+\s+[a-zA-Z_0-9]+\s*$/) and in_record - # we have a two token field - spec, name = line.strip.split(/\s+/) - field = { - :spec => spec, - :name => name, - :variability => ["constant"] - } - next if spec.nil? or name.nil? or spec.include?('*') or name.include?('*') - record_fields << field - elsif (line =~ /^\s*\*END/) and in_record - in_record = false - output_key = record_id.downcase - if output.include?(output_key) - if output_key != "znres" # See exception above. - puts("Warning! Duplicate id found: #{record_id}--line[#{idx}]") - end - output[output_key] = MkRecord[ - record_id, record_name, - output[output_key][:fields] + record_fields] - else - output[output_key] = MkRecord[record_id, record_name, record_fields] - end - record_id = nil - record_name = nil - record_fields = [] - end - end - output - end - ParseCnRecs = lambda {Parse[LoadCnRecs[], LoadCnRecsWithComments[]]} - # String -> Nil - # Given the path to an output file, write the output file in YAML format. - ParseCnRecsToYaml = lambda {|p| File.write(p, ParseCnRecs[].to_yaml)} -end diff --git a/doc/lib/lineproc.rb b/doc/lib/lineproc.rb deleted file mode 100644 index a10c371ef..000000000 --- a/doc/lib/lineproc.rb +++ /dev/null @@ -1,29 +0,0 @@ - -module LineProc - # String Init Reducer -> Init - ReduceLines = lambda do |str, init, reducer| - val = init - str.split("\n").each {|line| - val = reducer.call(val, line) - } - val - end - - # (Vec String) Init Reducer (Array (Tuple Regex String)) -> Init - ReduceOverFiles = lambda do |files, init, reducer, gsubs=nil| - val = init - files.each do |f| - val = val.merge(Hash[:file_url,f]) - open(f, 'r') do |fin| - str = fin.read() - if gsubs - gsubs.each do |regex, sub| - str = str.gsub(regex, sub) - end - end - val = ReduceLines[str, val, reducer] - end - end - val - end -end diff --git a/doc/lib/md.rb b/doc/lib/md.rb deleted file mode 100644 index db73f1def..000000000 --- a/doc/lib/md.rb +++ /dev/null @@ -1,26 +0,0 @@ -require_relative 'slug' - -module MD - # String -> Bool - # Returns true if the line is an ATX style header - SelectHeader = lambda {|s| s =~ /^#+[[:space:]]+.*$/ } - - # String -> String - # Retreive the header string from an ATX style header - NameFromHeader = lambda do |line| - name_match = line.match(/^#+[[:space:]]+((?:(?![[:space:]]+\{[#\.]).)*)/) - if name_match.nil? then "" else name_match[1].strip end - end - - # String -> String - NameAndSlug = lambda do |line| - name = NameFromHeader[line] - custom_slug_match = line.match(/\{#([^\}]*)\}\s*$/) - if custom_slug_match.nil? - slug = Slug::Slugify[name] - else - slug = custom_slug_match[1] - end - [name, slug] - end -end diff --git a/doc/lib/pandoc.rb b/doc/lib/pandoc.rb deleted file mode 100644 index 1c463cc80..000000000 --- a/doc/lib/pandoc.rb +++ /dev/null @@ -1,358 +0,0 @@ -# Copyright (c) 1997-2016 The CSE Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license -# that can be found in the LICENSE file. -require_relative('command') - -module Pandoc - # Create an Alias - C = Command - - STD_MD_OPTS = [ - '-t markdown', - '--atx-headers', - '--normalize', - '--wrap=none', - '+RTS', '-K128m', '-RTS' - ] - - # (Or (Array String) String) ?String -> String - # Given an array of strings of options to pandoc and an optional input to - # feed into Pandoc, return Pandoc's output, erroring if Pandoc errors - Run = lambda do |opts, input=nil| - C::Run['pandoc', opts, input] - end - - # MdToJson : MarkdownString -> JsonString - # Transform a MarkdownString into a JsonString. - # Note: to get Ruby data structures, run the output string through JSON.parse - MdToJson = lambda do |md_str| - Run[["-t json", "-f markdown"], md_str] - end - - # GetDocMeta :: DocIR -> RubyJson - # Given a Pandoc DocIR document, extract the meta-data portion and return it. - GetDocMeta = lambda do |doc_ir| - doc_ir[0] - end - - # GetDocContent :: DocIR -> DocSnippet - # Given a DocIR, extract the content portion - GetDocContent = lambda do |doc_ir| - doc_ir[1] - end - - # GetItemTag :: DocItem -> String - # Given a top item as from the items in the content portion of a - # PandocRubyJson document, return the tag (a string) - GetItemTag = lambda do |doc_item| - doc_item.fetch("t") - end - - # GetHeaderLevel :: HeaderItem -> Int - # Given a RubyJson representation of a header as from a PandocRubyJson - # document, return the heading level - GetHeaderLevel = lambda do |h| - h["c"][0].to_i - end - - # SplitJsonByHeadingLevel :: DocIR (Array Int) -> (Array DocIR) - # This method takes (1) DocIR document and (2) an array of heading levels to - # split the document at and returns an array of DocIR documents split at the - # given heading levels. Note: the original document's meta-data is inserted - # verbatim into each subdocument as it's meta-data. - SplitJsonByHeadingLevel = lambda do |doc_ir, heading_levels| - docs = [] - meta = GetDocMeta[doc_ir] - current_doc = [] - GetDocContent[doc_ir].each do |top_item| - tag = GetItemTag[top_item] - if tag == "Header" and heading_levels.include?(GetHeaderLevel[top_item]) - docs << [meta.clone, current_doc] unless current_doc == [] - current_doc = [] - current_doc << top_item - else - current_doc << top_item - end - end - docs << [meta.clone, current_doc] unless current_doc == [] - end - - # ObjsOfTag :: DocIR String -> (Array DocItem) - # Given a DocIR Document and the Tag (a string) to search for, return all - # occurrences of the given tag in an array. Note: only searches the top - # level. - ObjsOfTag = lambda do |doc_ir, tag| - items = [] - GetDocContent[doc_ir].each do |item| - items << item if GetItemTag[item] == tag - end - items - end - - # FirstObjOfTag :: DocIR String -> (Or DocItem nil) - # Given a DocIR Document and a Tag (a string) to search for, return the - # first occurrence of the given tag, a DocItem - # Note: only searches the top level. - FirstObjOfTag = lambda do |doc_ir, tag| - GetDocContent[doc_ir].each do |item| - return item if GetItemTag[item] == tag - end - nil - end - - # MakeEmptyDocMeta :: () -> { unMeta :: EmptyMap } - # Creates an empty document metadata object. Since Ruby doesn't have proper - # immutable objects, it's safer just to make a new one each time with a - # call to this function. - MakeEmptyDocMeta = lambda do - {"unMeta"=>{}} - end - - # MakeDocIr :: (Or DocItem DocSnippet) ?DocMeta -> DocIR - # Given a block DocItem or DocSnippet, create a proper DocIR given an - # optional DocMeta. If no DocMeta is provided, a blank DocMeta will be used - MakeDocIr = lambda do |snippet, meta=nil| - meta = MakeEmptyDocMeta[] if meta.nil? - content = if snippet.class == {}.class - [snippet] - elsif snippet.class == [].class - snippet - else - raise ArgumentError, "unhandled object: #{snippet}" - end - [meta, content] - end - - # DocSnippetToMd :: (Or Nil DocItem DocSnippet) -> MarkdownString - # Given a part of a document (that must be a block element or array of - # block elements), wrap it in such a way that we can create a Markdown - # string from it and return that string. If snippet is nil, returns "" - DocSnippetToMd = lambda do |snippet| - return "" if snippet.nil? - doc = MakeDocIr[snippet] - json_str = JSON.generate(doc) - Run[['-f json'] + STD_MD_OPTS, json_str] - end - - # MakeAttr :: String ?(Array String) ?(Array (Tuple String String)) -> AttrItem - # Creates a new attribute with the given ID (a string), the given classes - # (optional), and the given Array of Key/Value pairs (both strings). Returns - # the AttrItem - MakeAttr = lambda do |id, classes=nil, key_val_pairs=nil| - classes = [] if classes.nil? - key_val_pairs = [] if key_val_pairs.nil? - [id, classes, key_val_pairs] - end - - # StrItem :: String -> StrItem - # Creates a new string item. The String passed in should NOT contain - # any spaces or special markup. It should essentially be just one - # word or token. Returns the new StrItem for the given text. - StrItem = lambda do |text| - {"t"=>"Str", - "c"=>text} - end - - # SpaceItem :: () -> SpaceItem - # Creates and returns a new SpaceItem - SpaceItem = lambda do - {"t"=>"Space", - "c"=>[]} - end - - # StrToDocItems :: String -> (Array DocItem) - # Turns a string into an array of Str and Space DocInline items - StrToDocItems = lambda do |s| - items = [] - toks = s.split(/ /) - num_toks = toks.length - cnt = 0 - toks.each do |tok| - items << StrItem[tok] - cnt += 1 - items << SpaceItem[] unless cnt == num_toks - end - items - end - - # MakeHeaderItem :: Int (Array DocInline) ?Attr -> HeaderItem - # Create a header item given the header level, the header content - # as an Array of DocInline, and an optional Attr object. Returns - # the HeaderItem specified. - MakeHeaderItem = lambda do |level, inlines, attr=nil| - {"t"=>"Header", - "c"=>[level, - if attr.nil? then MakeAttr[SecureRandom.uuid] else attr end, - inlines]} - end - - # MakePara :: (Array DocInline) -> DocPara - # Create a paragraph from an array of inlines - MakePara = lambda do |inlines| - {"t"=>"Para", - "c"=>inlines} - end - - # HeaderText :: DocHeader -> (Array DocInline) - # Given a DocHeader, extract and return an array of DocInline items - HeaderText = lambda do |h| - h["c"][2] - end - - # Tree (Fn Tag Content State -> Result) State -> Tree - # Walk a tree, applying an action to every object and keeping a state. - # Returns the modified tree. - Walk = lambda do |x, f, state| - if x.class == [].class - array = [] - x.each do |item| - if (item.class == {}.class && item.include?('t')) - res = f.call(item['t'], item['c'], state) - if res.nil? - array << Walk.call(item, f, state) - elsif res.class == [].class - res.each {|z| array << Walk.call(z, f, state)} - else - array << Walk.call(res, f, state) - end - else - array << Walk.call(item, f, state) - end - end - state[:out] = array unless state.include? :out - array - elsif x.class == {}.class - obj = {} - x.keys.each do |k| - obj[k] = Walk.call(x[k], f, state) - end - obj - else - x - end - end - - # DocIR -> Int - # Given a DocIR document, return the minimum heading - # level found within that document. If no headers exist, returns nil - MinHeadingLevel = lambda do |doc| - f = lambda do |tag, content, state| - if tag == "Header" - header_level = content[0] - if state[:min_header_level].nil? or (header_level < state[:min_header_level]) - state[:min_header_level] = header_level - end - end - nil - end - state = {min_header_level: nil} - Walk.call(doc, f, state) - state.fetch(:min_header_level) - end - - # (Or DocItem DocInline DocSnippet DocIR) Int -> - # (Or DocItem DocInline DocSnippet DocIR) - # Return a document with heading level adjusted by the given amount for - # every heading level encountered - AdjustHeading = lambda do |doc, adjustment| - return doc if adjustment == 0 - f = lambda do |tag, content, state| - if tag == "Header" - header_level = content[0] - new_header_level = header_level + adjustment - new_content = [new_header_level] + content[1..-1] - {"t" => "Header", "c" => new_content} - else - nil - end - end - Walk.call(doc, f, {}) - end - - # DocIR -> DocIR - # - # Make it so the lowest heading number in a markdown file is 1 by moving - # each heading's level by 1 - (min headingLevels) - NormalizeHeadings = lambda do |doc| - min_heading = MinHeadingLevel[doc] - desired_min_heading = 1 - heading_adjust = desired_min_heading - min_heading - AdjustHeading[doc, heading_adjust] - end - - # MarkdownString (Array Int) Bool -> - # (Record slug: String, level: Int, doc: RubyJSON) - # - # Given a string of markdown, split it by the heading levels given in the - # heading_levels array, and name the new split files according to the top - # level heading in each file. Returns a map (record) with symbol keys: slug, - # level, and doc where slug is the slugified name of the first heading (title - # if missing), level is the heading level of the split document, and doc is - # the actual document as RubyJSON datastructures - # - # Note: normalizes heading levels if normalize_headings set to true - SplitMdByHeadingLevels = lambda do |md_str, heading_levels, normalize_headings=true| - verbose = false - doc_ir = JSON.parse(MdToJson[md_str]) - docs = SplitJsonByHeadingLevel.call(doc_ir, heading_levels) - slug_set = Set.new - docs.map do |x| - h = FirstObjOfTag.call(x, "Header") - if h.nil? - txt = "title" - else - txt = DocSnippetToMd.call(MakePara.call(HeaderText.call(h))) - .gsub(/<[^>]*>/, ' ').gsub(/[^a-zA-Z0-9]/, ' ').strip - end - slug = Slug::CreateUnique.call(Slug::SlugifyName.call(txt), slug_set) - slug_set << slug - xx = if normalize_headings then NormalizeHeadings.call(x) else x end - new_doc = JsonToMd.call(xx) - level = if h.nil? then 1 else GetHeaderLevel.call(h) end - puts "#{slug} (#{level})" if verbose - puts "... original header: #{txt}" if verbose - puts "... doc: #{new_doc[0..80].inspect}" if verbose - {slug: slug, level: level, doc: new_doc} - end - end - - # DocIR -> MarkdownString - # Use Pandoc to convert a DocIR to MarkdownString. Converts the DocIR to - # a JsonString and feeds that into Pandoc using the standard pandoc options - # defined in STD_MD_OPTS - JsonToMd = lambda do |doc_ir| - json_str = JSON.generate(doc_ir) - begin - Pandoc::Run.call(['-f json'] + STD_MD_OPTS, json_str) - rescue - puts "Error running JsonToMd over:\n#{json_str[0..1200]}" - raise - end - end - - # ContentObject ?String -> String - # Given the content field of a JSON representation of a document, tunnel - # through until all content has been reduced to a string. - FlattenToString = lambda do |content, s=nil| - s ||= "" - if content.class == [].class - content.inject(s) do |new_s, c| - FlattenToString[c, new_s] - end - elsif content.class == {}.class - if content["t"] == "Space" - s + " " - elsif content["t"] == "Str" - s + content["c"] - elsif content["t"] == "SoftBreak" - s + " " - else - FlattenToString[content["c"], s] - end - elsif content.class == "".class - s += "" - else - s - end - end -end diff --git a/doc/lib/probes.rb b/doc/lib/probes.rb deleted file mode 100644 index d276e47c7..000000000 --- a/doc/lib/probes.rb +++ /dev/null @@ -1,130 +0,0 @@ -require 'yaml' -require 'fileutils' -require_relative 'tables' -require_relative 'utils' - -module Probes - class BuildProbesAndCopyIntoManifest - def initialize(config=nil) - @disable = config.fetch('disable?', false) - if !@disable - @probes_dir = config.fetch('probes-build-dir') - @out_dir = config.fetch('output-dir') - @insert_after = config.fetch('insert-after-file') - Utils::EnsureAllExist[[@probes_dir, @out_dir]] - @probes_input = config.fetch('path-to-probes-input') - @probes = YAML.load_file(@probes_input) - @probes_in_one_file = config.fetch('probes-in-one-file?', false) - probes_main = File.join(@probes_dir, 'probes.md') - if @probes_in_one_file - @probes_paths = [[nil, probes_main]] - write_probes_to_one_file(@probes_paths[0][1]) - else - @probes_paths = [[nil, probes_main]] - @probes.keys.sort_by {|k| k.downcase}.each do |k| - k_dc = k.downcase - @probes_paths << [k, File.join(@probes_dir, "probe_#{k_dc}.md")] - end - write_probes_to_files(@probes_paths) - end - end - end - # INPUTS: - # k: String, the probe key into @probes - # f: open file handle, note: this method does NOT open/close - # RETURNS: nil - # SIDE-EFFECT: Writes a probe table to the given file handle - # Note: if @probes[k][:fields] is empty, returns without writing file - def write_probe_table(k, f) - table = [["Name", "Input?", "Runtime?", "Type", "Variability", "Description"]] - flds = @probes[k][:fields] - return if flds.empty? - name = k - array_txt = if @probes[k][:array] then "[1..]" else "" end - title = "#{name}" - full_title = "\\@#{name}#{array_txt}." - owner = @probes[k][:owner] - owner_txt = if owner == "--" then "" else " (owner: #{owner})" end - tag = "\{#p_#{k.downcase}\}" - f.write("## #{title}#{owner_txt} #{tag}\n\n") - f.write("#{full_title}\n\n") - if @probes[k].include?(:description) - f.write(@probes[k][:description] + "\n\n") - end - flds.each do |fld| - table << [ - fld[:name], - if fld[:input] then "X" else "--" end, - if fld[:runtime] then "X" else "--" end, - fld[:type], - fld[:variability], - fld.fetch(:description, "--").gsub(/\\/, "") - ] - end - f.write(Tables::WriteTable[ table, true ]) - f.write("\n\n\n") - end - # INPUTS: - # - path: String, path to write probe tables to - # RETURNS: nil - # SIDE-EFFECT: Writes probe data to the given file-system location - def write_probes_to_one_file(path) - File.open(path, 'w') do |f| - f.write("# Probe Definitions\n\n") - @probes.keys.sort_by {|k| k.downcase}.each do |k| - write_probe_table(k, f) - end - end - end - # INPUTS: - # - keys_and_paths:: (Array (Tuple String String)), an array of 2-element - # arrays with first element the key into @probes and the second element the - # path corresponding to where that probe's info should be written - # RETURN: nil - # SIDE-EFFECT: Writes probe files to each table - def write_probes_to_files(keys_and_paths) - keys_and_paths.each do |k_p| - k, p = k_p - File.open(p, 'w') do |f| - if k.nil? - f.write("# Probe Definitions\n\n") - else - write_probe_table(k, f) - end - end - end - end - # INPUTS: - # - manifest: (Array String), an array of paths - # RETURNS: (Array String), the (possibly modified) manifest - def call(manifest) - if @disable - manifest - else - new_manifest = [] - manifest.each do |path| - bn = File.basename(path) - out_path = File.join(@out_dir, bn) - new_manifest << out_path - Utils::CopyIfStale[path, out_path] - if bn == @insert_after - @probes_paths.each do |k_p| - p = k_p[1] - probes_out_path = File.join(@out_dir, File.basename(p)) - new_manifest << probes_out_path - Utils::CopyIfStale[p, probes_out_path] - end - end - end - new_manifest - end - end - # INPUTS: - # - manifest: (Array String), an array of paths - # RETURNS: (Array String), the (possibly modified) manifest - # Note: alias for call(manifest) - def [](manifest) - call(manifest) - end - end -end diff --git a/doc/lib/section_index.rb b/doc/lib/section_index.rb deleted file mode 100644 index 66ca2d813..000000000 --- a/doc/lib/section_index.rb +++ /dev/null @@ -1,39 +0,0 @@ -require 'yaml' - -require_relative 'md' -require_relative 'slug' - -module SectionIndex - # (Array FilePath) -> (Map Tag File) - Generate = lambda do |manifest| - idx = {} - n_ = 0 - m_ = 0 - manifest.each do |path| - n_ += 1 - bn = File.basename(path, '.md') + ".html" - content = File.read(path) - content.lines.map(&:chomp).each do |line| - if line =~ /^#+\s+(.*)$/ - m_ += 1 - _, slug = MD::NameAndSlug[line] - final_slug = "#" + slug - idx[final_slug] = bn unless idx.include?(final_slug) - end - end - end - #puts("Processed #{n_} files, #{m_} sections") - idx - end -end - -if false - THIS_DIR = File.expand_path(File.dirname(__FILE__)) - File.write( - "section-index.yaml", - SectionIndex::Generate[ - Dir[File.expand_path("../src/*.md", THIS_DIR)] + - Dir[File.expand_path("../src/records/*.md", THIS_DIR)] - ].to_yaml - ) -end diff --git a/doc/lib/slug.rb b/doc/lib/slug.rb deleted file mode 100644 index 039bdf0d2..000000000 --- a/doc/lib/slug.rb +++ /dev/null @@ -1,17 +0,0 @@ -module Slug - Slugify = lambda do |s| - val = s.strip.downcase - .gsub(/^[\d\.\s]*/, '') - .gsub(/[:)(\/\[\]]/, '') - .gsub(/---/, '') - .gsub(/--/, '') - .gsub(/[^\.\w-]+/, '-') - .gsub(/^-+/, '') - .gsub(/-+$/, '') - if val == '' - 'section' - else - val - end - end -end diff --git a/doc/lib/split_md.rb b/doc/lib/split_md.rb deleted file mode 100644 index b416cf03f..000000000 --- a/doc/lib/split_md.rb +++ /dev/null @@ -1,46 +0,0 @@ -# This is a utility script used to split the monolithic CSE User Manual into -# smaller files. -require_relative 'pandoc' -require_relative 'slug' -require 'json' - -THIS_DIR = File.expand_path(File.dirname(__FILE__)) - -def split_file_by(fname, levels=nil) - levels ||= [1] - src = File.expand_path( - File.join('..', 'src', fname), - THIS_DIR - ) - md = File.read(src, :encoding=>"UTF-8") - json = Pandoc::MdToJson[md] - doc = JSON.parse(json) - sections = Pandoc::SplitJsonByHeadingLevel[doc, levels] - sections.each do |section| - normalized_section = Pandoc::NormalizeHeadings[section] - snippet = Pandoc::DocSnippetToMd[ - Pandoc::FirstObjOfTag[normalized_section, "Header"] - ] - name = Slug::Slugify[snippet.match(/^#+\s+(.*)$/)[1]] - path = File.expand_path(File.join('..', 'src', "#{name}.md"), THIS_DIR) - if File.exist?(path) - puts("Warning! #{path} would be overwritten! Skipping...") - else - File.write(path, Pandoc::JsonToMd[normalized_section]) - end - end -end - -# This file can be used as a script to split markdown files. However, this -# scripting functionality is not enabled by default. -if false - puts("Ready...") - split_file_by('cse-user-manual.md', [1]) - split_file_by('input-data.md', [1, 2]) - split_file_by('top-members.md', [1, 2]) - split_file_by('construction.md', [1, 2]) - split_file_by('zone.md', [1, 2]) - split_file_by('heatplant.md', [1, 2]) - split_file_by('coolplant.md', [1, 2]) - puts("Done!") -end diff --git a/doc/lib/table.rb b/doc/lib/table.rb deleted file mode 100644 index d85525554..000000000 --- a/doc/lib/table.rb +++ /dev/null @@ -1,318 +0,0 @@ -# Problem we're trying to solve: -# - Markdown ascii tables are hard to write and maintain -# - Existing tables do not (always) generate correctly in PDF -require 'erb' -require 'set' -require 'csv' - -module Table - ROOT_DIR = File.expand_path(File.join(File.dirname(__FILE__), '..', '..')) - CheckKeys = lambda do |expected_keys, args| - unexpected_keys = Set.new(args.keys) - expected_keys - if not unexpected_keys.empty? - raise "Unexpected keys: #{unexpected_keys.to_a}" - end - end - # String -> (Map String String) -> Binding - MakeBinding = lambda do |base_path=nil| - lambda do |ctxt| - Main.new(:context => ctxt, :base_path => base_path).get_binding - end - end - # The Main class's responsibility is to serve as the binding context for - # an ERB template rendering. As such, it must expose the methods that - # correspond to the table language and, additionally, it must be able - # to define methods corresponding to /doc/config.yaml context variables. To - # allow for the possibility of different "back end" targets, there are stubs - # for HTML, LaTeX, and Markdown backends. For now, we just transform our - # table language to Markdown and let the markdown toolchain transform to HTML - # and/or LaTeX. - class Main - def initialize(args=nil) - @_verbose = false - args = args || {} - expected_keys = Set.new( - [:writer, :base_path, :allow_shadowing, :context]) - CheckKeys.(expected_keys, args) - @writer = args.fetch(:writer, MdWriter.new) - @base_path = args.fetch(:base_path, nil) - # if true, context can overwrite some or all method names - @allow_shadowing = args.fetch(:allow_shadowing, true) - local_methods = methods - args.fetch(:context, {}).each do |k, v| - sym = k.to_sym - if local_methods.include?(sym) - msg = "Key \"#{k}\" will be shadowed by a local method" - if @allow_shadowing - puts "WARNING! #{msg}" if @_verbose - else - raise ArgumentError, msg - end - end - define_singleton_method(sym) { v } - end - end - def get_binding - binding - end - def csv_table(csv_str, opts=nil) - opts = opts || {} - expected_keys = Set.new([:row_header, :col_header]) - CheckKeys.(expected_keys, opts) - cells = CSV.new(csv_str).read - @writer.array_of_array_to_table(cells, opts) - end - def csv_table_from_file(csv_path, opts=nil) - path = if @base_path then File.join(@base_path, csv_path) else csv_path end - csv_str = File.read(path) - csv_table(csv_str, opts) - end - def member_table(args) - expected_keys = Set.new([:units,:legal_range,:default,:required,:variability]) - CheckKeys.(expected_keys, args) - @writer.member_table(args) - end - def insert_file(file_path) - full_path = File.join(ROOT_DIR, file_path) - if File.exist?(full_path) - File.read(full_path) - else - msg = ("Path '#{file_path}' doesn't exist. " + "resolved full-path: '#{full_path}'") - raise IOError.new(msg) - end - end - end - - class HtmlWriter - def array_of_array_to_table(cells, opts=nil) - opts = opts || {} - row_header = opts.fetch(:row_header, true) - col_header = opts.fetch(:col_header, false) - table_str = "\n" - cells.each_with_index do |line, row_idx| - if row_header and row_idx == 0 - table_str += "\n" - elsif row_header and row_idx == 1 - table_str += "\n" - end - attr_str = if row_header and row_idx == 0 then ' class="header"' else '' end - table_str += "\n" - line.each_with_index do |col, col_idx| - if row_header and row_idx == 0 - table_str += "\n" - elsif col_header and col_idx == 0 - table_str += "\n" - else - table_str += "\n" - end - end - table_str += "\n" - if row_header and row_idx == 0 - table_str += "\n" - end - end - if row_header - table_str += "\n" - end - table_str += "
\n#{col}\n\n\n#{col}\n\n#{col}\n
\n" - table_str - end - def member_table(args) - nil_mark = "—" - units= args.fetch(:units, nil_mark) - legal_range = args.fetch(:legal_range, nil_mark) - default = args.fetch(:default, nil_mark) - required= args.fetch(:required, "No") - variability=args.fetch(:variability, "constant") - "\n" + - "\n" + - "\n" + - ["Units","Legal Range","Default","Required","Variability"].map do |c| - "\n" - end.join("") + - "\n" + - "\n" + - "\n" + - "\n" + - [units, legal_range, default, required, variability].map do |c| - "\n" - end.join("") + - "\n" + - "\n" + - "
\n#{c}\n\n
#{c}\n
\n" - end - end - - class LatexWriter - def array_of_array_to_table - end - def member_table - end - end - - class MdWriter - def initialize(args=nil) - args = args || {} - @intercol_space = args.fetch(:intercol_space, 1) - @max_width = args.fetch(:max_width, 70) - end - def min_column_widths(table) - min_widths = [2] * table[0].length - table.each do |row| - row.each_with_index do |cols, idx| - words = cols.split - longest_word = words.map {|w| w.length}.max - longest_word = 0 if longest_word.nil? - min_widths[idx] = [longest_word, min_widths.fetch(idx, 2)].max - end - end - min_widths - end - def max_column_widths(table) - max_widths = [0] * table[0].length - table.each do |row| - row.each_with_index do |col, idx| - if not col.match(/^-+$/) - max_widths[idx] = [col.length, max_widths.fetch(idx, 0)].max - end - end - end - max_widths - end - def col_widths(mins, maxs) - num_cols = mins.length - spacing = 2 * (num_cols - 1) - minimum_max_width = (mins.inject(0, &:+) + spacing) - the_max_width = if minimum_max_width > @max_width then minimum_max_width else @max_width end - extra_space = the_max_width - minimum_max_width - total_max = maxs.inject(0, &:+).to_f - width_fracs = maxs.map {|m| m / total_max} - extra_space_alloc = width_fracs.map {|w| (w * extra_space).to_i} - widths = mins.zip(extra_space_alloc).map {|m,e| m+e} - widths - end - def write_header(widths) - cols = [] - widths.each do |w| - cols << ('-' * w) - end - cols.join(' '*@intercol_space) - end - def write_footer(widths) - num_cols = widths.length - spacing = 2 * (num_cols - 1) - width = widths.inject(0, &:+) - '-' * (width + spacing) - end - # String Number -> (Array String) - def chunk_col(col, width) - words = col.split - first_word = true - len = 0 - chunks = [] - chunk = [] - words.each do |w| - if first_word - first_word = false - len += w.length - else - len += w.length + 1 - end - if len > width - chunks << chunk - len = w.length - chunk = [w] - else - chunk << w - end - end - chunks << chunk unless chunk.empty? - chunks.map {|c| c.join(" ")} - end - # (Array String) (Array Number) -> String - def write_row(cols, widths) - col_chunks = [] - num_lines = 0 - cols.each_with_index do |col, idx| - the_chunk = chunk_col(col, widths[idx]) - col_chunks << the_chunk - num_lines = [the_chunk.length, num_lines].max - end - lines = [""] * num_lines - num_cols = widths.length - num_lines.times do |line_idx| - #puts "line index: #{line_idx}" - col_chunks.each_with_index do |chunks, col_idx| - #puts "column index: #{col_idx}" - cm = if col_idx == (num_cols - 1) - 0 - else - 1 - end - if chunks.length > line_idx - makeup_space = [widths[col_idx] - chunks[line_idx].length, 0].max - lines[line_idx] += chunks[line_idx] + " " * makeup_space + " " * (@intercol_space * cm) - else - lines[line_idx] += " " * widths[col_idx] + " " * (@intercol_space * cm) - end - end - end - lines.join("\n") - end - def write_content(table, widths) - content = [] - table.each do |row| - content << write_row(row, widths) - end - content.join("\n\n") - end - def write_table(table) - mins = min_column_widths(table) - maxs = max_column_widths(table) - widths = col_widths(mins, maxs) - hdr = write_header(widths) - [ - hdr, - write_content(table, widths), - hdr - ].join("\n") - end - def write_border_line(widths) - "-"*(widths.inject(0,&:+) + (widths.length - 1)*@intercol_space) - end - def write_table_with_header(table) - mins = min_column_widths(table) - maxs = max_column_widths(table) - widths = col_widths(mins, maxs) - bl = write_border_line(widths) - [ - bl, - write_content([table[0]], widths), - write_header(widths), - write_content(table[1..-1], widths), - bl, - ].join("\n") - end - def array_of_array_to_table(cells, opts=nil) - opts = opts || {} - row_header = opts.fetch(:row_header, true) - if row_header - write_table_with_header(cells) - else - write_table(cells) - end - end - def member_table(args) - nil_mark = "--" - units= args.fetch(:units, nil_mark) - legal_range = args.fetch(:legal_range, nil_mark) - default = args.fetch(:default, nil_mark) - required= args.fetch(:required, "No") - variability=args.fetch(:variability, "constant") - headers = ["**Units**","**Legal** **Range**","**Default**","**Required**","**Variability**"] - content = [units, legal_range, default, required, variability] - table = [headers, content] - write_table_with_header(table) - end - end -end diff --git a/doc/lib/tables.rb b/doc/lib/tables.rb deleted file mode 100644 index 56f6537c9..000000000 --- a/doc/lib/tables.rb +++ /dev/null @@ -1,169 +0,0 @@ -# Copyright (c) 1997-2016 The CSE Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license -# that can be found in the LICENSE file. - -module Tables - INTERCOL_SPACE = 2 - PAGE_MAX_COLS = 80 - - TxtToTable = lambda do |txt| - table = [] - txt.split(/\n/).each do |row| - next if row == "" - row = row.strip - cols = row.split(/\|/) - cols.map! {|c| c.strip} - table << cols - end - table - end - - MinColumnWidths = lambda do |table| - min_widths = [2] * table[0].length - table.each do |row| - row.each_with_index do |cols, idx| - words = cols.split - longest_word = words.map {|w| w.length}.max - longest_word = 0 if longest_word.nil? - min_widths[idx] = [longest_word, min_widths.fetch(idx, 2)].max - end - end - min_widths - end - - MaxColumnWidths = lambda do |table| - max_widths = [0] * table[0].length - table.each do |row| - row.each_with_index do |col, idx| - if not col.match(/^-+$/) - max_widths[idx] = [col.length, max_widths.fetch(idx, 0)].max - end - end - end - max_widths - end - - ColWidths = lambda do |mins, maxs| - num_cols = mins.length - spacing = 2 * (num_cols - 1) - extra_space = PAGE_MAX_COLS - (mins.inject(0, &:+) + spacing) - extra_space = 0 if extra_space < 0 - total_max = maxs.inject(0, &:+).to_f - width_fracs = maxs.map {|m| m / total_max} - extra_space_alloc = width_fracs.map {|w| (w * extra_space).to_i} - widths = mins.zip(extra_space_alloc).map {|m,e| m+e} - widths - end - - WriteHeader = lambda do |widths| - cols = [] - widths.each do |w| - cols << ('-' * w) - end - cols.join(' ') - end - - WriteFooter = lambda do |widths| - num_cols = widths.length - spacing = 2 * (num_cols - 1) - width = widths.inject(0, &:+) - '-' * (width + spacing) - end - - # String Number -> (Array String) - ChunkCol = lambda do |col, width| - words = col.split - first_word = true - len = 0 - chunks = [] - chunk = [] - words.each do |w| - if first_word - first_word = false - len += w.length - else - len += w.length + 1 - end - if len > width - chunks << chunk - len = w.length - chunk = [w] - else - chunk << w - end - end - chunks << chunk unless chunk.empty? - chunks.map {|c| c.join(" ")} - end - - # (Array String) (Array Number) -> String - WriteRow = lambda do |cols, widths| - col_chunks = [] - num_lines = 0 - cols.each_with_index do |col, idx| - the_chunk = ChunkCol[col, widths[idx]] - col_chunks << the_chunk - num_lines = [the_chunk.length, num_lines].max - end - lines = [""] * num_lines - num_cols = widths.length - num_lines.times do |line_idx| - #puts "line index: #{line_idx}" - col_chunks.each_with_index do |chunks, col_idx| - #puts "column index: #{col_idx}" - cm = if col_idx == (num_cols - 1) then 0 else 1 end - if chunks.length > line_idx - makeup_space = [widths[col_idx] - chunks[line_idx].length, 0].max - lines[line_idx] += chunks[line_idx] + " " * makeup_space + " " * (INTERCOL_SPACE * cm) - else - lines[line_idx] += " " * widths[col_idx] + " " * (INTERCOL_SPACE * cm) - end - end - end - lines.join("\n") - end - - WriteContent = lambda do |table, widths| - content = [] - table.each do |row| - content << WriteRow[row, widths] - end - content.join("\n\n") - end - - WriteTable = lambda do |table, header=false| - mins = MinColumnWidths[table] - maxs = MaxColumnWidths[table] - widths = ColWidths[mins, maxs] - parts = [] - if header - parts << WriteFooter[widths] - parts << WriteContent[[table[0]], widths] - parts << WriteHeader[widths] - parts << WriteContent[table[1..-1], widths] - parts << WriteFooter[widths] - else - parts << WriteHeader[widths] - parts << WriteContent[table, widths] - parts << WriteFooter[widths] - end - parts.join("\n") - end - - Main = lambda do |txt| - table = TxtToTable[txt] - WriteTable[table] - end - - #example = < Binding - MakeBinding = lambda do |ctxt| - Namespace.new(ctxt).get_binding - end - - # String Binding -> String - # Render the given string template with Embedded Ruby (ERB) using the binding - # context passed in by the second parameter. - # See http://stackoverflow.com/a/5462069 - RenderWithErb = lambda do |template, b| - result = nil - begin - # Ruby 2.6+ - # the rescue block form is deprecated... - result = ERB.new(template,trim_mode:'>').result(b) - rescue - # Ruby prior to 2.6 - result = ERB.new(template,0,'>').result(b) - end - result - end - - # String String Int (Map String String) -> nil - # Given a source file path, an output file path (assumed to be created up to - # the parent directory), an integer for the processing file number (not - # used), and a context hash to create a binding context for template - # rendering, process the input file to the output file and save. - PreprocFile = lambda do |fn=MakeBinding| - lambda do |path, out_path, _, config| - b = fn[config.fetch("context")] - text = File.read(path) - result = RenderWithErb[text, b] - last_result = nil - max_iterations = 10 - max_iterations.times do - last_result = result - result = RenderWithErb[result, b] - break if result == last_result - end - File.write(out_path, result) - end - end -end diff --git a/doc/lib/toc.rb b/doc/lib/toc.rb deleted file mode 100644 index 1dcc29f8e..000000000 --- a/doc/lib/toc.rb +++ /dev/null @@ -1,104 +0,0 @@ -# Generate Table of Contents -require 'yaml' -require 'set' -require_relative 'md' -require_relative 'slug' -require_relative 'lineproc' - -module TOC - # TocData String -> TocData - # where TocData = (spec/keys :req [:file_url :contents]) - # (spec/def :contents (spec/cat :level :name :link)) - # (spec/def :file_url string?) - # (spec/def :level integer?) - # (spec/def :name string?) - # (spec/def :link string?) - TocReducer = lambda do |toc, line| - if MD::SelectHeader[line] - level = line.match(/^#+/).to_s.length - name, slug = MD::NameAndSlug[line] - final_slug = slug - idx = 1 - while toc[:slug_set].include?(final_slug) - final_slug = "#{slug}-#{idx}" - idx += 1 - end - toc[:slug_set] << final_slug - src_basename = File.basename(toc[:file_url]) - ext = File.extname(src_basename) - file_url = src_basename.gsub(ext, '.html') - link = file_url + "##{final_slug}" - new_contents = toc[:contents] + [[level, name, link]] - if name.strip == '' - # we have a 'blank' header... don't bother recording it - toc - else - toc.merge({:contents => new_contents}) - end - else - toc - end - end - - # Integer (Array (Tuple Integer FilePath)) -> String - # Generate the table of contents file from an integer specifying the maximum - # level of depth and an array of tuples of file level and file path. Returns - # a string of the table of contents markdown file. - GenTableOfContentsFromFiles = lambda do |max_level, files| - r = TocReducer - init = {:contents=>[], :slug_set=>Set.new} - toc = LineProc::ReduceOverFiles[ - files.map {|f| f[1]}, - init, - r, - [[//m, '']] - ] - out = "" - last_level0 = 1 - idx0 = 0 - last_fname0 = toc[:contents][0][2].gsub(/\#.*$/,'') - toc[:contents].inject([last_level0, idx0, last_fname0]) do |s, c| - last_level = s[0] - # remove {#foo} at the end of headers - name = c[1].gsub(/{[^}]*}\Z/, '').strip - url = c[2] - fname = url.gsub(/\#.*$/, '') - last_fname = s[2] - idx = if fname==last_fname then s[1] else s[1]+1 end - file_level = files[idx][0] - # level is the minimum of the actual header level or one more than - # the last level -- prevents jumps in indentation of more than one - # unit - level = [c[0] + file_level, last_level + 1].min - if level <= max_level - indent = (' ' * ((level - 1) * 4)) + '- ' - out += indent + "[#{name}](#{url})\n" - end - [level, idx, fname] - end - out - end - - # Integer FilePath FilePath -> Nil - # Generate a Table of Contents (TOC) for a Markdown Document - # - *max_level*: Integer >= 1, the maximum header depth to use in TOC - # - *manifest_path*: String, path to the manifest file in YAML - # - *toc_path*: String, path to the table of contents file to write out in markdown - GenTableOfContents = lambda do |max_level, manifest_path, toc_path| - man_dir = File.dirname(manifest_path) - data = YAML.load_file(manifest_path) - fs = data.fetch('sections', []) - puts "Warning!!! No files in manifest at #{manifest_path}" if fs.empty? - # make level 0-based to ease algorithm below; - # expand file path to full path from the manifest directory - files = fs.map {|level, path| [level - 1, File.expand_path(path, man_dir)]} - File.write(toc_path, GenTableOfContentsFromFiles[max_level, files]) - end -end - -if false - THIS_DIR = File.expand_path(File.dirname(__FILE__)) - MAN_PATH = File.expand_path(File.join('..','src','cse-user-manual.yaml'), THIS_DIR) - TOC_PATH = File.join(THIS_DIR, 'junk-toc.md') - TOC::GenTableOfContents[3, MAN_PATH, TOC_PATH] -end diff --git a/doc/lib/utils.rb b/doc/lib/utils.rb deleted file mode 100644 index 2f8545446..000000000 --- a/doc/lib/utils.rb +++ /dev/null @@ -1,21 +0,0 @@ -require 'fileutils' - -module Utils - # String -> nil - # Ensures the given path (a directory) exists - EnsureExists = lambda do |path| - FileUtils.mkdir_p(path) unless File.exist?(path) - end - - # (Array String) -> nil - # Ensures that all of the given paths exist. - EnsureAllExist = lambda do |paths| - paths.each {|p| EnsureExists[p]} - end - - CopyIfStale = lambda do |from_path, to_path| - if !FileUtils.uptodate?(to_path, [from_path]) - FileUtils.cp(from_path, to_path) - end - end -end diff --git a/doc/lib/verify_links.rb b/doc/lib/verify_links.rb deleted file mode 100644 index 345fc7654..000000000 --- a/doc/lib/verify_links.rb +++ /dev/null @@ -1,88 +0,0 @@ -require 'net/http' -# TODO: update verifylinks to check #target links in multi-page HTML. - -module VerifyLinks - # Problem: links don't always work in generated documentation due to a large - # number of reasons. We would like to be able to confirm all links are valid - # within a generated HTML document. - - # String -> Bool - # See http://stackoverflow.com/a/18582395 - UrlGood = lambda do |url_string| - begin - url = URI.parse(url_string) - req = Net::HTTP.new(url.host, url.port) - req.use_ssl = (url.scheme == 'https') - path = url.path unless url.path == "" - res = req.request_head(path || '/') - if res.kind_of?(Net::HTTPRedirection) - # Go after any redirect and make sure you can access the redirected URL - url_exist?(res['location']) - else - res.code[0] != "4" #false if http code starts with 4 - error on your side. - end - rescue Errno::ENOENT - false #false if can't find the server - end - end - - # String -> (Array String) - GatherLinks = lambda do |text| - text.scan(/href\s*=\s*["']([^"']*)["']/).flatten - end - - # (Array String) String String -> (Array String) - LinkIssues = lambda do |links, path, root, display=true| - dir = if File.directory?(path) then path else File.dirname(path) end - problems = [] - links.each do |link| - good = true - if link.start_with?("http") - # calling urls with Ruby via SSL not robust on windows... - # skipping the check below for now... - if false # !UrlGood[link] - problems << link - good = false - end - else - file_path, id = link.split(/#/) - full_path = if file_path.start_with?("/") then File.join(root, file_path) else File.join(dir, file_path) end - exist = File.exist?(full_path) - if !exist - problems << "#{link} doesn't exist" - good = false - end - if id and exist and File.file?(full_path) - txt = File.read(full_path) - if !(txt =~ /id\s*=\s*["']#{id}["']/) - problems << "\"##{id}\" not found in file #{full_path}" - good = false - end - end - end - if display - STDOUT.write(good ? '.' : 'x') - STDOUT.flush - end - end - problems - end - - # String -> (Array String) - # Given the path to an html directory, check all links in all files and - # return an array of all problems - CheckLinks = lambda do |dir| - problems = [] - num_paths = 0 - num_links = 0 - Dir[File.join(dir, '**', '*.html')].each do |path| - links = GatherLinks[File.read(path)] - problems += LinkIssues[links, path, dir].map {|lnk| "Source: #{path}; Issue: #{lnk}"} - num_paths += 1 - num_links += links.length - end - puts("\nChecked #{num_paths} files for a total of #{num_links} links") - puts("#{problems.length} link issues encountered") - problems - end -end diff --git a/doc/lib/xlink.rb b/doc/lib/xlink.rb deleted file mode 100644 index 67a0c8d0e..000000000 --- a/doc/lib/xlink.rb +++ /dev/null @@ -1,440 +0,0 @@ -require 'set' -require_relative 'pandoc' -require_relative 'slug' - -# Below method of program design adapted from "How to Design Programs, 2nd -# Edition": -# http://www.ccs.neu.edu/home/matthias/HtDP2e/part_preface.html#%28part._.Systematic_.Program_.Design%29 -# -# Problem Analysis and Data Definitions -# ------------------------------------- -# -# ### Problem Analysis -# -# The current cross-linking algorithm does not know where it is in a -# markdown-based document. As such, it will link any term that matches criteria -# to its "canonical source link". What we would like is that if a term links to -# the "parent section" of the current documentation (and optionally arbitrarily -# high up the ancestor "path"), then we DO NOT want to cross-link it, otherwise -# we do. This will prevent a new section on Foo from getting multiple links to -# the term "Foo" in the opening paragraph which is just silly and causes visual -# clutter. -# -# The current cross-linking algorithm works but is a fairly large piece of code -# that could use some refactoring. -# -# ### Data Definitions -# -# QuoteType :: (Case "SingleQuote" "DoubleQuote") -# -------------------- -# Types of Quotes -- used in Pandoc JSON -# -# Inline :: (Case -# {'t' => 'Str', 'c' => String} -# {'t' => 'Emph', 'c' => (Array Inline)} -# {'t' => 'Strong', 'c' => (Array Inline)} -# {'t' => 'Strikeout', 'c' => (Array Inline)} -# {'t' => 'Superscript', 'c' => (Array Inline)} -# {'t' => 'Subscript', 'c' => (Array Inline)} -# {'t' => 'SmallCaps', 'c' => (Array Inline)} -# {'t' => 'Quoted', 'c' => (Tuple QuoteType (Array Inline))} -# {'t' => 'Cite', 'c' => (Tuple (Array Citation) (Array Inline))} -# {'t' => 'Code', 'c' => (Tuple Attr String)} -# {'t' => 'Space', 'c' => []} -# {'t' => 'SoftBreak', 'c' => []} -# {'t' => 'LineBreak', 'c' => []} -# {'t' => 'Math', 'c' => (Tuple MathType String)} -# {'t' => 'RawInline', 'c' => (Tuple Format String)} -# {'t' => 'Link', 'c' => (Tuple Attr (Array Inline) Target)} -# {'t' => 'Image', 'c' => (Tuple Attr (Array Inline) Target)} -# {'t' => 'Note', 'c' => (Array Block)} -# {'t' => 'Span', 'c' => (Tuple Attr (Array Inline))}) -# -------------------- -# Types of Inline constructs in Pandoc JSON -# -# RecordIndex :: (Map String String) -# -------------------- -# -# A mapping from the name of a record (e.g., "CONSTRUCTION") to its -# location in the final rendered HTML file including both filename (e.g., -# "construction.html") AND bookmark (e.g., "#construction") -# -# Example: -# { -# "CONSTRUCTION" => "construction.html#construction", -# "DHWDAYUSE" => "dhwdayuse.html#dhwdayuse", -# "DHWHEATER" => "dhwheater.html#dhwheater" -# } -# -# Markdown :: String -# -------------------- -# -# This is just text in Markdown format. -# -# RJson :: Int | String | Bool | Float | (Map RJSON RJSON) | (Array RJSON) -# -------------------- -# -# This is JSON (javascript object notation) represented in Ruby format. -# -# JSON :: String -# -------------------- -# -# A string in JSON format. -# -# SectionPath :: (Array String) -# -------------------- -# -# An array of strings of section headers to identify the section one is in at the moment. -# -# FilePath :: String -# -------------------- -# -# The path to a file. -# -# Manifest :: (Array String) -# -------------------- -# -# An array of full file paths constituting one entire "document". -# -# FileLevel :: PositiveInt -# -------------------- -# -# The level of the file in the overall document hierarchy. A level of "1" -# indicates that there should be no adjustments to the headings in the -# current file. A level of 2 or greater indicates that headings should be -# shifted (FileLevel - 1) positions (i.e., an H1 would become an H3 if -# FileLevel is 3 -- H1 + (3 - 1) = H3) -# -# NoLinkLevels :: NonNegativeInteger -# -------------------- -# -# The number of levels of hierarchy to screen for skipping potential -# "self-links". Set to 0 to get the "link everywhere" behavior. -# -# Signature, Purpose Statement, Header -# ------------------------------------ -# -# ### Signature -# -# XLinkMarkdownNoSelflinks :: (Map String Any) -> -# ((Array String) -> (Array String)) -# The XLinkMarkdownNoSelflinks block is designed to be configured and return a -# closure around a function that takes a manifest of files to process, -# processes them, and returns the manifest of the newly processed files. -# -# OverString :: Markdown FilePath FileLevel NoLinkLevels RecordIndex SectionPath -> (Tuple Markdown SectionPath) -# Given a markdown string, a file path corresponding to the markdown string, -# the file level of the path, the levels to check for no-linking, a record -# index and a section path, cross-link the given markdown string and return -# it along with any updates to the section path. Note: the FilePath has to be -# equivalent to what is used in the values of the RecordIndex. -# -# ### Notes -# -# - make the log a config variable, not a global; although, it could default to -# STDOUT... -# -# Function Examples -# ----------------- -# -# Record Index: -# -# rec_idx = {"STUFF"=>"index.html#stuff","JUNK"=>"index.html#junk"} -# -# SectionPath: -# -# sec_path = [] -# -# Source String, `s`: -# -# # STUFF -# -# There is a lot of STUFF available in the world, including a lot of JUNK. -# -# # JUNK -# -# JUNK is a kind of STUFF. -# -# File name of source string: -# -# file_basename = "index.html" -# -# This would be the result of running the source string through our processor: -# -# out, new_sec_path = OverString[s, file_basename, 1, 1, rec_idx, sec_path] -# -# Contents of `out`: -# -# # STUFF -# -# There is a lot of STUFF available in the world, including a lot of [JUNK](#junk). -# -# # JUNK -# -# JUNK is a kind of [STUFF](#stuff). -# -# Contents of `new_sec_path`: -# -# ["junk"] -# -# Calling with: -# -# out, new_sec_path = OverString[s, "other.html", 1, 1, rec_idx, sec_path] -# -# Would result in `out` as: -# -# # STUFF -# -# There is a lot of [STUFF](index.html#stuff) available in the world, including a lot of [JUNK](index.html#junk). -# -# # JUNK -# -# [JUNK](index.html#junk) is a kind of [STUFF](#stuff). -# -# Contents of `new_sec_path`: -# -# ["junk"] -# -module XLink - # String -> String - # Attempts to remove a plural "s" from a word if appropriate. Note: this is a - # very basic algorithm. - DePluralize = lambda do |word| - if word.end_with?("s") - if word.length > 1 - word[0..-2] - end - else - word - end - end - - # String RJson (Record :rec_idx RecordIndex :rec_name_set (Set String) :sec_path (Array String)) - Walker = lambda do |tag, the_content, state| - g = lambda do |inline| - if inline['t'] == 'Str' - index = state[:rec_idx] - rns = state[:rec_name_set] - word = inline['c'] - word_only = word.scan(/[a-zA-Z:]/).join - word_only_singular = DePluralize[word_only] - if rns.include?(word_only) or rns.include?(word_only_singular) - if index.include?(word_only) or index.include?(word_only_singular) - w = rns.include?(word_only) ? word_only : word_only_singular - state[:num_hits] += 1 - ref = index[w].scan(/(\#.*)/).flatten[0] - {'t' => 'Link', - 'c' => [ - ["", [], []], - [{'t'=>'Str','c'=>word}], - [ref, '']]} - else - puts("WARNING! ObjectNameSet includes #{word_only}|#{word_only_singular}; Index doesn't") - inline - end - else - inline - end - elsif inline['t'] == 'Emph' - new_ins = inline['c'].map(&g) - {'t'=>'Emph', 'c'=>new_ins} - elsif inline['t'] == 'Strong' - new_ins = inline['c'].map(&g) - {'t'=>'Strong', 'c'=>new_ins} - else - inline - end - end - if tag == "Para" - new_inlines = the_content.map(&g) - {'t' => 'Para', - 'c' => new_inlines} - else - nil - end - end - - OverFileOrig = lambda do |path, out_path, idx, config| - content = File.read(path, :encoding=>"UTF-8") - rec_idx_path = config.fetch("record-index-path") - rec_idx = YAML.load_file(rec_idx_path) - rec_name_set = Set.new(rec_idx.keys) - state = { - num_hits: 0, - rec_idx: rec_idx, - rec_name_set: rec_name_set - } - doc = JSON.parse(Pandoc::MdToJson[content]) - new_doc = Pandoc::Walk[doc, Walker, state] - new_content = Pandoc::JsonToMd[new_doc] - LogRun[path, config, state] - File.write(out_path, new_content) - end - - # String (Record "log"? (Or IO Nil) "verbose"? Bool) (Record :num_hits Int) -> Void - # Prints a log to the "log" field of the config variable if exists. If "verbose" field - # is set to true, logs a line stating the number of hits in the given file, otherwise "." - LogRun = lambda do |path, config, state| - log = config.fetch("log", nil) - if config.fetch("verbose", false) and log - log.write("CrossLinked #{File.basename(path)}; #{state[:num_hits]} found\n") - log.flush - elsif log - log.write(".") - log.flush - end - end - - # String RJson (Record :rec_idx RecordIndex :rec_name_set (Set String) :sec_path (Array String)) - # Walker that keeps track of the section it is in - SectionWalker = lambda do |tag, the_content, state| - g = lambda do |inline| - if inline['t'] == 'Str' - index = state[:rec_idx] - rns = state[:rec_name_set] - sp = state[:sec_path] - word = inline['c'] - word_only = word.scan(/[a-zA-Z:]/).join - word_only_singular = DePluralize[word_only] - if rns.include?(word_only) or rns.include?(word_only_singular) - if index.include?(word_only) or index.include?(word_only_singular) - w = rns.include?(word_only) ? word_only : word_only_singular - ref = index[w].scan(/(\#.*)/).flatten[0] - id = index[w] - if InSectionPath[sp, id, state[:nolink_lvl]] - inline - else - state[:num_hits] += 1 - {'t' => 'Link', - 'c' => [ - ["", [], []], - [{'t'=>'Str','c'=>word}], - [ref, '']]} - end - else - puts("WARNING! ObjectNameSet includes #{word_only}|#{word_only_singular}; Index doesn't") - inline - end - else - inline - end - elsif inline['t'] == 'Emph' - new_ins = inline['c'].map(&g) - {'t'=>'Emph', 'c'=>new_ins} - elsif inline['t'] == 'Strong' - new_ins = inline['c'].map(&g) - {'t'=>'Strong', 'c'=>new_ins} - else - inline - end - end - if tag == "Para" - new_inlines = the_content.map(&g) - {'t' => 'Para', - 'c' => new_inlines} - elsif tag == "Header" - sp = state[:sec_path] - h_adj = state[:hdr_adj] - h_lvl, _, inlines = the_content - h_adj = state[:hdr_adj] - slug = Slug::Slugify[InlinesToText[inlines]] - new_sp = UpdateSectionPath[ - sp, - File.basename(state[:file_path],'.*') + '.html' + "#" + slug, - h_lvl + h_adj - ] - state[:sec_path] = new_sp - nil - else - nil - end - end - - InlinesToText_vtable = { - 'Str' => lambda {|c| c}, - 'Emph' => lambda {|c| '*' + InlinesToText[c] + '*'}, - 'Strong' => lambda {|c| '**' + InlinesToText[c] + '**'}, - 'Strikeout' => lambda {|c| '~~' + InlinesToText[c] + '~~'}, - 'Superscript' => lambda {|c| '^' + InlinesToText[c] + '^'}, - 'Subscript' => lambda {|c| '~' + InlinesToText[c] + '~'}, - 'SmallCaps' => lambda {|c| '[' + InlinesToText[c] + ']{style="font-variant:small-caps;"}'}, - 'Quoted' => lambda do |c| - q = (c[0] == "DoubleQuote" ? '"' : "'") - q + InlinesToText[c[1]] + q - end, - 'Space' => lambda {|_| " "}, - } - - # (Array Inline) -> String - # Compute a (markdown) string from an array of inlines - InlinesToText = lambda do |inlines| - out = "" - inlines.each do |inln| - f = InlinesToText_vtable.fetch(inln['t']) - out += f[inln['c']] - end - out - end - - # String (Array String) PositiveInt (Array Inline) -> (Array String) - # Updates the section path given the current file path, the existing section - # path, the header level, and the header text - UpdateSectionPath = lambda do |sec_path, id, lvl| - new_sp = [] - 0.upto(lvl).each do |idx| - if idx == (lvl - 1) - new_sp << id - break - else - new_sp << sec_path[idx] - end - end - new_sp - end - - # (Array String) String NonNegativeInt -> Bool - # Return true if `id` is in the first `search_levels` of section path, else false. - InSectionPath = lambda do |sec_path, id, search_levels| - p = sec_path.reverse.take(search_levels) - p.include?(id) - end - - # Markdown FilePath FileLevel NoLinkLevel RecordIndex SectionPath -> (Tuple Markdown SectionPath) - # Add cross-linking to the given file and return. Don't cross-link when link - # goes to a header in the direct path of the current location up to - # NoLinkLevels up the ancestor chain. - OverString = lambda do |md_str, path, hdr_lvl, nolink_lvl, rec_idx, sec_path| - rjson = JSON.parse(Pandoc::MdToJson[md_str]) - state = { - num_hits: 0, - rec_idx: rec_idx, - rec_name_set: Set.new(rec_idx.keys), - hdr_adj: (hdr_lvl - 1), - nolink_lvl: nolink_lvl, - sec_path: sec_path.dup, - file_path: path - } - new_rjson = Pandoc::Walk[rjson, SectionWalker, state] - new_md_str = Pandoc::JsonToMd[new_rjson] - [new_md_str, state[:sec_path], state[:num_hits]] - end - - # FilePath FilePath Int (Record "record-index-path" String - # "section-path"? (Array String) "levels" (Array Int) "nolinklevel" Int - # "verbose"? Bool "log"? IO) -> Void - # Assume that path is in the format to correspond to paths in config record-index - OverFile = lambda do |path, out_path, idx, config| - rec_idx_path = config.fetch("record-index-path") - rec_idx = YAML.load_file(rec_idx_path) - sec_path = config.fetch("section-path", []) - nolink_level = config.fetch("nolinklevel", 1) - levels = config.fetch("levels", nil) - level = if levels.nil? then 1 else levels[idx] end - md, new_sp, num_hits = OverString[ - File.read(path), path, level, nolink_level, rec_idx, sec_path - ] - config["section-path"] = new_sp - LogRun[path, config, {num_hits: num_hits}] - File.write(out_path, md) - end -end diff --git a/doc/package.json b/doc/package.json deleted file mode 100644 index 905c83767..000000000 --- a/doc/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "cse-user-manual-build-utils", - "version": "0.0.1", - "description": "Node dependencies to assist in building the CSE User Manual", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "private": true, - "license": "BSD", - "dependencies": { - "cssnano-cli": "^1.0.4", - "html-minifier": "^4.0.0" - } -} diff --git a/doc/pyproject.toml b/doc/pyproject.toml new file mode 100644 index 000000000..772b0f276 --- /dev/null +++ b/doc/pyproject.toml @@ -0,0 +1,33 @@ +[project] +name = "CSE-documentation" +version = "0.1.0" +description = "Source code for CSE documentation website" +authors = [{ name = "The CSE Authors" }] +license = "BSD-3" +readme = "README.md" +keywords = ["cse", "energy-modeling", "simulation", "documentation"] +requires-python = ">=3.12" +dependencies = [ + "jsonschema", + "pyyaml", + "cbor2", + "Jinja2 >=3.1.4", + "stringcase >=1.2.0", + "pygit2 >=1.15.1", + "mkdocs-material", + "markdown-grid-tables", + "mkdocs-table-reader-plugin", + "mkdocs-jinja2", +] + + +[tool.uv] +dev-dependencies = ["pytest >= 7.1.3", "doit", "pylint", "black"] + +[tool.uv.sources] +mkdocs-jinja2 = { git = "https://github.com/andyoakley/mkdocs-jinja2" } + +[tool.mypy] +disallow_incomplete_defs = true +no_implicit_optional = true +check_untyped_defs = true diff --git a/doc/rakefile.rb b/doc/rakefile.rb deleted file mode 100644 index 466b6805f..000000000 --- a/doc/rakefile.rb +++ /dev/null @@ -1,1986 +0,0 @@ -# Copyright (c) 1997-2017 The CSE Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license -# that can be found in the LICENSE file. -######################################## -# Build Documentation and Website -######################################## -require 'fileutils' -require 'json' -require 'yaml' -require 'set' -require 'pathname' -require 'time' -require 'rake/testtask' -require 'irb' -require_relative 'lib/template' -require_relative 'lib/cse' -require_relative 'lib/pandoc' -require_relative 'lib/tables' -require_relative 'lib/table' -require_relative 'lib/toc' -require_relative 'lib/def_parser' -require_relative 'lib/section_index' -require_relative 'lib/verify_links' -require_relative 'lib/coverage_check' -require_relative 'lib/xlink' -require_relative 'lib/probes' - -######################################## -# Check Dependencies -######################################## -begin - PANDOC_VERSION = `pandoc --version`.split(/\n/)[0].gsub(/pandoc\s*/,'') -rescue - # pandoc isn't available - PANDOC_VERSION = nil -end -if PANDOC_VERSION.nil? or PANDOC_VERSION != "1.17.2" - puts "This build tool requires pandoc 1.17.2" - puts "Please uninstall your current pandoc via Windows" - puts "'Add and Remove Programs' and then install" - puts "Pandoc 1.17.2 via the *.msi file from here:" - puts "https://github.com/jgm/pandoc/releases" - exit(1) -end - -######################################## -# Globals -######################################## -class EvalContext - def test(name) - begin - if name[0] != "_" and (name[0] == name[0].upcase) - puts("Bad context variable name: #{name}") - puts("Cannot use uppercase letter to start context variable name (Ruby limitation)") - puts("Either use a lowercase letter to start the name or start the name with an '_'") - exit(1) - end - eval("#{name} = true") - rescue - puts("issue with context key \"#{name}\" in #{CONFIG_FILE}'s context section") - puts("all context variables must be valid Ruby variables:") - puts(" a lowercase letter or underscore followed by any\n" + - " combination of upper/lowercase letters, underscores, and digits") - puts("please fix the variable in question in #{CONFIG_FILE} before continuing") - exit - end - end -end -DEFAULT_CONFIG_FILE = "config/defaults.yaml" -CONFIG_FILE = "config.yaml" -LOG = STDOUT -ERB_OUTPUT_FILE = "erb-out.txt" -CONFIG = lambda do - f = lambda {|path| if File.exist?(path) then YAML.load_file(path) else {} end} - defaults = f[DEFAULT_CONFIG_FILE] - local = f[CONFIG_FILE] - config = defaults.merge(local) - default_context = if defaults.include?("context") then defaults["context"] else {} end - local_context = if local.include?("context") then local["context"] else {} end - context = default_context.merge(local_context) - ec = EvalContext.new - context.each {|k, _| ec.test(k)} - config['context'] = context - #puts(config.inspect) - config -end.call -THIS_DIR = File.expand_path(File.dirname(__FILE__)) -PROBES_DATA_DIR = File.join(THIS_DIR, 'config', 'reference') -BUILD_DIR = CONFIG.fetch("build-dir") -SRC_DIR = CONFIG.fetch("src-dir") -LOCAL_REPO = File.expand_path(File.join('..', '.git'), THIS_DIR) -REMOTE_REPO = CONFIG.fetch("remote-repo-url") -RUN_COVERAGE = CONFIG.fetch("coverage?") -REFERENCE_DIR = File.expand_path( - CONFIG.fetch("reference-dir") , THIS_DIR -) -RECORD_INDEX_EXCEPTIONS_FILE = File.join( - REFERENCE_DIR, 'record-index-exceptions.yaml' -) -DATE = nil # "February 23, 2016" -DRAFT = CONFIG.fetch("draft?") # true means, it is a draft -HEADER = "CSE User's Manual" -FOOTER = "Generated: #{Time.now.strftime("%FT%T%:z")}" -TOC_DEPTH = 3 -WEB_SITE_MANIFEST_PATH = File.join(SRC_DIR, "web-page.yaml") -CSE_USER_MANUAL_MANIFEST_PATH = File.join(SRC_DIR, 'cse-user-manual.yaml') -BUILD_PDF = CONFIG.fetch("build-pdf?") -USE_GHPAGES = CONFIG.fetch("use-ghpages?") -USE_NODE = CONFIG.fetch("use-node?") -NODE_BIN_DIR = File.expand_path('node_modules', THIS_DIR) -DOCS_BRANCH = CONFIG.fetch("docs-branch") -OUTPUT_DIR = CONFIG.fetch("output-dir") -VERBOSE = CONFIG.fetch("verbose?", false) -VERIFY_LINKS = CONFIG.fetch("verify-links?", false) -VERIFY_MANIFEST = CONFIG.fetch("verify-manifest?", false) -PANDOC_GENERAL_OPTIONS = [ - "--parse-raw", - "--standalone", - "--wrap=none", -].join(' ') -PANDOC_MD_OPTIONS = PANDOC_GENERAL_OPTIONS + " " + [ - "--atx-headers", - "--normalize", - "--to markdown", - "--from markdown", -].join(' ') -CSS_NANO_EXE = File.expand_path( - CONFIG.fetch("cssnano-exe"), THIS_DIR -) -HTML_MIN_EXE = File.expand_path( - CONFIG.fetch("html-minifier-exe"), THIS_DIR -) -PREPROCESSOR_CONTEXT = CONFIG.fetch("context", {}) -ERB_BINDING_FN = if CONFIG.fetch("use-table-lang?", true) - if CONFIG.include?("table-path") - table_path = File.expand_path( - CONFIG.fetch("table-path"), THIS_DIR) - Table::MakeBinding[table_path] - else - Table::MakeBinding[] - end - else - Template::MakeBinding - end -DELETE_BUILD_DIR = CONFIG.fetch("delete-build-dir?", false) - -######################################## -# Helper Functions -######################################## -# Note: section index must be generated *after* the preprocessing -# source-paths can (should?) be a glob, i.e., some-path/**/* or -# some-path/**/*.md -GenerateSectionIndex = lambda do |config| - src_path_glob = config.fetch("source-paths") - outpath = config.fetch("output-path") - merge_values = config.fetch("merge-values", nil) - parent = File.dirname(outpath) - FileUtils.mkdir_p(parent) unless File.exist?(parent) - lambda do - srcpaths = Dir[src_path_glob] - if !FileUtils.uptodate?(outpath, srcpaths) - si = SectionIndex::Generate[srcpaths] - si = si.merge(merge_values) if merge_values - File.write(outpath, si.to_yaml) - end - end -end - -# String String -> String -# Given a full path and a root path, return the relative path from root -RelativePath = lambda do |path, root_path| - Pathname.new(path).relative_path_from(Pathname.new(root_path)).to_s -end - -# String -> Nil -# Given a path to a directory where manifest yaml files can be found, report on -# whether the manifests represent all files on disk -CheckManifests = lambda do |src_dir| - src = Pathname.new(src_dir) - md_file_set = Set.new( - Dir[File.join(src_dir, "**", "*.md")].map do |p| - Pathname.new(p).relative_path_from(src).to_s - end - ) - unknown_files = Set.new - Dir[File.join(src_dir, "**", "*.yaml")].each do |path| - puts("... checking #{File.basename(path)}") - man = YAML.load_file(path) - man["sections"].each do |_, section_file| - if md_file_set.include?(section_file) - md_file_set.delete(section_file) - else - unknown_files << section_file - end - end - end - puts("Verifying manifest") - if md_file_set.empty? and unknown_files.empty? - puts("No problems detected") - return - end - puts("Problems detected:") - if !md_file_set.empty? - puts(" Files on disk but not in any manifest: ") - md_file_set.sort.each {|f| puts(" - #{f}")} - end - if !unknown_files.empty? - puts(" Files in manifest but not on disk: ") - unknown_files.sort.each {|f| puts(" - #{f}")} - end -end - -# (Array String) -> (Map String String) -# Given an array of basefile names, return a record index array based on the -# "typical rules". -FilesToRecordIndex = lambda do |paths| - rec_idx = {} - paths.each do |path| - base_no_ext = File.basename(path, ".*") - base_html = base_no_ext + ".html" - rec_idx[base_no_ext.upcase] = "#{base_html}##{base_no_ext.downcase}" - end - rec_idx -end - -# (Map String String) (Map String (Map String String)) -> (Map String String) -# Given a record index of record name to index value (file and hashtag), and a -# map of known exceptions representing "false record name" to correct index entry -# to merge, update the record index with the exceptions. Example: -# -# UpdateRecordIndex[ -# { -# "TOP-MEMBERS"=>"top-members.html#top-members", -# "RSYS"=>"rsys.html#rsys" -# }, -# { -# "TOP-MEMBERS" => { -# "TOP" => "top-members.html#top-members" -# } -# } -# ] -# => -# { -# "TOP"=>"top-members.html#top-members", -# "RSYS"=>"rsys.html#rsys" -# } -UpdateRecordIndex = lambda do |ri, updates| - new_ri = ri.dup - updates.each do |k, v| - if new_ri.include?(k) - new_ri.delete(k) - new_ri.merge!(v) - end - end - new_ri -end - -# Problem: need to build the record index on the fly based on what is left -# AFTER preprocessing. We also need to account for exceptions to the basic -# rule. The basic rule seems to be: -# -# 1. one record per file in doc/src/records -# 2. the index of that file is # -# 3. the record name seems to be -# 4. put the above in a map -# -# String String String -> Nil -# Given the path to the records/ directory, a path to save the record index at, -# and a file with known exceptions, read the record directory and create the -# record index and save it at the given path. -CreateRecordIndex = lambda do |rec_dir, outpath, exc_path=nil| - paths = Dir[File.join(rec_dir, '*.md')] - ri = FilesToRecordIndex[paths] - exceptions = if exc_path then YAML.load_file(exc_path) else {} end - ri = UpdateRecordIndex[ri, exceptions] - File.write(outpath, ri.to_yaml) - nil -end - -InstallNodeDeps = lambda do - unless File.exist?(NODE_BIN_DIR) - `npm install` - end -end - -# String -> Nil -# Removes all files under the given path -Clean = lambda do |path| - FileUtils.rm_rf(Dir[File.join(path, '*')]) -end - -# -> Nil -# The basic idea of this subroutine is to clone the current repository into the -# build output directory and checkout the gh-pages branch. We then clean all -# files out and (re-)generate into that git repository. The user can then manually -# pull back into the local gh-pages branch after inspection. -SetupGHPages = lambda do - if USE_GHPAGES - if ! File.exist?(File.join(OUTPUT_DIR, '.git')) - FileUtils.mkdir_p(File.dirname(OUTPUT_DIR)) - `git clone "#{LOCAL_REPO}" "#{OUTPUT_DIR}"` - Dir.chdir(OUTPUT_DIR) do - `git remote rm origin` - `git remote add origin #{REMOTE_REPO}` - `git fetch --all` - `git checkout #{DOCS_BRANCH}` - end - puts("Removing existing content...") - Dir[File.join(OUTPUT_DIR, '*')].each do |path| - unless File.basename(path) == '.git' - puts("... removing: rm -rf #{path}") - FileUtils.rm_rf(path) - end - end - end - end -end - -EnsureExists = lambda do |path| - FileUtils.mkdir_p(path) unless File.exist?(path) -end - -EnsureAllExist = lambda do |paths| - paths.each {|p| EnsureExists[p]} -end - -Run = lambda do |cmd, working_dir=nil| - working_dir ||= Dir.pwd - Dir.chdir(working_dir) do - begin - result = `#{cmd}` - raise "Error running command" if $?.exitstatus != 0 - if !result or result.empty? - if VERBOSE - LOG.write("executed command: `#{cmd}`\n") - LOG.write("... in directory: #{working_dir}\n") - LOG.flush - else - LOG.write(".") - LOG.flush - end - else - if VERBOSE - LOG.write("executed command: `#{cmd}`\n") - LOG.write("... in directory: #{working_dir}\n") - LOG.write("... result:\n#{result}\n") - LOG.flush - else - LOG.write(".") - LOG.flush - end - end - rescue - if VERBOSE - LOG.write("Error running command: `#{cmd}`\n") - LOG.write("... from directory: #{working_dir}\n") - LOG.write("... failure:\n #{result}") - LOG.flush - else - LOG.write("X") - LOG.flush - end - raise "Error running command" - end - end -end - -CopyFile = lambda do |path, out_path, dummy1=nil, dummy2=nil| - FileUtils.cp(path, out_path) -end - -# (Array String) (Map String *) -> Bool -# Returns true if the configuration has the given keys -CheckConfigHasKeys = lambda do |config, keys| - keys.each do |k| - if !config.include?(k) - msg = ( - "KeyNotFound Error:\n" + - "Configuration missing expected key #{k}\n" + - "config: #{config.inspect}" - ) - raise msg - end - end - true -end - -# (String String Int (Map String *) -> nil) ?(Or Nil (Array String)) -> -# ((Map String *) -> ((Array String) -> (Array String))) -# Setup up a function to take an array of file paths and process their contents -# to an output path while wrapping in a context of parameters. -# The initial arguments are a function to do the work of transforming from -# source path to target path and configuration keys to check. -# -# This function has signature: -# String String Int (Map String *) -> nil -# That is, it takes a source path, a target path, the index of which path it is -# in the overall process (a manifest is an array of source paths, so the index -# is the index into that array), and finally a map from string to any value (*) -# that is for configuation purposes. This file doesn't return any meaningful -# results (or if it does, they are not captured) and, instead, is run for its -# side-effects: creating a transformed file at the ouptut path location based -# on applying the function to the source path contents (presumably). -# -# The configuration keys is an array of strings to ensure exist in the -# configuration parameters fed into the next step of this function. -# -# Feeding MapOverManifest these two first arguments returns another function -# which takes a HashTable of configuration parameters which are optionally -# checked for values from the check_keys array. -# -# Feeding that next function the configuration parameters returns the -# final function which takes an array of source file paths (the "manifest") -# and processes them to the output directory (with the same basename as the -# input). -MapOverManifest = lambda do |fn, check_keys=nil| - lambda do |config| - CheckConfigHasKeys[config, check_keys] unless check_keys.nil? - out_dir = config.fetch("output-dir") - EnsureExists[out_dir] - other_deps = config.fetch("paths-to-other-dependencies", []) - if config.fetch("disable?", false) - #MapOverManifest[CopyFile][config.merge("disable?" => false)] - lambda {|manifest| manifest} - else - lambda do |manifest| - new_manifest = [] - manifest.each_with_index do |path, idx| - out_path = nil - if config.fetch("relative-root-path", nil) - out_path = File.join( - out_dir, - RelativePath[path, config["relative-root-path"]] - ) - EnsureExists[File.dirname(out_path)] - else - out_path = File.join(out_dir, File.basename(path)) - end - new_manifest << out_path - if !FileUtils.uptodate?(out_path, [path] + other_deps) - fn[path, out_path, idx, config] - end - end - new_manifest - end - end - end -end - -# (String (Map String *) -> String) ?(Or Nil (Array String)) -> -# ((Map String *) -> ((Array String) -> (Array String))) -# This function is very similar to MapOverManifest but instead -# works only on the manfiest path names themselves (and doesn't -# touch the actual file content). This can be used to modify -# path names. -MapOverManifestPaths = lambda do |fn, check_keys=nil| - lambda do |config| - CheckConfigHasKeys[config, check_keys] unless check_keys.nil? - if config.fetch('disable?', false) - lambda do |manifest| - manifest - end - else - lambda do |manifest| - new_manifest = [] - manifest.map do |path| - new_manifest << fn[path, config] - end - new_manifest - end - end - end -end - -# (Record 'output-dir' String 'context' (Map String *)) -# -> ((Array String) -> (Array String)) -# This function takes an array of source files and preprocesses each with ERB, -# saving the rendered result with the same basename in the designated -# output-dir, creating the output-dir if necessary. -PreprocessManifest = MapOverManifest[ - Template::PreprocFile[ERB_BINDING_FN], - ['output-dir', 'context'] -] - -# (Map "reference-dir" String ...) -> ((Array String) -> (Array String)) -# Configuring with a reference directory, expand all manifest paths and -# return them. -ExpandPathsFrom = MapOverManifestPaths[ - lambda do |path, config| - reference_dir = config.fetch("reference-dir") - File.expand_path(path, reference_dir) - end, - ["reference-dir"] -] - -TapManifest = lambda do |msg| - lambda do |manifest| - puts(msg) - puts("manifest = #{manifest.inspect}") - manifest - end -end - -NormalizeMarkdown = MapOverManifest[ - lambda do |path, out_path, _, _| - Run["pandoc #{PANDOC_MD_OPTIONS} -o \"#{out_path}\" \"#{path}\""] - end -] - -#AdjustMarkdownLevels = MapOverManifest[ -# lambda do |path, out_path, idx, config| -# levels = config.fetch("levels") -# end, -# ["levels"] -#] -AdjustMarkdownLevels = lambda do |config| - levels = config.fetch("levels") - out_dir = config.fetch("output-dir") - EnsureExists[out_dir] - lambda do |manifest| - new_manifest = [] - if manifest.length != levels.length - puts("length of manifest doesn't equal length of levels:") - puts("... manifest length: #{manifest.length}") - puts("... levels length: #{levels.length}") - exit(1) - end - manifest.zip(levels).each do |path, level| - out_path = File.join(out_dir, File.basename(path)) - new_manifest << out_path - if level == 1 - FileUtils.cp(path, out_path) - else - adjustment = "#" * (level - 1) - md = File.read(path, :encoding=>"UTF-8") - File.open(out_path, 'w') do |f| - md.lines.each do |line| - if line =~ /^#+\s+/ - f.write(adjustment + line) - else - f.write(line) - end - end - end - end - end - new_manifest - end -end - -AddFiles = lambda do |config| - new_paths = config.fetch("paths") - out_dir = config.fetch("output-dir") - add_to_manifest = config.fetch("append-to-manifest?", false) - EnsureExists[out_dir] - lambda do |manifest| - new_manifest = [] - manifest.each do |path| - out_path = File.join(out_dir, File.basename(path)) - new_manifest << out_path - if !FileUtils.uptodate?(out_path, [path]) - FileUtils.cp(path, out_path) - end - end - new_paths.each do |path| - out_path = File.join(out_dir, File.basename(path)) - new_manifest << out_path if add_to_manifest - if !FileUtils.uptodate?(out_path, [path]) - FileUtils.cp(path, out_path) - end - end - new_manifest - end -end - -CopyToDir = lambda do |config| - out_dir = config.fetch("output-dir") - EnsureExists[out_dir] - lambda do |manifest| - new_manifest = [] - manifest.each do |path| - out_path = File.join(out_dir, File.basename(path)) - new_manifest << path - if !FileUtils.uptodate?(out_path, [path]) - FileUtils.cp(path, out_path) - end - end - new_manifest - end -end - -CopyByGlob = lambda do |config| - from_glob = config.fetch("from-glob") - out_dir = config.fetch("output-dir") - EnsureExists[out_dir] - lambda do - new_manifest = [] - Dir[from_glob].each do |path| - out_path = File.join(tgt_dir, File.basename(path)) - new_manifest << out_path - if not FileUtils.uptodate?(out_path, [path]) - FileUtils.cp(path, out_path) - end - end - new_manifest - end -end - -PassThroughWithSideEffect = lambda do |config| - fn = config.fetch("function") - disable = config.fetch("disable?", false) - lambda do |x| - fn[] unless disable - x - end -end - -UpdateOutlineCount = lambda do |count, level_at| - new_count = [] - mod_idx = level_at - 1 - 0.upto(mod_idx).each do |idx| - c = count.fetch(idx, 0) - if idx == mod_idx - new_count << c+1 - elsif idx < mod_idx - if idx > (count.length-1) - new_count << c+1 - else - new_count << c - end - else - next - end - end - new_count -end - -OutlineCountToStr = lambda do |count| - count.map(&:to_s).join(".") -end - -NumberMd = lambda do |config| - if config.fetch("disable", false) - lambda do |manifest| - manifest - end - else - out_dir = config.fetch("output-dir") - levels = config.fetch("levels", nil) - starting_count = config.fetch("starting-count", [0]) - exceptions = config.fetch("exceptions", []) - EnsureExists[out_dir] - unnum = lambda do |line| - line =~ /{-}\s*$/ || line =~ /{[^}]*?\.unnumbered[^}]*?}\s*$/ - end - lambda do |manifest| - new_manifest = [] - count = starting_count - manifest.each_with_index do |path, idx| - bn = File.basename(path) - out_path = File.join(out_dir, bn) - new_manifest << out_path - if exceptions.include?(bn) - if !FileUtils.uptodate?(out_path, [path]) - FileUtils.cp(path, out_path) - end - next - end - level_adjustment = (levels and levels[idx]) ? (levels[idx] - 1) : 0 - md = File.read(path, :encoding=>"UTF-8") - if !FileUtils.uptodate?(out_path, [path]) - File.open(out_path, 'w') do |f| - md.lines.each do |line| - if line =~ /^#+\s+/ and !unnum[line] - m = line.match(/^(#+)\s+(.*)$/) - level_at = m[1].length + level_adjustment - count = UpdateOutlineCount[count, level_at] - outline_number = OutlineCountToStr[count] - f.write(m[1] + ' ' + outline_number + ' ' + m[2].chomp + "\n") - else - f.write(line) - end - end - end - end - end - new_manifest - end - end -end - -# String -> String -# Attempts to remove a plural "s" from a word if appropriate. Note: this is a -# very basic algorithm. -DePluralize = lambda do |word| - if word.end_with?("s") - if word.length > 1 - word[0..-2] - end - else - word - end -end - -# Task to cross-link terms in source documents -# Config (and defaults) -# "record-index-path" -# "output-dir" -# "log" => nil -# "verbose" => false -# "disable?" => false -# "paths-to-other-dependencies" => [] -# "relative-root-path" => nil -XLinkMarkdown = MapOverManifest[ - XLink::OverFileOrig, - ["record-index-path"] -] - -# Task to cross-link terms in source documents. This version allows us to -# remove "self-links" -- i.e., links to sections that are the immediate parent -# or (optionally) on the path of sections to the current point. The basic idea -# is that we shouldn't have links to a section in the paragraph immediately -# below the beginning of a section. -# Config (and defaults) -# "record-index-path" -# "output-dir" -# "levels" => (Array Int), default: [1,1,1, ...] -# "nolinklevel" => Int, default: 1, how high up to go in the path to check if we are "self-linking" -# "section-path" => [] -# "log" => nil -# "verbose" => false -# "disable?" => false -# "paths-to-other-dependencies" => [] -# "relative-root-path" => nil -XLinkMarkdownAdv = MapOverManifest[ - XLink::OverFile, - ["record-index-path"] -] - -JoinManifestToString = lambda do |manifest| - manifest.map{|f| "\"#{f}\""}.join(' ') -end - -RunPandoc = lambda do |config| - opts = config.fetch('options') - out_path = config.fetch('output-path') - out_dir = File.dirname(out_path) - working_dir = config.fetch('working-dir', out_dir) - EnsureExists[out_dir] - lambda do |input| - cmd = "pandoc #{opts} -o \"#{out_path}\" #{input}" - Run[cmd, working_dir] - out_path - end -end - -RunPandocOverEach = lambda do |config| - opts = config.fetch('options') - out_dir = config.fetch('output-dir') - working_dir = config.fetch('working-dir', nil) - do_nav = config.fetch('do-navigation?', false) - top = config.fetch('top-url', nil) - toc = config.fetch('toc-url', nil) - EnsureExists[out_dir] - lambda do |manifest| - new_manifest = [] - num_files = manifest.length - manifest.each_with_index do |path, idx| - out_path = File.join(out_dir, File.basename(path, '.md') + '.html') - new_manifest << out_path - working_dir = File.dirname(path) if working_dir.nil? - if !FileUtils.uptodate?(out_path, [path]) - nav_opts = [] - prev = File.basename(manifest[(idx-1)%num_files], '.md') + '.html' - the_next = File.basename(manifest[(idx+1)%num_files], '.md') + '.html' - nav_opts << "--variable prev=\"#{prev}\"" if num_files > 1 - nav_opts << "--variable next=\"#{the_next}\"" if num_files > 1 - nav_opts << "--variable top=\"#{top}\"" if top - nav_opts << "--variable nav-toc=\"#{toc}\"" if toc - nav_opts << "--variable do-nav=true" if do_nav - all_opts = opts + ' ' + nav_opts.join(' ') - cmd = "pandoc #{all_opts} -o \"#{out_path}\" \"#{path}\"" - Run[cmd, working_dir] - end - end - new_manifest - end -end - -GenTOC = lambda do |config| - max_level = config.fetch('max-level') - out_dir = config.fetch('output-dir') - toc_name = config.fetch('toc-name', 'index.md') - levels = config.fetch('levels') - disable = config.fetch('disable?', false) - if disable - lambda do |manifest| - manifest - end - else - EnsureExists[out_dir] - lambda do |manifest| - new_manifest = [] - toc_out_path = File.join(out_dir, toc_name) - new_manifest << toc_out_path - if !FileUtils.uptodate?(toc_out_path, manifest) - lev_man = [] - manifest.each_with_index do |path, idx| - lev_man << [levels[idx], path] - end - toc_content = TOC::GenTableOfContentsFromFiles[ - max_level, - lev_man - ] - File.write(toc_out_path, toc_content) - end - manifest.each do |path| - out_path = File.join(out_dir, File.basename(path)) - new_manifest << out_path - if !FileUtils.uptodate?(out_path, [path]) - FileUtils.cp(path, out_path) - end - end - new_manifest - end - end -end - -Listify = lambda {|x| [x]} - -JoinFunctions = lambda do |fs| - lambda do |x| - fs.each do |f| - x = f[x] - end - x - end -end - -NewManifest = lambda do |manifest| - lambda do |_| - manifest - end -end - -CompressCSS = lambda do |config| - disable = config.fetch("disable?", false) - out_dir = config.fetch("output-dir") - EnsureExists[out_dir] - if disable - lambda do |manifest| - new_manifest = [] - manifest.each do |path| - out_path = File.join(out_dir, File.basename(path)) - new_manifest << out_path - if !FileUtils.uptodate?(out_path, [path]) - FileUtils.cp(path, out_path) - end - end - new_manifest - end - else - working_dir = config.fetch("working-dir", out_dir) - cssnano = config.fetch("path-to-cssnano") - lambda do |manifest| - new_manifest = [] - manifest.each do |path| - out_path = File.join(out_dir, File.basename(path)) - new_manifest << out_path - if !FileUtils.uptodate?(out_path, [path]) - cmd = "#{cssnano} < #{path} > #{out_path}" - Run[cmd, working_dir] - end - end - new_manifest - end - end -end - -CompressHTML = lambda do |config| - out_dir = config.fetch("output-dir") - disable = config.fetch("disable?", false) - EnsureExists[out_dir] - if disable - lambda do |manifest| - new_manifest = [] - manifest.each do |path| - out_path = File.join(out_dir, File.basename(path)) - new_manifest << out_path - if !FileUtils.uptodate?(out_path, [path]) - FileUtils.cp(path, out_path) - end - end - new_manifest - end - else - html_minifier = config.fetch("path-to-html-minifier") - working_dir = config.fetch("working-dir", out_dir) - opts = config.fetch("options", "") - lambda do |manifest| - new_manifest = [] - manifest.each do |path| - out_path = File.join(out_dir, File.basename(path)) - new_manifest << out_path - if !FileUtils.uptodate?(out_path, [path]) - if html_minifier - cmd = "#{html_minifier} #{opts} -o #{out_path} #{path}" - Run[cmd, working_dir] - else - FileUtils.cp(path, out_path) - end - end - end - new_manifest - end - end -end - -BuildProbesYaml = lambda do - # Name in Probes => Name in CNRECS - # all mappings are downcased - mappings = { - 'door'=>'surface', - 'window'=>'surface', - 'export'=>'report', - 'exportcol'=>'reportcol', - 'exportfile'=>'reportfile', - 'weathernexthour'=>'weather', - #'znres'=>'zone interval results sub', - } - dirs = [ - PROBES_DATA_DIR - ] - EnsureAllExist[dirs] - CSE::ProbesList[] - out_path = File.join(PROBES_DATA_DIR, 'probes_input.yaml') - probes = DefParser::ParseProbesTxt[] - probes_alt_orig = DefParser::ParseCnRecs[] - probes_alt = {} - probes_alt_orig.keys.each do |k| - name = probes_alt_orig[k][:name] - probes_alt[name.downcase] = probes_alt_orig[k] - end - #puts("probes.keys: #{probes.keys}") - #puts("probes_alt.keys: #{probes_alt.keys}") - probes.keys.sort_by {|k| k.downcase}.each do |k| - rec_alt = nil - k_dc = k.downcase - k_lookup = mappings.fetch(k_dc, k_dc) - if probes_alt.include?(k_lookup) - rec_alt = probes_alt[k_lookup] - else - puts("Warning! No additional data found for #{k} (#{k_lookup})") - end - next if rec_alt.nil? - flds = probes[k][:fields] - next if flds.empty? - flds.each do |fld| - desc = nil - flds_alt = rec_alt[:fields].select do |f| - na = f[:name].downcase - n1a = na - n2a = na.split(/_/)[-1].split(/\./)[-1].gsub(/\[[^\]]*\]/, '') - nb = fld[:name].downcase.split(/_/)[-1].split(/\./)[-1].gsub(/\[[^\]]*\]/, '') - n1a == nb || n2a == nb - end - if flds_alt.length == 1 - fld_alt = flds_alt[0] - desc = fld_alt.fetch(:description, desc) - end - begin - fld[:description] = desc.capitalize unless desc.nil? - rescue - fld[:description] = desc unless desc.nil? - end - end - end - File.write(out_path, probes.to_yaml) -end - -BuildProbesAndCopyIntoManifest = lambda do |config| - disable = config.fetch("disable?", false) - if disable - lambda do |manifest| - manifest - end - else - probes_dir = config.fetch('probes-build-dir') - out_dir = config.fetch('output-dir') - insert_after = config.fetch('insert-after-file') - EnsureAllExist[[probes_dir, out_dir]] - probes_input = config.fetch('path-to-probes-input') - probes = YAML.load_file(probes_input) - probes_md_path = File.join(probes_dir, 'probes.md') - File.open(probes_md_path, 'w') do |f| - f.write("# Probe Definitions\n\n") - probes.keys.sort_by {|k| k.downcase}.each do |k| - table = [["Name", "Input?", "Runtime?", "Type", "Variability", "Description"]] - flds = probes[k][:fields] - next if flds.empty? - name = k - array_txt = if probes[k][:array] then "[1..]" else "" end - title = "\\@#{name}#{array_txt}." - owner = probes[k][:owner] - owner_txt = if owner == "--" then "" else " (owner: #{owner})" end - f.write("## #{title}#{owner_txt}\n\n") - if probes[k].include?(:description) - f.write(probes[k][:description] + "\n\n") - end - flds.each do |fld| - table << [ - fld[:name], - if fld[:input] then "X" else "--" end, - if fld[:runtime] then "X" else "--" end, - fld[:type], - fld[:variability], - fld.fetch(:description, "--") - ] - end - f.write(Tables::WriteTable[ table, true ]) - f.write("\n\n\n") - end - end - lambda do |manifest| - new_manifest = [] - manifest.each do |path| - bn = File.basename(path) - out_path = File.join(out_dir, bn) - new_manifest << out_path - if bn == insert_after - probes_out_path = File.join(out_dir, File.basename(probes_md_path)) - new_manifest << probes_out_path - if !FileUtils.uptodate?(probes_out_path, [probes_md_path]) - FileUtils.cp(probes_md_path, probes_out_path) - end - end - if !FileUtils.uptodate?(out_path, [path]) - FileUtils.cp(path, out_path) - end - end - new_manifest - end - end -end - -ReLinkHTML = lambda do |config| - out_dir = config.fetch("output-dir") - tags_fname_map = config.fetch("tags-filename-map") - EnsureExists[out_dir] - lambda do |manifest| - if tags_fname_map.respond_to?(:call) - tags_fname_map = tags_fname_map.call - end - new_manifest = [] - m = manifest.length - n = 0 - manifest.each do |path| - bn = File.basename(path) - out_path = File.join(out_dir, bn) - new_manifest << out_path - if !FileUtils.uptodate?(out_path, [path]) - n += 1 - content = File.read(path, :encoding=>"UTF-8") - new_content = tags_fname_map.to_a.inject(content) do |nc, tag_fname| - tag = tag_fname[0] - fname = tag_fname[1] - if fname == bn - nc - else - nc.gsub(/([^<]*)<\/a>/, - "\\1") - end - end - File.write(out_path, new_content) - end - end - if VERBOSE - LOG.write("Updated #{n}/#{m} files for relinking\n") - LOG.flush - else - LOG.write(".") - LOG.flush - end - new_manifest - end -end - -CheckCoverage = lambda do |config| - tag = config.fetch("tag") - this_dir = config.fetch('this-dir', THIS_DIR) - build_dir = config.fetch("build-dir", "build") - md_dir = config.fetch("md-dir", "md") - context = config.fetch("preproc-context", PREPROCESSOR_CONTEXT) - JoinFunctions[[ - ExpandPathsFrom[ - "reference-dir" => File.expand_path('src') - ], - PreprocessManifest[ - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "preprocessed"), this_dir - ), - "relative-root-path" => File.expand_path('src'), - "context" => context - ], - NormalizeMarkdown[ - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "normalize"), this_dir - ) - ] - ]] -end - -BuildSinglePageHTML = lambda do |config| - tag = config.fetch("tag") - levels = config.fetch("levels") - this_dir = config.fetch('this-dir', THIS_DIR) - build_dir = config.fetch("build-dir", BUILD_DIR) - md_dir = config.fetch("md-dir", "md") - html_dir = config.fetch("html-dir", "html") - rsrc_dir = config.fetch("resource-dir", "resources") - out_dir = config.fetch("output-dir", OUTPUT_DIR) - out_file = config.fetch("output-file-name", "out.html") - disable_probes = config.fetch("disable-probes?", false) - disable_toc = config.fetch("disable-toc?", false) - disable_xlink = config.fetch("disable-xlink?", false) - disable_compression = config.fetch("disable-compression?", !USE_NODE) - disable_numbering = config.fetch("disable-numbering?", false) - do_navigation = config.fetch("do-navigation?", false) - title = config.fetch("title", "CSE User's Manual") - subtitle = config.fetch("subtitle", "California Simulation Engine") - date = config.fetch("date", nil) - draft = config.fetch("draft?", true) - context = config.fetch("preproc-context", PREPROCESSOR_CONTEXT) - section_index = config.fetch( - "section-index-path", - File.expand_path( - File.join(build_dir, tag, rsrc_dir, "section-index.yaml"), this_dir - ) - ) - record_index_file = config.fetch( - "record-index-file", - File.expand_path( - File.join(build_dir, tag, rsrc_dir, "record-index.yaml"), this_dir - ) - ) - JoinFunctions[[ - ExpandPathsFrom[ - "reference-dir" => File.expand_path('src') - ], - PreprocessManifest[ - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "preprocessed"), this_dir - ), - "relative-root-path" => File.expand_path('src'), - "context" => context - ], - PassThroughWithSideEffect[ - "function" => lambda do - rec_dir = File.expand_path( - File.join(build_dir, tag, md_dir, "preprocessed", "records"), this_dir - ) - outpath = record_index_file - parent = File.dirname(outpath) - FileUtils.mkdir_p(parent) unless File.exist?(parent) - exc_path = RECORD_INDEX_EXCEPTIONS_FILE - deps = [exc_path] + Dir[File.join(rec_dir, '*.md')] - if !FileUtils.uptodate?(outpath, deps) - CreateRecordIndex[rec_dir, outpath, exc_path] - end - end - ], - NormalizeMarkdown[ - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "normalize"), this_dir - ) - ], - XLinkMarkdownAdv[ - "record-index-path" => record_index_file, - "levels" => levels, - "nolinklevel" => 1, - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "xlink"), this_dir - ), - "log" => STDOUT, - "disable?" => disable_xlink - ], - AdjustMarkdownLevels[ - "output-dir" => File.join(build_dir, tag, md_dir, "adjusted-headers"), - "levels" => levels - ], - Probes::BuildProbesAndCopyIntoManifest.new( - "disable?" => disable_probes, - "probes-build-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "probes"), this_dir - ), - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "all-with-probes"), this_dir - ), - "insert-after-file" => "output-reports.md", - "path-to-probes-input" => File.expand_path( - File.join("config", "reference", "probes_input.yaml"), this_dir - ), - "probes-in-one-file?" => false, - ), - PassThroughWithSideEffect[ - "function" => GenerateSectionIndex[ - "source-paths"=> File.expand_path( - # File.join(build_dir, tag, md_dir, "preprocessed", "**", "*.md"), this_dir - File.join(build_dir, tag, md_dir, "all-with-probes", "**", "*.md"), this_dir - ), - "output-path" => section_index, - "merge-values" => {"#probe-definitions"=>"probes.html"} - ] - ], - AddFiles[ - "paths" => [File.expand_path( - File.join("config", "template", "site-template.html"), this_dir - )], - "append-to-manifest?" => false, - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "all-with-probes-and-template"), this_dir - ) - ], - JoinManifestToString, - RunPandoc[ - "options" => [ - "--parse-raw", - "--standalone", - "--wrap=none", - "--to html5", - "--from markdown", - "--mathjax", - disable_numbering ? "" : "--number-sections", - "--css=css/base.css", - disable_toc ? "" : "--table-of-contents", - disable_toc ? "" : "--toc-depth=#{TOC_DEPTH}", - "--smart", - "--variable header=\"#{HEADER}\"", - "--variable footer=\"#{FOOTER}\"", - "--variable current_year=#{DateTime.now.year}", - "--variable do-nav=#{do_navigation}", - "--variable top=\"index.html\"", - "--template=site-template.html", - title ? "--variable title=\"#{title}\"" : "", - subtitle ? "--variable subtitle=\"#{subtitle}\"" : "", - date ? "--variable date=\"#{date}\"" : "", - draft ? "--variable draft=true" : "", - ].join(' '), - "output-path" => File.expand_path( - File.join(build_dir, tag, html_dir, "generated-singlepage", out_file), this_dir - ), - "working-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "all-with-probes-and-template"), this_dir - ), - ], - Listify, - CompressHTML[ - "path-to-html-minifier" => HTML_MIN_EXE, - "options" => [ - "--minify-css", - "--minify-js", - "--remove-comments" - ].join(' '), - "output-dir" => File.expand_path(out_dir, this_dir), - "disable?" => disable_compression - ], - NewManifest[ - Dir[ - File.expand_path(File.join("config", "css", "*.css"), this_dir) - ] - ], - CompressCSS[ - "path-to-cssnano" => CSS_NANO_EXE, - "output-dir" => File.expand_path( - File.join(out_dir, "css"), this_dir - ), - "disable?" => disable_compression - ], - NewManifest[ - Dir[File.expand_path(File.join("src", "media", "*"), this_dir)] - ], - CopyToDir[ - "output-dir" => File.expand_path( - File.join(out_dir, "media"), this_dir - ) - ], - ]] -end - -BuildMultiPageHTML = lambda do |config| - tag = config.fetch("tag") - levels = config.fetch("levels") - build_dir = config.fetch("build-dir", BUILD_DIR) - md_dir = config.fetch("md-dir", "md") - html_dir = config.fetch("html-dir", "html") - this_dir = config.fetch("this-dir", THIS_DIR) - out_dir = config.fetch("output-dir", OUTPUT_DIR) - rsrc_dir = config.fetch("resource-dir", "resources") - disable_probes = config.fetch("disable-probes?", false) - disable_toc = config.fetch("disable-toc?", false) - disable_xlink = config.fetch("disable-xlink?", false) - disable_compression = config.fetch("disable-compression?", !USE_NODE) - disable_numbering = config.fetch("disable-numbering?", false) - do_navigation = config.fetch("do-navigation?", false) - title = config.fetch("title", "CSE User's Manual") - subtitle = config.fetch("subtitle", "California Simulation Engine") - date = config.fetch("date", nil) - draft = config.fetch("draft?", true) - context = config.fetch("preproc-context", PREPROCESSOR_CONTEXT) - section_index = config.fetch( - "section-index-path", - File.expand_path( - File.join(build_dir, tag, rsrc_dir, "section-index.yaml"), this_dir - ) - ) - record_index_file = config.fetch( - "record-index-file", - File.expand_path( - File.join(build_dir, tag, rsrc_dir, "record-index.yaml"), this_dir - ) - ) - JoinFunctions[[ - ExpandPathsFrom[ - "reference-dir" => File.expand_path('src') - ], - PreprocessManifest[ - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "preprocessed"), this_dir - ), - "relative-root-path" => File.expand_path('src'), - "context" => context - ], - PassThroughWithSideEffect[ - "function" => lambda do - rec_dir = File.expand_path( - File.join(build_dir, tag, md_dir, "preprocessed", "records"), this_dir - ) - outpath = record_index_file - parent = File.dirname(outpath) - FileUtils.mkdir_p(parent) unless File.exist?(parent) - exc_path = RECORD_INDEX_EXCEPTIONS_FILE - deps = [exc_path]+Dir[File.join(rec_dir,'*.md')] - if !FileUtils.uptodate?(outpath, deps) - CreateRecordIndex[rec_dir, outpath, exc_path] - end - end - ], - NormalizeMarkdown[ - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "normalize"), this_dir - ) - ], - XLinkMarkdownAdv[ - "record-index-path" => record_index_file, - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "xlink"), this_dir - ), - "levels" => levels, - "nolinklevel" => 1, - "log" => STDOUT, - "disable?" => disable_xlink - ], - Probes::BuildProbesAndCopyIntoManifest.new( - "probes-build-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "probes"), this_dir - ), - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "all-with-probes"), this_dir - ), - "insert-after-file" => "output-reports.md", - "path-to-probes-input" => File.expand_path( - File.join("config", "reference", "probes_input.yaml"), this_dir - ), - "disable?" => disable_probes, - "probes-in-one-file?" => false, - ), - PassThroughWithSideEffect[ - "function" => GenerateSectionIndex[ - "source-paths"=> File.expand_path( - # File.join(build_dir, tag, md_dir, "preprocessed", "**", "*.md"), this_dir - File.join(build_dir, tag, md_dir, "all-with-probes", "**", "*.md"), this_dir - ), - "output-path" => section_index, - "merge-values" => {"#probe-definitions"=>"probes.html"} - ] - ], - NumberMd[ - "output-dir" => File.join(build_dir, tag, md_dir, "number"), - "levels" => levels + (disable_probes ? [] : [1]), - "disable?" => disable_numbering - ], - GenTOC[ - "max-level" => TOC_DEPTH, - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "toc"), this_dir - ), - "toc-name" => "index.md", - "levels" => (levels + (disable_probes ? [] : [1]*100)).map do |lev| - lev - 1 - end, - "disable?" => disable_toc - ], - AddFiles[ - "paths" => [File.expand_path( - File.join("config", "template", "site-template.html"), this_dir - )], - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "ready-to-build"), this_dir - ) - ], - RunPandocOverEach[ - "options" => [ - "--parse-raw", - "--standalone", - "--wrap=none", - "--to html5", - "--from markdown", - "--mathjax", - "--css=css/base.css", - "--smart", - "--template=site-template.html", - "--variable header=\"#{HEADER}\"", - "--variable footer=\"#{FOOTER}\"", - "--variable current_year=#{DateTime.now.year}", - title ? "--variable title=\"#{title}\"" : "", - subtitle ? "--variable subtitle=\"#{subtitle}\"" : "", - date ? "--variable date=\"#{date}\"" : "", - draft ? "--variable draft=true" : "", - ].join(' '), - "output-dir" => File.expand_path( - File.join(build_dir, tag, html_dir, "generated-multipage"), this_dir - ), - "top-url" => "../index.html", - "toc-url" => "index.html", - "do-navigation?" => do_navigation - ], - ReLinkHTML[ - "tags-filename-map" => lambda do - index = YAML.load_file(record_index_file) - index.to_a.sort_by do |e| - e[0] - end.inject(YAML.load_file(section_index)) do |m, e| - fname_tag = e[1].scan(/([^\#]*)(\#.*)/).flatten - m.merge(Hash[fname_tag[1], fname_tag[0]]) - end - end, - "output-dir" => File.expand_path( - File.join(build_dir, tag, html_dir, "relinked"), this_dir - ) - ], - CompressHTML[ - "path-to-html-minifier" => HTML_MIN_EXE, - "options" => [ - "--minify-css", - "--minify-js", - "--remove-comments" - ].join(' '), - "output-dir" => File.expand_path(out_dir, this_dir), - "disable?" => disable_compression - ], - NewManifest[ - Dir[ - File.expand_path(File.join("config", "css", "*.css"), this_dir) - ] - ], - CompressCSS[ - "path-to-cssnano" => CSS_NANO_EXE, - "output-dir" => File.expand_path( - File.join(out_dir, "css"), this_dir - ), - "disable?" => disable_compression - ], - NewManifest[ - Dir[File.expand_path(File.join("src", "media", "*"), this_dir)] - ], - CopyToDir[ - "output-dir" => File.expand_path( - File.join(out_dir, "media"), this_dir - ) - ], - ]] -end - -BuildPDF = lambda do |config| - tag = config.fetch("tag") - levels = config.fetch("levels") - this_dir = config.fetch('this-dir', THIS_DIR) - build_dir = config.fetch("build-dir", BUILD_DIR) - md_dir = config.fetch("md-dir", "md") - out_dir = config.fetch("output-dir", OUTPUT_DIR) - out_file = config.fetch("output-file-name", "out.pdf") - rsrc_dir = config.fetch("resource-dir", "resources") - disable_probes = config.fetch("disable-probes?", false) - disable_toc = config.fetch("disable-toc?", false) - disable_xlink = config.fetch("disable-xlink?", false) - title = config.fetch("title", "CSE User's Manual") - subtitle = config.fetch("subtitle", "California Simulation Engine") - date = config.fetch("date", nil) - draft = config.fetch("draft?", true) - context = config.fetch("preproc-context", PREPROCESSOR_CONTEXT) - section_index = config.fetch( - "section-index-path", - File.expand_path( - File.join(build_dir, tag, rsrc_dir, "section-index.yaml"), this_dir - ) - ) - record_index_file = config.fetch( - "record-index-file", - File.expand_path( - File.join(build_dir, tag, rsrc_dir, "record-index.yaml"), this_dir - ) - ) - JoinFunctions[[ - ExpandPathsFrom[ - "reference-dir" => File.expand_path('src') - ], - PreprocessManifest[ - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "preprocessed"), this_dir - ), - "relative-root-path" => File.expand_path('src'), - "context" => context - ], - #PassThroughWithSideEffect[ - # "function" => GenerateSectionIndex[ - # "source-paths"=> File.expand_path( - # File.join(build_dir, tag, md_dir, "preprocessed", "**", "*.md"), this_dir - # # File.join(build_dir, tag, md_dir, "all-with-probes", "**", "*.md"), this_dir - # ), - # "output-path" => section_index, - # "merge-values" => {"#probe-definitions"=>"probes.html"} - # ] - #], - PassThroughWithSideEffect[ - "function" => lambda do - rec_dir = File.expand_path( - File.join(build_dir, tag, md_dir, "preprocessed", "records"), this_dir - ) - outpath = record_index_file - parent = File.dirname(outpath) - FileUtils.mkdir_p(parent) unless File.exist?(parent) - exc_path = RECORD_INDEX_EXCEPTIONS_FILE - deps = [exc_path]+Dir[File.join(rec_dir,'*.md')] - if !FileUtils.uptodate?(outpath, deps) - CreateRecordIndex[rec_dir, outpath, exc_path] - end - end - ], - NormalizeMarkdown[ - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "normalize"), this_dir - ) - ], - XLinkMarkdownAdv[ - "record-index-path" => record_index_file, - "levels" => levels, - "nolinklevel" => 1, - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "xlink"), this_dir - ), - "log" => STDOUT, - "disable?" => disable_xlink - ], - AdjustMarkdownLevels[ - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "adjusted-headers"), this_dir - ), - "levels" => levels - ], - Probes::BuildProbesAndCopyIntoManifest.new( - "disable?" => disable_probes, - "probes-build-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "probes"), this_dir - ), - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "all-with-probes"), this_dir - ), - "insert-after-file" => "output-reports.md", - "path-to-probes-input" => File.expand_path( - File.join("config", "reference", "probes_input.yaml"), this_dir - ), - "probes-in-one-file?" => false, - ), - PassThroughWithSideEffect[ - "function" => GenerateSectionIndex[ - "source-paths"=> File.expand_path( - # File.join(build_dir, tag, md_dir, "preprocessed", "**", "*.md"), this_dir - File.join(build_dir, tag, md_dir, "all-with-probes", "**", "*.md"), this_dir - ), - "output-path" => section_index, - "merge-values" => {"#probe-definitions"=>"probes.html"} - ] - ], - AddFiles[ - "paths" => [File.expand_path( - File.join("config", "template", "template.tex"), this_dir - )], - "append-to-manifest?" => false, - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "all-ready-to-build"), this_dir - ) - ], - AddFiles[ - "paths" => Dir[ - File.expand_path(File.join("src", "media", "*"), this_dir) - ], - "append-to-manifest?" => false, - "output-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "all-ready-to-build", "media"), this_dir - ) - ], - JoinManifestToString, - RunPandoc[ - "options" => [ - "--parse-raw", - "--standalone", - "--wrap=none", - '--variable geometry="margin=1in"', - '--variable urlcolor=cyan', - "--variable current_year=#{DateTime.now.year}", - #"--variable monofont='Courier New'", - #"--variable monofont='Inconsolatazi4-Regular.otf'", - "--latex-engine=xelatex", - disable_toc ? "" : "--table-of-contents", - disable_toc ? "" : "--toc-depth=#{TOC_DEPTH}", - "--number-sections", - "--smart", - "--template=template.tex", - #"--listings", - "--from markdown", - "--variable header=\"#{HEADER}\"", - "--variable footer=\"#{FOOTER}\"", - title ? "--variable title=\"#{title}\"" : "", - subtitle ? "--variable subtitle=\"#{subtitle}\"" : "", - date ? "--variable date=\"#{date}\"" : "", - draft ? "--variable draft=true" : "", - ].join(' '), - "output-path" => File.expand_path( - File.join(out_dir, out_file), this_dir - ), - "working-dir" => File.expand_path( - File.join(build_dir, tag, md_dir, "all-ready-to-build"), this_dir - ), - ], - ]] -end - -######################################## -# Tasks -######################################## -def time_it(&block) - start_time = Time.now - block.call - puts("Elapsed time: #{Time.now - start_time} seconds") -end - -desc "Setup gh-pages and node if used" -task :setup do - SetupGHPages[] if USE_GHPAGES - InstallNodeDeps[] if USE_NODE -end - -desc "Build single-page HTML" -task :build_html_single => [:setup] do - time_it do - puts("#"*60) - puts("Build Single-Page HTML") - tag = "cse-user-manual-single-page" - processed_manifest_path = File.join(BUILD_DIR, tag, 'md', 'preprocessed') - context = PREPROCESSOR_CONTEXT.merge({'build_type'=>'build_html_single'}) - PreprocessManifest[ - 'output-dir' => processed_manifest_path, - 'context' => context - ][[CSE_USER_MANUAL_MANIFEST_PATH]] - doc = YAML.load_file( - File.join( - processed_manifest_path, - File.basename(CSE_USER_MANUAL_MANIFEST_PATH) - ) - ) - manifest = doc["sections"] - levels = manifest.map {|level, _| level} - files = manifest.map {|_, path| path} - BuildSinglePageHTML[ - "tag" => tag, - "levels" => levels, - "draft?" => DRAFT, - "date" => DATE, - "output-dir" => OUTPUT_DIR, - "output-file-name" => "cse-user-manual.html", - "do-navigation?" => true, - "disable-compression?" => !USE_NODE, - "context" => context, - ][files] - puts("\nSingle-Page HTML DONE!") - puts("^"*60) - CheckManifests[processed_manifest_path] if VERIFY_MANIFEST - end -end - -desc "Build multi-page html" -task :build_html_multi => [:setup] do - time_it do - puts("#"*60) - puts("Build Multi-Page HTML") - tag = "cse-user-manual-multi-page" - processed_manifest_path = File.join(BUILD_DIR, tag, 'md', 'preprocessed') - context = PREPROCESSOR_CONTEXT.merge({'build_type'=>'build_html_multi'}) - PreprocessManifest[ - 'output-dir' => processed_manifest_path, - 'context' => context - ][[CSE_USER_MANUAL_MANIFEST_PATH]] - doc = YAML.load_file( - File.join( - processed_manifest_path, - File.basename(CSE_USER_MANUAL_MANIFEST_PATH) - ) - ) - manifest = doc["sections"] - levels = manifest.map {|level, _| level} - files = manifest.map {|_, path| path} - BuildMultiPageHTML[ - "tag" => tag, - "levels" => levels, - "draft?" => DRAFT, - "date" => DATE, - "output-dir" => File.join(OUTPUT_DIR, "cse-user-manual"), - "do-navigation?" => true, - "disable-compression?" => !USE_NODE, - "context" => context, - ][files] - puts("\nMulti-Page HTML DONE!") - puts("^"*60) - CheckManifests[processed_manifest_path] if VERIFY_MANIFEST - end -end - -desc "Build PDF" -task :build_pdf => [:setup] do - time_it do - puts("#"*60) - puts("Building PDF...(note: can take up to several minutes)") - tag = "cse-user-manual-pdf" - processed_manifest_path = File.join(BUILD_DIR, tag, 'md', 'preprocessed') - context = PREPROCESSOR_CONTEXT.merge({'build_type'=>'build_pdf'}) - PreprocessManifest[ - 'output-dir' => processed_manifest_path, - 'context' => context - ][[CSE_USER_MANUAL_MANIFEST_PATH]] - doc = YAML.load_file( - File.join( - processed_manifest_path, - File.basename(CSE_USER_MANUAL_MANIFEST_PATH) - ) - ) - manifest = doc["sections"] - levels = manifest.map {|level, _| level} - files = manifest.map {|_, path| path} - BuildPDF[ - "tag" => tag, - "levels" => levels, - "draft?" => DRAFT, - "output-dir" => File.join(OUTPUT_DIR, "pdfs"), - "output-file-name" => "cse-user-manual.pdf", - ][files] - puts("\nPDF DONE!") - puts("^"*60) - CheckManifests[processed_manifest_path] if VERIFY_MANIFEST - end -end - -desc "Build Site" -task :build_site => [:setup] do - time_it do - puts("#"*60) - puts("Build Site HTML") - tag = "web-site" - processed_manifest_path = File.join(BUILD_DIR, tag, 'md', 'preprocessed') - context = PREPROCESSOR_CONTEXT.merge({'build_type'=>'build_site'}) - PreprocessManifest[ - 'output-dir' => processed_manifest_path, - 'context' => context - ][[WEB_SITE_MANIFEST_PATH]] - doc = YAML.load_file( - File.join( - processed_manifest_path, - File.basename(WEB_SITE_MANIFEST_PATH) - ) - ) - manifest = doc["sections"] - levels = manifest.map {|level, _| level} - files = manifest.map {|_, path| path} - BuildMultiPageHTML[ - "tag" => tag, - "levels" => levels, - "date" => nil, - "draft?" => DRAFT, - "subtitle" => nil, - "title" => "California Simulation Engine", - "do-navigation?" => false, - "output-dir" => OUTPUT_DIR, - "disable-toc?" => true, - "disable-xlink?" => true, - "disable-compression?" => !USE_NODE, - "context" => context, - ][files] - puts("\nSite HTML DONE!") - puts("^"*60) - CheckManifests[processed_manifest_path] if VERIFY_MANIFEST - end -end - -all_builds = [:probes, :build_html_single, :build_html_multi, :build_site] -all_builds << :build_pdf if BUILD_PDF -all_builds << :verify_links if VERIFY_LINKS -all_builds << :coverage if RUN_COVERAGE -all_builds << :clean if DELETE_BUILD_DIR - -desc "Build everything" -task :build_all => all_builds - -desc "Check links for issues" -task :verify_links do - puts("Checking links") - problems = VerifyLinks::CheckLinks[OUTPUT_DIR] - problems.each do |p| - puts(" - #{p}") - end -end - -desc "Build everything (alias for build_all)" -task :build => [:build_all] - -desc "Removes the entire build directory. Note: you will loose build cache!" -task :clean_all do - Clean[BUILD_DIR] -end - -desc "Alias for clean_all" -task :clean do - Clean[BUILD_DIR] -end - -desc "Alias for clean_all" -task :reset do - Clean[BUILD_DIR] -end - -desc "Check manifests for missing/misspelled files" -task :check_manifests do - CheckManifests[SRC_DIR] -end - -desc "Render file specified with FILE env variable to #{ERB_OUTPUT_FILE}" -task :erb do - if ENV.include? "FILE" - Template::PreprocFile[ERB_BINDING_FN][ - ENV["FILE"], - ERB_OUTPUT_FILE, - 1, - "context" => PREPROCESSOR_CONTEXT - ] - else - puts("You must define the environment variable `FILE` so we\n" + - "know which file to test preprocessing with") - exit(1) - end -end - -desc "Run documentation coverage checker" -task :coverage do - all_passed = true - time_it do - puts("#"*60) - puts("Check CSE User Manual's Documentation Coverage") - CSE::CullList[] # Run CSE to produce input list (cullist.txt) - tag = "cse-user-manual-coverage" - processed_manifest_path = File.join(BUILD_DIR, tag, 'md', 'preprocessed') - context = PREPROCESSOR_CONTEXT.merge({'build_type'=>'build_html_single'}) - PreprocessManifest[ - 'output-dir' => processed_manifest_path, - 'context' => context - ][[CSE_USER_MANUAL_MANIFEST_PATH]] - doc = YAML.load_file( - File.join( - processed_manifest_path, - File.basename(CSE_USER_MANUAL_MANIFEST_PATH) - ) - ) - default_ignores = { - "records" => [], # ["record-name", ...], - "data-fields" => { - # "record-name" => ["field-name", ...], - }, - } - ignores = doc.fetch("ignore-coverage", default_ignores) - manifest = doc["sections"] - files = manifest.map {|_, path| path} - CheckCoverage[ - "tag" => tag, - "context" => context, - ][files] - ris1 = CoverageCheck::ReadCulList[ - File.join('config','reference','cullist.txt') - ] - files = Dir[File.join(BUILD_DIR, tag, 'md', 'preprocessed', 'records', '*.md')].map do |path| - File.join(BUILD_DIR, tag, 'md', 'normalize', File.basename(path)) - end - ris2 = CoverageCheck::ReadAllRecordDocuments[files] - ris3 = CoverageCheck::DropNameFieldsIfNotInRef[CoverageCheck::AdjustMap[ris2], ris1] - records_to_ignore = Set.new(ignores.fetch("records", [])) - records_to_ignore.sort.reduce(true) do |print_header, r| - puts("\nIgnoring the following records (and any subsequent field discrepancies):") if print_header - puts("- #{r}") - false - end - data_fields_to_ignore = lambda do - dfs = ignores.fetch("data-fields", {}) - ks = dfs.keys - ks.each do |k| - dfs[k] = Set.new(dfs[k]) - end - dfs - end.call - data_fields_to_ignore.keys.sort.reduce(true) do |print_header, r| - puts("\nIgnoring the following fields:") if print_header - data_fields_to_ignore[r].sort.each {|f| puts("- #{r}:#{f}")} - false - end - diffs = CoverageCheck::RecordInputSetDifferences[ - ris1, ris3, false, - records_to_ignore, - data_fields_to_ignore - ] - all_passed = diffs.nil? - diff_report = CoverageCheck::RecordInputSetDifferencesToString[ - diffs, "CSE", "Documentation" - ] - puts("\n\n"+diff_report) - File.write("documentation-coverage-report.txt", diff_report) - if all_passed - puts("\nCoverage Check: PASSED") - else - puts("\nCoverage Check: FAILED") - end - puts("^"*60) - exit(1) unless all_passed - end -end - -desc "Generate probes yaml input" -task :probes do - BuildProbesYaml[] -end - -Rake::TestTask.new(:test) do |t| - t.libs << "test" - t.libs << "lib" - t.test_files = FileList['test/**/*_test.rb'] -end - -desc "start an irb console in the rakefile context" -task :irb do - binding.irb -end - -def set_local_config(key, value) - new_config = if File.exist?(CONFIG_FILE) then YAML.load_file(CONFIG_FILE) else {} end - new_config[key] = value - File.open(CONFIG_FILE, 'w') {|f| YAML.dump(new_config, f)} -end - -desc "Set coverage report off by default by writing to local config file" -task :set_coverage_off_by_default do - set_local_config("coverage?", false) - puts("Local config updated to not run coverage by default; Path: #{CONFIG_FILE}") -end - -desc "Set coverage report on by default by writing to local config file" -task :set_coverage_on_by_default do - set_local_config("coverage?", true) - puts("Local config updated to run coverage by default; Path: #{CONFIG_FILE}") -end - -task :default => [:build_all] diff --git a/doc/src/about-cse.md b/doc/src/about-cse.md deleted file mode 100644 index ee49bd0e0..000000000 --- a/doc/src/about-cse.md +++ /dev/null @@ -1,7 +0,0 @@ -# About CSE - -## About CSE - -### About CSE - -To be written diff --git a/doc/src/cse-user-manual.yaml b/doc/src/cse-user-manual.yaml deleted file mode 100644 index 030243d73..000000000 --- a/doc/src/cse-user-manual.yaml +++ /dev/null @@ -1,113 +0,0 @@ -description: "CSE User's Manual" -tag: "cse-user-manual" -metadata: - title: "CSE User's Manual" - subtitle: "California Simulation Engine" - date: "February 23, 2016" -url-multipage: "cse-user-manual" -url-singlepage: ~ -url-pdf: "pdfs" -media-dir: "media" -cross-link?: true -build-singlepage-html?: true -html-singlepage-name: "cse-user-manual.html" -pdf-name: "cse-user-manual.pdf" -build-multipage-html?: true -build-pdf?: true -html-template: "../config/template/site-template.html" -pdf-template: "../config/template/template.tex" -pdf-exceptions: ["index.md"] -build-table-of-contents?: true -toc-depth: 3 -table-of-contents-name: "index.md" -build-probes?: true -sp-append-probes-to: 'output-reports.md' -mp-append-probes-to: 'output-reports.md' -html-navigation?: true -html-site-top: "/index.html" -html-site-toc: "/cse-user-manual/index.html" -css-files: - - "/css/base.css" -ignore-coverage: - records: - - "inverse" - data-fields: - coolplant: - - "cpStage2" - - "cpStage3" - - "cpStage4" - - "cpStage5" - - "cpStage6" - - "cpStage7" - - "cpstage2 through cpstage7 same" - heatplant: - - "hpStage2" - - "hpStage3" - - "hpStage4" - - "hpStage5" - - "hpStage6" - - "hpStage7" - - "hpstage2 through hpstage7 same" -sections: - - [1, "introduction.md"] - - [1, "operation.md"] - - [1, "input-structure.md"] - - [1, "input-data.md"] - - [2, "records/top-members.md"] - - [2, "records/holiday.md"] - - [2, "records/descond.md"] - - [2, "records/material.md"] - - [2, "records/construction.md"] - - [2, "records/foundation.md"] - - [2, "records/fndblock.md"] - - [2, "records/layer.md"] - - [2, "records/glazetype.md"] - - [2, "records/meter.md"] - - [2, "records/dhwmeter.md"] - - [2, "records/afmeter.md"] - - [2, "records/loadmeter.md"] - - [2, "records/zone.md"] - - [2, "records/gain.md"] - - [2, "records/surface.md"] - - [2, "records/window.md"] - - [2, "records/shade.md"] - - [2, "records/sgdist.md"] - - [2, "records/door.md"] - - [2, "records/perimeter.md"] - - [2, "records/terminal.md"] - - [2, "records/izxfer.md"] - - [2, "records/doas.md"] - - [2, "records/rsys.md"] - - [2, "records/ductseg.md"] - - [2, "records/performancemap.md"] - - [2, "records/dhwdayuse.md"] - - [2, "records/dhwuse.md"] - - [2, "records/dhwsys.md"] - - [2, "records/dhwheater.md"] - - [2, "records/dhwloopheater.md"] - - [2, "records/dhwheatrec.md"] - - [2, "records/dhwtank.md"] - - [2, "records/dhwpump.md"] - - [2, "records/dhwloop.md"] - - [2, "records/dhwlooppump.md"] - - [2, "records/dhwloopseg.md"] - - [2, "records/dhwloopbranch.md"] - - [2, "records/dhwsolarsys.md"] - - [2, "records/dhwsolarcollector.md"] - - [2, "records/pvarray.md"] - - [2, "records/shadex.md"] - - [2, "records/battery.md"] - - [2, "records/airhandler.md"] - - [2, "records/heatplant.md"] - - [2, "records/boiler.md"] - - [2, "records/coolplant.md"] - - [2, "records/chiller.md"] - - [2, "records/towerplant.md"] - - [2, "records/reportfile.md"] - - [2, "records/report.md"] - - [2, "records/reportcol.md"] - - [2, "records/exportfile.md"] - - [2, "records/export.md"] - - [2, "records/exportcol.md"] - - [2, "records/importfile.md"] - - [1, "output-reports.md"] diff --git a/doc/src/media/fd_block.png b/doc/src/docs/assets/images/fd_block.png similarity index 100% rename from doc/src/media/fd_block.png rename to doc/src/docs/assets/images/fd_block.png diff --git a/doc/src/media/fd_context.png b/doc/src/docs/assets/images/fd_context.png similarity index 100% rename from doc/src/media/fd_context.png rename to doc/src/docs/assets/images/fd_context.png diff --git a/doc/src/media/fd_dims.png b/doc/src/docs/assets/images/fd_dims.png similarity index 100% rename from doc/src/media/fd_dims.png rename to doc/src/docs/assets/images/fd_dims.png diff --git a/doc/src/media/fd_refs.png b/doc/src/docs/assets/images/fd_refs.png similarity index 100% rename from doc/src/media/fd_refs.png rename to doc/src/docs/assets/images/fd_refs.png diff --git a/doc/src/media/image1.png b/doc/src/docs/assets/images/image1.png similarity index 100% rename from doc/src/media/image1.png rename to doc/src/docs/assets/images/image1.png diff --git a/doc/src/media/pv_fixed.png b/doc/src/docs/assets/images/pv_fixed.png similarity index 100% rename from doc/src/media/pv_fixed.png rename to doc/src/docs/assets/images/pv_fixed.png diff --git a/doc/src/media/pv_horiz_tracker_east.png b/doc/src/docs/assets/images/pv_horiz_tracker_east.png similarity index 100% rename from doc/src/media/pv_horiz_tracker_east.png rename to doc/src/docs/assets/images/pv_horiz_tracker_east.png diff --git a/doc/src/media/pv_horiz_tracker_south.png b/doc/src/docs/assets/images/pv_horiz_tracker_south.png similarity index 100% rename from doc/src/media/pv_horiz_tracker_south.png rename to doc/src/docs/assets/images/pv_horiz_tracker_south.png diff --git a/doc/src/media/pv_tilted_tracker_south.png b/doc/src/docs/assets/images/pv_tilted_tracker_south.png similarity index 100% rename from doc/src/media/pv_tilted_tracker_south.png rename to doc/src/docs/assets/images/pv_tilted_tracker_south.png diff --git a/doc/src/docs/assets/javascript/extra_js.js b/doc/src/docs/assets/javascript/extra_js.js new file mode 100644 index 000000000..4014300f8 --- /dev/null +++ b/doc/src/docs/assets/javascript/extra_js.js @@ -0,0 +1,6 @@ +document$.subscribe(function () { + var tables = document.querySelectorAll("article table:not([class])"); + tables.forEach(function (table) { + new Tablesort(table); + }); +}); diff --git a/doc/src/docs/assets/stylesheets/extra_styles.css b/doc/src/docs/assets/stylesheets/extra_styles.css new file mode 100644 index 000000000..93062dcaf --- /dev/null +++ b/doc/src/docs/assets/stylesheets/extra_styles.css @@ -0,0 +1,5 @@ +@media screen and (min-width: 76.25em) { + .md-nav { + transition: unset !important; + } +} diff --git a/doc/src/docs/assets/tables/input-data--member-table-definition.csv b/doc/src/docs/assets/tables/input-data--member-table-definition.csv new file mode 100644 index 000000000..6dba27444 --- /dev/null +++ b/doc/src/docs/assets/tables/input-data--member-table-definition.csv @@ -0,0 +1,6 @@ +"Header", Meaning +"Units","units of measure (lb., ft, Btu, etc.) where applicable" +"Legal Range","limits of valid range for numeric inputs; valid choices for *choice* members, etc." +"Default","value assumed if member not given; applicable only if not required" +"Required","YES if you must give this member" +"Variability","how often the given expression can change: hourly, daily, etc. See sections on [expressions](#expressions-overview), [statements](#member-statements), and [variation frequencies](#variation-frequencies-revisited)" diff --git a/doc/src/docs/assets/tables/input-data--member-table.csv b/doc/src/docs/assets/tables/input-data--member-table.csv new file mode 100644 index 000000000..4c7038865 --- /dev/null +++ b/doc/src/docs/assets/tables/input-data--member-table.csv @@ -0,0 +1,2 @@ +units,legal_range,default,required,variability +"ft^2^","x > 0","wnHeight \\\* wnWidth","No","constant" \ No newline at end of file diff --git a/doc/src/docs/enduses.md b/doc/src/docs/enduses.md new file mode 100644 index 000000000..a449d124f --- /dev/null +++ b/doc/src/docs/enduses.md @@ -0,0 +1,26 @@ +--- +Clg Cooling +Htg Heating (includes heat pump compressor) +HPBU Heat pump resistance heating (backup and defrost) +DHW Domestic (service) hot water +DHWBU Domestic (service) hot water heating backup (HPWH resistance) +DHWMFL Domestic (service) hot water heating multi-family loop pumping and loss makeup +FANC Fans, AC and cooling ventilation +FANH Fans, heating +FANV Fans, IAQ venting +FAN Fans, other purposes +AUX HVAC auxiliaries such as pumps +PROC Process +LIT Lighting +RCP Receptacles +EXT Exterior lighting +REFR Refrigeration +DISH Dishwashing +DRY Clothes drying +WASH Clothes washing +COOK Cooking +USER1 User-defined category 1 +USER2 User-defined category 2 +BT Battery charge power +PV Photovoltaic power generation +--- diff --git a/doc/src/index.md b/doc/src/docs/index.md similarity index 72% rename from doc/src/index.md rename to doc/src/docs/index.md index 5e84df04f..90f3fa146 100644 --- a/doc/src/index.md +++ b/doc/src/docs/index.md @@ -16,6 +16,19 @@ CSE is a general purpose building simulation model developed primarily to perfor The CSE source code is hosted on [GitHub](https://github.com/cse-sim/cse). +```javascript +const myVar = () => {}; +``` + <% if test_erb %> ERB is Working! <% end %> + +{% for year in ['2018', '2017'] %} + +

{{ year }}

+ {% for page in pages|sort(attribute='url', reverse=True) %} + {{ page.title }} +
+ {% endfor %} +{% endfor %} diff --git a/doc/src/records/afmeter.md b/doc/src/docs/input-data/afmeter.md similarity index 100% rename from doc/src/records/afmeter.md rename to doc/src/docs/input-data/afmeter.md diff --git a/doc/src/records/airhandler.md b/doc/src/docs/input-data/airhandler.md similarity index 51% rename from doc/src/records/airhandler.md rename to doc/src/docs/input-data/airhandler.md index 3d220b744..d0651efc0 100644 --- a/doc/src/records/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -2,531 +2,529 @@ AIRHANDLER defines a central air handling system, containing a fan or fans, optional heating and cooling coils, and optional outside air intake and exhaust. AIRHANDLERs are subobjects of TOP, and deliver air to one or more ZONEs through TERMINAL(s). AIRHANDLER objects can be used to model fan ventilation and forced air heating and cooling. Dual duct systems are modeled with two AIRHANDLERs (one for hot air and one for cool air) and two TERMINALs in each zone. Figure 2 shows…. \[need a sentence that explains the figure.\] -![Insert Figure Title](media/image1.png) +![Insert Figure Title](../assets/images/image1.png) AIRHANDLER is designed primarily to model a central system that supplies hot or cold air at a centrally determined temperature (the "Supply Temperature Setpoint") to Variable Air Volume (VAV) terminals in the zones. Some additional variations are also supported: -1. The AIRHANDLER can model a constant volume, fan-always-on system, where the supply temperature varies to meet the load of a single zone (that is, the thermostat controls the heating and/or cooling coil, but not the fan). This is done by setting the terminal minimum flow, *tuVfMn,* equal to the maximum flow, *tuVfMxH* for heating and/or *tuVfMxC* for cooling, and using a supply temperature control method that adjusts the temperature to the load (*ahTsSp* = WZ, CZ, or ZN2, described below). +1. The AIRHANDLER can model a constant volume, fan-always-on system, where the supply temperature varies to meet the load of a single zone (that is, the thermostat controls the heating and/or cooling coil, but not the fan). This is done by setting the terminal minimum flow, _tuVfMn,_ equal to the maximum flow, _tuVfMxH_ for heating and/or _tuVfMxC_ for cooling, and using a supply temperature control method that adjusts the temperature to the load (_ahTsSp_ = WZ, CZ, or ZN2, described below). 2. The AIRHANDLER can model constant volume, fan cycling systems where the fan cycles with a single zone thermostat, running at full flow enough of the time to meet the load and shutting completely off the rest of the time, rather than running at variable flow to adjust to the demand from the zones. - This variation is invoked by specifying *ahFanCycles*= YES (usually with *ahTsSp*=ZN, described below). The user should be aware that this is done by treating fractional flow as equivalent to fractional on-time in most of the program, adjusting for the higher flow and less than 100% duty cycle only in a few parts of the model known to be non-linear, such as computation of cooling coil performance, fan heat, and duct leakage. For example, the outside air inputs, designed for VAV modeling, won't work in the expected manner unless you keep this modeling method in mind. + This variation is invoked by specifying _ahFanCycles_= YES (usually with _ahTsSp_=ZN, described below). The user should be aware that this is done by treating fractional flow as equivalent to fractional on-time in most of the program, adjusting for the higher flow and less than 100% duty cycle only in a few parts of the model known to be non-linear, such as computation of cooling coil performance, fan heat, and duct leakage. For example, the outside air inputs, designed for VAV modeling, won't work in the expected manner unless you keep this modeling method in mind. -3. The AIRHANDLER can supply hot air, cold air, or shut off according to the requirements of a single zone. This variation is invoked by giving *ahTsSp* = ZN or ZN2, both described further below. +3. The AIRHANDLER can supply hot air, cold air, or shut off according to the requirements of a single zone. This variation is invoked by giving _ahTsSp_ = ZN or ZN2, both described further below. **ahName** Name of air handler: give after the word AIRHANDLER. Required for reference in TERMINALs. +<%= member*table( +units: "", +legal_range: "\_63 characters*", +default: "", +required: "Yes", +variability: "constant") +%> -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "", - required: "Yes", - variability: "constant") - %> - -**ahSched=*choice*** +**ahSched=_choice_** Air handler schedule; OFF or ON, hourly schedulable by using CSE expression. -<%= csv_table(< false) - OFF, supply fan off; air handler not operating. Old date? Note: (future) Taylor setback/setup control in effect, when implemented. - ON, supply fan runs, at varying volume according to TERMINAL demand (except if *ahFanCycles* = YES, fan cycles on and off at full volume). +<%= csv*table(< false) +OFF, supply fan off; air handler not operating. Old date? Note: (future) Taylor setback/setup control in effect, when implemented. +ON, supply fan runs, at varying volume according to TERMINAL demand (except if \_ahFanCycles* = YES, fan cycles on and off at full volume). END %> - The following might be used to run an air handler between 8 AM and 5 PM: ahSched = select( (\$hour > 8 && \$hour <= 5), ON, default, OFF ); - <%= member_table( - units: "", - legal_range: "ON/OFF", - default: "ON", - required: "No", - variability: "hourly") - %> +units: "", +legal_range: "ON/OFF", +default: "ON", +required: "No", +variability: "hourly") +%> -**ahFxVfFan=*float*** +**ahFxVfFan=_float_** -Fan flow rate multiplier for autosized fan(s). The default value (1.1) specifies 10% oversizing. +Fan flow rate multiplier for autosized fan(s). The default value (1.1) specifies 10% oversizing. <%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "1.1", - required: "No", - variability: "constant") %> +units: "", +legal_range: "x $\\ge$ 0", +default: "1.1", +required: "No", +variability: "constant") %> ## AIRHANDLER Supply Air Temperature Controller -**ahTsSp=*float or choice*** +**ahTsSp=_float or choice_** Supply temperature setpoint numeric value OR\* choice of control method (WZ, CZ, RA, ZN, or ZN2): -<%= csv_table(< false) - *float*, A numeric value specifies the supply temperature setpoint. An expression can be used to make dependent on time, weather, etc. - WZ, Warmest Zone: for cooling, sets the supply temperature setpoint each sub??hour so that the control zone (see*ahWzCzns*) requiring the coolest supply temperature can meet its load with its VAV damper 90% of the way from its minimum opening to its maximum, that is, at a flow of: *tuVfMn* + .9(*tuVfMxC* - \* tuVfMn\*). - CZ, Coolest Zone: analogous to WZ, but for heating - RA, Supply temperature setpoint value is controlled by return air temperature (this cannot be done with a CSE expression without lagging a subhour). See *ahTsRaMn* and *ahTsRaMx*. - ZN, Causes air handler to switch between heating, OFF, and cooling as required by the load of a single zone. When the zone thermostat (modeled through the *tuTC* and *tuTH* inputs) calls for neither heating nor cooling, the air handler shuts down, including stopping its fan(s). Changes *ahFanCycles* default to YES, to simulate a constant volume, fan cycling system. - , Supply temperature setpoint value when *ahFanCycles* = YES is taken from *ahTsMn* for cooling, from *ahTsMx* for heating (actual temperatures expected to be limited by coil capacity since fan is running at full flow). When *ahFanCycles* = NO, the setpoint is determined to allow meeting the load, as for WZ and CZ. - , When the zone is calling for neither heat nor cold, the air handler shuts down, including stopping its fan(s), regardless of the *ahFanCycles* value. - ZN2, Causes air handler to switch between heating, cooling, and FAN ONLY operation as required by the load of a single zone. To model a constant volume system where the fan runs continuously, use ZN2 and set the terminal minimum flow (*tuVfMn*) equal to the maximum (*tuVfMxC* and/or *tuVfMxH*). - , When *ahTsSp* is ZN2, the supply temperature setpoint is determined to allow meeting the load, as for WZ and CZ, described above. +<%= csv*table(< false) +\_float*, A numeric value specifies the supply temperature setpoint. An expression can be used to make dependent on time, weather, etc. +WZ, Warmest Zone: for cooling, sets the supply temperature setpoint each sub??hour so that the control zone (see*ahWzCzns*) requiring the coolest supply temperature can meet its load with its VAV damper 90% of the way from its minimum opening to its maximum, that is, at a flow of: _tuVfMn_ + .9(_tuVfMxC_ - \* tuVfMn\*). +CZ, Coolest Zone: analogous to WZ, but for heating +RA, Supply temperature setpoint value is controlled by return air temperature (this cannot be done with a CSE expression without lagging a subhour). See _ahTsRaMn_ and _ahTsRaMx_. +ZN, Causes air handler to switch between heating, OFF, and cooling as required by the load of a single zone. When the zone thermostat (modeled through the _tuTC_ and _tuTH_ inputs) calls for neither heating nor cooling, the air handler shuts down, including stopping its fan(s). Changes _ahFanCycles_ default to YES, to simulate a constant volume, fan cycling system. +, Supply temperature setpoint value when _ahFanCycles_ = YES is taken from _ahTsMn_ for cooling, from _ahTsMx_ for heating (actual temperatures expected to be limited by coil capacity since fan is running at full flow). When _ahFanCycles_ = NO, the setpoint is determined to allow meeting the load, as for WZ and CZ. +, When the zone is calling for neither heat nor cold, the air handler shuts down, including stopping its fan(s), regardless of the _ahFanCycles_ value. +ZN2, Causes air handler to switch between heating, cooling, and FAN ONLY operation as required by the load of a single zone. To model a constant volume system where the fan runs continuously, use ZN2 and set the terminal minimum flow (_tuVfMn_) equal to the maximum (_tuVfMxC_ and/or _tuVfMxH_). +, When _ahTsSp_ is ZN2, the supply temperature setpoint is determined to allow meeting the load, as for WZ and CZ, described above. END %> -Only when *ahTsSp* is ZN or ZN2 does AIRHANDLER switches between heating and cooling supply temperatures according to demand. In other cases, there is but a single setpoint value or control method (RA, CZ, or WZ); if you want the control method or numeric value to change according to time of day or year, outside temperature, etc., your CSE input must contain an appropriate conditional expression for *ahTsSp*. +Only when _ahTsSp_ is ZN or ZN2 does AIRHANDLER switches between heating and cooling supply temperatures according to demand. In other cases, there is but a single setpoint value or control method (RA, CZ, or WZ); if you want the control method or numeric value to change according to time of day or year, outside temperature, etc., your CSE input must contain an appropriate conditional expression for _ahTsSp_. -Unless *ahTsSp* is ZN or ZN2, the AIRHANDLER does not know whether it is heating or cooling, and will use either the heating coil or cooling coil, if available, as necessary, to keep the supply air at the single setpoint temperature. The coil schedule members, described below, allow you to disable present coils when you don't want them to operate, as to prevent cooling supply air that is already warm enough when heating the zones. For example, in an AIRHANDLER with both heating and cooling coils, if you are using a conditional expression based on outdoor temperature to change *ahTsSp* between heating and cooling values, you may use expressions with similar conditions for *ahhcSched* and *ahccSched* to disable the cooling coil when heating and vice versa. (Expressions would also be used in the TERMINALS to activate their heating or cooling setpoints according to the same conditions.) +Unless _ahTsSp_ is ZN or ZN2, the AIRHANDLER does not know whether it is heating or cooling, and will use either the heating coil or cooling coil, if available, as necessary, to keep the supply air at the single setpoint temperature. The coil schedule members, described below, allow you to disable present coils when you don't want them to operate, as to prevent cooling supply air that is already warm enough when heating the zones. For example, in an AIRHANDLER with both heating and cooling coils, if you are using a conditional expression based on outdoor temperature to change _ahTsSp_ between heating and cooling values, you may use expressions with similar conditions for _ahhcSched_ and _ahccSched_ to disable the cooling coil when heating and vice versa. (Expressions would also be used in the TERMINALS to activate their heating or cooling setpoints according to the same conditions.) -Giving *ahTsSp* is disallowed for an air handler with no economizer, no heat coil and no cooling coil. Such an AIRHANDLER object is valid as a ventilator; its supply temperature is not controlled. but rather determined by the outside temperature and/or the return air temperature. +Giving _ahTsSp_ is disallowed for an air handler with no economizer, no heat coil and no cooling coil. Such an AIRHANDLER object is valid as a ventilator; its supply temperature is not controlled. but rather determined by the outside temperature and/or the return air temperature. +<%= member*table( +units: "^o^F", +legal_range: "\_number*, RA\*, WZ, CZ, ZN\*\*, ZN2\*\*,", +default: "0", +required: "Yes, if coil(s) or economizer present", +variability: "hourly") +%> -<%= member_table( - units: "^o^F", - legal_range: "*number*, RA\*, WZ, CZ, ZN\*\*, ZN2\*\*,", - default: "0", - required: "Yes, if coil(s) or economizer present", - variability: "hourly") - %> - -\* ahTsRaMn, ahTsRaMx, ahTsMn, and ahTsMx are *required* input for this choice. +\* ahTsRaMn, ahTsRaMx, ahTsMn, and ahTsMx are _required_ input for this choice. \*\* only a single ZONE may be used with these choices. -<%= csv_table(< true) -**To Model**, **Use**, **Comments** -VAV heating *OR* cooling system, *ahTsSp* = *numeric expression, * WZ, CZ, or RA, CSE models this most directly -VAV system that both heats and cools (single duct), Use a conditional expression to change *ahTsSp* between heating and cooling values on the basis of outdoor temperature, date, or some other condition., Also use expressions to disable the unwanted coil and change each zone's setpoints according to same as *ahTsSp*. For example, when heating, use *ahccSched* = OFF and *tuTC *= 999; and when cooling, use *ahhcSched* = OFF and *tuTH* = -99. -Dual duct heating cooling system, Use two AIRHANDLERs -Single zone VAV system that heats or cools per zone thermostat, *ahTsSp* = ZN2, Supply fan runs, at flow *tuVfMn*, even when neither heating nor cooling. Supply temp setpoint determined as for CZ or WZ. -Single zone constant volume system that heats or cools per zone thermostat, e.g. PSZ., *ahTsSp* = *ZN2*; *tuVfMn* = *tuVfMxH* = *tuVfMxC*, Supply fan circulates air even if neither heating nor cooling. Supply temp setpoint determined as for CZ or WZ. All *tuVf*'s same forces constant volume. -Single zone constant volume, fan cycling system that heats or cools per zone thermostat, e.g. PTAC, RESYS, or furnace., *ahTsSp*= ZN; *ahTsMx* = heat supply temp setpoint; *ahTsMn* = cool supply temp setpoint; *tuVfMn*= 0; tuVfMxH = tuVfMxC normally; *sfanVfDs* >= max( *tuVfMxH, tuVfMxC)* to minimize confusion about flow modeled., *AhFanCycles* defaults to YES. Supply fan off when not heating or cooling. Flow when fan on is *tuVfMxH* or *tuVfMxC* as applicable (or *sfanVfDs \* sfanVfMxF* if smaller). +<%= csv*table(< true) +**To Model**, **Use**, **Comments** +VAV heating \_OR* cooling system, _ahTsSp_ = _numeric expression, _ WZ, CZ, or RA, CSE models this most directly +VAV system that both heats and cools (single duct), Use a conditional expression to change _ahTsSp_ between heating and cooling values on the basis of outdoor temperature, date, or some other condition., Also use expressions to disable the unwanted coil and change each zone's setpoints according to same as _ahTsSp_. For example, when heating, use _ahccSched_ = OFF and _tuTC _= 999; and when cooling, use _ahhcSched_ = OFF and _tuTH_ = -99. +Dual duct heating cooling system, Use two AIRHANDLERs +Single zone VAV system that heats or cools per zone thermostat, _ahTsSp_ = ZN2, Supply fan runs, at flow _tuVfMn_, even when neither heating nor cooling. Supply temp setpoint determined as for CZ or WZ. +Single zone constant volume system that heats or cools per zone thermostat, e.g. PSZ., _ahTsSp_ = _ZN2_; _tuVfMn_ = _tuVfMxH_ = _tuVfMxC_, Supply fan circulates air even if neither heating nor cooling. Supply temp setpoint determined as for CZ or WZ. All _tuVf_'s same forces constant volume. +Single zone constant volume, fan cycling system that heats or cools per zone thermostat, e.g. PTAC, RESYS, or furnace., _ahTsSp_= ZN; _ahTsMx_ = heat supply temp setpoint; _ahTsMn_ = cool supply temp setpoint; _tuVfMn_= 0; tuVfMxH = tuVfMxC normally; _sfanVfDs_ >= max( _tuVfMxH, tuVfMxC)_ to minimize confusion about flow modeled., _AhFanCycles_ defaults to YES. Supply fan off when not heating or cooling. Flow when fan on is _tuVfMxH_ or _tuVfMxC_ as applicable (or _sfanVfDs \* sfanVfMxF_ if smaller). END %> - : Using AIRHANDLER to Model Various Systems +: Using AIRHANDLER to Model Various Systems -**ahFanCycles=*choice*** + +**ahFanCycles=_choice_** Determines whether the fan cycles with the zone thermostat. -<%= csv_table(< false) -YES, Supply fan runs only for fraction of the subhour that the zone requests heating or cooling. When running, supply fan runs at full flow (i.e. constant volume), as determined by the more limiting of the air handler and terminal specifications. Use with a single zone only. Not allowed with *ahTsSp* = ZN2. -NO, Normal CSE behavior for simulating VAV systems with continuously running (or scheduled), variable flow supply fans. (For constant volume, fan always on modeling, use NO, and make *tuVfMn* equal to *tuVfMxH/C*.) +<%= csv*table(< false) +YES, Supply fan runs only for fraction of the subhour that the zone requests heating or cooling. When running, supply fan runs at full flow (i.e. constant volume), as determined by the more limiting of the air handler and terminal specifications. Use with a single zone only. Not allowed with \_ahTsSp* = ZN2. +NO, Normal CSE behavior for simulating VAV systems with continuously running (or scheduled), variable flow supply fans. (For constant volume, fan always on modeling, use NO, and make _tuVfMn_ equal to _tuVfMxH/C_.) END %> -<%= member_table( - units: "", - legal_range: "YES, NO", - default: "YES when *ahTsSp*=ZN, NO otherwise", - required: "No", - variability: "hourly") - %> +<%= member*table( +units: "", +legal_range: "YES, NO", +default: "YES when \_ahTsSp*=ZN, NO otherwise", +required: "No", +variability: "hourly") +%> -**ahTsMn=*float*** +**ahTsMn=_float_** -Minimum supply temperature. Also used as cooling supply temperature setpoint value under *ahTsSp* = ZN. +Minimum supply temperature. Also used as cooling supply temperature setpoint value under _ahTsSp_ = ZN. -<%= member_table( - units: "^o^F", - legal_range: "*no limit*; typically: 40 $\\le$ *x* $\\le$ 140^o^", - default: "0^o^F", - required: "Only for *ahTsSp*=RA", - variability: "hourly") - %> +<%= member*table( +units: "^o^F", +legal_range: "\_no limit*; typically: 40 $\\le$ _x_ $\\le$ 140^o^", +default: "0^o^F", +required: "Only for _ahTsSp_=RA", +variability: "hourly") +%> -<%= member_table( - units: "^o^F", - legal_range: "*no limit*; typically: 40 $\\le$ *x* $\\le$ 140^o^", - default: "999^o^ F", - required: "Only for *asTsSp*=RA; recommend giving for *ahTsSp*=ZN", - variability: "hourly") %> +<%= member*table( +units: "^o^F", +legal_range: "\_no limit*; typically: 40 $\\le$ _x_ $\\le$ 140^o^", +default: "999^o^ F", +required: "Only for _asTsSp_=RA; recommend giving for _ahTsSp_=ZN", +variability: "hourly") %> -**ahTsMx=*float*** +**ahTsMx=_float_** -Maximum supply temperature. Also used as heating supply temperature setpoint value under *ahTsSp* = ZN. +Maximum supply temperature. Also used as heating supply temperature setpoint value under _ahTsSp_ = ZN. -**ahWzCzns=*zone names* or *ALL* or *ALL\_BUT zone names*** -**ahCzCzns=*zone names* or *ALL* or *ALL\_BUT zone names*** +**ahWzCzns=_zone names_ or _ALL_ or _ALL_BUT zone names_** -Specify zones monitored to determine supply temperature setpoint value (control zones), under *ahTsSp*=WZ and CZ respectively. +**ahCzCzns=_zone names_ or _ALL_ or _ALL_BUT zone names_** -<%= csv_table(< false) -*zone names*, A list of zone names, with commas between them. Up to 15 names may be given. -ALL\_BUT, May be followed by a a comma and list of up to 14 zone names; all zones on air handler other than these are the control zones. +Specify zones monitored to determine supply temperature setpoint value (control zones), under _ahTsSp_=WZ and CZ respectively. + +<%= csv*table(< false) +\_zone names*, A list of zone names, with commas between them. Up to 15 names may be given. +ALL_BUT, May be followed by a a comma and list of up to 14 zone names; all zones on air handler other than these are the control zones. ALL, Indicates that all zones with terminals connected to the air handler are control zones. END %> -A comma must be entered between zone names and after the word ALL\_BUT. +A comma must be entered between zone names and after the word ALL_BUT. -<%= member_table( - units: "", - legal_range: "*name(s) of ZONEs* ALL ALL\_BUT *zone Name(s)*", - default: "ALL", - required: "No", - variability: "hourly") %> +<%= member*table( +units: "", +legal_range: "\_name(s) of ZONEs* ALL ALL*BUT \_zone Name(s)*", +default: "ALL", +required: "No", +variability: "hourly") %> -**ahTsDsC=*float*** +**ahTsDsC=_float_** Cooling design supply temperature, for sizing coil vs fan. -<%= member_table( - units: "^o^F", - legal_range: "x $>$ 0", - default: "*ahTsMn*", - required: "No", - variability: "hourly") %> +<%= member*table( +units: "^o^F", +legal_range: "x $>$ 0", +default: "\_ahTsMn*", +required: "No", +variability: "hourly") %> -**ahTsDsH=*float*** +**ahTsDsH=_float_** Heating design supply temperature, for sizing coil vs fan. -<%= member_table( - units: "^o^F", - legal_range: "x $>$ 0", - default: "*ahTsMx*", - required: "No", - variability: "hourly") %> +<%= member*table( +units: "^o^F", +legal_range: "x $>$ 0", +default: "\_ahTsMx*", +required: "No", +variability: "hourly") %> -**ahCtu=*terminal name*** +**ahCtu=_terminal name_** Terminal monitored to determine whether to heat or cool under ZN and ZN2 supply temperature setpoint control. Development aid feature; believe there is no need to give this since ahTsSp = ZN or ZN2 should only be used with one zone. -<%= member_table( - units: "", - legal_range: "name of a TERMINAL", - default: "AIRHANDLER's TERMINAL, if only one", - required: "If *ahTsSp* = ZN with more than 1 TERMINAL", - variability: "hourly") %> +<%= member*table( +units: "", +legal_range: "name of a TERMINAL", +default: "AIRHANDLER's TERMINAL, if only one", +required: "If \_ahTsSp* = ZN with more than 1 TERMINAL", +variability: "hourly") %> -*AhTsRaMn* and *ahTsRaMx* are used when *ahTsSp* is RA. +_AhTsRaMn_ and _ahTsRaMx_ are used when _ahTsSp_ is RA. -**ahTsRaMn=*float*** +**ahTsRaMn=_float_** -Return air temperature at which the supply temperature setpoint is at the *maximum* supply temperature, *ahTsMx*. +Return air temperature at which the supply temperature setpoint is at the _maximum_ supply temperature, _ahTsMx_. -**ahTsRaMx=*float*** +**ahTsRaMx=_float_** -Return air temperature at which the supply temperature setpoint is at the *minimum* supply temperature, *ahTsMn*. +Return air temperature at which the supply temperature setpoint is at the _minimum_ supply temperature, _ahTsMn_. -When the return air temperature is between *ahTsRaMn*and *ahTsRaMx*, the supply temperature setpoint has a proportional value between *ahTsMx* and *ahTsMn*. +When the return air temperature is between *ahTsRaMn*and _ahTsRaMx_, the supply temperature setpoint has a proportional value between _ahTsMx_ and _ahTsMn_. -If return air moves outside the range *ahTsRaMn* to *ahTsRaMx*, the supply temperature setpoint does not change further. +If return air moves outside the range _ahTsRaMn_ to _ahTsRaMx_, the supply temperature setpoint does not change further. -<%= member_table( - units: "^o^F", - legal_range: "*no limit*; typically: 40 $\\le$ *x* $\\le$ 140^o^", - default: "*none*", - required: " Only for *ahTsSp*=RA", - variability: "hourly") %> +<%= member*table( +units: "^o^F", +legal_range: "\_no limit*; typically: 40 $\\le$ _x_ $\\le$ 140^o^", +default: "_none_", +required: " Only for _ahTsSp_=RA", +variability: "hourly") %> ## AIRHANDLER Supply fan All AIRHANDLERs have supply fans. -**sfanType=*choice*** +**sfanType=_choice_** Supply fan type/position. A BLOWTHRU fan is located in the air path before the coils; a DRAWTHRU fan is after the coils. <%= member_table( - units: "", - legal_range: "DRAWTHRU, BLOWTHRU", - default: "DRAWTHRU", - required: "No", - variability: "constant") %> +units: "", +legal_range: "DRAWTHRU, BLOWTHRU", +default: "DRAWTHRU", +required: "No", +variability: "constant") %> -**sfanVfDs=*float*** +**sfanVfDs=_float_** Design or rated (volumetric) air flow at rated pressure. Many fans will actually blow a larger volume of air at reduced pressure: see sfanVfMxF (next). -<%= member_table( - units: "cfm", - legal_range: "*AUTOSIZE* or *x* $\\ge$ 0", - default: "*none*", - required: "Yes", - variability: "constant") %> +<%= member*table( +units: "cfm", +legal_range: "\_AUTOSIZE* or _x_ $\\ge$ 0", +default: "_none_", +required: "Yes", +variability: "constant") %> -**sfanVfMxF=*float*** +**sfanVfMxF=_float_** Overrun factor: maximum factor by which fan will exceed rated flow (at reduced pressure, not explicitly modeled). CSE delivers flows demanded by terminals until total flow at supply fan reaches sfanVfDs \* sfanVsMxF, then reduces maximum flows to terminals, keeping them in proportion to terminal design flows, to keep total flow at that value. We recommend giving 1.0 to eliminate overrun in constant volume modeling. -<%= member_table( - units: "", - legal_range: "*x* $\\ge$ 1.0", - default: "1.3", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_x* $\\ge$ 1.0", +default: "1.3", +required: "No", +variability: "constant") %> **sfanPress*=float*** -Design or rated pressure. The work done by the fan is computed as the product of this pressure and the current flow, except that the flow is limited to sfanVfDs. That is, in overrun (see *sfanVfMxF*) it is assumed that large VAV terminal damper openings allow the pressure to drop in proportion to the flow over rated. This work is added to the air as heat at the fan, and is termed "fan heat". Setting sfanPress to zero will eliminate simulated fan heat for theoretical simulation of a coil only. +Design or rated pressure. The work done by the fan is computed as the product of this pressure and the current flow, except that the flow is limited to sfanVfDs. That is, in overrun (see _sfanVfMxF_) it is assumed that large VAV terminal damper openings allow the pressure to drop in proportion to the flow over rated. This work is added to the air as heat at the fan, and is termed "fan heat". Setting sfanPress to zero will eliminate simulated fan heat for theoretical simulation of a coil only. -<%= member_table( - units: "inches H~2~O", - legal_range: "*x* $\\gt$ 0", - default: "3", - required: "No", - variability: "constant") %> +<%= member*table( +units: "inches H~2~O", +legal_range: "\_x* $\\gt$ 0", +default: "3", +required: "No", +variability: "constant") %> Prior text: At most, one of the next two items may be given: in combination with sfanVfDs and sfanPress, either is sufficient to compute the other. SfanCurvePy is then used to compute the mechanical power at the fan shaft at partial loads; sfanMotEff allows determining the electrical input from the shaft power. New possible text (after addition of sfanElecPwr): Only one of sfanElecPwr, sfanEff, and sfanShaftBhp may be given: together with sfanVfDs and xfanPress, any one is sufficient for CSE to determine the others and to compute the fan heat contribution to the air stream. -**sfanElecPwr=*float*** +**sfanElecPwr=_float_** Fan input power per unit air flow (at design flow and pressure). -<%= member_table( - units: "W/cfm", - legal_range: "*x* $\\gt$ 0", - default: "derived from sfanEff and sfanShaftBhp", - required: "If sfanEff and sfanShaftBhp not present", - variability: "constant") %> +<%= member*table( +units: "W/cfm", +legal_range: "\_x* $\\gt$ 0", +default: "derived from sfanEff and sfanShaftBhp", +required: "If sfanEff and sfanShaftBhp not present", +variability: "constant") %> -**sfanEff=*float*** +**sfanEff=_float_** Fan efficiency at design flow and pressure, as a fraction. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "derived from *sfanShaftBhp* if given, else 0.65", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "derived from _sfanShaftBhp_ if given, else 0.65", +required: "No", +variability: "constant") %> -**sfanShaftBhp=*float*** +**sfanShaftBhp=_float_** Fan shaft brake horsepower at design flow and pressure. -<%= member_table( - units: "bhp", - legal_range: "*x* $\\gt$ 0", - default: "derived from *sfanEff*.", - required: "No", - variability: "constant") %> +<%= member*table( +units: "bhp", +legal_range: "\_x* $\\gt$ 0", +default: "derived from _sfanEff_.", +required: "No", +variability: "constant") %> **sfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** -$k_0$ through $k_3$ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow $x_0$. Up to five *floats* may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: +$k_0$ through $k_3$ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow $x_0$. Up to five _floats_ may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: $$z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3$$ where: -- $x$ is the relative fan air flow (as fraction of *sfanVfDs*; 0 $\le$ x $\le$ 1); -- $x_0$ is the minimum relative air flow (default 0); -- $(x - x_0)|$ is the "positive difference", i.e. $(x - x_0)$ if $x > x_0$; else 0; -- $z$ is the relative energy consumption. +- $x$ is the relative fan air flow (as fraction of _sfanVfDs_; 0 $\le$ x $\le$ 1); +- $x_0$ is the minimum relative air flow (default 0); +- $(x - x_0)|$ is the "positive difference", i.e. $(x - x_0)$ if $x > x_0$; else 0; +- $z$ is the relative energy consumption. If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. -<%= member_table( - units: "", - legal_range: "", - default: "*0, 1, 0, 0, 0 (linear)*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "", +default: "\_0, 1, 0, 0, 0 (linear)*", +required: "No", +variability: "constant") %> -**sfanMotEff=*float*** +**sfanMotEff=_float_** Motor/drive efficiency. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.9", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "0.9", +required: "No", +variability: "constant") %> -**sfanMotPos=*choice*** +**sfanMotPos=_choice_** Motor/drive position: determines disposition of fan motor heat (input energy in excess of work done by fan; the work done by the fan is the "fan heat", always added to air flow). <%= csv_table(< false) -IN\_FLOW, add fan motor heat to supply air at the fan position. -IN\_RETURN, add fan motor heat to the return air flow. -EXTERNAL, discard fan motor heat +IN_FLOW, add fan motor heat to supply air at the fan position. +IN_RETURN, add fan motor heat to the return air flow. +EXTERNAL, discard fan motor heat END %> -**sfanMtr=*mtrName*** +**sfanMtr=_mtrName_** Name of meter, if any, to record energy used by supply fan. End use category used is "Fan". -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*not recorded*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_name of a METER*", +default: "_not recorded_", +required: "No", +variability: "constant") %> ## AIRHANDLER Return/Relief fan -A return/relief fan is optional. Its presence is established by setting *rfanType* to a value other than NONE. For additional information on the return/relief fan members, refer to the description of the corresponding supply fan member above. +A return/relief fan is optional. Its presence is established by setting _rfanType_ to a value other than NONE. For additional information on the return/relief fan members, refer to the description of the corresponding supply fan member above. -**rfanType=*choice*** +**rfanType=_choice_** relief fan type/position. <%= csv_table(< false) -RETURN, fan is at air handler; all return air passes through it. -RELIEF, fan is in exhaust path. Air being exhausted to the outdoors passes through fan; return air being recirculated does not pass through it. -NONE, no return/relief fan in this AIRHANDLER. +RETURN, fan is at air handler; all return air passes through it. +RELIEF, fan is in exhaust path. Air being exhausted to the outdoors passes through fan; return air being recirculated does not pass through it. +NONE, no return/relief fan in this AIRHANDLER. END %> <%= member_table( - units: "", - legal_range: "NONE, RETURN, RELIEF", - default: "NONE", - required: "Yes, if fan present", - variability: "constant") %> +units: "", +legal_range: "NONE, RETURN, RELIEF", +default: "NONE", +required: "Yes, if fan present", +variability: "constant") %> -**rfanVfDs=*float*** +**rfanVfDs=_float_** design or rated (volumetric) air flow. -<%= member_table( - units: "cfm", - legal_range: "*AUTOSIZE* or *x* $\\gt$ 0", - default: "*sfanVfDs - oaVfDsMn*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "cfm", +legal_range: "\_AUTOSIZE* or _x_ $\\gt$ 0", +default: "_sfanVfDs - oaVfDsMn_", +required: "No", +variability: "constant") %> -**rfanVfMxF=*float*** +**rfanVfMxF=_float_** factor by which fan will exceed design flow (at reduced pressure). -<%= member_table( - units: "", - legal_range: "*x* $\\ge$ 1.0", - default: "1.3", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_x* $\\ge$ 1.0", +default: "1.3", +required: "No", +variability: "constant") %> -**rfanPress=*float*** +**rfanPress=_float_** design or rated pressure. -<%= member_table( - units: "inches H~2~O", - legal_range: "*x* $\\gt$ 0", - default: "0.75", - required: "No", - variability: "constant") %> +<%= member*table( +units: "inches H~2~O", +legal_range: "\_x* $\\gt$ 0", +default: "0.75", +required: "No", +variability: "constant") %> -*At most, one of the next three?? items may be defined: ??* rework re rfanElecPwr +_At most, one of the next three?? items may be defined: ??_ rework re rfanElecPwr -**rfanElecPwr=*float*** +**rfanElecPwr=_float_** Fan input power per unit air flow (at design flow and pressure). -<%= member_table( - units: "W/cfm", - legal_range: "*x* $>$ 0", - default: "derived from rfanEff and rfanShaftBhp", - required: "If rfanEff and rfanShaftBhp not present", - variability: "constant") %> +<%= member*table( +units: "W/cfm", +legal_range: "\_x* $>$ 0", +default: "derived from rfanEff and rfanShaftBhp", +required: "If rfanEff and rfanShaftBhp not present", +variability: "constant") %> -**rfanEff=*float*** +**rfanEff=_float_** Fan efficiency at design flow and pressure. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "derived from *rfanShaftBhp* if given, else 0.65", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "derived from _rfanShaftBhp_ if given, else 0.65", +required: "No", +variability: "constant") %> -**rfanShaftBhp=*float*** +**rfanShaftBhp=_float_** Fan shaft brake horsepower at design flow and pressure. -<%= member_table( - units: "bhp", - legal_range: "*x* $\\gt$ 0", - default: "derived from *rfanEff*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "bhp", +legal_range: "\_x* $\\gt$ 0", +default: "derived from _rfanEff_", +required: "No", +variability: "constant") %> **rfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** -$k_0$ through $k_3$ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow $x_0$. Up to five *floats* may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: +$k_0$ through $k_3$ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow $x_0$. Up to five _floats_ may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: $$z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3$$ where: -- $x$ is the relative fan air flow (as fraction of *rfanVfDs*; 0 $\le$ x $\le$ 1); -- $x_0$ is the minimum relative air flow (default 0); -- $(x - x_0)|$ is the "positive difference", i.e. $(x - x_0)$ if $x > x_0$; else 0; -- $z$ is the relative energy consumption. +- $x$ is the relative fan air flow (as fraction of _rfanVfDs_; 0 $\le$ x $\le$ 1); +- $x_0$ is the minimum relative air flow (default 0); +- $(x - x_0)|$ is the "positive difference", i.e. $(x - x_0)$ if $x > x_0$; else 0; +- $z$ is the relative energy consumption. If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. -<%= member_table( - units: "", - legal_range: "", - default: "*0, 1, 0, 0, 0 (linear)*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "", +default: "\_0, 1, 0, 0, 0 (linear)*", +required: "No", +variability: "constant") %> -**rfanMotEff=*float*** +**rfanMotEff=_float_** Motor/drive efficiency. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.9", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "0.9", +required: "No", +variability: "constant") %> -**rfanMotPos=*choice*** +**rfanMotPos=_choice_** Motor/drive position. <%= member_table( - units: "", - legal_range: "IN\_FLOW, EXTERNAL", - default: "IN\_FLOW", - required: "No", - variability: "constant") %> +units: "", +legal_range: "IN_FLOW, EXTERNAL", +default: "IN_FLOW", +required: "No", +variability: "constant") %> -**rfanMtr=*mtrName*** +**rfanMtr=_mtrName_** Name of meter, if any, to record power consumption of this return fan. May be same or different from meter used for other fans and coils in this and other air handlers. "Fan" end use category is used. -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*not recorded*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_name of a METER*", +default: "_not recorded_", +required: "No", +variability: "constant") %> ## AIRHANDLER Heating coil/Modeling Furnaces @@ -534,129 +532,129 @@ Heating coils are optional devices that warm the air flowing through the AIRHAND Furnaces are modeled as AIRHANDLERs with heat "coils" that model the heating portion of a gas or oil forced hot air furnace. Notes on modeling a furnace with a CSE AIRHANDLER: -- Give *ahhcType* = GAS or OIL. -- Give *ahhcAux's* to model the power consumption of pilot, draft fan, etc. -- Use *ahTsSp* = ZN, which implies *ahFanCyles* = YES, to model constant volume, fan cycling (as opposed to VAV) operation. -- Use *ahTsMx* = an appropriate value around 140 or 180 to limit the supply temperature, simulating the furnace's high temperature cutout (the default *ahTsMx*of 999 is too high!). -- Use a single TERMINAL on the AIRHANDLER. -- To eliminate confusion about the fan cfm (which, precisely, under *ahFanCyles* = YES, is the smaller of the terminal maximum or the supply fan maximum including overrun), give the same value for TERMINAL *tuVfMxH* and AIRHANDLER *sfanVfDs*, and give *sfanVfMxF* = 1.0 to eliminate overrun. -- You will usually want to use *oaVfDsMn* = 0 (no outside air), and no economizer. +- Give _ahhcType_ = GAS or OIL. +- Give _ahhcAux's_ to model the power consumption of pilot, draft fan, etc. +- Use _ahTsSp_ = ZN, which implies _ahFanCyles_ = YES, to model constant volume, fan cycling (as opposed to VAV) operation. +- Use _ahTsMx_ = an appropriate value around 140 or 180 to limit the supply temperature, simulating the furnace's high temperature cutout (the default *ahTsMx*of 999 is too high!). +- Use a single TERMINAL on the AIRHANDLER. +- To eliminate confusion about the fan cfm (which, precisely, under _ahFanCyles_ = YES, is the smaller of the terminal maximum or the supply fan maximum including overrun), give the same value for TERMINAL _tuVfMxH_ and AIRHANDLER _sfanVfDs_, and give _sfanVfMxF_ = 1.0 to eliminate overrun. +- You will usually want to use _oaVfDsMn_ = 0 (no outside air), and no economizer. -The heating function of an air source heat pump is modeled with an AIRHANDLER with heat coil type AHP. There are several additional heat coil input variables (names beginning with *ahp-*) described later in the heat coil section. Also, a heat pump generally has a crankcase heater, which is specified with the crankcase heater inputs (*cch-*), described later in the AIRHANDLER Section 0. If the heat pump also performs cooling, its cooling function is modeled by specifying a suitable cooling coil in the same AIRHANDLER. Use *ahccType* = DX until a special cooling coil type for heat pumps is implemented. It is the user's responsibility to specify consistent heating and cooling coil inputs when the intent is to model a heat pump that both heats and cools, as CSE treats the heat coil and the cool coil as separate devices. +The heating function of an air source heat pump is modeled with an AIRHANDLER with heat coil type AHP. There are several additional heat coil input variables (names beginning with _ahp-_) described later in the heat coil section. Also, a heat pump generally has a crankcase heater, which is specified with the crankcase heater inputs (_cch-_), described later in the AIRHANDLER Section 0. If the heat pump also performs cooling, its cooling function is modeled by specifying a suitable cooling coil in the same AIRHANDLER. Use _ahccType_ = DX until a special cooling coil type for heat pumps is implemented. It is the user's responsibility to specify consistent heating and cooling coil inputs when the intent is to model a heat pump that both heats and cools, as CSE treats the heat coil and the cool coil as separate devices. The next four members apply to all heat coil types, except as noted. -To specify that an AIRHANDLER has a heating coil and thus heating capability, give an *ahhcType* other than NONE. +To specify that an AIRHANDLER has a heating coil and thus heating capability, give an _ahhcType_ other than NONE. -**ahhcType=*choice*** +**ahhcType=_choice_** Coil type choice: -<%= csv_table(< false) -ELECTRIC, electric resistance heat: 100% efficient, can deliver its full rated capacity at any temperature and flow. -HW, hot water coil, supplied by a HEATPLANT object. -GAS or OIL, 'coil' type that models heating portion of a forced hot air furnace. Furnace 'coil' model uses inputs for full-load efficiency and part-load power input; model must be completed with appropriate auxiliaries, *ahTsSp*, etc. See notes above. - , GAS and OIL are the same here -- the differences between gas- and oil-fired furnaces is in the auxiliaries (pilot vs. draft fan, etc.), which you specify separately. +<%= csv*table(< false) +ELECTRIC, electric resistance heat: 100% efficient, can deliver its full rated capacity at any temperature and flow. +HW, hot water coil, supplied by a HEATPLANT object. +GAS or OIL, 'coil' type that models heating portion of a forced hot air furnace. Furnace 'coil' model uses inputs for full-load efficiency and part-load power input; model must be completed with appropriate auxiliaries, \_ahTsSp*, etc. See notes above. +, GAS and OIL are the same here -- the differences between gas- and oil-fired furnaces is in the auxiliaries (pilot vs. draft fan, etc.), which you specify separately. AHP, heating function of an air source heat pump. NONE, AIRHANDLER has no heat coil, thus no heating capability. END %> <%= member_table( - units: "", - legal_range: "ELECTRIC, HW, GAS OIL, AHP, NONE", - default: "NONE", - required: "Yes, if coil is present", - variability: "constant") %> +units: "", +legal_range: "ELECTRIC, HW, GAS OIL, AHP, NONE", +default: "NONE", +required: "Yes, if coil is present", +variability: "constant") %> -**ahhcSched=*choice*** +**ahhcSched=_choice_** Heat coil schedule; choice of AVAIL or OFF, hourly variable. Use an appropriate ahhcSched expression if heat coil is to operate only at certain times of the day or year or only under certain weather conditions, etc. -<%= csv_table(< false) +<%= csv*table(< false) AVAIL, heat coil available: will operate as necessary to heat supply air to supply temperature setpoint, up to the coil's capacity. -OFF, coil will not operate, no matter how cold supply air is. A HW coil should be scheduled off whenever its HEATPLANT is scheduled off (*hpSched*) to insure against error messages. +OFF, coil will not operate, no matter how cold supply air is. A HW coil should be scheduled off whenever its HEATPLANT is scheduled off (\_hpSched*) to insure against error messages. END %> <%= member_table( - units: "", - legal_range: "AVAIL, OFF", - default: "AVAIL", - required: "No", - variability: "hourly") %> +units: "", +legal_range: "AVAIL, OFF", +default: "AVAIL", +required: "No", +variability: "hourly") %> -**ahhcCapTRat=*float*** +**ahhcCapTRat=_float_** Total heating (output) capacity. For an ELECTRIC, AHP, GAS, or OIL coil, this capacity is always available. For an HW heating coil, when the total heat being requested from the coil's HEATPLANT would overload the HEATPLANT, the capacity of all HW coils connected to the plant (in TERMINALs as well as AIRHANDLERs) is reduced proportionately until the requested total heat is within the HEATPLANT's capacity. For AHP, this value represents the AHRI rated capacity at 47 ^o^F outdoor temperature. -<%= member_table( - units: "Btuh", - legal_range: "*AUTOSIZE* or *x* $\\ge$ 0", - default: "*none*", - required: "Yes, if coil present", - variability: "hourly") %> +<%= member*table( +units: "Btuh", +legal_range: "\_AUTOSIZE* or _x_ $\\ge$ 0", +default: "_none_", +required: "Yes, if coil present", +variability: "hourly") %> -**ahhcFxCap=*float*** +**ahhcFxCap=_float_** -Capacity sizing multiplier for autoSized heating coils. The default value (1.1) specifies 10% oversizing. +Capacity sizing multiplier for autoSized heating coils. The default value (1.1) specifies 10% oversizing. <%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "1.1", - required: "No", - variability: "constant") %> +units: "", +legal_range: "x $>$ 0", +default: "1.1", +required: "No", +variability: "constant") %> -**ahhcMtr=*mtrName*** +**ahhcMtr=_mtrName_** -Name of meter to accumulate energy use by this heat coil. The input energy used by the coil is accumulated in the end use category "Htg"; for a heat pump, the energy used by the supplemental resistance heaters (regular and defrost) is accumulated under the category "hp". Not allowed when*ahhcType\* is HW, as an HW coil's energy comes from its HEATPLANT, and the HEATPLANT's BOILERs accumulate input energy to meters. +Name of meter to accumulate energy use by this heat coil. The input energy used by the coil is accumulated in the end use category "Htg"; for a heat pump, the energy used by the supplemental resistance heaters (regular and defrost) is accumulated under the category "hp". Not allowed when\*ahhcType\* is HW, as an HW coil's energy comes from its HEATPLANT, and the HEATPLANT's BOILERs accumulate input energy to meters. -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*not recorded*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_name of a METER*", +default: "_not recorded_", +required: "No", +variability: "constant") %> -The following input is used only when *ahhcType* is HW: +The following input is used only when _ahhcType_ is HW: -**ahhcHeatplant=*Heatplant name*** +**ahhcHeatplant=_Heatplant name_** Name of HEATPLANT supporting hot water coil. -<%= member_table( - units: "", - legal_range: "*name of a HEATPLANT*", - default: "*none*", - required: "if *ahhcType* is HW", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_name of a HEATPLANT*", +default: "_none_", +required: "if _ahhcType_ is HW", +variability: "constant") %> -The following inputs are used only for furnaces (*ahhcType* = GAS or OIL). +The following inputs are used only for furnaces (_ahhcType_ = GAS or OIL). One of the next two items, but not both, **must** be given for furnaces: -**ahhcEirR=*float*** +**ahhcEirR=_float_** Rated energy input ratio (input energy/output energy) at full power. -<%= member_table( - units: "", - legal_range: "*x* $\\ge$ 1", - default: "*none*", - required: "if *ahhcEirR* not given and *ahhcType* is GAS or OIL", - variability: "hourly") %> +<%= member*table( +units: "", +legal_range: "\_x* $\\ge$ 1", +default: "_none_", +required: "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", +variability: "hourly") %> -**ahhcEffR=*float*** +**ahhcEffR=_float_** Rated efficiency (output energy/input energy; 1/ahhcEirR) at full power -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "*none*", - required: "if *ahhcEirR* not given and *ahhcType* is GAS or OIL", - variability: "hourly") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "_none_", +required: "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", +variability: "hourly") %> **ahhcPyEi=$k_0$, $k_1$, $k_2$, $k_3$** @@ -673,13 +671,13 @@ $$\text{pyEi}(\text{plrAv}) = 0.01861 + 1.094209 \cdot \textbf{plrAv} - 0.112819 Note that the value of this polynomial adjusts the energy input, not the energy input ratio, for part load operation. <%= member_table( - units: "", - legal_range: "", - default: "0.01861, 1.094209, -0.112819, 0.0.", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "0.01861, 1.094209, -0.112819, 0.0.", +required: "No", +variability: "constant") %> -**ahhcStackEffect=*float*** +**ahhcStackEffect=_float_** Fraction of unused furnace capacity that must be used to make up for additional infiltration caused by stack effect of a hot flue when the (indoor) furnace is NOT running, only in subhours when furnace runs PART of the subhour, per DOE2 model. @@ -702,262 +700,262 @@ The factor "`sqrt(200.-@Top.tDbO)`" represents the volume of infiltrated air tha The divisor "`/ (10*68*sqrt(200))`" is to make the value 0.1 when tDbO is 0, that is, to make the stack effect loss use 10% of unused load when it is 0 degrees out. The actual modeling engineer must know enough about his building to be able to estimate the additional infiltration load at some temperature. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0", - required: "No", - variability: "hourly") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "0", +required: "No", +variability: "hourly") %> -The following heat coil input members, beginning with *ahp-*, are used when modeling the heating function of an air source heat pump with the air handler heat coil, that is, when *ahhcType*= AHP is given. Also, see the "AIRHANDLER Crankcase Heater" section with regard to specifying the heat pump's crankcase heater. +The following heat coil input members, beginning with _ahp-_, are used when modeling the heating function of an air source heat pump with the air handler heat coil, that is, when _ahhcType_= AHP is given. Also, see the "AIRHANDLER Crankcase Heater" section with regard to specifying the heat pump's crankcase heater. -**ahpCap17=*float*** +**ahpCap17=_float_** AHRI steady state (continuous operation) rated capacity at 70 degrees F indoor (return) air temp, and 17 degrees F outdoor temp, respectively. These values reflect no cycling, frost, or defrost degradation. To help you find input errors, the program issues an error message if ahpCap17 >= ahhcCapTRat. -<%= member_table( - units: "Btuh", - legal_range: "*x* $\\gt$ 0", - default: "*none*", - required: "Yes, for AHP coil", - variability: "constant") %> +<%= member*table( +units: "Btuh", +legal_range: "\_x* $\\gt$ 0", +default: "_none_", +required: "Yes, for AHP coil", +variability: "constant") %> -**ahpCapRat1747=*float*** +**ahpCapRat1747=_float_** -The ratio of AHRI steady state (continuous operation) rated capacities at 17 and 47 degrees F outdoor temp. This is used to determine *ahpCap35* when *ahhcCapTRat* is AUTOSIZEd. +The ratio of AHRI steady state (continuous operation) rated capacities at 17 and 47 degrees F outdoor temp. This is used to determine _ahpCap35_ when _ahhcCapTRat_ is AUTOSIZEd. -<%= member_table( - units: "", - legal_range: "*x* $\\gt$ 0", - default: "0.6184", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_x* $\\gt$ 0", +default: "0.6184", +required: "No", +variability: "constant") %> -**ahpCapRat9547=*float*** +**ahpCapRat9547=_float_** -Ratio of ahccCapTRat to ahhcCapTRat. This ratio is used for defaulting of AUTOSIZEd heat pump heating and cooling capacities such that they have consistent values as is required given that a heat pump is a single device. If not given, ahpCapRat9547 is determined during calculations using the relationship ahccCapTRat = 0.98 * ahhcCapTRat + 180 (derived via correlation of capacities of a set of real units). +Ratio of ahccCapTRat to ahhcCapTRat. This ratio is used for defaulting of AUTOSIZEd heat pump heating and cooling capacities such that they have consistent values as is required given that a heat pump is a single device. If not given, ahpCapRat9547 is determined during calculations using the relationship ahccCapTRat = 0.98 \* ahhcCapTRat + 180 (derived via correlation of capacities of a set of real units). <%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "See above", - required: "No", - variability: "constant") %> +units: "", +legal_range: "x $>$ 0", +default: "See above", +required: "No", +variability: "constant") %> -**ahpCap35=*float*** +**ahpCap35=_float_** -AHRI steady state (continuous operation) rated capacity at 35 F outdoor temp, reflecting frost buildup and defrost degradation but no cycling. Unlikely to be available for input; if not given, will be defaulted to *ahpFd35Df* (next description) times a value determined by linear interpolation between the given *ahpCap17* and *ahhcCapTRat* values. If *ahpCap35* is given, CSE will issue an error message if it is greater than value determined by linear interpolation between *ahpCap17* and *ahhcCapTRat*. +AHRI steady state (continuous operation) rated capacity at 35 F outdoor temp, reflecting frost buildup and defrost degradation but no cycling. Unlikely to be available for input; if not given, will be defaulted to _ahpFd35Df_ (next description) times a value determined by linear interpolation between the given _ahpCap17_ and _ahhcCapTRat_ values. If _ahpCap35_ is given, CSE will issue an error message if it is greater than value determined by linear interpolation between _ahpCap17_ and _ahhcCapTRat_. -<%= member_table( - units: "Btuh", - legal_range: "*x* $\\gt$ 0", - default: "from ahpFd35Df", - required: "No", - variability: "constant") %> +<%= member*table( +units: "Btuh", +legal_range: "\_x* $\\gt$ 0", +default: "from ahpFd35Df", +required: "No", +variability: "constant") %> -**ahpFd35Df=*float*** +**ahpFd35Df=_float_** -Default frost/defrost degradation factor at 35 F: reduction of output at unchanged input, due to defrosting and due to frost on outdoor coil. Used in determining default value for *ahpCap35* (preceding description); not used if *ahpCap35* is given. +Default frost/defrost degradation factor at 35 F: reduction of output at unchanged input, due to defrosting and due to frost on outdoor coil. Used in determining default value for _ahpCap35_ (preceding description); not used if _ahpCap35_ is given. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.85", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "0.85", +required: "No", +variability: "constant") %> -**ahpCapIa=*float*** +**ahpCapIa=_float_** Capacity correction factor for indoor (return) air temperature, expressed as a fraction reduction in capacity per degree above 70F. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.004", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "0.004", +required: "No", +variability: "constant") %> -**ahpCapSupH=*float*** +**ahpCapSupH=_float_** Output capacity of the supplemental reheat coil used when heat pump alone cannot meet the load or to offset the defrost cooling load. Energy consumed by this heater is accumulated in category "HPBU" of ahhcMeter (whereas energy consumption of the heat pump compressor is accumulated under category "Htg"). -<%= member_table( - units: "Btu/hr", - legal_range: "*x* $\\ge$ 0", - default: "0", - required: "No", - variability: "constant") %> +<%= member*table( +units: "Btu/hr", +legal_range: "\_x* $\\ge$ 0", +default: "0", +required: "No", +variability: "constant") %> -**ahpEffSupH=*float*** +**ahpEffSupH=_float_** Efficiency of the supplemental reheat coil. Use values other than the default for gas supplemental heaters. -<%= member_table( - units: "", - legal_range: "*x* $\\gt$ 0", - default: "1.0", - required: "No", - variability: "hourly") %> +<%= member*table( +units: "", +legal_range: "\_x* $\\gt$ 0", +default: "1.0", +required: "No", +variability: "hourly") %> -**ahpSupHMtr=*mtrName*** +**ahpSupHMtr=_mtrName_** Specifies a meter for recording supplemental heater energy use. End use category "HPBU" is used. -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*not recorded*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_name of a METER*", +default: "_not recorded_", +required: "No", +variability: "constant") %> The next seven inputs specify frost buildup and defrosting and their effect on capacity. -**ahpTFrMn=*float*** +**ahpTFrMn=_float_** -**ahpTFrMx=*float*** +**ahpTFrMx=_float_** -**ahpTFrPk=*float*** +**ahpTFrPk=_float_** Lowest, highest, and peak temperatures for frost buildup and defrost effects. Capacity reduction due to frost and defrosting consists of a component due to frost buildup on the outdoor coil, plus a component due to lost heating during the time the heat pump is doing reverse cycle defrosting (heating the outdoor coil to melt off the frost, which cools the indoor coil). The effects of Frost Buildup and of time spent defrosting are computed for different temperature ranges as follows: -- Above *ahpTFrMx*: no frost buildup, no defrosting. +- Above _ahpTFrMx_: no frost buildup, no defrosting. -- At *ahpTFrMx* OR *ahpTFrMn*: defrosting time per *ahpDfrFMn* (next description); no frost buildup effect. +- At _ahpTFrMx_ OR _ahpTFrMn_: defrosting time per _ahpDfrFMn_ (next description); no frost buildup effect. -- At *ahpTFrPk*: defrosting time per *ahpDfrFMx*, plus additional output reduction due to effect of frost buildup, computed by linear extrapolation from *ahpCap35* or its default. +- At _ahpTFrPk_: defrosting time per _ahpDfrFMx_, plus additional output reduction due to effect of frost buildup, computed by linear extrapolation from _ahpCap35_ or its default. -- Between *ahpTFrPk* and *ahpTFrMn* or *ahpTFrMx*: defrost time and defrost buildup degradation linearly interpolated between values at *ahpTFrPk* and values at *ahpTFrMn* or *ahpTFrMx*. +- Between _ahpTFrPk_ and _ahpTFrMn_ or _ahpTFrMx_: defrost time and defrost buildup degradation linearly interpolated between values at _ahpTFrPk_ and values at _ahpTFrMn_ or _ahpTFrMx_. -- Below *ahpTFrMn*: no frost buildup effect; time defrosting remains at *ahpDfrFMn*. +- Below _ahpTFrMn_: no frost buildup effect; time defrosting remains at _ahpDfrFMn_. -In other words, the curve of capacity loss due to frost buildup follows straight lines from its high point at *ahpTFrPk* to zero at *ahpTFrMn* and *ahpTFrMx*, and remains zero outside the range *ahpTFrMn* to *ahpTFrMx*. The height of the high point is determined to match the *ahpCap35* input value or its default. The curve of time spent defrosting is described in other words in the description of *ahpDfrFMn* and *ahpDfrFMx*, next. +In other words, the curve of capacity loss due to frost buildup follows straight lines from its high point at _ahpTFrPk_ to zero at _ahpTFrMn_ and _ahpTFrMx_, and remains zero outside the range _ahpTFrMn_ to _ahpTFrMx_. The height of the high point is determined to match the _ahpCap35_ input value or its default. The curve of time spent defrosting is described in other words in the description of _ahpDfrFMn_ and _ahpDfrFMx_, next. -An error will occur unless *ahpTFrMn* < *ahpTFrPk* < *ahpTFrMx* and *ahpTFrMn* < 35 < *ahpTFrMx*. +An error will occur unless _ahpTFrMn_ < _ahpTFrPk_ < _ahpTFrMx_ and _ahpTFrMn_ < 35 < *ahpTFrMx*. -<%= member_table( - units: "^o^F", - legal_range: "*x* $\\gt$ 0", - default: "*ahpTFrMn*: 17, *ahpTFrMx*: 47, *ahpTFrPk*: 42", - required: "No", - variability: "constant") %> +<%= member*table( +units: "^o^F", +legal_range: "\_x* $\\gt$ 0", +default: "_ahpTFrMn_: 17, _ahpTFrMx_: 47, _ahpTFrPk_: 42", +required: "No", +variability: "constant") %> -**ahpDfrFMn=*float*** +**ahpDfrFMn=_float_** -**ahpDfrFMx=*float*** +**ahpDfrFMx=_float_** Minimum and maximum fraction of time spent in reverse cycle defrost cooling. -The fraction of the time spent defrosting depends on the outdoor temperature, as follows: at or below *ahpTFrMn*, and at (but not above) *ahpTFrMx*, *ahpDfrFMn* is used. *ahpDfrFMx* is used at *ahpTFrMx*. Linear interpolation is used between *ahpTFrMn* or *ahpTFrMx* and *ahpTFrMx*. No time is spent defrosting above *ahpTFrMx*. +The fraction of the time spent defrosting depends on the outdoor temperature, as follows: at or below _ahpTFrMn_, and at (but not above) _ahpTFrMx_, _ahpDfrFMn_ is used. _ahpDfrFMx_ is used at _ahpTFrMx_. Linear interpolation is used between _ahpTFrMn_ or _ahpTFrMx_ and _ahpTFrMx_. No time is spent defrosting above _ahpTFrMx_. -In other words, the curve of time spent defrosting versus outdoor temperature has the value *ahpDfrFMn* up to *ahpTFrMn*, then rises in a straight line to *ahpDfrFMx* at *ahpTFrMx*, then falls in a straight line back to *ahpDfrFMn* at *ahpTFrMx*, then drops directly to zero for all higher temperatures. +In other words, the curve of time spent defrosting versus outdoor temperature has the value _ahpDfrFMn_ up to _ahpTFrMn_, then rises in a straight line to _ahpDfrFMx_ at _ahpTFrMx_, then falls in a straight line back to _ahpDfrFMn_ at _ahpTFrMx_, then drops directly to zero for all higher temperatures. During the fraction of the time spent defrosting, the heat pump's input remains constant and the output is changed as follows: -- Usual heat output is not delivered to load. +- Usual heat output is not delivered to load. -- Cold output due to reverse cycle operation is delivered to load. See *ahpDfrCap*. +- Cold output due to reverse cycle operation is delivered to load. See _ahpDfrCap_. -- An additional resistance heater is operated; and its heat output is delivered to load. See *ahpDfrRh*. +- An additional resistance heater is operated; and its heat output is delivered to load. See _ahpDfrRh_. -The program will issue an error message if *ahpDfrFMx* $\le$ *ahpDfrFMn*. +The program will issue an error message if _ahpDfrFMx_ $\le$ _ahpDfrFMn_. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "*ahpDfrFMn*: .0222, (2 minutes/90 minutes), *ahpDfrFMx*:.0889, (8 minutes / 90 minutes)", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "_ahpDfrFMn_: .0222, (2 minutes/90 minutes), _ahpDfrFMx_:.0889, (8 minutes / 90 minutes)", +required: "No", +variability: "constant") %> -**ahpDfrCap=*float*** +**ahpDfrCap=_float_** -Cooling capacity (to air handler supply air) during defrosting. Program separately computes the lost heating capacity during defrosting, but effects of switchover transient should be included in *ahpDfrCap*. +Cooling capacity (to air handler supply air) during defrosting. Program separately computes the lost heating capacity during defrosting, but effects of switchover transient should be included in _ahpDfrCap_. -<%= member_table( - units: "Btuh", - legal_range: "*x* $\\neq$ 0", - default: "2 $\\cdot$ *ahpCap17*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "Btuh", +legal_range: "\_x* $\\neq$ 0", +default: "2 $\\cdot$ _ahpCap17_", +required: "No", +variability: "constant") %> -**ahpTOff=*float*** +**ahpTOff=_float_** -**ahpTOn=*float*** +**ahpTOn=_float_** -Heat pump low temperature cutout setpoints. Heat pump is disabled (only the supplemental resistance heater operates) when outdoor temperature falls below *ahpTOff*, and is re-enabled when temperature rises above *ahpTOn*. Different values may be given to simulate thermostat differential. *ahpTOff* must be $\le$ *ahpTOn*; equal values are accepted. +Heat pump low temperature cutout setpoints. Heat pump is disabled (only the supplemental resistance heater operates) when outdoor temperature falls below _ahpTOff_, and is re-enabled when temperature rises above _ahpTOn_. Different values may be given to simulate thermostat differential. _ahpTOff_ must be $\le$ _ahpTOn_; equal values are accepted. -<%= member_table( - units: "^o^F", - legal_range: "", - default: "*ahpTOff*: 5, *ahpTOn*: 12", - required: "No", - variability: "constant") %> +<%= member*table( +units: "^o^F", +legal_range: "", +default: "\_ahpTOff*: 5, _ahpTOn_: 12", +required: "No", +variability: "constant") %> The next four inputs specify the heating power input for an air source heat pump: -**ahpCOP47=*float*** +**ahpCOP47=_float_** -**ahpCOP17=*float*** +**ahpCOP17=_float_** Steady state (full power, no cycling) coeffient of performance for compressor and crankcase heater at 70 degrees F indoor (return) air temp and 47 and 17 degrees F outdoor temp, respectively. -<%= member_table( - units: "kW", - legal_range: "*x* $\\gt$ 0", - default: "*none*", - required: "Yes, for AHP coil", - variability: "constant") %> +<%= member*table( +units: "kW", +legal_range: "\_x* $\\gt$ 0", +default: "_none_", +required: "Yes, for AHP coil", +variability: "constant") %> -**ahpInIa=*float*** +**ahpInIa=_float_** Indoor (return) air temp power input correction factor: fraction increase in steady-state input per degree above 70 F, or decrease below 70F. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.004", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "0.004", +required: "No", +variability: "constant") %> -**ahpCd=*float*** +**ahpCd=_float_** AHRI cycling degradation coefficient: ratio of fraction drop in system coefficient of performance (COP) to fraction drop in capacity when cycling, from steady-state values, in AHRI 47 F cycling performance tests. A value of .25 means that if the heat pump is cycled to drop its output to 20% of full capacity (i.e. by the fraction .8), its COP will drop by .8 \* .25 = .2. Here COP includes all energy inputs: compressor, crankcase heater, defrost operation, etc. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.25", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "0.25", +required: "No", +variability: "constant") %> The following four air handler heat coil members allow specification of auxiliary input power consumption associated with the heat coil (or furnace) under the indicated conditions. The single description box applies to all four. -**ahhcAux=*float*** +**ahhcAux=_float_** Auxiliary energy used by the heating coil. -<%= member_table( - units: "Btu/hr", - legal_range: "*x* $\\ge$ 0", - default: "0", - required: "No", - variability: "hourly") %> +<%= member*table( +units: "Btu/hr", +legal_range: "\_x* $\\ge$ 0", +default: "0", +required: "No", +variability: "hourly") %> -**ahhcAuxMtr=*mtrName*** +**ahhcAuxMtr=_mtrName_** Specifies a meter for recording auxiliary energy use. End use category "Aux" is used. -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*not recorded*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_name of a METER*", +default: "_not recorded_", +required: "No", +variability: "constant") %> ## AIRHANDLER Cooling coil A cooling coil is an optional device that remove heat and humidity from the air passing through the AIRHANDLER. Available cooling coil types include chilled water (CHW), supported by a COOLPLANT that supplies cold water, and Direct Expansion (DX), supported by a dedicated compressor and condenser that are modeled integrally with the DX coil. No plant is used with DX coils. -The following five members are used for all cool coil types except as noted. Presence of a cool coil in the AIRHANDLER is indicated by giving an *ahccType value* other than NONE. +The following five members are used for all cool coil types except as noted. Presence of a cool coil in the AIRHANDLER is indicated by giving an _ahccType value_ other than NONE. **ahccType*=choice*** @@ -972,11 +970,11 @@ END %> <%= member_table( - units: "", - legal_range: "ELECTRIC, DX, CHW, NONE", - default: "NONE", - required: "Yes, if coil present", - variability: "constant") %> +units: "", +legal_range: "ELECTRIC, DX, CHW, NONE", +default: "NONE", +required: "Yes, if coil present", +variability: "constant") %> **ahccSched*=choice*** @@ -989,154 +987,154 @@ END %> <%= member_table( - units: "", - legal_range: "AVAIL, OFF", - default: "AVAIL", - required: "No", - variability: "constant") %> +units: "", +legal_range: "AVAIL, OFF", +default: "AVAIL", +required: "No", +variability: "constant") %> -**ahccCapTRat=*float*** +**ahccCapTRat=_float_** -Total rated capacity of coil: sum of its "sensible" (heat-removing) and "latent" (moisture removing) capacities. Not used with CHW coils, for which capacity is implicitly specified by water flow (ahccGpmDs*) and transfer unit (*ahccNtuoDs\* and *ahccNtuiDs*) inputs, described below. +Total rated capacity of coil: sum of its "sensible" (heat-removing) and "latent" (moisture removing) capacities. Not used with CHW coils, for which capacity is implicitly specified by water flow (ahccGpmDs*) and transfer unit (*ahccNtuoDs\* and _ahccNtuiDs_) inputs, described below. -For coil specification conditions (a.k.a. rating conditions or design conditions), see *ahccDsTDbEn*, *ahccDsTWbEn*, *ahccDsTDbCnd*and *ahccVfR*below (see index). +For coil specification conditions (a.k.a. rating conditions or design conditions), see _ahccDsTDbEn_, _ahccDsTWbEn_, *ahccDsTDbCnd*and *ahccVfR*below (see index). -<%= member_table( - units: "Btuh", - legal_range: "*AUTOSIZE* or *x* $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") %> +<%= member*table( +units: "Btuh", +legal_range: "\_AUTOSIZE* or _x_ $>$ 0", +default: "_none_", +required: "Yes", +variability: "constant") %> -**ahccCapSRat=*float*** +**ahccCapSRat=_float_** Sensible (heat-removing) rated capacity of cooling coil. Not used with CHW coils. -<%= member_table( - units: "Btuh", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") %> +<%= member*table( +units: "Btuh", +legal_range: "\_x* $>$ 0", +default: "_none_", +required: "Yes", +variability: "constant") %> -**ahccSHRRat=*float*** +**ahccSHRRat=_float_** -Rated sensible heat ratio (*ahccCapSRat*/*ahccCapTRat*) for cooling coil. Default based on correlation to *ahccVfRperTon*. Not used with CHW coils. +Rated sensible heat ratio (_ahccCapSRat_/_ahccCapTRat_) for cooling coil. Default based on correlation to _ahccVfRperTon_. Not used with CHW coils. -<%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "based on *ahccVfRperTon*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "x $>$ 0", +default: "based on \_ahccVfRperTon*", +required: "No", +variability: "constant") %> -**ahccFxCap=*float*** +**ahccFxCap=_float_** -Capacity sizing multiplier for autoSized cooling coils. The default value (1.1) specifies 10% oversizing. +Capacity sizing multiplier for autoSized cooling coils. The default value (1.1) specifies 10% oversizing. <%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "1.1", - required: "No", - variability: "constant") %> +units: "", +legal_range: "x $>$ 0", +default: "1.1", +required: "No", +variability: "constant") %> -**ahccMtr=*mtrName*** +**ahccMtr=_mtrName_** Name of meter, if any, to record energy use of air handler cool coil. End use category "Clg" is used. Not used with CHW coils, because the input energy use for a CHW coil is recorded by the COOLPLANT's CHILLERs. -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*not recorded*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_name of a METER*", +default: "_not recorded_", +required: "No", +variability: "constant") %> The following six members are used with DX cooling coils. -**ahccMinTEvap=*float*** +**ahccMinTEvap=_float_** Minimum (effective surface) temperature of coil (evaporator). Represents refrigerant setpoint, or cutout to prevent freezing. Coil model will reduce output to keep simulated coil from getting colder than this, even though it lets supply air get warmer than setpoint. Should default be 35?? -<%= member_table( - units: "^o^F", - legal_range: "*x* $>$ 0", - default: "40^o^F", - required: "No", - variability: "constant") %> +<%= member*table( +units: "^o^F", +legal_range: "\_x* $>$ 0", +default: "40^o^F", +required: "No", +variability: "constant") %> -**ahccK1=*float*** +**ahccK1=_float_** -Exponent in power relationship expressing coil effectiveness as a function of relative air flow. Used as K1 in the relationship ntu = ntuR \* relCfmk1, which says that the "number of transfer units" (on the coil outside or air side) varies with the relative air flow raised to the K1 power. Used with CHW as well as DX coils; for a CHW coil, ntuR in the formula is *ahccNtuoDs*. +Exponent in power relationship expressing coil effectiveness as a function of relative air flow. Used as K1 in the relationship ntu = ntuR \* relCfmk1, which says that the "number of transfer units" (on the coil outside or air side) varies with the relative air flow raised to the K1 power. Used with CHW as well as DX coils; for a CHW coil, ntuR in the formula is _ahccNtuoDs_. -<%= member_table( - units: "", - legal_range: "*x* $<$ 0", - default: "-0.4", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_x* $<$ 0", +default: "-0.4", +required: "No", +variability: "constant") %> -**ahccBypass=*float*** +**ahccBypass=_float_** Fraction of air flow which does NOT flow through DX cooling coil, for better humidity control. Running less of the air through the coil lets the coil run colder, resulting in greater moisture removal right??. -<%= member_table( - units: "", - legal_range: "0 $\\lt$ *x* $\\le$ 1", - default: "0", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\lt$ \_x* $\\le$ 1", +default: "0", +required: "No", +variability: "constant") %> -The next three members are used in determining the energy input to a DX coil under various load conditions. The input is derived from the full load energy input ratio for four segments of the part load curve. In the following the part load ratio (plr) is the ratio of the actual sensible + latent load on the coil to the coil's capacity. The coil's capacity is ahccCaptRat, adjusted by the coil model for differences between entering air temperature, humidity, and flow rate and the coil rating conditions. The coil may run at less than capacity even at full fan flow, depending on the air temperature change needed, the moisture content of the entering air, and the relative values of between *sfanVfDs* and *ahccVfR*. +The next three members are used in determining the energy input to a DX coil under various load conditions. The input is derived from the full load energy input ratio for four segments of the part load curve. In the following the part load ratio (plr) is the ratio of the actual sensible + latent load on the coil to the coil's capacity. The coil's capacity is ahccCaptRat, adjusted by the coil model for differences between entering air temperature, humidity, and flow rate and the coil rating conditions. The coil may run at less than capacity even at full fan flow, depending on the air temperature change needed, the moisture content of the entering air, and the relative values of between _sfanVfDs_ and _ahccVfR_. -<%= csv_table(< false) +<%= csv*table(< false) full load, plr (part load ratio) = 1.0 - , Full-load power input is power output times *ahhcEirR.* -compressor unloading region, 1.0 > plr $\\ge$ *ahhcMinUnldPlr* - , Power input is the full-load input times the value of the *pydxEirUl* polynomial (below) for the current plr, i.e. pydxEirUl(plr). -false loading region, *ahccMinUnldPlr* > plr $\\ge$ *ahccMinFsldPlr* - , Power input in this region is constant at the value for the low end of the compressor unloading region, i.e. pydxEirUl(ahccMinUnldPlr). -cycling region, *ahccMinFsldPlr* > plr $\\ge$ 0 - , In this region the compressor runs at the low end of the false loading region for the necessary fraction of the time, and the power input is the false loading value correspondingly prorated, i.e. pydxEirUl(ahccMinUnldPlr) \* plr / ahccMinFsldPlr. +, Full-load power input is power output times \_ahhcEirR.* +compressor unloading region, 1.0 > plr $\\ge$ _ahhcMinUnldPlr_ +, Power input is the full-load input times the value of the _pydxEirUl_ polynomial (below) for the current plr, i.e. pydxEirUl(plr). +false loading region, _ahccMinUnldPlr_ > plr $\\ge$ _ahccMinFsldPlr_ +, Power input in this region is constant at the value for the low end of the compressor unloading region, i.e. pydxEirUl(ahccMinUnldPlr). +cycling region, _ahccMinFsldPlr_ > plr $\\ge$ 0 +, In this region the compressor runs at the low end of the false loading region for the necessary fraction of the time, and the power input is the false loading value correspondingly prorated, i.e. pydxEirUl(ahccMinUnldPlr) \* plr / ahccMinFsldPlr. END %> The default values for the following three members are the DOE2 PTAC (Window air conditioner) values. -**ahccEirR=*float*** +**ahccEirR=_float_** DX compressor energy input ratio (EIR) at full load under rated conditions; defined as the full-load electric energy input divided by the rated capacity, both in Btuh; same as the reciprocal of the Coefficient Of Performance (COP). Polynomials given below are used by CSE to adjust the energy input for part load and for off rated flow and temperature conditions. The default value includes outdoor (condenser) fan energy, but not indoor (air handler supply) fan energy. <%= member_table( - units: "", - legal_range: "", - default: "0.438", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "0.438", +required: "No", +variability: "constant") %> -**ahccMinUnldPlr=*float*** +**ahccMinUnldPlr=_float_** Compressor part load ratio (total current load/current capacity) at/above which "Compressor unloading" is used and pydxEirUl (below) is used to adjust the full-load power input to get the current part load power input. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "1 (no unloading)", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "1 (no unloading)", +required: "No", +variability: "constant") %> -**ahccMinFsldPlr=*float*** +**ahccMinFsldPlr=_float_** -"False Loading" is used between this compressor part load ratio and the plr where unloading is activated (*ahccMinUnldPlr*). In this region, input remains at *pydxEirUl*(*ahccMinUnldPlr).*For plr's less than *ahccMinFsldPlr*, cycling is used, and the power input goes to 0 in a straight line. +"False Loading" is used between this compressor part load ratio and the plr where unloading is activated (_ahccMinUnldPlr_). In this region, input remains at _pydxEirUl_(*ahccMinUnldPlr).*For plr's less than _ahccMinFsldPlr_, cycling is used, and the power input goes to 0 in a straight line. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ *ahccMinUnldPlr*", - default: "*ahccMinUnldPlr* (no false loading)", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ _ahccMinUnldPlr_", +default: "_ahccMinUnldPlr_ (no false loading)", +required: "No", +variability: "constant") %> -The following four inputs specify polynomials to approximate functions giving DX coil capacity and power (energy) input as functions of entering temperatures, relative (to ahccVfR) flow, and relative load (plr). In each case several *float* values may be given, for use as coefficients of the polynomial. The values are ordered from constant to coefficient of highest power. If fewer than the maximum number of values are given, zeroes are used for the trailing (high order) coefficients. +The following four inputs specify polynomials to approximate functions giving DX coil capacity and power (energy) input as functions of entering temperatures, relative (to ahccVfR) flow, and relative load (plr). In each case several _float_ values may be given, for use as coefficients of the polynomial. The values are ordered from constant to coefficient of highest power. If fewer than the maximum number of values are given, zeroes are used for the trailing (high order) coefficients. Examples: @@ -1164,516 +1162,516 @@ The default values for the polynomial coefficients are the DOE2 PTAC values. **pydxCaptT=a, b, c, d, e, f** -Coefficients of biquadratic polynomial function of entering air wetbulb and condenser temperatures whose value is used to adjust *ahccCaptRat* for the actual entering air temperatures. The condenser temperature is the outdoor drybulb, but not less than 70. See discussion in preceding paragraphs. +Coefficients of biquadratic polynomial function of entering air wetbulb and condenser temperatures whose value is used to adjust _ahccCaptRat_ for the actual entering air temperatures. The condenser temperature is the outdoor drybulb, but not less than 70. See discussion in preceding paragraphs. <%= member_table( - units: "", - legal_range: "", - default: "1.1839345, -0.0081087, 0.00021104, -0.0061425, 0.00000161, -0.0000030", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "1.1839345, -0.0081087, 0.00021104, -0.0061425, 0.00000161, -0.0000030", +required: "No", +variability: "constant") %> **pydxCaptF=a=a, b, c, d** -Coefficients of cubic polynomial function of relative flow (entering air cfm/*ahccVfR*) whose value is used to adjust *ahccCaptRat* for the actual flow. See discussion in preceding paragraphs. +Coefficients of cubic polynomial function of relative flow (entering air cfm/_ahccVfR_) whose value is used to adjust _ahccCaptRat_ for the actual flow. See discussion in preceding paragraphs. <%= member_table( - units: "", - legal_range: "", - default: "0.8, 0.2, 0.0, 0.0", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "0.8, 0.2, 0.0, 0.0", +required: "No", +variability: "constant") %> -**pydxCaptFLim=*float*** +**pydxCaptFLim=_float_** Upper limit for value of pydxCaptF. <%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "1.05", - required: "No", - variability: "constant") %> +units: "", +legal_range: "x $>$ 0", +default: "1.05", +required: "No", +variability: "constant") %> -**pydxEirT=*a, b, c, d, e, f*** +**pydxEirT=_a, b, c, d, e, f_** -Coefficients of biquadratic polynomial function of entering air wetbulb and condenser temperatures whose value is used to adjust *ahccEirR* for the actual entering air temperatures. The condenser temperature is the outdoor air drybulb, but not less than 70. If the entering air wetbulb is less than 60, 60 is used, in this function only. See discussion in preceding paragraphs. +Coefficients of biquadratic polynomial function of entering air wetbulb and condenser temperatures whose value is used to adjust _ahccEirR_ for the actual entering air temperatures. The condenser temperature is the outdoor air drybulb, but not less than 70. If the entering air wetbulb is less than 60, 60 is used, in this function only. See discussion in preceding paragraphs. <%= member_table( - units: "", - legal_range: "", - default: "-0.6550461, 0.03889096, -0.0001925, 0.00130464, 0.00013517, -0.0002247", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "-0.6550461, 0.03889096, -0.0001925, 0.00130464, 0.00013517, -0.0002247", +required: "No", +variability: "constant") %> -**pydxEirUl=*a, b, c, d*** +**pydxEirUl=_a, b, c, d_** -Coefficients of cubic polynomial function of part load ratio used to adjust energy input to part load conditions, in the compressor unloading part load region (1 $\ge$ plr $\ge$ *ahccMinUnldPlr*) as described above. See discussion of polynomials in preceding paragraphs. +Coefficients of cubic polynomial function of part load ratio used to adjust energy input to part load conditions, in the compressor unloading part load region (1 $\ge$ plr $\ge$ _ahccMinUnldPlr_) as described above. See discussion of polynomials in preceding paragraphs. This polynomial adjusts the full load energy input to part load, not the ratio of input to output, despite the "Eir" in its name. <%= member_table( - units: "", - legal_range: "", - default: "0.125, 0.875, 0.0, 0.0", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "0.125, 0.875, 0.0, 0.0", +required: "No", +variability: "constant") %> -The following four members are used only with CHW coils. In addition, *ahccK1,* described above, is used. +The following four members are used only with CHW coils. In addition, _ahccK1,_ described above, is used. -**ahccCoolplant=*name*** +**ahccCoolplant=_name_** name of COOLPLANT supporting CHW coil. COOLPLANTs contain CHILLERs, and are described in Section 5.21. -<%= member_table( - units: "", - legal_range: "*name of a COOLPLANT*", - default: "*none*", - required: "for CHW coil", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_name of a COOLPLANT*", +default: "_none_", +required: "for CHW coil", +variability: "constant") %> -**ahccGpmDs=*float*** +**ahccGpmDs=_float_** Design (i.e. maximum) water flow through CHW coil. -<%= member_table( - units: "gpm", - legal_range: "*x* $\\ge$ 0", - default: "*none*", - required: "Yes, for CHW coil", - variability: "constant") %> +<%= member*table( +units: "gpm", +legal_range: "\_x* $\\ge$ 0", +default: "_none_", +required: "Yes, for CHW coil", +variability: "constant") %> -**ahccNtuoDs=*float*** +**ahccNtuoDs=_float_** CHW coil outside number of transfer units at design air flow (ahccVfR*, below). See*ahccK1\* above with regard to transfer units at other air flows. -<%= member_table( - units: "", - legal_range: "*x* $\\gt$ 0", - default: "2", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_x* $\\gt$ 0", +default: "2", +required: "No", +variability: "constant") %> -**ahccNtuiDs=*float*** +**ahccNtuiDs=_float_** CHW coil inside number of transfer units at design water flow (ahccGpmDs, above). -<%= member_table( - units: "", - legal_range: "*x* $\\gt$ 0", - default: "2", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_x* $\\gt$ 0", +default: "2", +required: "No", +variability: "constant") %> The following four members let you give the specification conditions for the cooling coil: the rating conditions, design conditions, or other test conditions under which the coil's performance is known. The defaults are AHRI (Air-Conditioning and Refrigeration Institute) standard rating conditions. -**ahccDsTDbEn=*float*** +**ahccDsTDbEn=_float_** -Design (rating) entering air dry bulb temperature, used with DX and CHW cooling coils. With CHW coils, this input is used only as the temperature at which to convert *ahccVfR* from volume to mass. +Design (rating) entering air dry bulb temperature, used with DX and CHW cooling coils. With CHW coils, this input is used only as the temperature at which to convert _ahccVfR_ from volume to mass. -<%= member_table( - units: "^o^F", - legal_range: "*x* $\\gt$ 0", - default: "80^o^F (AHRI)", - required: "No", - variability: "constant") %> +<%= member*table( +units: "^o^F", +legal_range: "\_x* $\\gt$ 0", +default: "80^o^F (AHRI)", +required: "No", +variability: "constant") %> -**ahccDsTWbEn=*float*** +**ahccDsTWbEn=_float_** Design (rating) entering air wet bulb temperature, for CHW coils. -<%= member_table( - units: "^o^F", - legal_range: "*x* $\\gt$ 0", - default: "67^o^F (AHRI)", - required: "No", - variability: "constant") %> +<%= member*table( +units: "^o^F", +legal_range: "\_x* $\\gt$ 0", +default: "67^o^F (AHRI)", +required: "No", +variability: "constant") %> -**ahccDsTDbCnd=*float*** +**ahccDsTDbCnd=_float_** Design (rating) condenser temperature (outdoor air temperature) for DX coils. -<%= member_table( - units: "^o^F", - legal_range: "*x* $\\gt$ 0", - default: "95^o^F (AHRI)", - required: "No", - variability: "constant") %> +<%= member*table( +units: "^o^F", +legal_range: "\_x* $\\gt$ 0", +default: "95^o^F (AHRI)", +required: "No", +variability: "constant") %> -**ahccVfR=*float*** +**ahccVfR=_float_** Design (rating) (volumetric) air flow rate for DX or CHW cooling coil. The AHRI specification for this test condition for CHW coils is "450 cfm/ton or less", right?? -<%= member_table( - units: "cfm", - legal_range: "*x* $\\gt$ 0", - default: "DX coil: *ahccVfRperTon* CHW coil: *sfanVfDs*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "cfm", +legal_range: "\_x* $\\gt$ 0", +default: "DX coil: _ahccVfRperTon_ CHW coil: _sfanVfDs_", +required: "No", +variability: "constant") %> The following four members permit specification of auxiliary input power use associated with the cooling coil under the conditions indicated. -**ahccVfRperTon=*float*** +**ahccVfRperTon=_float_** -Design default *ahccVfR* per ton (12000 Btuh) of *ahhcCapTRat*. +Design default _ahccVfR_ per ton (12000 Btuh) of _ahhcCapTRat_. <%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "400.0", - required: "No", - variability: "constant") %> +units: "", +legal_range: "x $>$ 0", +default: "400.0", +required: "No", +variability: "constant") %> -**ahccAux=*float*** +**ahccAux=_float_** Auxiliary energy used by the cooling coil. -<%= member_table( - units: "Btu/hr", - legal_range: "*x* $\\ge$ 0", - default: "0", - required: "No", - variability: "hourly") %> +<%= member*table( +units: "Btu/hr", +legal_range: "\_x* $\\ge$ 0", +default: "0", +required: "No", +variability: "hourly") %> -**ahccAuxMtr=*mtrName*** +**ahccAuxMtr=_mtrName_** Specifies a meter for recording auxiliary energy use. End use category "Aux" is used. -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*not recorded*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_name of a METER*", +default: "_not recorded_", +required: "No", +variability: "constant") %> ## AIRHANDLER Outside Air -Outside air introduced into the air hander supply air can be controlled on two levels. First, a *minimum*fraction or volume of outside air may be specified. By default, a minimum volume of .15 cfm per square foot of zone area is used. Second, an *economizer* may be specified. The simulated economizer increases the outside air above the minimum when the outside air is cooler or has lower enthalpy than the return air, in order to reduce cooling coil energy usage. By default, there is no economizer. +Outside air introduced into the air hander supply air can be controlled on two levels. First, a *minimum*fraction or volume of outside air may be specified. By default, a minimum volume of .15 cfm per square foot of zone area is used. Second, an _economizer_ may be specified. The simulated economizer increases the outside air above the minimum when the outside air is cooler or has lower enthalpy than the return air, in order to reduce cooling coil energy usage. By default, there is no economizer. -**oaMnCtrl=*choice*** +**oaMnCtrl=_choice_** -Minimum outside air flow control method choice, VOLUME or FRACTION. Both computations are based on the minimum outside air flow, *oaVfDsMn*; if the control method is FRACTION, the outside air flow is pro-rated when the air handler is supplying less than its design cfm. In both cases the computed minimum cfm is multiplied by a schedulable fraction, *oaMnFrac*, to let you vary the outside air or turn in off when none is desired. +Minimum outside air flow control method choice, VOLUME or FRACTION. Both computations are based on the minimum outside air flow, _oaVfDsMn_; if the control method is FRACTION, the outside air flow is pro-rated when the air handler is supplying less than its design cfm. In both cases the computed minimum cfm is multiplied by a schedulable fraction, _oaMnFrac_, to let you vary the outside air or turn in off when none is desired. <%= csv_table(< false) VOLUME, Volume (cfm) of outside air is regulated: - , min\_oa\_flow = oaMnFrac \* oaVfDsMn +, min_oa_flow = oaMnFrac \* oaVfDsMn FRACTION, Fraction of outside air in supply air is regulated. The fraction is oaVfDsMn divided by sfanVfDs, the air handler supply fan design flow. The minimum cfm of outside air is thus computed as - , min\_oa\_flow = oaMnFrac \* curr\_flow \* oaVfDsMn / sfanVfDs - , where curr\_flow is the current air handler cfm. +, min_oa_flow = oaMnFrac \* curr_flow \* oaVfDsMn / sfanVfDs +, where curr_flow is the current air handler cfm. END %> -If the minimum outside air flow is greater than the total requested by the terminals served by the air handler, then 100% outside air at the latter flow is used. To insure minimum outside air cfm to the zones, use suitable terminal minimum flows (*tuVfMn*) as well as air handler minimum outside air specifications. +If the minimum outside air flow is greater than the total requested by the terminals served by the air handler, then 100% outside air at the latter flow is used. To insure minimum outside air cfm to the zones, use suitable terminal minimum flows (_tuVfMn_) as well as air handler minimum outside air specifications. <%= member_table( - units: "", - legal_range: "VOLUME, FRACTION", - default: "VOLUME", - required: "No", - variability: "constant") %> +units: "", +legal_range: "VOLUME, FRACTION", +default: "VOLUME", +required: "No", +variability: "constant") %> -**oaVfDsMn=*float*** +**oaVfDsMn=_float_** -Design minimum outside air flow. If *oaMnCtrl* is FRACTION, then this is the minimum outside air flow at full air handler flow. See formulas in *oaMnCtrl* description, just above. +Design minimum outside air flow. If _oaMnCtrl_ is FRACTION, then this is the minimum outside air flow at full air handler flow. See formulas in _oaMnCtrl_ description, just above. -<%= member_table( - units: "cfm", - legal_range: "*x* $\\ge$ 0", - default: "0.15 times total area of zones served", - required: "No", - variability: "constant") %> +<%= member*table( +units: "cfm", +legal_range: "\_x* $\\ge$ 0", +default: "0.15 times total area of zones served", +required: "No", +variability: "constant") %> -**oaMnFrac=*float*** +**oaMnFrac=_float_** -Fraction of minimum outside air to use this hour, normally 1.0. Use a CSE expression that evaluates to 0 for hours you wish to disable the minimum outside air flow, for example to suppress ventilation during the night or during warm-up hours. Intermediate values may be used for intermediate outside air minima. See formulas in *oaMnCtrl* description, above. +Fraction of minimum outside air to use this hour, normally 1.0. Use a CSE expression that evaluates to 0 for hours you wish to disable the minimum outside air flow, for example to suppress ventilation during the night or during warm-up hours. Intermediate values may be used for intermediate outside air minima. See formulas in _oaMnCtrl_ description, above. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "1.0", - required: "No", - variability: "hourly") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "1.0", +required: "No", +variability: "hourly") %> CAUTION: the minimum outside air flow only applies when the supply fan is running; it won't assure meeting minimum ventilation requirements when used with ahFanCycles = YES (constant volume, fan cycling). -**oaZoneLeak=*float*** +**oaZoneLeak=_float_** -For the purposes of airnet zone pressure modeling ONLY, *oaZoneLeak* specifies the fraction of supply air that is assumed to leak from zone(s) (as opposed to returning to the airhandler via the return duct). For example, if the supply air volume is 500 cfm and *oaZoneLeak* is 0.4, the values passed to airnet are 500 cfm inflow and 300 cfm outflow. The 200 cfm difference is distributed to other zone leaks according to their pressure/flow characteristics. +For the purposes of airnet zone pressure modeling ONLY, _oaZoneLeak_ specifies the fraction of supply air that is assumed to leak from zone(s) (as opposed to returning to the airhandler via the return duct). For example, if the supply air volume is 500 cfm and _oaZoneLeak_ is 0.4, the values passed to airnet are 500 cfm inflow and 300 cfm outflow. The 200 cfm difference is distributed to other zone leaks according to their pressure/flow characteristics. The default assumption is that airhandlers with return or relief fans provide balanced zone flows while half the supply flow leaks from zones served by supply-fan-only airhandlers. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "no return/relief fan: 0.5 else 0", - required: "No", - variability: "hourly") %> - +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "no return/relief fan: 0.5 else 0", +required: "No", +variability: "hourly") %> -If an *oaEcoType* choice other than NONE is given, an economizer will be simulated. The economizer will be enabled when the outside temperature is below oaLimT *AND* the outside air enthalpy is below oaLimE. When enabled, the economizer adjusts the economizer dampers to increase the outside air mixed with the return air until the mixture is cooler than the air handler supply temperature setpoint, if possible, or to maximum outside air if the outside air is not cool enough. +If an _oaEcoType_ choice other than NONE is given, an economizer will be simulated. The economizer will be enabled when the outside temperature is below oaLimT _AND_ the outside air enthalpy is below oaLimE. When enabled, the economizer adjusts the economizer dampers to increase the outside air mixed with the return air until the mixture is cooler than the air handler supply temperature setpoint, if possible, or to maximum outside air if the outside air is not cool enough. CAUTIONS: the simulated economizer is just as dumb as the hardware being simulated. Two considerations particularly require attention. First, if enabled when the outside air is warmer than the return air, it will do the worst possible thing: use 100% outside air. Prevent this by being sure your oaLimT or oaLimE input disables the economizer when the outside air is too warm -- or leave the oaLimT = RA default in effect. -Second, the economizer will operate even if the air handler is heating, resulting in use of more than minimum outside air should the return air get above the supply temperature setpoint. Economizers are intended for cooling air handlers; if you heat and cool with the same air handler, consider disabling the economizer when heating by scheduling a very low *oaLimT* or *oaLimE*. +Second, the economizer will operate even if the air handler is heating, resulting in use of more than minimum outside air should the return air get above the supply temperature setpoint. Economizers are intended for cooling air handlers; if you heat and cool with the same air handler, consider disabling the economizer when heating by scheduling a very low _oaLimT_ or _oaLimE_. -**oaEcoType=*choice*** + +**oaEcoType=_choice_** Type of economizer. Choice of: -<%= csv_table(< false) +<%= csv*table(< false) NONE, No economizer; outside air flow is the minimum. INTEGRATED, Coil and economizer operate independently. NONINTEGRATED, Coil does not run when economizer is using all outside air: simulates interlock in some equipment designed to prevent coil icing due to insufficient load, right? -TWO\_STAGE, Economizer is disabled when coil cycles on. *NOT IMPLEMENTED* as of July 1992. +TWO_STAGE, Economizer is disabled when coil cycles on. \_NOT IMPLEMENTED* as of July 1992. END %> -**oaLimT=*float* or *RA*** +**oaLimT=_float_ or _RA_** -Economizer outside air temperature high limit. The economizer is disabled (outside air flow is reduced to a minimum) when the outside air temperature is greater than *oaLimT*. A number may be entered, or "RA" to specify the current Return Air temperature. *OaLimT* may be scheduled to a low value, for example -99, if desired to disable the economizer at certain times. +Economizer outside air temperature high limit. The economizer is disabled (outside air flow is reduced to a minimum) when the outside air temperature is greater than _oaLimT_. A number may be entered, or "RA" to specify the current Return Air temperature. _OaLimT_ may be scheduled to a low value, for example -99, if desired to disable the economizer at certain times. -<%= member_table( - units: "^o^F", - legal_range: "*number* or RA", - default: "RA (return air temperature)", - required: "No", - variability: "hourly") %> +<%= member*table( +units: "^o^F", +legal_range: "\_number* or RA", +default: "RA (return air temperature)", +required: "No", +variability: "hourly") %> -**oaLimE=*float* or *RA*** +**oaLimE=_float_ or _RA_** -Economizer outside air enthalpy high limit. The economizer is disabled (outside air flow is reduced to a minimum) when the outside air enthalpy is greater than *oaLimE*. A number may be entered, or "RA" to specify the current Return Air enthalpy. *OaLimE* may be scheduled to a low value, for example -99, if desired to disable the economizer at certain times. +Economizer outside air enthalpy high limit. The economizer is disabled (outside air flow is reduced to a minimum) when the outside air enthalpy is greater than _oaLimE_. A number may be entered, or "RA" to specify the current Return Air enthalpy. _OaLimE_ may be scheduled to a low value, for example -99, if desired to disable the economizer at certain times. -<%= member_table( - units: "Btu/^o^F", - legal_range: "*number* or RA", - default: "999 (enthalpy limit disabled)", - required: "No", - variability: "hourly") %> +<%= member*table( +units: "Btu/^o^F", +legal_range: "\_number* or RA", +default: "999 (enthalpy limit disabled)", +required: "No", +variability: "hourly") %> -*oaOaLeak* and *oaRaLeak* specify leakages in the economizer dampers, when present. The leaks are constant-cfm flows, expressed as fractions of the maximum possible flow. Thus, when the current flow is less than the maximum possible, the range of operation of the economizer is reduced. When the two damper leakages add up to more than the current air handler flow, outside and return air are used in the ratio of the two leakages and the economizer, if enabled, is ineffective. +_oaOaLeak_ and _oaRaLeak_ specify leakages in the economizer dampers, when present. The leaks are constant-cfm flows, expressed as fractions of the maximum possible flow. Thus, when the current flow is less than the maximum possible, the range of operation of the economizer is reduced. When the two damper leakages add up to more than the current air handler flow, outside and return air are used in the ratio of the two leakages and the economizer, if enabled, is ineffective. -**oaOaLeak=*float*** +**oaOaLeak=_float_** -Outside air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. If an economizer is present, *oaOaLeak* is a fraction of the supply fan design cfm, *sfanVfDs*. Otherwise, *oaOaLeak* is a fraction of the design minimum outside air flow *oaVfDsMn*. +Outside air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. If an economizer is present, _oaOaLeak_ is a fraction of the supply fan design cfm, _sfanVfDs_. Otherwise, _oaOaLeak_ is a fraction of the design minimum outside air flow _oaVfDsMn_. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1.0", - default: "0.1", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +default: "0.1", +required: "No", +variability: "constant") %> -**oaRaLeak=*float*** +**oaRaLeak=_float_** -Return air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. Expressed as a fraction of the supply fan design cfm, *sfanVfDs*. Not used when no economizer is being modeled. +Return air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. Expressed as a fraction of the supply fan design cfm, _sfanVfDs_. Not used when no economizer is being modeled. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1.0", - default: "0.1", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +default: "0.1", +required: "No", +variability: "constant") %> ## AIRHANDLER Heat Recovery -The following data members are used to describe a heat exchanger for recovering heat from exhaust air. Heat recovery added to the model when a value for *oaHXSenEffHDs* is provided. +The following data members are used to describe a heat exchanger for recovering heat from exhaust air. Heat recovery added to the model when a value for _oaHXSenEffHDs_ is provided. -**oaHXVfDs=*float*** +**oaHXVfDs=_float_** Heat exchanger design or rated flow. -<%= member_table( - units: "cfm", - legal_range: "*x* $\\gt$ 0", - default: "*oaVfDsMn*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "cfm", +legal_range: "\_x* $\\gt$ 0", +default: "_oaVfDsMn_", +required: "No", +variability: "constant") %> -**oaHXf2=*float*** +**oaHXf2=_float_** Heat exchanger flow fraction (of design flow) used for second set of effectivenesses. -<%= member_table( - units: "", - legal_range: "0 $\\lt$ *x* $\\lt$ 1.0", - default: "0.75", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\lt$ \_x* $\\lt$ 1.0", +default: "0.75", +required: "No", +variability: "constant") %> -**oaHXSenEffHDs=*float*** +**oaHXSenEffHDs=_float_** Heat exchanger sensible effectiveness in heating mode at the design flow rate. Specifying input triggers modeling of heat recovery. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1.0", - required: "when modeling heat recovery", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +required: "when modeling heat recovery", +variability: "constant") %> -**oaHXSenEffHf2=*float*** +**oaHXSenEffHf2=_float_** Heat exchanger sensible effectiveness in heating mode at the second flow rate (**oaHXf2**). -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1.0", - default: "0", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +default: "0", +required: "No", +variability: "constant") %> -**oaHXLatEffHDs=*float*** +**oaHXLatEffHDs=_float_** Heat exchanger latent effectiveness in heating mode at the design flow rate. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1.0", - default: "0", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +default: "0", +required: "No", +variability: "constant") %> -**oaHXLatEffHf2=*float*** +**oaHXLatEffHf2=_float_** Heat exchanger latent effectiveness in heating mode at the second flow rate (**oaHXf2**). -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1.0", - default: "0", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +default: "0", +required: "No", +variability: "constant") %> -**oaHXSenEffCDs=*float*** +**oaHXSenEffCDs=_float_** Heat exchanger sensible effectiveness in cooling mode at the design flow rate. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1.0", - default: "0", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +default: "0", +required: "No", +variability: "constant") %> -**oaHXSenEffCf2=*float*** +**oaHXSenEffCf2=_float_** Heat exchanger sensible effectiveness in cooling mode at the second flow rate (**oaHXf2**). -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1.0", - default: "0", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +default: "0", +required: "No", +variability: "constant") %> -**oaHXLatEffCDs=*float*** +**oaHXLatEffCDs=_float_** Heat exchanger latent effectiveness in cooling mode at the design flow rate. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1.0", - default: "0", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +default: "0", +required: "No", +variability: "constant") %> -**oaHXLatEffCf2=*float*** +**oaHXLatEffCf2=_float_** Heat exchanger latent effectiveness in cooling mode at the second flow rate (**oaHXf2**). -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1.0", - default: "0", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +default: "0", +required: "No", +variability: "constant") %> -**oaHXBypass=*choice*** +**oaHXBypass=_choice_** Yes/No choice for enabling heat exchanger bypass. If selected, the outdoor air will bypass the heat exchanger when otherwise the heat exchanger would require more heating or cooling energy to meet the respective setpoints. <%= member_table( - units: "", - legal_range: "NO, YES", - default: "NO", - required: "No", - variability: "constant") %> +units: "", +legal_range: "NO, YES", +default: "NO", +required: "No", +variability: "constant") %> -**oaHXAuxPwr=*float*** +**oaHXAuxPwr=_float_** Auxiliary power required to operate the heat recovery device (e.g., wheel motor, contorls). -<%= member_table( - units: "W", - legal_range: "*x* $\\ge$ 0", - default: "0", - required: "No", - variability: "subhourly") %> +<%= member*table( +units: "W", +legal_range: "\_x* $\\ge$ 0", +default: "0", +required: "No", +variability: "subhourly") %> -**oaHXAuxMtr=*mtrName*** +**oaHXAuxMtr=_mtrName_** Name of meter, if any, to record energy used by auxiliary components of the heat recovery system. -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*not recorded*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_name of a METER*", +default: "_not recorded_", +required: "No", +variability: "constant") %> ## AIRHANDLER Leaks and Losses -*AhSOLeak* and *ahRoLeak* express air leaks in the common supply and return ducts, if any, that connect the air handler to the conditioned space. For leakage after the point where a duct branches off to an individual zone, see TERMINAL member *tuSRLeak*. These inputs model leaks in constant pressure (or vacuum) areas nearer the supply fan than the terminal VAV dampers; thus, they are constant volume regardless of flow to the zones. Hence, unless 0 leakage flows are specified, the air handler cfm is greater than the sum of the terminal cfm's, and the air handler cfm is non-0 even when all terminal flows are 0. Any heating or cooling energy applied to the excess cfm is lost to the outdoors. +_AhSOLeak_ and _ahRoLeak_ express air leaks in the common supply and return ducts, if any, that connect the air handler to the conditioned space. For leakage after the point where a duct branches off to an individual zone, see TERMINAL member _tuSRLeak_. These inputs model leaks in constant pressure (or vacuum) areas nearer the supply fan than the terminal VAV dampers; thus, they are constant volume regardless of flow to the zones. Hence, unless 0 leakage flows are specified, the air handler cfm is greater than the sum of the terminal cfm's, and the air handler cfm is non-0 even when all terminal flows are 0. Any heating or cooling energy applied to the excess cfm is lost to the outdoors. If unequal leaks are specified, at present (July 1992) CSE will use the average of the two specifications for both leaks, as the modeled supply and return flows must be equal. A future version may allow unequal flows, making up the difference in exfiltration or infiltration to the zones. -**ahSOLeak=*float*** +**ahSOLeak=_float_** -Supply duct leakage to outdoors, expressed as a fraction of supply fan design flow (*sfanVfDs*). Use 0 if the duct is indoors. A constant-cfm leak is modeled, as the pressure is constant when the fan is on. +Supply duct leakage to outdoors, expressed as a fraction of supply fan design flow (_sfanVfDs_). Use 0 if the duct is indoors. A constant-cfm leak is modeled, as the pressure is constant when the fan is on. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.01", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "0.01", +required: "No", +variability: "constant") %> -**ahROLeak=*float*** +**ahROLeak=_float_** -Return duct leakage FROM outdoors, expressed as a fraction of *sfanVfDs*. Use 0 if the duct is indoors. +Return duct leakage FROM outdoors, expressed as a fraction of _sfanVfDs_. Use 0 if the duct is indoors. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.01", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "0.01", +required: "No", +variability: "constant") %> -*AhSOLoss* and *ahROLoss* represent conductive losses from the common supply and return ducts to the outdoors. For an individual zone's conductive duct loss, see TERMINAL member *tuSRLoss*. Losses here are expressed as a fraction of the temperature difference which is lost. For example, if the supply air temperature is 120, the outdoor temperature is 60, and the pertinent loss is .1, the effect of the loss as modeled will be to reduce the supply air temperature by 6 degrees ( .1 \* (120 - 60) ) to 114 degrees. CSE currently models these losses a constant *TEMPERATURE LOSSes* regardless of cfm. +_AhSOLoss_ and _ahROLoss_ represent conductive losses from the common supply and return ducts to the outdoors. For an individual zone's conductive duct loss, see TERMINAL member _tuSRLoss_. Losses here are expressed as a fraction of the temperature difference which is lost. For example, if the supply air temperature is 120, the outdoor temperature is 60, and the pertinent loss is .1, the effect of the loss as modeled will be to reduce the supply air temperature by 6 degrees ( .1 \* (120 - 60) ) to 114 degrees. CSE currently models these losses a constant _TEMPERATURE LOSSes_ regardless of cfm. -**ahSOLoss=*float*** +**ahSOLoss=_float_** Supply duct loss/gain to the outdoors. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.1", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "0.1", +required: "No", +variability: "constant") %> -**ahROLoss=*float*** +**ahROLoss=_float_** Return duct heat loss/gain to the outdoors. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.1", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "0 $\\le$ \_x* $\\le$ 1", +default: "0.1", +required: "No", +variability: "constant") %> ## AIRHANDLER Crankcase Heater @@ -1685,109 +1683,109 @@ When modeling an air source heat pump (ahhcType = AHP), these variables should b Appropriateness of use of these inputs when specifying a DX system without associated heat pump heating is not clear to me (Rob) as of 10-23-92; on the one hand, the DX compressor probably has a crankcase heater; on the other hand, the rest of the DX model is supposed to be complete in itself, and adding a crankcase heater here might produce excessive energy input; on the third hand, the DX model does not include any energy input when the compressor is idle; ... . -**cchCM=*choice*** +**cchCM=_choice_** Crankcase heater presence and control method. Choice of: -<%= csv_table(< false) +<%= csv*table(< false) NONE, No crankcase heater present -CONSTANT, Crankcase heater input always *cchPMx* (below). -PTC, Proportional control based on oil temp when compressor does not run in subhour (see *cchTMx*, *cchMn*, and *cchDT*). If compressor runs at all in subhour, the oil is assumed to be hotter than *cchTMn* and crankcase heater input is *cchPMn*. (PTC stands for 'Positive Temperature Coefficient' or 'Proportional Temperature Control'.) -TSTAT, Control based on outdoor temperature, with optional differential, during subhours when compressor is off; crankcase heater does not operate if compressor runs at all in subhour. See *cchTOn*, *cchTOff*. -CONSTANT\_CLO -PTC\_CLO, Same as corresponding choices above except zero crankcase heater input during fraction of time compressor is on ('Compressor Lock Out'). There is no TSTAT\_CLO because under TSTAT the crankcase heater does not operate anyway when the compressor is on. +CONSTANT, Crankcase heater input always \_cchPMx* (below). +PTC, Proportional control based on oil temp when compressor does not run in subhour (see _cchTMx_, _cchMn_, and _cchDT_). If compressor runs at all in subhour, the oil is assumed to be hotter than _cchTMn_ and crankcase heater input is _cchPMn_. (PTC stands for 'Positive Temperature Coefficient' or 'Proportional Temperature Control'.) +TSTAT, Control based on outdoor temperature, with optional differential, during subhours when compressor is off; crankcase heater does not operate if compressor runs at all in subhour. See _cchTOn_, _cchTOff_. +CONSTANT_CLO +PTC_CLO, Same as corresponding choices above except zero crankcase heater input during fraction of time compressor is on ('Compressor Lock Out'). There is no TSTAT_CLO because under TSTAT the crankcase heater does not operate anyway when the compressor is on. END %> -<%= member_table( - units: "", - legal_range: "CONSTANT CONSTANT_CLO PTC PTC_CLO TSTAT NONE", - default: "PTC_CLO if *ahhcType* is AHP else NONE ", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "CONSTANT CONSTANT_CLO PTC PTC_CLO TSTAT NONE", +default: "PTC_CLO if \_ahhcType* is AHP else NONE ", +required: "No", +variability: "constant") %> -**cchPMx=*float*** +**cchPMx=_float_** -Crankcase resistance heater input power; maximum power if *cchCM* is PTC or PTC\_CLO. +Crankcase resistance heater input power; maximum power if _cchCM_ is PTC or PTC_CLO. -<%= member_table( - units: "kW", - legal_range: "*x* $\\gt$ 0", - default: ".4 kW", - required: "No", - variability: "constant") %> +<%= member*table( +units: "kW", +legal_range: "\_x* $\\gt$ 0", +default: ".4 kW", +required: "No", +variability: "constant") %> -**cchPMn=*float*** +**cchPMn=_float_** -Crankcase heater minimum input power if *cchCM* is PTC or PTC\_CLO, disallowed for other *cchCM's*. > 0. +Crankcase heater minimum input power if _cchCM_ is PTC or PTC*CLO, disallowed for other \_cchCM's*. > 0. -<%= member_table( - units: "kW", - legal_range: "*x* $\\gt$ 0", - default: ".04 kW", - required: "No", - variability: "constant") %> +<%= member*table( +units: "kW", +legal_range: "\_x* $\\gt$ 0", +default: ".04 kW", +required: "No", +variability: "constant") %> -**cchTMx=*float*** +**cchTMx=_float_** -**cchTMn=*float*** +**cchTMn=_float_** -For *cchCM* = PTC or PTC\_CLO, the low temperature (max power) and high temperature (min power) setpoints. In subhours when the compressor does not run, crankcase heater input is *cchPMx* when oil temperature is at or below *cchTMx*, *cchPMn* when oil temp is at or above *cchTMn*, and varies linearly (proportionally) in between. *cchTMn* must be $\ge$ *cchTMx*. See *cchDT* (next). +For _cchCM_ = PTC or PTC*CLO, the low temperature (max power) and high temperature (min power) setpoints. In subhours when the compressor does not run, crankcase heater input is \_cchPMx* when oil temperature is at or below _cchTMx_, _cchPMn_ when oil temp is at or above _cchTMn_, and varies linearly (proportionally) in between. _cchTMn_ must be $\ge$ _cchTMx_. See _cchDT_ (next). -(Note that actual thermostat setpoints probably cannot be used for *cchTMx* and *cchTMn* inputs, because the model assumes the difference between the oil temperature and the outdoor temperature is constant (*cchDT*) regardless of the heater power. +(Note that actual thermostat setpoints probably cannot be used for _cchTMx_ and _cchTMn_ inputs, because the model assumes the difference between the oil temperature and the outdoor temperature is constant (_cchDT_) regardless of the heater power. -<%= member_table( - units: "^o^F", - legal_range: "", - default: "*cchTMn*: 0; *cchTMx*: 150", - required: "No", - variability: "constant") %> +<%= member*table( +units: "^o^F", +legal_range: "", +default: "\_cchTMn*: 0; _cchTMx_: 150", +required: "No", +variability: "constant") %> -**cchDT=*float*** +**cchDT=_float_** -For *cchCM* = PTC or PTC\_CLO, how much warmer than the outdoor temp CSE assumes the crankcase oil to be in subhours when the compressor does not run. If the compressor runs at all in the subhour, the oil is assumed to be warmer than *cchTMn*. +For _cchCM_ = PTC or PTC*CLO, how much warmer than the outdoor temp CSE assumes the crankcase oil to be in subhours when the compressor does not run. If the compressor runs at all in the subhour, the oil is assumed to be warmer than \_cchTMn*. <%= member_table( - units: "^o^F", - legal_range: "", - default: "20^o^F", - required: "No", - variability: "constant") %> +units: "^o^F", +legal_range: "", +default: "20^o^F", +required: "No", +variability: "constant") %> -**cchTOn=*float*** +**cchTOn=_float_** -**cchTOff=*float*** +**cchTOff=_float_** -For *cchCM* = TSTAT, in subhours when compressor does not run, the crankcase heater turn-on and turn-off outdoor temperatures, respectively. Unequal values may be given to simulate thermostat differential. When the compressor runs at all in a subhour, the crankcase heater is off for the entire subhour. +For _cchCM_ = TSTAT, in subhours when compressor does not run, the crankcase heater turn-on and turn-off outdoor temperatures, respectively. Unequal values may be given to simulate thermostat differential. When the compressor runs at all in a subhour, the crankcase heater is off for the entire subhour. -<%= member_table( - units: "^o^F", - legal_range: "*cchTOff* $\\ge$ *cchTOn*", - default: "*cchTOn*: 72^o^F; *chcTOff*: *chcTOn*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "^o^F", +legal_range: "\_cchTOff* $\\ge$ _cchTOn_", +default: "_cchTOn_: 72^o^F; _chcTOff_: _chcTOn_", +required: "No", +variability: "constant") %> -**cchMtr=*name of a METER*** +**cchMtr=_name of a METER_** METER to record crankcase heater energy use, category "Aux"; not recorded if not given. -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*not recorded*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_name of a METER*", +default: "_not recorded_", +required: "No", +variability: "constant") %> **endAirHandler** Indicates the end of the air handler definition. Alternatively, the end of the air handler definition can be indicated by the declaration of another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "", +default: "\_none*", +required: "No", +variability: "constant") %> **Related Probes:** diff --git a/doc/src/records/battery.md b/doc/src/docs/input-data/battery.md similarity index 100% rename from doc/src/records/battery.md rename to doc/src/docs/input-data/battery.md diff --git a/doc/src/records/boiler.md b/doc/src/docs/input-data/boiler.md similarity index 100% rename from doc/src/records/boiler.md rename to doc/src/docs/input-data/boiler.md diff --git a/doc/src/records/chiller.md b/doc/src/docs/input-data/chiller.md similarity index 100% rename from doc/src/records/chiller.md rename to doc/src/docs/input-data/chiller.md diff --git a/doc/src/records/construction.md b/doc/src/docs/input-data/construction.md similarity index 100% rename from doc/src/records/construction.md rename to doc/src/docs/input-data/construction.md diff --git a/doc/src/records/coolplant.md b/doc/src/docs/input-data/coolplant.md similarity index 100% rename from doc/src/records/coolplant.md rename to doc/src/docs/input-data/coolplant.md diff --git a/doc/src/records/descond.md b/doc/src/docs/input-data/descond.md similarity index 100% rename from doc/src/records/descond.md rename to doc/src/docs/input-data/descond.md diff --git a/doc/src/records/dhwdayuse.md b/doc/src/docs/input-data/dhwdayuse.md similarity index 100% rename from doc/src/records/dhwdayuse.md rename to doc/src/docs/input-data/dhwdayuse.md diff --git a/doc/src/records/dhwheater-doc.md b/doc/src/docs/input-data/dhwheater-doc.md similarity index 100% rename from doc/src/records/dhwheater-doc.md rename to doc/src/docs/input-data/dhwheater-doc.md diff --git a/doc/src/records/dhwheater.md b/doc/src/docs/input-data/dhwheater.md similarity index 100% rename from doc/src/records/dhwheater.md rename to doc/src/docs/input-data/dhwheater.md diff --git a/doc/src/records/dhwheatrec.md b/doc/src/docs/input-data/dhwheatrec.md similarity index 100% rename from doc/src/records/dhwheatrec.md rename to doc/src/docs/input-data/dhwheatrec.md diff --git a/doc/src/records/dhwloop.md b/doc/src/docs/input-data/dhwloop.md similarity index 100% rename from doc/src/records/dhwloop.md rename to doc/src/docs/input-data/dhwloop.md diff --git a/doc/src/records/dhwloopbranch.md b/doc/src/docs/input-data/dhwloopbranch.md similarity index 100% rename from doc/src/records/dhwloopbranch.md rename to doc/src/docs/input-data/dhwloopbranch.md diff --git a/doc/src/records/dhwloopheater.md b/doc/src/docs/input-data/dhwloopheater.md similarity index 100% rename from doc/src/records/dhwloopheater.md rename to doc/src/docs/input-data/dhwloopheater.md diff --git a/doc/src/records/dhwlooppump.md b/doc/src/docs/input-data/dhwlooppump.md similarity index 100% rename from doc/src/records/dhwlooppump.md rename to doc/src/docs/input-data/dhwlooppump.md diff --git a/doc/src/records/dhwloopseg.md b/doc/src/docs/input-data/dhwloopseg.md similarity index 100% rename from doc/src/records/dhwloopseg.md rename to doc/src/docs/input-data/dhwloopseg.md diff --git a/doc/src/records/dhwmeter.md b/doc/src/docs/input-data/dhwmeter.md similarity index 100% rename from doc/src/records/dhwmeter.md rename to doc/src/docs/input-data/dhwmeter.md diff --git a/doc/src/records/dhwpump.md b/doc/src/docs/input-data/dhwpump.md similarity index 100% rename from doc/src/records/dhwpump.md rename to doc/src/docs/input-data/dhwpump.md diff --git a/doc/src/records/dhwsolarcollector.md b/doc/src/docs/input-data/dhwsolarcollector.md similarity index 100% rename from doc/src/records/dhwsolarcollector.md rename to doc/src/docs/input-data/dhwsolarcollector.md diff --git a/doc/src/records/dhwsolarsys.md b/doc/src/docs/input-data/dhwsolarsys.md similarity index 100% rename from doc/src/records/dhwsolarsys.md rename to doc/src/docs/input-data/dhwsolarsys.md diff --git a/doc/src/records/dhwsolartank.md b/doc/src/docs/input-data/dhwsolartank.md similarity index 100% rename from doc/src/records/dhwsolartank.md rename to doc/src/docs/input-data/dhwsolartank.md diff --git a/doc/src/records/dhwsys.md b/doc/src/docs/input-data/dhwsys.md similarity index 100% rename from doc/src/records/dhwsys.md rename to doc/src/docs/input-data/dhwsys.md diff --git a/doc/src/records/dhwtank.md b/doc/src/docs/input-data/dhwtank.md similarity index 100% rename from doc/src/records/dhwtank.md rename to doc/src/docs/input-data/dhwtank.md diff --git a/doc/src/records/dhwuse.md b/doc/src/docs/input-data/dhwuse.md similarity index 100% rename from doc/src/records/dhwuse.md rename to doc/src/docs/input-data/dhwuse.md diff --git a/doc/src/records/doas.md b/doc/src/docs/input-data/doas.md similarity index 100% rename from doc/src/records/doas.md rename to doc/src/docs/input-data/doas.md diff --git a/doc/src/records/door.md b/doc/src/docs/input-data/door.md similarity index 100% rename from doc/src/records/door.md rename to doc/src/docs/input-data/door.md diff --git a/doc/src/records/ductseg.md b/doc/src/docs/input-data/ductseg.md similarity index 100% rename from doc/src/records/ductseg.md rename to doc/src/docs/input-data/ductseg.md diff --git a/doc/src/records/export.md b/doc/src/docs/input-data/export.md similarity index 100% rename from doc/src/records/export.md rename to doc/src/docs/input-data/export.md diff --git a/doc/src/records/exportcol.md b/doc/src/docs/input-data/exportcol.md similarity index 100% rename from doc/src/records/exportcol.md rename to doc/src/docs/input-data/exportcol.md diff --git a/doc/src/records/exportfile.md b/doc/src/docs/input-data/exportfile.md similarity index 100% rename from doc/src/records/exportfile.md rename to doc/src/docs/input-data/exportfile.md diff --git a/doc/src/docs/input-data/fndblock.md b/doc/src/docs/input-data/fndblock.md new file mode 100644 index 000000000..f564534a8 --- /dev/null +++ b/doc/src/docs/input-data/fndblock.md @@ -0,0 +1,153 @@ +# FNDBLOCK + +Foundation blocks are materials within the two-dimensional domain beyond those defined by the slab and wall SURFACEs. Each block is represented as a rectangle in the domain by specifying the X (lateral) and Z (vertical) coordinates of two opposite corners. The coordinate system for each point is relative to the X and Z references defined by the user. As a convention The positive X direction is away from the building, and the positive Z direction is down. + +Options for X and Z references are illustrated in the figure below. + +![Foundation block references](../assets/images/fd_refs.png) + +The default reference is WALLINT, WALLTOP. + +An example of defining a block for interior wall insulation is shown below. Here the two points defining the block (P1 and P2) are both shown relative to their reference points (Ref1 and Ref2, respectively). + +![Foundation block example](../assets/images/fd_block.png) + +Note: X and Z point values of zero imply that a point is the same as the reference point. The default for X and Z point values is zero since points will often align with one or both of the reference values. + +It does not matter which of the four corners of a block are used to define the two points as long as they are opposite corners. + +**fbMat=_matName_** + +Name of MATERIAL of the foundation block. + +<%= member_table( +legal_range: "Name of a _Material_", +default: "_none_", +required: "Yes", +variability: "constant") %> + +**fbX1Ref=_choice_** + +Relative X origin for _fbX1_ point. Options are: + +- SYMMETRY +- WALLINT +- WALLCENTER +- WALLEXT +- FARFIELD + +<%= member_table( +units: "", +legal_range: "_choices above_", +default: "WALLINT", +required: "No", +variability: "constant") %> + +**fbZ1Ref=_choice_** + +Relative Z origin for _fbZ1_ point. Options are: + +- WALLTOP +- GRADE +- SLABTOP +- SLABBOTTOM +- WALLBOTTOM +- DEEPGROUND + +<%= member_table( +units: "", +legal_range: "_choices above_", +default: "WALLTOP", +required: "No", +variability: "constant") %> + +**fbX1=_float_** + +The X position of the first corner of the block relative to _fbX1Ref_. + +<%= member_table( +units: "ft", +legal_range: "", +default: "0.0", +required: "No", +variability: "constant") %> + +**fbZ1=_float_** + +The Z position of the first corner of the block relative to _fbZ1Ref_. + +<%= member_table( +units: "ft", +legal_range: "", +default: "0.0", +required: "No", +variability: "constant") %> + +**fbX2Ref=_choice_** + +Relative X origin for _fbX2_ point. Options are: + +- SYMMETRY +- WALLINT +- WALLCENTER +- WALLEXT +- FARFIELD + +<%= member_table( +units: "", +legal_range: "_choices above_", +default: "WALLINT", +required: "No", +variability: "constant") %> + +**fbZ2Ref=_choice_** + +Relative Z origin for _fbZ2_ point. Options are: + +- WALLTOP +- GRADE +- SLABTOP +- SLABBOTTOM +- WALLBOTTOM +- DEEPGROUND + +<%= member_table( +units: "", +legal_range: "_choices above_", +default: "WALLTOP", +required: "No", +variability: "constant") %> + +**fbX2=_float_** + +The X position of the second corner of the block relative to _fbX2Ref_. + +<%= member_table( +units: "ft", +legal_range: "", +default: "0.0", +required: "No", +variability: "constant") %> + +**fbZ2=_float_** + +The Z position of the second corner of the block relative to _fbZ2Ref_. + +<%= member_table( +units: "ft", +legal_range: "", +default: "0.0", +required: "No", +variability: "constant") %> + +**endFndBlock** + +Indicates the end of the foundation block definition. Alternatively, the end of the foundation block definition can be indicated by the declaration of another object or by END. + +<%= member_table( +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") +%> diff --git a/doc/src/records/foundation.md b/doc/src/docs/input-data/foundation.md similarity index 71% rename from doc/src/records/foundation.md rename to doc/src/docs/input-data/foundation.md index 4ed486ef3..b3f933e59 100644 --- a/doc/src/records/foundation.md +++ b/doc/src/docs/input-data/foundation.md @@ -2,7 +2,7 @@ Foundation describes the two-dimensional relationship between ground-contact SURFACEs (i.e., **sfExCnd** = GROUND) and the surrounding ground. A FOUNDATION is referenced by Floor SURFACEs (see **sfFnd**). FOUNDATIONs are used to describe the two-dimensional features of foundation designs that cannot be captured by the typical one-dimensional constructions. Dimensions from the one-dimensional CONSTRUCTIONs associated with ground-contact floors and walls will automatically be interpreted into the two-dimensional context. -![Two-dimensional context](media/fd_context.png) +![Two-dimensional context](../assets/images/fd_context.png) Any wall SURFACEs in contact with the ground must refer to a Floor SURFACE object (see **sfFndFloor**) to indicate which floor shares the same ground domain as a boundary condition (and establish the two-dimensional context for the basis of the ground calculations). @@ -36,61 +36,62 @@ Some properties applying to all FOUNDATIONs are defined at the TOP level: The following data members describe the dimensions and properties of the foundation wall. For below-grade walls, the CONSTRUCTION (and corresponding width) of the foundation wall is defined by the Wall SURFACEs referencing the FOUNDATION object. For on-grade floors, the CONSTRUCTION of the foundation wall must be defined using **fdFtCon**. The actual height of the foundation wall (from the top of the wall to the top of the slab) is defined by the corresponding SURFACE objects. -![Foundation wall dimensions](media/fd_dims.png) +![Foundation wall dimensions](../assets/images/fd_dims.png) - Other components of the foundation design (e.g., interior/exterior insulation) as well as other variations in thermal properties within the ground are defined using FNDBLOCK (foundation block) objects. Any number of FNDBLOCKs can appear after the definition of a FOUNDATION to be properly associated. +Other components of the foundation design (e.g., interior/exterior insulation) as well as other variations in thermal properties within the ground are defined using FNDBLOCK (foundation block) objects. Any number of FNDBLOCKs can appear after the definition of a FOUNDATION to be properly associated. **fdName** Name of foundation; give after the word FOUNDATION. Required for reference from SURFACE objects. <%= member_table( - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") %> +legal_range: "_63 characters_", +default: "_none_", +required: "Yes", +variability: "constant") %> -**fdWlHtAbvGrd=*float*** +**fdWlHtAbvGrd=_float_** Wall height above grade. <%= member_table( - units: "ft", - legal_range: "x $\\geq$ 0", - default: "0.0", - required: "No", - variability: "constant") %> +units: "ft", +legal_range: "x $\\geq$ 0", +default: "0.0", +required: "No", +variability: "constant") %> -**fdWlDpBlwSlb=*float*** +**fdWlDpBlwSlb=_float_** + Wall depth below slab. <%= member_table( - units: "ft", - legal_range: "x $\\geq$ 0", - default: "0.0", - required: "No", - variability: "constant") %> +units: "ft", +legal_range: "x $\\geq$ 0", +default: "0.0", +required: "No", +variability: "constant") %> -**fdFtCon=*conName*** +**fdFtCon=_conName_** Name of CONSTRUCTION of the footing wall. Only required **IF** it is a slab foundation (i.e., no wall surfaces reference this FOUNDATION object). <%= member_table( - legal_range: "Name of a *Construction*", - default: "*none*", - required: "if a slab foundation", - variability: "constant") %> +legal_range: "Name of a _Construction_", +default: "_none_", +required: "if a slab foundation", +variability: "constant") %> **endFoundation** Indicates the end of the foundation definition. Alternatively, the end of the foundation definition can be indicated by the declaration of another object or by END. <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") +%> diff --git a/doc/src/records/gain.md b/doc/src/docs/input-data/gain.md similarity index 100% rename from doc/src/records/gain.md rename to doc/src/docs/input-data/gain.md diff --git a/doc/src/records/glazetype.md b/doc/src/docs/input-data/glazetype.md similarity index 100% rename from doc/src/records/glazetype.md rename to doc/src/docs/input-data/glazetype.md diff --git a/doc/src/records/heatplant.md b/doc/src/docs/input-data/heatplant.md similarity index 100% rename from doc/src/records/heatplant.md rename to doc/src/docs/input-data/heatplant.md diff --git a/doc/src/records/holiday.md b/doc/src/docs/input-data/holiday.md similarity index 100% rename from doc/src/records/holiday.md rename to doc/src/docs/input-data/holiday.md diff --git a/doc/src/records/hploop.md b/doc/src/docs/input-data/hploop.md similarity index 100% rename from doc/src/records/hploop.md rename to doc/src/docs/input-data/hploop.md diff --git a/doc/src/records/importfile.md b/doc/src/docs/input-data/importfile.md similarity index 100% rename from doc/src/records/importfile.md rename to doc/src/docs/input-data/importfile.md diff --git a/doc/src/input-data.md b/doc/src/docs/input-data/index.md similarity index 60% rename from doc/src/input-data.md rename to doc/src/docs/input-data/index.md index 9df80f987..fd7f10bfd 100644 --- a/doc/src/input-data.md +++ b/doc/src/docs/input-data/index.md @@ -1,33 +1,27 @@ # Input Data -This section describes the input for each CSE class (object type). For each object you wish to define, the usual input consists of the class name, your name for the particular object (usually), and zero or more member value statements of the form *name=expression*. The name of each subsection of this section is a class name (HOLIDAY, MATERIAL, CONSTRUCTION, etc.). The object name, if given, follows the class name; it is the first thing in each description (hdName, matName, conName, etc.). Exception: no statement is used to create or begin the predefined top-level object "Top" (of class TOP); its members are given without introduction. +This section describes the input for each CSE class (object type). For each object you wish to define, the usual input consists of the class name, your name for the particular object (usually), and zero or more member value statements of the form _name=expression_. The name of each subsection of this section is a class name (HOLIDAY, MATERIAL, CONSTRUCTION, etc.). The object name, if given, follows the class name; it is the first thing in each description (hdName, matName, conName, etc.). Exception: no statement is used to create or begin the predefined top-level object "Top" (of class TOP); its members are given without introduction. -After the object name, each member's description is introduced with a line of the form *name=type*. *Type* indicates the appropriate expression type for the value: +After the object name, each member's description is introduced with a line of the form _name=type_. _Type_ indicates the appropriate expression type for the value: -- *float* +- _float_ -- *int* +- _int_ -- *string* +- _string_ -- \_\_\_\_*name* (object name for specified type of object) +- \_\_\_\__name_ (object name for specified type of object) -- *choice* +- _choice_ -- *date* +- _date_ These types discussed in the section on [expression types](#expression-types). Each member's description continues with a table of the form: -<%= member_table( - units: "ft^2^", - legal_range: "x > 0", - default: "wnHeight \\\* wnWidth", - required: "No", - variability: "constant") %> +{{ read_csv('../assets/tables/input-data--member-table.csv') }} where the column headers have the following meaning: -<%= csv_table_from_file("input-data--member-table-definition.csv", row_header: false) %> - +{{ read_csv('../assets/tables/input-data--member-table-definition.csv') }} diff --git a/doc/src/records/inverse.md b/doc/src/docs/input-data/inverse.md similarity index 100% rename from doc/src/records/inverse.md rename to doc/src/docs/input-data/inverse.md diff --git a/doc/src/records/izxfer.md b/doc/src/docs/input-data/izxfer.md similarity index 100% rename from doc/src/records/izxfer.md rename to doc/src/docs/input-data/izxfer.md diff --git a/doc/src/records/layer.md b/doc/src/docs/input-data/layer.md similarity index 100% rename from doc/src/records/layer.md rename to doc/src/docs/input-data/layer.md diff --git a/doc/src/records/loadmeter.md b/doc/src/docs/input-data/loadmeter.md similarity index 100% rename from doc/src/records/loadmeter.md rename to doc/src/docs/input-data/loadmeter.md diff --git a/doc/src/records/material.md b/doc/src/docs/input-data/material.md similarity index 100% rename from doc/src/records/material.md rename to doc/src/docs/input-data/material.md diff --git a/doc/src/records/meter.md b/doc/src/docs/input-data/meter.md similarity index 100% rename from doc/src/records/meter.md rename to doc/src/docs/input-data/meter.md diff --git a/doc/src/records/performancemap.md b/doc/src/docs/input-data/performancemap.md similarity index 100% rename from doc/src/records/performancemap.md rename to doc/src/docs/input-data/performancemap.md diff --git a/doc/src/records/perimeter.md b/doc/src/docs/input-data/perimeter.md similarity index 100% rename from doc/src/records/perimeter.md rename to doc/src/docs/input-data/perimeter.md diff --git a/doc/src/docs/input-data/pvarray.md b/doc/src/docs/input-data/pvarray.md new file mode 100644 index 000000000..cc1b28489 --- /dev/null +++ b/doc/src/docs/input-data/pvarray.md @@ -0,0 +1,287 @@ +# PVARRAY + +PVARRAY describes a photovoltaic panel system. The algorithms are based on the [PVWatts calculator](http://www.bwilcox.com/BEES/docs/Dobos%20-%20PVWatts%20v5.pdf). + +**pvName** + +Name of photovoltaic array. Give after the word PVARRAY. + +<%= member_table( +units: "", +legal_range: "_63 characters_", +default: "_none_", +required: "No", +variability: "constant") +%> + +**pvElecMtr=_choice_** + +Name of meter by which this PVARRAY's AC power out is recorded. Generated power is expressed as a negative value. + +<%= member_table( +units: "", +legal_range: "_name of a METER_", +default: "_none_", +required: "No", +variability: "constant") +%> + +**pvEndUse=_choice_** + +Meter end use to which the PVARRAY's generated energy should be accumulated. + +<%= insert_file('doc/src/enduses.md') %> + +<%= member_table( +units: "", +legal_range: "_Codes listed above_", +default: "PV", +required: "No", +variability: "constant") +%> + +**pvDCSysSize=_float_** + +The rated photovoltaic system DC capacity/size as indicated by the nameplate. + +<%= member_table( +units: "kW", +legal_range: "x $\\geq$ 0", +default: "_none_", +required: "Yes", +variability: "constant") +%> + +**pvModuleType=_choice_** + +Type of module to model. The module type determines the refraction index and temperature coefficient used in the simulation. Alternatively, the "Custom" module type may be used in conjunction with user-defined input for _pvCoverRefrInd_ and _pvTempCoeff_. + +<%= csv_table(< true) +**Module Type**, **pvCoverRefrInd**, **pvTempCoeff** +Standard, 1.3, -0.00206 +Premium, 1.3, -0.00194 +ThinFilm, 1.3, -0.00178 +Custom, User-defined, User-defined +END +%> + +<%= member_table( +units: "", +legal_range: "Standard Premium ThinFilm Custom", +default: "Standard", +required: "No", +variability: "constant") +%> + +**pvCoverRefrInd=_float_** + +The refraction index for the coating applied to the module cover. A value of 1.0 represents refraction through air. Coatings have higher refraction indexes that capture more solar at lower angles of incidence. + +<%= member_table( +units: "", +legal_range: "x $\\geq$ 0", +default: "1.3", +required: "No", +variability: "constant") +%> + +**pvTempCoeff=_float_** + +The temperature coefficient how the efficiency of the module varies with the cell temperature. Values are typically negative. + +<%= member_table( +units: "1/^o^F", +legal_range: "_no restrictions_", +default: "-0.00206", +required: "No", +variability: "constant") +%> + +**pvArrayType=_choice_** + +The type of array describes mounting and tracking options. Roof mounted arrays have a higher installed nominal operating cell temperature (INOCT) of 120 ^o^F compared to the default of 113 ^o^F. Array self-shading is not currently calculated for adjacent rows of modules within an array. + +<%= member_table( +units: "", +legal_range: " FixedOpenRack, FixedRoofMount, OneAxisTracking, TwoAxisTracking", +default: "FixedOpenRack", +required: "No", +variability: "constant") +%> + +**pvTilt=_float_** + +The tilt of the photovoltaic array from horizontal. Values outside the range 0 to 360 are first normalized to that range. For one-axis tracking, defines the tilt of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. + +<%= member_table( +units: "degrees", +legal_range: "unrestricted", +default: "from pvVertices (if given) else 0", +required: "No", +variability: "hourly") +%> + +The following figures illustrate the use of both pvTilt and pvAzm for various configurations: + +![Fixed, south facing, tilted at 40^o^](../assets/images/pv_fixed.png) + +![One-axis tracker, south facing, tilted at 20^o^](../assets/images/pv_tilted_tracker_south.png) + +![One-axis tracker, horizontal aligned North/South (more common)](../assets/images/pv_horiz_tracker_south.png) + +![One-axis tracker, horizontal aligned East/West (less common)](../assets/images/pv_horiz_tracker_east.png) + +**pvAzm=_float_** + +Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the range 0^o^ $\leq$ _x_ $<$ 360^o^ is given, it is normalized to that range. For one-axis tracking, defines the azimuth of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. + +<%= member_table( +units: "degrees", +legal_range: "unrestricted", +default: "from pvVertices (if given) else 0", +required: "No", +variability: "hourly") +%> + +**pvVertices=_list of up to 36 floats_** + +Vertices of an optional polygon representing the position and shape of the photovoltaic array. The polygon is used to calculate the shaded fraction using an advanced shading model. Only PVARRAYs and [SHADEXs](#shadex) are considered in the advanced shading model -- PVARRAYs can be shaded by SHADEXs or other PVARRAYs. If pvVertices is omitted, the PVARRAY is assumed to be unshaded at all times. Advanced shading must be enabled via [TOP exShadeModel](#top-model-control-items). Note that the polygon is used only for evaluating shading; array capacity is specified by pvDCSysSize (above). + +The values that follow pvVertices are a series of X, Y, and Z values for the vertices of the polygon using a coordinate system defined from a viewpoint facing north. X and Y values convey east-west and north-south location respectively relative to an arbitrary origin (positive X value are to the east; positive Y values are to the north). Z values convey height relative to the building 0 level and positive values are upward. + +The vertices are specified in counter-clockwise order when facing the receiving surface of the PVARRAY. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When pvMounting=Building, the effective position of the polygon is modified in response to building rotation specified by [TOP bldgAzm](#top-general-data-items). + +For example, to specify a rectangular photovoltaic array that is 10 x 20 ft, tilted 45 degrees, and facing south -- + + pvVertices = 0, 0, 15, 20, 0, 15, 20, 7.07, 22.07, 0, 7.07, 22.07 + +<%= member_table( +units: "ft", +legal_range: "unrestricted", +default: "no polygon", +required: "9, 12, 15, 18, 21, 24, 27, 30, 33, or 36 values", +variability: "constant") +%> + +**pvSIF=_float_** + +Shading Impact Factor (SIF) of the array used to represent the disproportionate impact on array output of partially shaded modules at the sub-array level. This impact is applied to the effective beam irradiance on the array: + +$$I_{poa,beam,eff} = \max\left(I_{poa,beam}\cdot\left(1-SIF\cdot f_{sh}\right),0\right)$$ + +where $f_{sh}$ is the fraction of the array that is shaded. + +Default value is 1.2, which is representative of PV systems with sub-array microinverters or DC power optimizers. For systems without sub-array power electronics, values are closer to 2.0. + +<%= member_table( +legal_range: "_x_ $\\geq$ 1.0", +default: "1.2", +required: "No", +variability: "constant") %> + +**pvMounting=_choice_** + +Specified mounting location of this PVARRAY. pvMounting=Site indicates the array position is not altered by building rotation via [TOP bldgAzm](#top-general-data-items), while PVARRAYs with pvMounting=Building are assumed to rotate with the building. + +<%= member_table( +units: "", +legal_range: "Building or Site", +default: "Building", +required: "No", +variability: "constant") +%> + +**pvGrndRefl=_float_** + +Ground reflectance used for calculating reflected solar incidence on the array. + +<%= member_table( +units: "", +legal_range: "0 $<$ _x_ $<$ 1.0", +default: "0.2", +required: "No", +variability: "hourly") +%> + + + +**pvDCtoACRatio=_float_** + +DC-to-AC ratio used to intentionally undersize the AC inverter. This is used to increase energy production in the beginning and end of the day despite the possibility of clipping peak sun hours. + +<%= member_table( +units: "", +legal_range: "_x_ > 0.0", +default: "1.2", +required: "No", +variability: "constant") +%> + +**pvInverterEff=_float_** + +AC inverter efficiency at rated DC power. + +<%= member_table( +units: "", +legal_range: "0 $<$ _x_ $<$ 1.0", +default: "0.96", +required: "No", +variability: "constant") +%> + +**pvSysLosses=_float_** + +Fraction of total DC energy lost. The total loss from a system is aggregated from several possible causes as illustrated below: + +<%= csv_table(< true) +**Loss Type**, **Default Assumption** +Soiling, 0.02 +_Shading_, _0 (handled explicitly)_ +Snow, 0 +_Mismatch_, _0 (shading mismatch handled explicitly [see pvSIF])_ +Wiring, 0.02 +Connections, 0.005 +Light-induced degradation, 0.015 +Nameplate rating, 0.01 +_Age_, _0.05 (estimated 0.5% degradation over 20 years)_ +Availability, 0.03 +**Total**, **0.14** +END +%> + +_Italic_ lines indicate differences from PVWatts assumptions. + +<%= member_table( +units: "", +legal_range: "0 $<$ _x_ $<$ 1.0", +default: "0.14", +required: "No", +variability: "hourly") +%> + +**endPVARRAY** + +Optionally indicates the end of the PVARRAY definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. + +<%= member_table( +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") +%> + +**Related Probes:** + +- @[PVArray](#p_pvarray) diff --git a/doc/src/records/report.md b/doc/src/docs/input-data/report.md similarity index 100% rename from doc/src/records/report.md rename to doc/src/docs/input-data/report.md diff --git a/doc/src/records/reportcol.md b/doc/src/docs/input-data/reportcol.md similarity index 100% rename from doc/src/records/reportcol.md rename to doc/src/docs/input-data/reportcol.md diff --git a/doc/src/records/reportfile.md b/doc/src/docs/input-data/reportfile.md similarity index 100% rename from doc/src/records/reportfile.md rename to doc/src/docs/input-data/reportfile.md diff --git a/doc/src/records/rsys.md b/doc/src/docs/input-data/rsys.md similarity index 100% rename from doc/src/records/rsys.md rename to doc/src/docs/input-data/rsys.md diff --git a/doc/src/records/sgdist.md b/doc/src/docs/input-data/sgdist.md similarity index 100% rename from doc/src/records/sgdist.md rename to doc/src/docs/input-data/sgdist.md diff --git a/doc/src/records/shade.md b/doc/src/docs/input-data/shade.md similarity index 100% rename from doc/src/records/shade.md rename to doc/src/docs/input-data/shade.md diff --git a/doc/src/records/shadex.md b/doc/src/docs/input-data/shadex.md similarity index 100% rename from doc/src/records/shadex.md rename to doc/src/docs/input-data/shadex.md diff --git a/doc/src/records/surface.md b/doc/src/docs/input-data/surface.md similarity index 100% rename from doc/src/records/surface.md rename to doc/src/docs/input-data/surface.md diff --git a/doc/src/records/terminal.md b/doc/src/docs/input-data/terminal.md similarity index 55% rename from doc/src/records/terminal.md rename to doc/src/docs/input-data/terminal.md index 77515de2c..6fbe7c904 100644 --- a/doc/src/records/terminal.md +++ b/doc/src/docs/input-data/terminal.md @@ -2,95 +2,95 @@ TERMINAL constructs an object to represent equipment that transfers energy to or from the current zone from a local heating device (coil, etc.) and/or one AIRHANDLER. A terminal serves a zone (and, internally, is owned by a zone). Up to three terminals can be defined for each zone. -A terminal can have local heating *capability,* using a simulated reheat coil, baseboard heater, etc. and/or air heating/cooling capability, using a simulated variable air volume (VAV) box connected to an AIRHANDLER (Section 0). Since a TERMINAL can only connect to a single air handler, use two terminals per zone to model systems where separate air handlers supply hot and cool air (dual duct). If a local heat capability utilizes the air flow (e.g. a reheat coil), model it in the terminal connected to the air handler; if a local heat capability is independent of air flow (e.g. electric baseboard heaters), it doesn't matter whether you model it with a separate terminal. +A terminal can have local heating _capability,_ using a simulated reheat coil, baseboard heater, etc. and/or air heating/cooling capability, using a simulated variable air volume (VAV) box connected to an AIRHANDLER (Section 0). Since a TERMINAL can only connect to a single air handler, use two terminals per zone to model systems where separate air handlers supply hot and cool air (dual duct). If a local heat capability utilizes the air flow (e.g. a reheat coil), model it in the terminal connected to the air handler; if a local heat capability is independent of air flow (e.g. electric baseboard heaters), it doesn't matter whether you model it with a separate terminal. -Each capability can be *set output*, in which the output is constant or determined by external conditions such as in an outdoor reset baseboard situation or *set temperature*, in which the output is modulated to maintain the zone temperature at a set point. Set temperature operation is established by giving the setpoint for the capability (tuTLh, tuTH, tuTC); set output operation is established by specifying the local heat output (tuQMnLh) or air flow (tuVfMn) without specifying a setpoint. +Each capability can be _set output_, in which the output is constant or determined by external conditions such as in an outdoor reset baseboard situation or _set temperature_, in which the output is modulated to maintain the zone temperature at a set point. Set temperature operation is established by giving the setpoint for the capability (tuTLh, tuTH, tuTC); set output operation is established by specifying the local heat output (tuQMnLh) or air flow (tuVfMn) without specifying a setpoint. Hourly variable expressions may be used as desired to schedule setpoints and flow limits. Figure 1 shows \[need sentence describing the figure.\] -![Insert Figure Title](media/image1.png) +![Insert Figure Title](../assets/images/image1.png) **tuName** Optional name of terminal; follows the word "TERMINAL" if given. <%= member_table( - units: "", - legal_range: "*63 characters*", - default: "", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_63 characters_", +default: "", +required: "No", +variability: "constant") %> ## TERMINAL Local Heating -These commands establish the TERMINAL's local heating capability and determine whether it operates in set output or set temperature fashion. Additional details of the local heating mechanism are given with commands described below under *terminal heating coil*. +These commands establish the TERMINAL's local heating capability and determine whether it operates in set output or set temperature fashion. Additional details of the local heating mechanism are given with commands described below under _terminal heating coil_. -*Either tuTLh or tuQMnLh must be given to establish the TERMINAL's local heat capability:* +_Either tuTLh or tuQMnLh must be given to establish the TERMINAL's local heat capability:_ -**tuTLh=*float*** +**tuTLh=_float_** -Local heating thermostat setpoint. Hourly expression may be used to schedule as desired. Giving this implies *set temperature* local heat from this terminal; omitting implies no local heat or, if tuQMnLh is given, set output local heat. +Local heating thermostat setpoint. Hourly expression may be used to schedule as desired. Giving this implies _set temperature_ local heat from this terminal; omitting implies no local heat or, if tuQMnLh is given, set output local heat. <%= member_table( - units: "^o^F", - legal_range: "x $>$ 0", - default: "*no thermostat control*", - required: "No", - variability: "hourly") %> +units: "^o^F", +legal_range: "x $>$ 0", +default: "_no thermostat control_", +required: "No", +variability: "hourly") %> -**tuQMnLh=*float*** +**tuQMnLh=_float_** -Minimum local heat output or set local heat output. If tuTLh is given, this is the minimum output, used when the thermostat is not calling for (local) heat. If tuTLh is not given, giving tuQMnLh implies *set output* local heat and specifies the set output level. An hourly expression may be used to schedule as desired. +Minimum local heat output or set local heat output. If tuTLh is given, this is the minimum output, used when the thermostat is not calling for (local) heat. If tuTLh is not given, giving tuQMnLh implies _set output_ local heat and specifies the set output level. An hourly expression may be used to schedule as desired. <%= member_table( - units: "Btuh", - legal_range: "x $\\ge$ 0", - default: "0 if tuTLh given else no local heat", - required: "For set output local heat", - variability: "hourly") %> +units: "Btuh", +legal_range: "x $\\ge$ 0", +default: "0 if tuTLh given else no local heat", +required: "For set output local heat", +variability: "hourly") %> The next three items are allowed only for thermostat controlled local heating (tuTLh given): -**tuQMxLh=*float*** +**tuQMxLh=_float_** -Maximum desired power, used when thermostat is calling for heat continuously, subject to coil capacity, and to HEATPLANT limitations where pertinent (see *tuhcCaptRat* description). If *tuQMxLh* is less than minimum power (tuQMnLh), the latter is used, effectively disabling setpoint control. +Maximum desired power, used when thermostat is calling for heat continuously, subject to coil capacity, and to HEATPLANT limitations where pertinent (see _tuhcCaptRat_ description). If _tuQMxLh_ is less than minimum power (tuQMnLh), the latter is used, effectively disabling setpoint control. <%= member_table( - units: "Btuh", - legal_range: "x $\\ge$ 0", - default: "", - required: "Yes, if tuTLh given", - variability: "hourly") %> +units: "Btuh", +legal_range: "x $\\ge$ 0", +default: "", +required: "Yes, if tuTLh given", +variability: "hourly") %> -**tuPriLh=*int*** +**tuPriLh=_int_** Setpoint priority: when there is more than one capability with the same setpoint, that with the highest priority (lowest value) is used first. The defaults for tuPriLh (100) and tuPriH (1) cause maximum air heat to be used before local heat, if both are present and the setpoints are the same. Two or more equal setpoints with equal priorities in the ZONE cause an error, even if in different TERMINALs. <%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "100", - required: "No", - variability: "constant") %> +units: "", +legal_range: "x $>$ 0", +default: "100", +required: "No", +variability: "constant") %> -**tuLhNeedsFlow=*choice*** +**tuLhNeedsFlow=_choice_** <%= csv_table(< false) - YES, local heat being modeled requires terminal air flow (e.g. reheat coil). Local heat is then disabled when there is zero air flow through the terminal (when simulated VAV damper set to 0 flow, or when air handler fan and terminal fan both off) - NO, no local heat or does not require air flow (e.g. baseboard heaters). +YES, local heat being modeled requires terminal air flow (e.g. reheat coil). Local heat is then disabled when there is zero air flow through the terminal (when simulated VAV damper set to 0 flow, or when air handler fan and terminal fan both off) +NO, no local heat or does not require air flow (e.g. baseboard heaters). END %> <%= member_table( - units: "", - legal_range: "YES, NO", - default: "NO", - required: "No", - variability: "constant") %> +units: "", +legal_range: "YES, NO", +default: "NO", +required: "No", +variability: "constant") %> ## TERMINAL Air Heating and Cooling -These commands establish whether the TERMINAL has air capability (heat, cool, or both), and whether the capability operates in *set temperature* mode (tuTH and/or tuTLh given) or *set output* mode (tuVfMn given without tuTH and tuTLh). They further establish the setpoints, flow limits, leakages, and losses. +These commands establish whether the TERMINAL has air capability (heat, cool, or both), and whether the capability operates in _set temperature_ mode (tuTH and/or tuTLh given) or _set output_ mode (tuVfMn given without tuTH and tuTLh). They further establish the setpoints, flow limits, leakages, and losses. Caution should be exercised in using air heat and air cooling in the same terminal. The supply air for both comes from the same air handler; it is up to you to make sure the terminal only calls for heat when the air handler is blowing hot air and only calls for cooling when the air handler is blowing cold air. This is done by carefully coordinating the variable expressions for terminal air heating and cooling setpoints (tuTH and tuTC here) and the air handler supply temperature setpoint (AIRHANDLER ahTsSp, Section 0). @@ -101,45 +101,44 @@ Note: To autosize air flows for a constant volume terminal, use the following AUTOSIZE tuVfMn tuVfMxHC = SAME -**tuAh=*ahName*** +**tuAh=_ahName_** Name of air handler supplying this terminal. <%= member_table( - units: "", - legal_range: "name of an *AIRHANDLER*", - default: "*If omitted*, terminal has no air heating nor cooling capability.", - required: "No", - variability: "constant") %> - +units: "", +legal_range: "name of an _AIRHANDLER_", +default: "_If omitted_, terminal has no air heating nor cooling capability.", +required: "No", +variability: "constant") %> If both of the following (tuTH and tuTC) are specified, be careful not to accidentally permit the heating setpoint to be active when the air handler is blowing cold air, or vice versa. CSE's simulated thermostats and VAV boxes are at least as dumb as their real counterparts; if the thermostat calls for heat, the VAV damper will open even if the supply air is colder than the zone. To schedule deactivation of the air heating or cooling capability, schedule an extreme setpoint, such as 1 for heating or 199 for cooling. -Giving neither tuTH nor tuTC implies that the terminal has no *set temperature* air capability; it will then have *set output* air capability if tuVfMn is given. +Giving neither tuTH nor tuTC implies that the terminal has no _set temperature_ air capability; it will then have _set output_ air capability if tuVfMn is given. -**tuTH=*float*** +**tuTH=_float_** -Air heating thermostat set point; implies *set temperature* air capability. May be scheduled as desired with an hourly expression; to disable set temperature operation at certain times (as when air handler is scheduled to supply cold air), schedule a low temperature such as 1. +Air heating thermostat set point; implies _set temperature_ air capability. May be scheduled as desired with an hourly expression; to disable set temperature operation at certain times (as when air handler is scheduled to supply cold air), schedule a low temperature such as 1. <%= member_table( - units: "^o^F", - legal_range: "x $\\ge$ 0", - default: "No thermostat-controlled air heating", - required: "No", - variability: "hourly") %> +units: "^o^F", +legal_range: "x $\\ge$ 0", +default: "No thermostat-controlled air heating", +required: "No", +variability: "hourly") %> -**tuTC=*float*** +**tuTC=_float_** -Air cooling thermostat set point; implies *set temperature* air capability. May be scheduled as desired; to disable at certain times, schedule an extreme temperature such as 199. +Air cooling thermostat set point; implies _set temperature_ air capability. May be scheduled as desired; to disable at certain times, schedule an extreme temperature such as 199. <%= member_table( - units: "^o^F", - legal_range: "x $\\ge$ 0", - default: "No thermostat-controlled air cooling", - required: "No", - variability: "hourly") %> +units: "^o^F", +legal_range: "x $\\ge$ 0", +default: "No thermostat-controlled air cooling", +required: "No", +variability: "hourly") %> -**tuVfDs=*float*** +**tuVfDs=_float_** Design air flow rate. ("Vf" in member names stands for "Volumetric Flow", to emphasize that flow is specified by volume at actual air temperature (cfm), not by mass (lb/hr), nor heat capacity (Btuh/F), etc.) @@ -148,322 +147,320 @@ The design air flow rate is used to apportion the available cfm among the termin CSE will default tuVfDs to the largest of tuVfMn, tuVfMxH, and tuVfMxC unless a variable expression is given for any of them. Thus, you must given tuVfDs only when a variable minimum or maximum flow is used, or when you wish to override the default cfm apportionment under fan overload conditions. <%= member_table( - units: "cfm", - legal_range: "x $\\ge$ 0", - default: "largest of tuVfMn, tuVfMxH, and tuVfMxC if all are constant", - required: "Yes, if tuVfmn, tuVfmxH, or tuVfMxC is variable", - variability: "hourly") %> - +units: "cfm", +legal_range: "x $\\ge$ 0", +default: "largest of tuVfMn, tuVfMxH, and tuVfMxC if all are constant", +required: "Yes, if tuVfmn, tuVfmxH, or tuVfMxC is variable", +variability: "hourly") %> -**tuFxVfHC=*float*** +**tuFxVfHC=_float_** -Sizing factor for autosized terminal air flows. Default value (1.1) specifies 10% oversizing. +Sizing factor for autosized terminal air flows. Default value (1.1) specifies 10% oversizing. <%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "1.1", - required: "No", - variability: "constant") %> +units: "", +legal_range: "x $\\ge$ 0", +default: "1.1", +required: "No", +variability: "constant") %> -**tuVfMxHC=*choice*** +**tuVfMxHC=_choice_** Determines autosizing strategy for heating and cooling air flows. <%= csv_table(< false) - SAME, tuVfMxH and tuVfMxC are set to the larger of the autosized values - DIFFERENT, tuVfMxH and tuVfMxC are autosized independently +SAME, tuVfMxH and tuVfMxC are set to the larger of the autosized values +DIFFERENT, tuVfMxH and tuVfMxC are autosized independently END %> <%= member_table( - units: "", - legal_range: "choices above", - default: "Different", - required: "No", - variability: "constant") %> +units: "", +legal_range: "choices above", +default: "Different", +required: "No", +variability: "constant") %> -**tuVfMn=*float*** +**tuVfMn=_float_** Minimum terminal air flow rate or set output air flow rate. An hourly expression may be used to schedule the minimum or set output flow as desired. -If neither tuTH nor tuTC is given, giving tuVfMn implies *set output* air capability for the terminal; the tvVfMn value is the set output cfm. +If neither tuTH nor tuTC is given, giving tuVfMn implies _set output_ air capability for the terminal; the tvVfMn value is the set output cfm. If either setpoint (tuTH or tuTC) is given, tuVfMn is the cfm used when the thermostat is not calling for heat nor cold; it might be non-0, for example, to meet ventilation requirements. If tuVfMn is larger than tuVfMxH (when heating) or tuVfMxC (when cooling), it overrules them; thus a minimum (e.g. ventilation) requirement need not be considered in formulating expressions for the maximum flows. <%= member_table( - units: "cfm", - legal_range: "*AUTOSIZE* or *x* $\\ge$ 0", - default: "if tuTH or tuTC given, else no air heat/cool", - required: "For set output air operation", - variability: "hourly") %> +units: "cfm", +legal_range: "_AUTOSIZE_ or _x_ $\\ge$ 0", +default: "if tuTH or tuTC given, else no air heat/cool", +required: "For set output air operation", +variability: "hourly") %> -**tuVfMxH=*float*** +**tuVfMxH=_float_** Maximum heating air flow rate, subject to air handler limitations. This terminal flow is used when the thermostat is calling for heat continuously. Hourly schedulable. If not greater than tuVfMn, the latter flow is used, thus disabling thermostat control. <%= member_table( - units: "cfm", - legal_range: "*AUTOSIZE* or *x* $\\ge$ 0", - default: "*none*", - required: "If *tuTH* given", - variability: "hourly") %> +units: "cfm", +legal_range: "_AUTOSIZE_ or _x_ $\\ge$ 0", +default: "_none_", +required: "If _tuTH_ given", +variability: "hourly") %> -**tuVfMxC=*float*** +**tuVfMxC=_float_** Maximum cooling air flow rate, before air handler limitations, used when the thermostat is calling for cooling continuously. tuVfMn overrides if larger. <%= member_table( - units: "cfm", - legal_range: "*AUTOSIZE* or *x* $\\ge$ 0", - default: "*none*", - required: "If *tuTC* given", - variability: "hourly") %> +units: "cfm", +legal_range: "_AUTOSIZE_ or _x_ $\\ge$ 0", +default: "_none_", +required: "If _tuTC_ given", +variability: "hourly") %> -**tuPriC=*int*** +**tuPriC=_int_** Cool setpoint priority. The lowest numbered priority is used first when there are equal setpoints in a zone; equal heat or cool setpoints with equal priority in same ZONE (even if on different TERMINALs) constitute an error. <%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "1", - required: "No", - variability: "constant") %> +units: "", +legal_range: "x $>$ 0", +default: "1", +required: "No", +variability: "constant") %> -**tuPriH=*int*** +**tuPriH=_int_** Heat setpoint priority. Lowest numbered priority is used first when there are equal setpoints in a zone. Default for tuPriLh is larger, so that by default local heat is not used unless maximum air heat is insufficient, when both local heat and air heat are present in zone and have same setpoint. <%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "1", - required: "No", - variability: "constant") %> +units: "", +legal_range: "x $>$ 0", +default: "1", +required: "No", +variability: "constant") %> -**tuSRLeak=*float*** +**tuSRLeak=_float_** -Leakage of supply air to return, increasing supply volume and return temperature. Note that this is a fraction of current cfm, whereas air handler leak (before VAV dampers) is a fraction of *maximum* cfm. TfanOffLeak is added to this if terminal has a fan that is not running (future, 7-92). +Leakage of supply air to return, increasing supply volume and return temperature. Note that this is a fraction of current cfm, whereas air handler leak (before VAV dampers) is a fraction of _maximum_ cfm. TfanOffLeak is added to this if terminal has a fan that is not running (future, 7-92). <%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.05", - required: "No", - variability: "constant") %> +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.05", +required: "No", +variability: "constant") %> -**tuSRLoss=*float*** +**tuSRLoss=_float_** Supply air to return plenum heat loss as a fraction of supply air to return air temperature difference. Not allowed if return is ducted (no plenum). -*NOT IMPLEMENTED as of July 1992 -- Plenums are unimplemented.* +_NOT IMPLEMENTED as of July 1992 -- Plenums are unimplemented._ <%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.1", - required: "No", - variability: "constant") %> +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.1", +required: "No", +variability: "constant") %> ## TERMINAL Heating Coil These members are disallowed if terminal has no local heating capability, that is, if neither tuTLh nor tuQMnLh is given. -**tuhcType=*choice*** +**tuhcType=_choice_** Local heating coil type: <%= csv_table(< false) - ELECTRIC, Electric coil or heater, including separate heaters such as electric baseboards. 100% efficient; rated capacity always available. - HW, Hot water coil, using hot water from amHEATPLANT. Available capacity may be limited by HEATPLANT total capacity as well as by coil rated capacity. +ELECTRIC, Electric coil or heater, including separate heaters such as electric baseboards. 100% efficient; rated capacity always available. +HW, Hot water coil, using hot water from amHEATPLANT. Available capacity may be limited by HEATPLANT total capacity as well as by coil rated capacity. END %> <%= member_table( - units: "", - legal_range: "ELECTRIC (future: HW)", - default: "ELECTRIC, or NONE if no local heat", - required: "No", - variability: "constant") %> +units: "", +legal_range: "ELECTRIC (future: HW)", +default: "ELECTRIC, or NONE if no local heat", +required: "No", +variability: "constant") %> -**tuhcCaptRat=*float*** +**tuhcCaptRat=_float_** Rated capacity of the heating coil. The coil will never supply more heat than its capacity, even if tuQMxLh and/or tuQMnLh is greater. For an ELECTRIC coil, the capacity is always the rated capacity. For an HW coil, the capacity is the rated capacity when the HEATPLANT can supply it; when the total heat demanded from the HEATPLANT by all the HW coils in TERMINALs and AIRHANDLERs exceeds the HEATPLANT's capacity, CSE reduces the capacities of all HW coils proportionately until the plant is not overloaded. <%= member_table( - units: "Btu/hr", - legal_range: "*AUTOSIZE* or *x* $\\gt$ 0", - default: "*none*", - required: "Yes", - variability: "constant") %> +units: "Btu/hr", +legal_range: "_AUTOSIZE_ or _x_ $\\gt$ 0", +default: "_none_", +required: "Yes", +variability: "constant") %> -**tuhcFxCap=*float*** +**tuhcFxCap=_float_** -Capacity factor for autosized terminal heating coil. Default value (1.1) specifies 10% oversizing. +Capacity factor for autosized terminal heating coil. Default value (1.1) specifies 10% oversizing. <%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "1.1", - required: "No", - variability: "constant") %> +units: "", +legal_range: "x $\\ge$ 0", +default: "1.1", +required: "No", +variability: "constant") %> -**tuhcMtr=*mtrName*** +**tuhcMtr=_mtrName_** Name of meter, if any, which accumulates input energy for this coil. End use category used is "Htg". Not allowed when tuhcType is HW, as the energy for an HW coil comes through a HEATPLANT; the input energy is accumulated to a meter by the HEATPLANT. <%= member_table( - units: "", - legal_range: "name of a METER", - default: "*not recorded*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "name of a METER", +default: "_not recorded_", +required: "No", +variability: "constant") %> **tuhcHeatplant=heat*plantName*** Name of HEATPLANT for HW coil; disallowed for other coil types. <%= member_table( - units: "", - legal_range: "name of a HEATPLANT", - default: "*none*", - required: "If tuhcType is HW", - variability: "constant") %> +units: "", +legal_range: "name of a HEATPLANT", +default: "_none_", +required: "If tuhcType is HW", +variability: "constant") %> ## TERMINAL Fan Presence of a terminal fan is indicated by specifying a tfanType value other than NONE. -Terminal fans are *NOT IMPLEMENTED* as of July 1992. +Terminal fans are _NOT IMPLEMENTED_ as of July 1992. -**tfanType=*choice*** +**tfanType=_choice_** Choice of: <%= csv_table(< false) - NONE, No fan in this TERMINAL (default); input for other terminal fan members disallowed. - SERIES, Fan runs whenever scheduled ON (see tfanSched, next); if VAV cfm < terminal fan cfm (tfanVfDs), the additional flow comes from the return air. - PARALLEL, Fan runs when scheduled ON (see tfanSched) and terminal's simulated VAV cfm is less than tfanVfDs plus tuVfMn ?? plus tuVfMn??. Terminal fan cfm is added to VAV cfm from AIRHANDLER to get cfm to ZONE. +NONE, No fan in this TERMINAL (default); input for other terminal fan members disallowed. +SERIES, Fan runs whenever scheduled ON (see tfanSched, next); if VAV cfm < terminal fan cfm (tfanVfDs), the additional flow comes from the return air. +PARALLEL, Fan runs when scheduled ON (see tfanSched) and terminal's simulated VAV cfm is less than tfanVfDs plus tuVfMn ?? plus tuVfMn??. Terminal fan cfm is added to VAV cfm from AIRHANDLER to get cfm to ZONE. END %> - <%= member_table( - units: "", - legal_range: "NONE, SERIES, PARALLEL", - default: "*none*", - required: "Yes, if fan present", - variability: "constant") %> +units: "", +legal_range: "NONE, SERIES, PARALLEL", +default: "_none_", +required: "Yes, if fan present", +variability: "constant") %> -**tfanSched=*choice*** +**tfanSched=_choice_** Terminal fan schedule. May be scheduled with an hourly variable expression. <%= csv_table(< false) - OFF, fan does not run - ON, fan may run - HEATING, fan may run when local heat is in use - VAV, fan may run when AIRHANDLER supply fan is on or when doing setback headting and ssCtrl is ZONE\_HEAT or BOTH (future). +OFF, fan does not run +ON, fan may run +HEATING, fan may run when local heat is in use +VAV, fan may run when AIRHANDLER supply fan is on or when doing setback headting and ssCtrl is ZONE_HEAT or BOTH (future). END %> A series fan (see tfanType) runs whenever on; a parallel fan runs only enough to keep terminal cfm at terminal minimum plus fan cfm; thus it may not run at all when the VAV flow from the AIRHANDLER is sufficient. <%= member_table( - units: "", - legal_range: "OFF, ON, HEATING, VAV", - default: "*none*", - required: "Yes (if fan present)", - variability: "hourly") %> +units: "", +legal_range: "OFF, ON, HEATING, VAV", +default: "_none_", +required: "Yes (if fan present)", +variability: "hourly") %> -**tfanOffLeak=*float*** +**tfanOffLeak=_float_** Backdraft leakage when terminal fan off., as a fraction of tfanVfDs. <%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.1 if fan present", - required: "No", - variability: "constant") %> +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.1 if fan present", +required: "No", +variability: "constant") %> -**tfanVfDs=*float*** +**tfanVfDs=_float_** Terminal fan design flow rate. To specify .x times zone or terminal cfm, use a CSE expression. <%= member_table( - units: "cfm", - legal_range: "x $\\le$ 0", - default: "*none*", - required: "Yes (if fan present)", - variability: "constant") %> +units: "cfm", +legal_range: "x $\\le$ 0", +default: "_none_", +required: "Yes (if fan present)", +variability: "constant") %> -**tfanPress=*float*** +**tfanPress=_float_** Terminal fan external static pressure. <%= member_table( - units: "inches H2O", - legal_range: "x $\\ge$ 0", - default: "0.3", - required: "No", - variability: "constant") %> +units: "inches H2O", +legal_range: "x $\\ge$ 0", +default: "0.3", +required: "No", +variability: "constant") %> -**tfanEff=*float*** +**tfanEff=_float_** Terminal fan/motor/drive combined efficiency. <%= member_table( - units: "", - legal_range: "0 $\le$ *x* $\le$ 1", - default: "0.08", - required: "No", - variability: "constant") %> +units: "", +legal_range: "0 $\le$ _x_ $\le$ 1", +default: "0.08", +required: "No", +variability: "constant") %> -**tfanCurvePy=*k0, k1, k2, k3, x0*** +**tfanCurvePy=_k0, k1, k2, k3, x0_** -*k0* through *k3* are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow *x0*. Up to five *floats* may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: +_k0_ through _k3_ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow _x0_. Up to five _floats_ may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: $$z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3$$ where: -- $x$ is the relative fan air flow (as fraction of *tfanVfDs*; 0 $\le$ x $\le$ 1); -- $x_0$ is the minimum relative air flow (default 0); -- $(x - x_0)|$ is the "positive difference", i.e. $(x - x_0)$ if $x > x_0$; else 0; -- $z$ is the relative energy consumption. +- $x$ is the relative fan air flow (as fraction of _tfanVfDs_; 0 $\le$ x $\le$ 1); +- $x_0$ is the minimum relative air flow (default 0); +- $(x - x_0)|$ is the "positive difference", i.e. $(x - x_0)$ if $x > x_0$; else 0; +- $z$ is the relative energy consumption. If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. <%= member_table( - units: "", - legal_range: "", - default: "*0, 1, 0, 0, 0 (linear)*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "_0, 1, 0, 0, 0 (linear)_", +required: "No", +variability: "constant") %> -**tfanMtr=*mtrName*** +**tfanMtr=_mtrName_** Name of meter, if any, which is to record energy used by this terminal fan. The "fans" category is used. <%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*not recorded*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_name of a METER_", +default: "_not recorded_", +required: "No", +variability: "constant") %> **endTerminal** Optional to indicates the end of terminal definition. Alternatively, the end of the door definition can be indicated by END or by beginning another object. <%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "x $\\ge$ 0", +default: "_none_", +required: "No", +variability: "constant") %> **Related Probes:** diff --git a/doc/src/records/top-members.md b/doc/src/docs/input-data/top-members.md similarity index 100% rename from doc/src/records/top-members.md rename to doc/src/docs/input-data/top-members.md diff --git a/doc/src/records/towerplant.md b/doc/src/docs/input-data/towerplant.md similarity index 100% rename from doc/src/records/towerplant.md rename to doc/src/docs/input-data/towerplant.md diff --git a/doc/src/records/window.md b/doc/src/docs/input-data/window.md similarity index 100% rename from doc/src/records/window.md rename to doc/src/docs/input-data/window.md diff --git a/doc/src/records/zone.md b/doc/src/docs/input-data/zone.md similarity index 100% rename from doc/src/records/zone.md rename to doc/src/docs/input-data/zone.md diff --git a/doc/src/input-structure.md b/doc/src/docs/input-structure.md similarity index 66% rename from doc/src/input-structure.md rename to doc/src/docs/input-structure.md index 458065d56..af22e0202 100644 --- a/doc/src/input-structure.md +++ b/doc/src/docs/input-structure.md @@ -1,8 +1,6 @@ # Input Structure -**DRAFT:** In the following, any text annotated with ?? indicates areas of uncertainty or probable change. As the program and input language develop, these matters will be resolved. - -## Introduction {#introduction-1} +## Introduction The CSE Input Language is the fundamental interface to the CSE program. The language has been designed with three objectives in mind: @@ -18,13 +16,13 @@ CSE reads its input from a file. The file may be prepared by the user with a tex ## Form of the CSE Data -The data used by CSE consists of *objects*. Each object is of a *class*, which determines what the object represents. For example, objects of class ZONE represent thermally distinct regions of the building; each thermally distinct region has its own ZONE object. An object's class determines what data items or *members* it contains. For instance, a ZONE object contains the zone's area and volume. In addition, each object can have a *name*. +The data used by CSE consists of _objects_. Each object is of a _class_, which determines what the object represents. For example, objects of class ZONE represent thermally distinct regions of the building; each thermally distinct region has its own ZONE object. An object's class determines what data items or _members_ it contains. For instance, a ZONE object contains the zone's area and volume. In addition, each object can have a _name_. -The objects are organized in a hierarchy, or tree-like structure. For example, under each ZONE object, there can be SURFACE objects to represent the walls, floors, and ceilings of the ZONE. Under SURFACEs there can be WINDOW objects to represent glazings in the particular wall or roof. SURFACE is said to be a *subclass* of the class ZONE and WINDOW a subclass of SURFACE; each individual SURFACE is said to be a *subobject* of its particular ZONE object. Conversely, each individual SURFACE is said to be *owned by* its zone, and the SURFACE class is said to be owned by the ZONE class. +The objects are organized in a hierarchy, or tree-like structure. For example, under each ZONE object, there can be SURFACE objects to represent the walls, floors, and ceilings of the ZONE. Under SURFACEs there can be WINDOW objects to represent glazings in the particular wall or roof. SURFACE is said to be a _subclass_ of the class ZONE and WINDOW a subclass of SURFACE; each individual SURFACE is said to be a _subobject_ of its particular ZONE object. Conversely, each individual SURFACE is said to be _owned by_ its zone, and the SURFACE class is said to be owned by the ZONE class. -The hierarchy is rooted in the one *top-level object* (or just *Top*). The top level object contains information global to the entire simulation, such as the start and end dates, as well as all of the objects that describe the building to be simulated and the reports to be printed. +The hierarchy is rooted in the one _top-level object_ (or just _Top_). The top level object contains information global to the entire simulation, such as the start and end dates, as well as all of the objects that describe the building to be simulated and the reports to be printed. -Objects and their required data must be specified by the user, except that Top is predefined. This is done with input language *statements*. Each statement begins an object (specifying its class and object name) or gives a value for a data member of the object being created. Each object is specified with a group of statements that are usually given together, and the objects must be organized according to the hierarchy. For example, SURFACEs must be specified within ZONEs and WINDOWs within SURFACEs. Each SURFACE belongs to (is a subobject of) the ZONE within which it is specified, and each WINDOW is a subobject of its SURFACE. +Objects and their required data must be specified by the user, except that Top is predefined. This is done with input language _statements_. Each statement begins an object (specifying its class and object name) or gives a value for a data member of the object being created. Each object is specified with a group of statements that are usually given together, and the objects must be organized according to the hierarchy. For example, SURFACEs must be specified within ZONEs and WINDOWs within SURFACEs. Each SURFACE belongs to (is a subobject of) the ZONE within which it is specified, and each WINDOW is a subobject of its SURFACE. The entire hierarchy of CSE classes can be represented as follows, using indentation to indicate subclasses: @@ -48,8 +46,8 @@ TODO: review hierarchy DHWLOOPPUMP DHWLOOPSEG DHWLOOPBRANCH - DHWSOLARSYS - DHWSOLARCOLLECTOR + DHWSOLARSYS + DHWSOLARCOLLECTOR ZONE GAIN SURFACE @@ -57,36 +55,37 @@ TODO: review hierarchy SHADE SGDIST DOOR + <% if inactive_CNE_records %> - PERIMETER - TERMINAL - AIRHANDLER - HEATPLANT - BOILER - COOLPLANT - TOWERPLANT - HPLOOP +PERIMETER +TERMINAL +AIRHANDLER +HEATPLANT +BOILER +COOLPLANT +TOWERPLANT +HPLOOP <% end %> - REPORTFILE - REPORT - REPORTCOL - EXPORTFILE - EXPORT - EXPORTCOL +REPORTFILE +REPORT +REPORTCOL +EXPORTFILE +EXPORT +EXPORTCOL ## Overview of CSE Input Language -The CSE Input Language consists of *commands*, each beginning with a particular word and, preferably, ending with a semicolon. Each command is either an *action-command*, which specifies some action such as starting a simulation run, or a *statement*, which creates or modifies an *object* or specifies a value for a *member* of an object. +The CSE Input Language consists of _commands_, each beginning with a particular word and, preferably, ending with a semicolon. Each command is either an _action-command_, which specifies some action such as starting a simulation run, or a _statement_, which creates or modifies an _object_ or specifies a value for a _member_ of an object. ### Statements -- Overview -A statement that creates an object consists basically of the *class name* followed by your name for the object to be created. (The name can be omitted for most classes; optional modifying clauses will be described later.) For example, +A statement that creates an object consists basically of the _class name_ followed by your name for the object to be created. (The name can be omitted for most classes; optional modifying clauses will be described later.) For example, ZONE "north"; begins an object of class ZONE; the particular zone will be named "north". This zone name will appear in reports and error messages, and will be used in other statements that operate on the zone. As well as creating the ZONE, this statement sets CSE to expect statements specifying ZONE data members or ZONE subobjects to follow. -A statement specifying a data member consists of the data member's name, an = sign, an *expression* specifying the value, and a terminating semicolon. An expression is a valid combination of operands and operators as detailed later; commonly it is just a number, name, or text enclosed in quotes. For example, +A statement specifying a data member consists of the data member's name, an = sign, an _expression_ specifying the value, and a terminating semicolon. An expression is a valid combination of operands and operators as detailed later; commonly it is just a number, name, or text enclosed in quotes. For example, znVol = 100000; @@ -98,7 +97,7 @@ Statements are free-form; several can be put on a line, or a single statement ca Capitalization generally does not matter in input language statements; we like to capitalize class names to make them stand out. Words that differ only in capitalization are NOT distinct to CSE. -*Comments* (remarks) may be interspersed with commands. Comments are used to make the input file clearer to humans; they are ignored by CSE. A comment introduced with "//" ends at the end of the line; a comment introduced with "/\*" continues past the next "\*/", whether on the same line, next line, or many lines down. Additional input language may follow the \*/ on the same line. +_Comments_ (remarks) may be interspersed with commands. Comments are used to make the input file clearer to humans; they are ignored by CSE. A comment introduced with "//" ends at the end of the line; a comment introduced with "/\*" continues past the next "\*/", whether on the same line, next line, or many lines down. Additional input language may follow the \*/ on the same line. ### Nested Objects @@ -152,11 +151,11 @@ The following is a brief CSE input file, annotated with comments intended to exe ### Expressions -- Overview -*Expressions* are the parts of statements that specify values -- numeric values, string values, object name values, and choice values. Expressions are composed of operators and operands, in a manner similar to many programming languages. The available operators and operands will be described in the section on [operators](#operators). +_Expressions_ are the parts of statements that specify values -- numeric values, string values, object name values, and choice values. Expressions are composed of operators and operands, in a manner similar to many programming languages. The available operators and operands will be described in the section on [operators](#operators). -Unlike most programming languages, CSE expressions have Variation. *Variation* is how often a value changes during the simulation run -- hourly, daily, monthly, yearly (i.e. does not change during run), etc. For instance, the operand `$hour` represents the hour of the day and has "hourly" variation. An expression has the variation of its fastest-varying component. +Unlike most programming languages, CSE expressions have Variation. _Variation_ is how often a value changes during the simulation run -- hourly, daily, monthly, yearly (i.e. does not change during run), etc. For instance, the operand `$hour` represents the hour of the day and has "hourly" variation. An expression has the variation of its fastest-varying component. -Each data member of each object (and every context in which an expression may be used) has its allowed *variability*, which is the fastest variation it will accept. Many members allow no variability. For example, `begDay`, the date on which the run starts, cannot meaningfully change during the run. On the other hand, a thermostat setting can change hourly. Thermostat settings and other scheduled values are specified in CSE with expressions that often make use of variability; there is no explicit SCHEDULE class. +Each data member of each object (and every context in which an expression may be used) has its allowed _variability_, which is the fastest variation it will accept. Many members allow no variability. For example, `begDay`, the date on which the run starts, cannot meaningfully change during the run. On the other hand, a thermostat setting can change hourly. Thermostat settings and other scheduled values are specified in CSE with expressions that often make use of variability; there is no explicit SCHEDULE class. For example, a heating setpoint that was 68 during business hours and 55 at night might be expressed as @@ -221,9 +220,9 @@ A CSE input file for a building with two zones, four gains, and two air handlers ## The Preprocessor -*Note: The organization and wording of this section is based on section A12 of Kernigan and Richie \[1988\]. The reader is referred to that source for a somewhat more rigorous presentation but with the caution that the CSE input language preprocessor does not **completely** comply to ANSI C specifications.* +_Note: The organization and wording of this section is based on section A12 of Kernigan and Richie \[1988\]. The reader is referred to that source for a somewhat more rigorous presentation but with the caution that the CSE input language preprocessor does not **completely** comply to ANSI C specifications._ -The preprocessor performs macro definition and expansion, file inclusion, and conditional inclusion/exclusion of text. Lines whose first non-whitespace character is `#` communicate with the preprocessor and are designated *preprocessor directives*. Line boundaries are significant to the preprocessor (in contrast to the rest of the input language in which a newline is simply whitespace), although adjacent lines can be spliced with \\, as discussed below. The syntax of preprocessor directives is separate from that of the rest of the language. Preprocessor directives can appear anywhere in an input file and their effects last until the end of the input file. The directives that are supported by the input language preprocessor are the following: +The preprocessor performs macro definition and expansion, file inclusion, and conditional inclusion/exclusion of text. Lines whose first non-whitespace character is `#` communicate with the preprocessor and are designated _preprocessor directives_. Line boundaries are significant to the preprocessor (in contrast to the rest of the input language in which a newline is simply whitespace), although adjacent lines can be spliced with \\, as discussed below. The syntax of preprocessor directives is separate from that of the rest of the language. Preprocessor directives can appear anywhere in an input file and their effects last until the end of the input file. The directives that are supported by the input language preprocessor are the following: #if #else @@ -239,7 +238,7 @@ The preprocessor performs macro definition and expansion, file inclusion, and co ### Line splicing -If the last character on a line is the backslash \\, then the next line is spliced to that line by elimination of the backslash and the following newline. Line splicing occurs *before* the line is divided into tokens. +If the last character on a line is the backslash \\, then the next line is spliced to that line by elimination of the backslash and the following newline. Line splicing occurs _before_ the line is divided into tokens. Line splicing finds its main use in defining long macros: @@ -263,7 +262,7 @@ A line of the form where there is no space between the identifier and the (, is a macro with parameters given by the identifier list. The expansion of macros with parameters is discussed below. -Macros may also be defined *on the CSE command line*, making it possible to vary a run without changing the input files at all. As described in the [command line](#command-line) section, macros are defined on the CSE command line using the `-D` switch in the forms +Macros may also be defined _on the CSE command line_, making it possible to vary a run without changing the input files at all. As described in the [command line](#command-line) section, macros are defined on the CSE command line using the `-D` switch in the forms -D_identifier_ @@ -299,9 +298,9 @@ The outer enclosing set of parentheses are not strictly needed in our example, b Note 1: The CSE preprocessor does not support the ANSI C stringizing (\#) or concatenation (\#\#) operators. -Note 2: Identifiers are case *insensitive* (unlike ANSI C). For example, the text “myHeight” will be replaced by the `#defined` value of MYHEIGHT (if there is one). +Note 2: Identifiers are case _insensitive_ (unlike ANSI C). For example, the text “myHeight” will be replaced by the `#defined` value of MYHEIGHT (if there is one). -*The preprocessor examples at the end of this section illustrate macro definition and expansion.* +_The preprocessor examples at the end of this section illustrate macro definition and expansion._ ### File inclusion @@ -319,7 +318,7 @@ For an example of the use `#include`s, please see the preprocessor examples at t ### Conditional inclusion of text -Conditional text inclusion provides a facility for selectively including or excluding groups of input file lines. The lines so included or excluded may be either CSE input language text *or other preprocessor directives*. The latter capability is very powerful. +Conditional text inclusion provides a facility for selectively including or excluding groups of input file lines. The lines so included or excluded may be either CSE input language text _or other preprocessor directives_. The latter capability is very powerful. Several conditional inclusion directive involve integer constant expressions. Constant integer expressions are formed according the rules discussed in the section on [expressions](#expressions) with the following changes: @@ -331,7 +330,7 @@ Several conditional inclusion directive involve integer constant expressions. Co 4. A special operand defined( ) is provided; it is described below. -Macro expansion *is* performed on constant expression text, so symbolic expressions can be used (see examples below). +Macro expansion _is_ performed on constant expression text, so symbolic expressions can be used (see examples below). The basic conditional format uses the directive @@ -339,11 +338,11 @@ The basic conditional format uses the directive If the constant expression has the value 0, all lines following the `#if` are dropped from the input stream (the preprocessor discards them) until a matching `#else`, `#elif`, or `#endif` directive is encountered. -The defined( *identifier* ) operand returns 1 if the identifier is the name of a defined macro, otherwise 0. Thus +The defined( _identifier_ ) operand returns 1 if the identifier is the name of a defined macro, otherwise 0. Thus #if defined( _identifier_ ) -can be used to control text inclusion based on macro flags. Two `#if` variants that test whether a macro is defined are also available. `#ifdef` *identifier* is equivalent to `#if` defined(*identifier*) and `#ifndef` *identifier* is equivalent to `#if` !defined(*identifier*). +can be used to control text inclusion based on macro flags. Two `#if` variants that test whether a macro is defined are also available. `#ifdef` _identifier_ is equivalent to `#if` defined(_identifier_) and `#ifndef` _identifier_ is equivalent to `#if` !defined(_identifier_). Defined(), `#ifdef`, and `#ifndef` consider a macro name "defined" even if the body of its definition contains no characters; thus a macro to be tested with one of these can be defined with just @@ -351,7 +350,7 @@ Defined(), `#ifdef`, and `#ifndef` consider a macro name "defined" even if the b or with just "-D*identifier*" on the CSE command line. -Conditional blocks are most simply terminated with `#endif`, but `#else` and `#elif` *constant-expression* are also available for selecting one of two or more alternative text blocks. +Conditional blocks are most simply terminated with `#endif`, but `#else` and `#elif` _constant-expression_ are also available for selecting one of two or more alternative text blocks. The simplest use of `#if` is to "turn off" sections of an input file without editing them out: @@ -372,7 +371,7 @@ Or, portions of the input file can be conditionally selected: Note that if a set of `#if` ... `#elif` ... `#elif` conditionals does not contain an `#else`, it is possible for all lines to be excluded. -Finally, it is once again important to note that conditional directives *nest*, as shown in the following example (indentation is included for clarity only): +Finally, it is once again important to note that conditional directives _nest_, as shown in the following example (indentation is included for clarity only): #if 0 This text is NOT included. @@ -385,7 +384,7 @@ Finally, it is once again important to note that conditional directives *nest*, ### Input echo control -By default, CSE echos all input text to the input echo report (see REPORT rpType=INP). #echooff and #echoon allow disabling and re-enabling text echoing. This capability is useful reducing +By default, CSE echos all input text to the input echo report (see REPORT rpType=INP). #echooff and #echoon allow disabling and re-enabling text echoing. This capability is useful reducing report file size by suppressing echo of, for example, large standard include files. ... some input ... // text sent to the input echo report @@ -398,10 +397,10 @@ report file size by suppressing echo of, for example, large standard include fil Nesting is supported -- each #echoon "undoes" the prior #echooff, but echoing does not resume until the topmost (earliest) #echooff is cancelled. -* #echoon has no effect when echoing is already active. -* Unmatched #echooffs are ignored -- echoing remains disabled through the end -of the input stream. +- echoon has no effect when echoing is already active. +- Unmatched #echooffs are ignored -- echoing remains disabled through the end + of the input stream. ### Preprocessor examples @@ -432,7 +431,7 @@ The actual input file would look like this: #redefine FLRAREA 2000 #include "base." -Macros are also useful for encapsulating standard calculations. For example, most U-values must be entered *without* surface conductances, yet many tabulated U-values include the effects of the standard ASHRAE winter surface conductance of 6.00 Btuh/ft^2^-^o^F. A simple macro is very helpful: +Macros are also useful for encapsulating standard calculations. For example, most U-values must be entered _without_ surface conductances, yet many tabulated U-values include the effects of the standard ASHRAE winter surface conductance of 6.00 Btuh/ft^2^-^o^F. A simple macro is very helpful: #define UWinter(u) ( 1/(1/(u)-1/6.00) ) @@ -479,9 +478,9 @@ Duplicate names result in error messages. Object names must be distinct between For some classes, such as ZONE, a name is required for each object. This is because several other statements refer to specific ZONEs, and because a name is needed to identify ZONEs in reports. For other classes, the name is optional. The specific statement descriptions in the [Input Data](#input-data) Section 5 say which names are required. We suggest always using object names even where not required; one reason is because they allow CSE to issue clearer error messages. -The following *reserved words will not work as object names unless enclosed in quotes*: +The following _reserved words will not work as object names unless enclosed in quotes_: -*(this list needs to be assembled and typed in)* +_(this list needs to be assembled and typed in)_ #### ALTER @@ -570,6 +569,7 @@ Any differences from the type, and any required information not given in the typ DEFTYPE is used to begin defining a TYPE for a class. When a TYPE is created, no object is created; rather, a partial or complete object description is stored for later use with DEFTYPE. TYPES facilitate creating multiple similar objects, as well as storing commonly used descriptions in a file to be \#included in several different files, or to be altered for multiple runs in comparative studies without changing the including files. Example (boldface for emphasis only): + DEFTYPE SURFACE "BaseWall" // common characteristics of all walls sfType = WALL; // walls are walls, so say it once sfTilt = 90; // all our walls are vertical; @@ -601,6 +601,7 @@ Sometimes in the TYPE definition, member(s) that you do not want defined are def + #### END and ENDxxxx END, optionally followed by an object name, can be used to unequivocally terminate an object. Further, as of July 1992 there is still available a specific word to terminate each type of object, such as ENDZONE to terminate a ZONE object. If the object name is given after END or ENDxxxx, an additional check is performed: if the name is not that of an object which has been begun and not terminated, an error message occurs. Generally, we have found it is not important to use END or ENDxxxx, especially since the member names in different classes are distinct. @@ -615,7 +616,7 @@ The specific member names for each class of objects are given in Section 5; many Depending on the member, the appropriate type for the expression giving the member value may be numeric (integer or floating point), string, object name, or multiple-choice. Expressions of all types will be described in detail in the section on [expressions](#expressions). -Each member also has its *variability* (also given in the [input data](#input-data) section), or maximum acceptable *variation*. This is how often the expression for the value can change during the simulation -- hourly, daily, monthly, no change (constant), etc. The "variations" were introduced in the [expressions overview](#expressions-overview) section and will be further detailed in a [section on variation frequencies](#variation-frequencies-revisited). +Each member also has its _variability_ (also given in the [input data](#input-data) section), or maximum acceptable _variation_. This is how often the expression for the value can change during the simulation -- hourly, daily, monthly, no change (constant), etc. The "variations" were introduced in the [expressions overview](#expressions-overview) section and will be further detailed in a [section on variation frequencies](#variation-frequencies-revisited). Four special statements, AUTOSIZE, UNSET, REQUIRE, and FREEZE, add flexibility in working with members. @@ -629,23 +630,23 @@ UNSET followed by a member name is used when it is desired to delete a member va Situations where you really might want to specify a member, then later remove it, include: -- After a RUN command has completed one simulation run, if you wish to specify another simulation run without CLEARing and giving all the data again, you may need to UNSET some members of some objects in order to re specify them or because they need to be omitted from the new run. In this case, use ALTER(s) to reopen the object(s) before UNSETing. +- After a RUN command has completed one simulation run, if you wish to specify another simulation run without CLEARing and giving all the data again, you may need to UNSET some members of some objects in order to re specify them or because they need to be omitted from the new run. In this case, use ALTER(s) to reopen the object(s) before UNSETing. -- In defining a TYPE (see [this section](#deftype)), you may wish to make sure certain members are not specified so that the user must give them or omit them if desired. If the origin of the type (possibly a sequence of DEFTYPEs, LIKEs, and/or COPYs) has defined unwanted members, get rid of them with UNSET. +- In defining a TYPE (see [this section](#deftype)), you may wish to make sure certain members are not specified so that the user must give them or omit them if desired. If the origin of the type (possibly a sequence of DEFTYPEs, LIKEs, and/or COPYs) has defined unwanted members, get rid of them with UNSET. -Note that UNSET is only for deleting *members* (names that would be followed with an = and a a value when being defined). To delete an entire *object*, use DELETE (see [this section](#delete)). +Note that UNSET is only for deleting _members_ (names that would be followed with an = and a a value when being defined). To delete an entire _object_, use DELETE (see [this section](#delete)). #### REQUIRE -REQUIRE followed by a member name makes entry of that member mandatory if it was otherwise optional; it is useful in defining a TYPE (see [this section](#deftype)) when you desire to make sure the user enters a particular member, for example to be sure the TYPE is applied in the intended manner. REQUIRE by itself does not delete any previously entered value, so if the member already has a value, you will need to UNSET it. ?? *verify* +REQUIRE followed by a member name makes entry of that member mandatory if it was otherwise optional; it is useful in defining a TYPE (see [this section](#deftype)) when you desire to make sure the user enters a particular member, for example to be sure the TYPE is applied in the intended manner. REQUIRE by itself does not delete any previously entered value, so if the member already has a value, you will need to UNSET it. ?? _verify_ #### FREEZE FREEZE followed by a member name makes it illegal to UNSET or redefine that member of the object. Note that FREEZE is unnecessary most of the time since CSE issues an error message for duplicate definitions without an intervening UNSET, unless the original definition came from a TYPE (see [this section](#deftype)). Situations where you might want to FREEZE one or more members include: -- When defining a TYPE (see [this section](#deftype)). Normally, the member values in a type are like defaults; they can be freely overridden by member specifications at each use. If you wish to insure a TYPE is used as intended, you may wish to FREEZE members to prevent accidental misuse. +- When defining a TYPE (see [this section](#deftype)). Normally, the member values in a type are like defaults; they can be freely overridden by member specifications at each use. If you wish to insure a TYPE is used as intended, you may wish to FREEZE members to prevent accidental misuse. -- When your are defining objects for later use or for somebody else to use (perhaps in a file to be included) and you wish to guard against misuse, you may wish to FREEZE members. Of course, this is not foolproof, since there is at present no way to allow use of predefined objects or types without allowing access to the statements defining them. +- When your are defining objects for later use or for somebody else to use (perhaps in a file to be included) and you wish to guard against misuse, you may wish to FREEZE members. Of course, this is not foolproof, since there is at present no way to allow use of predefined objects or types without allowing access to the statements defining them. ### Action Commands @@ -665,46 +666,47 @@ CLEAR removes all input data (objects and all their members) from CSE memory. CL ## Expressions -Probably the CSE input language's most powerful characteristic is its ability to accept expressions anywhere a single number, string, object name, or other value would be accepted. Preceding examples have shown the inputting zone areas and volumes as numbers (some defined via preprocessor macros) with \*'s between them to signify multiplication, to facilitate changes and avoid errors that might occur in manual arithmetic. Such expressions, where all operands are constants, are acceptable *anywhere* a constant of the same type would be allowed. +Probably the CSE input language's most powerful characteristic is its ability to accept expressions anywhere a single number, string, object name, or other value would be accepted. Preceding examples have shown the inputting zone areas and volumes as numbers (some defined via preprocessor macros) with \*'s between them to signify multiplication, to facilitate changes and avoid errors that might occur in manual arithmetic. Such expressions, where all operands are constants, are acceptable _anywhere_ a constant of the same type would be allowed. -But for many object members, CSE accepts *live expressions* that *vary* according to time of day, weather, zone temperatures, etc. (etc., etc., etc.!). Live expressions permit simulation of many relationships without special-purpose features in the language. Live expressions support controlling setpoints, scheduling HVAC system operation, resetting air handler supply temperature according to outdoor temperature, and other necessary and foreseen functions without dedicated language features; they will also support many unforeseen user-generated functionalities that would otherwise be unavailable. +But for many object members, CSE accepts _live expressions_ that _vary_ according to time of day, weather, zone temperatures, etc. (etc., etc., etc.!). Live expressions permit simulation of many relationships without special-purpose features in the language. Live expressions support controlling setpoints, scheduling HVAC system operation, resetting air handler supply temperature according to outdoor temperature, and other necessary and foreseen functions without dedicated language features; they will also support many unforeseen user-generated functionalities that would otherwise be unavailable. -Additional expression flexibility is provided by the ability to access all of the input data and much of the internal data as operands in expressions (*probes*, see [this section](#probes)). +Additional expression flexibility is provided by the ability to access all of the input data and much of the internal data as operands in expressions (_probes_, see [this section](#probes)). As in a programming language, CSE expressions are constructed from operators and operands; unlike most programming languages, CSE determines how often an expression's operands change and automatically compute and store the value as often as necessary. -Expressions in which all operands are known when the statement is being decoded (for example, if all values are constants) are *always* allowed, because the input language processor immediately evaluates them and presents the value to the rest of the program in the same manner as if a single number had been entered. *Most* members also accept expressions that can be evaluated as soon as the run's input is complete, for example expressions involving a reference to another member that has not been given yet. Expressions that vary during the run, say at hourly or daily intervals, are accepted by *many* members. The *variability* or maximum acceptable variation for each member is given in the descriptions in the [input data](#input-data) section, and the *variation* of each non-constant expression component is given in its description in this section. +Expressions in which all operands are known when the statement is being decoded (for example, if all values are constants) are _always_ allowed, because the input language processor immediately evaluates them and presents the value to the rest of the program in the same manner as if a single number had been entered. _Most_ members also accept expressions that can be evaluated as soon as the run's input is complete, for example expressions involving a reference to another member that has not been given yet. Expressions that vary during the run, say at hourly or daily intervals, are accepted by _many_ members. The _variability_ or maximum acceptable variation for each member is given in the descriptions in the [input data](#input-data) section, and the _variation_ of each non-constant expression component is given in its description in this section. -Interaction of expressions and the preprocessor: Generally, they don't interact. The preprocessor is a text processor which completes its work by including specified files, deleting sections under false \#if's, remembering define definitions, replacing macro calls with the text of the definition, removing preprocessor directives from the text after interpreting them, etc., *then* the resulting character stream is analyzed by the input language statement compiler. However, the if statement takes an integer numeric expression argument. This expression is similar to those described here except that it can only use constant operands, since the preprocessor must evaluate it before deciding what text to feed to the input statement statement compiler. +Interaction of expressions and the preprocessor: Generally, they don't interact. The preprocessor is a text processor which completes its work by including specified files, deleting sections under false \#if's, remembering define definitions, replacing macro calls with the text of the definition, removing preprocessor directives from the text after interpreting them, etc., _then_ the resulting character stream is analyzed by the input language statement compiler. However, the if statement takes an integer numeric expression argument. This expression is similar to those described here except that it can only use constant operands, since the preprocessor must evaluate it before deciding what text to feed to the input statement statement compiler. ### Expression Types The type of value to which an expression must evaluate is specified in each member description (see the [input data](#input-data) section) or other context in which an expression can be used. Each expression may be a single constant or may be made up of operators and operands described in the rest of this section, so long as the result is the required type or can be converted to that type by CSE, and its variation is not too great for the context. The possible types are: - ------------------ ----------------------------------------------------- - *float* A real number (3.0, 5.34, -2., etc.). Approximately 7 - digits are carried internally. If an int is given - where a real is required, it is automatically - converted. +--- - *int* An integer or whole number (-1, 0, 1, 2 etc.). If a - real is given, an error may result, but we should - change it to convert it (discarding any fractional - part). +_float_ A real number (3.0, 5.34, -2., etc.). Approximately 7 +digits are carried internally. If an int is given +where a real is required, it is automatically +converted. - *Boolean* Same as int; indicates that a 0 value will be - interpreted as "false" and any non-0 value will be - interpreted as "true". +_int_ An integer or whole number (-1, 0, 1, 2 etc.). If a +real is given, an error may result, but we should +change it to convert it (discarding any fractional +part). - *string* A string of characters; for example, some text - enclosed in quotes. +_Boolean_ Same as int; indicates that a 0 value will be +interpreted as "false" and any non-0 value will be +interpreted as "true". - *object name* Name of an object of a specified class. Differs from - *string* in that the name need not be enclosed in - quotes if it consists only of letters, digits, \_, - and \$, begins with a non-digit, and is different - from all reserved words now in or later added to the - language (see [Object Names](#object-names)). +_string_ A string of characters; for example, some text +enclosed in quotes. + +_object name_ Name of an object of a specified class. Differs from +_string_ in that the name need not be enclosed in +quotes if it consists only of letters, digits, \_, +and \$, begins with a non-digit, and is different +from all reserved words now in or later added to the +language (see [Object Names](#object-names)). The object may be defined after it is referred to. An expression using conditional operators, functions, @@ -713,43 +715,46 @@ The type of value to which an expression must evaluate is specified in each memb object names accept values that vary during the simulation. - *choice* One of several choices; a list of the acceptable - values is given wherever a *choice* is required. The - choices are usually listed in CAPITALS but may be - entered in upper or lower case as desired. As with - object names, quotes are allowed but not required. +_choice_ One of several choices; a list of the acceptable +values is given wherever a _choice_ is required. The +choices are usually listed in CAPITALS but may be +entered in upper or lower case as desired. As with +object names, quotes are allowed but not required. Expressions may be used for choices, subject to the variability of the context. - *date* May be entered as a 3-letter month abbreviation - followed by an *int* for the day of the month, or an - *int* for the Julian day of the year (February is - assumed to have 28 days). Expressions may be used - subject to variability limitations. Examples: +_date_ May be entered as a 3-letter month abbreviation +followed by an _int_ for the day of the month, or an +_int_ for the Julian day of the year (February is +assumed to have 28 days). Expressions may be used +subject to variability limitations. Examples: `Jan 23 // January 23` `23 // January 23` `32 // February 1` - ------------------ ----------------------------------------------------- + +--- These words are used in following descriptions of contexts that can accept more than one basic type: - ------------------ ----------------------------------------------------- - *numeric* *float* or *int*. When floats and ints are intermixed - with the same operator or function, the result is - float. +--- + +_numeric_ _float_ or _int_. When floats and ints are intermixed +with the same operator or function, the result is +float. - *anyType* Any type; the result is the same type as the - argument. If floats and ints are intermixed, the - result is float. If strings and valid choice names - are intermixed, the result is *choice*. Other - mixtures of types are generally illegal, except in - expressions for a few members that will accept either - one of several choices or a numeric value. - ------------------ ----------------------------------------------------- +_anyType_ Any type; the result is the same type as the +argument. If floats and ints are intermixed, the +result is float. If strings and valid choice names +are intermixed, the result is _choice_. Other +mixtures of types are generally illegal, except in +expressions for a few members that will accept either +one of several choices or a numeric value. + +--- The next section describes the syntax of constants of the various data types; then, we will describe the available operators, then other operand types such as system variables and built-in functions. @@ -757,17 +762,18 @@ The next section describes the syntax of constants of the various data types; th This section reviews how to enter ordinary non-varying numbers and other values. - ------------------ ----------------------------------------------------- - *int* optional - sign followed by digits. Don't use a - decimal point if your intent is to give an *int* - quantity -- the decimal point indicates a *float* to - CSE. Hexadecimal and Octal values may be given by - prefixing the value with 0x and 0O respectively (yes, - that really is a zero followed by an 'O'). +--- + +_int_ optional - sign followed by digits. Don't use a +decimal point if your intent is to give an _int_ +quantity -- the decimal point indicates a _float_ to +CSE. Hexadecimal and Octal values may be given by +prefixing the value with 0x and 0O respectively (yes, +that really is a zero followed by an 'O'). - *float* optional - sign, digits and decimal point. Very large - or small values can be entered by following the - number with an "e" and a power of ten. Examples; +_float_ optional - sign, digits and decimal point. Very large +or small values can be entered by following the +number with an "e" and a power of ten. Examples;     `1.0 1. .1 -5534.6 123.e25 4.56e-23` @@ -779,20 +785,20 @@ This section reviews how to enter ordinary non-varying numbers and other values. notices any need to convert to *float*. If you mean .6666667, say 2./3, 2/3., or .6666667. - *feet and inches* Feet and inches may be entered where a *float* number - of feet is required by typing the feet (or a 0 if - none), a single quote ', then the inches. (Actually - this is an operator meaning "divide the following - value by 12 and add it to the preceding value", so - expressions can work with it.) Examples: +_feet and inches_ Feet and inches may be entered where a _float_ number +of feet is required by typing the feet (or a 0 if +none), a single quote ', then the inches. (Actually +this is an operator meaning "divide the following +value by 12 and add it to the preceding value", so +expressions can work with it.) Examples:     `3'6 0'.5 (10+20)'(2+3)` - *string* "Text" -- desired characters enclosed in double - quotes. Maximum length 80 characters (make 132??). To - put a " within the "'s, precede it with a backslash. - Certain control codes can be represented with letters - preceded with a backslash as follows: +_string_ "Text" -- desired characters enclosed in double +quotes. Maximum length 80 characters (make 132??). To +put a " within the "'s, precede it with a backslash. +Certain control codes can be represented with letters +preceded with a backslash as follows:     `\\e escape` @@ -804,18 +810,18 @@ This section reviews how to enter ordinary non-varying numbers and other values.     `\\n newline or line feed` - *object name* Same as *string*, or without quotes if name consists - only of letters, digits, \_, and \$, begins with a - non-digit, and is different from all reserved words - now in or later added to the language (see - [Object Names](#object-names)). Control character codes - (ASCII 0-31) are not allowed. +_object name_ Same as _string_, or without quotes if name consists +only of letters, digits, \_, and \$, begins with a +non-digit, and is different from all reserved words +now in or later added to the language (see +[Object Names](#object-names)). Control character codes +(ASCII 0-31) are not allowed. - *choice* Same as string; quotes optional on choice words valid - for the member. Capitalization does not matter. +_choice_ Same as string; quotes optional on choice words valid +for the member. Capitalization does not matter. - *date* Julian day of year (as *int* constant), or month - abbreviation +_date_ Julian day of year (as _int_ constant), or month +abbreviation     `Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec` @@ -823,15 +829,19 @@ This section reviews how to enter ordinary non-varying numbers and other values. month names are operators implemented to add the starting day of the month to the following *int* quantity). - ------------------ ----------------------------------------------------- + +--- ### Operators -For *floats* and *ints*, the CSE input language recognizes a set of operators based closely on those found in the C programming language. The following table describes the available numeric operators. The operators are shown in the order of execution (precedence) when no ()'s are used to control the order of evaluation; thin lines separate operators of equal precedence. +For _floats_ and _ints_, the CSE input language recognizes a set of operators based closely on those found in the C programming language. The following table describes the available numeric operators. The operators are shown in the order of execution (precedence) when no ()'s are used to control the order of evaluation; thin lines separate operators of equal precedence. + +--- + +**Operator** **Name** **Notes and Examples** + +--- - ------------------------------------------------------------------------ - **Operator** **Name** **Notes and Examples** - -------------- -------------------- ------------------------------------ ' Feet-Inches a ' b yields a + b/12; thus 4'6 = Separator 4.5. @@ -917,122 +927,128 @@ For *floats* and *ints*, the CSE input language recognizes a set of operators ba ? : Conditional a ? b : c yields b if a is true (non-0), otherwise c. - ------------------------------------------------------------------------ -*Dates* are stored as *ints* (the value being the Julian day of the year), so all numeric operators could be used. The month abbreviations are implemented as operators that add the first day of the month to the following *int* value; CSE does not disallow their use in other numeric contexts. +--- -For *strings*, *object names*, and *choices*, the CSE input language currently has no operators except the ?: conditional operator. A concatenation operator is being considered. Note, though, that the choose, choose1, select, and hourval functions described below work with strings, object names, and choice values as well as numbers. +_Dates_ are stored as _ints_ (the value being the Julian day of the year), so all numeric operators could be used. The month abbreviations are implemented as operators that add the first day of the month to the following _int_ value; CSE does not disallow their use in other numeric contexts. + +For _strings_, _object names_, and _choices_, the CSE input language currently has no operators except the ?: conditional operator. A concatenation operator is being considered. Note, though, that the choose, choose1, select, and hourval functions described below work with strings, object names, and choice values as well as numbers. + ### System Variables -*System Variables* are built-in operands with useful values. To avoid confusion with other words, they begin with a \$. Descriptions of the CSE system variables follow. Capitalization shown need not be matched. Most system variables change during a simulation run, resulting in the *variations* shown; they cannot be used where the context will not accept variation at least this fast. (The [Input Data Section](#input-data) gives the *variability*, or maximum acceptable variation, for each object member.) +_System Variables_ are built-in operands with useful values. To avoid confusion with other words, they begin with a \$. Descriptions of the CSE system variables follow. Capitalization shown need not be matched. Most system variables change during a simulation run, resulting in the _variations_ shown; they cannot be used where the context will not accept variation at least this fast. (The [Input Data Section](#input-data) gives the _variability_, or maximum acceptable variation, for each object member.) + +--- + +\$dayOfYear Day of year of simulation, 1 - 365; 1 corresponds to +Jan-1. (Note that this is not the day of the simulation +unless begDay is Jan-1.) **Variation:** daily. - ---------------- --------------------------------------------------------- - \$dayOfYear Day of year of simulation, 1 - 365; 1 corresponds to - Jan-1. (Note that this is not the day of the simulation - unless begDay is Jan-1.) **Variation:** daily. +\$month Month of year, 1 - 12. **Variation**: monthly. - \$month Month of year, 1 - 12. **Variation**: monthly. +\$dayOfMonth Day of month, 1 - 31. **Variation**: daily. - \$dayOfMonth Day of month, 1 - 31. **Variation**: daily. +\$hour Hour of day, 1 - 24, in local time; 1 corresponds to midnight - 1 AM. +**Variation**: hourly. - \$hour Hour of day, 1 - 24, in local time; 1 corresponds to midnight - 1 AM. - **Variation**: hourly. +\$hourST Hour of day, 1 - 24, in standard time; 1 corresponds to midnight - 1 AM. +**Variation**: hourly. - \$hourST Hour of day, 1 - 24, in standard time; 1 corresponds to midnight - 1 AM. - **Variation**: hourly. +\$subhour Subhour of hour, 1 - N (number of subhours). +**Variation**: subhourly. - \$subhour Subhour of hour, 1 - N (number of subhours). - **Variation**: subhourly. +\$dayOfWeek Day of week, 1 - 7; 1 corresponds to Sunday, 2 to +Monday, etc. **Variation:** daily. - \$dayOfWeek Day of week, 1 - 7; 1 corresponds to Sunday, 2 to - Monday, etc. **Variation:** daily. +\$DOWH Day of week 1-7 except 8 on every observed holiday. +**Variation**: daily. - \$DOWH Day of week 1-7 except 8 on every observed holiday. - **Variation**: daily. +\$isHoliday 1 on days that a holiday is observed (regardless of the +true date of the holiday); 0 on other days. +**Variation**: daily. - \$isHoliday 1 on days that a holiday is observed (regardless of the - true date of the holiday); 0 on other days. - **Variation**: daily. +\$isHoliTrue 1 on days that are the true date of a holiday, otherwise 0. **Variation**: daily. - \$isHoliTrue 1 on days that are the true date of a holiday, otherwise - 0. **Variation**: daily. +\$isWeHol 1 on weekend days or days that are observed as holidays. +**Variation:** daily. - \$isWeHol 1 on weekend days or days that are observed as holidays. - **Variation:** daily. +\$isWeekend 1 on Saturday and Sunday, 0 on any day from Monday to +Friday. **Variation:** daily. - \$isWeekend 1 on Saturday and Sunday, 0 on any day from Monday to - Friday. **Variation:** daily. +\$isWeekday 1 on Monday through Friday, 0 on Saturday and Sunday. +**Variation:** daily. - \$isWeekday 1 on Monday through Friday, 0 on Saturday and Sunday. - **Variation:** daily. +\$isBegWeek 1 for any day immediately following a weekend day or +observed holiday that is neither a weekend day or an +observed holiday. **Variation:** daily. - \$isBegWeek 1 for any day immediately following a weekend day or - observed holiday that is neither a weekend day or an - observed holiday. **Variation:** daily. +\$isWorkDay 1 on non-holiday Monday through Friday, 0 on holidays, +Saturday and Sunday. **Variation:** daily. - \$isWorkDay 1 on non-holiday Monday through Friday, 0 on holidays, - Saturday and Sunday. **Variation:** daily. +\$isNonWorkDay 1 on Saturday, Sunday and observed holidays, 0 on +non-holiday Monday through Friday. **Variation:** +daily. - \$isNonWorkDay 1 on Saturday, Sunday and observed holidays, 0 on - non-holiday Monday through Friday. **Variation:** - daily. +\$isBegWorkWeek 1 on the first workday after a non-workday, 0 all +other days. **Variation:** daily. - \$isBegWorkWeek 1 on the first workday after a non-workday, 0 all - other days. **Variation:** daily. +\$isDT 1 if Daylight Saving time is in effect, 0 otherwise. +**Variation:** hourly. - \$isDT 1 if Daylight Saving time is in effect, 0 otherwise. - **Variation:** hourly. +\$autoSizing 1 during autosizing calculations, 0 during main +simulation. **Variation:** for each phase. - \$autoSizing 1 during autosizing calculations, 0 during main - simulation. **Variation:** for each phase. +\$dsDay Design day type, 0 during main simulation, 1 during +heating autosize, 2 during cool autosize. +**Variation:** daily. - \$dsDay Design day type, 0 during main simulation, 1 during - heating autosize, 2 during cool autosize. - **Variation:** daily. - ---------------- --------------------------------------------------------- +--- **Weather variables**: the following allow access to the current hour's weather conditions in you CSE expressions. Units of measure are shown in parentheses. All have **Variation**: hourly. - ----------------- ------------------------------------------------------ - \$radBeam Solar beam irradiance (on a sun-tracking surface) this hour - (Btu/ft2) +--- - \$radDiff Solar diffuse irradiance (on horizontal surface) this hour - (Btu/ft2) +\$radBeam Solar beam irradiance (on a sun-tracking surface) this hour +(Btu/ft2) - \$tDbO Outdoor drybulb temperature this hour (degrees F) +\$radDiff Solar diffuse irradiance (on horizontal surface) this hour +(Btu/ft2) - \$tWbO Outdoor wetbulb temperature this hour (degrees F) +\$tDbO Outdoor drybulb temperature this hour (degrees F) - \$wO Outdoor humidity ratio this hour (lb H2O/lb dry air) +\$tWbO Outdoor wetbulb temperature this hour (degrees F) - \$windDirDeg Wind direction (compass degrees) +\$wO Outdoor humidity ratio this hour (lb H2O/lb dry air) - \$windSpeed Wind speed (mph) - ----------------- ------------------------------------------------------ +\$windDirDeg Wind direction (compass degrees) + +\$windSpeed Wind speed (mph) + +--- ### Built-in Functions -Built-in functions perform a number of useful scheduling and conditional operations in expressions. Built-in functions have the combined variation of their arguments; for *hourval*, the minimum result variation is hourly. For definitions of *numeric* and *anyType*, see [Expression Types](#expression-types). +Built-in functions perform a number of useful scheduling and conditional operations in expressions. Built-in functions have the combined variation of their arguments; for _hourval_, the minimum result variation is hourly. For definitions of _numeric_ and _anyType_, see [Expression Types](#expression-types). #### brkt - -------------- --------------------------------------------------------- - **Function** limits a value to be in a given range +--- + +**Function** limits a value to be in a given range - **Syntax** *numeric* **brkt**( *numeric min, numeric val, numeric - max*) +**Syntax** _numeric_ **brkt**( _numeric min, numeric val, numeric +max_) - **Remark** If *val* is less than *min*, returns *min*; if *val* is - greater than *max,* returns *max*; if *val* is in - between, returns *val*. +**Remark** If _val_ is less than _min_, returns _min_; if _val_ is +greater than _max,_ returns _max_; if _val_ is in +between, returns _val_. - **Example** In an AIRHANDLER object, the following statement would - specify a supply temperature equal to 130 minus the - outdoor air temperature, but not less than 55 nor greater - than 80: +**Example** In an AIRHANDLER object, the following statement would +specify a supply temperature equal to 130 minus the +outdoor air temperature, but not less than 55 nor greater +than 80:     `ahTsSp = brkt( 55, 130 - $tDbO, 80);` @@ -1040,106 +1056,120 @@ Built-in functions perform a number of useful scheduling and conditional operati an 80-degree setpoint in cold weather, and a transition from 55 to 70 as the outdoor temperature moved from 75 to 50. - -------------- --------------------------------------------------------- + +--- #### fix - -------------- --------------------------------------------------------- - **Function** converts *float* to *int* +--- + +**Function** converts _float_ to _int_ + +**Syntax** _int_ **fix**( _float val_ ) - **Syntax** *int* **fix**( *float val* ) +**Remark** _val_ is converted to _int_ by truncation -- **fix**( +1.3) and **fix**( 1.99) both return 1. **fix**( -4.4) +returns -4. - **Remark** *val* is converted to *int* by truncation -- **fix**( - 1.3) and **fix**( 1.99) both return 1. **fix**( -4.4) - returns -4. - -------------- --------------------------------------------------------- +--- #### toFloat - -------------- --------------------------------------------------------- - **Function** converts *int* to *float* - **Syntax** *float* **toFloat**( *int val* ) - -------------- --------------------------------------------------------- +--- + +**Function** converts _int_ to _float_ +**Syntax** _float_ **toFloat**( _int val_ ) + +--- #### min - -------------- --------------------------------------------------------- - **Function** returns the lowest quantity from a list of values. +--- + +**Function** returns the lowest quantity from a list of values. - **Syntax** *numeric* **min**( *numeric value1, numeric value2, ...* - *numeric valuen* ) +**Syntax** _numeric_ **min**( _numeric value1, numeric value2, ..._ +_numeric valuen_ ) - **Remark** there can be any number of arguments separated by commas; - if floats and ints are intermixed, the result is float. - -------------- --------------------------------------------------------- +**Remark** there can be any number of arguments separated by commas; +if floats and ints are intermixed, the result is float. + +--- #### max - -------------- --------------------------------------------------------- - **Function** returns the highest quantity from a list of values. +--- + +**Function** returns the highest quantity from a list of values. - **Syntax** *numeric* **max** ( *numeric value1, numeric value2,* ... - *numeric valuen* ) - -------------- --------------------------------------------------------- +**Syntax** _numeric_ **max** ( _numeric value1, numeric value2,_ ... +_numeric valuen_ ) + +--- #### choose - -------------- --------------------------------------------------------- - **Function** returns the nth value from a list. If *arg0* is 0, - *value0* is returned; for 1, *value1* is returned, etc. +--- + +**Function** returns the nth value from a list. If _arg0_ is 0, +_value0_ is returned; for 1, _value1_ is returned, etc. - **Syntax** *anyType* **choose** ( *int arg0, anyType value0, - anyType* *value1, ... anyType valuen* ) or *anyType* - **choose** ( *int arg0, anyType value0, ... anyType* - *valuen*, **default** *valueDef*) +**Syntax** _anyType_ **choose** ( _int arg0, anyType value0, +anyType_ _value1, ... anyType valuen_ ) or _anyType_ +**choose** ( _int arg0, anyType value0, ... anyType_ +_valuen_, **default** _valueDef_) - **Remarks** Any number of *value* arguments may be given. If - **default** and another value is given, this value will - be used if *arg0* is less than 0 or too large; otherwise, - an error will occur. - -------------- --------------------------------------------------------- +**Remarks** Any number of _value_ arguments may be given. If +**default** and another value is given, this value will +be used if _arg0_ is less than 0 or too large; otherwise, +an error will occur. + +--- #### choose1 - ------------- ---------------------------------------------------------- - **Function** same as choose except *arg0* is 1-based. Choose1 returns - the second argument *value1* for *arg0* = 1, the third - argument *value2* when *arg0* = 2, etc. +--- + +**Function** same as choose except _arg0_ is 1-based. Choose1 returns +the second argument _value1_ for _arg0_ = 1, the third +argument _value2_ when _arg0_ = 2, etc. - **Syntax** *anyType* **choose1** ( *int arg0, anyType value1, - anyType* *value2, ... anyType valuen* ) or *anyType* - **choose1** ( *int arg0, anyType value1,* ... *anyType - valuen,* **default** *valueDef*) +**Syntax** _anyType_ **choose1** ( _int arg0, anyType value1, +anyType_ _value2, ... anyType valuen_ ) or _anyType_ +**choose1** ( _int arg0, anyType value1,_ ... _anyType +valuen,_ **default** _valueDef_) - **Remarks** **choose1** is a function that is well suited for use with - daily system variables. For example, if a user wanted to - denote different values for different days of the week, - the following use of **choose1** could be implemented: +**Remarks** **choose1** is a function that is well suited for use with +daily system variables. For example, if a user wanted to +denote different values for different days of the week, +the following use of **choose1** could be implemented:     `tuTC = choose1(\$dayOfWeek, MonTemp, TueTemp, ...)` Note that for hourly data, the **hourval** function would be a better choice, because it doesn't require the explicit declaration of the \$hour system variable. - ------------- ---------------------------------------------------------- + +--- #### select - ------------ ----------------------------------------------------------- - **Function** contains Boolean-value pairs; returns the value associated - with the first Boolean that evaluates to true (non-0). +--- - **Syntax** *anyType* ( *Boolean arg1, anyType value1, Boolean arg2,* - *anyType value2, ...* **default** *anyType*) (the - **default** part is optional) +**Function** contains Boolean-value pairs; returns the value associated +with the first Boolean that evaluates to true (non-0). - **Remark** **select** is a function that simulates if-then logic - during simulation (for people familiar with C, it works - much like a series of imbedded conditionals: (a?b:(a?b:c)) - ). +**Syntax** _anyType_ ( _Boolean arg1, anyType value1, Boolean arg2,_ +_anyType value2, ..._ **default** _anyType_) (the +**default** part is optional) - **Examples** Select can be used to simulate a **dynamic** (run-time) - **if-else** **statement**: +**Remark** **select** is a function that simulates if-then logic +during simulation (for people familiar with C, it works +much like a series of imbedded conditionals: (a?b:(a?b:c)) +). + +**Examples** Select can be used to simulate a **dynamic** (run-time) +**if-else** **statement**: `gnPower = select( $isHoliday, HD_GAIN, // if ($isHoliday) ` @@ -1203,296 +1233,358 @@ Built-in functions perform a number of useful scheduling and conditional operati comes from **hourval**, which varies hourly (also, \$isHoliday and \$isWeekend vary daily, but the faster variation determines the variation of the result). - ------------ ----------------------------------------------------------- + +--- #### hourval - ------------ ----------------------------------------------------------- - **Function** from a list of 24 values, returns the value corresponding - to the hour of day. +--- + +**Function** from a list of 24 values, returns the value corresponding +to the hour of day. - **Syntax** *anyType hourval ( anyType value1, anyType value2,* … - *anyType value24* ) +**Syntax** _anyType hourval ( anyType value1, anyType value2,_ … +_anyType value24_ ) *anyType hourval ( anyType value1, anyType value2*, … **default** *anyType*) - **Remark** **hourval** is evaluated at runtime and uses the hour of - the day being simulated to choose the corresponding value - from the 24 suppplied values. +**Remark** **hourval** is evaluated at runtime and uses the hour of +the day being simulated to choose the corresponding value +from the 24 suppplied values. If less than 24 *value* arguments are given, **default** and another value (or expression) should be supplied to be used for hours not explicitly specified. - **Example** see **select**, just above. - ------------ ----------------------------------------------------------- +**Example** see **select**, just above. + +--- #### abs - ------------ ----------------------------------------------------------- - **Function** converts numeric to its absolute value - **Syntax** numeric **abs**( numeric val) - ------------ ----------------------------------------------------------- +--- + +**Function** converts numeric to its absolute value +**Syntax** numeric **abs**( numeric val) + +--- #### sqrt - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the positive square root of *val* - ( *val* must be $\geq$ 0). +--- - **Syntax** *float* **sqrt** ( *float val*) - ------------ ----------------------------------------------------------- +**Function** Calculates and returns the positive square root of _val_ +( _val_ must be $\geq$ 0). + +**Syntax** _float_ **sqrt** ( _float val_) + +--- #### exp - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the exponential of *val* (= - e*^val^*) +--- + +**Function** Calculates and returns the exponential of _val_ (= +e*^val^*) - **Syntax** *float* **exp**( *float val*) - ------------ ----------------------------------------------------------- +**Syntax** _float_ **exp**( _float val_) + +--- #### logE - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the base e logarithm of *val* ( *val* - must be $\geq$ 0). +--- + +**Function** Calculates and returns the base e logarithm of _val_ ( _val_ +must be $\geq$ 0). + +**Syntax** _float_ **logE**( _float val_) - **Syntax** *float* **logE**( *float val*) - ------------ ----------------------------------------------------------- +--- #### log10 - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the base 10 logarithm of *val* - ( *val* must be $\geq$ 0). +--- - **Syntax** *float* **log10**( *float val*) - ------------ ----------------------------------------------------------- +**Function** Calculates and returns the base 10 logarithm of _val_ +( _val_ must be $\geq$ 0). + +**Syntax** _float_ **log10**( _float val_) + +--- #### sin - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the sine of *val* (val in radians) - **Syntax** *float* **sin**( *float val*) - ------------ ----------------------------------------------------------- +--- + +**Function** Calculates and returns the sine of _val_ (val in radians) +**Syntax** _float_ **sin**( _float val_) + +--- #### sind - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the sine of *val* (val in degrees) - **Syntax** *float* **sind**( *float val*) - ------------ ----------------------------------------------------------- +--- + +**Function** Calculates and returns the sine of _val_ (val in degrees) +**Syntax** _float_ **sind**( _float val_) + +--- #### asin - ------------ ----------------------------------------------------------- - **Function** Calculates and returns (in radians) the arcsine of *val* - **Syntax** *float* **asin**( *float val*) - ------------ ----------------------------------------------------------- +--- + +**Function** Calculates and returns (in radians) the arcsine of _val_ +**Syntax** _float_ **asin**( _float val_) + +--- #### asind - ------------ ----------------------------------------------------------- - **Function** Calculates and returns (in degrees) the arcsine of *val* - **Syntax** *float* **asind**( *float val*) - ------------ ----------------------------------------------------------- +--- + +**Function** Calculates and returns (in degrees) the arcsine of _val_ +**Syntax** _float_ **asind**( _float val_) + +--- #### cos - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the cosine of *val* (val in radians) - **Syntax** *float* **cos**( *float val*) - ------------ ----------------------------------------------------------- +--- + +**Function** Calculates and returns the cosine of _val_ (val in radians) +**Syntax** _float_ **cos**( _float val_) + +--- #### cosd - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the cosine of *val* (val in degrees) - **Syntax** *float* **cosd**( *float val*) - ------------ ----------------------------------------------------------- +--- + +**Function** Calculates and returns the cosine of _val_ (val in degrees) +**Syntax** _float_ **cosd**( _float val_) + +--- #### acos - ------------ ----------------------------------------------------------- - **Function** Calculates and returns (in radians) the arccosine of *val* - **Syntax** *float* **acos**( *float val*) - ------------ ----------------------------------------------------------- +--- + +**Function** Calculates and returns (in radians) the arccosine of _val_ +**Syntax** _float_ **acos**( _float val_) + +--- #### acosd - ------------ ----------------------------------------------------------- - **Function** Calculates and returns (in degrees) the arccosine of *val* - **Syntax** *float* **acosd**( *float val*) - ------------ ----------------------------------------------------------- +--- + +**Function** Calculates and returns (in degrees) the arccosine of _val_ +**Syntax** _float_ **acosd**( _float val_) + +--- #### tan - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the tangent of *val* (val in - radians) +--- + +**Function** Calculates and returns the tangent of _val_ (val in +radians) - **Syntax** *float* **tan**( *float val*) - ------------ ----------------------------------------------------------- +**Syntax** _float_ **tan**( _float val_) + +--- #### tand - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the tangent of *val* (val in - degrees) +--- + +**Function** Calculates and returns the tangent of _val_ (val in +degrees) + +**Syntax** _float_ **tand**( _float val_) - **Syntax** *float* **tand**( *float val*) - ------------ ----------------------------------------------------------- +--- #### atan - ------------ ----------------------------------------------------------- - **Function** Calculates and returns (in radians) the arctangent of *val* - **Syntax** *float* **atan**( *float val*) - ------------ ----------------------------------------------------------- +--- + +**Function** Calculates and returns (in radians) the arctangent of _val_ +**Syntax** _float_ **atan**( _float val_) + +--- #### atand - ------------ ----------------------------------------------------------- - **Function** Calculates and returns (in degrees) the arctangent of *val* - **Syntax** *float* **atand**( *float val*) - ------------ ----------------------------------------------------------- +--- + +**Function** Calculates and returns (in degrees) the arctangent of _val_ +**Syntax** _float_ **atand**( _float val_) + +--- #### atan2 - ------------ ----------------------------------------------------------- - **Function** Calculates and returns (in radians) the arctangent of y/x - (handling x = 0) +--- + +**Function** Calculates and returns (in radians) the arctangent of y/x +(handling x = 0) + +**Syntax** _float_ **atan2**( _float y, float x_) - **Syntax** *float* **atan2**( *float y, float x*) - ------------ ----------------------------------------------------------- +--- #### atan2d - ------------ ----------------------------------------------------------- - **Function** Calculates and returns (in degrees) the arctangent of y/x - (handling x = 0) +--- - **Syntax** *float* **atan2d**( *float y, float x*) - ------------ ----------------------------------------------------------- +**Function** Calculates and returns (in degrees) the arctangent of y/x +(handling x = 0) + +**Syntax** _float_ **atan2d**( _float y, float x_) + +--- #### pow - ------------ ----------------------------------------------------------- - **Function** Calculates and returns *val* raised to the *x*th power (= - *val*^x^). *val* and *x* cannot both be 0. If *val* < 0, - *x* must be integral. +--- + +**Function** Calculates and returns _val_ raised to the *x*th power (= +_val_^x^). _val_ and _x_ cannot both be 0. If _val_ < 0, +_x_ must be integral. - **Syntax** *float* **pow**( *float val, numeric x*) - ------------ ----------------------------------------------------------- +**Syntax** _float_ **pow**( _float val, numeric x_) + +--- #### enthalpy - ------------ ----------------------------------------------------------- - **Function** Returns enthalpy of moist air (Btu/lb) for dry bulb - temperature (F) and humidity ratio (lb/lb) +--- + +**Function** Returns enthalpy of moist air (Btu/lb) for dry bulb +temperature (F) and humidity ratio (lb/lb) - **Syntax** *float* **enthalpy**( *float tDb, float w*) - ------------ ----------------------------------------------------------- +**Syntax** _float_ **enthalpy**( _float tDb, float w_) + +--- #### wFromDbWb - ------------ ----------------------------------------------------------- - **Function** Returns humidity ratio (lb/lb) of moist air from dry bulb - and wet bulb temperatures (F) +--- + +**Function** Returns humidity ratio (lb/lb) of moist air from dry bulb +and wet bulb temperatures (F) - **Syntax** *float* **wFromDbWb**( *float tDb, float tWb*) - ------------ ----------------------------------------------------------- +**Syntax** _float_ **wFromDbWb**( _float tDb, float tWb_) + +--- #### wFromDbRh - ------------ ----------------------------------------------------------- - **Function** Returns humidity ratio (lb/lb) of moist air from dry bulb - temperature (F) and relative humidity (0 – 1) +--- + +**Function** Returns humidity ratio (lb/lb) of moist air from dry bulb +temperature (F) and relative humidity (0 – 1) + +**Syntax** _float_ **wFromDbRh**( _float tDb, float rh_) - **Syntax** *float* **wFromDbRh**( *float tDb, float rh*) - ------------ ----------------------------------------------------------- +--- #### rhFromDbW - ------------ ----------------------------------------------------------- - **Function** Returns relative humidity (0 – 1) of moist air from dry bulb - temperature (F) and humidity ratio (lb/lb). +--- - **Syntax** *float* **rhFromDbW**( *float tDb, float w*) +**Function** Returns relative humidity (0 – 1) of moist air from dry bulb +temperature (F) and humidity ratio (lb/lb). - **Remark** The return value is constrained to 0 <= rh <= 1 - (that is, physically impossible combinations of tDb and w are silently tolerated). - ------------ ----------------------------------------------------------- +**Syntax** _float_ **rhFromDbW**( _float tDb, float w_) + +**Remark** The return value is constrained to 0 <= rh <= 1 +(that is, physically impossible combinations of tDb and w are silently tolerated). + +--- + #### import - ------------- ---------------------------------------------------------------- - **Function** Returns *float* read from an import file. +--- - **Syntax** *float* **import**( *string importFile, string colName*)\ - *float* **import**( *string importFile, int colN*) +**Function** Returns _float_ read from an import file. - **Remark** Columns can be referenced by name or 1-based index.\ - See [IMPORTFILE](#importfile) for details on use of import() - ------------- --------------------------------------------------------------- +**Syntax** _float_ **import**( _string importFile, string colName_)\ + _float_ **import**( _string importFile, int colN_) +**Remark** Columns can be referenced by name or 1-based index.\ + See [IMPORTFILE](#importfile) for details on use of import() + +--- #### importStr - ------------ ----------------------------------------------------------------- - **Function** Returns *string* read from an import file. +--- + +**Function** Returns _string_ read from an import file. + +**Syntax** _string_ **importStr**( _string importFile, string colName_)\ + _string_ **importStr**( _string importFile, int colN_) - **Syntax** *string* **importStr**( *string importFile, string colName*)\ - *string* **importStr**( *string importFile, int colN*) +**Remark** See [IMPORTFILE](#importfile) for details on use of importStr() - **Remark** See [IMPORTFILE](#importfile) for details on use of importStr() - ------------ ----------------------------------------------------------------- +--- #### contin - ------------ ----------------------------------------------------------- - **Function** Returns continuous control value, e.g. for lighting control +--- - **Syntax** *float* **contin**( *float* mpf, *float* mlf, *float* sp, - *float* val) +**Function** Returns continuous control value, e.g. for lighting control - **Remark** **contin** is evaluated at runtime and returns a value in - the range 0 – 1 ??? +**Syntax** _float_ **contin**( _float_ mpf, _float_ mlf, _float_ sp, +_float_ val) - **Example** -- - - ------------ ----------------------------------------------------------- + +--- #### stepped - ------------ ----------------------------------------------------------- - **Function** Returns stepped reverse-acting control value, e.g. for - lighting control +--- - **Syntax** *float* **stepped**( *int* nsteps, *float* sp, *float* val) +**Function** Returns stepped reverse-acting control value, e.g. for +lighting control - **Remark** **stepped** is evaluated at runtime and returns a value in - the range 0 – 1. If val <= 0, 1 is returned; if val - >= sp, 0 is returned; otherwise, a stepped intermediate - value is returned (see example) - ------------ ----------------------------------------------------------- +**Syntax** _float_ **stepped**( _int_ nsteps, _float_ sp, _float_ val) -*example:* +**Remark** **stepped** is evaluated at runtime and returns a value in +the range 0 – 1. If val <= 0, 1 is returned; if val +>= sp, 0 is returned; otherwise, a stepped intermediate +value is returned (see example) + +--- + +_example:_ **stepped**( 3, 12, val) returns - *val* *result* - --------------------- ---------- - val $<$ 4 1 - 4 $\leq$ val $<$ 8 .667 - 8 $\leq$ val $<$ 12 .333 - val $\geq$ 12 0 +_val_ _result_ + +--- + +val $<$ 4 1 +4 $\leq$ val $<$ 8 .667 +8 $\leq$ val $<$ 12 .333 +val $\geq$ 12 0 ### User-defined Functions @@ -1500,16 +1592,16 @@ User defined functions have the format: type FUNCTION name ( arg decls ) = expr ; -*Type* indicates the type of value the function returns, and can be: +_Type_ indicates the type of value the function returns, and can be: INTEGER FLOAT STRING DOY (day of year date using month name and day; actually same as integer). -*Arg decls* indicates zero or more comma-separated argument declarations, each consisting of a *type* (as above) and the name used for the argument in *expr*. +_Arg decls_ indicates zero or more comma-separated argument declarations, each consisting of a _type_ (as above) and the name used for the argument in _expr_. -*Expr* is an expression of (or convertible to) *type*. +_Expr_ is an expression of (or convertible to) _type_. The tradeoffs between using a user-defined function and a preprocessor macro (`#define`) include: @@ -1534,7 +1626,7 @@ Note that while macros require line-splicing ("\\")to extend over one line, func ### Probes -*Probes* provide a universal means of referencing data within the simulator. Probes permit using the inputtable members of each object, as described in the [Input Data](#input-data) Section, as operands in expressions. In addition, most internal members can be probed; we will describe how to find their names shortly. +_Probes_ provide a universal means of referencing data within the simulator. Probes permit using the inputtable members of each object, as described in the [Input Data](#input-data) Section, as operands in expressions. In addition, most internal members can be probed; we will describe how to find their names shortly. Three general ways of using probes are: @@ -1546,9 +1638,9 @@ Three general ways of using probes are: Here "`@zone[1].znArea`" is the probe. -2. During simulation. Probing during simulation, to make inputs be functions of conditions in the building or HVAC systems, is limited because most of the members of interest are updated *after* CSE has evaluated the user's expressions for the subhour or other time interval -- this is logically necessary since the expressions are inputs. (An exception is the weather data, but this is also available through system variables such as \$tDbO.) +2. During simulation. Probing during simulation, to make inputs be functions of conditions in the building or HVAC systems, is limited because most of the members of interest are updated _after_ CSE has evaluated the user's expressions for the subhour or other time interval -- this is logically necessary since the expressions are inputs. (An exception is the weather data, but this is also available through system variables such as \$tDbO.) -However, a number of *prior subhour* values are available for probing, making it possible to implement relationships like "the local heat output of this terminal is 1000 Btuh if the zone temperature last subhour was below 65, else 500": +However, a number of _prior subhour_ values are available for probing, making it possible to implement relationships like "the local heat output of this terminal is 1000 Btuh if the zone temperature last subhour was below 65, else 500": tuMnLh = @znres["North"].S.prior.tAir < 65 ? 1000 : 500; @@ -1561,26 +1653,28 @@ Examples: The general form of a probe is -    @ *className* \[ *objName* \] . *member* +@ _className_ \[ _objName_ \] . _member_ The initial @ is always necessary. And don't miss the period after the \]. -*className* is the CLASS being probed +_className_ is the CLASS being probed + +--- + +_objName_ is the name of the specific object of the class; +alternately, a numeric subscript is allowed. Generally, the +numbers correspond to the objects in the order created. \[ +_objName_ \] can be omitted for the TOP class, which has +only one member, Top. - ------------ ----------------------------------------------------------- - *objName* is the name of the specific object of the class; - alternately, a numeric subscript is allowed. Generally, the - numbers correspond to the objects in the order created. \[ - *objName* \] can be omitted for the TOP class, which has - only one member, Top. +_member_ is the name of the particular member being probed. This +must be exactly correct. For some inputtable members, the +probe name is not the same as the input name given in the +[Input Data](#input-data) Section, and there are many +probe-able members not described in the +[Input Data](#input-data) section. - *member* is the name of the particular member being probed. This - must be exactly correct. For some inputtable members, the - probe name is not the same as the input name given in the - [Input Data](#input-data) Section, and there are many - probe-able members not described in the - [Input Data](#input-data) section. - ------------ ----------------------------------------------------------- +--- How do you find out what the probe-able member names are? CSE will display the a list of the latest class and member names if invoked with the -p switch. Use the command line @@ -1608,7 +1702,7 @@ A portion of the `-p` output looks like: In the above "exportCol" and "holiday" are class names, and "name", "colHead", "colGap", . . . are member names for class exportCol. Some members have multiple names separated by .'s, or they may contain an additional subscript. To probe one of these, type all of the names and punctuation exactly as shown (except capitalization may differ); if an additional subscript is shown, give a number in the specified range. An "I" designates an "input" parameter, an R means "runtime" parameter. The "owner" is the class of which this class is a subclass. -The data type and variation of each member is also shown. Note that *variation*, or how often the member changes, is shown here. (*Variability*, or how often an expression assigned to the member may change, is given for the input table members in the [Input Data](#input-data) Section). Members for which an "end of" variation is shown can be probed only for use in reports. A name described as "un-probe-able" is a structure or something not convertible to an integer, float, or string. +The data type and variation of each member is also shown. Note that _variation_, or how often the member changes, is shown here. (_Variability_, or how often an expression assigned to the member may change, is given for the input table members in the [Input Data](#input-data) Section). Members for which an "end of" variation is shown can be probed only for use in reports. A name described as "un-probe-able" is a structure or something not convertible to an integer, float, or string. + surface\[\].sgdist\[\].f\[\]: f\[0\] is winter solar coupling fraction; f\[1\] is summer. ### Variation Frequencies Revisited -At risk of beating the topic to death, we're going to review once more the frequencies with which a CSE value can change (*variations)*, with some comments on the corresponding *variabilities*. +At risk of beating the topic to death, we're going to review once more the frequencies with which a CSE value can change (_variations)_, with some comments on the corresponding _variabilities_. + +--- - ---------------- ------------------------------------------------------- - subhourly changes in each "subhour" used in simulation. Subhours - are commonly 15-minute intervals for models using - znModel=CNE or 2-minute intervals for CSE znModels. +subhourly changes in each "subhour" used in simulation. Subhours +are commonly 15-minute intervals for models using +znModel=CNE or 2-minute intervals for CSE znModels. - hourly changes every simulated hour. The simulated weather and - many other aspects of the simulation change hourly; it - is customary to schedule setpoint changes, HVAC system - operation, etc. in whole hours. +hourly changes every simulated hour. The simulated weather and +many other aspects of the simulation change hourly; it +is customary to schedule setpoint changes, HVAC system +operation, etc. in whole hours. - daily changes at each simulated midnite. +daily changes at each simulated midnite. - monthly changes between simulated months. +monthly changes between simulated months. - monthly-hourly, changes once an hour on the first day of each month; - or "hourly on the 24 hourly values from the first day of the month - first day of are used for the rest of the month. This variation and - each month" variability is used for data dependent on the sun's - position, to save calculation time over computing it - every hour of every day. +monthly-hourly, changes once an hour on the first day of each month; +or "hourly on the 24 hourly values from the first day of the month +first day of are used for the rest of the month. This variation and +each month" variability is used for data dependent on the sun's +position, to save calculation time over computing it +every hour of every day. - run start time value is derived from other inputs before simulation - begins, then does not change. +run start time value is derived from other inputs before simulation +begins, then does not change. Members that cannot change during the simulation but which are not needed to derive other values before the simulation begins have "run start time" *variability*. - input time value is known before CSE starts to check data and - derive "run start time" values. +input time value is known before CSE starts to check data and +derive "run start time" values. Expressions with "input time" variation may be used in many members that cannot accept any variation during @@ -1680,11 +1776,12 @@ At risk of beating the topic to death, we're going to review once more the frequ and resolved just before other data checks) and probes that are forward references to constant values. - constant does not vary. But a "constant" member of a class - denoted as R (with no I) in the probes report produced - by CSE -p is actually not available until run start - time. - ---------------- ------------------------------------------------------- +constant does not vary. But a "constant" member of a class +denoted as R (with no I) in the probes report produced +by CSE -p is actually not available until run start +time. + +--- Also there are end-of varieties of all of the above; these are values computed during simulation: end of each hour, end of run, etc. Such values may be reported (using a probe in a UDT report), but will produce an error message if probed in an expression for an input member value. diff --git a/doc/src/introduction.md b/doc/src/docs/introduction.md similarity index 100% rename from doc/src/introduction.md rename to doc/src/docs/introduction.md diff --git a/doc/src/operation.md b/doc/src/docs/operation.md similarity index 63% rename from doc/src/operation.md rename to doc/src/docs/operation.md index ce15e0ffa..754046743 100644 --- a/doc/src/operation.md +++ b/doc/src/docs/operation.md @@ -8,41 +8,39 @@ CSE is invoked from the command prompt or from a batch file using the following where: -*inputfile* -: specifies the name of the text input file for the run(s). If the filename has an extension other than ".cse" (the default), it must be included. The name of the file with weather data for the simulation(s) is given in this file (wfName= statement, see [Weather Data Items](#top-weather-data-items)). +_inputfile_ +: specifies the name of the text input file for the run(s). If the filename has an extension other than ".cse" (the default), it must be included. The name of the file with weather data for the simulation(s) is given in this file (wfName= statement, see [Weather Data Items](#top-weather-data-items)). +_{switches}_ +: indicates zero or more of the following: -*{switches}* -: indicates zero or more of the following: +- -D*name* defines the preprocessor symbol _name_ with the value "". Useful for testing with `#ifdef name`, to invoke variations in the simulation without changing the input file. The CSE preprocessor is described "[The Preprocessor](#the-preprocessor)". -- -D*name* defines the preprocessor symbol *name* with the value "". Useful for testing with `#ifdef name`, to invoke variations in the simulation without changing the input file. The CSE preprocessor is described "[The Preprocessor](#the-preprocessor)". +- -D*name*=_value_ defines the preprocessor symbol _name_ with the specified _value_. _Name_ can then be used in the input file to allow varying the simulation without changing the input file -- see "[The Preprocessor](#the-preprocessor)" for more information. The entire switch should be enclosed in quotes if it contains any spaces -- otherwise the command processor will divide it into two arguments and CSE will not understand it. -- -D*name*=*value* defines the preprocessor symbol *name* with the specified *value*. *Name* can then be used in the input file to allow varying the simulation without changing the input file -- see "[The Preprocessor](#the-preprocessor)" for more information. The entire switch should be enclosed in quotes if it contains any spaces -- otherwise the command processor will divide it into two arguments and CSE will not understand it. +- -U*name* undefines the preprocessor symbol _name_. -- -U*name* undefines the preprocessor symbol *name*. +- -i*path;path;path* specifies directories where CSE looks for input and include files. -- -i*path;path;path* specifies directories where CSE looks for input and include files. +- -b batch mode: suppresses all prompts for user input. Currently there are no prompts implemented in CSE. -b is retained in case prompts are added in the future. It is good practice to include -b in batch script CSE invocations. -- -b batch mode: suppresses all prompts for user input. Currently there are no prompts implemented in CSE. -b is retained in case prompts are added in the future. It is good practice to include -b in batch script CSE invocations. +- -n suppresses screen display of warning messages. When -n is specified, warning messages are reported only to the error file. -- -n suppresses screen display of warning messages. When -n is specified, warning messages are reported only to the error file. +- -p display all the class and member names that can be "probed" or accessed in CSE expressions. "Probes" are described in "[Probes](#probes)". Use with command processor redirection operator ">" to obtain a report in a file. _Inputfile_ may be given or omitted when -p is given. -- -p display all the class and member names that can be "probed" or accessed in CSE expressions. "Probes" are described in "[Probes](#probes)". Use with command processor redirection operator ">" to obtain a report in a file. *Inputfile* may be given or omitted when -p is given. +- -p1 similar to -p, but displays additional member names that cannot be probed or would not make sense to probe in an input file (development aid). -- -p1 similar to -p, but displays additional member names that cannot be probed or would not make sense to probe in an input file (development aid). +- -c display all input names. -- -c display all input names. +- -c1 display input names with build-independent details from CSE CULT tables (development aid). -- -c1 display input names with build-independent details from CSE CULT tables (development aid). +- -c2 display input names with all details from CSE CULT tables (development aid). -- -c2 display input names with all details from CSE CULT tables (development aid). - -- -x specifies report test prefix; see TOP repTestPfx. The -x command line setting takes precedence over the input file value, if any. - -- -t*nn* specifies internal testing option bits (development aid). The following values should be combined bit-wise to determine *nn*. \ - 1: Omit directory paths from file names in reports, yielding location-independent report files suitable for text comparison.\ - 2: Include detailed timing information in the log file (default is summary only). +- -x specifies report test prefix; see TOP repTestPfx. The -x command line setting takes precedence over the input file value, if any. +- -t*nn* specifies internal testing option bits (development aid). The following values should be combined bit-wise to determine _nn_. \ + 1: Omit directory paths from file names in reports, yielding location-independent report files suitable for text comparison.\ + 2: Include detailed timing information in the log file (default is summary only). ## Locating Files @@ -128,4 +126,3 @@ Error Messages (ERR) If a user is running out of memory, there are a series of steps to try to minimize memory usage. --> - diff --git a/doc/src/docs/output-reports.md b/doc/src/docs/output-reports.md new file mode 100644 index 000000000..667a56115 --- /dev/null +++ b/doc/src/docs/output-reports.md @@ -0,0 +1,249 @@ +# Output Reports + +CSE report data is accumulated during simulation and written to the report file at the end of the run. Some reports are generated by default and cannot be turned off. There are a set of predefined reports which may be requested in the input. The user may also define custom reports which include many CSE internal variables. Reports may accumulate data on an a variety of frequencies including subhourly, hourly, daily, monthly, and annual (run) intervals. + +## Units + +The default units for CSE reports are: + +| No Header | No Header | +| --------------- | -------------------------------------------------------- | +| **Energy** | mBtu, millions of Btu (to convert to kWh, divide by 292) | +| **Temperature** | degrees Farenheit | +| **Air Flow** | cfm (cubic feet per minute) | + +## Time + +Hourly reports show hour 1 through 24 where hour 1 includes the time period from midnight to 1 AM. By default, CSE specifies that January first is a Thursday and the simulation occurs on a non-leap year. Daylight savings is in effect from the second Sunday of March on which CSE skips hour 3 until the first Sunday of November when CSE simulates 25 hours. These calendar defaults can be modified as required. + +## METER Reports + +A Meter Report displays the energy use of a METER object, a user-defined "device" that records energy consumption of equipment as simulated by CSE. CSE allows the user to define as many meters as desired and to assign any energy using device to any meter. + +Meters account for energy use in pre-defined categories, called _end uses, that are documented with METER._ + +## Air Flow Meter Report + +An Air Flow Meter Report displays air flow values accumulated by an AFMETER that is associated with one or more ZONEs. The report provides insight into the results of the AirNet pressure model. + +AFMETER maintains values for subhour, hour, day, month, and year intervals. Values are standard cfm (0.075 lb/ft3). Values for intervals longer than subhour are averages. + +Flows are categorized by 1) direction of flow (+ = into zone(s), - = out of zone(s)); IZXFER izAFCat tags; and 3) type of source or sink of the flow (ambient, unconditioned zone, conditioned zone). + +The following items are displayed (using the abbreviations shown in the report headings). The "+/-" notation indicates that two columns are included, one for each direction of flow. For example, "InfX+/-" means the report includes columns "InfX+" (infiltration flows into the zone) and "InfX-" (infiltration flows out of the zone). + +--- + +Tot+/- Total flows + +Unkn+/- Uncategorized flows (generally this shows 0) + +InfX+/- Infiltration flows from/to ambient (izAFCat = InfilEx) + +VntX+/- Natural vent exchanges from/to ambient (izAFCat = VentEx) + +FanX+/- Forced vent and DOAS flows to/from ambient (izAFCat = FanEx) + +InfU+/- Infiltration flows from/to unconditioned zones (izAFCat = InfilIz) + +VntU+/- Natural vent flows from/to unconditioned zones (izAFCat = VentIz) + +FanU+/- Forced vent flows from/to unconditioned zones (izAFCat = FanIz) + +InfC+/- Infiltration flows from/to conditioned zones (izAFCat = InfilIz) + +VntC+/- Natural vent flows from/to conditioned zones (izAFCat = VentIz) + +FanC+/- Forced vent flows from/to conditioned zones (izAFCat = FanIz) + +Duct+/- Duct leakage flows + +HVAC+/- HVAC air flows at zone (i.e. at registers) + +--- + +## Energy Balance Report + +The Energy Balance Report displays the temperature and sensible and latent heat flows into and out of the air of a single zone. Sign conventions assume that a positive flow increases the air temperature. Heat flow from a warm mass element such as a concrete wall into the zone air is defined as a positive flow, heat flow from air into mass is negative. Solar gain into the zone is defined as a positive heat flow. Solar gain that is incident on and absorbed directly into a mass element is shown as both a positve in the SOLAR column (gain to the zone) and a negative in the MASS column (lost from the zone to the mass). + +In a real building zone energy and moisture flows must balance due to the laws of physics. CSE uses approximate solutions for the energy and moisture balances and displays the net balance which is a measure of internal calculation error. + +The following items are displayed (using the abbreviations shown in the report headings): + +--- + +Tair Air temperature in the zone (since CSE uses combined films +this is technically the effective temperature and includes +radiant effects). + +WBair Wet Bulb temperature in the zone. + +Cond Heat flow through light weight surfaces from or to the +outdoors. + +InfS Sensible infiltration heat flow from outdoors. + +Slr Solar gain through glazing (net) and solar gains absorbed by +light surfaces and transmitted into the zone air. + +IgnS Sensible internal gains from lights, equipment, people, etc. + +Mass Net heat flow to (negative) and from (positive) the mass +elements of the zone. + +Izone Net heat flows to other zones in the building. + +MechS Net heat flows from heating, cooling and ventilation. + +BALS The balance (error) calculated by summing the sensible gains +and losses. + +InfL Latent infiltration heat flow. + +IgnL Latent internal gains. + +AirL Latent heat absorbed (negative) or released (positive) by +changes in the room air moisture content. + +MechL Latent heat added or removed by cooling or ventilation. + +BalL The balance (error) calculated by summing the sensible gains +and losses. + +--- + +## Air Handler Load Report + +The Air Handler Load Report displays conditions and loads at the peak load hours for the air handler for a single zone. The following items are displayed: + +--- + +PkVf Peak flow (cfm) at supply fan +VfDs Supply fan design flow (same as peak for E10 systems) +PkQH Peak heat output from heating coil. +Hcapt Rated capacity of heat coil + +--- + +The rest are about the cooling coil. Most of the columns are values at the time of peak part load ratio (plr). Note that, for example, the peak sensible load is the sensible load at the time of peak part load ratio, even if there was a higher sensible load at another time when the part load ratio was smaller. + +--- + +PkMo Month of cooling coil peak plr, 1-12 + +Dy Day of month 1-31 of peak + +Hr Hour of day 1-24 of cooling coil peak plr. + +Tout Outdoor drybulb temperature at time of cooling coil peak plr. + +Wbou Outdoor wetbulb similarly + +Ten Cooling coil entering air temperature at time of peak plr. + +Wben Entering wetbulb similarly + +Tex Exiting air temperature at plr peak + + WbexExiting air wetbulb similarly + +-PkQs Sensible load at time of peak plr, shown positive. + +-PkQl Latent load likewise + +-PkQC Total load -- sum of PkQs and PkQl + +CPlr Peak part load ratio: highest fraction of coil's capacity used, +reflecting both fraction of maximum output under current +conditions used when on and fraction of the time the fan is on. +The maximum output under actual conditions can vary considerably +from the rated capacity for DX coils. The fraction of maximum +output used can only be 1.0 if the sensible and total loads +happen to occur in the same ratio as the sensible and total +capacities. The time the fan is on can be less than 1.0 for +residential systems in which the fan cycles on with the +compressor. For example, if at the cooling peak the coil ran at +.8 power with the fan on .9 of the time, a CPlr of .72 would be +reported. The preceding 12 columns are values at the time this +peak occured. + +Ccapt Cooling coil rated total capacity + +Ccaps Rated sensible capacity. + +--- + +## Air Handler Report + +The Air Handler Load Report displays conditions and heat flows in the air handler for the time period specified. It is important to note that the air handler report only accumulates data if the air handler is on during an hour. The daily and monthly values are averages of the hours the air handler was on and DO NOT INCLUDE OFF HOUR VALUES. The following items are displayed: + +--- + +Tout Outdoor drybulb temperature during hours the air handler was +on. + +Wbou Outdoor wetbulb temperature similarly. + +Tret Return air dry bulb temperature during hours the air handler +was on before return duct losses or leaks. + +Wbre Return air wetbulb similarly + +po Fraction outside air including economizer damper leakage, but +not return duct leakage. + +Tmix Mixed air dry bulb temperature -- after return air combined +with outside air; after return fan, but before supply fan and +coil(s). + +Wbmi Mixed air wet bulb temperature, similarly. + +Tsup Supply air dry bulb temperature to zone terminals -- after +coil(s) and air handler supply duct leak and loss; (without +in zone duct losses after terminals). + +WBsu Supply air wet bulb temperature similarly. + +HrsOn Hours during which the fan operated at least part of the +time. + +FOn Fraction of the time the fan was on during the hours it +operated (HrsOn). CHECK FOR VAV, IS IT FLOW OR TIME + +VF Volumetric flow, measured at mix point/supply fan/coils; +includes air that leaks out of supply duct and is thus non-0 +even when zone terminals are taking no flow + +Qheat Heat energy added to air stream by heat coil, if any, +MEASURED AT COIL not as delivered to zones (see Qload). + +Qsens, Sensible, latent, and total heat added to air stream +Qlat and (negative values) by cooling coil, MEASURED AT COIL, +Qcool including heat cancelled by fan heat and duct losses, and +heat added to air lost through supply duct leak. + +Qout Net heat taken from outdoor air. Sum of sensible and latent, +measured RELATIVE TO CURRENT RETURN AIR CONDITIONS. + +Qfan Heat added to air stream by supply fan, plus return fan if +any -- but not relief fan.. + +Qloss Heat added to air stream by supply and return duct leaks and +conductive loss. Computed in each case as the sensible and +latent heat in the air stream relative to return air +conditions after the leak or loss, less the same value before +the leak or loss. + +Qload Net energy delivered to the terminals -- Sensible and latent +energy, measured relative to return air conditions. INCLUDES +DUCT LOSSES after terminals; thus will differ from sum of +zone qMech's + qMecLat's. + +Qbal Sum of all the 'Q' columns, primarily a development aid. Zero +indicates consistent and accurate computation; the normal +printout is something like .0000, indicating that the value +was too small to print in the space alloted, but not +precisely zero, due to computational tolerances and internal +round-off errors. + +--- diff --git a/doc/src/docs/probe-definitions/index.md b/doc/src/docs/probe-definitions/index.md new file mode 100644 index 000000000..e4726f717 --- /dev/null +++ b/doc/src/docs/probe-definitions/index.md @@ -0,0 +1 @@ +Probe definitions diff --git a/doc/src/docs/probe-definitions/probe-1.md b/doc/src/docs/probe-definitions/probe-1.md new file mode 100644 index 000000000..e69de29bb diff --git a/doc/src/enduses.md b/doc/src/enduses.md deleted file mode 100644 index 1a1ed5bae..000000000 --- a/doc/src/enduses.md +++ /dev/null @@ -1,26 +0,0 @@ -------- ------------------------------------------------------------- -Clg Cooling -Htg Heating (includes heat pump compressor) -HPBU Heat pump resistance heating (backup and defrost) -DHW Domestic (service) hot water -DHWBU Domestic (service) hot water heating backup (HPWH resistance) -DHWMFL Domestic (service) hot water heating multi-family loop pumping and loss makeup -FANC Fans, AC and cooling ventilation -FANH Fans, heating -FANV Fans, IAQ venting -FAN Fans, other purposes -AUX HVAC auxiliaries such as pumps -PROC Process -LIT Lighting -RCP Receptacles -EXT Exterior lighting -REFR Refrigeration -DISH Dishwashing -DRY Clothes drying -WASH Clothes washing -COOK Cooking -USER1 User-defined category 1 -USER2 User-defined category 2 -BT Battery charge power -PV Photovoltaic power generation -------- ------------------------------------------------------------- diff --git a/doc/src/mkdocs.yml b/doc/src/mkdocs.yml new file mode 100644 index 000000000..b37aee0cd --- /dev/null +++ b/doc/src/mkdocs.yml @@ -0,0 +1,116 @@ +site_author: CSE Authors +site_description: Documentation Website for CSE +site_dir: ../build +site_name: CSE Documentation +site_url: "https://cse-sim.github.io/cse/" +copyright: "© 2025 The CSE Authors. All rights reserved." +theme: + name: material + features: + - content.code.copy + - toc.follow + - navigation.instant + - navigation.indexes + # favicon: assets/favicon.ico + # logo: assets/logo.svg + # palette: + # primary: blue grey + # accent: blue +repo_name: cse +repo_url: https://github.com/cse-sim/cse +not_in_nav: index.md +nav: + - Introduction: introduction.md + - Operation: operation.md + - Input Structure: input-structure.md + - Input Data: + - input-data/index.md + - TOP Members: input-data/top-members.md + - HOLIDAY: input-data/holiday.md + - DESCOND: input-data/descond.md + - MATERIAL: input-data/material.md + - CONSTRUCTION: input-data/construction.md + - FOUNDATION: input-data/foundation.md + - FNDBLOCK: input-data/fndblock.md + - LAYER: input-data/layer.md + - GLAZETYPE: input-data/glazetype.md + - METER: input-data/meter.md + - DHWMETER: input-data/dhwmeter.md + - AFMETER: input-data/afmeter.md + - LOADMETER: input-data/loadmeter.md + - ZONE: input-data/zone.md + - GAIN: input-data/gain.md + - SURFACE: input-data/surface.md + - WINDOW: input-data/window.md + - SHADE: input-data/shade.md + - SGDIST: input-data/sgdist.md + - DOOR: input-data/door.md + - PERIMETER: input-data/perimeter.md + - TERMINAL: input-data/terminal.md + - IZXFER: input-data/izxfer.md + - DOAS: input-data/doas.md + - RSYS: input-data/rsys.md + - DUCTSEG: input-data/ductseg.md + - PERFORMANCEMAP: input-data/performancemap.md + - DHWDAYUSE: input-data/dhwdayuse.md + - DHWUSE: input-data/dhwuse.md + - DHWSYS: input-data/dhwsys.md + - DHWHEATER: input-data/dhwheater.md + - DHWLOOPHEATER: input-data/dhwloopheater.md + - DHWHEATREC: input-data/dhwheatrec.md + - DHWTANK: input-data/dhwtank.md + - DHWPUMP: input-data/dhwpump.md + - DHWLOOP: input-data/dhwloop.md + - DHWLOOPPUMP: input-data/dhwlooppump.md + - DHWLOOPSEG: input-data/dhwloopseg.md + - DHWLOOPBRANCH: input-data/dhwloopbranch.md + - DHWSOLARSYS: input-data/dhwsolarsys.md + - DHWSOLARCOLLECTOR: input-data/dhwsolarcollector.md + - PVARRAY: input-data/pvarray.md + - SHADEX: input-data/shadex.md + - BATTERY: input-data/battery.md + - AIRHANDLER: input-data/airhandler.md + - HEATPLANT: input-data/heatplant.md + - BOILER: input-data/boiler.md + - COOLPLANT: input-data/coolplant.md + - CHILLER: input-data/chiller.md + - TOWERPLANT: input-data/towerplant.md + - REPORTFILE: input-data/reportfile.md + - REPORT: input-data/report.md + - REPORTCOL: input-data/reportcol.md + - EXPORTFILE: input-data/exportfile.md + - EXPORT: input-data/export.md + - EXPORTCOL: input-data/exportcol.md + - IMPORTFILE: input-data/importfile.md + - Output Reports: output-reports.md + - Probe Definitions: + - probe-definitions/index.md + - Probe 1: probe-definitions/probe-1.md +plugins: + - search + - table-reader + - jinja2 +markdown_extensions: + - markdown_grid_tables + - pymdownx.smartsymbols + - pymdownx.critic + - pymdownx.caret + - pymdownx.keys + - pymdownx.mark + - pymdownx.tilde + - pymdownx.highlight: + anchor_linenums: true + line_spans: __span + pygments_lang_class: true + - pymdownx.inlinehilite + - pymdownx.snippets + - pymdownx.superfences + - def_list + - toc: + toc_depth: 3 + # permalink: true +extra_css: + - assets/stylesheets/extra_styles.css +extra_javascript: + - https://unpkg.com/tablesort@5.3.0/dist/tablesort.min.js + - assets/javascript/extra_js.js diff --git a/doc/src/output-reports.md b/doc/src/output-reports.md deleted file mode 100644 index 46cd174be..000000000 --- a/doc/src/output-reports.md +++ /dev/null @@ -1,242 +0,0 @@ -# Output Reports - -CSE report data is accumulated during simulation and written to the report file at the end of the run. Some reports are generated by default and cannot be turned off. There are a set of predefined reports which may be requested in the input. The user may also define custom reports which include many CSE internal variables. Reports may accumulate data on an a variety of frequencies including subhourly, hourly, daily, monthly, and annual (run) intervals. - -## Units - -The default units for CSE reports are: - - ------------- --------------------------------------------------------- - Energy mBtu, millions of Btu (to convert to kWh divide by 292) - Temperature degrees Farenheit - Air Flow cfm (cubic feet per minute) - ------------- --------------------------------------------------------- - -## Time - -Hourly reports show hour 1 through 24 where hour 1 includes the time period from midnight to 1 AM. By default, CSE specifies that January first is a Thursday and the simulation occurs on a non-leap year. Daylight savings is in effect from the second Sunday of March on which CSE skips hour 3 until the first Sunday of November when CSE simulates 25 hours. These calendar defaults can be modified as required. - -## METER Reports - -A Meter Report displays the energy use of a METER object, a user-defined "device" that records energy consumption of equipment as simulated by CSE. CSE allows the user to define as many meters as desired and to assign any energy using device to any meter. - -Meters account for energy use in pre-defined categories, called *end uses, that are documented with METER.* - -## Air Flow Meter Report - -An Air Flow Meter Report displays air flow values accumulated by an AFMETER that is associated with one or more ZONEs. The report provides insight into the results of the AirNet pressure model. - -AFMETER maintains values for subhour, hour, day, month, and year intervals. Values are standard cfm (0.075 lb/ft3). Values for intervals longer than subhour are averages. - -Flows are categorized by 1) direction of flow (+ = into zone(s), - = out of zone(s)); IZXFER izAFCat tags; and 3) type of source or sink of the flow (ambient, unconditioned zone, conditioned zone). - -The following items are displayed (using the abbreviations shown in the report headings). The "+/-" notation indicates that two columns are included, one for each direction of flow. For example, "InfX+/-" means the report includes columns "InfX+" (infiltration flows into the zone) and "InfX-" (infiltration flows out of the zone). - ----------- ------------------------------------------------------------- -Tot+/- Total flows - -Unkn+/- Uncategorized flows (generally this shows 0) - -InfX+/- Infiltration flows from/to ambient (izAFCat = InfilEx) - -VntX+/- Natural vent exchanges from/to ambient (izAFCat = VentEx) - -FanX+/- Forced vent and DOAS flows to/from ambient (izAFCat = FanEx) - -InfU+/- Infiltration flows from/to unconditioned zones (izAFCat = InfilIz) - -VntU+/- Natural vent flows from/to unconditioned zones (izAFCat = VentIz) - -FanU+/- Forced vent flows from/to unconditioned zones (izAFCat = FanIz) - -InfC+/- Infiltration flows from/to conditioned zones (izAFCat = InfilIz) - -VntC+/- Natural vent flows from/to conditioned zones (izAFCat = VentIz) - -FanC+/- Forced vent flows from/to conditioned zones (izAFCat = FanIz) - -Duct+/- Duct leakage flows - -HVAC+/- HVAC air flows at zone (i.e. at registers) ----------- ------------------------------------------------------------- - - -## Energy Balance Report - -The Energy Balance Report displays the temperature and sensible and latent heat flows into and out of the air of a single zone. Sign conventions assume that a positive flow increases the air temperature. Heat flow from a warm mass element such as a concrete wall into the zone air is defined as a positive flow, heat flow from air into mass is negative. Solar gain into the zone is defined as a positive heat flow. Solar gain that is incident on and absorbed directly into a mass element is shown as both a positve in the SOLAR column (gain to the zone) and a negative in the MASS column (lost from the zone to the mass). - -In a real building zone energy and moisture flows must balance due to the laws of physics. CSE uses approximate solutions for the energy and moisture balances and displays the net balance which is a measure of internal calculation error. - -The following items are displayed (using the abbreviations shown in the report headings): - - ---------- ------------------------------------------------------------- - Tair Air temperature in the zone (since CSE uses combined films - this is technically the effective temperature and includes - radiant effects). - - WBair Wet Bulb temperature in the zone. - - Cond Heat flow through light weight surfaces from or to the - outdoors. - - InfS Sensible infiltration heat flow from outdoors. - - Slr Solar gain through glazing (net) and solar gains absorbed by - light surfaces and transmitted into the zone air. - - IgnS Sensible internal gains from lights, equipment, people, etc. - - Mass Net heat flow to (negative) and from (positive) the mass - elements of the zone. - - Izone Net heat flows to other zones in the building. - - MechS Net heat flows from heating, cooling and ventilation. - - BALS The balance (error) calculated by summing the sensible gains - and losses. - - InfL Latent infiltration heat flow. - - IgnL Latent internal gains. - - AirL Latent heat absorbed (negative) or released (positive) by - changes in the room air moisture content. - - MechL Latent heat added or removed by cooling or ventilation. - - BalL The balance (error) calculated by summing the sensible gains - and losses. - ---------- ------------------------------------------------------------- - -## Air Handler Load Report - -The Air Handler Load Report displays conditions and loads at the peak load hours for the air handler for a single zone. The following items are displayed: - - ---------- ------------------------------------------------------------- - PkVf Peak flow (cfm) at supply fan - VfDs Supply fan design flow (same as peak for E10 systems) - PkQH Peak heat output from heating coil. - Hcapt Rated capacity of heat coil - ---------- ------------------------------------------------------------- - -The rest are about the cooling coil. Most of the columns are values at the time of peak part load ratio (plr). Note that, for example, the peak sensible load is the sensible load at the time of peak part load ratio, even if there was a higher sensible load at another time when the part load ratio was smaller. - - ------ ----------------------------------------------------------------- - PkMo Month of cooling coil peak plr, 1-12 - - Dy Day of month 1-31 of peak - - Hr Hour of day 1-24 of cooling coil peak plr. - - Tout Outdoor drybulb temperature at time of cooling coil peak plr. - - Wbou Outdoor wetbulb similarly - - Ten Cooling coil entering air temperature at time of peak plr. - - Wben Entering wetbulb similarly - - Tex Exiting air temperature at plr peak - - WbexExiting air wetbulb similarly - - -PkQs Sensible load at time of peak plr, shown positive. - - -PkQl Latent load likewise - - -PkQC Total load -- sum of PkQs and PkQl - - CPlr Peak part load ratio: highest fraction of coil's capacity used, - reflecting both fraction of maximum output under current - conditions used when on and fraction of the time the fan is on. - The maximum output under actual conditions can vary considerably - from the rated capacity for DX coils. The fraction of maximum - output used can only be 1.0 if the sensible and total loads - happen to occur in the same ratio as the sensible and total - capacities. The time the fan is on can be less than 1.0 for - residential systems in which the fan cycles on with the - compressor. For example, if at the cooling peak the coil ran at - .8 power with the fan on .9 of the time, a CPlr of .72 would be - reported. The preceding 12 columns are values at the time this - peak occured. - - Ccapt Cooling coil rated total capacity - - Ccaps Rated sensible capacity. - ------ ----------------------------------------------------------------- - -## Air Handler Report - -The Air Handler Load Report displays conditions and heat flows in the air handler for the time period specified. It is important to note that the air handler report only accumulates data if the air handler is on during an hour. The daily and monthly values are averages of the hours the air handler was on and DO NOT INCLUDE OFF HOUR VALUES. The following items are displayed: - - ---------- ------------------------------------------------------------- - Tout Outdoor drybulb temperature during hours the air handler was - on. - - Wbou Outdoor wetbulb temperature similarly. - - Tret Return air dry bulb temperature during hours the air handler - was on before return duct losses or leaks. - - Wbre Return air wetbulb similarly - - po Fraction outside air including economizer damper leakage, but - not return duct leakage. - - Tmix Mixed air dry bulb temperature -- after return air combined - with outside air; after return fan, but before supply fan and - coil(s). - - Wbmi Mixed air wet bulb temperature, similarly. - - Tsup Supply air dry bulb temperature to zone terminals -- after - coil(s) and air handler supply duct leak and loss; (without - in zone duct losses after terminals). - - WBsu Supply air wet bulb temperature similarly. - - HrsOn Hours during which the fan operated at least part of the - time. - - FOn Fraction of the time the fan was on during the hours it - operated (HrsOn). CHECK FOR VAV, IS IT FLOW OR TIME - - VF Volumetric flow, measured at mix point/supply fan/coils; - includes air that leaks out of supply duct and is thus non-0 - even when zone terminals are taking no flow - - Qheat Heat energy added to air stream by heat coil, if any, - MEASURED AT COIL not as delivered to zones (see Qload). - - Qsens, Sensible, latent, and total heat added to air stream - Qlat and (negative values) by cooling coil, MEASURED AT COIL, - Qcool including heat cancelled by fan heat and duct losses, and - heat added to air lost through supply duct leak. - - Qout Net heat taken from outdoor air. Sum of sensible and latent, - measured RELATIVE TO CURRENT RETURN AIR CONDITIONS. - - Qfan Heat added to air stream by supply fan, plus return fan if - any -- but not relief fan.. - - Qloss Heat added to air stream by supply and return duct leaks and - conductive loss. Computed in each case as the sensible and - latent heat in the air stream relative to return air - conditions after the leak or loss, less the same value before - the leak or loss. - - Qload Net energy delivered to the terminals -- Sensible and latent - energy, measured relative to return air conditions. INCLUDES - DUCT LOSSES after terminals; thus will differ from sum of - zone qMech's + qMecLat's. - - Qbal Sum of all the 'Q' columns, primarily a development aid. Zero - indicates consistent and accurate computation; the normal - printout is something like .0000, indicating that the value - was too small to print in the space alloted, but not - precisely zero, due to computational tolerances and internal - round-off errors. - ---------- ------------------------------------------------------------- - - diff --git a/doc/src/records/fndblock.md b/doc/src/records/fndblock.md deleted file mode 100644 index 33dbfc92a..000000000 --- a/doc/src/records/fndblock.md +++ /dev/null @@ -1,153 +0,0 @@ -# FNDBLOCK - -Foundation blocks are materials within the two-dimensional domain beyond those defined by the slab and wall SURFACEs. Each block is represented as a rectangle in the domain by specifying the X (lateral) and Z (vertical) coordinates of two opposite corners. The coordinate system for each point is relative to the X and Z references defined by the user. As a convention The positive X direction is away from the building, and the positive Z direction is down. - -Options for X and Z references are illustrated in the figure below. - -![Foundation block references](media/fd_refs.png) - -The default reference is WALLINT, WALLTOP. - -An example of defining a block for interior wall insulation is shown below. Here the two points defining the block (P1 and P2) are both shown relative to their reference points (Ref1 and Ref2, respectively). - -![Foundation block example](media/fd_block.png) - -Note: X and Z point values of zero imply that a point is the same as the reference point. The default for X and Z point values is zero since points will often align with one or both of the reference values. - -It does not matter which of the four corners of a block are used to define the two points as long as they are opposite corners. - -**fbMat=*matName*** - -Name of MATERIAL of the foundation block. - -<%= member_table( - legal_range: "Name of a *Material*", - default: "*none*", - required: "Yes", - variability: "constant") %> - -**fbX1Ref=*choice*** - -Relative X origin for *fbX1* point. Options are: - -- SYMMETRY -- WALLINT -- WALLCENTER -- WALLEXT -- FARFIELD - -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "WALLINT", - required: "No", - variability: "constant") %> - -**fbZ1Ref=*choice*** - -Relative Z origin for *fbZ1* point. Options are: - -- WALLTOP -- GRADE -- SLABTOP -- SLABBOTTOM -- WALLBOTTOM -- DEEPGROUND - -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "WALLTOP", - required: "No", - variability: "constant") %> - -**fbX1=*float*** - -The X position of the first corner of the block relative to *fbX1Ref*. - -<%= member_table( - units: "ft", - legal_range: "", - default: "0.0", - required: "No", - variability: "constant") %> - -**fbZ1=*float*** - -The Z position of the first corner of the block relative to *fbZ1Ref*. - -<%= member_table( - units: "ft", - legal_range: "", - default: "0.0", - required: "No", - variability: "constant") %> - -**fbX2Ref=*choice*** - -Relative X origin for *fbX2* point. Options are: - -- SYMMETRY -- WALLINT -- WALLCENTER -- WALLEXT -- FARFIELD - -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "WALLINT", - required: "No", - variability: "constant") %> - -**fbZ2Ref=*choice*** - -Relative Z origin for *fbZ2* point. Options are: - -- WALLTOP -- GRADE -- SLABTOP -- SLABBOTTOM -- WALLBOTTOM -- DEEPGROUND - -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "WALLTOP", - required: "No", - variability: "constant") %> - -**fbX2=*float*** - -The X position of the second corner of the block relative to *fbX2Ref*. - -<%= member_table( - units: "ft", - legal_range: "", - default: "0.0", - required: "No", - variability: "constant") %> - -**fbZ2=*float*** - -The Z position of the second corner of the block relative to *fbZ2Ref*. - -<%= member_table( - units: "ft", - legal_range: "", - default: "0.0", - required: "No", - variability: "constant") %> - -**endFndBlock** - -Indicates the end of the foundation block definition. Alternatively, the end of the foundation block definition can be indicated by the declaration of another object or by END. - -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> diff --git a/doc/src/records/pvarray.md b/doc/src/records/pvarray.md deleted file mode 100644 index aa2cfe29b..000000000 --- a/doc/src/records/pvarray.md +++ /dev/null @@ -1,288 +0,0 @@ -# PVARRAY - -PVARRAY describes a photovoltaic panel system. The algorithms are based on the [PVWatts calculator](http://www.bwilcox.com/BEES/docs/Dobos%20-%20PVWatts%20v5.pdf). - -**pvName** - -Name of photovoltaic array. Give after the word PVARRAY. - -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> - -**pvElecMtr=*choice*** - -Name of meter by which this PVARRAY's AC power out is recorded. Generated power is expressed as a negative value. - -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*none*", - required: "No", - variability: "constant") - %> - -**pvEndUse=*choice*** - -Meter end use to which the PVARRAY's generated energy should be accumulated. - -<%= insert_file('doc/src/enduses.md') %> - -<%= member_table( - units: "", - legal_range: "*Codes listed above*", - default: "PV", - required: "No", - variability: "constant") - %> - -**pvDCSysSize=*float*** - -The rated photovoltaic system DC capacity/size as indicated by the nameplate. - -<%= member_table( - units: "kW", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> - -**pvModuleType=*choice*** - -Type of module to model. The module type determines the refraction index and temperature coefficient used in the simulation. Alternatively, the "Custom" module type may be used in conjunction with user-defined input for *pvCoverRefrInd* and *pvTempCoeff*. - -<%= csv_table(< true) - **Module Type**, **pvCoverRefrInd**, **pvTempCoeff** - Standard, 1.3, -0.00206 - Premium, 1.3, -0.00194 - ThinFilm, 1.3, -0.00178 - Custom, User-defined, User-defined -END -%> - -<%= member_table( - units: "", - legal_range: "Standard Premium ThinFilm Custom", - default: "Standard", - required: "No", - variability: "constant") - %> - -**pvCoverRefrInd=*float*** - -The refraction index for the coating applied to the module cover. A value of 1.0 represents refraction through air. Coatings have higher refraction indexes that capture more solar at lower angles of incidence. - -<%= member_table( - units: "", - legal_range: "x $\\geq$ 0", - default: "1.3", - required: "No", - variability: "constant") - %> - -**pvTempCoeff=*float*** - -The temperature coefficient how the efficiency of the module varies with the cell temperature. Values are typically negative. - -<%= member_table( - units: "1/^o^F", - legal_range: "*no restrictions*", - default: "-0.00206", - required: "No", - variability: "constant") - %> - -**pvArrayType=*choice*** - -The type of array describes mounting and tracking options. Roof mounted arrays have a higher installed nominal operating cell temperature (INOCT) of 120 ^o^F compared to the default of 113 ^o^F. Array self-shading is not currently calculated for adjacent rows of modules within an array. - -<%= member_table( - units: "", - legal_range: " FixedOpenRack, FixedRoofMount, OneAxisTracking, TwoAxisTracking", - default: "FixedOpenRack", - required: "No", - variability: "constant") - %> - -**pvTilt=*float*** - -The tilt of the photovoltaic array from horizontal. Values outside the range 0 to 360 are first normalized to that range. For one-axis tracking, defines the tilt of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. - -<%= member_table( - units: "degrees", - legal_range: "unrestricted", - default: "from pvVertices (if given) else 0", - required: "No", - variability: "hourly") - %> - -The following figures illustrate the use of both pvTilt and pvAzm for various configurations: - -![Fixed, south facing, tilted at 40^o^](media/pv_fixed.png) - -![One-axis tracker, south facing, tilted at 20^o^](media/pv_tilted_tracker_south.png) - -![One-axis tracker, horizontal aligned North/South (more common)](media/pv_horiz_tracker_south.png) - -![One-axis tracker, horizontal aligned East/West (less common)](media/pv_horiz_tracker_east.png) - -**pvAzm=*float*** - -Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the range 0^o^ $\leq$ *x* $<$ 360^o^ is given, it is normalized to that range. For one-axis tracking, defines the azimuth of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. - -<%= member_table( - units: "degrees", - legal_range: "unrestricted", - default: "from pvVertices (if given) else 0", - required: "No", - variability: "hourly") - %> - -**pvVertices=*list of up to 36 floats*** - - Vertices of an optional polygon representing the position and shape of the photovoltaic array. The polygon is used to calculate the shaded fraction using an advanced shading model. Only PVARRAYs and [SHADEXs](#shadex) are considered in the advanced shading model -- PVARRAYs can be shaded by SHADEXs or other PVARRAYs. If pvVertices is omitted, the PVARRAY is assumed to be unshaded at all times. Advanced shading must be enabled via [TOP exShadeModel](#top-model-control-items). Note that the polygon is used only for evaluating shading; array capacity is specified by pvDCSysSize (above). - - The values that follow pvVertices are a series of X, Y, and Z values for the vertices of the polygon using a coordinate system defined from a viewpoint facing north. X and Y values convey east-west and north-south location respectively relative to an arbitrary origin (positive X value are to the east; positive Y values are to the north). Z values convey height relative to the building 0 level and positive values are upward. - - The vertices are specified in counter-clockwise order when facing the receiving surface of the PVARRAY. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When pvMounting=Building, the effective position of the polygon is modified in response to building rotation specified by [TOP bldgAzm](#top-general-data-items). - - For example, to specify a rectangular photovoltaic array that is 10 x 20 ft, tilted 45 degrees, and facing south -- - - pvVertices = 0, 0, 15, 20, 0, 15, 20, 7.07, 22.07, 0, 7.07, 22.07 - -<%= member_table( - units: "ft", - legal_range: "unrestricted", - default: "no polygon", - required: "9, 12, 15, 18, 21, 24, 27, 30, 33, or 36 values", - variability: "constant") - %> - -**pvSIF=*float*** - - Shading Impact Factor (SIF) of the array used to represent the disproportionate impact on array output of partially shaded modules at the sub-array level. This impact is applied to the effective beam irradiance on the array: - - $$I_{poa,beam,eff} = \max\left(I_{poa,beam}\cdot\left(1-SIF\cdot f_{sh}\right),0\right)$$ - - where $f_{sh}$ is the fraction of the array that is shaded. - - Default value is 1.2, which is representative of PV systems with sub-array microinverters or DC power optimizers. For systems without sub-array power electronics, values are closer to 2.0. - -<%= member_table( - legal_range: "*x* $\\geq$ 1.0", - default: "1.2", - required: "No", - variability: "constant") %> - - -**pvMounting=*choice*** - - Specified mounting location of this PVARRAY. pvMounting=Site indicates the array position is not altered by building rotation via [TOP bldgAzm](#top-general-data-items), while PVARRAYs with pvMounting=Building are assumed to rotate with the building. - -<%= member_table( - units: "", - legal_range: "Building or Site", - default: "Building", - required: "No", - variability: "constant") - %> - -**pvGrndRefl=*float*** - -Ground reflectance used for calculating reflected solar incidence on the array. - -<%= member_table( - units: "", - legal_range: "0 $<$ *x* $<$ 1.0", - default: "0.2", - required: "No", - variability: "hourly") - %> - - - -**pvDCtoACRatio=*float*** - -DC-to-AC ratio used to intentionally undersize the AC inverter. This is used to increase energy production in the beginning and end of the day despite the possibility of clipping peak sun hours. - -<%= member_table( - units: "", - legal_range: "*x* > 0.0", - default: "1.2", - required: "No", - variability: "constant") - %> - -**pvInverterEff=*float*** - -AC inverter efficiency at rated DC power. - -<%= member_table( - units: "", - legal_range: "0 $<$ *x* $<$ 1.0", - default: "0.96", - required: "No", - variability: "constant") - %> - -**pvSysLosses=*float*** - -Fraction of total DC energy lost. The total loss from a system is aggregated from several possible causes as illustrated below: - -<%= csv_table(< true) - **Loss Type**, **Default Assumption** - Soiling, 0.02 - *Shading*, *0 (handled explicitly)* - Snow, 0 - *Mismatch*, *0 (shading mismatch handled explicitly [see pvSIF])* - Wiring, 0.02 - Connections, 0.005 - Light-induced degradation, 0.015 - Nameplate rating, 0.01 - *Age*, *0.05 (estimated 0.5% degradation over 20 years)* - Availability, 0.03 - **Total**, **0.14** -END -%> - -*Italic* lines indicate differences from PVWatts assumptions. - -<%= member_table( - units: "", - legal_range: "0 $<$ *x* $<$ 1.0", - default: "0.14", - required: "No", - variability: "hourly") - %> - -**endPVARRAY** - -Optionally indicates the end of the PVARRAY definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. - -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> - -**Related Probes:** - -- @[PVArray](#p_pvarray) diff --git a/doc/src/tables/input-data--member-table-definition.csv b/doc/src/tables/input-data--member-table-definition.csv deleted file mode 100644 index 63ee491ee..000000000 --- a/doc/src/tables/input-data--member-table-definition.csv +++ /dev/null @@ -1,6 +0,0 @@ -"*Units*","units of measure (lb., ft, Btu, etc.) where applicable" -"*Legal*","limits of valid range for numeric inputs; valid choices" -"*Range*","for *choice* members, etc." -"*Default*","value assumed if member not given; applicable only if not required" -"*Required*","YES if you must give this member" -"*Variability*","how often the given expression can change: hourly, daily, etc. See sections on [expressions](#expressions-overview), [statements](#member-statements), and [variation frequencies](#variation-frequencies-revisited)" diff --git a/doc/src/web-page.yaml b/doc/src/web-page.yaml deleted file mode 100644 index 81287ffaf..000000000 --- a/doc/src/web-page.yaml +++ /dev/null @@ -1,19 +0,0 @@ -description: "CSE Website" -tag: "website" -metadata: - title: "California Simulation Engine" -url-multipage: ~ -url-singlepage: ~ -url-pdf: ~ -media-dir: ~ -cross-link?: false -build-singlepage-html?: false -build-multipage-html?: true -build-pdf?: false -html-template: "../config/template/site-template.html" -build-table-of-contents?: false -html-navigation?: false -css-files: - - "/css/base.css" -sections: - - [1, "index.md"] diff --git a/doc/test/coverage_check_test.rb b/doc/test/coverage_check_test.rb deleted file mode 100644 index 098d13993..000000000 --- a/doc/test/coverage_check_test.rb +++ /dev/null @@ -1,528 +0,0 @@ -require_relative 'test_helper' -require 'coverage_check' -require 'set' - -class CoverageCheckTest < TC - include CoverageCheck - def setup - @coolplant_path = File.expand_path('../resources/coolplant.md', __FILE__) - @airhandler_path = File.expand_path('../resources/airhandler.md', __FILE__) - @cullist_path = File.expand_path('../resources/cullist-snippet.txt', __FILE__) - @cullist_full_path = File.expand_path('../resources/cullist.txt', __FILE__) - @all_records_path = Dir[File.expand_path('../resources/*.md', __FILE__)] - end - def test_MdHead - line = "3" - expected = nil - actual = MdHeader[line] - assert_nil(actual) - # - line = "# A Header" - expected = "A Header" - actual = MdHeader[line] - assert_equal(expected, actual) - end - def test_DataItemHeader - line = "3" - expected = nil - actual = DataItemHeader[line] - assert_nil(actual) - # - line = "**sfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$**" - expected = "sfanCurvePy" - actual = DataItemHeader[line] - assert_equal(expected, actual) - # - line = " **Units** **Legal Range** **Default** **Required** **Variability**" - expected = nil - actual = DataItemHeader[line] - assert_nil(actual) - # - line = "**ahTsSp=*float or choice***" - expected = "ahTsSp" - actual = DataItemHeader[line] - assert_equal(expected, actual) - # - line = "*AhTsRaMn* and *ahTsRaMx* are used when *ahTsSp* is RA." - expected = nil - actual = DataItemHeader[line] - assert_nil(actual) - end - def test_DataItemHeader_parses_grouped_items - # see https://github.com/cse-sim/cse/issues/65 - # and https://github.com/cse-sim/cse/issues/81 - items = [ - ["**wsFaucetCount=*integer***\\", "wsFaucetCount"], - ["**wsShowerCount=*integer***\\", "wsShowerCount"], - ["**wsBathCount=*integer***\\", "wsBathCount"], - # introduce whitespace at the end of the line; should still work - ["**wsCWashrCount=*integer***\\ ", "wsCWashrCount"], - ["**wsDWashrCount=*integer***", "wsDWashrCount"]] - items.each do |item| - line, expected = item - actual = DataItemHeader[line] - assert_equal(expected, actual) - end - end - def test_ParseRecordDocument - content = File.read(@coolplant_path) - expected = { - "COOLPLANT" => Set.new([ - "coolplantName", - "cpSched", - "cpTsSp", - "cpPipeLossF", - "cpTowerplant", - "cpStage1", - "cpStage2 through cpStage7 same", - "endCoolplant", - ]) - } - actual = ParseRecordDocument[content] - assert_equal(expected, actual) - end - def test_ReadRecordDocument - expected = { - "COOLPLANT" => Set.new([ - "coolplantName", - "cpSched", - "cpTsSp", - "cpPipeLossF", - "cpTowerplant", - "cpStage1", - "cpStage2 through cpStage7 same", - "endCoolplant", - ]) - } - actual = ReadRecordDocument[@coolplant_path] - assert_equal(expected, actual) - end - def test_ReadAllRecordDocuments - actual = ReadAllRecordDocuments[[@airhandler_path, @coolplant_path]] - expected = { - "AIRHANDLER" => Set.new([ - "ahName", - "ahSched" - ]), - "AIRHANDLER Supply Air Temperature Controller" => Set.new([ - "ahTsSp", - "ahFanCycles", - "ahTsMn", - "ahTsMx", - "ahWzCzns", - "ahCzCzns", - "ahCtu", - "ahTsRaMx", - "ahTsRaMx", - ]), - "AIRHANDLER Supply fan" => Set.new([ - "sfanType", - "sfanVfDs", - "sfanVfMxF", - "sfanPress", - "sfanElecPwr", - "sfanEff", - "sfanShaftBhp", - "sfanCurvePy", - "sfanMotEff", - "sfanMotPos", - "sfanMtr", - ]), - "AIRHANDLER Return/Relief fan" => Set.new([ - "rfanType", - "rfanVfDs", - "rfanVfMxF", - "rfanPress", - "rfanElecPwr", - "rfanEff", - "rfanShaftBhp", - "rfanCurvePy", - "rfanMotEff", - "rfanMotPos", - "rfanMtr", - ]), - "AIRHANDLER Heating coil/Modeling Furnaces" => Set.new([ - "ahhcType", - "ahhcSched", - "ahhcCapTRat", - "ahhcMtr", - "ahhcHeatplant", - "ahhcEirR", - "ahhcEffR", - "ahhcPyEi", - "ahhcStackEffect", - "ahpCap17", - "ahpCap35", - "ahpCap47", - "ahpFd35Df", - "ahpCapIa", - "ahpSupRh", - "ahpTFrMn", - "ahpTFrMx", - "ahpTFrPk", - "ahpDfrFMn", - "ahpDfrFMx", - "ahpDfrCap", - "ahpDfrRh", - "ahpTOff", - "ahpTOn", - "ahpIn17", - "ahpIn47", - "ahpInIa", - "ahpCd", - "ahhcAuxOn", - "ahhcAuxOff", - "ahhcAuxFullOff", - "ahhcAuxOnAtAll", - "ahhcAuxOnMtr", - "ahhcAuxOffMtr", - "ahhcAuxFullOffMtr", - "ahhcAuxOnAtAllMtr", - ]), - "AIRHANDLER Cooling coil" => Set.new([ - "ahccType", - "ahccSched", - "ahccCapTRat", - "ahccCapSRat", - "ahccMtr", - "ahccMinTEvap", - "ahccK1", - "ahccBypass", - "ahccEirR", - "ahccMinUnldPlr", - "ahccMinFsldPlr", - "pydxCaptT", - "pydxCaptF", - "pydxEirT", - "pydxEirUl", - "ahccCoolplant", - "ahccGpmDs", - "ahccNtuoDs", - "ahccNtuiDs", - "ahccDsTDbEn", - "ahccDsTWbEn", - "ahccDsTDbCnd", - "ahccVfR", - "ahccAuxOn", - "ahccAuxOff", - "ahccAuxFullOff", - "ahccAuxOnAtAll", - "ahccAuxOnMtr", - "ahccAuxOffMtr", - "ahccAuxFullOffMtr", - "ahccAuxOnAtAllMtr", - ]), - "AIRHANDLER Outside Air" => Set.new([ - "oaMnCtrl", - "oaVfDsMn", - "oaMnFrac", - "oaEcoType", - "oaLimT", - "oaLimE", - "oaOaLeak", - "oaRaLeak", - ]), - "AIRHANDLER Leaks and Losses" => Set.new([ - "ahSOLeak", - "ahROLeak", - "ahSOLoss", - "ahROLoss", - ]), - "AIRHANDLER Crankcase Heater" => Set.new([ - "cchCM", - "cchPMx", - "cchPMn", - "cchTMx", - "cchTMn", - "cchDT", - "cchTOn", - "cchTOff", - "cchMtr", - "endAirHandler", - ]), - "COOLPLANT" => Set.new([ - "coolplantName", - "cpSched", - "cpTsSp", - "cpPipeLossF", - "cpTowerplant", - "cpStage1", - "cpStage2 through cpStage7 same", - "endCoolplant", - ]) - } - expected.keys.each do |k| - assert(actual.include?(k), "actual doesn't include #{k}") - assert_equal(expected[k], actual[k]) - end - actual.keys.each do |k| - assert(expected.include?(k), "expected doesn't include #{k}") - assert_equal(expected[k], actual[k]) - end - assert_equal(expected, actual) - end - def test_ParseCulList - content = File.read(@cullist_path) - expected = { - "Top" => Set.new(["doAutoSize", "doMainSim"]), - "material" => Set.new(["matThk", "matCond"]) - } - actual = ParseCulList[content] - assert_equal(expected, actual) - end - def test_ReadCulList - expected = { - "Top" => Set.new(["doAutoSize", "doMainSim"]), - "material" => Set.new(["matThk", "matCond"]) - } - actual = ReadCulList[@cullist_path] - assert_equal(expected, actual) - end - def test_SetDifferences - # - s1 = Set.new(["A", "B", "C"]) - s2 = Set.new(["B", "C", "D"]) - actual = SetDifferences[s1, s2, false] - expected = { - :in_1st_not_2nd => Set.new(["A"]), - :in_2nd_not_1st => Set.new(["D"]) - } - assert_equal(expected, actual) - # - s1 = Set.new(["1","2","3"]) - s2 = Set.new(["1","2","3"]) - actual = SetDifferences[s1, s2, false] - expected = nil - assert_nil(actual) - # - s1 = Set.new(["A","B","C"]) - s2 = Set.new(["a","b","c"]) - actual = SetDifferences[s1, s2, false] - expected = nil - assert_nil(actual) - # - s1 = Set.new(["A","B","C"]) - s2 = Set.new(["a","b","c"]) - actual = SetDifferences[s1, s2, true] - expected = { - :in_1st_not_2nd => Set.new(["A","B","C"]), - :in_2nd_not_1st => Set.new(["a","b","c"]) - } - assert_equal(expected, actual) - end - def test_AdjustMap - ris = { - "A" => Set.new(["a"]), - "A B" => Set.new(["b"]), - "A B C" => Set.new(["c"]) - } - expected = { - "A" => Set.new(["a", "b", "c"]) - } - actual = AdjustMap[ris] - assert_equal(expected, actual) - end - def test_DiffsToString - m = { - :a=>Set.new(["a"]), - :b=>Set.new(["b"]) - } - expected = "Stuff:\nin a but not in b:\n- a\nin b but not in a:\n- b\n" - actual = DiffsToString[m,"Stuff",:a,:b,"a","b"] - assert_equal(expected, actual) - end - def test_RecordInputSetDifferencesToString - diffs = { - :records_in_1st_not_2nd => nil, - :records_in_2nd_not_1st => nil, - :field_set_differences => { - "coolsys" => { - :in_2nd_not_1st => Set.new(["csName"]), - :in_1st_not_2nd => nil - } - } - } - assert("".class == RecordInputSetDifferencesToString[diffs].class) - end - def test_RecordInputSetDifferences - ris1 = { - "Top" => Set.new(["a", "b", "c"]), - "Bottom" => Set.new(["a", "b", "c"]) - } - ris2 = { - "Top" => Set.new(["a", "B", "c"]), - "Bottom" => Set.new(["a", "b", "C"]) - } - actual = RecordInputSetDifferences[ris1, ris2, false] - expected = nil - assert_nil(actual) - # - actual = RecordInputSetDifferences[ris1, ris2, true] - expected = { - records_in_1st_not_2nd: nil, - records_in_2nd_not_1st: nil, - field_set_differences: { - "Top" => { - in_1st_not_2nd: Set.new(["b"]), - in_2nd_not_1st: Set.new(["B"]) - }, - "Bottom" => { - in_1st_not_2nd: Set.new(["c"]), - in_2nd_not_1st: Set.new(["C"]) - } - } - } - assert_equal(expected, actual) - # - ris1 = { - "Top" => Set.new(["a", "b", "c"]), - "Bottom" => Set.new(["a", "b", "c"]) - } - ris2 = { - "Top" => Set.new(["a", "b", "c"]), - "Side" => Set.new(["a", "b", "c"]) - } - actual = RecordInputSetDifferences[ris1, ris2, true] - expected = { - records_in_1st_not_2nd: Set.new(["Bottom"]), - records_in_2nd_not_1st: Set.new(["Side"]) - } - assert_equal(expected, actual) - # - ris1 = { - "Top" => Set.new(["b", "c"]), - "Bottom" => Set.new(["a", "b", "c"]) - } - ris2 = { - "Top" => Set.new(["a", "b", "c"]), - "Bottom" => Set.new(["b", "c", "d"]) - } - actual = RecordInputSetDifferences[ris1, ris2, true] - expected = { - records_in_1st_not_2nd: nil, - records_in_2nd_not_1st: nil, - field_set_differences: { - "Top" => {in_1st_not_2nd: Set.new, in_2nd_not_1st: Set.new(["a"])}, - "Bottom" => { - in_1st_not_2nd: Set.new(["a"]), in_2nd_not_1st: Set.new(["d"]) - } - } - } - assert_equal(expected, actual) - ris1 = ReadCulList[@cullist_full_path] - ris2 = ReadAllRecordDocuments[@all_records_path] - actual = RecordInputSetDifferences[ris1, ris2, false] - assert(!actual.nil?) - ris3 = AdjustMap[ris2] - actual = RecordInputSetDifferences[ris1, ris3, false] - assert(!actual.nil?) - end - def test_DropNameFields - input = {"A"=>Set.new(["a","b","cName","c","d"])} - actual = DropNameFields[input] - expected = {"A"=>Set.new(["a","b","c","d"])} - assert_equal(expected, actual) - end - def test_DropNameFieldsIfNotInRef - # Case insensitive - input = {"A"=>Set.new(["a","b","cName","c","d","dName"])} - ref = {"A"=>Set.new(["a","b","c","d","dname"])} - actual = DropNameFieldsIfNotInRef[input, ref] - expected = {"A"=>Set.new(["a","b","c","d","dName"])} - assert_equal(expected, actual) - # Case sensitive - input = {"A"=>Set.new(["a","b","cName","c","d","dName"])} - ref = {"A"=>Set.new(["a","b","c","cName","d","dname"])} - actual = DropNameFieldsIfNotInRef[input, ref, true] - expected = {"A"=>Set.new(["a","b","c","cName","d"])} - assert_equal(expected, actual) - end - def test_casing_with_RecordInputSetDifferences - ris1 = { - "A" => Set.new(["aa", "ab", "ac"]), - "B" => Set.new(["ba", "bb", "bc"]) - } - ris3 = { - "a" => Set.new(["AA", "AB", "AC"]), - "b" => Set.new(["BA", "BB", "BC"]) - } - case_sensitive = false - records_to_ignore = ["A"] - data_fields_to_ignore = {"a"=>Set.new(["ac"])} - diffs = RecordInputSetDifferences[ - ris1, ris3, case_sensitive, - records_to_ignore, - data_fields_to_ignore - ] - assert(diffs.nil?) - diffs = RecordInputSetDifferences[ - ris3, ris1, false, - records_to_ignore, - data_fields_to_ignore - ] - assert(diffs.nil?) - records_to_ignore = [] - data_fields_to_ignore = {} - diffs = RecordInputSetDifferences[ - ris1, ris3, case_sensitive, - records_to_ignore, - data_fields_to_ignore - ] - assert(diffs.nil?) - ris1 = { - "A" => Set.new(["aa", "ab", "ac", "ad"]), - "B" => Set.new(["ba", "bb", "bc"]) - } - ris3 = { - "a" => Set.new(["AA", "AB", "AC"]), - "b" => Set.new(["BA", "BC"]) - } - records_to_ignore = ["B"] - data_fields_to_ignore = {"a"=>Set.new(["ad"])} - diffs = RecordInputSetDifferences[ - ris1, ris3, case_sensitive, - records_to_ignore, - data_fields_to_ignore - ] - assert(diffs.nil?) - ris1 = { - "A" => Set.new(["aa", "ab", "ac"]), - "B" => Set.new(["ba", "bc"]) - } - ris3 = { - "a" => Set.new(["AA", "AB", "AC", "AD"]), - "b" => Set.new(["BA", "BB", "BC"]) - } - records_to_ignore = ["B"] - data_fields_to_ignore = {"a"=>Set.new(["ad"])} - diffs = RecordInputSetDifferences[ - ris1, ris3, case_sensitive, - records_to_ignore, - data_fields_to_ignore - ] - assert(diffs.nil?) - ris1 = { - "A" => Set.new(["aa", "ab", "ac", "ae"]), - "B" => Set.new(["ba", "bc"]) - } - ris3 = { - "a" => Set.new(["AA", "AB", "AC", "AD"]), - "b" => Set.new(["BA", "BB", "BC"]) - } - records_to_ignore = ["B"] - data_fields_to_ignore = {"a"=>Set.new(["ad"])} - expected = { - records_in_1st_not_2nd: nil, - records_in_2nd_not_1st: nil, - field_set_differences: { - "a" => {in_1st_not_2nd: Set.new(["ae"]), in_2nd_not_1st: Set.new()}, - } - } - actual = RecordInputSetDifferences[ - ris1, ris3, case_sensitive, - records_to_ignore, - data_fields_to_ignore - ] - assert_equal(expected, actual) - end -end diff --git a/doc/test/rakefile_test.rb b/doc/test/rakefile_test.rb deleted file mode 100644 index 190fdeb70..000000000 --- a/doc/test/rakefile_test.rb +++ /dev/null @@ -1,16 +0,0 @@ -require_relative 'test_helper' -require_relative '../rakefile.rb' - -class RakefileTest < TC - def test_UpdateOutlineCount - assert_equal(UpdateOutlineCount[[0], 1], [1]) - assert_equal(UpdateOutlineCount[[1,1,3], 2], [1,2]) - assert_equal(UpdateOutlineCount[[1,1,3], 3], [1,1,4]) - assert_equal(UpdateOutlineCount[[1,1,3], 1], [2]) - assert_equal(UpdateOutlineCount[[1,1,3], 4], [1,1,3,1]) - assert_equal(UpdateOutlineCount[[1,1,3], 5], [1,1,3,1,1]) - end - def test_OutlineCountToStr - assert_equal(OutlineCountToStr[[1,1,3]], "1.1.3") - end -end diff --git a/doc/test/resources/airhandler.md b/doc/test/resources/airhandler.md deleted file mode 100644 index 933fa1dd6..000000000 --- a/doc/test/resources/airhandler.md +++ /dev/null @@ -1,1547 +0,0 @@ -# AIRHANDLER - -AIRHANDLER defines a central air handling system, containing a fan or fans, optional heating and cooling coils, and optional outside air intake and exhaust. AIRHANDLERs are subobjects of TOP, and deliver air to one or more ZONEs through TERMINAL(s). AIRHANDLER objects can be used to model fan ventilation and forced air heating and cooling. Dual duct systems are modeled with two AIRHANDLERs (one for hot air and one for cool air) and two TERMINALs in each zone. Figure 2 shows…. \[need a sentence that explains the figure.\] - -![Insert Figure Title](media/image1.png) - -AIRHANDLER is designed primarily to model a central system that supplies hot or cold air at a centrally determined temperature (the "Supply Temperature Setpoint") to Variable Air Volume (VAV) terminals in the zones. Some additional variations are also supported: - -1. The AIRHANDLER can model a constant volume, fan-always-on system, where the supply temperature varies to meet the load of a single zone (that is, the thermostat controls the heating and/or cooling coil, but not the fan). This is done by setting the terminal minimum flow, *tuVfMn,* equal to the maximum flow, *tuVfMxH* for heating and/or *tuVfMxC* for cooling, and using a supply temperature control method that adjusts the temperarute to the load (*ahTsSp* = WZ, CZ, or ZN2, described below). - -2. The AIRHANDLER can model constant volume, fan cycling systems where the fan cycles with a single zone thermostat, running at full flow enough of the time to meet the load and shutting completely off the rest of the time, rather than running at variable flow to adjust to the demand from the zones. - - This variation is invoked by specifying *ahFanCycles*= YES (usually with *ahTsSp*=ZN, described below). The user should be aware that this is done by treating fractional flow as equivalent to fractional on-time in most of the program, adjusting for the higher flow and less than 100% duty cycle only in a few parts of the model known to be non-linear, such as computation of cooling coil performance, fan heat, and duct leakage. For example, the outside air inputs, designed for VAV modeling, won't work in the expected manner unless you keep this modeling method in mind. - -3. The AIRHANDLER can supply hot air, cold air, or shut off according to the requirements of a single zone. This variation is invoked by giving *ahTsSp* = ZN or ZN2, both described further below. - -**ahName** - -Name of air handler: give after the word AIRHANDLER. Required for reference in TERMINALs. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* Yes - -**ahSched=*choice*** - -Air handler schedule; OFF or ON, hourly schedulable by using CSE expression. - - ------ --------------------------------------- - OFF supply fan off; air handler not - operating. Old date? Note: (future) - Taylor setback/setup control in effect, - when implemented. - - ON supply fan runs, at varying volume - according to TERMINAL demand (except if - *ahFanCycles* = YES, fan cycles on and - off at full volume). - ------ --------------------------------------- - -The following might be used to run an air handler between 8 AM and 5 PM: - - ahSched = select( (\$hour > 8 && \$hour <= 5), ON, - default, OFF ); - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ON/OFF ON No hourly - -## AIRHANDLER Supply Air Temperature Controller - -**ahTsSp=*float or choice*** - -Supply temperature setpoint numeric value OR\* choice of control method (WZ, CZ, RA, ZN, or ZN2): - - ---------- --------------------------------------- - *float* A numeric value specifies the supply - temperature setpoint. An expression can - be used to make dependent on time, - weather, etc. - - WZ Warmest Zone: for cooling, sets the - supply temperature setpoint each - sub??hour so that the control zone (see - *ahWzCzns*) requiring the coolest - supply temperature can meet its load - with its VAV damper 90% of the way from - its minimum opening to its maximum, - that is, at a flow of: *tuVfMn* + - .9(*tuVfMxC* - \* tuVfMn\*). - - CZ Coolest Zone: analogous to WZ, but for - heating - - RA Supply temperature setpoint value is - controlled by return air temperature - (this cannot be done with a CSE - expression without lagging a subhour). - See *ahTsRaMn* and *ahTsRaMx*. - - ZN Causes air handler to switch between - heating, OFF, and cooling as required - by the load of a single zone. When the - zone thermostat (modeled through the - *tuTC* and *tuTH* inputs) calls for - neither heating nor cooling, the air - handler shuts down, including stopping - its fan(s). Changes *ahFanCycles* - default to YES, to simulate a constant - volume, fan cycling system. - - Supply temperature setpoint value when - *ahFanCycles* = YES is taken from - *ahTsMn* for cooling, from *ahTsMx* for - heating (actual temperatures expected - to be limited by coil capacity since - fan is running at full flow). When - *ahFanCycles* = NO, the setpoint is - determined to allow meeting the load, - as for WZ and CZ. - - When the zone is calling for neither - heat nor cold, the air handler shuts - down, including stopping its fan(s), - regardless of the *ahFanCycles* value. - - ZN2 Causes air handler to switch between - heating, cooling, and FAN ONLY - operation as required by the load of a - single zone. To model a constant volume - system where the fan runs continuously, - use ZN2 and set the terminal minimum - flow (*tuVfMn*) equal to the maximum - (*tuVfMxC* and/or *tuVfMxH*). - - When *ahTsSp* is ZN2, the supply - temperature setpoint is determined to - allow meeting the load, as for WZ and - CZ, described above. - ---------- --------------------------------------- - -Only when *ahTsSp* is ZN or ZN2 does AIRHANDLER switches between heating and cooling supply temperatures according to demand. In other cases, there is but a single setpoint value or control method (RA, CZ, or WZ); if you want the control method or numeric value to change according to time of day or year, outside temperature, etc., your CSE input must contain an appropriate conditional expression for *ahTsSp*. - -Unless *ahTsSp* is ZN or ZN2, the AIRHANDLER does not know whether it is heating or cooling, and will use either the heating coil or cooling coil, if available, as necessary, to keep the supply air at the single setpoint temperature. The coil schedule members, described below, allow you to disable present coils when you don't want them to operate, as to prevent cooling supply air that is already warm enough when heating the zones. For example, in an AIRHANDLER with both heating and cooling coils, if you are using a conditional expression based on outdoor temperature to change *ahTsSp* between heating and cooling values, you may use expressions with similar conditions for *ahhcSched* and *ahccSched* to disable the cooling coil when heating and vice versa. (Expressions would also be used in the TERMINALS to activate their heating or cooling setpoints according to the same conditions.) - -Giving *ahTsSp* is disallowed for an air handler with no economizer, no heat coil and no cooling coil. Such an AIRHANDLER object is valid as a ventilator; its supply temperature is not controlled. but rather determined by the outside temperature and/or the return air temperature. - - --------------------------------------------------------------------------- - **Unit** **Legal** **Default** **Required** **Variability** - **Range** - -------- --------------- ------------- ------------------ ----------------- - ^o^F *number*, RA\*, 0 YES, if coil(s) hourly - WZ, CZ, or economizer - ZN\*\*, present - ZN2\*\* - --------------------------------------------------------------------------- - -\* ahTsRaMn, ahTsRaMx, ahTsMn, and ahTsMx are *required* input for this choice. - -\*\* only a single ZONE may be used with these choices. - - ----------------------------------------------------------------------- - **To Model** **Use** **Comments** - ----------------------- ----------------------- ----------------------- - VAV heating *OR* *ahTsSp* = *numeric CSE models this most - cooling system expression,* WZ, CZ, or directly - RA - - VAV system that both Use a conditional Also use expressions to - heats and cools (single expression to change disable the unwanted - duct) *ahTsSp* between coil and change each - heating and cooling zone's setpoints - values on the basis of according to same - outdoor temperature, condition as *ahTsSp*. - date, or some other For example, when - condition. heating, use - *ahccSched* = OFF and - *tuTC *= 999; and when - cooling, use - *ahhcSched* = OFF and - *tuTH* = -99. - - Dual duct heating / Use two AIRHANDLERs - cooling system - - Single zone VAV system *ahTsSp* = ZN2 Supply fan runs, at - that heats or cools per flow *tuVfMn*, even - zone thermostat when neither heating - nor cooling. Supply - temp setpoint - determined as for CZ or - WZ. - - Single zone constant *ahTsSp* = *ZN2*; Supply fan circulates - volume system that *tuVfMn* = *tuVfMxH* = air even if neither - heats or cools per zone *tuVfMxC* heating nor cooling. - thermostat, e.g. PSZ. Supply temp setpoint - determined as for CZ or - WZ. All *tuVf*'s same - forces constant volume. - - Single zone constant *ahTsSp*= ZN; *ahTsMx* *AhFanCycles* defaults - volume, fan cycling = heat supply temp to YES. Supply fan off - system that heats or setpoint; *ahTsMn* = when not heating or - cools per zone cool supply temp cooling. Flow when fan - thermostat,e.g. PTAC, setpoint; *tuVfMn*= 0; on is *tuVfMxH* or - RESYS, or furnace. tuVfMxH = tuVfMxC *tuVfMxC* as applicable - normally; *sfanVfDs* (or *sfanVfDs \* - >= max( *tuVfMxH, sfanVfMxF* if smaller). - tuVfMxC)* to minimize - confusion about flow - modeled. - ----------------------------------------------------------------------- - - : Using AIRHANDLER to Model Various Systems - - -**ahFanCycles=*choice*** - -Determines whether the fan cycles with the zone thermostat. - - ------ --------------------------------------- - YES Supply fan runs only for fraction of - the subhour that the zone requests - heating or cooling. When running, - supply fan runs at full flow (i.e. - constant volume), as determined by the - more limiting of the air handler and - terminal specifications. Use with a - single zone only. Not allowed with - *ahTsSp* = ZN2. - - NO Normal CSE behavior for simulating VAV - systems with continuously running (or - scheduled), variable flow supply fans. - (For constant volume, fan always on - modeling, use NO, and make *tuVfMn* - equal to *tuVfMxH/C*.) - ------ --------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------------------ -------------- ----------------- - YES,NO YES when *ahTsSp*=ZN, NO otherwise No hourly - -**ahTsMn=*float*** - -Minimum supply temperature. Also used as cooling supply temperature setpoint value under *ahTsSp* = ZN. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------------------------------------- ------------- ---------------------- ----------------- - ^o^F *no limit*; typically: 40 $\le$ *x* $\le$ 140^o^ 0^o^F Only for *ahTsSp*=RA hourly - - - - ------------------------------------------------------------------ - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ----------- ----------- ---------------- --------------- - ^o^F *no limit*; 999^o^ F Only for hourly - typically: *ahTsSp*=RA; - 40 $\le$ recommend giving - *x* $\le$ for *ahTsSp*=ZN - 140^o^ - - ------------------------------------------------------------------ - -**ahTsMx=*float*** - -Maximum supply temperature. Also used as heating supply temperature setpoint value under *ahTsSp* = ZN. - - -**ahWzCzns=*zone names* or *ALL* or *ALL\_BUT zone names*** - -**ahCzCzns=*zone names* or *ALL* or *ALL\_BUT zone names*** - -Specify zones monitored to determine supply temperature setpoint value (control zones), under *ahTsSp*=WZ and CZ respectively. - - --------------- --------------------------------------- - *zone names* A list of zone names, with commas - between them. Up to 15 names may be - given. - - ALL\_BUT May be followed by a a comma and list - of up to 14 zone names; all zones on - air handler other than these are the - control zones. - - ALL Indicates that all zones with terminals - connected to the air handler are - control zones. - --------------- --------------------------------------- - -A comma must be entered between zone names and after the word ALL\_BUT. - - - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------------------------------ ------------- -------------- ----------------- - *name(s) of ZONEs* ALL ALL\_BUT *zone Name(s)* ALL NO hourly - -**ahCtu=*terminal name*** - -Terminal monitored to determine whether to heat or cool under ZN and ZN2 supply temperature setpoint control. Development aid feature; believe there is no need to give this since ahTsSp = ZN or ZN2 should only be used with one zone. - - ----------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- ------------ ---------------- --------------- - name of a AIRHANDLER's If *ahTsSp* = ZN hourly - TERMINAL TERMINAL, if with more than 1 - only one TERMINAL - - ----------------------------------------------------------------- - - - -*AhTsRaMn* and *ahTsRaMx* are used when *ahTsSp* is RA. - -**ahTsRaMx=*float*** - -Return air temperature at which the supply temperature setpoint is at the *maximum* supply temperature, *ahTsMx*. - -**ahTsRaMx=*float*** - -Return air temperature at which the supply temperature setpoint is at the *minimum* supply temperature, *ahTsMn*. - -When the return air temperature is between *ahTsRaMn*and *ahTsRaMx*, the supply temperature setpoint has a proportional value between *ahTsMx* and *ahTsMn*. - -If return air moves outside the range *ahTsRaMn* to *ahTsRaMx*, the supply temperature setpoint does not change further. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------------------------------------- ------------- ---------------------- ----------------- - ^o^F *no limit*; typically: 40 $\le$ *x* $\le$ 140^o^ *none* Only for *ahTsSp*=RA hourly - -## AIRHANDLER Supply fan - -All AIRHANDLERs have supply fans. - -**sfanType=*choice*** - -Supply fan type/position. A BLOWTHRU fan is located in the air path before the coils; a DRAWTHRU fan is after the coils. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------- ------------- -------------- ----------------- - DRAWTHRU, BLOWTHRU DRAWTHRU No constant - -**sfanVfDs=*float*** - -Design or rated (volumetric) air flow at rated pressure. Many fans will actually blow a larger volume of air at reduced pressure: see sfanVfMxF (next). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - cfm *x* $\ge$ 0 *none* Yes constant - -**sfanVfMxF=*float*** - -Overrun factor: maximum factor by which fan will exceed rated flow (at reduced pressure, not explicitly modeled). CSE delivers flows demanded by terminals until total flow at supply fan reaches sfanVfDs \* sfanVsMxF, then reduces maximum flows to terminals, keeping them in proportion to terminal design flows, to keep total flow at that value. - -We recommend giving 1.0 to eliminate overrun in constant volume modeling. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $\ge$ 1.0 1.3 No constant - -**sfanPress*=float*** - -Design or rated pressure. The work done by the fan is computed as the product of this pressure and the current flow, except that the flow is limited to sfanVfDs. That is, in overrun (see *sfanVfMxF*) it is assumed that large VAV terminal damper openings allow the pressure to drop in proportion to the flow over rated. This work is added to the air as heat at the fan, and is termed "fan heat". Setting sfanPress to zero will eliminate simulated fan heat for theoretical simulation of a coil only. - - **Units** **Legal Range** **Default** **Required** **Variability** - -------------- ----------------- ------------- -------------- ----------------- - inches H~2~O *x* $>$ 0 3 No constant - -Prior text: At most, one of the next two items may be given: in combination with sfanVfDs and sfanPress, either is sufficient to compute the other. SfanCurvePy is then used to compute the mechanical power at the fan shaft at partial loads; sfanMotEff allows determining the electrical input from the shaft power. - -New possible text (after addition of sfanElecPwr): Only one of sfanElecPwr, sfanEff, and sfanShaftBhp may be given: together with sfanVfDs and xfanPress, any one is sufficient for CSE to detemine the others and to compute the fan heat contribution to the air stream. - -**sfanElecPwr=*float*** - -Fan input power per unit air flow (at design flow and pressure). - - ------------------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- -------------------- ---------------- --------------- - W/cfm *x* $>$ 0 derived from sfanEff If sfanEff and constant - and sfanShaftBhp sfanShaftBhp not - present - ------------------------------------------------------------------------- - -**sfanEff=*float*** - -Fan efficiency at design flow and pressure, as a fraction. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------------------------------------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 derived from *sfanShaftBhp* if given, else 0.65 No constant - -**sfanShaftBhp=*float*** - -Fan shaft brake horsepower at design flow and pressure. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------- -------------- ----------------- - bhp *x* $>$ 0 derived from *sfanEff*. No constant - -**sfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** - -$k_0$ through $k_3$ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow $x_0$. Up to five *floats* may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: - -$$z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3$$ - -where: - -- $x$ is the relative fan air flow (as fraction of *sfanVfDs*; 0 $\le$ x $\le$ 1); -- $x_0$ is the minimum relative air flow (default 0); -- $(x - x_0)|$ is the "positive difference", i.e. $(x - x_0)$ if $x > x_0$; else 0; -- $z$ is the relative energy consumption. - -If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------------------- -------------- ----------------- - *0, 1, 0, 0, 0 (linear)* No constant - -**sfanMotEff=*float*** - -Motor/drive efficiency. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 0.9 No constant - -**sfanMotPos=*float*** - -Motor/drive position: determines disposition of fan motor heat (input energy in excess of work done by fan; the work done by the fan is the "fan heat", always added to air flow). - - ------------ --------------------------------------- - IN\_FLOW add fan motor heat to supply air at the - fan position. - - IN\_RETURN add fan motor heat to the return air - flow. - - EXTERNAL discard fan motor heat - ------------ --------------------------------------- - -**sfanMtr=*mtrName*** - -Name of meter, if any, to record energy used by supply fan. End use category used is "Fan". - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------- -------------- ----------------- - *name of a METER* *not recorded* No constant - -## AIRHANDLER Return/Relief fan - -A return/relief fan is optional. Its presence is established by setting *rfanType* to a value other than NONE. For additional information on the return/relief fan members, refer to the description of the corresponding supply fan member above. - -**rfanType=*choice*** - -relief fan type/position. - - --------- --------------------------------------- - RETURN fan is at air handler; all return air - passes through it. - - RELIEF fan is in exhaust path. Air being - exhausted to the outdoors passes - through fan; return air being - recirculated does not pass through it. - - NONE no return/relief fan in this - AIRHANDLER. - --------- --------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------- ------------- --------------------- ----------------- - NONE, RETURN, RELIEF NONE Yes, if fan present constant - -**rfanVfDs=*float*** - -design or rated (volumetric) air flow. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ----------------------- -------------- ----------------- - cfm *x* $>$ 0 *sfanVfDs - oaVfDsMn* No constant - -**rfanVfMxF=*float*** - -factor by which fan will exceed design flow (at reduced pressure). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $\ge$ 1.0 1.3 No constant - -**rfanPress=*float*** - -design or rated pressure. - - **Units** **Legal Range** **Default** **Required** **Variability** - -------------- ----------------- ------------- -------------- ----------------- - inches H~2~O *x* $>$ 0 0.75 No constant - -*At most, one of the next three?? items may be defined: ??* rework re rfanElecPwr - -**rfanElecPwr=*float*** - -Fan input power per unit air flow (at design flow and pressure). - - ------------------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- -------------------- ---------------- --------------- - W/cfm *x* $>$ 0 derived from rfanEff If rfanEff and constant - and rfanShaftBhp rfanShaftBhp not - present - ------------------------------------------------------------------------- - -**rfanEff=*float*** - -Fan efficiency at design flow and pressure. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------------------------------------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 derived from *rfanShaftBhp* if given, else 0.65 No constant - -**rfanShaftBhp=*float*** - -Fan shaft brake horsepower at design flow and pressure. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------- -------------- ----------------- - bhp *x* $>$ 0 derived from *rfanEff*. No constant - -**rfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** - -$k_0$ through $k_3$ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow $x_0$. Up to five *floats* may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: - -$$z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3$$ - -where: - -- $x$ is the relative fan air flow (as fraction of *rfanVfDs*; 0 $\le$ x $\le$ 1); -- $x_0$ is the minimum relative air flow (default 0); -- $(x - x_0)|$ is the "positive difference", i.e. $(x - x_0)$ if $x > x_0$; else 0; -- $z$ is the relative energy consumption. - -If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------------------- -------------- ----------------- - *0, 1, 0, 0, 0 (linear)* No constant - -**rfanMotEff=*float*** - -Motor/drive efficiency. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 0.9 No constant - -**rfanMotPos=*choice*** - -Motor/drive position. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------- ------------- -------------- ----------------- - IN\_FLOW, EXTERNAL IN\_FLOW No constant - -**rfanMtr=*mtrName*** - -Name of meter, if any, to record power consumption of this return fan. May be same or different from meter used for other fans and coils in this and other air handlers. "Fan" end use category is used. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------- -------------- ----------------- - *name of a METER* *not recorded* No constant - -## AIRHANDLER Heating coil/Modeling Furnaces - -Heating coils are optional devices that warm the air flowing through the AIRHANDLER, including electric resistance heaters, hot water coils supplied by a HEATPLANT, the heating function of an air source heat pump, and furnaces. - -Furnaces are modeled as AIRHANDLERs with heat "coils" that model the heating portion of a gas or oil forced hot air furnace. Notes on modeling a furnace with a CSE AIRHANDLER: - -- Give *ahhcType* = GAS or OIL. -- Give *ahhcAux's* to model the power consumption of pilot, draft fan, etc. -- Use *ahTsSp* = ZN, which implies *ahFanCyles* = YES, to model constant volume, fan cycling (as opposed to VAV) operation. -- Use *ahTsMx* = an appropriate value around 140 or 180 to limit the supply temperature, simulating the furnace's high temperature cutout (the default *ahTsMx*of 999 is too high!). -- Use a single TERMINAL on the AIRHANDLER. -- To eliminate confusion about the fan cfm (which, precisely, under *ahFanCyles* = YES, is the smaller of the terminal maximum or the supply fan maximum including overrun), give the same value for TERMINAL *tuVfMxH* and AIRHANDLER *sfanVfDs*, and give *sfanVfMxF* = 1.0 to eliminate overrun. -- You will usually want to use *oaVfDsMn* = 0 (no outside air), and no economizer. - -The heating function of an air source heat pump is modeled with an AIRHANDLER with heat coil type AHP. There are several additional heat coil input variables (names beginning with *ahp-*) described later in the heat coil section. Also, a heat pump generally has a crankcase heater, which is specified with the crankcase heater inputs (*cch-*), described later in the AIRHANDLER Section 0. If the heat pump also performs cooling, its cooling function is modeled by specifying a suitable cooling coil in the same AIRHANDLER. Use *ahccType* = DX until a special cooling coil type for heat pumps is implemented. It is the user's responsibility to specify consistent heating and cooling coil inputs when the intent is to model a heat pump that both heats and cools, as CSE treats the heat coil and the cool coil as separate devices. - -The next four members apply to all heat coil types, except as noted. - -To specify that an AIRHANDLER has a heating coil and thus heating capability, give an *ahhcType* other than NONE. - -**ahhcType=*choice*** - -Coil type choice: - - ------------- --------------------------------------- - ELECTRIC electric resistance heat: 100% - efficient, can deliver its full rated - capacity at any temperature and flow. - - HW hot water coil, supplied by a HEATPLANT - object. - - GAS or OIL "coil" type that models heating portion - of a forced hot air furnace. Furnace - "coil" model uses inputs for full-load - efficiency and part-load power input; - model must be completed with - appropriate auxiliaries, *ahTsSp,* etc. - See notes above. - - GAS and OIL are the same here -- the - differences between gas- and oil-fired - furnaces is in the auxiliaries (pilot - vs. draft fan, etc.), which you specify - separately. - - AHP heating function of an air source heat - pump. - - NONE AIRHANDLER has no heat coil, thus no - heating capability. - ------------- --------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------------------- ------------- ------------------------- ----------------- - ELECTRIC, HW, GAS OIL, AHP, NONE NONE Yes, if coil is present constant - -**ahhcSched=*choice*** - -Heat coil schedule; choice of AVAIL or OFF, hourly variable. Use an appropriate ahhcSched expression if heat coil is to operate only at certain times of the day or year or only under certain weather conditions, etc. - - -------- --------------------------------------- - AVAIL heat coil available: will operate as - necessary to heat supply air to supply - temperature setpoint, up to the coil's - capacity. - - OFF coil will not operate, no matter how - cold supply air is. A HW coil should be - scheduled off whenever its HEATPLANT is - scheduled off (*hpSched*) to insure - against error messages. - -------- --------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - AVAIL, OFF AVAIL No hourly - -**ahhcCapTRat=*float*** - -Total heating (output) capacity. For an ELECTRIC, GAS, or OIL coil, this capacity is always available. For an HW heating coil, when the total heat being requested from the coil's HEATPLANT would overload the HEATPLANT, the capacity of all HW coils connected to the plant (in TERMINALs as well as AIRHANDLERs) is reduced proportionately until the requested total heat is within the HEATPLANT's capacity. Not used if *ahhcType* = AHP (see *ahpCap17* and *ahpCap47*). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------------------------------------- ----------------- - Btuh *x* $\ge$ 0 *none* Yes, if coil present, except coil type AHP hourly - -**ahhcMtr=*mtrName*** - -Name of meter to accumulate energy use by this heat coil. The input energy used by the coil is accumulated in the end use category "Htg"; for a heat pump, the en*ergy used by the supplemental resistance heaters (regular and defrost) is accumulated under the category "hp". Not allowed when*ahhcType\* is HW, as an HW coil's energy comes from its HEATPLANT, and the HEATPLANT's BOILERs accumulate input energy to meters. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------- -------------- ----------------- - *name of a METER* *not recorded* No constant - -The following input is used only when *ahhcType* is HW: - -**ahhcHeatplant=*Heatplant name*** - -Name of HEATPLANT supporting hot water coil. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- --------------------- ----------------- - *name of a HEATPLANT* *none* if *ahhcType* is HW constant - -The following inputs are used only for furnaces (*ahhcType* = GAS or OIL). - -One of the next two items, but not both, **must** be given for furnaces: - -**ahhcEirR=*float*** - -Rated energy input ratio (input energy/output energy) at full power. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- ------------------------------------------------------ ----------------- - *x* $\ge$ 1 *none* if *ahhcEirR* not given and *ahhcType* is GAS or OIL hourly - -**ahhcEffR=*float*** - -Rated efficiency (output energy/input energy; 1/ahhcEirR) at full power - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- ------------------------------------------------------ ----------------- - 0 $\le$ *x* $\le$ 1 *none* if *ahhcEirR* not given and *ahhcType* is GAS or OIL hourly - -**ahhcPyEi=$k_0$, $k_1$, $k_2$, $k_3$** - -Coefficients of cubic polynomial function of (subhour average) part-load-ratio (plrAv) to adjust the full-load furnace energy input for part load operation. Enter, separated by commas, in order, the constant part, the coefficient of plrAv, the coefficient of plrAv squared, and the coefficient of plrAv cubed. CSE will normalize the coefficients if necessary to make the polynomial value be 1.0 when the part load ratio is 1.0. - -The default, from DOE2, is equivalent to: - - ahhcPyEi = .01861, 1.094209, -.112819, 0.; - -which corresponds to the quadratic polynomial: - -$$\text{pyEi}(\text{plrAv}) = 0.01861 + 1.094209 \cdot \textbf{plrAv} - 0.112819 \cdot \textbf{plrAv}^2$$ - -Note that the value of this polynomial adjusts the energy input, not the energy input ratio, for part load operation. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------------------ -------------- ----------------- - 0.01861, 1.094209, -0.112819, 0.0. No constant - -**ahhcStackEffect=*float*** - -Fraction of unused furnace capacity that must be used to make up for additional infiltration caused by stack effect of a hot flue when the (indoor) furnace is NOT running, only in subhours when furnace runs PART of the subhour, per DOE2 model. - -This is an obscure feature that will probably never be used, included only due to indecisiveness on the part of most members of the committee designing this program. The first time reader should skip this section, or read it only as an example of deriving an expression to implement a desired relationship. - -The stack effect is typically a function of the square root of the difference between the outdoor temperature and the assumed stack temperature. - -For example, the following is a typical example for furnace stack effect: - - ahhcStackEffect = @Top.tDbO >= 68. ? 0. - : (68. - @Top.tDbO) - * sqrt(200.-@Top.tDbO) - / (10*68*sqrt(200)); - -The code "`@Top.tDbO >= 68 ? 0. : ...`" insures that the value will be 0, not negative, when it is warmer than 68 out (if the furnace were to run when the value was negative, a run-time error would terminate the run). - -The factor "`(68. - @Top.tDbO)`" reflects the fact that the energy requirement to heat the infiltrating air is proportional to how much colder it is than the indoor temperature. Note that its permitted to use a constant for the indoor temperature because if it is below setpoint, the furnace will be running all the time, and there will be no unused capacity and the value of ahhcStackEffect will be moot. - -The factor "`sqrt(200.-@Top.tDbO)`" represents the volume of infiltrated air that is typically proportional to the square root of the driving temperature difference, where 200 is used for the estimated effective flue temperature. - -The divisor "`/ (10*68*sqrt(200))`" is to make the value 0.1 when tDbO is 0, that is, to make the stack effect loss use 10% of unused load when it is 0 degrees out. The actual modeling engineer must know enough about his building to be able to estimate the additional infiltration load at some temperature. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 0 No hourly - -The following heat coil input members, beginning with *ahp-*, are used when modeling the heating function of an air source heat pump with the air handler heat coil, that is, when *ahhcType*= AHP is given. Also, see the "AIRHANDLER Crankcase Heater" section with regard to specifying the heat pump's crankcase heater. - -The next six inputs give the heat pump's steady state heating output capacity. - -**ahpCap17=*float*** - -**ahpCap47=*float*** - -ARI steady state (continuous operation) rated capacities at 70 degrees F indoor (return) air temp, and 17 and 47 degrees F outdoor temp, respectively. These values reflect no cycling, frost, or defrost degradation. To help you find input errors, the program issues an error message if ahpCap17 >= ahpCap47. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- ------------------- ----------------- - Btuh *x* $>$ 0 Yes, for AHP coil constant - -**ahpCap35=*float*** - -ARI steady state (continuous operation) rated capacity at 35 F outdoor temp, reflecting frost buildup and defrost degradation but no cycling. Unlikely to be available for input; if not given, will be defaulted to *ahpFd35Df* (next description) times a value determined by linear interpolation between the given *ahpCap17* and *ahpCap47* values. If *ahpCap35* is given, CSE will issue an error message if it is greater than value determined by linear interpolation between *ahpCap17* and *ahpCap47*. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ---------------- -------------- ----------------- - Btuh *x* $>$ 0 from ahpFd35Df No constant - -**ahpFd35Df=*float*** - -Default frost/defrost degradation factor at 35 F: reduction of output at unchanged input, due to defrosting and due to frost on outdoor coil. Used in determining default value for *ahpCap35* (preceding description); not used if *ahpCap35* is given. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 .85 No constant - -**ahpCapIa=*float*** - -Capacity correction factor for indoor (return) air temperature, expressed as a fraction reduction in capacity per degree above 70F. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 .004 No constant - -**ahpSupRh=*float*** - -Input (and output) power of supplemental resistance reheat coil used when heat pump alone cannot meet the load. This power input is in kW, not Btuh as for most CSE power inputs. Energy consumed by this heater, as well as the defrost supplemental resistance heater, is accumulated in category "hp" of ahhcMeter (whereas energy consumption of the heat pump compressor is accumulated under category "Htg"). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - kW *x* $>$ 0 10 kW No constant - -The next seven inputs specify frost buildup and defrosting and their effect on capacity. - -**ahpTFrMn=*float*** - -**ahpTFrMx=*float*** - -**ahpTFrPk=*float*** - -Lowest, highest, and peak temperatures for frost buildup and defrost effects. Capacity reduction due to frost and defrosting consists of a component due to frost buildup on the outdoor coil, plus a component due to lost heating during the time the heat pump is doing reverse cycle defrosting (heating the outdoor coil to melt off the frost, which cools the indoor coil). The effects of Frost Buildup and of time spent defrosting are computed for different temperature ranges as follows: - -- Above *ahpTFrMx*: no frost buildup, no defrosting. - -- At *ahpTFrMx* OR *ahpTFrMn*: defrosting time per *ahpDfrFMn* (next description); no frost buildup effect. - -- At *ahpTFrPk*: defrosting time per *ahpDfrFMx*, plus additional output reduction due to effect of frost buildup, computed by linear extrapolation from *ahpCap35* or its default. - -- Between *ahpTFrPk* and *ahpTFrMn* or *ahpTFrMx*: defrost time and defrost buildup degradation linearly interpolated between values at *ahpTFrPk* and values at *ahpTFrMn* or *ahpTFrMx*. - -- Below *ahpTFrMn*: no frost buildup effect; time defrosting remains at *ahpDfrFMn*. - -In other words, the curve of capacity loss due to frost buildup follows straight lines from its high point at *ahpTFrPk* to zero at *ahpTFrMn* and *ahpTFrMx*, and remains zero outside the range *ahpTFrMn* to *ahpTFrMx*. The height of the high point is determined to match the *ahpCap35* input value or its default. The curve of time spent defrosting is described in other words in the description of *ahpDfrFMn* and *ahpDfrFMx*, next. - -An error will occur unless *ahpTFrMn* < *ahpTFrPk* < *ahpTFrMx* and *ahpTFrMn* < 35 < *ahpTFrMx*. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------------------------------ -------------- ----------------- - ^o^F *x* > 0 *ahpTFrMn*: 17, *ahpTFrMx*: 47, *ahpTFrPk*: 42 No constant - -**ahpDfrFMn=*float*** - -**ahpDfrFMx=*float*** - -Minimum and maximum fraction of time spent in reverse cycle defrost cooling. - -The fraction of the time spent defrosting depends on the outdoor temperature, as follows: at or below *ahpTFrMn*, and at (but not above) *ahpTFrMx*, *ahpDfrFMn* is used. *ahpDfrFMx* is used at *ahpTFrMx*. Linear interpolation is used between *ahpTFrMn* or *ahpTFrMx* and *ahpTFrMx*. No time is spent defrosting above *ahpTFrMx*. - -In other words, the curve of time spent defrosting versus outdoor temperature has the value *ahpDfrFMn* up to *ahpTFrMn*, then rises in a straight line to *ahpDfrFMx* at *ahpTFrMx*, then falls in a straight line back to *ahpDfrFMn* at *ahpTFrMx*, then drops directly to zero for all higher temperatures. - -During the fraction of the time spent defrosting, the heat pump's input remains constant and the output is changed as follows: - -- Usual heat output is not delivered to load. - -- Cold output due to reverse cycle operation is delivered to load. See *ahpDfrCap*. - -- An additional resistance heater is operated; and its heat output is delivered to load. See *ahpDfrRh*. - -The program will issue an error message if *ahpDfrFMx* $\le$ *ahpDfrFMn*. - - --------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ---------- ------------- ------------ --------------- - 0 $\le$ *ahpDfrFMn*: No constant - *x* $\le$ .0222, - 1 (2 minutes/90 - minutes), - *ahpDfrFMx*: - .0889, (8 - minutes / 90 - minutes) - - --------------------------------------------------------------- - -**ahpDfrCap=*float*** - -Cooling capacity (to air handler supply air) during defrosting. Program separately computes the lost heating capacity during defrosting, but effects of switchover transient should be included in *ahpDfrCap*. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ---------------------- -------------- ----------------- - Btuh *x* $\neq$ 0 2 $\cdot$ *ahpCap17* No constant - -**ahpDfrRh=*float*** - -Input (and output) power of resistance reheat coil activated during defrost. Input is in kW, not Btuh as most CSE power inputs. Energy used by this heater is accumulated in *ahhcMeter* category "hp". - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - kW *x* > 0 5 kW No constant - -Inputs for air source heat pump low temperature cutout: - -**ahpTOff=*float*** - -**ahpTOn=*float*** - -Heat pump low temperature cutout setpoints. Heat pump is disabled (only the supplemental resistance heater operates) when outdoor temperature falls below *ahpTOff*, and is re-enabled when temperature rises above *ahpTOn*. Different values may be given to simulate thermostat differential. *ahpTOff* must be $\le$ *ahpTOn*; equal values are accepted. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ---------------------------- -------------- ----------------- - ^o^F *ahpTOff*: 5, *ahpTOn*: 12 No constant - -The next four inputs specify the heating power input for an air source heat pump: - -**ahpIn17=*float*** - -**ahpIn47=*float*** - -Steady state (full power, no cycling) power input for compressor and crankcase heater at 70 degrees F indoor (return) air temp and 17 and 47 degrees F outdoor temp respectively. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- ------------------- ----------------- - kW *x* > 0 Yes, for AHP coil constant - -**ahpInIa=*float*** - -Indoor (return) air temp power input correction factor: fraction increase in steady-state input per degree above 70 F, or decrease below 70F. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 .004 No constant - -**ahpCd=*float*** - -ARI cycling degradation coefficient: ratio of fraction drop in system coefficient of performance (COP) to fraction drop in capacity when cycling, from steady-state values, in ARI 47 F cycling performance tests. A value of .25 means that if the heat pump is cycled to drop its output to 20% of full capacity (i.e. by the fraction .8), its COP will drop by .8 \* .25 = .2. Here COP includes all energy inputs: compressor, crankcase heater, defrost operation, etc. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 .25 No constant - -The following four air handler heat coil members allow specification of auxiliary input power consumption associated with the heat coil (or furnace) under the indicated conditions. The single description box applies to all four. - -**ahhcAuxOn=*float*** - -Auxiliary power used when running, in proportion to subhour average part load ratio (plrAv). Example use: oil furnace induced draft fan. - -**ahhcAuxOff=*float*** - -Auxiliary power used when coil is not running, in proportion to 1 - plrAv. - -**ahhcAuxFullOff=*float*** - -Auxiliary power used only when coil is off for entire subhour; not used if the coil is on at all during a subhour. Example use: Gas furnace pilot under DOE2 model, where pilot is included in main energy input if furnace runs at all in subhour. - -**ahhcAuxOnAtAll=*float*** - -Auxiliary power used in full value if coil is on for any fraction of a subhour. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $\ge$ 0 0 No hourly - -The following four members specify meters for recording auxiliary energy use through ahhcAuxOn, ahhcAuxOff, ahhcAuxFullOff, and ahhcAuxOnAtAll, respectively. End use category "Aux" is used. - -**ahhcAuxOnMtr=*mtrName*** - -**ahhcAuxOffMtr=*mtrName*** - -**ahhcAuxFullOffMtr=*mtrName*** - -**ahhcAuxOnAtAllMtr=*mtrName*** - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------- -------------- ----------------- - *name of a METER* *not recorded* No constant - -## AIRHANDLER Cooling coil - -A cooling coil is an optional device that remove heat and humidity from the air passing through the AIRHANDLER. Available cooling coil types include chilled water (CHW), supported by a COOLPLANT that supplies cold water, and Direct Expansion (DX), supported by a dedicated compressor and condenser that are modeled integrally with the DX coil. No plant is used with DX coils. - -The following five members are used for all cool coil types except as noted. Presence of a cool coil in the AIRHANDLER is indicated by giving an *ahccType value* other than NONE. - -**ahccType*=choice*** - -Cool coil type choice: - - ----------- --------------------------------------- - ELECTRIC Testing artifice: removes heat at 100% - efficiency up to rated capacity at any - flow and temperature; removes no - humidity. Use in research runs to - isolate effects of coil models from - other parts of the CSE program. - - CHW CHilled Water coil, using a cold water - from a COOLPLANT. - - DX Direct Expansion coil, with dedicated - compressor and condenser modeled - integrally. - - NONE AIRHANDLER has no cooling coil and no - cooling capability. - ----------- --------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------- ------------- ---------------------- ----------------- - ELECTRIC, DX, CHW, NONE NONE Yes, if coil present constant - -**ahccSched*=choice*** - -Cooling coil schedule choice, hourly variable. Use a suitable CSE expression for ahccSched if cooling coil is to operate only at certain times, only in hot weather, etc. - - -------- --------------------------------------- - AVAIL Cooling coil will operate as necessary - (within its capacity) to cool the - supply air to the supply temperature - setpoint. - - OFF Cooling coil will not operate no matter - how hot the supply air is. To avoid - error messages, a CHW coil should be - scheduled OFF whenever its COOLPLANT is - scheduled OFF. - -------- --------------------------------------- - -**ahccCapTRat=*float*** - -Total rated capacity of coil: sum of its "sensible" (heat-removing) and "latent" (moisture removing) capacities. Not used with CHW coils, for which capacity is implicitly specified by water flow (ahccGpmDs*) and transfer unit (*ahccNtuoDs\* and *ahccNtuiDs*) inputs, described below. - -For coil specification conditions (a.k.a. rating conditions or design conditions), see *ahccDsTDbEn*, *ahccDsTWbEn*, *ahccDsTDbCnd*and *ahccVfR*below (see index). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - Btuh *x* > 0 *none* Yes constant - -**ahccCapSRat=*float*** - -Sensible (heat-removing) rated capacity of cooling coil. Not used with CHW coils. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - Btuh *x* > 0 *none* Yes constant - -**ahccMtr=*mtrName*** - -Name of meter, if any, to record energy use of air handler cool coil. End use category "Clg" is used. Not used with CHW coils, because the input energy use for a CHW coil is recorded by the COOLPLANT's CHILLERs. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------- -------------- ----------------- - *name of a METER* *not recorded* No constant - -The following six members are used with DX cooling coils. - -**ahccMinTEvap=*float*** - -Minimum (effective surface) temperature of coil (evaporator). Represents refrigerant setpoint, or cutout to prevent freezing. Coil model will reduce output to keep simulated coil from getting colder than this, even though it lets supply air get warmer than setpoint. Should default be 35?? - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 40^o^F No constant - -**ahccK1=*float*** - -Exponent in power relationship expressing coil effectiveness as a function of relative air flow. Used as K1 in the relationship ntu = ntuR \* relCfmk1, which says that the "number of transfer units" (on the coil outside or air side) varies with the relative air flow raised to the K1 power. Used with CHW as well as DX coils; for a CHW coil, ntuR in the formula is *ahccNtuoDs*. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* < 0 -0.4 No constant - -**ahccBypass=*float*** - -Fraction of air flow which does NOT flow through DX cooling coil, for better humidity control. Running less of the air through the coil lets the coil run colder, resulting in greater moisture removal right??. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------- ------------- -------------- ----------------- - 0 < *x* $\le$ 1 0 No constant - -The next three members are used in determining the energy input to a DX coil under various load conditions. The input is derived from the full load energy input ratio for four segments of the part load curve. In the following the part load ratio (plr) is the ratio of the actual sensible + latent load on the coil to the coil's capacity. The coil's capacity is ahccCaptRat, adjusted by the coil model for differences between entering air temperature, humidity, and flow rate and the coil rating conditions. The coil may run at less than capacity even at full fan flow, depending on the air temperature change needed, the moisture content of the entering air, and the relative values of between *sfanVfDs* and *ahccVfR*. - - ------------------------------ --------------------------------------- - full load plr (part load ratio) = 1.0 - - Full-load power input is power output - times *ahhcEirR.* - - compressor unloading region 1.0 > plr $\ge$ *ahhcMinUnldPlr* - - Power input is the full-load input - times the value of the *pydxEirUl* - polynomial (below) for the current plr, - i.e. pydxEirUl(plr). - - false loading region *ahccMinUnldPlr* > plr $\ge$ - *ahccMinFsldPlr* - - Power input in this region is constant - at the value for the low end of the - compressor unloading region, i.e. - pydxEirUl(ahccMinUnldPlr). - - cycling region *ahccMinFsldPlr* > plr $\ge$ 0 - - In this region the compressor runs at - the low end of the false loading region - for the necessary fraction of the time, - and the power input is the false - loading value correspondingly prorated, - i.e. pydxEirUl(ahccMinUnldPlr) \* plr / - ahccMinFsldPlr. - ------------------------------ --------------------------------------- - -The default values for the following three members are the DOE2 PTAC (Window air conditioner) values. - -**ahccEirR=*float*** - -DX compressor energy input ratio (EIR) at full load under rated conditions; defined as the full-load electric energy input divided by the rated capacity, both in Btuh; same as the reciprocal of the Coefficient Of Performance (COP). Polynomials given below are used by CSE to adjust the energy input for part load and for off rated flow and temperature conditions. The default value includes outdoor (condenser) fan energy, but not indoor (air handler supply) fan energy. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - 0.438 No hourly - -**ahccMinUnldPlr=*float*** - -Compressor part load ratio (total current load/current capacity) at/above which "Compressor unloading" is used and pydxEirUl (below) is used to adjust the full-load power input to get the current part load power input. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------------ -------------- ----------------- - 0 $\le$ *x* $\le$ 1 1 (no unloading) No constant - -**ahccMinFsldPlr=*float*** - -"False Loading" is used between this compressor part load ratio and the plr where unloading is activated (*ahccMinUnldPlr*). In this region, input remains at *pydxEirUl*(*ahccMinUnldPlr).*For plr's less than *ahccMinFsldPlr*, cycling is used, and the power input goes to 0 in a straight line. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------------------ ------------------------------------- -------------- ----------------- - 0 $\le$ *x* $\le$ *ahccMinUnldPlr* *ahccMinUnldPlr* (no false loading) No constant - -The following four inputs specify polynomials to approximate functions giving DX coil capacity and power (energy) input as functions of entering temperatures, relative (to ahccVfR) flow, and relative load (plr). In each case several *float* values may be given, for use as coefficients of the polynomial. The values are ordered from constant to coefficient of highest power. If fewer than the maximum number of values are given, zeroes are used for the trailing (high order) coefficients. - -Examples: - - pydxCaptT = 2.686, -0.01667, 0, 0.006, 0, 0; - - pydxCaptT = 2.686, -0.01667, 0, 0.006; // same - - pydxEirUl = .9, 1.11, .023, -.00345; - -If the polynomial does not evaluate to 1.0 when its inputs are equal to the rating conditions (1.0 for relative flows and plr), CSE will normalize your coefficients by dividing them by the non-1.0 value. - -Some of the polynomials are biquadratic polynomials whose variables are the entering air wetbulb and drybulb temperatures. These are of the form - -$$z = a + bx + cx^2 + dy + ey^2 + fxy$$ - -where a through f are user-inputtable coefficients, x is the entering wetbulb temperature, y is the entering drybulb temperature, and the polynomial value, z, is a factor by which the coil's capacity, power input, etc. at rated conditions is multiplied to adjust it for the actual entering air temperatures. - -Other polynomials are cubic polynomials whose variable is the air flow or load as a fraction of full flow or load.. These are of the form - -$$z = a + bx + cx^2+ dx^3$$ - -where a, b, c, and d are user-inputtable coefficients, $x$ is the variable, and the value $z$ is a factor by which the coil's capacity, power input, etc. at rated conditions is multiplied to adjust it for the actual flow or load. - -The default values for the polynomial coefficients are the DOE2 PTAC values. - -**pydxCaptT=a, b, c, d, e, f** - -Coefficients of biquadratic polynomial function of entering air wetbulb and condenser temperatures whose value is used to adjust *ahccCaptRat* for the actual entering air temperatures. The condenser temperature is the outdoor drybulb, but not less than 70. See discussion in preceding paragraphs. - - ------------------------------------------------------------ - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- ----------- ------------ --------------- - 1.1839345, No constant - -0.0081087, - 0.00021104, - -0.0061425, - 0.00000161, - -0.0000030 - - ------------------------------------------------------------ - -**pydxCaptF=a=a, b, c, d** - -Coefficients of cubic polynomial function of relative flow (entering air cfm/*ahccVfR*) whose value is used to adjust *ahccCaptRat* for the actual flow. See discussion in preceding paragraphs. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------------- -------------- ----------------- - 0.8, 0.2, 0.0, 0.0 No constant - -**pydxEirT=*a, b, c, d, e, f*** - -Coefficients of biquadratic polynomial function of entering air wetbulb and condenser temperatures whose value is used to adjust *ahccEirR* for the actual entering air temperatures. The condenser temperature is the outdoor air drybulb, but not less than 70. If the entering air wetbulb is less than 60, 60 is used, in this function only. See discussion in preceding paragraphs. - - ------------------------------------------------------------ - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- ----------- ------------ --------------- - -0.6550461, No constant - 0.03889096, - -0.0001925, - 0.00130464, - 0.00013517, - -0.0002247 - - ------------------------------------------------------------ - -**pydxEirUl=*a, b, c, d*** - -Coefficients of cubic polynomial function of part load ratio used to adjust energy input to part load conditions, in the compressor unloading part load region (1 $\ge$ plr $\ge$ *ahccMinUnldPlr*) as described above. See discussion of polynomials in preceding paragraphs. - -This polynomial adjusts the full load energy input to part load, not the ratio of input to output, despite the "Eir" in its name. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------ -------------- ----------------- - 0.125, 0.875, 0.0, 0.0 No constant - -The following four members are used only with CHW coils. In addition, *ahccK1,* described above, is used. - -**ahccCoolplant=*name*** - -name of COOLPLANT supporting CHW coil. COOLPLANTs contain CHILLERs, and are described in Section 5.21. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - *name of a COOLPLANT* for CHW coil constant - -**ahccGpmDs=*float*** - -Design (i.e. maximum) water flow through CHW coil. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- ------------------- ----------------- - gpm *x* > 0 Yes, for CHW coil constant - -**ahccNtuoDs=*float*** - -CHW coil outside number of transfer units at design air flow (ahccVfR*, below). See*ahccK1\* above with regard to transfer units at other air flows. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* > 0 2 No constant - -**ahccNtuiDs=*float*** - -CHW coil inside number of transfer units at design water flow (ahccGpmDs, above). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* > 0 2 No constant - -The following four members let you give the specification conditions for the cooling coil: the rating conditions, design conditions, or other test conditions under which the coil's performance is known. The defaults are ARI (Air-Conditioning and Refrigeration Institute) standard rating conditions. - -**ahccDsTDbEn=*float*** - -Design (rating) entering air dry bulb temperature, used with DX and CHW cooling coils. With CHW coils, this input is used only as the temperature at which to convert *ahccVfR* from volume to mass. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------- -------------- ----------------- - ^o^F *x* > 0 80^o^F (ARI) No constant - -**ahccDsTWbEn=*float*** - -Design (rating) entering air wet bulb temperature, for CHW coils. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------- -------------- ----------------- - ^o^F *x* > 0 67^o^F (ARI) No constant - -**ahccDsTDbCnd=*float*** - -Design (rating) condenser temperature (outdoor air temperature) for DX coils. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------- -------------- ----------------- - ^o^F *x* > 0 95^o^F (ARI) No constant - -**ahccVfR=*float*** - -Design (rating) (volumetric) air flow rate for DX or CHW cooling coil. The ARI specification for this test condition for CHW coils is "450 cfm/ton or less", right?? - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------------------------------------- -------------- ----------------- - cfm *x* > 0 DX coil: 400cfm/ton\* CHW coil: *sfanVfDs* No constant - -\* a "ton" is 12,000 Btuh of rated capacity (*ahccCaptRat*). - -The following four members permit specification of auxiliary input power use associated with the cooling coil under the conditions indicated. - -**ahccAuxOn=*float*** - -Auxiliary power used when coil is running, in proportion to its subhour average part load ratio (plrAv). - -**ahccAuxOff=*float*** - -Auxiliary power used when coil is not running, in proportion to 1 - plrAv. - -**ahccAuxFullOff=*float*** - -Auxiliary power used only when coil is off for entire subhour; not used if the coil is on at all during the subhour. - -**ahccAuxOnAtAll=*float*** - -Auxiliary power used in full value if coil is on for any fraction of a subhour. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $\ge$ 0 0 No hourly - -The following four allow specification of meters to record cool coil auxiliary energy use through ahccAuxOn, ahccAuxOff, ahccFullOff, and ahccAuxOnAtAll, respectively. End use category "Aux" is used. - -**ahccAuxOnMtr=*mtrName*** - -**ahccAuxOffMtr=*mtrName*** - -**ahccAuxFullOffMtr=*mtrName*** - -**ahccAuxOnAtAllMtr=*mtrName*** - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------- -------------- ----------------- - *name of a METER* *not recorded* No constant - -## AIRHANDLER Outside Air - -Outside air introduced into the air hander supply air can be controlled on two levels. First, a *minimum*fraction or volume of outside air may be specified. By default, a minimum volume of .15 cfm per square foot of zone area is used. Second, an *economizer* may be specified. The simulated economizer increases the outside air above the minimum when the outside air is cooler or has lower enthalpy than the return air, in order to reduce cooling coil energy usage. By default, there is no economizer. - -**oaMnCtrl=*choice*** - -Minimum outside air flow control method choice, VOLUME or FRACTION. Both computations are based on the minimum outside air flow, *oaVfDsMn*; if the control method is FRACTION, the outside air flow is pro-rated when the air handler is supplying less than its design cfm. In both cases the computed minimum cfm is multiplied by a schedulable fraction, *oaMnFrac*, to let you vary the outside air or turn in off when none is desired. - - ----------- --------------------------------------- - VOLUME Volume (cfm) of outside air is - regulated: - - min\_oa\_flow = oaMnFrac \* oaVfDsMn - - FRACTION Fraction of outside air in supply air - is regulated. The fraction is oaVfDsMn - divided by sfanVfDs, the air handler - supply fan design flow. The minimum cfm - of outside air is thus computed as - - min\_oa\_flow = oaMnFrac \* curr\_flow - \* oaVfDsMn / sfanVfDs - - where curr\_flow is the current air - handler cfm. - ----------- --------------------------------------- - -If the minimum outside air flow is greater than the total requested by the terminals served by the air handler, then 100% outside air at the latter flow is used. To insure minimum outside air cfm to the zones, use suitable terminal minimum flows (*tuVfMn*) as well as air handler minimum outside air specifications. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------ ------------- -------------- ----------------- - VOLUME, FRACTION VOLUME No constant - -**oaVfDsMn=*float*** - -Design minimum outside air flow. If *oaMnCtrl* is FRACTION, then this is the minimum outside air flow at full air handler flow. See formulas in *oaMnCtrl* description, just above. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- --------------------------------------- -------------- ----------------- - cfm *x* $\ge$ 0 0.15 times total area of zones served No constant - -**oaMnFrac=*float*** - -Fraction of minimum outside air to use this hour, normally 1.0. Use a CSE expression that evaluates to 0 for hours you wish to disable the minimum outside air flow, for example to suppress ventilation during the night or during warm-up hours. Intermediate values may be used for intermediate outside air minima. See formulas in *oaMnCtrl* description, above. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 1.0 No hourly - -CAUTION: the minimum outside air flow only applies when the supply fan is running; it won't assure meeting minimum ventilation requirements when used with ahFanCycles = YES (constant volume, fan cycling). - -If an *oaEcoType* choice other than NONE is given, an economizer will be simulated. The economizer will be enabled when the outside temperature is below oaLimT *AND* the outside air enthalpy is below oaLimE. When enabled, the economizer adjusts the economizer dampers to increase the outside air mixed with the return air until the mixture is cooler than the air handler supply temperature setpoint, if possible, or to maximum outside air if the outside air is not cool enough. - -CAUTIONS: the simulated economizer is just as dumb as the hardware being simulated. Two considerations particularly require attention. First, if enabled when the outside air is warmer than the return air, it will do the worst possible thing: use 100% outside air. Prevent this by being sure your oaLimT or oaLimE input disables the economizer when the outside air is too warm -- or leave the oaLimT = RA default in effect. - -Second, the economizer will operate even if the air handler is heating, resulting in use of more than minimum outside air should the return air get above the supply temperature setpoint. Economizers are intended for cooling air handlers; if you heat and cool with the same air handler, consider disabling the economizer when heating by scheduling a very low *oaLimT* or *oaLimE*. - - -**oaEcoType=*choice*** - -Type of economizer. Choice of: - - ---------------- --------------------------------------- - NONE No economizer; outside air flow is the - minimum. - - INTEGRATED Coil and economizer operate - independently. - - NONINTEGRATED Coil does not run when economizer is - using all outside air: simulates - interlock in some equipment designed to - prevent coil icing due to insufficient - load, right? - - TWO\_STAGE Economizer is disabled when coil cycles - on. *NOT IMPLEMENTED* as of July 1992. - ---------------- --------------------------------------- - -**oaLimT=*float*** - -or RAEconomizer outside air temperature high limit. The economizer is disabled (outside air flow is reduced to a minimum) when the outside air temperature is greater than *oaLimT*. A number may be entered, or "RA" to specify the current Return Air temperature. *OaLimT* may be scheduled to a low value, for example -99, if desired to disable the economizer at certain times. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ----------------------------- -------------- ----------------- - ^o^F *number*or RA RA (return air temperature) No hourly - -**oaLimE=*float*** - -or RAEconomizer outside air enthalpy high limit. The economizer is disabled (outside air flow is reduced to a minimum) when the outside air enthalpy is greater than *oaLimE*. A number may be entered, or "RA" to specify the current Return Air enthalpy. *OaLimE* may be scheduled to a low value, for example -99, if desired to disable the economizer at certain times. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------------- -------------- ----------------- - Btu/^o^F *number* or RA 999 (enthalpy limit disabled) No hourly - -*oaOaLeak* and *oaRaLeak* specify leakages in the economizer dampers, when present. The leaks are constant-cfm flows, expressed as fractions of the maximum possible flow. Thus, when the current flow is less than the maximum possible, the range of operation of the economizer is reduced. When the two damper leakages add up to more than the current air handler flow, outside and return air are used in the ratio of the two leakages and the economizer, if enabled, is ineffective. - -**oaOaLeak=*float*** - -Outside air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. If an economizer is present, *oaOaLeak* is a fraction of the supply fan design cfm, *sfanVfDs*. Otherwise, *oaOaLeak* is a fraction of the design minimum outside air flow *oaVfDsMn*. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1.0 0.1 No constant - -**oaRaLeak=*float*** - -Return air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. Expressed as a fraction of the supply fan design cfm, *sfanVfDs*. Not used when no economizer is being modeled. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1.0 0.1 No constant - -## AIRHANDLER Leaks and Losses - -*AhSOLeak* and *ahRoLeak* express air leaks in the common supply and return ducts, if any, that connect the air handler to the conditioned space. For leakage after the point where a duct branches off to an individual zone, see TERMINAL member *tuSRLeak*. These inputs model leaks in constant pressure (or vacuum) areas nearer the supply fan than the terminal VAV dampers; thus, they are constant volume regardless of flow to the zones. Hence, unless 0 leakage flows are specified, the air handler cfm is greater than the sum of the terminal cfm's, and the air handler cfm is non-0 even when all terminal flows are 0. Any heating or cooling energy applied to the excess cfm is lost to the outdoors. - -If unequal leaks are specified, at present (July 1992) CSE will use the average of the two specifications for both leaks, as the modeled supply and return flows must be equal. A future version may allow unequal flows, making up the difference in exfiltration or infiltration to the zones. - -**ahSOLeak=*float*** - -Supply duct leakage to outdoors, expressed as a fraction of supply fan design flow (*sfanVfDs*). Use 0 if the duct is indoors. A constant-cfm leak is modeled, as the pressure is constant when the fan is on. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 0.01 No constant - -**ahROLeak=*float*** - -Return duct leakage FROM outdoors, expressed as a fraction of *sfanVfDs*. Use 0 if the duct is indoors. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 0.01 No constant - -*AhSOLoss* and *ahROLoss* represent conductive losses from the common supply and return ducts to the outdoors. For an individual zone's conductive duct loss, see TERMINAL member *tuSRLoss*. Losses here are expressed as a fraction of the temperature difference which is lost. For example, if the supply air temperature is 120, the outdoor temperature is 60, and the pertinent loss is .1, the effect of the loss as modeled will be to reduce the supply air temperature by 6 degrees ( .1 \* (120 - 60) ) to 114 degrees. CSE currently models these losses a constant *TEMPERATURE LOSSes* regardless of cfm. - -**ahSOLoss=*float*** - -Supply duct loss/gain to the outdoors. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 0.1 No constant - -**ahROLoss=*float*** - -Return duct heat loss/gain to the outdoors. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 0.1 No constant - -## AIRHANDLER Crankcase Heater - -A "crankcase heater" is an electric resistance heater in the crankcase of the compressor of heat pumps and dx cooling coils. The function of the crankcase heater is to keep the compressor's oil warmer than the refrigerant when the compressor is not operating, in order to prevent refrigerant from condensing into and remaining in the oil, which impairs its lubricating properties and shortens the life of the compressor. Manufacturers have come up with a number of different methods for controlling the crankcase heater. The crankcase heater can consume a significant part of the heat pump's energy input; thus, it is important to model it. - -In CSE a heat pump is modeled as though it were separate heating and cooling coils. However, the crankcase heater may operate (or not, according to its control method) whether the heat pump is heating, or cooling, or, in particular, doing neither, so it is modeled as a separate part of the air handler, not associated particularly with heating or cooling. - -When modeling an air source heat pump (ahhcType = AHP), these variables should be used to specify the crankcase heater, insofar as non-default inputs are desired. - -Appropriateness of use of these inputs when specifying a DX system without associated heat pump heating is not clear to me (Rob) as of 10-23-92; on the one hand, the DX compressor probably has a crankcase heater; on the other hand, the rest of the DX model is supposed to be complete in itself, and adding a crankcase heater here might produce excessive energy input; on the third hand, the DX model does not include any energy input when the compressor is idle; ... . - -**cchCM=*choice*** - -Crankcase heater presence and control method. Choice of: - - ------------- -------------------------------------------------------- - NONE No crankcase heater present - - CONSTANT Crankcase heater input always *cchPMx* (below). - - PTC Proportional control based on oil temp when compressor - does not run in subhour (see *cchTMx*, *cchMn*, and - *cchDT*). If compressor runs at all in subhour, the oil - is assumed to be hotter than *cchTMn* and crankcase - heater input is *cchPMn*. (PTC stands for "Positive - Temperature Coefficient" or "Proportional Temperature - Control".) - - TSTAT Control based on outdoor temperature, with optional - differential, during subhours when compressor is off; - crankcase heater does not operate if compressor runs at - all in subhour. See *cchTOn*, *cchTOff*. - - CONSTANT\_CLO - - PTC\_CLO Same as corresponding choices above except zero - crankcase heater input during fraction of time - compressor is on ("Compressor Lock Out"). There is no - TSTAT\_CLO because under TSTAT the crankcase heater does - not operate anyway when the compressor is on. - ------------- -------------------------------------------------------- - - ------------------------------------------------------------------ - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------------- ----------- ------------ --------------- - CONSTANT\ PTC\_CLO if No constant - CONSTANT\_CLO\ *ahhcType* - PTC\ is AHP, - PTC\_CLO\ else NONE - TSTAT\ - NONE - - ------------------------------------------------------------------ - -**cchPMx=*float*** - -Crankcase resistance heater input power; maximum power if *cchCM* is PTC or PTC\_CLO. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - kW *x* > 0 .4 kW No constant - -**cchPMn=*float*** - -Crankcase heater minimum input power if *cchCM* is PTC or PTC\_CLO, disallowed for other *cchCM's*. > 0. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - kW *x* > 0 .04 kW No constant - -**cchTMx=*float*** - -**cchTMn=*float*** - -For *cchCM* = PTC or PTC\_CLO, the low temperature (max power) and high temperature (min power) setpoints. In subhours when the compressor does not run, crankcase heater input is *cchPMx* when oil temperature is at or below *cchTMx*, *cchPMn* when oil temp is at or above *cchTMn*, and varies linearly (proportionally) in between. *cchTMn* must be $\ge$ *cchTMx*. See *cchDT* (next). - -(Note that actual thermostat setpoints probably cannot be used for *cchTMx* and *cchTMn* inputs, because the model assumes the difference between the oil temperature and the outdoor temperature is constant (*cchDT*) regardless of the heater power. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ---------------------------- -------------- ----------------- - ^o^F *cchTMn*: 0; *cchTMx*: 150 No constant - -**cchDT=*float*** - -For *cchCM* = PTC or PTC\_CLO, how much warmer than the outdoor temp CSE assumes the crankcase oil to be in subhours when the compressor does not run. If the compressor runs at all in the subhour, the oil is assumed to be warmer than *cchTMn*. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F 20^o^F No constant - -**cchTOn=*float*** - -**cchTOff=*float*** - -For *cchCM* = TSTAT, in subhours when compressor does not run, the crankcase heater turn-on and turn-off outdoor temperatures, respectively. Unequal values may be given to simulate thermostat differential. When the compressor runs at all in a subhour, the crankcase heater is off for the entire subhour. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------------- --------------------------------------- -------------- ----------------- - ^o^F *cchTOff* $\ge$ *cchTOn* *cchTOn*: 72^o^F; *chcTOff*: *chcTOn* No constant - -**cchMtr=*name of a METER*** - -METER to record crankcase heater energy use, category "Aux"; not recorded if not given. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------- -------------- ----------------- - *name of a METER* *not recorded* No constant - -**endAirHandler** - -Indicates the end of the air handler definition. Alternatively, the end of the air handler definition can be indicated by the declaration of another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/boiler.md b/doc/test/resources/boiler.md deleted file mode 100644 index 0f8b71dcd..000000000 --- a/doc/test/resources/boiler.md +++ /dev/null @@ -1,141 +0,0 @@ -# BOILER - -BOILERs are subObjects of HEATPLANTs (preceding Section 5.20). BOILERs supply heat, through their associated HEATPLANT, to HW coils and heat exchangers. - -Each boiler has a pump. The pump operates whenever the boiler is in use; the pump generates heat in the water, which is added to the boiler's output. The pump heat is independent of load -- the model assumes a bypass valve keeps the water flow constant when the loads are using less than full flow -- except that the heat is assumed never to exceed the load. - -**boilerName** - -Name of BOILER object, given immediately after the word BOILER. The name is used to refer to the boiler in heat plant stage commands. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* Yes constant - -**blrCap=*float*** - -Heat output capacity of this BOILER. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - Btuh *x* > 0 Yes constant - -**blrEffR=*float*** - -Boiler efficiency at steady-state full load, as a fraction. 1.0 may be specified to model a 100% efficient boiler. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------- ------------- -------------- ----------------- - 0 < *x* $\le$ 1.0 .80 No constant - -**blrEirR=*float*** - -Boiler Energy Input Ratio: alternate method of specifying efficiency. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - x $\ge$ 1.0 1/*blrEffR* No constant - -**blrPyEi=*a, b, c, d*** - -Coefficients of cubic polynomial function of part load ratio (load/capacity) to adjust full-load energy input for part load operation. Up to four floats may be given, separated by commas, lowest order (i.e. constant term) coefficient first. If the given coefficients result in a polynomial whose value is not 1.0 when the input variable, part load ratio, is 1.0, a warning message will be printed and the coefficients will be normalized to produce value 1.0 at input 1.0. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------------- -------------- ----------------- - .082597, .996764, 0.79361, 0. No constant - -**blrMtr=*name of a METER*** - -Meter to which Boiler's input energy is accumulated; if omitted, input energy is not recorded. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - name of a METER *none* No constant - -**blrpGpm=*float*** - -Boiler pump flow in gallons per minute: amount of water pumped from this boiler through the hot water loop supplying the HEATPLANT's loads (HW coils and heat exchangers) whenever boiler is operating. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------- -------------- ----------------- - gpm *x* > 0 blrCap/10000 No constant - -**blrpHdloss=*float*** - -Boiler pump head loss (pressure). 0 may be specified to eliminate pump heat and pump energy input. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft H2O *x* $\ge$ 0 114.45\* No constant - -\* may be temporary value for 10-31-92 version; prior value of 35 may be restored. - -**blrpMotEff=*float*** - -Boiler pump motor efficiency. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------- ------------- -------------- ----------------- - 0 < *x* $\le$ 1.0 .88 No constant - -**blrpHydEff=*float*** - -Boiler pump hydraulic efficiency - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------- ------------- -------------- ----------------- - 0 < *x* $\le$ 1.0 .70 No constant - -**blrpMtr=*name of a METER*** - -Meter to which pump electrical input energy is accumulated. If omitted, pump input energy use is not recorded. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ------------- -------------- ----------------- - *name of a METER* *none* No constant - -The following four members permit specification of auxiliary input power use associated with the boiler under the conditions indicated. - - --------------------------- ------------------------------------------- - blrAuxOn=*float* Auxiliary power used when boiler is - running, in proportion to its subhour - average part load ratio (plr). - - blrAuxOff=*float* Auxiliary power used when boiler is not - running, in proportion to 1 - plr. - - blrAuxFullOff=*float* Auxiliary power used only when boiler is - off for entire subhour; not used if the - boiler is on at all during the subhour. - - blrAuxOnAtAll=*float* Auxiliary power used in full value if - boiler is on for any fraction of subhour. - --------------------------- ------------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $\ge$ 0 0 No hourly - -The following four allow specification of meters to record boiler auxiliary energy use through blrAuxOn, blrAuxOff, blrFullOff, and blrAuxOnAtAll, respectively. End use category "Aux" is used. - -**blrAuxOnMtr=*mtrName*** - -**blrAuxOffMtr=*mtrName*** - -**blrAuxFullOffMtr=*mtrName*** - -**blrAuxOnAtAllMtr=*mtrName*** - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------- -------------- ----------------- - *name of a METER* *not recorded* No constant - -**endBoiler** - -Optionally indicates the end of the boiler definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/chiller.md b/doc/test/resources/chiller.md deleted file mode 100644 index a3521a340..000000000 --- a/doc/test/resources/chiller.md +++ /dev/null @@ -1,300 +0,0 @@ -# CHILLER - -CHILLERs are subobjects of COOLPLANTs (Section 5.21). CHILLERs supply coldness, in the form of chilled water, via their COOLPLANT, to CHW (CHilled Water) cooling coils in AIRHANDLERs. CHILLERs exhaust heat through the cooling towers in their COOLPLANT's TOWERPLANT. Each COOLPLANT can contain multiple CHILLERs; chiller operation is controlled by the scheduling and staging logic of the COOLPLANT, as described in the previous section. - -Each chiller has primary and secondary pumps that operate when the chiller is on. The pumps add heat to the primary and secondary loop water respectively; this heat is considered in the modeling of the loop's water temperature. - -**chillerName** - -Name of CHILLER object, given immediately after the word CHILLER. This name is used to refer to the chiller in *cpStage* commands. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* Yes constant - -The next four inputs allow specification of the CHILLER's capacity (amount of heat it can remove from the primary loop water) and how this capacity varies with the supply (leaving) temperature of the primary loop water and the entering temperature of the condenser (secondary loop) water. The chiller capacity at any supply and condenser temperatures is *chCapDs* times the value of *chPyCapT* at those temperatures. - -**chCapDs=*float*** - -Chiller design capacity, that is, the capacity at *chTsDs* and *chTcndDs* (next). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - Btuh *x* != 0 Yes constant - -**chTsDs=*float*** - -Design supply temperature: temperature of primary water leaving chiller at which capacity is *chCapDs*. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 44 No constant - -**chTcndDs=*float*** - -Design condenser temperature: temperature of secondary water entering chiller condenser at which capacity is *chCapDs*. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 85 No constant - -**chPyCapT=*a, b, c, d, e, f*** - -Coefficients of bi-quadratic polynomial function of supply (ts) and condenser (tcnd) temperatures that specifies how capacity varies with these temperatures. This polynomial is of the form - -$$a + b \cdot ts + c \cdot ts^2 + d \cdot tcnd + e \cdot tcnd^2 + f \cdot ts \cdot tcnd$$ - -Up to six *float* values may be entered, separated by commas; CSE will use zero for omitted trailing values. If the polynomial does not evaluate to 1.0 when ts is chTsDs and tcnd is chTcndDs, a warning message will be issued and the coefficients will be adjusted (normalized) to make the value 1.0. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- --------------------------------------------------------- -------------- ----------------- - -1.742040, .029292, .000067, .048054, .000291, -.000106 No constant - -The next three inputs allow specification of the CHILLER's full-load energy input and how it varies with supply and condenser temperature. Only one of *chCop* and *chEirDs* should be given. The full-load energy input at any supply and condenser temperatures is the chiller's capacity at these temperatures, times *chEirDs* (or 1/*chCop*), times the value of *chPyEirT* at these temperatures. - -**chCop=*float*** - -Chiller full-load COP (Coefficient Of Performance) at *chTsDs*and *chTcndDs*. This is the output energy divided by the electrical input energy (in the same units) and reflects both motor and compressor efficiency. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* > 0 4.2 No constant - -**chEirDs=*float*** - -Alternate input for COP: Full-load Energy Input Ratio (electrical input energy divided by output energy) at design temperatures; the reciprocal of *chCop*. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ---------------------- -------------- ----------------- - *x* > 0 *chCop* is defaulted No constant - -**chPyEirT=*a, b, c, d, e, f*** - -Coefficients of bi-quadratic polynomial function of supply (ts) and condenser (tcnd) temperatures that specifies how energy input varies with these temperatures. This polynomial is of the form - -$$a + b \cdot ts + c \cdot ts^2 + d \cdot tcnd + e \cdot tcnd^2 + f \cdot ts \cdot tcnd$$ - -Up to six *float* values may be entered, separated by commas; CSE will use zero for omitted trailing values. If the polynomial does not evaluate to 1.0 when ts is chTsDs and tcnd is chTcndDs, a warning message will be issued and the coefficients will be adjusted (normalized) to make the value 1.0. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- --------------------------------------------------------- -------------- ----------------- - 3.117600, -.109236, .001389, .003750, .000150, -.000375 No constant - -The next three inputs permit specification of the CHILLER's part load energy input. In the following the part load ratio (plr) is defined as the actual load divided by the capacity at the current supply and condenser temperatures. The energy input is defined as follows for four different plr ranges: - - --------------- ------------------------------------------------------- - full loadplr (part load ratio) = 1.0 - - Power input is full-load input, as described above. - - compressor 1.0 > plr $\ge$ *chMinUnldPlr* - unloading - region - - Power input is the full-load input times the value of - the *chPyEirUl* polynomial for the current plr, that - is, *chPyEirUl*(plr). - - false loading *chMinUnldPlr* > plr > *chMinFsldPlr* - region - - Power input in this region is constant at the value for - the low end of the compressor unloading region, i.e. - *chPyEirUl*(*chMinUnldPlr*). - - cycling region *chMinFsldPlr* > plr $\ge$ 0 - - In this region the chiller runs at the low end of the - false loading region for the necessary fraction of the - time, and the power input is the false loading value - correspondingly prorated, i.e. - *chPyEirUl*(*chMinUnldPlr*) plr / *chMinFsldPlr*. - --------------- ------------------------------------------------------- - -These plr regions are similar to those for a DX coil & compressor in an AIRHANDLER, Section 0. - -**chPyEirUl=*a, b, c, d*** - -Coefficients of cubic polynomial function of part load ratio (plr) that specifies how energy input varies with plr in the compressor unloading region (see above). This polynomial is of the form - -$$a + b \cdot plr + c \cdot plr^2 + d \cdot plr^3$$ - -Up to four *float* values may be entered, separated by commas; CSE will use zero for omitted trailing values. If the polynomial does not evaluate to 1.0 when plr is 1.0, a warning message will be issued and the coefficients will be adjusted (normalized) to make the value 1.0. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------------- -------------- ----------------- - .222903, .313387, .463710, 0. No constant - -**chMinUnldPlr=*float*** - -Minimum compressor unloading part load ratio (plr); maximum false loading plr. See description above. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 0.1 No constant - -**chMinFsldPlr=*float*** - -Minimum compressor false loading part load ratio (plr); maximum cycling plr. See description above. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ *chMinFsldPlr* 0.1 No constant - -**chMotEff=*float*** - -Fraction of CHILLER compressor motor input power which goes to the condenser. For an open-frame motor and compressor, where the motor's waste heat goes to the air, enter the motor's efficiency: a fraction around .8 or .9. For a hermetic compressor, where the motor's waste heat goes to the refrigerant and thence to the condenser, use 1.0. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------- ------------- -------------- ----------------- - 0 < *x* $\le$ 1 1.0 No constant - -**chMeter=*name*** - -Name of METER to which to accumulate CHILLER's electrical input energy. Category "Clg" is used. Note that two additional commands, *chppMtr* and *chcpMtr*, are used to specify meters for recording chiller pump input energy. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- -------------- -------------- ----------------- - *name of a METER* not recorded No constant - -The next six inputs specify this CHILLER's *PRIMARY PUMP*, which pumps chilled water from the chiller through the CHW coils connected to the chiller's COOLPLANT. - -**chppGpm=*float*** - -Chiller primary pump flow in gallons per minute: amount of water pumped from this chiller through the primary loop supplying the COOLPLANT's loads (CHW coils) whenever chiller is operating. Any excess flow over that demanded by coils is assumed to go through a bypass valve. If coil flows exceed *chppGpm*, CSE assumes the pressure drops and the pump "overruns" to deliver the extra flow with the same energy input. The default is one gallon per minute for each 5000 Btuh of chiller design capacity. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------ -------------- ----------------- - gpm *x* > 0 *chCapDs* / 5000 No constant - -**chppHdloss=*float*** - -Chiller primary pump head loss (pressure). 0 may be specified to eliminate pump heat and pump energy input. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft H2O *x* $\ge$ 0 57.22\* No constant - -\* May be temporary default for 10-31-92 version; prior value (65) may be restored. - -**chppMotEff=*float*** - -Chiller primary pump motor efficiency. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------- ------------- -------------- ----------------- - 0 < *x* $\le$ 1.0 .88 No constant - -**chppHydEff=*float*** - -Chiller primary pump hydraulic efficiency - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------- ------------- -------------- ----------------- - 0 < *x* $\le$ 1.0 .70 No constant - -**chppOvrun=*float*** - -Chiller primary pump maximum overrun: factor by which flow demanded by coils can exceed *chppGpm*. The primary flow is not simulated in detail; *chppOvrun* is currently used only to issue an error message if the sum of the design flows of the coils connected to a COOLPLANT exceeds the sum of the products of *chppGpm* and *chppOvrun* for the chiller's in the plants most powerful stage. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $\ge$ 1.0 1.3 No constant - -**chppMtr=*name of a METER*** - -Meter to which primary pump electrical input energy is accumulated. If omitted, pump input energy use is not recorded. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ------------- -------------- ----------------- - *name of a METER* *none* No constant - -The next five inputs specify this CHILLER's *CONDENSER PUMP*, also known as the *SECONDARY PUMP* or the *HEAT REJECTION PUMP*. This pump pumps water from the chiller's condenser through the cooling towers in the COOLPLANT's TOWERPLANT. - -**chcpGpm=*float*** - -Chiller condenser pump flow in gallons per minute: amount of water pumped from this chiller through the cooling towers when chiller is operating. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------ -------------- ----------------- - gpm *x* > 0 *chCapDs* / 4000 No constant - -**chcpHdloss=*float*** - -Chiller condenser pump head loss (pressure). 0 may be specified to eliminate pump heat and pump energy input. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft H2O *x* $\ge$ 0 45.78\* No constant - -\* May be temporary default for 10-31-92 version; prior value (45) may be restored. - -**chcpMotEff=*float*** - -Chiller condenser pump motor efficiency. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------- ------------- -------------- ----------------- - 0 < *x* $\le$ 1.0 .88 No constant - -**chcpHydEff=*float*** - -Chiller condenser pump hydraulic efficiency - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------- ------------- -------------- ----------------- - 0 < *x* $\le$ 1.0 .70 No constant - -**chcpMtr=*name of a METER*** - -Meter to which condenser pump electrical input energy is accumulated. If omitted, pump input energy use is not recorded. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ------------- -------------- ----------------- - *name of a METER* *none* No constant - -The following four members permit specification of auxiliary input power use associated with the chiller under the conditions indicated. - -**chAuxOn=*float*** - -Auxiliary power used when chiller is running, in proportion to its subhour average part load ratio (plr). - -**chAuxOff=*float*** - -Auxiliary power used when chiller is not running, in proportion to 1 - plr. - -**chAuxFullOff=*float*** - -Auxiliary power used only when chiller is off for entire subhour; not used if the chiller is on at all during the subhour. - -**chAuxOnAtAll=*float*** - -Auxiliary power used in full value if chiller is on for any fraction of subhour. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $\ge$ 0 0 No hourly - -The following four allow specification of meters to record chiller auxiliary energy use through chAuxOn, chAuxOff, chFullOff, and chAuxOnAtAll, respectively. End use category "Aux" is used. - -**chAuxOnMtr=*mtrName*** - -**chAuxOffMtr=*mtrName*** - -**chAuxFullOffMtr=*mtrName*** - -**chAuxOnAtAllMtr=*mtrName*** - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------- -------------- ----------------- - *name of a METER* *not recorded* No constant - -**endChiller** - -Optionally indicates the end of the CHILLER definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/construction.md b/doc/test/resources/construction.md deleted file mode 100644 index 4c2172e65..000000000 --- a/doc/test/resources/construction.md +++ /dev/null @@ -1,34 +0,0 @@ -# CONSTRUCTION - -CONSTRUCTION constructs an object of class CONSTRUCTION that represents a light weight or massive ceiling, wall, floor, or mass assembly (mass assemblies cannot, obviously, be lightweight). Once defined, CONSTRUCTIONs can be referenced from SURFACEs (below). A defined CONSTRUCTION need not be referenced. Each CONSTRUCTION is optionally followed by LAYERs, which define the constituent LAYERs of the construction. - -**conName** - -Name of construction. Required for reference from SURFACE and DOOR objects, below. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* Yes constant - -**conU=*float*** - -U-value for the construction (NOT including surface (air film) conductances; see SURFACE statements). If omitted, one or more LAYERs must immediately follow to specify the LAYERs that make up the construction. If specified, no LAYERs can follow. - - -------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - ----------- --------- ----------- ------------ --------------- - Btuh/ft^2^- *x* $>$ 0 calculated if omitted, constant - ^o^F from LAYERs LAYERs must - follow - - -------------------------------------------------------------- - -**endConstruction** - -Optional to indicates the end of the CONSTRUCTION. Alternatively, the end of the CONSTRUCTION definition can be indicated by "END" or by beginning another object If END or endConstruction is used, it should follow the construction's LAYER subobjects, if any. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - diff --git a/doc/test/resources/coolplant.md b/doc/test/resources/coolplant.md deleted file mode 100644 index 61f86d7ee..000000000 --- a/doc/test/resources/coolplant.md +++ /dev/null @@ -1,93 +0,0 @@ -# COOLPLANT - -A COOLPLANT contains one or more CHILLER subobjects (Section 5.21.1). Each COOLPLANT supports one or more CHilled Water (CHW) cooling coils in AIRHANDLERs, and is supported by a TOWERPLANT (Section 5.22). The piping circuit connecting the cold-water (evaporator) side of the CHILLERs to the CHW coils is referred to as the *primary loop*; the piping connecting the warm-water (condenser) side of the CHILLERs to the cooling towers in the TOWERPLANT is referred to as the *secondary loop*. Flows in these loops are established primary and secondary (or heat rejection) by pumps in each CHILLER; these pumps operate when the CHILLER operates. - -The modeling of the CHW coils, COOLPLANTs, and CHILLERs includes modeling the supply temperature of the water in the primary loop, that is, the water supplied from the COOLPLANT's operating CHILLER(s) to the CHW coils. If the (negative) heat demanded by the connected coils exceeds the plant's capacity, the temperature rises and the available power is distributed among the AIRHANDLERs according to the operation of the CHW coil model. - -The primary water flow through each CHILLER is always at least that CHILLER's specified primary pump capacity -- it is assumed that any flow in excess of that used by the coils goes through a bypass value. When the coils request more flow than the pump's capacity, it is assumed the pressure drops and the pump can deliver the greater flow at the same power input and while imparting the same heat to the water. The primary water flow is not simulated during the run, but an error occurs before the run if the total design flow of the CHW coils connected to a COOLPLANT exceeds the pumping capacity of the CHILLERs in the plant's most powerful stage. - -The CHILLERs in the COOLPLANT can be grouped into *STAGES* of increasing capacity. The COOLPLANT uses the first stage that can meet the load. The load is distributed amoung the CHILLERs in the active stage so that each operates at the same fraction of its capacity; CHILLERs not in the active stage are turned off. - -For each COOLPLANT, primary loop piping loss is modeled, as a heat gain equal to a constant fraction of the CHILLER capacity of the COOLPLANT's most powerful stage. This heat gain is added to the load whenever the plant is operating; as modeled, the heat gain is independent of load, weather, which stage is operating, or any other variables. No secondary loop piping loss is modeled. - -**coolplantName** - -Name of COOLPLANT object, given immediately after the word COOLPLANT. This name is used to refer to the coolPlant in *ahhcCoolplant* commands. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* Yes constant - -**cpSched=*choice*** - -Coolplant schedule: hourly variable choice of OFF, AVAIL, or ON. - - ------- -------------------------------------------------------------- - OFF COOLPLANT will not supply chilled water regardless of demand. - All loads (CHW coils) should be scheduled off when the plant - is off; an error will occur if a coil calls for chilled water - when its plant is off. - - AVAIL COOLPLANT will operate when one or more loads demand chilled - water. - - ON COOLPLANT runs unconditionally. When no load wants chilled - water, least powerful (first) stage runs anyway. - ------- -------------------------------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ------------- -------------- ----------------- - OFF, AVAIL, or ON AVAIL No hourly - -**cpTsSp=*float*** - -Coolplant primary loop supply temperature setpoint: setpoint temperature for chilled water supplied to coils. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 44 No hourly - -**cpPipeLossF=*float*** - -Coolplant pipe loss: heat assumed gained from primary loop piping connecting chillers to loads whenever the COOLPLANT is operating, expressed as a fraction of the chiller capacity of the plant's most powerful stage. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 .01 No constant - -**cpTowerplant=*name*** - -TOWERPLANT that cools the condenser water for the chillers in this COOLPLANT. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------ ------------- -------------- ----------------- - *name of a TOWERPLANT* Yes constant - -**cpStage1=chillerName, chillerName, chillerName, ...** - -**cpStage1=ALL\_BUT, chillerName, chillerName, chillerName, ...** - -**cpStage1=ALL** - -**cpStage2 through cpStage7 *same*** - -The commands *cpStage1* through *cpStage7* allow specification of up to seven *STAGES* in which chillers are activated as the load increases. CSE will use the first stage that can meet the load; if no stage will meet the load (output the heat requested by the coils at *cpTsSp*), the last COOLPLANT stage is used. - -Each stage may be specified with a list of up to seven names of CHILLERs in the COOLPLANT, or with the word ALL, meaning all of the COOLPLANT's CHILLERs, or with the word ALL\_BUT and a list of up to six names of CHILLERs. Each stage should be more powerful than the preceding one. If you have less than seven stages, you may skip some of the commands *cpStage1* through *cpStage7* -- the used stage numbers need not be contiguous. - -If none of *cpStage1* through *cpStage7* are given, CSE supplies a single default stage containing all chillers. - -A comma must be entered between chiller names and after the word ALL\_BUT. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------------------------------- ------------------ -------------- ----------------- - 1 to 7 names; ALL\_BUT and 1 to 6 names; ALL *cpStage1* = ALL No constant - -**endCoolplant** - -Optionally indicates the end of the COOLPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - diff --git a/doc/test/resources/cullist-snippet.txt b/doc/test/resources/cullist-snippet.txt deleted file mode 100644 index d1520841f..000000000 --- a/doc/test/resources/cullist-snippet.txt +++ /dev/null @@ -1,14 +0,0 @@ - -CSE 0.816 for Win32 console -Command line: -c - -Top - doAutoSize - doMainSim - - -material Parent: Top - matThk - matCond - - diff --git a/doc/test/resources/cullist.txt b/doc/test/resources/cullist.txt deleted file mode 100644 index b57eb66f1..000000000 --- a/doc/test/resources/cullist.txt +++ /dev/null @@ -1,909 +0,0 @@ - -CSE 0.816 for Win32 console -Command line: -c - -Top - doAutoSize - doMainSim - begDay - endDay - jan1DoW - wuDays - nSubSteps - skipDayStart - skipDayStep - wfName - elevation - refTemp - refRH - grndRefl - soilDiff - tol - humTolF - ebTolMon - ebTolDay - ebTolHour - ebTolSubhr - AWTrigT - AWTrigSlr - AWTrigH - ANTolAbs - ANTolRel - bldgAzm - skymodel - skymodelLW - dhwModel - humMeth - dflExH - workDayMask - DT - DTbegDay - DTendDay - terrainClass - windSpeedMin - windF - radBeamF - radDiffF - verbose - dbgPrintMask - dbgPrintMaskC - ventAvail - auszTol - heatDsTDbO - heatDsTWbO - coolDsMo - coolDsDay - runSerial - runTitle - BinResFile - BinResFileHourly - BinResFileName - repHdrL - repHdrR - repCpl - repLpp - repTopM - repBotM - repTestPfx - run - clear - - -material Parent: Top - matThk - matCond - matCondT - matCondCT - matSpHt - matDens - matRNom - endMaterial - - -construction Parent: Top - conU - endConstruction - - -layer Parent: construction - lrThk - lrMat - lrFrmMat - lrFrmFrac - endLayer - - -glazeType Parent: Top - gtSHGC - gtSMSO - gtSMSC - gtFMult - gtPySHGC - gtDMSHGC - gtDMRBSol - gtU - gtUNFRC - gtModel - gtNGlz - gtExShd - gtInShd - gtDirtLoss - endGlazeType - - -zone Parent: Top - znModel - znArea - znVol - znFloorZ - znCeilingHt - znCAir - znHIRatio - znAzm - znSC - znTH - znTD - znTC - znQMxH - znQMxHRated - znQMxC - znQMxCRated - znRsys - znHcFrcF - znHcAirX - infAC - infELA - infShld - infStories - znEaveZ - znWindFLkg - xfanFOn - xfanVfDs - xfanPress - xfanEff - xfanShaftBhp - xfanElecPwr - xfanMtr - endZone - - -surface Parent: zone - sfType - sfArea - sfTilt - sfAzm - sfModel - sfDepthBG - sfCon - sfU - sfLThkF - sfInH - sfExH - sfExCnd - sfExT - sfExT - sfExAbs - sfExRf - sfInAbs - sfExEpsLW - sfInEpsLW - sfExHcModel - sfExHcLChar - sfExHcMult - sfExCTaDbAvgYr - sfExCTaDbAvg31 - sfExCTaDbAvg14 - sfExCTaDbAvg07 - sfExCTGrnd - sfExRConGrnd - sfInHcModel - sfInHcMult - sfAdjZn - sfGrndRefl - endSurface - - -window Parent: surface - wnArea - wnWidth - wnHeight - wnMult - wnGt - wnSHGC - wnFMult - wnUNFRC - wnModel - wnNGlz - wnExShd - wnInShd - wnDirtLoss - wnU - wnInH - wnExH - wnExEpsLW - wnInEpsLW - wnExHcModel - wnExHcLChar - wnExHcMult - wnInHcModel - wnInHcMult - wnSMSO - wnSMSC - wnGrndRefl - wnVfSkyDf - wnVfGrndDf - endWindow - - -sgdist Parent: window - sgSurf - sgSide - sgFSO - sgFSC - endSgdist - - -shade Parent: window - ohDepth - ohDistUp - ohExL - ohExR - ohFlap - lfDepth - lfTopUp - lfDistL - lfBotUp - rfDepth - rfTopUp - rfDistR - rfBotUp - endShade - - -door Parent: surface - drArea - drModel - drCon - drU - drLThkF - drInH - drExH - drExAbs - drInAbs - drExEpsLW - drInEpsLW - drExHcModel - drExHcLChar - drExHcMult - drInHcModel - drInHcMult - endDoor - - -perimeter Parent: zone - prLen - prF2 - endPerimeter - - -terminal Parent: zone - tuTLh - tuQMnLh - tuQMxLh - tuPriLh - tuLhNeedsFlow - tuhcType - tuhcCaptRat - tuhcHeatplant - tuhcMtr - tuTH - tuTC - tuVfMn - tuAh - tuVfMxH - tuVfMxC - tuVfDs - tuVfMxHC - tuOversize - tuPriH - tuPriC - tuSRLeak - tuSRLoss - tfanSched - tfanOffLeak - tfanType - tfanVfDs - tfanPress - tfanEff - tfanMtr - tfanCurvePy - endTerminal - - -gain Parent: zone - gnZone - gnPower - gnMeter - gnEndUse - gnFrLat - gnFrRad - gnFrZn - gnFrPl - gnFrRtn - gnDlFrPow - gnCtrlDHWSYS - gnCtrlDHWEndUse - endGain - - -izXfer Parent: Top - izZn1 - izZn2 - izHConst - izNVType - izALo - izAHi - izL1 - izL2 - izStairAngle - izHD - izNVEff - izCpr - izExp - izVfMin - izVfMax - izASEF - izLEF - izVfExhRat - izEATR - izFanVfDs - izFanPress - izFanEff - izFanShaftBhp - izFanElecPwr - izFanMtr - izFanEndUse - izFanCurvePy - endIzxfer - - -rsys Parent: Top - rsType - rsDesc - rsPerfMap - rsFanTy - rsFanMotTy - rsModeCtrl - rsElecMtr - rsFuelMtr - rsTdDesH - rsTdDesC - rsFxCapH - rsFxCapAuxH - rsFxCapC - rsAFUE - rsCapH - rsHSPF - rsCap47 - rsCOP47 - rsCap35 - rsCOP35 - rsCap17 - rsCOP17 - rsCdH - rsCapAuxH - rsCOPAuxH - rsASHPLockOutT - rsFanPwrH - rsSEER - rsEER - rsCapC - rsFChg - rsFSize - rsCdC - rsVFPerTon - rsFanPwrC - rsParElec - rsParFuel - rsRhIn - rsTdbOut - rsDSEH - rsDSEC - rsOAVType - rsOAVReliefZn - rsOAVTDbInlet - rsOAVTdiff - rsOAVVfDs - rsOAVVfMinF - rsOAVFanPwr - endRSYS - - -ductSeg Parent: rsys - dsTy - dsExArea - dsInArea - dsDiameter - dsLength - dsExCnd - dsAdjZn - dsExT - dsEpsLW - dsInsulR - dsInsulMat - dsLeakF - dsExH - endDuctSeg - - -dhwdayuse Parent: Top - wduMult - endDHWDAYUSE - - -dhwuse Parent: dhwdayuse - wuHWEndUse - wuStart - wuFlow - wuDuration - wuTemp - wuHotF - wuHeatRecEF - wuEventID - endDHWUSE - - -dhwmeter Parent: Top - endDHWMETER - - -dhwsys Parent: Top - wsCentralDHWSYS - wsLoadShareDHWSYS - wsCalcMode - wsMult - wsTInlet - wsUse - wsTUse - wsTSetpoint - wsDayUse - wsWHhwMtr - wsFXhwMtr - wsParElec - wsSDLM - wsDSM - wsSSF - wsWF - wsElecMtr - wsFuelMtr - endDHWSYS - - -dhwheater Parent: dhwsys - whMult - whType - whHeatSrc - whZone - whTEx - whASHPType - whASHPSrcZn - whASHPSrcT - whASHPResUse - whVol - whEF - whResHtPwr - whResTHPwr2 - whLDEF - whHPAF - whEff - whSBL - whPilotPwr - whParElec - whElecMtr - whFuelMtr - endDHWHEATER - - -dhwtank Parent: dhwsys - wtMult - wtUA - wtVol - wtInsulR - wtTEx - wtTTank - wtXLoss - endDHWTANK - - -dhwpump Parent: dhwsys - wpMult - wpElecMtr - wpPwr - endDHWPUMP - - -dhwloop Parent: dhwsys - wlMult - wlFlow - wlTIn1 - wlRunF - wlFUA - endDHWLOOP - - -dhwloopSeg Parent: dhwloop - wgTy - wgLength - wgSize - wgInsulK - wgInsulThk - wgExH - wgExT - wgFNoDraw - endDHWLOOPSEG - - -dhwloopBranch Parent: dhwloopSeg - wbMult - wbLength - wbSize - wbInsulK - wbInsulThk - wbExH - wbExT - wbFlow - wbFWaste - endDHWLOOPBRANCH - - -dhwloopPump Parent: dhwloop - wlpMult - wlpElecMtr - wlpPwr - endDHWLOOPPUMP - - -pvarray Parent: Top - pvElecMtr - pvEndUse - pvDCSysSize - pvModuleType - pvCoverRefrInd - pvTempCoeff - pvArrayType - pvTilt - pvAzm - pvGrndRefl - pvGCR - pvDCtoACRatio - pvInverterEff - pvSysLosses - pvUsePVWatts - endPVARRAY - - -airHandler Parent: Top - ahSched - fanOversize - sfanType - sfanVfDs - sfanVfMxF - sfanPress - sfanEff - sfanShaftBhp - sfanElecPwr - sfanMotEff - sfanMotPos - sfanCurvePy - sfanMtr - rfanType - rfanVfDs - rfanVfMxF - rfanPress - rfanEff - rfanShaftBhp - rfanElecPwr - rfanMotEff - rfanMotPos - rfanCurvePy - rfanMtr - cchCM - cchPMx - cchPMn - cchTMx - cchTMn - cchDT - cchTOn - cchTOff - cchMtr - coilOversize - ahhcType - ahhcSched - ahhcCaptRat - ahhcHeatplant - ahhcEffR - ahhcEirR - ahhcPyEi - ahhcStackEffect - ahhcMtr - ahhcAuxOn - ahhcAuxOnMtr - ahhcAuxOff - ahhcAuxOffMtr - ahhcAuxOnAtall - ahhcAuxOnAtallMtr - ahhcAuxFullOff - ahhcAuxFullOffMtr - ahpCap17 - ahpCap47 - ahpCap35 - ahpFd35Df - ahpCapIa - ahpSupRh - ahpTFrMn - ahpTFrMx - ahpTFrPk - ahpDfrFMn - ahpDfrFMx - ahpDfrCap - ahpDfrRh - ahpTOff - ahpTOn - ahpIn17 - ahpIn47 - ahpInIa - ahpCd - ahccSHR - ahccType - ahccSched - ahccCaptRat - ahccCapsRat - ahccK1 - ahccMinTEvap - ahccDsTDbCnd - ahccDsTDbEn - ahccDsTWbEn - ahccVfR - ahccVfRperTon - ahccEirR - ahccMinUnldPlr - ahccMinFsldPlr - pydxCaptT - pydxCaptF - pydxCaptFLim - pydxEirT - pydxEirUl - ahccCoolplant - ahccGpmDs - ahccNtuoDs - ahccNtuiDs - ahccBypass - ahFanCycles - ahccMtr - ahccAuxOn - ahccAuxOnMtr - ahccAuxOff - ahccAuxOffMtr - ahccAuxOnAtall - ahccAuxOnAtallMtr - ahccAuxFullOff - ahccAuxFullOffMtr - ahTsSp - ahTsMn - ahTsMx - ahTsRaMn - ahTsRaMx - ahTsDsH - ahTsDsC - ahCtu - ahWzCzns - ahCzCzns - oaMnCtrl - oaMnFrac - oaVfDsMn - oaEcoType - oaLimT - oaLimE - oaOaLeak - oaRaLeak - ahSOLeak - ahROLeak - ahSOLoss - ahROLoss - endAirhandler - - -meter Parent: Top - mtrRate - mtrDemandRate - endMeter - - -reportCol Parent: Top - colReport - colHead - colGap - colWid - colDec - colJust - colVal - endReportcol - - -exportCol Parent: Top - colExport - colHead - colWid - colDec - colJust - colVal - endExportcol - - -report Parent: Top - rpReportfile - rpZone - rpMeter - rpAh - rpDHWMeter - rpTu - rpType - rpFreq - rpDayBeg - rpDayEnd - rpBtuSf - rpCond - rpTitle - rpCpl - rpHeader - rpFooter - endReport - - -export Parent: Top - exExportfile - exZone - exMeter - exAh - exDHWMeter - exTu - exType - exFreq - exDayBeg - exDayEnd - exBtuSf - exCond - exTitle - exHeader - exFooter - endExport - - -reportfile Parent: Top - rfFileName - rfFileStat - rfPageFmt - endReportFile - - -exportfile Parent: Top - xfFileName - xfFileStat - endExportFile - - -importfile Parent: Top - imFileName - imTitle - imFreq - imHeader - imBinary - endImportFile - - -heatPlant Parent: Top - hpSched - hpPipeLossF - hpStage1 - hpStage2 - hpStage3 - hpStage4 - hpStage5 - hpStage6 - hpStage7 - endHeatplant - - -boiler Parent: heatPlant - blrCap - blrEffR - blrEirR - blrPyEi - blrMtr - blrpGpm - blrpHdLoss - blrpMotEff - blrpHydEff - blrpMtr - blrAuxOn - blrAuxOnMtr - blrAuxOff - blrAuxOffMtr - blrAuxOnAtall - blrAuxOnAtallMtr - blrAuxFullOff - blrAuxFullOffMtr - endBoiler - - -coolPlant Parent: Top - cpSched - cpTsSp - cpPipeLossF - cpTowerplant - cpStage1 - cpStage2 - cpStage3 - cpStage4 - cpStage5 - cpStage6 - cpStage7 - endCoolplant - - -chiller Parent: coolPlant - chCapDs - chTsDs - chTcndDs - chPyCapT - chCop - chEirDs - chPyEirT - chPyEirUl - chMinUnldPlr - chMinFsldPlr - chMotEff - chMtr - chppGpm - chppHdLoss - chppMotEff - chppHydEff - chppOvrunF - chppMtr - chcpGpm - chcpHdLoss - chcpMotEff - chcpHydEff - chcpMtr - chAuxOn - chAuxOnMtr - chAuxOff - chAuxOffMtr - chAuxOnAtall - chAuxOnAtallMtr - chAuxFullOff - chAuxFullOffMtr - endChiller - - -towerPlant Parent: Top - ctN - tpStg - tpTsSp - tpMtr - ctType - ctLoSpd - ctShaftBhp - ctMotEff - ctFcOne - ctFcLo - ctFcHi - ctFcVar - ctCapDs - ctVfDs - ctGpmDs - ctTDbODs - ctTWbODs - ctTwoDs - ctCapOd - ctVfOd - ctGpmOd - ctTDbOOd - ctTWbOOd - ctTwoOd - ctK - ctStkFlFr - ctBldn - ctDrft - ctTWm - endTowerplant - - -holiday Parent: Top - hdDateTrue - hdDateObs - hdOnMonday - hdCase - hdDow - hdMon - endHoliday diff --git a/doc/test/resources/dhwheater.md b/doc/test/resources/dhwheater.md deleted file mode 100644 index d01f99198..000000000 --- a/doc/test/resources/dhwheater.md +++ /dev/null @@ -1,246 +0,0 @@ -# DHWHEATER - -DHWHEATER constructs an object representing a domestic hot water heater (or several if identical). - -**whName** - -Optional name of water heater; give after the word “DHWHEATER” if desired. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**whMult=*integer*** - -Number of identical water heaters of this type. Any value $>1$ is equivalent to repeated entry of the same DHWHEATER. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - $>$ 0 1 No constant - -**whType=*choice*** - -Specifies type of water heater. - - --------------------- --------------------------------------- - SMALLSTORAGE A gas-fired storage water heater with - input of 75,000 Btuh or less, an - oil-fired storage water heater with - input of 105,000 Btuh or less, an - electric storage water heater with - input of 12 kW or less, or a heat pump - water heater rated at 24 amps or less. - - LARGESTORAGE Any storage water heater that is not - SMALLSTORAGE. - - SMALLINSTANTANEOUS A water heater that has an input rating - of at least 4,000 Btuh per gallon of - stored water. Small instantaneous water - heaters include: gas instantaneous - water heaters with an input of 200,000 - Btu per hour or less, oil instantaneous - water heaters with an input of 210,000 - Btu per hour or less, and electric - instantaneous water heaters with an - input of 12 kW or less. - - LARGEINSTANTANEOUS An instantaneous water heater that does - not conform to the definition of - SMALLINSTANTANEOUS, an indirect - fuel-fired water heater, or a hot water - supply boiler. - --------------------- --------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------- -------------- -------------- ----------------- - *Codes listed above* SMALLSTORAGE No constant - -**whHeatSrc=*choice*** - -Specifies heat source for water heater. - - ------------- --------------------------------------- - RESISTANCE Electric resistance heating element. - - ASHP Air source heat pump - - ASHPX Air source heat pump (detailed HPWH - model) - - FUEL Fuel-fired burner - ------------- --------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------- ------------- -------------- ----------------- - *Codes listed above* FUEL No constant - -**whVol=*float*** - -Specifies tank volume. Documentation only. Must be omitted or 0 for instantaneous whTypes. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - gal $\ge$ 0 0 No constant - -**whEF=*float*** - -Rated energy factor, used in modeling whType SMALLSTORAGE and SMALLINSTANTANEOUS. - - ----------------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - ---------- --------- ----------- -------------------- ----------------- - $>$ 0 .82 When whType = constant - SMALLSTORAGE and - whLDEF not - specified or - SMALLINSTANTANEOUS - - ----------------------------------------------------------------------- - -**whLDEF=*float*** - -Load-dependent energy factor, used in modeling whType SMALLSTORAGE. - - ------------------------------------------------------------------ - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- -------------- -------------- ---------------- - $>$ 0 Calculated via When whType = constant - DHWSYS PreRun SMALLSTORAGE - mechanism and PreRun not - used - - ------------------------------------------------------------------ - -**whZone=*znName*** - -Name of zone where water heater is located. Zone conditions are for tank heat loss calculations and default for whASHPSrcZn (see below). No effect unless whHeatSrc = ASHPX. whZone and whTEx cannot both be specified. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - name of a ZONE Not in zone No constant - -**whTEx=*float*** - -Water heater surround temperature. No effect unless whHeatSrc=ASHPX. whZone and whTEx cannot both be specified. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- --------------------------------------------------- -------------- ----------------- - ^o^F $\ge$ 0 whZone air temperature if specified, else 70 ^o^F No hourly - -**whASHPType=*choice*** - -Specifies type of air source heat pump, valid only if whHeatSrc=ASHPX. These choice are those supported by Ecotope HPWH model. - - ------------------ --------------------------------------- - Voltex60 - - Voltex80 - - GEGeospring - - BasicIntegrated Typical integrated HPWH - - ResTank Resistance-only water heater (no - compressor) - ------------------ --------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------- ------------- ---------------------- ----------------- - *Codes listed above* -- When whHeatSrc=ASHPX constant - -**whASHPSrcZn=*znName*** - -Name of zone that serves as heat source when whHeatSrc = ASHPX. Used for tank heat loss calculations and default for whASHPSrcZn. Illegal unless whHeatSrc = ASHPX. whASHPSrcZn and whASHPSrcT cannot both be specified. - - ----------------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability - **Range** ** - ----------- --------------- --------------- ------------- ------------- - name of a ZONE Same as whZone No constant - if whASHPSrcT - not specified. - If no zone is - specified by - input or - default, heat - extracted by - ASHP has no - effect. - ----------------------------------------------------------------------- - -**whASHPSrcT=*float*** - -ASHP source air temperature. Illegal unless whHeatSrc=ASHPX. whASHPSrcZn and whASHPSrcT cannot both be specified. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ----------------------------------------------------- -------------- ----------------- - ^o^F $\ge$ 0 whASHPZn air temperature if specified, else 70 ^o^F No hourly - -**whHPAF=*float*** - -Heat pump adjustment factor, used when modeling whType=SMALLSTORAGE and whHeatSrc=ASHP. This value should be derived according to App B Table B-6. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- ----------------------------------------------- ----------------- - $>$ 0 1 When whType=SMALLSTORAGE and whHeatSrc = ASHP constant - -**whEff=*float*** - -Water heating efficiency, used in modeling LARGESTORAGE and LARGEINSTANTANEOUS. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - 0 < whEff $\leq$ 1 .82 No constant - -**whSBL=*float*** - -Standby loss, used in modeling LARGESTORAGE - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - Btuh $\ge$ 0 0 No constant - -**whPilotPwr=*float*** - -Pilot light consumption, included in energy use of DHWHEATERs with whHeatSrc=FUEL. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - Btuh $\ge$ 0 0 No hourly - -**whParElec=*float*** - -Parasitic electricity power, included in energy use of all DHWHEATERs. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - W $\ge$ 0 0 No hourly - -whElecMtr=*mtrName* - -Name of METER object, if any, by which DHWHEATER electrical energy use is recorded (under end use DHW). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- --------------------------- -------------- ----------------- - *name of a METER* *Parent DHWSYS wsElecMtr* No constant - -**whFuelMtr =*mtrName*** - -Name of METER object, if any, by which DHWHEATER fuel energy use is recorded. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- --------------------------- -------------- ----------------- - *name of a METER* *Parent DHWSYS wsFuelMtr* No constant - -**endDHW** - -HeaterOptionally indicates the end of the DHWHEATER definition. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No - - diff --git a/doc/test/resources/dhwloop.md b/doc/test/resources/dhwloop.md deleted file mode 100644 index b67d567cb..000000000 --- a/doc/test/resources/dhwloop.md +++ /dev/null @@ -1,59 +0,0 @@ -# DHWLOOP - -DHWLOOP constructs one or more objects representing a domestic hot water circulation loop. The actual pipe runs in the DHWLOOP are specified by any number of DHWLOOPSEGs (see below). Circulation pumps are specified by DHWLOOPPUMPs (also below). - -**wlName** - -Optional name of loop; give after the word “DHWLOOP” if desired. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**wlMult=*integer*** - -Number of identical loops of this type. Any value $>1$ is equivalent to repeated entry of the same DHWLOOP (and all child objects). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - $>$ 0 1 No constant - -**wlFlow=*float*** - -Loop flow rate (when operating). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - gpm $\ge$ 0 6 No hourly - -**wlTIn1=*float*** - -Inlet temperature of first DHWLOOPSEG. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F $>$ 0 130 No hourly - -**wlRunF=*float*** - -Fraction of hour that loop circulation operates. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - -- $\ge$ 0 1 No hourly - -**wlFUA=*float*** - -DHWLOOPSEG pipe heat loss adjustment factor. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - -- $>$ 0 1 No constant - -**endDHWLoop** - -Optionally indicates the end of the DHWLOOP definition. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No diff --git a/doc/test/resources/dhwloopbranch.md b/doc/test/resources/dhwloopbranch.md deleted file mode 100644 index da63fac26..000000000 --- a/doc/test/resources/dhwloopbranch.md +++ /dev/null @@ -1,91 +0,0 @@ -# DHWLOOPBRANCH - -DHWLOOPBRANCH constructs one or more objects representing a branch pipe from the preceeding DHWLOOPSEG. A DHWLOOPSEG can have any number of DHWLOOPBRANCHs to represent pipe runs with differing sizes, insulation, or surrounding conditions. - -wbNameOptional name of segment; give after the word “DHWLOOPBRANCH” if desired. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**wbMult=*float*** - -Specifies the number of identical DHWLOOPBRANCHs. Note may be non-integer. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - -- $>$ 0 1 No constant - -**wbLength=*float*** - -Length of branch. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft $\ge$ 0 0 No constant - -**wbSize=*float*** - -Nominal size of pipe. CSE assumes the pipe outside diameter = size + 0.125 in. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - in $>$ 0 -- Yes constant - -**wbInsulK=*float*** - -Pipe insulation conductivity - - **Units** **Legal Range** **Default** **Required** **Variability** - ------------------ ----------------- ------------- -------------- ----------------- - Btuh-ft/ft^2^-^o^F $>$ 0 0.02167 No constant - -**wbInsulThk=*float*** - -Pipe insulation thickness - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - in $\ge$ 0 1 No constant - -**wbExH=*float*** - -Combined radiant/convective exterior surface conductance between insulation (or pipe if no insulation) and surround. - - **Units** **Legal Range** **Default** **Required** **Variability** - --------------- ----------------- ------------- -------------- ----------------- - Btuh/ft^2^-^o^F $>$ 0 1.5 No hourly - -**wbExT=*float*** - -Surrounding equivalent temperature. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F $>$ 0 70 No hourly - -**wbFlow=*float*** - -Branch flow rate during draw. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - gpm $\ge$ 0 2 No hourly - -**wgFWaste=*float*** - -Number of times during the hour when the branch volume is discarded. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - $\ge$ 0 0 No hourly - -**endDHWLoopBranch** - -Optionally indicates the end of the DHWLOOPBRANCH definition. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No - - diff --git a/doc/test/resources/dhwlooppump.md b/doc/test/resources/dhwlooppump.md deleted file mode 100644 index 14856758f..000000000 --- a/doc/test/resources/dhwlooppump.md +++ /dev/null @@ -1,45 +0,0 @@ -# DHWLOOPPUMP - -DHWLOOPPUMP constructs an object representing a pump serving part a DHWLOOP. The model is identical to DHWPUMP *except* that that the electricity use calculation reflects wlRunF of the parent DHWLOOP. - -**wlpName** - -Optional name of pump; give after the word “DHWLOOPPUMP” if desired. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**wlpMult=*integer*** - -Number of identical pumps of this type. Any value $>1$ is equivalent to repeated entry of the same DHWPUMP. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - $>$ 0 1 No constant - -**wlpPwr=*float*** - -Pump power. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - W $>$ 0 0 No hourly - -**wlpElecMtr=*mtrName*** - -Name of METER object, if any, to which DHWLOOPPUMP electrical energy use is recorded (under end use DHW). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- --------------------------- -------------- ----------------- - *name of a METER* *Parent DHWSYS wsElecMtr* No constant - -**endDHWPump** - -Optionally indicates the end of the DHWPUMP definition. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No - - diff --git a/doc/test/resources/dhwloopseg.md b/doc/test/resources/dhwloopseg.md deleted file mode 100644 index b89b20090..000000000 --- a/doc/test/resources/dhwloopseg.md +++ /dev/null @@ -1,95 +0,0 @@ -# DHWLOOPSEG - -DHWLOOPSEG constructs one or more objects representing a segment of the preceeding DHWLOOP. A DHWLOOP can have any number of DHWLOOPSEGs to represent the segments of the loop with possibly differing sizes, insulation, or surrounding conditions. - -**wgName** - -Optional name of segment; give after the word “DHWLOOPSEG” if desired. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**wgTy=*choice*** - -Specifies the type of segment - - --------- --------------------------------------- - SUPPLY Indicates a supply segment (flow is sum - of circulation and draw flow, child - DHWLOOPBRANCHs permitted). - - RETURN Indicates a return segment (flow is - only due to circulation, child - DHWLOOPBRANCHs not allowed) - --------- --------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - -- -- Yes constant - -**wgLength=*float*** - -Length of segment. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft $\ge$ 0 0 No constant - -**wgSize=*float*** - -Nominal size of pipe. CSE assumes the pipe outside diameter = size + 0.125 in. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - in $>$ 0 1 Yes constant - -**wgInsulK=*float*** - -Pipe insulation conductivity - - **Units** **Legal Range** **Default** **Required** **Variability** - ------------------ ----------------- ------------- -------------- ----------------- - Btuh-ft/ft^2^-^o^F $>$ 0 0.02167 No constant - -**wgInsulThk=*float*** - -Pipe insulation thickness - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - in $\ge$ 0 1 No constant - -**wgExH=*float*** - -Combined radiant/convective exterior surface conductance between insulation (or pipe if no insulation) and surround. - - **Units** **Legal Range** **Default** **Required** **Variability** - --------------- ----------------- ------------- -------------- ----------------- - Btuh/ft^2^-^o^F $>$ 0 1.5 No hourly - -**wgExT=*float*** - -Surrounding equivalent temperature. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F $>$ 0 70 No hourly - -**wgFNoDraw=*float*** - -Fraction of hour when no draw occurs. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F $>$ 0 70 No hourly - -**endDHWLoopSeg** - -Optionally indicates the end of the DHWLOOPSEG definition. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No - - diff --git a/doc/test/resources/dhwpump.md b/doc/test/resources/dhwpump.md deleted file mode 100644 index 508bc230b..000000000 --- a/doc/test/resources/dhwpump.md +++ /dev/null @@ -1,45 +0,0 @@ -# DHWPUMP - -DHWPUMP constructs an object representing a domestic hot water circulation pump (or more than one if identical). - -**wpName** - -Optional name of pump; give after the word “DHWPUMP” if desired. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**wpMult=*integer*** - -Number of identical pumps of this type. Any value $>1$ is equivalent to repeated entry of the same DHWPUMP. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - $>$ 0 1 No constant - -**wpPwr=*float*** - -Pump power. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - W $>$ 0 0 No hourly - -**wpElecMtr=*mtrName*** - -Name of METER object, if any, to which DHWPUMP electrical energy use is recorded (under end use DHW). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- --------------------------- -------------- ----------------- - *name of a METER* *Parent DHWSYS wsElecMtr* No constant - -**endDHWPump** - -Optionally indicates the end of the DHWPUMP definition. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No - - diff --git a/doc/test/resources/dhwsys.md b/doc/test/resources/dhwsys.md deleted file mode 100644 index 32e3007a8..000000000 --- a/doc/test/resources/dhwsys.md +++ /dev/null @@ -1,139 +0,0 @@ -# DHWSYS - -DHWSYS constructs an object representing a domestic hot water system consisting of one or more hot water heaters, storage tanks, loops, and pumps (DHWHEATER, DHWTANK, DHWLOOP, and DHWPUMP, see below) and a distribution system characterized by loss parameters. This model is based on Appendix B of the 2016 Residential ACM Reference Manual. This version is preliminary, revisions are expected. - -The parent-child structure of DHWSYS components is determined by input order. For example, DHWHEATERs belong to DHWSYS that preceeds them in the input file. The following hierarchy shows the relationship among components. Note that any of the commands can be repeated any number of times. - -- DHWSYS - - DHWHEATER - - DHWTANK - - DHWPUMP - - DHWLOOP - - DHWLOOPPUMP - - DHWLOOPSEG - - DHWLOOPBRANCH - -No actual controls are modeled. For example, if several DHWHEATERs are included in a DHWSYS, an equal fraction of the required hot water is assumed to be produced by each heater, even if they are different types or sizes. Thus a DHWSYS is in some ways just a collection of components, rather than a physically realistic system. - -**wsName** - -Optional name of system; give after the word “DHWSYS” if desired. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**wsMult=*integer*** - -Number of identical systems of this type (including all child objects). Any value $> 1$ is equivalent to repeated entry of the same DHWSYSs. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - $>$ 0 1 No constant - -**wsTInlet=*float*** - -Specifies cold (mains) water temperature supplied to DHWHEATERs in this DHWSYS. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------------ -------------- ----------------- - ^o^F $>$ 32 ^o^F Mains temp from weather file No hourly - -**wsUse=*float*** - -Specifies hourly hot water use (at the point of use) - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - gal $\ge$ 0 0 No hourly - -**wsTUse=*float*** - -Specifies hot water use temperature (at the point of use) - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F $>$ 32 ^o^F 130 No hourly - -**wsParElec=*float*** - -Specifies electrical parasitic power to represent recirculation pumps or other system-level electrical devices. Calculated energy use is accumulated to the METER specified by wsElecMtr (end use DHW). No other effect, such as heat gain to surroundings, is modeled. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - W $>$ 0 0 No hourly - -**wsSDLM=*float*** - -Specifies the standard distribution loss multiplier. See App B Eqn 4. To duplicate CEC 2016 methods, this value should be set according to the value derived with App B Eqn 5. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - $>$ 0 1 No constant - -**wsDSM=*float*** - -Specifies the distribution system multiplier. See App B Eqn 4. To duplicate CEC 2016 methods, wsDSM should be set to the appropriate value from App B Table B-2. Note the NCF (non-compliance factor) included in App B Eqn 4 is *not* a CSE input and thus must be applied externally to wsDSM. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - $>$ 0 1 No constant - -**wsSSF=*float*** - -Specifies the solar savings fraction. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - $\ge$ 0 0 No hourly - -**wsHRDL=*float*** - -Specifies the hourly recirculation distribution loss. TODO: the implementation will be expanded to evaluate HRDL during the simulation to allow use of hourly values. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - $\ge$ 0 0 No constant - -**wsElecMtr=*mtrName*** - -Name of METER object, if any, by which DHWSYS\* electrical energy use is recorded (under end use DHW). In addition, wsElecMtr provides the default whElectMtr selection for all DHWHEATERs and DHWPUMPs in this DHWSYS. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------- -------------- ----------------- - *name of a METER* *not recorded* No constant - -**wsFuelMtr =*mtrName*** - -Name of METER object, if any, by which DHWSYS’s fuel energy use is reco\*rded (under end use DWH). DHWSYS fuel use is usually (always?) 0, so the primary use of this input is to specify the default whFuelMtr choice for DHWHEATERs in this DHWSYS. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------- -------------- ----------------- - *name of a METER* *not recorded* No constant - -**wsCalcMode=*choice*** - - ----------- --------------------------------------- - PRERUN Calculate hot water heating load; at - end of run, derive whLDEF for all child - DHWHEATERs for which that value is - required and defaulted. This procedure - emulates methods used in the T24DHW.DLL - implementation of CEC DHW procedures. - - SIMULATE Perform full modeling calculations - ----------- --------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------- ------------- -------------- ----------------- - *Codes listed above* SIMULATE No - -**endDHWSys** - -Optionally indicates the end of the DHWSYS definition. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No - - diff --git a/doc/test/resources/dhwtank.md b/doc/test/resources/dhwtank.md deleted file mode 100644 index 2f84719e1..000000000 --- a/doc/test/resources/dhwtank.md +++ /dev/null @@ -1,81 +0,0 @@ -# DHWTANK - -DHWTANK constructs an object representing one or more unfired water storage tanks in a DHWSYS. DHWTANK heat losses contribute to the water heating load. - -**wtName** - -Optional name of tank; give after the word “DHWTANK” if desired. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**wtMult=*integer*** - -Number of identical tanks of this type. Any value $>1$ is equivalent to repeated entry of the same DHWTANK. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - $>$ 0 1 No constant - -Tank heat loss is calculated hourly (note that default heat loss is 0) -- - -$$\text{qLoss} = \text{wtMult} \cdot (\text{wtUA} \cdot (\text{wtTTank} - \text{wtTEx}) + \text{wtXLoss})$$ - -**wtUA=*float*** - -Tank heat loss coefficient. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- --------------------------------- -------------- ----------------- - Btuh/^o^F $\ge$ 0 Derived from wtVol and wtInsulR No constant - -**wtVol=*float*** - -Specifies tank volume. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - gal $\ge$ 0 0 No constant - -**wtInsulR=*float*** - -Specifies total tank insulation resistance. The input value should represent the total resistance from the water to the surroundings, including both built-in insulation and additional exterior wrap insulation. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------------- ----------------- ------------- -------------- ----------------- - ft^2^-^o^F/Btuh $\ge$ .01 0 No constant - -**wtTEx=*float*** - -Tank surround temperature. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F $\ge$ 0 70 No hourly - -**wtTTank=*float*** - -Tank average water temperature. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------- -------------- ----------------- - ^o^F $>$ 32 ^o^F Parent DHWSYSTEM wsTUse No hourly - -**wtXLoss=*float*** - -Additional tank heat loss. To duplicate CEC 2016 procedures, this value should be used to specify the fitting loss of 61.4 Btuh. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - Btuh (any) 0 No hourly - -**endDHWTank** - -Optionally indicates the end of the DHWTANK definition. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No - - diff --git a/doc/test/resources/door.md b/doc/test/resources/door.md deleted file mode 100644 index 487913efb..000000000 --- a/doc/test/resources/door.md +++ /dev/null @@ -1,148 +0,0 @@ -# DOOR - -DOOR constructs a subobject belonging to the current SURFACE. The azimuth, tilt, ground reflectivity and exterior conditions associated with the door are the same as those of the owning surface, although the exterior surface conductance and the exterior absorptivity can be altered. - -**drName** - -Name of door. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**drArea=*float*** - -Overall area of door. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft^2^ *x* $>$ 0 *none* Yes constant - -**drModel=*choice*** - -Provides user control over how program models this door: - - ----------------------------------- ----------------------------------- - QUICK Surface is modeled using a simple - conductance. Heat capacity effects - are ignored. Either drCon or drU - (next) can be specified. - - DELAYED, DELAYED\_HOUR, Surface is modeled using a - DELAYED\_SUBOUR multi-layer finite difference - technique which represents heat - capacity effects. If the time - constant of the door is too short - to accurately simulate, a warning - message is issued and the Quick - model is used. drCon (next) must be - specified -- the program cannot use - the finite difference model if drU - rather than drCon is specified. - - AUTO Program selects Quick or - appropriate Delayed automatically - according to the time constant of - the surface (if drU is specified, - Quick is selected). - - FORWARD\_DIFFERENCE Selects the forward difference - model (used with short time steps - and the CZM zone model) - ----------------------------------- ----------------------------------- - - --------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - ------ ------------ ----------- ------------ --------------- - QUICK, AUTO No constant - DELAYED - DELAYED - \_HOUR, - DELAYED - \_SUBOUR, - AUTO, - FORWARD - \_DIFFERENCE - - --------------------------------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------- ------------- -------------- ----------------- - QUICK, DELAYED, AUTO Auto No constant - -Either drCon or drU must be specified, but not both. - -**drCon=*conName*** - -Name of construction for door. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------------- ------------- -------------------- ----------------- - name of a *CONSTRUCTION* *None* unless *drU* given constant - -**drU=*float*** - -Door U-value, NOT including surface (air film) conductances. Allows direct entry of U-value, without defining a CONSTRUCTION, when no heat capacity effects are to be modeled. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------------- ----------------- ------------------------- ---------------------- ----------------- - Btuh/ft^2^-^o^F *x* $>$ 0 Determined from *drCon* if *drCon* not given constant - -**drInH=*float*** - -Door interior surface (air film) conductance. Ignored if drModel = Forward\_Difference - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------------- ----------------- ------------------------ -------------- ----------------- - Btuh/ft^2^-^o^F *x* $>$ 0 same as owning surface No constant - -**drExH=*float*** - -Door exterior surface (air film) conductance. Ignored if drModel = Forward\_Difference - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------------- ----------------- ------------------------ -------------- ----------------- - Btuh/ft^2^-^o^F *x* $>$ 0 same as owning surface No constant - -**drExAbs=*float*** - -Door exterior solar absorptivity. Applicable only if sfExCon of owning surface is AMBIENT or SPECIFIEDT. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------------- ----------------- ------------------------ -------------- ----------------- - Btuh/ft^2^-^o^F *x* $>$ 0 same as owning surface No monthly-hourly - -**drInAbs=*float*** - -Door interior solar absorptivity. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - (none) 0 $\le$ *x* $\le$ 1 0.5 No monthly-hourly - -**drExEpsLW=*float*** - -Door exterior long wave (thermal) emittance. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - (none) 0 $\le$ *x* $\le$ 1 0.9 No constant - -**drInEpsLW=*float*** - -Door interior long wave (thermal) emittance. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - (none) 0 $\le$ *x* $\le$ 1 0.9 No constant - -**endDoor** - -Indicates the end of the door definition. Alternatively, the end of the door definition can be indicated by the declaration of another object or by END. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/ductseg.md b/doc/test/resources/ductseg.md deleted file mode 100644 index 3f8fc7607..000000000 --- a/doc/test/resources/ductseg.md +++ /dev/null @@ -1,149 +0,0 @@ -# DUCTSEG - -DUCTSEG defines a duct segment. Each RSYS has at most one return duct segment and at most one supply duct segment. That is, DUCTSEG input may be completely omitted to eliminate duct losses. - -**dsTy=*choice*** - -Duct segment type. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - SUPPLY, RETURN Yes constant - -The surface area of a DUCTSEG depends on its shape. 0 surface area is legal (leakage only). DUCTSEG shape is modeled either as flat or round -- - -- dsExArea specified: Flat. Interior and exterior areas are assumed to be equal (duct surfaces are flat and corner effects are neglected). -- dsExArea *not* specified: Round. Any two of dsInArea, dsDiameter, and dsLength must be given. Insulation thickness is derived from dsInsulR and dsInsulMat and this thickness is used to calculate the exterior surface area. Overall inside-to-outside conductance is also calculated including suitable adjustment for curvature. - -**dsExArea=*float*** - -Duct segment surface area at outside face of insulation for flat duct shape, see above. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft^2^ *x* $\ge$ 0 No constant - -**dsInArea=*float*** - -Duct segment inside surface area (at duct wall, duct wall thickness assumed negligible) for round shaped duct. - - ----------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ----------- ------------- ------------- --------------- - ft^2^ *x* $\ge$ 0 Derived from (see above re constant - dsDiameter duct shape) - and dsLength - - ----------------------------------------------------------------- - -**dsDiameter=*float*** - -Duct segment round duct diameter (duct wall thickness assumed negligible) - - ---------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ----------- ------------ ------------- --------------- - ft *x* $\ge$ 0 Derived from (see above re constant - dsInArea and duct shape) - dsLength - - ---------------------------------------------------------------- - -**dsLength=*float*** - -Duct segment length. - - ---------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ----------- ------------ ------------- --------------- - ft *x* $\ge$ 0 Derived from (see above re constant - dsInArea and duct shape) - dsDiameter - - ---------------------------------------------------------------- - -**dsExCnd=*choice*** - -Conditions surrounding duct segment. - - ------------------------------------------------------------------ - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ----------- ------------- ------------- --------------- - ADIABATIC, ADJZN No constant - AMBIENT, - SPECIFIEDT, - ADJZN - - ------------------------------------------------------------------ - -**dsAdjZn=*znName*** - -Name of zone surrounding duct segment; used only when dsExCon is ADJZN. Can be the same as a zone served by the RSYS owning the duct segment. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------ ------------- --------------------------------- ----------------- - name of a *ZONE* *none* Required when *dsExCon* = ADJZN constant - -**dsEpsLW=*float*** - -Exposed (i.e. insulation) outside surface exterior long wave (thermal) emittance. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - (none) 0 $\le$ *x* $\le$ 1 0.9 No constant - -**dsExT=*float*** - -Air dry-bulb temperature surrounding duct segment. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- ------------------------------------ ----------------- - ^o^F *unrestricted* *none* Required if *sfExCon* = SPECIFIEDT hourly - -Duct insulation is modeled as a pure conductance (no mass). - -**dsInsulR=*float*** - -Insulation thermal resistance *not including*surface conductances. dsInsulR and dsInsulMat are used to calculate insulation thickness (see below). - - **Units** **Legal Range** **Default** **Required** **Variability** - ------------------ ----------------- ------------- -------------- ----------------- - ft^2^-F-hr / Btu *x* $\ge$ 0 0 No constant - -**dsInsulMat=*matName*** - -Name of insulation MATERIAL. The conductivity of this material at 70 ^o^F is combined with dsInsulR to derive the duct insulation thickness. If omitted, a typical fiberglass material is assumed having conductivity of 0.025 Btu/hr-ft^2^-F at 70 ^o^F and a conductivity coefficient of .00418 1/F (see MATERIAL). In addition, insulation conductivity is adjusted during the simulation in response its average temperature. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------- ------------- -------------- ----------------- - name of a *MATERIAL* fiberglass No constant - -**dsLeakF=*float*** - -Duct leakage. Return duct leakage is modeled as if it all occurs at the segment inlet. Supply duct leakage is modeled as if it all occurs at the outlet. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - 0 $<$ x $\le$ 1 No constant - -**dsExH=*float*** - -Outside (exposed) surface convection coefficient. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------------- ----------------- ------------- -------------- ----------------- - Btuh/ft^2^-^o^F *x* $>$ 0 .54 No subhourly - -**endDuctSeg** - -Optionally indicates the end of the DUCTSEG definition. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No - - diff --git a/doc/test/resources/export.md b/doc/test/resources/export.md deleted file mode 100644 index 917db1e2d..000000000 --- a/doc/test/resources/export.md +++ /dev/null @@ -1,160 +0,0 @@ -# EXPORT - -Exports contain the same information as CSE reports, but in a "comma-quote" format intended for reading into a spreadsheet or other program for further processing, plotting, special print formatting, etc. - -No exports are generated by default; each desired export must be specified with an EXPORT object. - -Each row of an export contains several values, separated by commas, with quotes around string values. The row is terminated with a carriage return/line feed character pair. The first fields of the row identify the data. Multiple fields are used as necessary to identify the data. For example, the rows of an hourly ZEB export begin with the month, day of month, and hour of day. In contrast, reports, being subject to a width limitation, use only a single column of each row to identify the data; additional identification is put in the header. For example, an hourly ZEB Report shows the hour in a column and the day and month in the header; the header is repeated at the start of each day. The header of an export is never repeated. - -Depending on your application, if you specify multiple exports, you may need to place each in a separate file. Generate these files with EXPORTFILE, preceding section. You may also need to suppress the export header and/or footer, with *exHeader* and/or *exFooter*, described in this section. - -Input for EXPORTs is similar to input for REPORTs; refer to the REPORT description in Section 5.25 for further discussion of the members shown here. - -**exName** - -Name of export. Give after the word EXPORT. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**exExportfile=*fname*** - -Name of export file to which current export will be written. If omitted, if EXPORT is within an EXPORTFILE object, report will be written to that export file, or else to the automatically-supplied EXPORTFILE "Primary", which by default uses the name of the input file with the extension .csv. - - ----------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ------------ ------------- ------------ --------------- - name of an current No constant - *EXPORTFILE* *EXPORTFILE*, - if any, else - "Primary" - - ----------------------------------------------------------------- - -**exType=*choice*** - -Choice indicating export type. See descriptions in Section 5.22, REPORT. While not actually disallowed, use of *exType* = ERR, LOG, INP, or ZDD is unexpected. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------------------- ------------- -------------- ----------------- - ZEB, ZST, MTR, AH, UDT, or SUM Yes constant - -**exFreq=*choice*** - -Export Frequency: specifies interval for generating rows of export data: - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------------------------------- ------------- -------------- ----------------- - YEAR, MONTH, DAY, HOUR, HOURANDSUB, SUBHOUR Yes constant - -**exDayBeg=*date*** - -Initial day of export. Exports for which *exFreq* = YEAR do not allow specification of *exDayBeg* and *exDayEnd*; for MONTH exports, these members are optional and default to include the entire run; for DAY and shorter-interval exports, *exDayBeg* is required and *exDayEnd* defaults to *exDayBeg*. - - ------------------------------------------------------------ - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- ----------- ------------ --------------- - *date* first day Required for constant - of *exTypes* - simulation ZEB, ZST, - if *exFreq* MTR, AH, - = MONTH and UDT if - *exFreq* is - DAY, HOUR, - HOURANDSUB, - or SUBHOUR - - ------------------------------------------------------------ - -**exDayEnd=*date*** - -Final day of export period, except for YEAR exports. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------------------------------------------ -------------- ----------------- - *date* last day of simulation if *exFreq*= MONTH, else *exDayBeg* No constant - -**exZone=*znName*** - -Name of ZONE for which a ZEB, ZST, or ZDD export is being requested; ALL and SUM are also allowed except with *exType* = ZST. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------------- ------------- ------------------------------------------- ----------------- - name of a *ZONE*, ALL, SUM Required for *exTypes* ZDD, ZEB, and ZST. constant - -**exMeter=*mtrName*** - -Specifies meter(s) whose data is to be exported, for *exType*=MTR. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------------- ------------- --------------------------- ----------------- - name of a *METER*, ALL, SUM Required for *exType*=MTR constant - -**exAh=ah*Name*** - -Specifies air handler(s) to be exported, for *exType*=AH. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------------------- ------------- -------------------------- ----------------- - name of an *AIRHANDLER*, ALL, SUM Required for *exType*=AH constant - -**exBtuSf=*float*** - -Scale factor used for exported energy values. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------------------------------- -------------- ----------------- - *any multiple of ten* 1,000,000: energy exported in MBtu. No constant - -**exCond=*expression*** - -Conditional exporting flag. If given, export rows are generated only when value of expression is non-0. Allowed with *exTypes* ZEB, ZST, MTR, AH, and UDT. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------------- ----------------------- -------------- -------------------------- - *any numeric expression* 1 (exporting enabled) No subhour /end of interval - -**exTitle=*string*** - -Title for use in export header of User-Defined export. Disallowed if *exType* is not UDT. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ----------------------- -------------- ----------------- - "User-defined Export" No constant - -**exHeader=*choice*** - -Use NO to suppress the export header which gives the export type, zone, meter, or air handler being exported, time interval, column headings, etc. You might do this if the export is to be subsequently imported to a program that is confused by the header information. - -If not suppressed, the export header shows, in four lines: - -*runTitle* and *runSerial* (see Section 5.1);the run date and timethe export type ("Energy Balance", "Statistics", etc., or *exTitle* if given)and frequency ("year", "day", etc.)a list of field names in the order they will be shown in the data rows("Mon", "Day", "Tair", etc.) - -The *specific* month, day, etc. is NOT shown in the export header (as it is shown in the report header), because it is shown in each export row. - -The field names may be used by a program reading the export to identify the data in the rows which follow; if the program does this, it will not require modification when fields are added to or rearranged in the export in a future version of CSE. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - YES, NO YES No constant - -**exFooter=*choice*** - -Use NO to suppress the blank line otherwise output as an export "footer". (Exports do not receive the total lines that most reports receive as footers.) - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - YES, NO YES No constant - -**endExport** - -Optionally indicates the end of the export definition. Alternatively, the end of the export definition can be indicated by END or by beginning another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/exportcol.md b/doc/test/resources/exportcol.md deleted file mode 100644 index 3d0bb6f51..000000000 --- a/doc/test/resources/exportcol.md +++ /dev/null @@ -1,65 +0,0 @@ -# EXPORTCOL - -Each EXPORTCOL defines a single datum of a User Defined Table (UDT) export; EXPORTCOLs are not used with other export types. - -Use as many EXPORTCOLs as there are values to be shown in each row of the user-defined export. The values will appear in the order defined in each data row output. Be sure to include values needed to identify the data, such as the month, day, and hour, as appropriate -- these are NOT automatically supplied in user-defined exports. - -EXPORTCOL members are similar to the corresponding REPORTCOL members. See Section 5.265.1.5 for further discussion. - -**colName** - -Name of EXPORTCOL. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**colExport=*exName*** - -Name of export to which this column belongs. If the EXPORTCOL is given within an EXPORT object, then *colExport* defaults to that export. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- -------------------------- ----------------------- ----------------- - name of an *EXPORT* *current export, if any* Unless in an *EXPORT* constant - -**colVal=*expression*** - -Value to show in this position in each row of export. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------------------ ------------- -------------- ----------------------- - *any numeric or string expression* Yes subhour /end interval - -**colHead=*string*** - -Text used for field name in export header. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------------- -------------- ----------------- - *colName* or blank No constant - -**colWid=*int*** - -Maximum width. Leading and trailing spaces and non-significant zeroes are removed from export data to save file space. Specifying a *colWid* less than the default may reduce the maximum number of significant digits output. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $\ge$ 0 13 No constant - -**colDec=*int*** - -Number of digits after decimal point. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------- -------------- ----------------- - *x* $\ge$ 0 *flexible format* No constant - -**endExportCol** - -Optionally indicates the end of the EXPORTCOL. Alternatively, the end of the definition can be indicated by END or by beginning another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/exportfile.md b/doc/test/resources/exportfile.md deleted file mode 100644 index 76e27899e..000000000 --- a/doc/test/resources/exportfile.md +++ /dev/null @@ -1,52 +0,0 @@ -# EXPORTFILE - -EXPORTFILE allows optional specification of different or additional files to receive CSE EXPORTs. - -EXPORTs contain the same information as reports, but formatted for reading by other programs rather than by people. By default, CSE generates no exports. Exports are specified via the EXPORT object, described in Section 5.28 (next). As for REPORTs, CSE automatically supplies a primary export file; it has the same name and path as the input file, and extension .csv. - -Input for EXPORTFILEs and EXPORTs is similar to that for REPORTFILEs and REPORTs, except that there is no page formatting. Refer to their preceding descriptions (Sections 5.24 and 5.25) for more additional discussion. - -**xfName** - -Name of EXPORTFILE object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* No constant - -**xfFileName=*string*** - -path name of file to be written. If no path is specified, the file is written in the current directory. If no extension is specified, .csv is used. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------------------------ ------------- -------------- ----------------- - *file name, path and extension optional* No constant - -**xfFileStat=*choice*** - -What CSE should do if file *xfFileName* already exists: - - ----------------- ---------------------------------------------------- - OVERWRITE Overwrite pre-existing file. - - NEW Issue error message if file exists. - - APPEND Append new output to present contents of existing - file. - ----------------- ---------------------------------------------------- - -If the specified file does not exist, it is created and *xfFileStat* has no effect. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------ ------------- -------------- ----------------- - OVERWRITE, NEW, APPEND OVERWRITE No constant - -**endExportFile** - -Optionally indicates the end of the export file definition. Alternatively, the end of the Export file definition can be indicated by END or by beginning another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/gain.md b/doc/test/resources/gain.md deleted file mode 100644 index 75ddb7c4d..000000000 --- a/doc/test/resources/gain.md +++ /dev/null @@ -1,123 +0,0 @@ -# GAIN - -A GAIN object adds sensible and/or latent heat to the ZONE, and/or adds arbitrary energy use to a METER. GAINs are subobjects of ZONEs and are normally given within the input for their ZONE (also see ALTER). As many GAINs as desired (or none) may be given for each ZONE. - -Each gain has an amount of power (gnPower), which may optionally be accumulated to a METER (gnMeter). The power may be distributed to the zone, plenum, or return as sensible heat with an optionl fraction radiant, or to the zone as latent heat (moisture addition), or not. - -**gnName** - -Name of gain; follows the word GAIN if given. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**gnPower=*float*** - -Rate of heat addition to zone. Negative gnPower values may be used to represent heat removal. Expressions containing functions are commonly used with this member to schedule the gain power on a daily and/or hourly basis. Refer to the functions section in Section 4 for details and examples. - -All gains, including electrical, are specified in Btuh units. But note that internal gain and meter reporting is in MBtu (millions of Btu) by default even though input is in Btuh. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ------------- -------------- ----------------- - Btuh *no restrictions* *none* Yes hourly - -**gnMeter=*choice*** - -Name of meter by which this GAIN's gnPower is recorded. If omitted, gain is assigned to no meter and energy use is not accounted in CSE simulation reports; thus, gnMeter should only be omitted for "free" energy sources. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - meter name *none* No constant - -**gnEndUse=*choice*** - -Meter end use to which the GAIN's energy use should be accumulated. - - ------- ------------------------------------------------------------- - Clg Cooling - Htg Heating (includes heat pump compressor) - HPHTG Heat pump backup heat - DHW Domestic (service) hot water - DHWBU Domestic (service) hot water heating backup (HPWH resistance) - FANC Fans, AC and cooling ventilation - FANH Fans, heating - FANV Fans, IAQ venting - FAN Fans, other purposes - AUX HVAC auxiliaries such as pumps - PROC Process - LIT Lighting - RCP Receptacles - EXT Exterior lighting - REFR Refrigeration - DISH Dishwashing - DRY Clothes drying - WASH Clothes washing - COOK Cooking - USER1 User-defined category 1 - USER2 User-defined category 2 - PV Photovoltaic power generation - ------- ------------------------------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------- ------------- ------------------------------ ----------------- - *Codes listed above* *none* Required if gnMeter is given constant - -The gnFrZn, gnFrPl, and gnFrRtn members allow you to allocate the gain among the zone, the zone's plenum, and the zone's return air flow. Values that total to more than 1.0 constitute an error. If they total less than 1, the unallocated portion of the gain is recorded by the meter (if specified) but not transferred into the building. By default, all of the gain not directed to the return or plenum goes to the zone. - -**gnFrZn=*float*** - -Fraction of gain going to zone. gnFrLat (below) gives portion of this gain that is latent, if any; the remainder is sensible. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------------------ ---------------------------------- -------------- ----------------- - gnFrZn + gnFrPl + gnFrRtn $\leq$ 1 *1 - gnFrLat - gnFrPl - gnFrRtn* No hourly - -**gnFrPl=*float*** - -Fraction of gain going to plenum. Plenums are not implementented as of August, 2012. Any gain directed to the plenum is discarded. - -**gnFrRtn=*float*** - -Fraction of gain going to return. The return fraction model is not implemented as of August, 2012. Any gain directed to the return is discarded. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------------------ ------------- -------------- ----------------- - gnFrZn + gnFrPl + gnFrRtn $\leq$ 1 0. No hourly - -The gain to the zone may be further divided into convective sensible, radiant sensible and latent heat via the gnFrRad and gnFrLat members; the plenum and return gains are assumed all convective sensible. - - -**Gain Modeling in CR zone** - -In the CNE zone mode, the radiant internal gain is distributed to the surfaces in the zone, rather than going directly to the zone "air" heat capacity (znCAir). A simple model is used -- all surfaces are assumed to be opaque and to have the same (infrared) absorptivity -- even windows. Along with the assumption that the zone is spherical (implicit in the current treatment of solar gains), this allows distribution of gains to surfaces in proportion to their area, without any absorptivity or transmissivity calculations. The gain for windows and quick-model surfaces is assigned to the znCAir, except for the portion which conducts through the surface to the other side rather than through the surface film to the adjacent zone air; the gain to massive (delayed-model) surfaces is assigned to the side of surface in the zone with the gain. - -**Gain Modeling in CNE zones** - -In the CNE zone mode, the radiant internal gain is distributed to the surfaces in the zone, rather than going directly to the zone "air" heat capacity (znCAir). A simple model is used -- all surfaces are assumed to be opaque and to have the same (infrared) absorptivity -- even windows. Along with the assumption that the zone is spherical (implicit in the current treatment of solar gains), this allows distribution of gains to surfaces in proportion to their area, without any absorptivity or transmissivity calculations. The gain for windows and quick-model surfaces is assigned to the znCAir, except for the portion which conducts through the surface to the other side rather than through the surface film to the adjacent zone air; the gain to massive (delayed-model) surfaces is assigned to the side of surface in the zone with the gain. - -Radiant internal gains are included in the IgnS (Sensible Internal Gain) column in the zone energy balance reports. (They could easily be shown in a separate IgnR column if desired.) Any energy transfer shows two places in the ZEB report, with opposite signs, so that the result is zero -- otherwise it wouldn't be an energy balance. The rest of the reporting story for radiant internal gains turns out to be complex. The specified value of the radiant gain (gnPower \* gnFrZn \* gnFrRad) shows in the IgnS column. To the extent that the gain heats the zone, it also shows negatively in the Masses column, because the zone CAir is lumped with the other masses. To the extent that the gain heats massive surfaces, it also shows negatively in the masses column. To the extent that the gain conducts through windows and quick-model surfaces, it shows negatively in the Conduction column. If the gain conducts through a quick-model surface to another zone, it shows negatively in the Izone (Interzone) column, positively in the Izone column of the receiving zone, and negatively in the receiving zone's Masses or Cond column. - -**gnFrRad=*float*** - -Fraction of total gain going to zone (gnFrZn) that is radiant rather than convective or latent. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - 0 $\leq$ *x* $\leq$ 1 0. No hourly - -**gnFrLat=*float*** - -Fraction of total gain going to zone (gnFrZn) that is latent heat (moisture addition). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - 0 $\leq$ *x* $\leq$ 1 0. No hourly - -**endGain** - -Optional to indicate the end of the GAIN definition. Alternatively, the end of the gain definition can be indicated by END or by the declaration of another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant diff --git a/doc/test/resources/glazetype.md b/doc/test/resources/glazetype.md deleted file mode 100644 index cd780dd05..000000000 --- a/doc/test/resources/glazetype.md +++ /dev/null @@ -1,147 +0,0 @@ -# GLAZETYPE - -GLAZETYPE constructs an object of class GLAZETYPE that represents a glazing type for use in WINDOWs. - -**gtName** - -Name of glazetype. Required for reference fromWINDOW objects, below. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* Yes constant - -**gtModel=*choice*** - -Selects model to be used for WINDOWs based on this GLAZETYPE. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - SHGC ASHWAT SHGC No constant - -**gtU=*float*** - -Glazing conductance (U-factor without surface films, therefore not actually a U-factor but a C-factor). Used as wnU default; an error message will be issued if the U value is not given in the window (wnU) nor in the glazeType (gtU). Preferred Approach: To use accurately with standard winter rated U-factor from ASHRAE or NFRC enter as: - - gtU = (1/((1/U-factor)-0.85) - -Where 0.85 is the sum of the interior (0.68) and exterior (0.17) design air film resistances assumed for rating window U-factors. Enter wnInH (usually 1.5=1/0.68) instead of letting it default. Enter the wnExH or let it default. It is important to use this approach if the input includes gnFrad for any gain term. Using approach 2 below will result in an inappropriate internal gain split at the window. - -Approach 2. Enter gtU=U-factor and let the wnInH and wnExH default. This approach systematically underestimates the window U-factor because it adds the wnExfilm resistance to 1/U-factor thereby double counting the exterior film resistance. This approach will also yield incorrect results for gnFrad internal gain since the high wnInH will put almost all the gain back in the space. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------------- ----------------- ------------- -------------- ----------------- - Btuh/ft^2^-^o^F *x* $>$ 0 *none* No constant - -**gtUNFRC=*float*** - -Fenestration system (including frame) U-factor evaluated at NFRC heating conditions. For ASHWAT windows, a value for the NFRC U-factor is required, set via gtUNFRC or wnUNFRC. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------------- ----------------- ------------- -------------- ----------------- - Btuh/ft^2^-^o^F *x* $>$ 0 *none* No constant - -**gtSHGC=*float*** - -Glazing Solar Heat Gain Coefficient: fraction of normal beam insolation which gets through glass to space inside. We recommend using this to represent the glass normal transmissivity characteristic only, before shading and framing effects - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------------- ------------- -------------- ----------------- - fraction *0* $\leq$ *x* $\leq$ *1* *none* Yes Constant - -**gtSMSO=*float*** - -SHGC multiplier with shades open. May be overriden in the specific window input. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------------- ------------- -------------- ------------------ - fraction *0* $\leq$ *x* $\leq$ *1* 1.0 No Monthly - Hourly - -**gtSMSC=*float*** - -SHGC multiplier with shades closed. May be overriden in the specific window input. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------------- -------------------- -------------- ------------------ - fraction *0* $\leq$ *x* $\leq$ *1* gtSMSO (no shades) No Monthly - Hourly - -**gtFMult=*float*** - -Framing multiplier used if none given in window, for example .9 if frame and mullions reduce the solar gain by 10%. Default of 1.0 implies frame/mullion effects allowed for in gtSHGC's or always specified in Windows. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------------- ------------- -------------- ------------------ - fraction *0* $\leq$ *x* $\leq$ *1* gtSHGCO No Monthly - Hourly - -**gtPySHGC =*float*** - -Four float values separated by commas. Coefficients for incidence angle SHGC multiplier polynomial applied to gtSHGC to determine beam transmissivity at angles of incidence other than 90 degrees. The values are coefficients for first through fourth powers of the cosine of the incidence angle; there is no constant part. An error message will be issued if the coefficients do not add to one. They are used in the following computation: - -    angle = incidence angle of beam radiation, measured from normal to glass. - -    cosI = cos( angle) - -    angMult = a\*cosI + b\*cosI\^2 + c\*cosI\^3 + d\*cosI\^4 - -    beamXmisvty = gtSHGCO \* angMult (shades open) - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - float *any* none Yes Constant - -**gtDMSHGC=*float*** - -SHGC diffuse multiplier, applied to gtSHGC to determine transmissivity for diffuse radiation. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------------- ------------- -------------- ----------------- - fraction *0* $\leq$ *x* $\leq$ *1* none yes Constant - -**gtDMRBSol=*float*** - -SHGC diffuse multiplier, applied to qtSHGC to determine transmissivity for diffuse radiation reflected back out the window. Misnamed as a reflectance. Assume equal to DMSHGC if no other data available. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------------- ------------- -------------- ----------------- - fraction *0* $\leq$ *x* $\leq$ *1* none yes Constant - -**gtNGlz=*int*** - -Number of glazings in the Glazetype (bare glass only, not including any interior or exterior shades). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------ ------------- -------------- ----------------- - *0* $<$ *x* $\leq$ *4* 2 no Constant - -**gtExShd=*choice*** - -Exterior shading type (ASHWAT only). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - NONE INSCRN NONE no Constant - -**gtInShd=*choice*** - -Interior shade type (ASHWAT only). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - NONE DRAPEMED NONE no Constant - -**gtDirtLoss=*float*** - -Glazing dirt loss factor. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------------- ------------- -------------- ----------------- - fraction *0* $\leq$ *x* $\leq$ *1* 0 no Constant - -**endGlazeType** - -Optional to indicates the end of the Glazetype. Alternatively, the end of the GLAZETYPE definition can be indicated by "END" or by beginning another object - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/heatplant.md b/doc/test/resources/heatplant.md deleted file mode 100644 index f2b878638..000000000 --- a/doc/test/resources/heatplant.md +++ /dev/null @@ -1,72 +0,0 @@ -# HEATPLANT - -A HEATPLANT contains one or more BOILER subobjects (Section 5.20.1) and supports one or more Hot Water (HW) coils in TERMINALs and/or AIRHANDLERs, and/or heat exchangers in HPLOOPs (HPLOOPs are not implemented as of September 1992.). There can be more than one HEATPLANT in a simulation. - -BOILERs, HW coils, and heat exchangers are modeled with simple heat-injection models. There is no explicit modeling of circulating hot water temperatures and flows; it is always assumed the temperature and flow at each load (HW coil or heat exchanger) are sufficient to allow the load to transfer any desired amount of heat up to its capacity. When the total heat demand exceeds the plant's capacity, the model reduces the capacity of each load until the plant is not overloaded. The reduced capacity is the same fraction of rated capacity for all loads on the HEATPLANT; any loads whose requested heat is less than the reduced capacity are unaffected. - -The BOILERs in the HEATPLANT can be grouped into *STAGES* of increasing capacity. The HEATPLANT uses the first stage that can meet the load. The load is distributed among the BOILERs in the stage so that each operates at the same fraction of its rated capacity. - -For each HEATPLANT, piping loss is modeled, as a constant fraction of the BOILER capacity of the heatPlant's most powerful stage. This heat loss is added to the load whenever the plant is operating; as modeled, the heat loss is independent of load, weather, or any other variables. - -**heatplantName** - -Name of HEATPLANT object, given immediately after the word HEATPLANT. This name is used to refer to the heatPlant in *tuhcHeatplant* and *ahhcHeatplant* commands. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* Yes constant - -**hpSched=*choice*** - -Heat plant schedule: hourly variable choice of OFF, AVAIL, or ON. - - ------- -------------------------------------------------------------- - OFF HEATPLANT will not supply hot water regardless of demand. All - loads (HW coils and heat exchangers) should be scheduled off - when the plant is off; an error will occur if a coil calls for - heat when its plant is off. - - AVAIL HEATPLANT will operate when one or more loads demand heat. - - ON HEATPLANT runs unconditionally. When no load wants heat, least - powerful (first) stage runs. - ------- -------------------------------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ------------- -------------- ----------------- - OFF, AVAIL, or ON AVAIL No hourly - -**hpPipeLossF=*float*** - -Heat plant pipe loss: heat assumed lost from piping connecting boilers to loads whenever the HEATPLANT is operating, expressed as a fraction of the boiler capacity of the plant's most powerful stage. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 .01 No constant - -**hpStage1=boilerName, boilerName, boilerName, ...** - -**hpStage1=ALL\_BUT, boilerName, boilerName, boilerName, ...** - -**hpStage1=ALL** - -**hpStage2 through hpStage7 *same*** - -The commands *hpStage1* through *hpStage7* allow specification of up to seven *STAGES* in which BOILERs are activated as the load increases. Each stage may be specified with a list of up to seven names of BOILERs in the HEATPLANT, or with the word ALL, meaning all of the HEATPLANT's BOILERs, or with the word ALL\_BUT and a list of up to six names of BOILERs. Each stage should be more powerful than the preceding one. If you have less than seven stages, you may skip some of the commands *hpStage1* through *hpStage7* -- the used stage numbers need not be contiguous. - -If none of *hpStage1* through *hpStage7* are given, CSE supplies a single default stage containing all boilers. - -A comma must be entered between boiler names and after the word ALL\_BUT. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------------------------------- ------------------ -------------- ----------------- - 1 to 7 names;ALL\_BUT and 1 to 6 names;ALL *hpStage1* = ALL No constant - -**endHeatplant** - -Optionally indicates the end of the HEATPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - diff --git a/doc/test/resources/holiday.md b/doc/test/resources/holiday.md deleted file mode 100644 index e47a1b6ef..000000000 --- a/doc/test/resources/holiday.md +++ /dev/null @@ -1,150 +0,0 @@ -# HOLIDAY - -HOLIDAY objects define holidays. Holidays have no inherent effect, but input expressions can test for holidays via the \$DOWH, \$isHoliday, \$isHoliTrue, \$isWeHol, and \$isBegWeek system variables (4.6.4). - -Examples and the list of default holidays are given after the member descriptions. - - -**hdName** - -Name of holiday: must follow the word HOLIDAY. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- --------------- ----------------- - *63 characters* *none* Yes constant - -A holiday may be specified by date or via a rule such as "Fourth Thursday in November". To specify by date, give hdDateTrue, and also hdDateObs or hdOnMonday if desired. To specify by rule, give all three of hdCase, hdMon, and hdDow. - -**hdDateTrue*=date*** - -The true date of a holiday, even if not celebrated on that day. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *date* *blank* No constant - -**hdDateObs*=date*** - -The date that a holiday will be observed. Allowed only if hdDateTrue given and hdOnMonday not given. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------- -------------- ----------------- - *date* *hdDateTrue* No constant - -**hdOnMonday=*choice*** - -If YES, holiday is observed on the following Monday if the true date falls on a weekend. Allowed only if hdDateTrue given and hdDateObs not given. - -Note: there is no provision to celebrate a holiday that falls on a Saturday on *Friday* (as July 4 was celebrated in 1992). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - YES NO YES No constant - -**hdCase=*choice*** - -Week of the month that the holiday is observed. hdCase, hdMon, and hdDow may be given only if hdDateTrue, hdDateObs, and hdOnMonday are not given. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------------------- ------------- -------------- ----------------- - FIRST SECOND THIRD FOURTH LAST FIRST No constant - -**hdMon=*choice*** - -Month that the holiday is observed. - - ----------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- -------------- ----------- ------------ --------------- - JAN, FEB, MAR, *none* required if constant - APR, MAY, JUN, hdCase given - JUL, AUG, SEP, - OCT, NOV, DEC - - ----------------------------------------------------------------- - -**hdDow*=choice*** - -Day of the week that the holiday is observed. - - ------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ---------- ----------- ------------ --------------- - SUNDAY, MONDAY required if constant - MONDAY, hdCase given - TUESDAY, - WEDNESDAY, - THURSDAY, - FRIDAY, - SATURDAY - - ------------------------------------------------------------- - -**endHoliday** - -Indicates the end of the holiday definition. Alternatively, the end of the holiday definition can be indicated by "END" or simply by beginning another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - -Examples of valid HOLIDAY object specifications: - -- Holiday on May first, observed date moved to following Monday if the first falls on a weekend (hdOnMonday defaults Yes). - - - HOLIDAY MAYDAY; - hdDateTrue = May 1; - -- Holiday on May 1, observed on May 3. - - - HOLIDAY MAYDAY; - hdDateTrue = May 1; - hdDateObs = May 3; - -- Holiday observed on May 1 even if on a weekend. - - - HOLIDAY MAYDAY; - hdDateTrue = May 1; - hdOnMonday = No; - -- Holiday observed on Wednesday of third week of March - - - HOLIDAY HYPOTHET; - hdCase = third; - hdDow = Wed; - hdMon = MAR - -As with reports, Holidays are automatically generated for a standard set of Holidays. The following are the default holidays automatically defined by CSE: - - ----------------- -------------------------- - New Year's Day \*January 1 - M L King Day \*January 15 - President's Day 3rd Monday in February - Memorial Day last Monday in May - Fourth of July \*July 4 - Labor Day 1st Monday in September - Columbus Day 2nd Monday in October - Veterans Day \*November 11 - Thanksgiving 4th Thursday in November - Christmas \*December 25 - ----------------- -------------------------- - -\* *observed on the following Monday if falls on a weekend, except as otherwise noted:* - -If a particular default holiday is not desired, it can be removed with a DELETE statement: - - DELETE HOLIDAY Thanksgiving - - DELETE HOLIDAY "Columbus Day" // Quotes necessary (due to space) - - DELETE HOLIDAY "VETERANS DAY" // No case-sensitivity - -Note that the name must be spelled *exactly* as listed above. diff --git a/doc/test/resources/hploop.md b/doc/test/resources/hploop.md deleted file mode 100644 index f178b15c0..000000000 --- a/doc/test/resources/hploop.md +++ /dev/null @@ -1,3 +0,0 @@ -# HPLOOP - -To be written. diff --git a/doc/test/resources/importfile.md b/doc/test/resources/importfile.md deleted file mode 100644 index d4fbc645c..000000000 --- a/doc/test/resources/importfile.md +++ /dev/null @@ -1,102 +0,0 @@ -# IMPORTFILE - -IMPORTFILE allows specification of a file from which external data can be accessed using the [import()](#import) and [importStr()](#importstr) functions. This allows external values to be referenced in expressions. Any number of IMPORTFILEs can be defined and any number of import()/importStr() references can be made to a give IMPORTFILE. - -Import files are text files containing an optional header and comma-separated data fields. With -the header present, the structure of an import file matches that of an [EXPORT](#export) file. This makes it convenient to import unmodified files EXPORTed from prior runs. The file structure is as follows (noting that the header in lines 1-4 should not be present when imHeader=NO) -- - - Line Contents Notes - --------- ----------------------- -------------------------------------- - 1 *runTitle*, *runNumber* read but not checked - 2 *timestamp* in quotes, read but not checked - 3 *title*, *freq* should match imTitle and imFreq - 4 *colName1*,*colName2*,... comma separated column names in quotes - 5 .. *val1*,*val2*,... comma separated values (string values in quotes) - - -Example import file imp1.csv - - "Test run",001 - "Fri 04-Nov-16 10:54:37 am" - "Daily Data","Day" - "Mon","Day","Tdb","Twb" - 1,1,62.2263,53.2278 - 1,2,61.3115,52.8527 - 1,3,60.4496,52.4993 - 1,4,60.2499,52.4174 - 1,5,60.9919,52.7216 - 1,6,61.295,52.8459 - 1,7,62.3178,53.2654 - 1,8,62.8282,53.4747 - (... continues for 365 data lines ...) - -Example IMPORTFILE use (reading from imp1.csv) - - // ... various input statements ... - - IMPORTFILE Example imFileName="imp1.csv" imFreq=Day imTitle="Daily Data" - ... - // Compute internal gain based on temperature read from import file. - // result is 3000 W per degree temperature is above 60. - // Note gnPower can have hourly variability, but here varies daily. - GAIN gnPower = 3000 * max( 0, import(Example,"Tdb") - 60) / 3.412 - ... - -Notes - - * As usual, file order is not important -- IMPORTFILEs can be referenced before they are defined. - * Columns are referenced by 1-based index or column names (assuming file header is present). - In the example above, "Tdb" could be replaced by 3. - - - -**imName** - -Name of IMPORTFILE object (for reference from Import()). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* No constant - -**imFileName=*string*** - -Gives path name of file to be read. If directory is specified, CSE first looks for the file the current directory and searches include paths specified by the -I command line parameter (if any). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------------------------ ------------- -------------- ----------------- - *file name, path optional* Yes constant - -**imTitle=*string*** - -Title expected to be found on line 3 of the import file. A warning is issued if a non-blank imTitle does not match the import file title. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------ ------------- -------------- ----------------- - Text string (blank) No constant - -**imFreq=*choice*** - -Specifies the interval at which CSE reads from the import file. Data is read at the beginning of the indicated interval and buffered in memory for access in expressions via import() or importStr(). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------- ------------- -------------- ----------------- - YEAR, MONTH, DAY, or HOUR Yes constant - - -**imHeader=*choice*** - -Indicates whether the import file include a 4 line header, as described above. If NO, the import file -should contain only comma-separated data rows and data items can be referenced only by 1-based column number. - -**Units** **Legal Range** **Default** **Required** **Variability** ------------ ------------------------ ------------- -------------- ----------------- - YES NO YES No constant - - -**endImportFile** - -Optionally indicates the end of the import file definition. Alternatively, the end of the import file definition can be indicated by END or by beginning another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant diff --git a/doc/test/resources/izxfer.md b/doc/test/resources/izxfer.md deleted file mode 100644 index dbaaedd41..000000000 --- a/doc/test/resources/izxfer.md +++ /dev/null @@ -1,274 +0,0 @@ -# IZXFER - -IZXFER constructs an object that represents an interzone or zone/ambient heat transfer due to conduction and/or air transfer. The air transfer modeled by IZXFER transfers heat only; humidity transfer is not modeled as of July 2011. Note that SURFACE is the preferred way represent conduction between ZONEs. - -The AIRNET types are used in a multi-cell pressure balancing model that finds zone pressures that produce net 0 mass flow into each zone. The model operates in concert with the znType=CZM to represent ventilation strategies. During each time step, the pressure balance is found for two modes that can be thought of as “VentOff” (or infiltration-only) and “VentOn” (or infiltration+ventilation). The zone model then determines the ventilation fraction required to hold the desired zone temperature (if possible). - -**izName** - -Optional name of interzone transfer; give after the word "IZXFER" if desired. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**izNVType=*choice*** - -Choice determining interzone ventilation - - ---------------- --------------------------------------- - NONE No interzone ventilation - - TWOWAY Uncontrolled flow in either direction - (using ASHRAE high/low vent model) - - AIRNETIZ Single opening to another zone (using - pressure balance AirNet model) - - AIRNETEXT Single opening to ambient (using - pressure balance AirNet model) - - AIRNETHORIZ Horizontal (large) opening between two - zones, used to represent e.g. - stairwells - - AIRNETEXTFAN Fan from exterior to zone (flow either - direction). - - AIRNETIZFAN Fan between two zones (flow either - direction). - - AIRNETEXTFLOW Specified flow from exterior to zone - (either direction). Behaves identically - to AIRNETEXTFAN except no electricity - is consumed and no fan heat is added to - the air stream. - - AIRNETIZFLOW Specicified flow between two zones - (either direction). Behaves identically - to AIRNETIZFAN except no electricity is - consumed and no fan heat is added to - the air stream - ---------------- --------------------------------------- - - ----------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- -------------- ----------- ------------ --------------- - NONE, TWOWAY, None No constant - AIRNET, - AIRNETEXT, - AIRNETHORIZ, - AIRNETEXTFAN, - AIRNETIZFAN, - AIRNETEXTFLOW, - AIRNETIZFLOW - - ----------------------------------------------------------------- - -**izZn1=*znName*** - -Name of primary zone. Flow rates $>$ 0 are into the primary zone. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - name of a ZONE Yes constant - -**izZn2=*znName*** - -Name of secondary zone. - - --------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- ----------- --------------- --------------- - name of a required unless constant - ZONE izNVType = - AIRNETEXT, - AIRNETEXTFAN, - or - AIRNETEXTFLOW - - --------------------------------------------------------------- - -Give izHConst for a conductive transfer between zones. Give izNVType other than NONE and the following variables for a convective (air) transfer between the zones or between a zone and outdoors. Both may be given if desired. ?? Not known to work properly as of July 2011 - -**izHConst=*float*** - -Conductance between zones. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - Btu/^o^F *x* $\ge$ 0 0 No hourly - -**izALo=*float*** - -Area of low or only vent (typically VentOff) - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft^2^ *x* $\ge$ 0 0 No hourly - -**izAHi=*float*** - -Additional vent area (high vent or VentOn). If used in AIRNET, izAHi > izALo typically but this is not required. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft^2^ *x* $\ge$ 0 izALo No hourly - -**izL1=*float*** - -Length or width of AIRNETHORIZ opening - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- --------------------------- ----------------- - ft *x* $>$ 0 if izNVType = AIRNETHORIZ constant - -**izL2=*float*** - -width or length of AIRNETHORIZ opening - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- --------------------------- ----------------- - ft *x* $>$ 0 if izNVType = AIRNETHORIZ constant - -**izStairAngle=*float*** - -stairway angle for AIRNETHORIZ opening. Use 90 for open hole. Note that 0 prevents flow. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - degrees *x* $>$ 0 34 No constant - -**izHD=*float*** - -Vent center-to-center height difference (for TWOWAY) or vent height above nominal 0 level (for AirNet types) - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft 0 No constant - -**izNVEff=*float*** - -Vent discharge coefficient coefficient. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 0.8 No constant - -**izfanVfDs=*float*** - -Fan design or rated flow at rated pressure - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- ---------------- ----------------- - cfm *x* $\ge$ 0 0 (no fan) If fan present constant - -**izCpr=*float*** - -Wind pressure coefficient (for AIRNETEXT) - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ?? *x* $\ge$ 0 0. No constant - -**izExp=*float*** - -Opening exponent - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - none *x* $>$ 0 0.5 No constant - -**izfanVfMin=*float*** - -Minimum volume flow rate (VentOff mode) - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - cfm *x* $\ge$ 0 0 No subhourly - -**izfanVfMax=*float*** - -Maximum volume flow rate (VentOn mode) - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - cfm *x* $\ge$ 0 0 No subhourly - -**izfanPress=*float*** - -Design or rated pressure. - - **Units** **Legal Range** **Default** **Required** **Variability** - -------------- ----------------- ------------- -------------- ----------------- - inches H~2~O *x* $>$ 0 .3 No constant - -Only one of izfanElecPwr, izfanEff, and izfanShaftBhp may be given: together with izfanVfDs and izfanPress, any one is sufficient for CSE to detemine the others and to compute the fan heat contribution to the air stream. - -**izfanElecPwr=*float*** - -Fan input power per unit air flow (at design flow and pressure). - - ------------------------------------------------------------------ - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- ------------- ---------------- --------------- - W/cfm *x* $>$ 0 derived from If izfanEff and constant - izfanEff and izfanShaftBhp - izfanShaftBhp not present - ------------------------------------------------------------------ - -**izfanEff=*float*** - -Fan efficiency at design flow and pressure, as a fraction. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- -------------------------------------------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 derived from *izfanShaftBhp* if given, else 0.08 No constant - -**izfanShaftBhp=*float*** - -Fan shaft brake horsepower at design flow and pressure. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------------------- -------------- ----------------- - bhp *x* $>$ 0 derived from *izfanEff*. No constant - -**izfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** - -$k_0$ through $k_3$ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow $x_0$. Up to five *floats* may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: - -$$z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3$$ - -where: - -- $x$ is the relative fan air flow (as fraction of izfan*VfDs*; 0 $\le$ $x$ $\le$ 1); -- $x_0$ is the minimum relative air flow (default 0); -- $(x - x_0)|$ is the "positive difference", i.e. $(x - x_0)$ if $x > x_0$; else 0; -- $z$ is the relative energy consumption. - -If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------------------- -------------- ----------------- - *0, 1, 0, 0, 0 (linear)* No constant - -**izfanMtr=*mtrName*** - -Name of meter, if any, to record energy used by supply fan. End use category used is "Fan". - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------- -------------- ----------------- - *name of a METER* *not recorded* No constant - -**endIzxfer** - -Optionally indicates the end of the interzone transfer definition. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/layer.md b/doc/test/resources/layer.md deleted file mode 100644 index 7cc2d18a5..000000000 --- a/doc/test/resources/layer.md +++ /dev/null @@ -1,59 +0,0 @@ -# LAYER - -LAYER constructs a subobject of class LAYER belonging to the current CONSTRUCTION. LAYER is not recognized except immediately following CONSTRUCTION or another LAYER. The members represent one layer (that optionally includes framing) within the CONSTRUCTION. - -The layers should be specified in inside to outside order. A framed layer (lrFrmMat and lrFrmFrac given) is modeled by creating a homogenized material with weighted combined conductivity and volumetric heat capacity. Caution: it is generally preferable to model framed constructions using two separate surfaces (one with framing, one without). At most one framed layer (lrFrmMat and lrFrmFrac given) is allowed per construction. - -The layer thickness may be given by lrThk, or matThk of the material, or matThk of the framing material if any. The thickness must be specified at least one of these three places; if specified in more than one place and not consistent, an error message occurs. - -**lrName** - -Name of layer (follows "LAYER"). Required only if the LAYER is later referenced in another object, for example with LIKE or ALTER; however, we suggest naming all objects for clearer error messages and future flexibility. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *None* No constant - -**lrMat=*matName*** - -Name of primary MATERIAL in layer. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------- ------------- -------------- ----------------- - name of a *MATERIAL* *none* Yes constant - -**lrThk=*float*** - -Thickness of layer. - - **Units** **Legal Range** **Default/Required** **Variability** - ----------- ----------------- ---------------------------------------------------------- ----------------- - ft *x* $>$ 0 Required if *matThk* not specified in referenced *lrMat* constant - -**lrFrmMat=*matName*** - -Name of framing MATERIAL in layer, if any. At most one layer with lrFrmMat is allowed per CONSTRUCTION. See caution above regarding framed-layer model. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------- ------------------- -------------- ----------------- - name of a MATERIAL *no framed layer* No constant - -**lrFrmFrac=*float*** - -Fraction of layer that is framing. Must be specified if frmMat is specified. See caution above regarding framed-layer model. - - --------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ------------ ----------- ------------ --------------- - 0 $\leq$ *x* *no framed Required if constant - $\leq$ 1 layer* *lrFrmMat* - specified, - else - disallowed - - --------------------------------------------------------------- - -**endLayer** - -Optional end-of-LAYER indicator; LAYER definition may also be indicated by "END" or just starting the definition of another LAYER or other object. diff --git a/doc/test/resources/material.md b/doc/test/resources/material.md deleted file mode 100644 index eb5d94bad..000000000 --- a/doc/test/resources/material.md +++ /dev/null @@ -1,79 +0,0 @@ -# MATERIAL - -MATERIAL constructs an object of class MATERIAL that represents a building material or component for later reference a from LAYER (see below). A MATERIAL so defined need not be referenced. MATERIAL properties are defined in a consistent set of units (all lengths in feet), which in some cases differs from units used in tabulated data. Note that the convective and air film resistances for the inside wall surface is defined within the SURFACE statements related to conductances. - -**matName** - -Name of material being defined; follows the word "MATERIAL". - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* Yes constant - -**matThk=*float*** - -Thickness of material. If specified, matThk indicates the discreet thickness of a component as used in construction assemblies. If omitted, matThk indicates that the material can be used in any thickness; the thickness is then specified in each LAYER using the material (see below). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft *x* $>$ 0 (omitted) No constant - -**matCond=*float*** - -Conductivity of material. Note that conductivity is *always* stated for a 1 foot thickness, even when matThk is specified; if the conductance is known for a specific thickness, an expression can be used to derive matCond. - - **Units** **Legal Range** **Default** **Required** **Variability** - -------------------- ----------------- ------------- -------------- ----------------- - Btuh-ft/ft^2^-^o^F *x* $>$ 0 *none* Yes constant - -**matCondT=*float*** - -Temperature at which matCond is rated. See matCondCT (next). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* $>$ 0 70 ^o^F No constant - -**matCondCT=*float*** - -Coefficient for temperature adjustment of matCond in the forward difference surface conduction model. Each hour (not subhour), the conductivity of layers using this material are adjusted as followslrCond = matCond \* (1 + matCondCT\*(T~layer~ – matCondT)) - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F^-1^ 0 No constant - -Note: A typical value of matCondCT for fiberglass batt insulation is 0.00418 F^-1^ - -**matSpHt=*float*** - -Specific heat of material. - - **Units** **Legal Range** **Default** **Required** **Variability** - ------------- ----------------- ------------------------ -------------- ----------------- - Btu/lb-^o^F *x* $\ge$ 0 0 (thermally massless) No constant - -**matDens=*float*** - -Density of material. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------- -------------- ----------------- - lb/ft^3^ *x* $\ge$ 0 0 (massless) No constant - -**matRNom=*float*** - -Nominal R-value per foot of material. Appropriate for insulation materials only and *used for documentation only*. If specified, the current material is taken to have a nominal R-value that contributes to the reported nominal R-value for a construction. As with matCond, matRNom is *always* stated for a 1 foot thickness, even when matThk is specified; if the nominal R-value is known for a specific thickness, an expression can be used to derive matRNom. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------------- ----------------- ------------- -------------- ----------------- - ft^2^-^o^F/Btuh *x* $>$ 0 (omitted) No constant - -**endMaterial** - -Optional to indicate the end of the material. Alternatively, the end of the material definition can be indicated by "END" or simply by beginning another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/meter.md b/doc/test/resources/meter.md deleted file mode 100644 index 22eb07a66..000000000 --- a/doc/test/resources/meter.md +++ /dev/null @@ -1,69 +0,0 @@ -# METER - -A METER object is a user-defined "device" that records energy consumption of equipment as simulated by CSE. The user defines METERs with the desired names, then assigns energy uses of specific equipment to the desired meters using commands described under each equipment type's class description (AIRHANDLER, TERMINAL, etc.). Additional energy use from equipment not simulated by CSE (except optionally for its effect on heating and cooling loads) can also be charged to METERs (see GAIN). The data accumulated by meters can be reported at hourly, daily, monthly, and annual (run) intervals by using REPORTs and EXPORTs of type MTR. - -Meters account for energy use in the following pre-defined categories, called *end uses*. The abbreviations in parentheses are used in MTR report headings (and for gnMeter input, below). - -- Total use -- Space Cooling Use (Clg) -- Space Heating Use - including heat pump compressor (Htg) -- Heat Pump Backup Heat (HPHtg) -- Domestic (Service) -- Hot Water Heating (DHW) -- Fans – AC and cooling ventilation (FanC) -- Fans – heating (FanH) -- Fans – IAQ venting (FanV) -- Fans -- other (Fan) -- HVAC Auxiliary - not including fans (Aux) -- Process Energy (Proc) -- Lighting (Lit) -- Receptacles (Rcp) -- Exterior (Ext) -- Refrigeration (Refr) -- Dish washing (Dish) -- Clothes drying (Dry) -- Clothes washing (Wash) -- Cooking (Cook) -- User defined 1 (User1) -- User defined 2 (User2) - -The user has complete freedom over how many meters are defined and how equipment is assigned to them. At one extreme, a single meter "Electricity" could be defined and have all of electrical uses assigned to it. On the other hand, definition of separate meters "Elect\_Fan1", "Elect\_Fan2", and so forth allows accounting of the electricity use for individual pieces of equipment. Various groupings are possible: for example, in a building with several air handlers, one could separate the energy consumption of the fans from the coils, or one could separate the energy use by air handler, or both ways, depending on the information desired from the run. - -The members which assign energy use to meters include: - -- GAIN: gnMeter, gnEndUse -- ZONE: xfanMtr -- IZXFER: izfanMtr -- RSYS: rsElecMtr, rsFuelMtr -- DHWSYS -- DHWHEATER -- DHWPUMP -- DHWLOOPPUMP -- TERMINAL: tuhcMtr, tfanMtr -- AIRHANDLER: sfanMtr, rfanMtr, ahhcMtr, ahccMtr, ahhcAuxOnMtr, ahhcAuxOffMtr, ahhcAuxFullOnMtr, ahhcAuxOnAtAllMtr, ahccAuxOnMtr, ahccAuxOffMtr, ahccAuxFullOnMtr, ahccAuxOnAtAllMtr -- BOILER: blrMtr, blrpMtr, blrAuxOnMtr, blrAuxOffMtr, blrAuxFullOnMtr, blrAuxOnAtAllMtr -- CHILLER: chMtr, chppMtr, chcpMtr, chAuxOnMtr, chAuxOffMtr, chAuxFullOnMtr, chAuxOnAtAllMtr -- TOWERPLANT: tpMtr - -The end use can be specified by the user only for GAINs; in other cases it is hard-wired to Clg, Htg, FanC, FanH, FanV, Fan, or Aux as appropriate. - -**mtrName** - -Name of meter: required for assigning energy uses to the meter elsewhere. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* Yes constant - - -**endMeter** - -Indicates the end of the meter definition. Alternatively, the end of the meter definition can be indicated by the declaration of another object or by END. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/perimeter.md b/doc/test/resources/perimeter.md deleted file mode 100644 index b113fe6ee..000000000 --- a/doc/test/resources/perimeter.md +++ /dev/null @@ -1,37 +0,0 @@ -# PERIMETER - -PERIMETER defines a subobject belonging to the current zone that represents a length of exposed edge of a (slab on grade) floor. - -**prName** - -Optional name of perimeter. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**prLen=*float*** - -Length of exposed perimeter. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft *x* $>$ 0 *none* Yes constant - -**prF2=*float*** - -Perimeter conduction per unit length. - - **Units** **Legal Range** **Default** **Required** **Variability** - -------------- ----------------- ------------- -------------- ----------------- - Btuh/ft-^o^F *x* $>$ 0 *none* Yes constant - -**endPerimeter** - -Optionally indicates the end of the perimeter definition. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/pvarray.md b/doc/test/resources/pvarray.md deleted file mode 100644 index 209e2327f..000000000 --- a/doc/test/resources/pvarray.md +++ /dev/null @@ -1,224 +0,0 @@ -# PVARRAY - -PVARRAY describes a photovoltaic panel system. The algorithms are based on the [PVWatts calculator](http://www.bwilcox.com/BEES/docs/Dobos%20-%20PVWatts%20v5.pdf). - -**pvName** - -Name of photovoltaic array. Give after the word PVARRAY. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**pvElecMeter=*choice*** - -Name of meter by which this PVARRAY's AC power out is recorded. Generated power is expressed as a negative value. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - meter name *none* No constant - -**pvEndUse=*choice*** - -Meter end use to which the PVARRAY's generated energy should be accumulated. - - ------- ------------------------------------------------------------- - Clg Cooling - Htg Heating (includes heat pump compressor) - HPHTG Heat pump backup heat - DHW Domestic (service) hot water - DHWBU Domestic (service) hot water heating backup (HPWH resistance) - FANC Fans, AC and cooling ventilation - FANH Fans, heating - FANV Fans, IAQ venting - FAN Fans, other purposes - AUX HVAC auxiliaries such as pumps - PROC Process - LIT Lighting - RCP Receptacles - EXT Exterior lighting - REFR Refrigeration - DISH Dishwashing - DRY Clothes drying - WASH Clothes washing - COOK Cooking - USER1 User-defined category 1 - USER2 User-defined category 2 - PV Photovoltaic power generation - ------- ------------------------------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------- ------------- -------------- ----------------- - *Codes listed above* PV No constant - -**pvDCSysSize=*float*** - -The rated photovoltaic system DC capacity/size as indicated by the nameplate. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ------------- -------------- ----------------- - kW *x* ≥ 0 *none* Yes constant - -**pvModuleType=*choice*** - -Type of module to model. The module type determines the refraction index and temperature coefficient used in the simulation. Alternatively, the "Custom" module type may be used in conjunction with user-defined input for *pvCoverRefrInd* and *pvTempCoeff*. - - **Module Type** **pvCoverRefrInd** **pvTempCoeff** - --------------- ------------------ --------------- - Standard 1.0 -0.0026 - Premium 1.3 -0.0019 - ThinFilm 1.0 -0.0011 - Custom User-defined User-defined - - -------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ----------- ----------- ------------ --------------- - Standard \ Standard No constant - Premium \ - ThinFilm \ - Custom - - -------------------------------------------------------------- - -**pvCoverRefrInd=*float*** - -The refraction index for the coating applied to the module cover. A value of 1.0 represents refraction through air. Coatings have higher refraction indexes that capture more solar at lower angles of incidence. - - ------------------------------------------------------------------------------ - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ------------- -------------- ----------------- - *x* ≥ 1.0 1.0 No constant - - ------------------------------------------------------------------------------ - -**pvTempCoeff=*float*** - -The temperature coefficient how the efficiency of the module varies with the cell temperature. Values are typically negative. - - ------------------------------------------------------------------------------ - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ------------- -------------- ----------------- - 1/^o^F *no restrictions* -0.0026 No constant - - ------------------------------------------------------------------------------ - -**pvArrayType=*choice*** - -The type of array describes mounting and tracking options. Roof mounted arrays have a higher installed nominal operating cell temperature (INOCT) of 120 ^o^F compared to the default of 113 ^o^F. Array self-shading is not currently calculated for adjacent rows of modules within an array. - - **Units** **Legal Range** **Default** **Required** **Variability** - --------- ---------------- ------------- ------------ --------------- - FixedOpenRack, FixedOpenRack No constant - FixedRoofMount, - OneAxisTracking, - TwoAxisTracking - - - -**pvTilt=*float*** - -The tilt of the photovoltaic array from horizontal. Values outside the range 0 to 360 are first normalized to that range. For one-axis tracking, defines the tilt of the rotation axis. Not used for two-axis tracking arrays. - - ------------------------------------------------------------------ - **Units** **Legal Range** **Default** **Required** **Variability** - --------- --------------- ----------- ------------ --------------- - degrees unrestricted 0.0 No hourly - - ------------------------------------------------------------------ - -**pvAzm=*float*** - -Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the range 0^o^ $\leq$ *x* $<$ 360^o^ is given, it is normalized to that range. For one-axis tracking, defines the azimuth of the rotation axis. Not used for two-axis tracking arrays. - - ------------------------------------------------------------------ - **Units** **Legal Range** **Default** **Required** **Variability** - --------- --------------- ----------- ------------ --------------- - degrees unrestricted 0.0 No hourly - - ------------------------------------------------------------------ - -**pvGrndRefl=*float*** - -Ground reflectance used for calculating reflected solar incidence on the array. - - ------------------------------------------------------------------ - **Units** **Legal Range** **Default** **Required** **Variability** - --------- --------------- ----------- ------------ --------------- - 0 < *x* 0.2 No hourly - $\le$ 1.0 - - ------------------------------------------------------------------ - - - -**pvDCtoACRatio=*float*** - -DC-to-AC ratio used to intentionally undersize the AC inverter. This is used to increase energy production in the beginning and end of the day despite the possibility of clipping peak sun hours. - - ------------------------------------------------------------------ - **Units** **Legal Range** **Default** **Required** **Variability** - --------- --------------- ----------- ------------ --------------- - *x* > 0.0 1.1 No constant - - ------------------------------------------------------------------ - -**pvInverterEff=*float*** - -AC inverter efficiency at rated DC power. - - ------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ---------- ----------- ------------ --------------- - 0 < *x* 0.96 No constant - $\le$ 1.0 - - ------------------------------------------------------------- - -**pvSysLosses=*float*** - -Fraction of total DC energy lost. The total loss from a system is aggregated from several possible causes as illustrated below: - - **Loss Type** **Default Assumption** - ------------------------- ---------------------- - Soiling 0.02 - Shading 0.03 - Snow 0 - Mismatch 0.02 - Wiring 0.02 - Connections 0.005 - Light-induced degradation 0.015 - Nameplate rating 0.01 - Age 0 - Availability 0.03 - **Total** **0.14** - - ------------------------------------------------------------ - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- ----------- ------------ --------------- - 0 < 0.14 No hourly - *x* - $\le$ 1.0 - - ------------------------------------------------------------ - -**endPVARRAY** - -Optionally indicates the end of the PVARRAY definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant diff --git a/doc/test/resources/report.md b/doc/test/resources/report.md deleted file mode 100644 index a6103c7ec..000000000 --- a/doc/test/resources/report.md +++ /dev/null @@ -1,280 +0,0 @@ -# REPORT - -REPORT generates a report object to specify output of specific textual information about the results of the run, the input data, the error messages, etc. The various report types available are enumerated in the description of *rpType* in this section, and may be described at greater length in Section 6. - -REPORTs are output by CSE to files, via the REPORTFILE object (previous section). After CSE has completed, you may print the report file(s), examine them with a text editor or by TYPEing, process them with another program, etc., as desired. - -REPORTs that you do not direct to a different file are written to the automatically-supplied "Primary" report file, whose file name is (by default) the input file name with the extension changed to .REP. - -Each report consists of a report header, one or more data rows, and a report footer. The header gives the report type (as specified with *rpType*, described below), the frequency (as specified with *rpFreq)*, the month or date where appropriate, and includes headings for the report's columns where appropriate. - -Usually a report has one data row for each interval being reported. For example, a daily report has a row for each day, with the day of the month shown in the first column. - -The report footer usually contains a line showing totals for the rows in the report. - -The header-data-footer sequence is repeated as necessary. For example, a daily report extending over more than one month has a header-data-footer sequence for each month. The header shows the month name; the data rows show the day of the month; the footer contains totals for the month. - -In addition to the headers and footers of individual reports, the report file has (by default) *page headers* and *footers*, described in the preceding section. - -**Default Reports:** CSE generates the following reports by default for each run, in the order shown. They are output by default to the "Primary" report file. They may be ALTERed or DELETEd as desired, using the object names shown. - - ---------------------------------------------------------------------- - rpName rpType Additional members - ------------- ------------- ------------------------------------------ - Err ERR - - eb ZEB rpFreq=MONTH;\ - rpZone=SUM; - - Log LOG - - Inp INP - ---------------------------------------------------------------------- - - -Any reports specified by the user and not assigned to another file appear in the Primary report file between the default reports "eb" and "Log", in the order in which the REPORT objects are given in the input file. - -Because of the many types of reports supported, the members required for each REPORT depend on the report type and frequency in a complex manner. When in doubt, testing is helpful: try your proposed REPORT specification; if it is incomplete or overspecified, CSE will issue specific error messages telling you what additional members are required or what inappropriate members have been given and why. - -**rpName** - -Name of report. Give after the word REPORT. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**rpReportfile=*rfname*** - -Name of report file to which current report will be written. If omitted, if REPORT is within a REPORTFILE object, report will be written to that report file, or else to REPORTFILE "Primary", which (as described in previous section) is automatically supplied and by default uses the file name of the input file with the extension .REP. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------ ---------------------------------------------- -------------- ----------------- - name of a *REPORTFILE* current *REPORTFILE*, if any, else "Primary" No constant - -**rpType=*choice*** - -Choice indicating report type. Report types may be described at greater length, with examples, in Section 6. - - ------- -------------------------------------------------------------- - ERR Error and warning messages. If there are any such messages, - they are also displayed on the screen *AND* written to a file - with the same name as the input file and extension .ERR. - Furthermore, \* \*many error messages are repeated in the INP - report. - - LOG Run "log". As of July 1992, contains only CSE version number; - should be enhanced or deleted.?? - - INP Input echo: shows the portion of the input file used to - specify this run. Does not repeat descriptions of objects left - from prior runs in the same session when CLEAR is not used. - - Error and warning messages relating to specific lines of the - input are repeated after or near the line to which they - relate, prefixed with "?". Lines not used due to a - preprocessor \#if command (Section 4.4.4) with a false - expression are prefixed with a "0" in the leftmost column; all - preprocessor command lines are prefixed with a "\#" in that - column. - - SUM Run summary. As of July 1992, *NOT IMPLEMENTED*: generates no - output and no error message. Should be defined and - implemented, or else deleted??. - - ZDD Zone data dump. Detailed dump of internal simulation values, - useful for verifying that your input is as desired. Should be - made less cryptic (July 1992)??. Requires *rpZone*. - - ZST Zone statistics. Requires *rpZone*. - - ZEB Zone energy balance. Requires *rpZone*. - - MTR Meter report. Requires *rpMeter*. - - AH Air handler report. Requires *rpAh*. - - AHSIZE Air handler autosizing report. Requires *rpAh*. - - AHLOAD Air handler load report. Requires *rpAh*. TODO - - TUSIZE Terminal autosizing report. Requires *rpTu.* - - TULOAD Terminal load. Requires *rpTu.* TODO - - UDT User-defined table. Data items are specified with REPORTCOL - commands (next section). Allows creating almost any desired - report by using CSE expressions to specify numeric or string - values to tabulate; "Probes" may be used in the expressions to - access CSE internal data. - ------- -------------------------------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *see above* Yes constant - -The next three members specify how frequently values are reported and the start and end dates for the REPORT. They are not allowed with *rpTypes* ERR, LOG, INP, SUM, and ZDD, which involve no time-varying data. - -**rpFreq=*choice*** - -Report Frequency: specifies interval for generating rows of report data: - - ------------------ --------------------------------------------------- - YEAR at run completion - - MONTH at end of each month (and at run completion if - mid-month) - - DAY at end of each day - - HOUR at end of each hour - - HOURANDSUB at end of each subhour AND at end of hour - - SUBHOUR at end of each subhour - ------------------ --------------------------------------------------- - -*RpFreq* values of HOURANDSUB and SUBHOUR are not supported with *rpType*'s of MTR and ZST, nor if *rpType* is ZEB or AH and *rpZone* or *rpAh* is SUM. - -We recommend using HOURly and more frequent reports sparingly, to report on only a few typical or extreme days, or to explore a problem once it is known what day(s) it occurs on. Specifying such reports for a full-year run will generate a huge amount of output and cause extremely slow CSE execution. - - -------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ----------- ----------- ------------ --------------- - YEAR, Required for constant - MONTH, *rpTypes* - DAY, HOUR, ZEB, ZST, - HOURANDSUB, MTR, AH, - SUBHOUR and UDT - - -------------------------------------------------------------- - -**rpDayBeg=*date*** - -Initial day of period to be reported. Reports for which *rpFreq* = YEAR do not allow specification of *rpDayBeg* and *rpDayEnd*; for MONTH reports, these members default to include all months in the run; for DAY and shorter-interval reports, *rpDayBeg* is required and *rpDayEnd* defaults to *rpDayBeg*. - - ------------------------------------------------------------ - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- ----------- ------------ --------------- - *date* first day Required for constant - of *rpTypes* - simulation ZEB, ZST, - if MTR, AH, - *rpFreq* = and UDT if - MONTH *rpFreq* is - DAY, HOUR, - HOURANDSUB, - or SUBHOUR - - ------------------------------------------------------------ - -**rpDayEnd=*date*** - -Final day of period to be reported, except for YEAR reports. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------------------------------------------ -------------- ----------------- - *date* last day of simulation if *rpFreq*= MONTH, else *rpDayBeg* No constant - -**rpZone=*znName*** - -Name of ZONE for which a ZEB, ZST, or ZDD report is being requested. For *rpType* ZEB or ZST, you may use *rpZone*=SUM to obtain a report showing only the sum of the data for all zones, or *rpZone*=ALL to obtain a report showing, for each time interval, a row of data for each zone plus a sum-of-zones row. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------------- ------------- ------------------------------------------- ----------------- - name of a *ZONE*, ALL, SUM Required for *rpTypes* ZDD, ZEB, and ZST. constant - -**rpMeter=*mtrName*** - -Specifies meter(s) to be reported, for *rpType*=MTR. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------------- ------------- --------------------------- ----------------- - name of a *METER*, ALL, SUM Required for *rpType*=MTR constant - -**rpAh=ah*Name*** - -Specifies air handler(s) to be reported, for *rpType*=AH, AHSIZE, or AHLOAD. - - ---------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ------------- ----------- ------------ --------------- - name of an Required for constant - *AIRHANDLER*, *rpType*=AH, - ALL, SUM AHSIZE, or - AHSIZE - - ---------------------------------------------------------------- - -**rpTu=tu*Name*** - -Specifies air handler(s) to be reported, for *rpType*=TUSIZE or TULOAD. TODO - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------------ ------------- ------------------------- ----------------- - name of a TERMINAL, ALL, SUM Required for *rpType*=? constant - -**rpBtuSf=*float*** - -Scale factor to be used when reporting energy values. Internally, all energy values are represented in Btu. This member allows scaling to more convenient units for output. *rpBtuSf* is not shown in the output, so if you change it, be sure the readers of the report know the energy units being used. *rpBtuSf* is not applied in UDT reports, but column values can be scaled as needed with expressions. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------------------------------- -------------- ----------------- - *any multiple of ten* 1,000,000: energy reported in MBtu. No constant - -**rpCond=*expression*** - -Conditional reporting flag. If given, report rows are printed only when value of expression is non-0. Permits selective reporting according to any condition that can be expressed as a CSE expression. Such conditional reporting can be used to shorten output and make it easy to find data of interest when you are only interested in the information under exceptional conditions, such as excessive zone temperature. Allowed with *rpTypes* ZEB, ZST, MTR, AH, and UDT. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------------- ----------------------- -------------- -------------------------- - *any numeric expression* 1 (reporting enabled) No subhour /end of interval - -**rpCPL=*int*** - -Characters per line for a User-Defined report. If widths specified in REPORTCOLs (next section) add up to more than this, an error occurs; if they total substantially less, additional whitespace is inserted between columns to make the report more readable. Not allowed if *rpType* is not UDT. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------ -------------------- -------------- ----------------- - 78 $\le$ *x* $\le$ 132 top level *repCPL* No constant - -**rpTitle=*string*** - -Title for use in report header of User-Defined report. Disallowed if *rpType* is not UDT. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ----------------------- -------------- ----------------- - "User-defined Report" No constant - -**rpHeader=*choice*** - -Use NO to suppress the report header which gives the report type, zone, meter, or air handler being reported, time interval, column headings, etc. One reason to do this might be if you are putting only a single report in a report file and intend to later embed the report in a document or process it with some other program (but for the latter, see also EXPORT, below). - -Use with caution, as the header contains much of the identification of the data. For example, in an hourly report, only the hour of the day is shown in each data row; the day and month are shown in the header, which is repeated for each 24 data rows. - -See REPORTFILE member *rfPageFmt*, above, to control report *FILE* page headers and footers, as opposed to *REPORT* headers and footers. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - YES, NO YES No constant - -**rpFooter=*choice*** - -Use NO to suppress the report footers. The report footer is usually a row which sums hourly data for the day, daily data for the month, or monthly data for the year. For a report with *rpZone, rpMeter,*or *rpAh* = ALL, the footer row shows sums for all zones, meters, or air handlers. Sometimes the footer is merely a blank line. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - YES, NO YES No constant - -**endReport** - -Optionally indicates the end of the report definition. Alternatively, the end of the report definition can be indicated by END or by beginning another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/reportcol.md b/doc/test/resources/reportcol.md deleted file mode 100644 index 696f87bf0..000000000 --- a/doc/test/resources/reportcol.md +++ /dev/null @@ -1,80 +0,0 @@ -# REPORTCOL - -Each REPORTCOL defines a single column of a User Defined Table (UDT) report. REPORTCOLs are not used with report types other than UDT. - -Use as many REPORTCOLs as there are values to be shown in each row of the user-defined report. The values will appear in columns, ordered from left to right in the order defined. Be sure to include any necessary values to identify the row, such as the day of month, hour of day, etc. CSE supplies *NO* columns automatically. - -**colName** - -Name of REPORTCOL. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**colReport=*rpName*** - -Name of report to which current report column belongs. If REPORTCOL is given within a REPORT object, then *colReport* defaults to that report. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------- -------------------------- ---------------------- ----------------- - name of a *REPORT* *current report, if any* Unless in a *REPORT* constant - -**colVal=*expression*** - -Value to show in this column of report. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------------------ ------------- -------------- ----------------------- - *any numeric or string expression* Yes subhour /end interval - -**colHead=*string*** - -Text used for column head. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------------- -------------- ----------------- - *colName* or blank No constant - -**colGap=*int*** - -Space between (to left of) column, in character positions. Allows you to space columns unequally, to emphasize relations among columns or to improve readability. If the total of the *colGaps* and *colWids* in the report's REPORTCOLs is substantially less than the REPORT's *rpCPL* (characters per line, previous section), CSE will insert additional spaces between columns. To suppress these spaces, use a smaller *rpCPL*. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $\ge$ 0 1 No constant - -**colWid=*int*** - -Column width. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $\ge$ 0 10 No constant - -**colDec=*int*** - -Number of digits after decimal point. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------- -------------- ----------------- - *x* $\ge$ 0 *flexible format* No constant - -**colJust=*choice*** - -Specifies positioning of data within column: - - ------- ----------------- - Left Left justified - Right Right justified - ------- ----------------- - -**endReportCol** - -Optionally indicates the end of the report column definition. Alternatively, the end of the report column definition can be indicated by END or by beginning another REPORTCOL or other object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/reportfile.md b/doc/test/resources/reportfile.md deleted file mode 100644 index 6eced9e13..000000000 --- a/doc/test/resources/reportfile.md +++ /dev/null @@ -1,92 +0,0 @@ -# REPORTFILE - -REPORTFILE allows optional specification of different or additional files to receive CSE reports. - -By default, CSE generates several "reports" on each run showing the simulated HVAC energy use, the input statements specifying the run, any error or warning messages, etc. Different or additional reports can be specified using the REPORT object, described in Section 5.25, next. - -All CSE reports are written to text files as plain ASCII text. The files may be printed (on most printers other than postscript printers) by copying them to your printer with the COPY command. Since many built-in reports are over 80 characters wide; you may want to set your printer for "compressed" characters or a small font first. You may wish to examine the report file with a text editor or LIST program before printing it. (?? Improve printing discussion) - -By default, the reports are output to a file with the same name as the input file and extension .REP, in the same directory as the input file. By default, this file is formatted into pages, and overwrites any existing file of the same name without warning. CSE automatically generates a REPORTFILE object called "Primary" for this report file, as though the following input had been given: - - REPORTFILE "Primary" - rfFileName = .REP; - // other members defaulted: rfFileStat=OVERWRITE; rfPageFmt=YES. - -Using REPORTFILE, you can specify additional report files. REPORTs specified within a REPORTFILE object definition are output by default to that file; REPORTs specified elsewhere may be directed to a specific report file with the REPORT member *rpReportFile*. Any number of REPORTFILEs and REPORTs may be used in a run or session. Any number of REPORTs can be directed to each REPORTFILE. - -Using ALTER (Section 4.5.1.2) with REPORTFILE, you can change the characteristics of the Primary report output file. For example: - - ALTER REPORTFILE Primary - rfPageFmt = NO; // do not format into pages - rfFileStat = NEW; // error if file exists - -**rfName** - -Name of REPORTFILE object, given immediately after the word REPORTFILE. Note that this name, not the fileName of the report file, is used to refer to the REPORTFILE in REPORTs. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* No constant - -**rfFileName=*path*** - -path name of file to be written. If no path is specified, the file is written in the current directory. The default extension is .REP. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------------------------- ------------- -------------- ----------------- - file name, path and extension optional Yes constant - -**rfFileStat=*choice*** - -Choice indicating what CSE should do if the file specified by *rfFileName*already exists: - - ------------ --------------------------------------------------------- - OVERWRITE Overwrite pre-existing file. - - NEW Issue error message if file exists at beginning of - session. If there are several runs in session using same - file, output from runs after the first will append. - - APPEND Append new output to present contents of existing file. - ------------ --------------------------------------------------------- - -If the specified file does not exist, it is created and *rfFileStat* has no effect. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------ ------------- -------------- ----------------- - OVERWRITE, NEW, APPEND OVERWRITE No constant - -**rfPageFmt=*Choice*** - -Choice controlling page formatting. Page formatting consists of dividing the output into pages (with form feed characters), starting a new page before each report too long to fit on the current page, and putting headers and footers on each page. Page formatting makes attractive printed output but is a distraction when examining the output on the screen and may inappropriate if you are going to further process the output with another program. - - ----- ---------------------------------------------------------------- - Yes Do page formatting in this report file. - - No Suppress page formatting. Output is continuous, uninterrupted by - page headers and footers or large blank spaces. - ----- ---------------------------------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - Yes, No Yes No constant - -Unless page formatting is suppressed, the page formats for all report files are controlled by the TOP members *repHdrL, repHdrR, repLPP, repTopM, repBotM,*and *repCPL*, described in Section 5.1. - -Each page header shows the *repHdrL* and *repHdrR* text, if given. - -Each page footer shows the input file name, run serial number within session (see *runSerial* in Section 5.1), user-input *runTitle* (see Section 5.1), date and time of run, and page number in file. - -Vertical page layout is controlled by *repLPP, repTopM,* and *repBotM* (Section 5.1). The width of each header and footer is controlled by *repCPL*. Since many built-in reports are now over 80 columns wide, you may want to use repCPL=120 or repCPL=132 to make the headers and footers match the text better. - -In addition to report file *page* headers and footers, individual REPORTs have *REPORT* headers and footers related to the report content. These are described under REPORT, Section 5.25. - -**endReportFile** - -Optionally indicates the end of the report file definition. Alternatively, the end of the report file definition can be indicated by END or by beginning another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/rsys.md b/doc/test/resources/rsys.md deleted file mode 100644 index 882570cef..000000000 --- a/doc/test/resources/rsys.md +++ /dev/null @@ -1,360 +0,0 @@ -# RSYS - -RSYS constructs an object representing an air-based residential HVAC system. - -**rsName** - -Optional name of HVAC system; give after the word “RSYS” if desired. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**rsType=*choice*** - -Specifies type of system. - - --------------- --------------------------------------- - ACFURNACE Compressor-based cooling and fuel-fired - heating. Primary heating input energy - is accumulated to end use HTG of meter - rsFuelMtr. - - ACRESISTANCE Compressor-based cooling and electric - (“strip”) heating. Primary heating - input energy is accumulated to end use - HTG of meter rsElecMtr. - - ASHP Air-source heat pump (compressor-based - heating and cooling). Primary - (compressor) heating input energy is - accumulated to end use HTG of meter - rsElecMtr. Auxililary heating input - energy is accumulated to end use HPHTG - of meter rsElecMtr. - - AC Compressor-based cooling; no heating. - - FURNACE Fuel-fired heating. Primary heating - input energy is accumulated to end use - HTG of meter rsFuelMtr. - - RESISTANCE Electric heating. Primary heating input - energy is accumulated to end use HTG of - meter rsElecMtr - --------------- --------------------------------------- - - ---------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ------------- ----------- ------------ --------------- - ACFURNACE, No constant - ACRESISTANCE, - ACFURNACE - ASHP, AC, - FURNACE, - RESISTANCE - - ---------------------------------------------------------------- - -**rsDesc=*string*** - -Text description of system, included as documentation in debugging reports such as those triggered by rsPerfMap=YES - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - string *blank* No constant - -**rsModeCtrl=*choice*** - -Specifies systems heating/cooling availability during simulation. - - ------- --------------------------------------- - OFF System is off (neither heating nor - cooling is available) - - HEAT System can heat (assuming rsType can - heat) - - COOL System can cool (assuming rsType can - cool) - - AUTO System can either heat or cool - (assuming rsType compatibility). First - request by any zone served by this RSYS - determines mode for the current time - step. - ------- --------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - OFF, HEAT, COOL, AUTO AUTO No hourly - -**rsPerfMap=*choice*** - -Generate performance map(s) for this RSYS. Comma-separated text is written to file PM\_.csv. This is a debugging capabilitiy that is not necessarily maintained. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - NO, YES NO No constant - -**rsFanTy=*choice*** - -Specifies fan (blower) position relative to cooling coil. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------- ------------- -------------- ----------------- - BLOWTHRU, DRAWTHRU BLOWTHRU No constant - -**rsFanMotTy=*choice*** - -Specifies type of motor driving the fan (blower). This is used in the derivation of the coil-only cooling capacity for the RSYS. - - ----- -------------------------------------- - PSC Permanent split capacitor - BPM Brushless permanent magnet (aka ECM) - ----- -------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - PSC, BPM PSC No constant - -**rsElecMtr=*mtrName*** - -Name of METER object, if any, by which system’s electrical energy use is recorded (under appropriate end uses). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------- -------------- ----------------- - *name of a METER* *not recorded* No constant - -**rsFuelMtr =*mtrName*** - -Name of METER object, if any, by which system’s fuel energy use is recorded (under appropriate end uses). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------- -------------- ----------------- - *name of a METER* *not recorded* No constant - -**rsAFUE=*float*** - -Heating Annual Fuel Utilization Efficiency (AFUE). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ----------------------------------- -------------- ----------------- - 0 $<$ x $\le$ 1 0.9 if furnace, 1.0 if resistance No constant - -**rsCapH=*float*** - -Heating capacity, used when rsType is ACFURNACE, ACRESISTANCE, FURNACE, or RESISTANCE. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------- ------------- -------------- ----------------- - Btu/hr *AUTOSIZE* or x $\ge$ 0 0 No constant - -**rsTdDesH=*float*** - -Nominal heating temperature rise (across system, not zone) used during autosizing (when capacity is not yet known). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------------- -------------- ----------------- - ^o^F *x* $>$ 0 30 if ASHP else 50 No constant - -**rsFxCapH=*float*** - -Heating autosizing capacity factor. rsCapH is set to rsFxCapH $\times$ (peak design-day load). Peak design-day load is the heating capacity that holds zone temperature at the thermostat set point during the *last substep* of all hours of all design days. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $>$ 0 1.4 No constant - -**rsFanPwrH=*float*** - -Heating fan power. Heating air flow is estimated based on a 50 ^o^F temperature rise. - - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - W/cfm *x* $\ge$ 0 .365 No constant - -**rsHSPF=*float*** - -For rsType=ASHP, Heating Seasonal Performance Factor (HSPF). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------------- ----------------- - Btu/Wh *x* $>$ 0 Yes if rsType=ASHP constant - -**rsCap47=*float*** - -For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 47 ^o^F. If both rsCap47 and rsCapC are autosized, both are set to the larger consistent value. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------- ---------------------- -------------- ----------------- - Btu/Wh *AUTOSIZE* or *x* $>$ 0 Estimate from rsCapC no constant - -**rsCap35=*float*** - -For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 35 ^o^F. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------------------ -------------- ----------------- - Btu/Wh *x* $>$ 0 Estimated from rsCap47 and rsCap17 no constant - -**rsCap17=*float*** - -For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 17 ^o^F. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------ -------------- ----------------- - Btu/Wh *x* $>$ 0 Estimated from rsCap47 no constant - -**rsCOP47=*float*** - -For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 47 ^o^F. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- --------------------------------------------- -------------- ----------------- - *x* $>$ 0 Estimated from rsHSPF, rsCap47, and rsCap17 no constant - -**rsCOP35=*float*** - -For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 35 ^o^F. - - ------------------------------------------------------------------ - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- ----------------- ------------ --------------- - *x* $>$ 0 Estimated from no constant - rsCap35, rsCap47, - rsCap17, rsCOP47, - and rsCOP17 - - ------------------------------------------------------------------ - -**rsCOP17=*float*** - -For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 17 ^o^F. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- --------------------------------------------- -------------- ----------------- - *x* $>$ 0 Estimated from rsHSPF, rsCap47, and rsCap17 no constant - -**rsCapAuxH=*float*** - -For rsType=ASHP, auxiliary electric (“strip”) heating capacity. If autosized, rsCapAuxH is set to the peak heating load in excess of heat pump capacity evaluated at the heating design temperature (Top.heatDsTDbO). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------------- ------------- -------------- ----------------- - Btu/hr *AUTOSIZE* or *x* $\ge$ 0 0 no constant - -**rsCOPAuxH=*float*** - -For rsType=ASHP, auxiliary electric (“strip”) heating coefficient of performance. Energy use for auxiliary heat is accumulated to end use HPHTG of meter rsElecMtr (that is, auxiliary heat is assumed to be electric). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $\ge$ 0 1.0 no constant - -**rsSEER=*float*** - -Cooling rated Seasonal Energy Efficiency Ratio (SEER). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - Btu/Wh *x* $>$ 0 Yes constant - -**rsEER=*float*** - -Cooling Energy Efficiency Ratio (EER) at standard AHRI rating conditions (outdoor drybulb of 95 ^o^F and entering air at 80 ^o^F drybulb and 67 ^o^F wetbulb). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- --------------------- -------------- ----------------- - Btu/Wh *x* $>$ 0 Estimated from SEER no constant - -**rsCapC=*float*** - -Cooling capacity at standard AHRI rating conditions. If rsType=ASHP and both rsCapC and rsCap47 are autosized, both are set to the larger consistent value. - - ----------------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - ---------- --------------- ------------ --------------- --------------- - Btu/hr *AUTOSIZE* or Yes if rsType constant - *x* $\le$ 0 (x includes - $>$ 0 coverted cooling - to $<$ 0) - ----------------------------------------------------------------------- - -**rsTdDesC=*float*** - -Nominal cooling temperature fall (across system, not zone) used during autosizing (when capacity is not yet known). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* $<$ 0 -25 No constant - -**rsFxCapC=*float*** - -Cooling autosizing capacity factor. rsCapC is set to rsFxCapC $\times$ (peak design-day load). Peak design-day load is the cooling capacity that holds zone temperature at the thermostat set point during the *last substep* of all hours of all design days. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $>$ 0 1.4 No constant - -**rsFChg=*float*** - -Refrigerant charge adjustment factor. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $>$ 0 1 no constant - -**rsFSize=*float*** - -Compressor sizing factor. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $>$ 0 1 no constant - -**rsVFPerTon=*float*** - -Standard air volumetric flow rate per nominal ton of cooling capacity. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - cfm/ton 150 $\le$ x $\le$ 500 350 no constant - -**rsFanPwrC=*float*** - -Cooling fan power. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - W/cfm *x* $\ge$ 0 .365 No constant - -**rsRhIn=*float*** - -Entering air relative humidity (for model testing). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- --------------------------------- -------------- ----------------- - W/cfm 0 $\le$ *x* $\le$ 1 Derived from entering air state No constant - -**rsTdbOut=*float*** - -Air dry-bulb temperature at the outdoor portion of this system. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------- -------------- ----------------- - ^o^F From weather file No hourly - -**endRSYS** - -Optionally indicates the end of the RSYS definition. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant diff --git a/doc/test/resources/sgdist.md b/doc/test/resources/sgdist.md deleted file mode 100644 index bfbc79b78..000000000 --- a/doc/test/resources/sgdist.md +++ /dev/null @@ -1,84 +0,0 @@ -# SGDIST - -SGDIST creates a subobject of the current window that distributes a specified fraction of that window's solar gain to a specified delayed model (massive) surface. Any remaining solar gain (all of the window's solar gain if no SGDISTs are given) is added to the air of the zone containing the window. A window may have up to three SGDISTs; an error occurs if more than 100% of the window's gain is distributed. - -Via members sgFSO and sgFSC, the fraction of the insolation distributed to the surface can be made dependent on whether the zone's shades are open or closed (see ZONE member znSC). - -**sgName** - -Name of solar gain distribution (follows "SGDIST" if given). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -sgSurf=*sfName* - -Name of surface to which gain is targeted. - -If there is more than surface with the specified name: if one of the surfaces is in the current zone, it is used; otherwise, an error message is issued. - - -The specified surface must be modeled with the Delayed model. If gain is targeted to a Quick model surface, a warning message is issued and the gain is redirected to the air of the associated zone. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - name of a *SURFACE* *none* Yes constant - -**sgSide=*choice*** - -Designates the side of the surface to which the gain is to be targeted: - - ---------- ----------------------------------- - INTERIOR Apply gain to interior of surface - EXTERIOR Apply gain to exterior of surface - ---------- ----------------------------------- - - ------------------------------------------------------------ - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- ----------- ------------ --------------- - INTERIOR, Side of Yes constant - EXTERIOR surface - in zone - containing - window; or - INTERIOR - if both - sides are - in zone - containing - window. - - ------------------------------------------------------------ - - -**sgFSO=*float*** - -Fraction of solar gain directed to specified surface when the owning window's interior shading is in the open position (when the window's zone's shade closure (znSC) is 0). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------------------------------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1,and sum of window's sgFSO's $\le$ 1 *none* Yes monthly-hourly - -**sgFSC=*float*** - -Fraction of solar gain directed to specified surface when the owning window's interior shading is in the closed position. If the zone's shades are partly closed (znSC between 0 and 1), a proportional fraction between sgFSO and sgFSC is used. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------------------------------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1, and sum of window's sgFSC's $\le$ 1 *sgFSO* No monthly-hourly - -**endSGDist** - -Optionally indicates the end of the solar gain distribution definition. Alternatively, the end of the solar gain distribution definition can be indicated by END or by just beginning another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/shade.md b/doc/test/resources/shade.md deleted file mode 100644 index 4b5b22341..000000000 --- a/doc/test/resources/shade.md +++ /dev/null @@ -1,128 +0,0 @@ -# SHADE - -SHADE constructs a subobject associated with the current WINDOW that represents fixed shading devices (overhangs and/or fins). A window may have at most one SHADE and only windows in vertical surfaces may have SHADEs. A SHADE can describe an overhang, a left fin, and/or a right fin; absence of any of these is specified by omitting or giving 0 for its depth. SHADE geometry can vary on a monthly basis, allowing modeling of awnings or other seasonal shading strategies. - - -**shName** - -Name of shade; follows the word "SHADE" if given. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**ohDepth=*float*** - -Depth of overhang (from plane of window to outside edge of overhang). A zero value indicates no overhang. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft *x* $\ge$ 0 0 No monthly-hourly - -**ohDistUp=*float*** - -Distance from top of window to bottom of overhang. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft *x* $\ge$ 0 0 No monthly-hourly - -**ohExL=*float*** - -Distance from left edge of window (as viewed from the outside) to the left end of the overhang. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft *x* $\ge$ 0 0 No monthly-hourly - -**ohExR=*float*** - -Distance from right edge of window (as viewed from the outside) to the right end of the overhang. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft *x* $\ge$ 0 0 No monthly-hourly - -**ohFlap=*float*** - -Height of flap hanging down from outer edge of overhang. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft *x* $\ge$ 0 0 No monthly-hourly - -**lfDepth=*float*** - -Depth of left fin from plane of window. A zero value indicates no fin. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft *x* $\ge$ 0 0 No monthly-hourly - -**lfTopUp=*float*** - -Vertical distance from top of window to top of left fin. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft *x* $\ge$ 0 0 No monthly-hourly - -**lfDistL=*float*** - -Distance from left edge of window to left fin. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft *x* $\ge$ 0 0 No monthly-hourly - -**lfBotUp=*float*** - -Vertical distance from bottom of window to bottom of left fin. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft *x* $\ge$ 0 0 No monthly-hourly - -**rfDepth=*float*** - -Depth of right fin from plane of window. A 0 value indicates no fin. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft *x* $\ge$ 0 0 No monthly-hourly - -**rfTopUp=*float*** - -Vertical distance from top of window to top of right fin. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft *x* $\ge$ 0 0 No monthly-hourly - -**rfDistR=*float*** - -Distance from right edge of window to right fin. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft *x* $\ge$ 0 0 No monthly-hourly - -**rfBotUp=*float*** - -Vertical distance from bottom of window to bottom of right fin. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft *x* $\ge$ 0 0 No monthly-hourly - -**endShade** - -Optional to indicate the end of the SHADE definition. Alternatively, the end of the shade definition can be indicated by END or the declaration of another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/surface.md b/doc/test/resources/surface.md deleted file mode 100644 index 2c1baa83d..000000000 --- a/doc/test/resources/surface.md +++ /dev/null @@ -1,304 +0,0 @@ -# SURFACE - -Surface constructs a ZONE subobject of class SURFACE that represents a surrounding or interior surface of the zone. Internally, SURFACE generates a QUICK surface (U-value only), a DELAYED (massive) surface (using the finite-difference mass model), interzone QUICK surface, or interzone DELAYED surface, as appropriate for the specified construction and exterior conditions. - -**sfName** - -Name of surface; give after the word SURFACE. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**sfType=*choice*** - -Type of surface: - - ------------- --------------------------------------------------------- - FLOOR Surface defines part or all of the "bottom" of the zone; - it is horizontal with inside facing up. The outside of - the surface is not adjacent to the current zone. - - WALL Surface defines a "side" of the zone; its outside is not - adjacent to the current zone. - - CEILING Surface defines part or all of the "top" of the zone with - the inside facing down. The outside of the surface is not - adjacent to the current zone. - ------------- --------------------------------------------------------- - -sfType is used extensively for default determination and input checking, but does not have any further internal effect. The Floor, Wall, and Ceiling choices identify surfaces that form boundaries between the zone and some other condition. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------- ------------- -------------- ----------------- - FLOOR WALL CEILING *none* Yes constant - -**sfArea=*float*** - -Gross area of surface. (CSE computes the net area for simulation by subtracting the areas of any windows and doors in the surface.). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft^2^ *x* $>$ 0 *none* Yes constant - -**sfTilt=*float*** - -Surface tilt from horizontal. Values outside the range 0 to 360 are first normalized to that range. The default and allowed range depend on sfType, as follows: - - ------------------ ------------------------------------------- - sfType = FLOOR *sfTilt*=180, default = 180 (fixed value) - sfType = WALL 60 $<$ *sfTilt* $<$ 180, default = 90 - sfType = CEILING 0 $\leq$ *sfTilt* $\leq$ 60, default = 0 - ------------------ ------------------------------------------- - - **Units** **Legal Range / Default** **Required** **Variability** - ----------- ------------------------------------ -------------- ----------------- - degrees Dependent upon *sfType. See above* No constant - -**sfAzm=*float*** - -Azimuth of surface with respect to znAzm. The azimuth used in simulating a surface is bldgAzm + znAzm + sfAzm; the surface is rotated if any of those are changed. Values outside the range 0 to 360 are normalized to that range. Required for non-horizontal surfaces. - - --------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ------------ ----------- ------------ --------------- - degrees unrestricted *none* Required if constant - *sfTilt* - $\neq$ 0 - and *sfTilt* - $\neq$ 180 - - --------------------------------------------------------------- - -**sfModel=*choice*** - -Provides user control over how program models this surface: - - ----------------------------------- ----------------------------------- - QUICK Surface is modeled using a simple - conductance. Heat capacity effects - are ignored. Either sfCon or sfU - (next) can be specified. - - DELAYED, DELAYED\_HOUR, Surface is modeled using a - DELAYED\_SUBHOUR multi-layer finite difference - technique that represents heat - capacity effects. If the time - constant of the surface is too - short to accurately simulate, a - warning message is issued and the - Quick model is used. The program - **cannot** use the finite - difference model if sfU rather than - sfCon is specified. - - AUTO Program selects Quick or the - appropriate Delayed automatically - according to the time constant of - the surface (if sfU is specified, - Quick is selected). - - FD (or FORWARD\_DIFFERENCE) Selects the forward difference - model (used with short time steps - and the CZM zone model) - ----------------------------------- ----------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------------------------------------------- ------------- -------------- ----------------- - QUICK, DELAYED, DELAYED\_HOUR, DELAYED\_SUBOUR, AUTO, FD AUTO No constant - - -One of the following two parameters must be specified: - -**sfCon=*conName*** - -Name of CONSTRUCTION of the surface. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------------- ------------- -------------------- ----------------- - Name of a *CONSTRUCTION* *none* unless *sfU* given constant - -**sfU=*float*** - -Surface U-value (NOT including surface (air film) conductances). For surfaces for which no heat capacity is to be modeled, allows direct entry of U-value without defining a CONSTRUCTION. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------------- ----------------- ------------------------- ---------------------- ----------------- - Btuh/ft^2^-^o^F *x* $>$ 0 Determined from *sfCon* if *sfCon* not given constant - -**sfExCnd=*choice*** - -Specifies the thermal conditions assumed at surface exterior, and at exterior of any subobjects (windows or doors) belonging to current surface. The conditions accounted for are dry bulb temperature and incident solar radiation. - - -------------- --------------------------------------- - AMBIENT Exterior surface is exposed to the - "weather" as read from the weather - file. Solar gain is calculated using - solar geometry, sfAzm, sfTilt, and - sfExAbs. - - SPECIFIEDT Exterior surface is exposed to solar - radiation as in AMBIENT, but the dry - bulb temperature is calculated with a - user specified function (sfExT). - sfExAbs can be set to 0 to eliminate - solar effects. - - ADJZN Exterior surface is exposed to another - zone, whose name is specified by - sfAdjZn. Solar gain is 0 unless gain is - targeted to the surface with SGDIST - below. - - ADIABATIC Exterior surface heat flow is 0. - Thermal storage effects of delayed - surfaces are modeled. - -------------- --------------------------------------- - -**sfInH=*float*** - -Inside surface (air film) conductance. Ignored for sfModel = Forward\_Difference. Default depends on the surface type. - - --------------------------- ------ - sfType = FLOOR or CEILING 1.32 - other 1.5 - --------------------------- ------ - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------------- ----------------- ------------- -------------- ----------------- - Btuh/ft^2^-^o^F *x* $>$ 0 *see above* No constant - -**sfExH=*float*** - -Outside surface (air film) conductance. Ignored for sfModel = Forward\_Difference. The default value is dependent upon the exterior conditions: - - ------------------------ --------------------------------------- - sfExCnd = AMBIENT dflExH (Top-level member, described - above) - - sfExCnd = SPECIFIEDT dflExH (described above) - - sfExCnd = ADJZN 1.5 - - sfExCnd = ADIABATIC not applicable - ------------------------ --------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------------- ----------------- ------------- -------------- ----------------- - Btuh/ft^2^-^o^F *x* $>$ 0 see above No constant - -**sfExAbs=*float*** - -Surface exterior absorptivity. - - ------------------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ----------- ----------- ----------------------- --------------- - (none) 0 $\le$ *x* 0.5 Required if *sfExCon* = monthly- - $\le$ 1 AMBIENT or *sfExCon* = hourly - SPECIFIEDT - ------------------------------------------------------------------------- - -**sfInAbs=*float*** - -Surface interior solar absorptivity. - - ---------------------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ------------ ------------------------ ------------ --------------- - (none) 0 $\le$ *x* sfType = CEILING, 0.2;\ No monthly- - $\le$ 1 sfType = WALL, 0.6;\ hourly - sfType = FLOOR, 0.8 - ---------------------------------------------------------------------------- - -**sfExEpsLW=*float*** - -Surface exterior long wave (thermal) emittance. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - (none) 0 $\le$ *x* $\le$ 1 0.9 No constant - -**sfInEpsLW=*float*** - -Surface interior long wave (thermal) emittance. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - (none) 0 $\le$ *x* $\le$ 1 0.9 No constant - -**sfExT=*float*** - -Exterior air temperature. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- ------------------------------------ ----------------- - ^o^F *unrestricted* *none* Required if *sfExCon* = SPECIFIEDT hourly - -**sfAdjZn=*znName*** - -Name of adjacent zone; used only when sfExCon is ADJZN. Can be the same as the current zone. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------ ------------- ------------------------------------- ----------------- - name of a *ZONE* *none* Required when
*sfExCon* = ADJZN constant - -**sfGrndRefl=*float*** - -Ground reflectivity for this surface. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ------------------ - fraction 0 $\leq$ *x* $\leq$ 1 grndRefl No Monthly - Hourly - -**endSurface** - -Optional to indicates the end of the surface definition. Alternatively, the end of the surface definition can be indicated by END, or by beginning another SURFACE or other object definition. If used, should follow the definitions of the SURFACE's subobjects -- DOORs, WINDOWs, SHADEs, SGDISTs, etc. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - -The following tables summarize the defaults and legal ranges of surface members for each sfType. "n.a." indicates "not applicable" and also "not allowed". - - ------------------------------------------------------------------------- - **Member** **WALL** **FLOOR** **CEILING** - ---------- ------------------------- ------------ ----------------------- - sfTilt optional, default=90, 60 n.a. (fixed optional, default=0, 0 - $<$ *sfTilt* $<$ 180 at 180) $\le$ *sfTilt* $\le$ 60 - - sfAzm **required** n.a. **required if sfTilt - $>$ 0** - ------------------------------------------------------------------------- - - ----------------------------------------------------------------------- - **Member** **WALL**/**FLOOR**/**CEILING** - ----------- ------------------------------------------------------------ - sfArea **required** - - sfCon **required unless sfU given** - - sfU **required unless sfCon given** - - sfInH optional, default = 1.5 - - sfExH optional, default per *sfExCon* - - sfExCnd optional, default = AMBIENT - - sfExAbs optional if *sfExCon* = AMBIENT or *sfExCon* = SPECIFIEDT - (default = .5), else n.a. - - sfExT **required if sfExCon = SPECIFIEDT; else n.a.** - - sfAdjZn **required if sfExCon = ADJZN; else n.a.** - - sfGrndRefl optional, default to grndRefl - ----------------------------------------------------------------------- - - diff --git a/doc/test/resources/terminal.md b/doc/test/resources/terminal.md deleted file mode 100644 index 77a45d6f3..000000000 --- a/doc/test/resources/terminal.md +++ /dev/null @@ -1,392 +0,0 @@ -# TERMINAL - -TERMINAL constructs an object to represent equipment that transfers energy to or from the current zone from a local heating device (coil, etc.) and/or one AIRHANDLER. A terminal serves a zone (and, internally, is owned by a zone). Up to three terminals can be defined for each zone. - -Only zones having znModel=CNE can be served by a terminal. - -A terminal can have local heating *capability,* using a simulated reheat coil, baseboard heater, etc. and/or air heating/cooling capability, using a simulated variable air volume (VAV) box connected to an AIRHANDLER (Section 0). Since a TERMINAL can only connect to a single air handler, use two terminals per zone to model systems where separate air handlers supply hot and cool air (dual duct). If a local heat capability utilizes the air flow (e.g. a reheat coil), model it in the terminal connected to the air handler; if a local heat capability is independent of air flow (e.g. electric baseboard heaters), it doesn't matter whether you model it with a separate terminal. - -Each capability can be *set output*, in which the output is constant or determined by external conditions such as in an outdoor reset baseboard situation or *set temperature*, in which the output is modulated to maintain the zone temperature at a set point. Set temperature operation is established by giving the setpoint for the capability (tuTLh, tuTH, tuTC); set output operation is established by specifying the local heat output (tuQMnLh) or air flow (tuVfMn) without specifying a setpoint. - -Hourly variable expressions may be used as desired to schedule setpoints and flow limits. Figure 1 shows \[need sentence describing the figure.\] - -![Insert Figure Title](media/image1.png) - -**tuName** - -Optional name of terminal; follows the word "TERMINAL" if given. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* No constant - -## TERMINAL Local Heating - -These commands establish the TERMINAL's local heating capability and determine whether it operates in set output or set temperature fashion. Additional details of the local heating mechanism are given with commands described below under *terminal heating coil*. - -*Either tuTLh or tuQMnLh must be given to establish the TERMINAL's local heat capability:* - -**tuTLh=*float*** - -Local heating thermostat setpoint. Hourly expression may be used to schedule as desired. Giving this implies *set temperature* local heat from this terminal; omitting implies no local heat or, if tuQMnLh is given, set output local heat. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------- -------------- ----------------- - ^o^F *x* $>$ 0 *no thermostat control* No hourly - -**tuQMnLh=*float*** - -Minimum local heat output or set local heat output. If tuTLh is given, this is the minimum output, used when the thermostat is not calling for (local) heat. If tuTLh is not given, giving tuQMnLh implies *set output* local heat and specifies the set output level. An hourly expression may be used to schedule as desired. - - --------------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ----------- ---------------- -------------- --------------- - Btuh *x* $\ge$ 0 0 if tuTLh given For set output hourly - else no local local heat - heat - --------------------------------------------------------------------- - -The next three items are allowed only for thermostat controlled local heating (tuTLh given): - -**tuQMxLh=*float*** - -Maximum desired power, used when thermostat is calling for heat continuously, subject to coil capacity, and to HEATPLANT limitations where pertinent (see *tuhcCaptRat* description). If *tuQMxLh* is less than minimum power (tuQMnLh), the latter is used, effectively disabling setpoint control. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- --------------------- ----------------- - Btuh *x* $\ge$ 0 Yes, if tuTLh given hourly - -**tuPriLh=*int*** - -Setpoint priority: when there is more than one capability with the same setpoint, that with the highest priority is used first. The defaults for tuPriLh (100) and tuPriH (1) cause maximum air heat to be used before local heat, if both are pre\*sent and the setpoints are the same. Two or more equal setpoints with equal priorities in the ZONE cause an error, even if in different TERMINALs. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $>$ 0 100 No constant - -**tuLhNeedsFlow=*choice*** - - ------- --------------------------------------- - YES local heat being modeled requires - terminal air flow (e.g. reheat coil). - Local heat is then disabled when there - is zero air flow through the terminal - (when simulated VAV damper set to 0 - flow, or when air handler fan and - terminal fan both off) - - NO no local heat or does not require air - flow (e.g. baseboard heaters). - ------- --------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - YES, NO NO No constant - -## TERMINAL Air Heating and Cooling - -These commands establish whether the TERMINAL has air capability (heat, cool, or both), and whether the capability operates in *set temperature* mode (tuTH and/or tuTLh given) or *set output* mode (tuVfMn given without tuTH and tuTLh). They further establish the setpoints, flow limits, leakages, and losses. - -Caution should be exercised in using air heat and air cooling in the same terminal. The supply air for both comes from the same air handler; it is up to you to make sure the terminal only calls for heat when the air handler is blowing hot air and only calls for cooling when the air handler is blowing cold air. This is done by carefully coordinating the variable expressions for terminal air heating and cooling setpoints (tuTH and tuTC here) and the air handler supply temperature setpoint (AIRHANDLER ahTsSp, Section 0). - -**tuAh=*ahName*** - -Name of air handler supplying this terminal. - - ----------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- ------------ ------------- ------------ --------------- - Btu/F name of an *If omitted*, No constant - *AIRHANDLER* terminal has - no air - heating nor - cooling - capability. - - ----------------------------------------------------------------- - -If both of the following (tuTH and tuTC) are specified, be careful not to accidentally permit the heating setpoint to be active when the air handler is blowing cold air, or vice versa. CSE's simulated thermostats and VAV boxes are at least as dumb as their real counterparts; if the thermostat calls for heat, the VAV damper will open even if the supply air is colder than the zone. To schedule deactivation of the air heating or cooling capability, schedule an extreme setpoint, such as 1 for heating or 199 for cooling. - -Giving neither tuTH nor tuTC implies that the terminal has no *set temperature* air capability; it will then have *set output* air capability if tuVfMn is given. - -**tuTH=*float*** - -Air heating thermostat set point; implies *set temperature* air capability. May be scheduled as desired with an hourly expression; to disable set temperature operation at certain times (as when air handler is scheduled to supply cold air), schedule a low temperature such as 1. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------------------------------- -------------- ----------------- - F *x* $\ge$ 0 No thermostat-controlled air heating No hourly - -**tuTC=*float*** - -Air cooling thermostat set point; implies *set temperature*air capability. May be scheduled as desired; to disable at certain times, schedule an extreme temperature such as 199. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------------------------------- -------------- ----------------- - F *x* $\ge$ 0 No thermostat-controlled air cooling No hourly - -**tuVfDs=*float*** - -Design air flow rate. ("Vf" in member names stands for "Volumetric Flow", to emphasize that flow is specified by volume at actual air temperature (cfm), not by mass (lb/hr), nor heat capacity (Btuh/F), etc.) - -The design air flow rate is used to apportion the available cfm among the terminals when the total flow demand of the terminals exceeds the air handler's supply fan capacity; it is unimportant (but may nevertheless be required) if the total of the tuVfMx's of the terminals on the air handler is not greater than the air handler's fan capacity including overrun. - -CSE will default tuVfDs to the largest of tuVfMn, tuVfMxH, and tuVfMxC unless a variable expression is given for any of them. Thus, you must given tuVfDs only when a variable minimum or maximum flow is used, or when you wish to override the default cfm apportionment under fan overload conditions. - - ------------------------------------------------------------ - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- ----------- ------------ --------------- - cfm *x* largest of Yes, if hourly - $\ge$ 0 tuVfMn, tuVfMn, - tuVfMxH, tuVfMxH, or - and tuVfMxC tuVfMxC is - if all are variable - constant - - ------------------------------------------------------------ - -**tuVfMn=*float*** - -Minimum terminal air flow rate or set output air flow rate. An hourly expression may be used to schedule the minimum or set output flow as desired. - -If neither tuTH nor tuTC is given, giving tuVfMn implies *set output* air capability for the terminal; the tvVfMn value is the set output cfm. - -If either setpoint (tuTH or tuTC) is given, tuVfMn is the cfm used when the thermostat is not calling for heat nor cold; it might be non-0, for example, to meet ventilation requirements. If tuVfMn is larger than tuVfMxH (when heating) or tuVfMxC (when cooling), it overrules them; thus a minimum (e.g. ventilation) requirement need not be considered in formulating expressions for the maximum flows. - - ------------------------------------------------------------ - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- ----------- ------------ --------------- - cfm *x* $\ge$ 0 if tuTH For set hourly - 0 or tuTC output air - given, operation - else no air - heat/cool - - ------------------------------------------------------------ - -**tuVfMxH=*float*** - -Maximum heating air flow rate, subject to air handler limitations. This terminal flow is used when the thermostat is calling for heat continuously. Hourly schedulable. If not greater than tuVfMn, the latter flow is used, thus disabling thermostat control. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- ----------------- ----------------- - cfm *x* $\ge$ 0 *none* If *tuTH* given hourly - -**tuVfMxC=*float*** - -Maximum cooling air flow rate, before air handler limitations, used when the thermostat is calling for cooling continuously. tuVfMn overrides if larger. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- ----------------- ----------------- - cfm *x* $\ge$ 0 *none* If *tuTC* given hourly - -**tuPriC=*int*** - -Cool setpoint priority. The lowest numbered priority is used first when there are equal setpoints in a zone; equal heat or cool setpoints with equal priority in same ZONE (even if on different TERMINALs) constitute an error. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $>$ 0 1 No constant - -**tuPriH=*int*** - -Heat setpoint priority. Lowest numbered priority is used first when there are equal setpoints in a zone. Default for tuPriLh is larger, so that by default local heat is not used unless maximum air heat is insufficient, when both local heat and air heat are present in zone and have same setpoint. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $>$ 0 1 No constant - -**tuSRLeak=*float*** - -Leakage of supply air to return, increasing supply volume and return temperature. Note that this is a fraction of current cfm, whereas air handler leak (before VAV dampers) is a fraction of *maximum* cfm. TfanOffLeak is added to this if terminal has a fan that is not running (future, 7-92). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 0.05 No constant - -**tuSRLoss=*float*** - -Supply air to return plenum heat loss as a fraction of supply air to return air temperature difference. Not allowed if return is ducted (no plenum). - -*NOT IMPLEMENTED as of July 1992 -- Plenums are unimplemented.* - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 0.1 No constant - -## TERMINAL Heating Coil - -These members are disallowed if terminal has no local heating capability, that is, if neither tuTLh nor tuQMnLh is given. - -**tuhcType=*choice*** - -Local heating coil type: - - ------------ --------------------------------------- - ELECTRIC Electric coil or heater, including - separate heaters such as electric - baseboards. 100% efficient; rated - capacity always available. - - HW Hot water coil, using hot water from a - HEATPLANT. Available capacity may be - limited by HEATPLANT total capacity as - well as by coil rated capacity. - ------------ --------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------------------------------ -------------- ----------------- - ELECTRIC (future: HW) ELECTRIC, or NONE if no local heat No constant - -**tuhcCaptRat=*float*** - -Rated capacity of the heating coil. The coil will never supply more heat than its capacity, even if tuQMxLh and/or tuQMnLh is greater. For an ELECTRIC coil, the capacity is always the rated capacity. For an HW coil, the capacity is the rated capacity when the HEATPLANT can supply it; when the total heat demanded from the HEATPLANT by all the HW coils in TERMINALs and AIRHANDLERs exceeds the HEATPLANT's capacity, CSE reduces the capacities of all HW coils proportionately until the plant is not overloaded. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - Btu/hr *x* $>$ 0 *none* Yes constant - -**tuhcMtr=*mtrName*** - -Name of meter, if any, which accumulates input energy for this coil. End use category used is "Htg". Not allowed when tuhcType is HW, as the energy for an HW coil comes through a HEATPLANT; the input energy is accumulated to a meter by the HEATPLANT. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ---------------- -------------- ----------------- - name of a METER *not recorded* No constant - -**tuhcHeatplant=heat*plantName*** - -Name of HEATPLANT for HW coil; disallowed for other coil types. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- ------------------- ----------------- - name of a HEATPLANT *none* If tuhcType is HW constant - -## TERMINAL Fan - -Presence of a terminal fan is indicated by specifying a tfanType value other than NONE. - -Terminal fans are *NOT IMPLEMENTED* as of July 1992. - -**tfanType=*choice*** - -Choice of: - - ------------ --------------------------------------- - NONE No fan in this TERMINAL (default); - input for other terminal fan members - disallowed. - - SERIES Fan runs whenever scheduled ON (see - tfanSched, next); if VAV cfm < - terminal fan cfm (tfanVfDs), the - additional flow comes from the return - air. - - PARALLEL Fan runs when scheduled ON (see - tfanSched) and terminal's simulated VAV - cfm is less than tfanVfDs plus tuVfMn - ?? plus tuVfMn??. Terminal fan cfm is - added to VAV cfm from AIRHANDLER to get - cfm to ZONE. - ------------ --------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------ ------------- --------------------- ----------------- - NONE, SERIES, PARALLEL NONE Yes, if fan present constant - -**tfanSched=*choice*** - -Terminal fan schedule. May be scheduled with an hourly variable expression. - - ----------- --------------------------------------- - OFF fan does not run - - ON fan may run - - HEATING fan may run when local heat is in use - - VAV fan may run when AIRHANDLER supply fan - is on or when doing setback headting - and ssCtrl is ZONE\_HEAT or BOTH - (future). - ----------- --------------------------------------- - -A series fan (see tfanType) runs whenever on; a parallel fan runs only enough to keep terminal cfm at terminal minimum plus fan cfm; thus it may not run at all when the VAV flow from the AIRHANDLER is sufficient. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- ---------------------- ----------------- - OFF, ON, HEATING, VAV *none* Yes (if fan present) hourly - -**tfanOffLeak=*float*** - -Backdraft leakage when terminal fan off., as a fraction of tfanVfDs. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 .1 if fan present No constant - -**tfanVfDs=*float*** - -Terminal fan design flow rate. To specify .x times zone or terminal cfm, use a CSE expression. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- ---------------------- ----------------- - cfm *x* $\le$ 0 *none* Yes (if fan present) constant - -**tfanPress=*float*** - -Terminal fan external static pressure. - - **Units** **Legal Range** **Default** **Required** **Variability** - ------------ ----------------- ------------- -------------- ----------------- - inches H2O *x* $\ge$ 0 0.3 No constant - -**tfanEff=*float*** - -Terminal fan/motor/drive combined efficiency. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 0.08 No constant - -**tfanCurvePy=*k0, k1, k2, k3, x0*** - -*k0* through *k3* are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow *x0*. Up to five *floats* may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: - -$$z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3$$ - -where: - -- $x$ is the relative fan air flow (as fraction of *tfanVfDs*; 0 $\le$ x $\le$ 1); -- $x_0$ is the minimum relative air flow (default 0); -- $(x - x_0)|$ is the "positive difference", i.e. $(x - x_0)$ if $x > x_0$; else 0; -- $z$ is the relative energy consumption. - -If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------------------- -------------- ----------------- - *0, 1, 0, 0, 0 (linear)* No constant - -**tfanMtr=*mtrName*** - -Name of meter, if any, which is to record energy used by this terminal fan. The "fans" category is used. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------- -------------- ----------------- - *name of a METER* *not recorded* No constant - -**endTerminal** - -Optional to indicates the end of terminal definition. Alternatively, the end of the door definition can be indicated by END or by beginning another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/top-members.md b/doc/test/resources/top-members.md deleted file mode 100644 index d4210791e..000000000 --- a/doc/test/resources/top-members.md +++ /dev/null @@ -1,463 +0,0 @@ -# TOP Members - -The top-level data items (TOP members) control the simulation process or contain data that applies to the modeled building as a whole. No statement is used to begin or create the TOP object; these statements can be given anywhere in the input (they do, however, terminate any other objects being specified -- ZONEs, REPORTs, etc.). - -## TOP General Data Items - -**doMainSim=*choice*** - -Specifies whether the simulation is performed when a Run command is encountered. See also doAutoSize. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - NO,YES YES No constant - -**begDay=*date*** - -Date specifying the beginning day of the simulation performed when a Run command is encountered. See further discussion under endDay (next). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *date* Jan 1 No constant - -**endDay=*date*** - -Date specifying the ending day of the simulation performed when a Run command is encountered. - -The program simulates 365 days at most. If begDay and endDay are the same, 1 day is simulated. If begDay precedes endDay in calendar sequence, the simulation is performed normally and covers begDay through endDay inclusive. If begDay follows endDay in calendar sequence, the simulation is performed across the year end, with Jan 1 immediately following Dec 31. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *date* Dec 31 No constant - -**jan1DoW=*choice*** - -Day of week on which January 1 falls. - - ------------------------------------------------------------------------ - **Units** **Legal Range** **Default** **Required** **Variability** - ---------- ---------------- ------------ ------------- ----------------- - SUN\ THU No constant - MON\ - TUE\ - WED\ - THU\ - FRI\ - SAT - ------------------------------------------------------------------------ - -**workDayMask=*int* TODO** - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - Mon-fri? No constant - -**wuDays=*int*** - -Number of "warm-up" days used to initialize the simulator. Simulator initialization is required because thermal mass temperatures are set to arbitrary values at the beginning of the simulation. Actual mass temperatures must be established through simulation of a few days before thermal loads are accumulated. Heavier buildings require more warm-up; the default values are adequate for conventional construction. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $\geq$ 0 7 No constant - -**nSubSteps=*int*** - -Number of subhour steps used per hour in the simulation. 4 is the time-honored value for models using CNE zones. A value of 30 is typically for CSE zone models. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $>$ 0 4 No constant - -**tol=*float*** - -Endtest convergence tolerance for internal iteration in CNE models (no effect for CSE models) Small values for the tolerance cause more accurate simulations but slower performance. The user may wish to use a high number during the initial design process (to quicken the runs) and then lower the tolerance for the final design (for better accuracy). Values other than .001 have not been explored. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $>$ 0 .001 No constant - -**humTolF=*float*** - -Specifies the convergence tolerance for humidity calculations in CNE models (no effect in for CSE models), relative to the tolerance for temperature calculations. A value of .0001 says that a humidity difference of .0001 is about as significant as a temperature difference of one degree. Note that this is multiplied internally by "tol"; to make an overall change in tolerances, change "tol" only. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $>$ 0 .0001 No - -**ebTolMon=*float*** - -Monthly energy balance error tolerance for internal consistency checks. Smaller values are used for testing the internal consistency of the simulator; values somewhat larger than the default may be used to avoid error messages when it is desired to continue working despite a moderate degree of internal inconsistency. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $>$ 0 0.0001 No constant - -**ebTolDay=*float*** - -Daily energy balance error tolerance. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $>$ 0 0.0001 No constant - -**ebTolHour=*float*** - -Hourly energy balance error tolerance. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $>$ 0 0.0001 No constant - -**ebTolSubhr=*float*** - -Sub-hourly energy balance error tolerance. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $>$ 0 0.0001 No constant - -**humMeth=*choice*** - -Developmental zone humidity computation method choice for CNE models (no effect for CSE models). - - ------------ --------------------------------------------------------- - ROB Rob's backward difference method. Works well within - limitations of backward difference approach. - - PHIL Phil's central difference method. Should be better if - perfected, but initialization at air handler startup is - unresolved, and ringing has been observed. - ------------ --------------------------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ROB, PHIL ROB No constant - -**dflExH=*float*** - -Default exterior surface (air film) conductance used for opaque and glazed surfaces exposed to ambient conditions in the absence of explicit specification. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------------- ----------------- ------------- -------------- ----------------- - Btuh/ft^2^-^o^F *x* $>$ 0 2.64 No constant - -**bldgAzm=*float*** - -Reference compass azimuth (0 = north, 90 = east, etc.). All zone orientations (and therefore surface orientations) are relative to this value, so the entire building can be rotated by changing bldgAzm only. If a value outside the range 0^o^ $\leq$ *x* $<$ 360^o^ is given, it is normalized to that range. - - **Units** **Legal Range** **Default** **Required** **Variability** - ------------- ----------------- ------------- -------------- ----------------- - ^o^ (degrees) unrestricted 0 No constant - -**elevation=*float*** - -Elevation of the building site. Used internally for the computation of barometric pressure and air density of the location. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- --------------- -------------- ----------------- - ft *x* $\ge$ 0 0 (sea level) No constant - -**runTitle=*string*** - -Run title for the simulation. Appears in report footers, export headers, and in the title lines to the INP, LOG, and ERR built-in reports (these appear by default in the primary report file; the ERR report also appears in the error message file, if one is created). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------ -------------- ----------------- - *63 characters* blank (no title) No constant - -**runSerial=*int*** - -Run serial number for the simulation. Increments on each run in a session; appears in report footers. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------- ------------- -------------- ----------------- - 0 $\leq$ *x* $\leq$ 999 0 No constant - -## TOP Daylight Saving Time Items - -Daylight savings starts by default at 2:00 a.m. of the second Sunday in March. Internally, hour 3 (2:00-3:00 a.m.) is skipped and reports for this day show only 23 hours. Daylight savings ends by default at 2:00 a.m. of the first Sunday of November; for this day 25 hours are shown on reports. CSE fetches weather data using standard time but uses daylight savings time to calculate variable expressions (and thus all schedules). - -**DT=*choice*** - -Whether Daylight Savings Time is to be used for the current run. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - YES, NO YES No constant - -**DTbegDay=*date*** - -Start day for daylight saving time (assuming DT=Yes) - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------------------- -------------- ----------------- - *date* *second Sunday in March* No constant - -**DTendDay=*date*** - -End day for daylight saving time (assuming DT=Yes) - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ---------------------------- -------------- ----------------- - *date* *first Sunday in November* No constant - -## TOP Weather Data Items - - -The following system variables (4.6.4) are determined from the weather file for each simulated hour: - - ---------------- ----------------------------------------------------- - \$radBeam beam irradiance on tracking surface (integral for - hour, Btu/ft^2^). - - \$radDiff diffuse irradiance on a horizontal surface (integral - for hour, Btu/ft^2^). - - \$tDbO dry bulb temp (^o^F). - - \$tWbO wet bulb temp (^o^F). - - \$wO humidity ratio - - \$windDirDeg wind direction (degrees, NOT RADIANS; 0=N, 90=E). - - \$windSpeed wind speed (mph). - ---------------- ----------------------------------------------------- - -The following are the terms determined from the weather file for internal use, and can be referenced with the probes shown. - - @Top.depressWbWet bulb depression (F). - - @Top.windSpeedSquaredWind speed squared (mph2). - -**wfName=*string*** - -Weather file path name for simulation. The file should be in the current directory, in the directory CSE.EXE was read from, or in a directory on the operating system PATH. (?? Temporarily, backslash (\\) characters in path names must be doubled to work properly (e.g. "\\\\wthr\\\\cz01.cec"). This will be corrected.). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------- ------------- -------------- ----------------- - file name,path optional Yes constant - -**skyModel=*choice*** - -Selects sky model used to determine relative amounts of direct and diffuse irradiance. - - ------------- --------------------------------- - ISOTROPIC traditional isotropic sky model - ANISOTROPIC Hay anisotropic model - ------------- --------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - ISOTROPIC ANISOTROPIC ANISOTROPIC No constant - -The reference temperature and humidity are used to calculate a humidity ratio assumed in air specific heat calculations. The small effect of changing humidity on the specific heat of air is generally ignored in the interests of speed, but the user can control the humidity whose specific heat is used through the refTemp and refRH inputs. - -**refTemp=*float*** - -Reference temperature (see above paragraph). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* $\geq$ 0 60^o^ No constant - -**refRH=*float*** - -Reference relative humidity (see above). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - 0 $\leq$ *x* $\leq$ 1 0.6 No constant - -**grndRefl=*float*** - -Global ground reflectivity, used except where other value specified with sfGrndRefl or wnGrndRefl. This reflectivity is used in computing the reflected beam and diffuse radiation reaching the surface in question. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - 0 $\leq$ *x* $\leq$ 1 0.2 No Monthly-Hourly - -The following values modify weather file data, permitting varying the simulation without making up special weather files. For example, to simulate without the effects of wind, use windF = 0; to halve the effects of diffuse solar radiation, use radDiffF = 0.5. Note that the default values for windSpeedMin and windF result in modification of weather file wind values unless other values are specified. - -**windSpeedMin=*float*** - -Minimum value for wind speed - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - mph *x* $\geq$ 0 0.5 No constant - -**windF=*float*** - -Wind Factor: multiplier for wind speeds read from weather file. windF is applied *after* windSpeedMin. Note that windF does *not* effect infiltration rates calculated by the Sherman-Grimsrud model (see e.g. ZONE.infELA). However, windF does modify AirNet flows (see IZXFER). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $\geq$ 0 0.25 No constant - -**terrainClass=*int*** - -Specifies characteristics of ground terrain in the project region. - - ------------ --------------------------------------------------------- - 1 ocean or other body of water with at least 5 km - unrestriced expanse - - 2 flat terrain with some isolated obstacles (buildings or - trees well separated) - - 3 rural areas with low buildings, trees, etc. - - 4 urban, industrial, or forest areas - - 5 center of large city - ------------ --------------------------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - 1 $\leq$ *x* $\leq$ 5 4 No constant - - -**radBeamF=*float*** - -Multiplier for direct normal (beam) irradiance - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $\geq$ 0 1 No constant - -**radDiffF=*float*** - -Multiplier for diffuse horizonal irradiance. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $\geq$ 0 1 No constant - -## TOP Report Data Items - -These items are used in page-formatted report output files. See REPORTFILE, Section 5.245.21, and REPORT, Section 5.25. - -**repHdrL=*string*** - -Report left header. Appears at the upper left of each report page unless page formatting (rfPageFmt) is OFF. If combined length of repHdrL and repHdrR is too large for the page width, one or both will be truncated. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *blank* No constant?? - -**repHdrR=*string*** - -Report right header. Appears at the upper right of each report page unless page formatting (rfPageFmt) is OFF. If combined length of repHdrL and repHdrR is too large for the page width, one or both will be truncated. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------------------- -------------- ----------------- - *blank*(no right header) No constant?? - -**repLPP=*int*** - -Total lines per page to be assumed for reports. Number of lines used for text (including headers and footers) is repLPP - repTopM - repBotM. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - lines *x* $\geq$ 50 66 No constant?? - -**repTopM=*int*** - -Number of lines to be skipped at the top of each report page (prior to header). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------ ------------- -------------- ----------------- - lines 0 $\geq$ *x* $\geq$ 12 3 No constant - -**repBotM=*int*** - -Number of lines reserved at the bottom of each report page. repBotM determines the position of the footer on the page (blank lines after the footer are not actually written). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------ ------------- -------------- ----------------- - lines 0 $\leq$ *x* $\leq$ 12 3 No constant - -**repCPL=*int*** - -Characters per line for report headers and footers, user defined reports, and error messages. CSE writes simple ASCII files and assumes a fixed (not proportional) spaced printer font. Many of the built-in reports now (July 1992) assume a line width of 132 columns. - - **Units** **Legal Range** **Default** **Required** **Variability** - ------------ -------------------------- ------------- -------------- ----------------- - characters 78 $\leq$ *x* $\leq$ 132 78 No constant - -**repTestPfx=*string*** - -Report test prefix. Appears at beginning of report lines that are expected to differ from prior runs. This is useful for “hiding” lines from text comparison utilities in automated testing schemes. Note: the value specified with command line -x takes precedence over this input. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *blank* No constant?? - -## TOP Autosizing - -**doAutoSize=*choice*** - -Controls invocation of autosizing step prior to simulation. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - YES, NO NO No constant - -**auszTol=*float*** - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - .01 No constant - -**heatDsTDbO=*float*** - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F 0 No hourly - -**heatDsTWbO=*float*** - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - F 0 No hourly - -**coolDsMo=*??*** - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - F .01 No hourly - -## TOP Debug Reporting - -**verbose=*int*** - -Controls verbosity of screen remarks. Most possible remarks are generated during autosizing of CNE models. Little or no effect in CSE models. TODO: document options - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - 0 – 5 ? 1 No constant - -The following dbgPrintMask values provide bitwise control of addition of semi-formated internal results to the run report file. The values and format of debugging reports are modified as required for testing purposes. - -**dbgPrintMaskC=*int*** - -Constant portion of debug reporting control. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - 0 No constant - -**dbgPrintMask=*int*** - -Hourly portion of debug reporting control (generally an expression that evaluates to non-0 only on days or hours of interest). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - 0 No hourly - - diff --git a/doc/test/resources/towerplant.md b/doc/test/resources/towerplant.md deleted file mode 100644 index 4662bae5f..000000000 --- a/doc/test/resources/towerplant.md +++ /dev/null @@ -1,306 +0,0 @@ -# TOWERPLANT - -A TOWERPLANT object simulates a group of cooling towers which operate together to cool water for one or more CHILLERs and/or HPLOOP heat exchangers. There can be more than one TOWERPLANT in a simulation. Each CHILLER or hploop heat exchanger contains a pump (the "heat rejection pump") to circulate water through its associated TOWERPLANT. The circulating water is cooled by evaporation and conduction to the air; cooling is increased by operating fans in the cooling towers as necessary. These fans are the only energy consuming devices simulated in the TOWERPLANT. - -The TOWERPLANT models the leaving water temperature as a function of the entering water temperature, flow, outdoor air temperature, and humidity. The fans are operated as necessary to achieve a specified leaving water temperature setpoint, or as close to it as achievable. - -Two methods of staging the cooling tower fans in a TOWERPLANT are supported: "TOGETHER", under which all the tower fans operate together, at the same speed or cycling on and off at once, and "LEAD", in which a single "lead" tower's fan modulates for fine control of leaving water temperature, and as many additional towers fans as necessary operate at fixed speed. The water flows through all towers even when their fans are off; sometimes this will cool the water below setpoint with no fans operating. - -All the towers in a TOWERPLANT are identical, except that under LEAD staging, the towers other than the lead tower have one-speed fans. The group of towers can thus be described by giving the description of one tower, the number of towers, and the type of staging to be used. All of this information is given by TOWERPLANT members, so there is no need for individual TOWER objects. - -There is no provision for scheduling a TOWERPLANT: it operates whenever the heat rejection pump in one or more of its associated CHILLERs or HPLOOP heat exchangers operates. However, the setpoint for the water leaving the TOWERPLANT is hourly schedulable. - -**towerplantName** - -Name of TOWERPLANT object, given immediately after the word TOWERPLANT to begin the object's input. The name is used to refer to the TOWERPLANT in COOLPLANTs and HPLOOPs. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* Yes constant - -**tpTsSp=*float*** - -Setpoint temperature for water leaving towers. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 85 No hourly - -**tpMtr=*name of a METER*** - -METER object by which TOWERPLANT's fan input energy is to be recorded, in category "Aux". If omitted, energy use is not recorded, and thus cannot be reported. Towerplants have no modeled input energy other than for their fans (the heat rejection pumps are part of the CHILLER and HPLOOP objects). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ------------- -------------- ----------------- - *name of a METER* *none* No constant - -**tpStg=*choice*** - -How tower fans are staged to meet the load: - - ----------- ---------------------------------------------------------- - TOGETHER All fans operate at the same speed or cycle on and off - together. - - LEAD A single "Lead" tower's fan is modulated as required and - as many additional fans as necessary run at their (single) - full speed. - ----------- ---------------------------------------------------------- - -Whenever the heat rejection pump in a CHILLER or HPLOOP heat exchanger is on, the water flows through all towers in the TOWERPLANT, regardless of the number of fans operating. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - TOGETHER, LEAD TOGETHER No constant - -**ctN=*integer*** - -Number of towers in the TOWERPLANT. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* > 0 1 No constant - -**ctType=*choice*** - -Cooling tower fan control type: ONESPEED, TWOSPEED, or VARIABLE. This applies to all towers under TOGETHER staging. For LEAD staging, *ctType* applies only to the lead tower; additional towers have ONESPEED fans. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------------ ------------- -------------- ----------------- - ONESPEED, TWOSPEED, VARIABLE ONESPEED No constant - -**ctLoSpd=*float*** - -Low speed for TWOSPEED fan, as a fraction of full speed cfm. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------- ------------- -------------- ----------------- - 0 < *x* $\le$ 1 0.5 No constant - -Note: full speed fan cfm is given by *ctVfDs*, below. - -The rest of the input variables apply to each tower in the group; the towers are identical except for the single-speed fan on non-lead towers when *tpStg* is LEAD. - -The following two inputs permit computation of the tower fan electrical energy consumption: - -**ctShaftBhp=*float*** - -Shaft brake horsepower of each tower fan motor. - -The default value is the sum of the rejected (condenser) heats (including pump heat) at design conditions of the most powerful stage of each connected COOLPLANT, plus the design capacity of each connected HPLOOP heat exchanger, all divided by 290,000 and by the number of cooling towers in the TOWERPLANT. - - **Units** **Lgl Range** **Default** **Req'd** **Variability** - ----------- --------------- ----------------------------- ----------- ----------------- - Bhp *x* > 0 (sum of loads)/290000/*cTn* No constant - -**ctMotEff=*float*** - -Motor (and drive, if any) efficiency for tower fans. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* > 0 .88 No constant - -The next four items specify the coefficients of polynomial curves relating fan power consumption to average speed (cfm) for the various fan types. For the non-variable speed cases CSE uses linear polynomials of the form - -$$p = a + b \cdot \text{spd}$$ - -where *p* is the power consumption as a fraction of full speed power consumption, and *spd* is the average speed as a fraction of full speed. The linear relationship reflects the fact that the fans cycle to match partial loads. A non-0 value may be given for the constant part *a* to reflect start-stop losses. For the two speed fan, separate polynomials are used for low and high speed operation; the default coefficients assume power input varies with the cube of speed, that is, at low speed (*ctLoSpd*) the relative power input is *ctLoSpd3*. For the variable speed case a cubic polynomial is used. - -For each linear polynomial, two *float* expressions are given, separated by a comma. The first expression is the constant, *a*. The second expression is the coefficient of the average speed, *b*. Except for *ctFcLo*, *a* and *b* should add up to 1, to make the relative power consumption 1 when *spd* is 1; otherwise, CSE will issue a warning message and normalize them. - -**ctFcOne=*a, b*** - -Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for ONESPEED fan. For the one-speed case, the relative average speed *spd* is the fraction of the time the fan is on. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *a + b = 1.0* 0, 1 No constant - -**ctFcLo=*a, b*** - -Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for low speed of TWOSPEED fan, when *spd* $\le$ *ctLoSpd*. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ----------------- -------------- ----------------- - *a + b = 1.0* 0, *ctLoSpd^2^* No constant - -**ctFcHi=*a, b*** - -Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for high speed of TWOSPEED fan, when *spd* > *ctLoSpd*. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- --------------------------------------------------- -------------- ----------------- - *a + b = 1.0* *-ctLoSpd^2^ - ctLoSpd, ctLoSpd^2^ + ctLoSpd + 1* No constant - -**ctFcVar=*a, b, c, d*** - -For VARIABLE speed fan, four *float* values for coefficients of cubic fan power consumption polynomial of the form $p = a + b \cdot \text{spd} + c \cdot \text{spd}^2 + d \cdot \text{spd}^3$. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - *a + b + c + d = 1.0* 0, 0, 0, 1 No constant - -The next six items specify the tower performance under one set of conditions, the "design conditions". The conditions should be chosen to be representative of full load operating conditions. - -**ctCapDs=*float*** - -Design capacity: amount of heat extracted from water under design conditions by one tower. - -The default value is the sum of the rejected (condenser) heats (including pump heat) at design conditions of the most powerful stage of each connected COOLPLANT, plus the design capacity of each connected HPLOOP heat exchanger, all divided by the number of towers. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ---------------------- -------------- ----------------- - Btuh *x* $\neq$ 0 (sum of loads)/*ctN* No constant - -**ctVfDs=*float*** - -Design air flow, per tower; also the fan full-speed cfm specification. - -The default value is the sum of the loads (computed as for *ctCapDs*, just above) divided by 51, divided by the number of cooling towers. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------- -------------- ----------------- - cfm *x* > 0 (sum of loads)/51/*ctN* No constant - -**ctGpmDs=*float*** - -Design water flow, per tower. - -The default is the sum of the flows of the connected heat rejection pumps, using the largest stage for COOLPLANTs, divided by the number of towers. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ---------------------- -------------- ----------------- - gpm *x* > 0 (sum of pumps)/*ctN* No constant - -**ctTDbODs=*float*** - -Design outdoor drybulb temperature (needed to convert *ctVfDs* from cfm to lb/hr). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 93.5 No constant - -**ctTWbODs=*float*** - -Design outdoor wetbulb temperature. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 78 No constant - -**ctTwoDs=*float*** - -Design leaving water temperature. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 85 No constant - -The following six items allow optional specification of tower performance under another set of conditions, the "off design" conditions. If given, they allow CSE to compute the tower's relation between flows and heat transfer; in this case, *ctK* (below) may not be given. - -**ctCapOd=*float*** - -Off-design capacity, per tower. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ---------------------- -------------- ----------------- - Btuh *x* $\neq$ 0 (sum of loads)/*ctN* No constant - -**ctVfOd=*float*** - -Off-design air flow, per tower. Must differ from design air flow; thus *ctVfDs* and *ctVfOd* cannot both be defaulted if off-design conditions are being given. The off-design air and water flows must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------------------- ------------------------- -------------- ----------------- - cfm *x* > 0; *x* $\neq$ *ctVfDs* (sum of loads)/51/*ctN* No constant - -**ctGpmOd=*float*** - -Off-design water flow, per tower. Must differ from design water flow; thus, both cannot be defaulted if off-design conditions are being given. Value must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------------------- ---------------------- -------------- ----------------- - gpm *x* > 0; *x* $\neq$ *ctGpmDs* (sum of pumps)/*ctN* No constant - -**ctTDbOOd=*float*** - -Off-design outdoor drybulb temperature. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 93.5 No constant - -**ctTWbOOd=*float*** - -Off-design outdoor wetbulb temperature. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 78 No constant - -**ctTwoOd=*float*** - -Off-design leaving water temperature. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 85 No constant - -The following item allows explicit specification of the relationship between flows and heat transfer, when the preceding "off design" inputs are not given. If omitted, it will be computed from the "off design" inputs if given, else the default value of 0.4 will be used. - -**ctK=*float*** - -Optional. Exponent in the formula - -$$\text{ntuA} = k \cdot (mwi/ma)^{ctK}$$ - -where ntuA is the number of transfer units on the air side, mwi and ma are the water and air flows respectively, and k is a constant. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------------------------------- -------------- ----------------- - 0 < *x* < 1 *from "Od" members if given, else* 0.4 No constant - -**ctStkFlFr=*float*** - -Fraction of air flow which occurs when tower fan is off, due to stack effect (convection). Cooling due to this air flow occurs in all towers whenever the water flow is on, and may, by itself, cool the water below the setpoint *tpTsSp*. Additional flow, when fan is on, is proportional to fan speed. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 .18 No constant - -The following items allow CSE to compute the effect of makeup water on the leaving water temperature. - -**ctBldn=*float*** - -Blowdown rate: fraction of inflowing water that is bled from the sump down the drain, to reduce the buildup of impurities that don't evaporate. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 .01 No constant - -**ctDrft=*float*** - -Drift rate: fraction of inflowing water that is blown out of tower as droplets without evaporating. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 0 No constant - -**ctTWm=*float*** - -Temperature of makeup water from mains, used to replace water lost by blowdown, drift, and evaporation. Blowdown and drift are given by the preceding two inputs; evaporation is computed. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 60 No constant - -**endTowerplant** - -Optionally indicates the end of the TOWERPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/window.md b/doc/test/resources/window.md deleted file mode 100644 index fd3c74c43..000000000 --- a/doc/test/resources/window.md +++ /dev/null @@ -1,201 +0,0 @@ -# WINDOW - -WINDOW defines a subobject belonging to the current SURFACE that represents one or more identical windows. The azimuth, tilt, and exterior conditions of the window are the same as those of the surface to which it belongs. The total window area (*wnHt* $\cdot$ *wnWid* $\cdot$ *wnMult*) is deducted from the gross surface area. A surface may have any number of windows. - -Windows may optionally have operable interior shading that reduces the overall shading coefficient when closed. - -**wnName** - -Name of window: follows the word "WINDOW" if given. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* No constant - -**wnHeight=*float*** - -Overall height of window (including frame). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft *x* $>$ 0 *none* Yes constant - -wnWidth=*float*Overall width of window (including frame). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft *x* $>$ 0 *none* Yes constant - -**wnArea=*float*** - -Overall area of window (including frame). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------- -------------- ----------------- - ft^2^ *x* $>$ 0 *wnHeight* \* *wnWidth* No constant - -**wnMult=*float*** - -Area multiplier; can be used to represent multiple identical windows. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* $>$ 0 1 No constant - -**wnModel=*choice*** - -Selects window model - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - SHGC, ASHWAT SHGC No constant - -wnGt=*choice* - -GLAZETYPE for window. Provides many defaults for window properties as cited below. - -**wnU=*float*** - -Window conductance (U-factor without surface films, therefore not actually a U-factor but a C-factor). - -Preferred Approach: To use accurately with standard winter rated U-factor from ASHRAE or NFRC enter as: - - wnU = (1/((1/U-factor)-0.85) - -Where 0.85 is the sum of the interior (0.68) and exterior (0.17) design air film resistances assumed for rating window U-factors. Enter wnInH (usually 1.5=1/0.68) instead of letting it default. Enter the wnExH or let it default. It is important to use this approach if the input includes gnFrad for any gain term. Using approach 2 below will result in an inappropriate internal gain split at the window. - -Approach 2. Enter wnU=U-factor and let the wnInH and wnExH default. Tnormally this approach systematically underestimates the window U-factor because it adds the wnExfilm resistance to 1/U-factor thereby double counting the exterior film resistance. This approach will also yield incorrect results for gnFrad internal gain since the high wnInH will put almost all the gain back in the space. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------------- ----------------- ------------- -------------- ----------------- - Btuh/ft^2^-^o^F *x* $>$ 0 *none* Yes constant - -**wnUNFRC=*float*** - -Fenestration system (including frame) U-factor evaluated at NFRC heating conditions. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------------- ----------------- ------------- ---------------------------------- ----------------- - Btuh/ft^2^-^o^F *x* $>$ 0 gtUNFRC Required when *wnModel* = ASHWAT constant - -**wnInH=*float*** - -Window interior surface (air film) conductance. - -Preferred Approach: Enter the appropriate value for each window, normally: - - wnInH = 1.5 - - where 1.5 = 1/0.68 the standard ASHRAE value. - -The large default value of 10,000 represents a near-0 resistance, for the convenience of those who wish to include the interior surface film in wnU according to approach 2 above. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------------- ----------------- --------------------------------------- -------------- ----------------- - Btuh/ft^2^-^o^F *x* $>$ 0 10000 No constant - -**wnExH=*float*** - -Window exterior surface (air film) conductance. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------------- ----------------- ------------------------ -------------- ----------------- - Btuh/ft^2^-^o^F *x* $>$ 0 same as owning surface No constant - -**wnSMSO=*float*** - -SHGC multiplier with shades open. Overrides gtSMSO. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ------------------ - fraction 0 $\leq$ *x* $\leq$ 1 gtSMSO or 1 No Monthly - Hourly - -**wnSMSC=*float*** - -SHGC multiplier with shades closed. Overrides gtSMSC - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------------ -------------- ------------------ - fraction 0 $\leq$ *x* $\leq$ 1 wnSMSO or gtSMSC No Monthly - Hourly - -**wnNGlz=*int*** - -Number of glazings in the window (bare glass only, not including any interior or exterior shades). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------- ------------- ---------------------------------- ----------------- - 0 $<$ *x* $\leq$ 4 gtNGLZ Required when *wnModel* = ASHWAT Constant - -**wnExShd=*choice*** - -Exterior shading type (ASHWAT only). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - NONE, INSCRN gtExShd no Constant - -**wnInShd=*choice*** - -Interior shade type (ASHWAT only). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - NONE, DRAPEMED gtInShd no Constant - -**wnDirtLoss=*float*** - -Glazing dirt loss factor. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - fraction 0 $\leq$ *x* $\leq$ 1 0 no Constant - -**wnGrndRefl=*float*** - -Ground reflectivity for this window. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ------------------ - fraction 0 $\leq$ *x* $\leq$ 1 sfGrndRefl No Monthly - Hourly - -**wnVfSkyDf=*float*** - -View factor from this window to sky for diffuse radiation. For the shading effects of an overhang, a wnVfSkyDf value smaller than the default would be used - - ------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- ------------ ------------ --------------- - fraction 0 $\leq$ 0.5 - 0.5 No Monthly - - *x* \* cos(tilt) Hourly - $\leq$ 1 = .5 for - vertical - surface - - ------------------------------------------------------------- - -**wnVfGrndDf=*float*** - -View factor from this window to ground for diffuse radiation. For the shading effects of a fin(s), both wnVfSkyDf and wnVfGrndDf would be used. - - ------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- ------------ ------------ --------------- - fraction 0 $\leq$ 0.5 + 0.5 \* No Monthly - - *x* cos(tilt) = Hourly - $\leq$ 1 .5 for - vertical - surface - - ------------------------------------------------------------- - -**endWindow** - -Optionally indicates the end of the window definition. Alternatively, the end of the window definition can be indicated by END or the declaration of another object. END or endWindow, if used, should follow any subobjects of the window (SHADEs and/or SGDISTs). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - - diff --git a/doc/test/resources/zone.md b/doc/test/resources/zone.md deleted file mode 100644 index c8d5d91d1..000000000 --- a/doc/test/resources/zone.md +++ /dev/null @@ -1,321 +0,0 @@ -# ZONE - -ZONE constructs an object of class ZONE, which describes an area of the building to be modeled as having a uniform condition. ZONEs are large, complex objects and can have many subobjects that describe associated surfaces, shading devices, HVAC equipment, etc. - -## ZONE General Members - -**znName** - -Name of zone. Enter after the word ZONE; no "=" is used. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* *none* Yes constant - -**znModel=*choice*** - -Selects model for zone. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - CNE CZM UZM CNE No constant - -**znArea=*float*** - -Nominal zone floor area. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft^2^ *x* $>$ 0 *none* Yes constant - -**znVol=*float*** - -Nominal zone volume. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft^3^ *x* $>$ 0 *none* Yes constant - -**znFloorZ=*float*** - -Nominal zone floor height relative to arbitrary 0 level. Used re determination of vent heights - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ft unrestricted *0* No constant - -**znCeilingHt=*float*** - -Nominal zone ceiling height relative to zone floor (typically 8 – 10 ft). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- -------------------- -------------- ----------------- - ft *x* $>$ 0 *znVol* / *znArea* No constant - -**znEaveZ=*float*** - -Nominal eave height above ground level. Used re calculation of local surface wind speed. This in turn influences outside convection coefficients in some surface models and wind-driven air leakage. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ---------------------------- -------------- ----------------- - ft *x* $\ge$ 0 *znFloorZ + infStories\*8* No constant - -**znCAir=*float*** - -Zone "air" heat capacity: represents heat capacity of air, furniture, "light" walls, and everything in zone except surfaces surfaces having heat capacity (that is, non-QUICK surfaces). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ----------------- -------------- ----------------- - Btu/^o^F *x* $\geq$ 0 3.5 \* *znArea* No constant - -**znAzm=*float*** - -Zone azimuth with respect to bldgAzm. All surface azimuths are relative to znAzm, so that the zone can be rotated by changing this member only. Values outside the range 0^o^ to 360^o^ are normalized to that range. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - degrees unrestricted 0 No constant - -**znSC=*float*** - -Zone shade closure. Determines insolation through windows (see WINDOW members *wnSCSO* and *wnSCSC*) and solar gain distribution: see SGDIST members *sgFSO* and *sgFSC*. 0 represents shades open; 1 represents shades closed; intermediate values are allowed. An hourly variable CSE expression may be used to schedule shade closure as a function of weather, time of year, previous interval HVAC use or zone temperature, etc. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ---------------------------------------------------- -------------- ----------------- - 0 $\leq$ *x* $\leq$ 1 1 when cooling was used in *previous* hour, else 0 No hourly - -The following apply to *znModel* = CZM. - -**znTH=*float*** - -Heating set point - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* $\geq$ 0 hourly - -**znTD=*float*** - -Desired set point (temperature maintained with ventilation if possible). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* $\geq$ 0 hourly - -**znTC=*float*** - -Cooling set point - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* $\geq$ 0 Hourly - -**znQMxH=*float*** - -Heating capacity at current conditions - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - Btuh *x* $\geq$ 0 hourly - -**znQMxHRated=*float*** - -Rated heating capacity - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - Btuh *x* $\geq$ 0 constant - -**znQMxC=*float*** - -Cooling capacity at current conditions - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - Btuh *x* $\leq$ 0 hourly - -**znQMxCRated=*float*** - -Rated cooling capacity - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - Btuh *x* $\leq$ 0 constant - -The following provide parameters for comfort calculations - -**znComfClo=*float*** - -Occupant clothing resistance - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - clo subhourly ?? - -**znComfMet=*float*** - -Occupant metabolic rate - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - met *x* $\geq$ 0 hourly - -**znComfAirV=*float*** - -Nominal air velocity used for comfort model - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ? *x* $\geq$ 0 No Hourly - -**znComfRh=*float*** - -Nominal zone relative humidity used for comfort model - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - 0 $\leq$ *x* $\leq$ 1 No hourly - -## ZONE Infiltration - -The following control a simplified air change plus leakage area model. The Sherman-Grimsrud model is used to derive air flow rate from leakage area and this rate is added to the air changes specified with infAC. Note that TOP.windF does *not* modify calculated infiltration rates, since the Sherman-Grimsrud model uses its own modifiers. See also AirNet models available via IZXFER. - -**infAC=*float*** - -Zone infiltration air changes per hour. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - 1/hr *x* $\geq$ 0 0.5 No hourly - -**infELA=*float*** - -Zone effective leakage area (ELA). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - in^2^ *x* $\geq$ 0 0.0 No hourly - -**infShld=*int*** - -Zone local shielding class, used in derivation of local wind speed for ELA infiltration model, wind-driven AirNet leakage, and exterior surface coefficients. infShld values are -- - - ---------- ----------------------------------------------------------- - 1 no obstructions or local shielding - - 2 light local shielding with few obstructions - - 3 moderate local shielding, some obstructions within two - house heights - - 4 heavy shielding, obstructions around most of the perimeter - - 5 very heavy shielding, large obstructions surrounding the - perimeter within two house heights - ---------- ----------------------------------------------------------- - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - 1 $\leq$ *x* $\leq$ 5 3 No constant - -**infStories=*int*** - -Number of stories in zone, used in ELA model. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - 1 $\leq$ *x* $\leq$ 3 1 No constant - -**znWindFLkg=*floatTODO*** - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - 1 No constant - -## ZONE Exhaust Fan - -Presence of an exhaust fan in a zone is indicated by specifying a non-zero design flow value (xfanVfDs). - -Zone exhaust fan model implementation is incomplete as of July, 2011. The current code calculates energy use but does not account for the effects of air transfer on room heat balance. IZXFER provides a more complete implementation. - -**xfanFOn=*float*** - -Exhaust fan on fraction. On/off control assumed, so electricity requirement is proportional to run time. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - fraction 0 $\leq$ x $\leq$ 1 1 No hourly - -Example: The following would run an exhaust fan 70% of the time between 8 AM and 5 PM: - - xfanFOn = select( (\$hour >= 7 && \$hour < 5), .7, - default, 0 ); - -**xfanVfDs=*float*** - -Exhaust fan design flow; 0 or not given indicates no fan. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- ---------------- ----------------- - cfm *x* 0 0 (no fan) If fan present constant - -**xfanPress=*float*** - -Exhaust fan external static pressure. - - **Units** **Legal Range** **Default** **Required** **Variability** - -------------- ---------------------------- ------------- -------------- ----------------- - inches H~2~O 0.05 $\leq$ *x* $\leq$ 1.0 0.3 No constant - -Only one of xfanElecPwr, xfanEff, and xfanShaftBhp may be given: together with xfanVfDs and xfanPress, any one is sufficient for CSE to detemine the others and to compute the fan heat contribution to the air stream. - -**xfanElecPwr=*float*** - -Fan input power per unit air flow (at design flow and pressure). - - ------------------------------------------------------------------------- - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- -------------------- ---------------- --------------- - W/cfm *x* $>$ 0 derived from xfanEff If xfanEff and constant - and xfanShaftBhp xfanShaftBhp not - present - ------------------------------------------------------------------------- - -**xfanEff=*floatExhaust*** - -fan/motor/drive combined efficiency*.* - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - fraction 0 $\leq$ x $\leq$ 1 0.08 No constant - -**xfanShaftBhp=*float*** - -Fan shaft power at design flow and pressure. - - ------------------------------------------------------------------ - **Units** **Legal** **Default** **Required** **Variability** - **Range** - --------- --------- --------------- -------------- --------------- - BHP *x* $>$ 0 derived from If xfanElecPwr constant - xfanElecPwr and not present - xfanVfDs - ------------------------------------------------------------------ - -**xfanMtr=*mtrName*** - -Name of METER object, if any, by which fan's energy use is recorded (under end use category "fan"). - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------- -------------- ----------------- - *name of a METER* *not recorded* No constant - -**endZone** - -Indicates the end of the zone definition. Alternatively, the end of the zone definition can be indicated by the declaration of another object or by "END". If END or endZone is used, it should follow the definitions of the ZONE's subobjects such as GAINs, SURFACEs, TERMINALs, etc. - - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - diff --git a/doc/test/table_test.rb b/doc/test/table_test.rb deleted file mode 100644 index 08f0d6bb3..000000000 --- a/doc/test/table_test.rb +++ /dev/null @@ -1,124 +0,0 @@ -require_relative 'test_helper' -require 'table' -require 'template' - -class TableTest < TC - include Table - def test_context - t1 = Main.new(:context=>{"m"=>"a", "n"=>"b"}) - assert_equal(t1.m, "a") - assert_equal(t1.n, "b") - assert(t1.inspect != "c") - t2 = Main.new(:context=>{"m"=>"a", "n"=>"b", "inspect"=>"c"}) - assert_equal(t2.m, "a") - assert_equal(t2.n, "b") - assert_equal(t2.inspect, "c") - end - def test_context_is_only_on_instance - t1 = Main.new(:context=>{"m"=>"a"}) - t2 = Main.new(:context=>{"n"=>"a"}) - assert(t1.respond_to?(:m)) - assert(!t1.respond_to?(:n)) - assert(!t2.respond_to?(:m)) - assert(t2.respond_to?(:n)) - end - def test_render - b1 = MakeBinding.().({"m"=>"a", "n"=>"b"}) - expected = "Hi a and b" - actual = Template::RenderWithErb.("Hi <%= m %> and <%= n %>", b1) - assert_equal(actual, expected) - b2 = MakeBinding.().({"inspect"=>"a"}) - expected = "Hi a" - actual = Template::RenderWithErb.("Hi <%= inspect %>", b2) - assert_equal(actual, expected) - end - def test_rendering_a_csv_table - b1 = MakeBinding.().({}); - template = < false) -A,B,C -1,2,3 -END -%> -ENDEND - expected = < false) -A,B,C -1,2,"3,4,5" -END -%> -ENDEND - expected = < false) -CNE,"Older central difference model based on original CALPAS methods. Not fully supported and not suitable for current compliance applications." -CZM,"Conditioned zone model. Forward-difference, short time step methods are used." -UZM,"Unconditioned zone model. Identical to CZM except heating and cooling are not supported. Typically used for attics, garages, and other ancillary spaces." -END -%> -ENDEND - expected = <$ 0", - default: "derived from oaSupFanEff and oaSupFanShaftBhp", - required: "If oaSupFanEff and oaSupFanShaftBhp not present", - variability: "constant") %> -ENDEND - expected = <$ 0 derived from If oaSupFanEff constant - oaSupFanEff and and - oaSupFanShaftBhp oaSupFanShaftBhp - not present ---------------------------------------------------------------------- -END - actual = Template::RenderWithErb.(template, b1) - assert_equal(expected, actual) - end -end diff --git a/doc/test/template_test.rb b/doc/test/template_test.rb deleted file mode 100644 index b91658f20..000000000 --- a/doc/test/template_test.rb +++ /dev/null @@ -1,38 +0,0 @@ -require_relative 'test_helper' -require 'template' -require 'fileutils' -require 'table' - -class TestTemplate < TC - include Template - def setup - @temp_path_in = "junk_in.txt" - File.write(@temp_path_in, "Hi <%= a %>") - @temp_path_in_1 = "junk_in_1.txt" - File.write(@temp_path_in_1, "<%= insert_file('doc/junk_in.txt') %>") - @temp_path_out= "junk_out.txt" - end - def teardown - FileUtils.rm(@temp_path_in) if File.exist?(@temp_path_in) - FileUtils.rm(@temp_path_in_1) if File.exist?(@temp_path_in_1) - FileUtils.rm(@temp_path_out) if File.exist?(@temp_path_out) - end - def test_rendering_a_template - expected = "Hi b" - actual = RenderWithErb.("Hi <%= a %>", MakeBinding.({"a"=>"b"})) - assert_equal(expected, actual) - end - def test_preproc_file - PreprocFile[].(@temp_path_in, @temp_path_out, nil, {"context"=>{"a"=>"b"}}) - expected = "Hi b" - actual = File.read(@temp_path_out) - assert_equal(expected, actual) - end - def test_preproc_file_with_include_file_that_contains_erb - b = Table::MakeBinding[] - PreprocFile[b].(@temp_path_in_1, @temp_path_out, nil, {"context"=>{"a"=>"b"}}) - expected = "Hi b" - actual = File.read(@temp_path_out) - assert_equal(expected, actual) - end -end diff --git a/doc/test/test_helper.rb b/doc/test/test_helper.rb deleted file mode 100644 index b6e3dc499..000000000 --- a/doc/test/test_helper.rb +++ /dev/null @@ -1,8 +0,0 @@ -$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__) -require 'minitest/autorun' -begin - TC = Minitest::Test -rescue - # for older versions of Ruby - TC = Minitest::Unit::TestCase -end diff --git a/doc/test/xlink_test.rb b/doc/test/xlink_test.rb deleted file mode 100644 index 5d2792a32..000000000 --- a/doc/test/xlink_test.rb +++ /dev/null @@ -1,68 +0,0 @@ -require_relative 'test_helper' -require 'xlink' -require 'set' - -class XLinkTest < TC - include XLink - def test_OverString - rec_idx = {"STUFF"=>"index.html#stuff","JUNK"=>"index.html#junk"} - sec_path = [] - s = < Date: Thu, 20 Feb 2025 22:22:22 -0700 Subject: [PATCH 002/117] Restore markdown from previous pandoc/ruby version to better track changes in git. --- doc/src/docs/input-structure.md | 2 ++ doc/src/docs/introduction.md | 4 ++-- doc/src/docs/output-reports.md | 12 +++++++----- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/doc/src/docs/input-structure.md b/doc/src/docs/input-structure.md index af22e0202..786857ca7 100644 --- a/doc/src/docs/input-structure.md +++ b/doc/src/docs/input-structure.md @@ -1,5 +1,7 @@ # Input Structure +**DRAFT:** In the following, any text annotated with ?? indicates areas of uncertainty or probable change. As the program and input language develop, these matters will be resolved. + ## Introduction The CSE Input Language is the fundamental interface to the CSE program. The language has been designed with three objectives in mind: diff --git a/doc/src/docs/introduction.md b/doc/src/docs/introduction.md index 5b3d82a0c..61d036821 100644 --- a/doc/src/docs/introduction.md +++ b/doc/src/docs/introduction.md @@ -12,7 +12,7 @@ CSE is a batch driven program which reads its input from a text file. It is not 3. Researchers and standards developers who will use the program to explore possible conservation opportunities. -Each of these groups is highly sophisticated. Therefore this manual generally uses an exhaustive, one-pass approach: while a given topic is being treated, *everything* about that topic is presented with the emphasis on completeness and accuracy over ease of learning. +Each of these groups is highly sophisticated. Therefore this manual generally uses an exhaustive, one-pass approach: while a given topic is being treated, _everything_ about that topic is presented with the emphasis on completeness and accuracy over ease of learning. Please note that CSE is under development and will be for many more months. Things will change and from time to time this manual may be inconsistent with the program. @@ -46,7 +46,7 @@ Finally, Appendix A gives an example CSE input file and the output it produces. ### Hardware and Software Requirements -CSE is a 32-bit Microsoft Windows console application. That is, it runs at the command prompt on Windows Vista, Windows 7, Windows 8, and Windows 10. Memory and disk space requirements depend on the size of projects being modeled, but are generally modest. +CSE is a 32-bit Microsoft Windows console application. That is, it runs at the command prompt on Windows Vista, Windows 7, Windows 8, and Windows 10. Memory and disk space requirements depend on the size of projects being modeled, but are generally modest. To prepare input files, a text editor is required. Notepad will suffice, although a text editor intended for programming is generally more capable. Alternatively, some word processors can be used in "ASCII" or "text" or "non-document" mode. diff --git a/doc/src/docs/output-reports.md b/doc/src/docs/output-reports.md index 667a56115..5724e731c 100644 --- a/doc/src/docs/output-reports.md +++ b/doc/src/docs/output-reports.md @@ -6,11 +6,13 @@ CSE report data is accumulated during simulation and written to the report file The default units for CSE reports are: -| No Header | No Header | -| --------------- | -------------------------------------------------------- | -| **Energy** | mBtu, millions of Btu (to convert to kWh, divide by 292) | -| **Temperature** | degrees Farenheit | -| **Air Flow** | cfm (cubic feet per minute) | +--- + +Energy mBtu, millions of Btu (to convert to kWh divide by 292) +Temperature degrees Farenheit +Air Flow cfm (cubic feet per minute) + +--- ## Time From dc51d3c85def3c8d552b7b9f1af84798232ca95a Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Thu, 20 Feb 2025 23:18:27 -0700 Subject: [PATCH 003/117] Add autorefs plugin and translate links for use with the plugin. --- doc/pyproject.toml | 1 + .../input-data--member-table-definition.csv | 2 +- doc/src/docs/index.md | 3 +- doc/src/docs/input-data/afmeter.md | 29 +- doc/src/docs/input-data/airhandler.md | 4 +- doc/src/docs/input-data/battery.md | 190 +-- doc/src/docs/input-data/boiler.md | 263 ++-- doc/src/docs/input-data/chiller.md | 380 +++--- doc/src/docs/input-data/construction.md | 40 +- doc/src/docs/input-data/coolplant.md | 98 +- doc/src/docs/input-data/descond.md | 141 +-- doc/src/docs/input-data/dhwdayuse.md | 57 +- doc/src/docs/input-data/dhwheater-doc.md | 619 +++++---- doc/src/docs/input-data/dhwloop.md | 124 +- doc/src/docs/input-data/dhwloopbranch.md | 204 +-- doc/src/docs/input-data/dhwlooppump.md | 86 +- doc/src/docs/input-data/dhwloopseg.md | 144 +-- doc/src/docs/input-data/dhwmeter.md | 19 +- doc/src/docs/input-data/dhwpump.md | 68 +- doc/src/docs/input-data/dhwsys.md | 870 +++++++------ doc/src/docs/input-data/dhwtank.md | 136 +- doc/src/docs/input-data/dhwuse.md | 162 +-- doc/src/docs/input-data/doas.md | 492 ++++---- doc/src/docs/input-data/door.md | 322 ++--- doc/src/docs/input-data/ductseg.md | 267 ++-- doc/src/docs/input-data/export.md | 268 ++-- doc/src/docs/input-data/exportcol.md | 106 +- doc/src/docs/input-data/exportfile.md | 64 +- doc/src/docs/input-data/gain.md | 228 ++-- doc/src/docs/input-data/glazetype.md | 230 ++-- doc/src/docs/input-data/heatplant.md | 74 +- doc/src/docs/input-data/holiday.md | 143 ++- doc/src/docs/input-data/importfile.md | 136 +- doc/src/docs/input-data/index.md | 2 +- doc/src/docs/input-data/izxfer.md | 2 +- doc/src/docs/input-data/layer.md | 2 +- doc/src/docs/input-data/loadmeter.md | 2 +- doc/src/docs/input-data/material.md | 2 +- doc/src/docs/input-data/meter.md | 112 +- doc/src/docs/input-data/perimeter.md | 4 +- doc/src/docs/input-data/pvarray.md | 56 +- doc/src/docs/input-data/report.md | 2 +- doc/src/docs/input-data/reportcol.md | 106 +- doc/src/docs/input-data/reportfile.md | 2 +- doc/src/docs/input-data/rsys.md | 952 +++++++------- doc/src/docs/input-data/sgdist.md | 77 +- doc/src/docs/input-data/shade.md | 2 +- doc/src/docs/input-data/shadex.md | 60 +- doc/src/docs/input-data/surface.md | 492 ++++---- doc/src/docs/input-data/terminal.md | 80 +- doc/src/docs/input-data/top-members.md | 1116 ++++++++--------- doc/src/docs/input-data/towerplant.md | 320 +++-- doc/src/docs/input-data/window.md | 434 +++---- doc/src/docs/input-data/zone.md | 645 +++++----- doc/src/docs/input-structure.md | 56 +- doc/src/docs/introduction.md | 12 +- doc/src/docs/operation.md | 14 +- doc/src/docs/probe-definitions/index.md | 2 +- doc/src/mkdocs.yml | 1 + doc/uv.lock | 16 + 60 files changed, 5298 insertions(+), 5243 deletions(-) diff --git a/doc/pyproject.toml b/doc/pyproject.toml index 772b0f276..527511954 100644 --- a/doc/pyproject.toml +++ b/doc/pyproject.toml @@ -18,6 +18,7 @@ dependencies = [ "markdown-grid-tables", "mkdocs-table-reader-plugin", "mkdocs-jinja2", + "mkdocs-autorefs>=1.3.1", ] diff --git a/doc/src/docs/assets/tables/input-data--member-table-definition.csv b/doc/src/docs/assets/tables/input-data--member-table-definition.csv index 6dba27444..dd9cd920c 100644 --- a/doc/src/docs/assets/tables/input-data--member-table-definition.csv +++ b/doc/src/docs/assets/tables/input-data--member-table-definition.csv @@ -3,4 +3,4 @@ "Legal Range","limits of valid range for numeric inputs; valid choices for *choice* members, etc." "Default","value assumed if member not given; applicable only if not required" "Required","YES if you must give this member" -"Variability","how often the given expression can change: hourly, daily, etc. See sections on [expressions](#expressions-overview), [statements](#member-statements), and [variation frequencies](#variation-frequencies-revisited)" +"Variability","how often the given expression can change: hourly, daily, etc. See sections on [expressions][expressions-overview], [statements][member-statements], and [variation frequencies][variation-frequencies-revisited]" diff --git a/doc/src/docs/index.md b/doc/src/docs/index.md index 90f3fa146..8c775538c 100644 --- a/doc/src/docs/index.md +++ b/doc/src/docs/index.md @@ -9,8 +9,7 @@ CSE is a general purpose building simulation model developed primarily to perfor ## CSE User Manual {-} -- [HTML Format](cse-user-manual/index.html) (multiple pages) -- [HTML Format](cse-user-manual.html) (single page) +WIP ## CSE Source Code {-} diff --git a/doc/src/docs/input-data/afmeter.md b/doc/src/docs/input-data/afmeter.md index d9097731a..84f44bb53 100644 --- a/doc/src/docs/input-data/afmeter.md +++ b/doc/src/docs/input-data/afmeter.md @@ -2,25 +2,24 @@ An AFMETER object is a user-defined "device" that records zone air flows as simulated by CSE. The user defines AFMETERs and assigns them to zones (see ZONE znAFMtr). -Air flow is recorded in standard air cfm (density 0.075 lb/ft3) at subhour, hour, day, month, and year intervals. At intervals of an hour and longer, values are averaged. Flows are categorized according to IZXFER izAFCat. +Air flow is recorded in standard air cfm (density 0.075 lb/ft3) at subhour, hour, day, month, and year intervals. At intervals of an hour and longer, values are averaged. Flows are categorized according to IZXFER izAFCat. If any AFMETERs are defined, an additional AFMETER "sum_of_AFMETERs" is automatically created where the sums of all user-define AFMETERs are accumulated. -Note that *only* AirNet flows are recorded. - -AFMETER results can be REPORTed using rpType=AFMTR (or EXPORTed using exType=AFMTR). See [Air Flow Meter Report](#air-flow-meter-report). +Note that _only_ AirNet flows are recorded. +AFMETER results can be REPORTed using rpType=AFMTR (or EXPORTed using exType=AFMTR). See [Air Flow Meter Report][air-flow-meter-report]. **afMtrName** Name of meter: required for assigning air flows to the AFMETER. <%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") +units: "", +legal_range: "_63 characters_", +default: "_none_", +required: "Yes", +variability: "constant") %> **endAFMeter** @@ -28,13 +27,13 @@ Name of meter: required for assigning air flows to the AFMETER. Indicates the end of the meter definition. Alternatively, the end of the meter definition can be indicated by the declaration of another object or by END. <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") %> **Related Probes:** -- @[afmeter](#p_afmeter) +- @[afmeter][p_afmeter] diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index d0651efc0..fce6d7f0c 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -1789,5 +1789,5 @@ variability: "constant") %> **Related Probes:** -- @[airHandler](#p_airhandler) -- @[ahRes](#p_ahres) (accumulated results) +- @[airHandler][p_airhandler] +- @[ahRes][p_ahres] (accumulated results) diff --git a/doc/src/docs/input-data/battery.md b/doc/src/docs/input-data/battery.md index 8377f5130..65ac14465 100644 --- a/doc/src/docs/input-data/battery.md +++ b/doc/src/docs/input-data/battery.md @@ -9,76 +9,76 @@ The modeler can set limits and constraints on capacities and flows and the assoc Name of the battery system. Given after the word BATTERY. <%= member_table( - units: "", - legal_range: "63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "63 characters*", +default: "*none\*", +required: "No", +variability: "constant") +%> -**btMeter=*choice*** +**btMeter=_choice_** Name of a METER to which the BATTERY's charge/discharge energy flows are recorded. Battery energy flows are accumulated to meter end use "BT". Battery energy flows are seen from the standpoint of a "load" on the electric grid, so charges to the BATTERY system are positive values while discharges from the BATTERY system are negative values. -Note btMeter also determines the source for the probe value *loadSeen*. See discussion and example under btChgReq (below). +Note btMeter also determines the source for the probe value _loadSeen_. See discussion and example under btChgReq (below). <%= member_table( - units: "", - legal_range: "meter name ", - default: "*none* ", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "meter name ", +default: "_none_ ", +required: "No", +variability: "constant") +%> -**btChgEff=*float*** +**btChgEff=_float_** The charging efficiency of storing electricity into the BATTERY system. A value of 1.0 means that no energy is lost and 100% of charge energy enters and is stored in the battery. <%= member_table( - units: "", - legal_range: "0 < x $\\le$ 1", - default: "0.975", - required: "No", - variability: "hourly") - %> +units: "", +legal_range: "0 < x $\\le$ 1", +default: "0.975", +required: "No", +variability: "hourly") +%> -**btDschgEff=*float*** +**btDschgEff=_float_** The discharge efficiency for when the BATTERY system is discharging power. A value of 1.0 means that no energy is lost and 100% of discharge energy leaves the system. <%= member_table( - units: "", - legal_range: "0 < x $\\le$ 1", - default: "0.975", - required: "No", - variability: "hourly") - %> +units: "", +legal_range: "0 < x $\\le$ 1", +default: "0.975", +required: "No", +variability: "hourly") +%> -**btMaxCap=*float*** +**btMaxCap=_float_** This is the maximum amount of energy that can be stored in the BATTERY system in kilowatt-hours. Once the BATTERY has reached its maximum capacity, no additional energy will be stored. <%= member_table( - units: "kWh", - legal_range: "x $\\ge$ 0", - default: "16", - required: "No", - variability: "constant") - %> +units: "kWh", +legal_range: "x $\\ge$ 0", +default: "16", +required: "No", +variability: "constant") +%> -**btInitSOE=*float*** +**btInitSOE=_float_** The initial state of energy of the BATTERY system as a fraction of the total capacity. If `btInitSOE` is specified, the battery state-of-energy at the beginning of the actual simulation will be set to the amount specified, regardless of whether there was a warm-up period or not. If `btInitSOE` is NOT specififed, it will default to 1.0 (i.e., 100%) at the beginning of the warmup period (if any). <%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ 0", - default: "1.0", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "0 $\\le$ x $\\le$ 0", +default: "1.0", +required: "No", +variability: "constant") +%> -**btInitCycles=*int*** +**btInitCycles=_int_** The number of cycles on the battery at the beginning of the run. @@ -89,92 +89,92 @@ Note: a more robust life model will need not only cycle counts but cycles by dep <% end %> <%= member_table( - units: "number of cycles", - legal_range: "x $\\ge$ 0", - default: "0", - required: "No", - variability: "runly") - %> +units: "number of cycles", +legal_range: "x $\\ge$ 0", +default: "0", +required: "No", +variability: "runly") +%> -**btMaxChgPwr=*float*** +**btMaxChgPwr=_float_** -The maximum rate at which the BATTERY can be charged in kilowatts (i.e., energy flowing *into* the BATTERY). +The maximum rate at which the BATTERY can be charged in kilowatts (i.e., energy flowing _into_ the BATTERY). <%= member_table( - units: "kW", - legal_range: "x $\\ge$ 0", - default: "4", - required: "No", - variability: "hourly") - %> +units: "kW", +legal_range: "x $\\ge$ 0", +default: "4", +required: "No", +variability: "hourly") +%> -**btMaxDschgPwr=*float*** +**btMaxDschgPwr=_float_** -The maximum rate at which the BATTERY can be discharged in kilowatts (i.e., energy flowing *out of* the BATTERY). +The maximum rate at which the BATTERY can be discharged in kilowatts (i.e., energy flowing _out of_ the BATTERY). <%= member_table( - units: "kW", - legal_range: "x $\\ge$ 0", - default: "4", - required: "No", - variability: "hourly") - %> +units: "kW", +legal_range: "x $\\ge$ 0", +default: "4", +required: "No", +variability: "hourly") +%> -**btControlAlg=*choice*** +**btControlAlg=_choice_** -Selects charge/discharge control algorithm. btChgReq (next) specifies the desired battery charge or discharge rate. btControlAlg allows selection of alternative algorithms for deriving btChgReq. +Selects charge/discharge control algorithm. btChgReq (next) specifies the desired battery charge or discharge rate. btControlAlg allows selection of alternative algorithms for deriving btChgReq. <%= csv_table(< false) -DEFAULT, btChgReq is used as input or defaulted (see below) -TDVPEAKSAVE, btChgReq input (if any) is ignored. Instead, a California-specific algorithm is used that saves battery charge until peak TDV (Time Dependant Valuation) hours of the day, shifting energy generated on site (e.g. PV) to supply feed the grid during critical periods. The algorithm requires availability of hourly TDV data, see Top.tdvFName. +DEFAULT, btChgReq is used as input or defaulted (see below) +TDVPEAKSAVE, btChgReq input (if any) is ignored. Instead, a California-specific algorithm is used that saves battery charge until peak TDV (Time Dependant Valuation) hours of the day, shifting energy generated on site (e.g. PV) to supply feed the grid during critical periods. The algorithm requires availability of hourly TDV data, see Top.tdvFName. END %> -Note btControlAlg has hourly variability, allowing dynamic algorithm selection. In California compliance applications, TDVPEAKSAVE is typically used only on days with high TDV peaks. +Note btControlAlg has hourly variability, allowing dynamic algorithm selection. In California compliance applications, TDVPEAKSAVE is typically used only on days with high TDV peaks. <%= member_table( - units: "", - legal_range: "DEFAULT or TDVPEAKSAVE", - default: "DEFAULT", - required: "No", - variability: "hourly") - %> +units: "", +legal_range: "DEFAULT or TDVPEAKSAVE", +default: "DEFAULT", +required: "No", +variability: "hourly") +%> -**btChgReq=*float*** +**btChgReq=_float_** -The power request to charge (or discharge if negative) the battery. If omitted, the default strategy is used (attempt to satisfy all loads and absorb all available excess power). btChgReq and the default strategy requested power are literally *requests*: that is, more power will not be delivered than is available; more power will not be absorbed than capacity exits to store; and the battery's power limits will be respected. +The power request to charge (or discharge if negative) the battery. If omitted, the default strategy is used (attempt to satisfy all loads and absorb all available excess power). btChgReq and the default strategy requested power are literally _requests_: that is, more power will not be delivered than is available; more power will not be absorbed than capacity exits to store; and the battery's power limits will be respected. -btChgReq can be set by an expression to allow complex energy management/dispatch strategies. These approaches typically involve the BATTERY probe value *loadSeen*, which is the net electricity use (not including the battery) on the meter specified by btMeter (above). When loadSeen is positive, electricity input (e.g. from the grid) is required; when negative, excess electrical energy is available from photovoltaic generation. loadSeen can be used in btChgReq expressions such as -- +btChgReq can be set by an expression to allow complex energy management/dispatch strategies. These approaches typically involve the BATTERY probe value _loadSeen_, which is the net electricity use (not including the battery) on the meter specified by btMeter (above). When loadSeen is positive, electricity input (e.g. from the grid) is required; when negative, excess electrical energy is available from photovoltaic generation. loadSeen can be used in btChgReq expressions such as -- btChgReq = select( $hour>=9 && $hour<=20,-min(@BATTERY[ 1].loadSeen, 0), // hrs 9 - 20: charge when surplus energy default -max( @BATTERY[ 1].loadSeen, 0)) // else: discharge when energy is required -The sign conventions here are tricky. min(@BATTERY[ 1].loadSeen, 0) produces a value <=0 that is the negative of the amount of surplus energy available. A positive btChgReq value requests charging, hence "-" (minus sign) in front of the min(). Conversely, max( @BATTERY[ 1].loadSeen, 0) results in a value >= 0 indicating the net energy needed by the building. To request discharge, btChgReq must be negative, so "-" is also needed in the discharge expression. (The @BATTERY[1] references mean "this battery", assuming there is only one battery being modelled. In multi-battery situations, the current BATTERY's index or name must be included within the "[ ]".) +The sign conventions here are tricky. min(@BATTERY[ 1].loadSeen, 0) produces a value <=0 that is the negative of the amount of surplus energy available. A positive btChgReq value requests charging, hence "-" (minus sign) in front of the min(). Conversely, max( @BATTERY[ 1].loadSeen, 0) results in a value >= 0 indicating the net energy needed by the building. To request discharge, btChgReq must be negative, so "-" is also needed in the discharge expression. (The @BATTERY[1] references mean "this battery", assuming there is only one battery being modelled. In multi-battery situations, the current BATTERY's index or name must be included within the "[ ]".) <%= member_table( - units: "kW", - legal_range: "", - default: "btMeter net load", - required: "No", - variability: "hourly") - %> +units: "kW", +legal_range: "", +default: "btMeter net load", +required: "No", +variability: "hourly") +%> -**btUseUsrChg=*choice*** +**btUseUsrChg=_choice_** -Former yes/no choice that currently has no effect. Deprecated, will be removed in a future version. +Former yes/no choice that currently has no effect. Deprecated, will be removed in a future version. **endBATTERY** Optionally indicates the end of the BATTERY definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. <%= member_table( - units: "", - legal_range: "", - default: "*none* ", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "", +default: "_none_ ", +required: "No", +variability: "constant") +%> <%= member_table( - units: "^o^F", - legal_range: "*unrestricted*", - default: "*none*", - required: "Required if *sfExCnd* = SPECIFIEDT", - variability: "hourly") - %> +units: "^o^F", +legal_range: "_unrestricted_", +default: "_none_", +required: "Required if _sfExCnd_ = SPECIFIEDT", +variability: "hourly") +%> -**dsInsulR=*float*** +**dsInsulR=_float_** -Insulation thermal resistance *not including* surface conductances. dsInsulR and dsInsulMat are used to calculate insulation thickness (see below). Duct insulation is modeled as a pure conductance (no mass). +Insulation thermal resistance _not including_ surface conductances. dsInsulR and dsInsulMat are used to calculate insulation thickness (see below). Duct insulation is modeled as a pure conductance (no mass). <%= member_table( - units: "ft^2^-^o^F-hr / Btu", - legal_range: "x $\\ge$ 0", - default: "0", - required: "No", - variability: "constant") - %> +units: "ft^2^-^o^F-hr / Btu", +legal_range: "x $\\ge$ 0", +default: "0", +required: "No", +variability: "constant") +%> -**dsInsulMat=*matName*** +**dsInsulMat=_matName_** -Name of insulation MATERIAL. The conductivity of this material at 70 ^o^F is combined with dsInsulR to derive the duct insulation thickness. If omitted, a typical fiberglass material is assumed having conductivity of 0.025 Btu/hr-ft^2^-F at 70 ^o^F and a conductivity coefficient of .00418 1/F (see MATERIAL). In addition, insulation conductivity is adjusted during the simulation in response its average temperature. As noted with dsInsulR, duct insulation is modeled as pure conductance -- MATERIAL matDens and matSpHt are ignored. +Name of insulation MATERIAL. The conductivity of this material at 70 ^o^F is combined with dsInsulR to derive the duct insulation thickness. If omitted, a typical fiberglass material is assumed having conductivity of 0.025 Btu/hr-ft^2^-F at 70 ^o^F and a conductivity coefficient of .00418 1/F (see MATERIAL). In addition, insulation conductivity is adjusted during the simulation in response its average temperature. As noted with dsInsulR, duct insulation is modeled as pure conductance -- MATERIAL matDens and matSpHt are ignored. <%= member_table( - units: "", - legal_range: "name of a *MATERIAL*", - default: "fiberglass", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "name of a _MATERIAL_", +default: "fiberglass", +required: "No", +variability: "constant") +%> -**dsLeakF=*float*** +**dsLeakF=_float_** Duct leakage. Return duct leakage is modeled as if it all occurs at the segment inlet. Supply duct leakage is modeled as if it all occurs at the outlet. <%= member_table( - units: "", - legal_range: "0 $<$ x $\\le$ 1", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "0 $<$ x $\\le$ 1", +default: "_none_", +required: "No", +variability: "constant") +%> -**dsExH=*float*** +**dsExH=_float_** Outside (exposed) surface convection coefficient. <%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "x $\\ge$ 0", - default: ".54", - required: "No", - variability: "subhourly") - %> +units: "Btuh/ft^2^-^o^F", +legal_range: "x $\\ge$ 0", +default: ".54", +required: "No", +variability: "subhourly") +%> **endDuctSeg** Optionally indicates the end of the DUCTSEG definition. <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") +%> **Related Probes:** -- @[ductSeg](#p_ductseg) -- @[izXfer](#p_izxfer) (generated as "\-DLkI" for supply or "\-DLkO" for return) +- @[ductSeg][p_ductseg] +- @[izXfer][p_izxfer] (generated as "\-DLkI" for supply or "\-DLkO" for return) diff --git a/doc/src/docs/input-data/export.md b/doc/src/docs/input-data/export.md index 9b44854c3..4b2a9e569 100644 --- a/doc/src/docs/input-data/export.md +++ b/doc/src/docs/input-data/export.md @@ -6,7 +6,7 @@ No exports are generated by default; each desired export must be specified with Each row of an export contains several values, separated by commas, with quotes around string values. The row is terminated with a carriage return/line feed character pair. The first fields of the row identify the data. Multiple fields are used as necessary to identify the data. For example, the rows of an hourly ZEB export begin with the month, day of month, and hour of day. In contrast, reports, being subject to a width limitation, use only a single column of each row to identify the data; additional identification is put in the header. For example, an hourly ZEB Report shows the hour in a column and the day and month in the header; the header is repeated at the start of each day. The header of an export is never repeated. -Depending on your application, if you specify multiple exports, you may need to place each in a separate file. Generate these files with EXPORTFILE, preceding section. You may also need to suppress the export header and/or footer, with *exHeader* and/or *exFooter*, described in this section. +Depending on your application, if you specify multiple exports, you may need to place each in a separate file. Generate these files with EXPORTFILE, preceding section. You may also need to suppress the export header and/or footer, with _exHeader_ and/or _exFooter_, described in this section. Input for EXPORTs is similar to input for REPORTs; refer to the REPORT description in Section 5.25 for further discussion of the members shown here. @@ -15,224 +15,224 @@ Input for EXPORTs is similar to input for REPORTs; refer to the REPORT descripti Name of export. Give after the word EXPORT. <%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "_63 characters_", +default: "_none_", +required: "No", +variability: "constant") +%> -**exExportfile=*fname*** +**exExportfile=_fname_** Name of export file to which current export will be written. If omitted, if EXPORT is within an EXPORTFILE object, report will be written to that export file, or else to the automatically-supplied EXPORTFILE "Primary", which by default uses the name of the input file with the extension .csv. <%= member_table( - units: "", - legal_range: "name of an *EXPORTFILE*", - default: "current *EXPORTFILE*, if any, else 'Primary'", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "name of an _EXPORTFILE_", +default: "current _EXPORTFILE_, if any, else 'Primary'", +required: "No", +variability: "constant") +%> -**exType=*choice*** +**exType=_choice_** -Choice indicating export type. See descriptions in Section 5.22, REPORT. While not actually disallowed, use of *exType* = ERR, LOG, INP, or ZDD is unexpected. +Choice indicating export type. See descriptions in Section 5.22, REPORT. While not actually disallowed, use of _exType_ = ERR, LOG, INP, or ZDD is unexpected. <%= member_table( - units: "", - legal_range: "ZEB, ZST, MTR, DHWMTR, AH, UDT, or SUM", - default: "*none*", - required: "Yes", - variability: "constant") - %> +units: "", +legal_range: "ZEB, ZST, MTR, DHWMTR, AH, UDT, or SUM", +default: "_none_", +required: "Yes", +variability: "constant") +%> -**exFreq=*choice*** +**exFreq=_choice_** Export Frequency: specifies interval for generating rows of export data: <%= member_table( - units: "", - legal_range: "YEAR, MONTH, DAY, HOUR, HOURANDSUB, SUBHOUR", - default: "*none*", - required: "Yes", - variability: "constant") - %> +units: "", +legal_range: "YEAR, MONTH, DAY, HOUR, HOURANDSUB, SUBHOUR", +default: "_none_", +required: "Yes", +variability: "constant") +%> -**exDayBeg=*date*** +**exDayBeg=_date_** -Initial day of export. Exports for which *exFreq* = YEAR do not allow specification of *exDayBeg* and *exDayEnd*; for MONTH exports, these members are optional and default to include the entire run; for DAY and shorter-interval exports, *exDayBeg* is required and *exDayEnd* defaults to *exDayBeg*. +Initial day of export. Exports for which _exFreq_ = YEAR do not allow specification of _exDayBeg_ and _exDayEnd_; for MONTH exports, these members are optional and default to include the entire run; for DAY and shorter-interval exports, _exDayBeg_ is required and _exDayEnd_ defaults to _exDayBeg_. <%= member_table( - units: "", - legal_range: "*date*", - default: "first day of simulation if *exFreq* = MONTH", - required: "Required for *exTypes* ZEB, ZST, MTR, AH, and UDT if *exFreq* is DAY, HOUR, HOURANDSUB, or SUBHOUR", - variability: "constant") - %> +units: "", +legal_range: "_date_", +default: "first day of simulation if _exFreq_ = MONTH", +required: "Required for _exTypes_ ZEB, ZST, MTR, AH, and UDT if _exFreq_ is DAY, HOUR, HOURANDSUB, or SUBHOUR", +variability: "constant") +%> -**exDayEnd=*date*** +**exDayEnd=_date_** Final day of export period, except for YEAR exports. <%= member_table( - units: "", - legal_range: "*date*", - default: "last day of simulation if *exFreq*= MONTH, else *exDayBeg*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "_date_", +default: "last day of simulation if _exFreq_= MONTH, else _exDayBeg_", +required: "No", +variability: "constant") +%> -**exZone=*znName*** +**exZone=_znName_** -Name of ZONE for which a ZEB, ZST, or ZDD export is being requested; ALL and SUM are also allowed except with *exType* = ZST. +Name of ZONE for which a ZEB, ZST, or ZDD export is being requested; ALL and SUM are also allowed except with _exType_ = ZST. <%= member_table( - units: "", - legal_range: "name of a *ZONE*, ALL, SUM", - default: "*none*", - required: "Required for *exTypes* ZDD, ZEB, and ZST.", - variability: "constant") - %> +units: "", +legal_range: "name of a _ZONE_, ALL, SUM", +default: "_none_", +required: "Required for _exTypes_ ZDD, ZEB, and ZST.", +variability: "constant") +%> -**exMeter=*mtrName*** +**exMeter=_mtrName_** -Specifies meter(s) whose data is to be exported, for *exType*=MTR. +Specifies meter(s) whose data is to be exported, for _exType_=MTR. <%= member_table( - units: "", - legal_range: "name of a *METER*, ALL, SUM", - default: "*none*", - required: "for *exType*=MTR", - variability: "constant") - %> +units: "", +legal_range: "name of a _METER_, ALL, SUM", +default: "_none_", +required: "for _exType_=MTR", +variability: "constant") +%> -**exTu=*tuName*** +**exTu=_tuName_** -Specifies air handler(s) to be reported, for *rpType*=TUSIZE or TULOAD. +Specifies air handler(s) to be reported, for _rpType_=TUSIZE or TULOAD. <%= member_table( - units: "", - legal_range: "name of a TERMINAL, ALL, SUM", - default: "", - required: "Required for *rpType*", - variability: "constant") %> +units: "", +legal_range: "name of a TERMINAL, ALL, SUM", +default: "", +required: "Required for _rpType_", +variability: "constant") %> -**exDHWMeter=*dhwMtrName*** +**exDHWMeter=_dhwMtrName_** -Specifies DHW meter(s) whose data is to be exported, for *exType*=DHWMTR. +Specifies DHW meter(s) whose data is to be exported, for _exType_=DHWMTR. <%= member_table( - units: "", - legal_range: "name of a *DHWMETER*, ALL, SUM", - default: "*none*", - required: "for *exType*=DHWMTR", - variability: "constant") - %> +units: "", +legal_range: "name of a _DHWMETER_, ALL, SUM", +default: "_none_", +required: "for _exType_=DHWMTR", +variability: "constant") +%> -**exAFMeter=*afMtrName*** +**exAFMeter=_afMtrName_** Air flow meter report. <%= member_table( - units: "", - legal_range: "*Name of AFMETER*", - default: "0", - required: "No", - variability: "runly") %> +units: "", +legal_range: "_Name of AFMETER_", +default: "0", +required: "No", +variability: "runly") %> **exAh=ah*Name*** -Specifies air handler(s) to be exported, for *exType*=AH. +Specifies air handler(s) to be exported, for _exType_=AH. <%= member_table( - units: "", - legal_range: "name of an *AIRHANDLER*, ALL, SUM", - default: "*none*", - required: "for *exType*=AH", - variability: "constant") - %> +units: "", +legal_range: "name of an _AIRHANDLER_, ALL, SUM", +default: "_none_", +required: "for _exType_=AH", +variability: "constant") +%> -**exBtuSf=*float*** +**exBtuSf=_float_** Scale factor used for exported energy values. <%= member_table( - units: "", - legal_range: "*any multiple of ten*", - default: "1,000,000: energy exported in MBtu.", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "_any multiple of ten_", +default: "1,000,000: energy exported in MBtu.", +required: "No", +variability: "constant") +%> -**exCond=*expression*** +**exCond=_expression_** -Conditional exporting flag. If given, export rows are generated only when value of expression is non-0. Allowed with *exTypes* ZEB, ZST, MTR, AH, and UDT. +Conditional exporting flag. If given, export rows are generated only when value of expression is non-0. Allowed with _exTypes_ ZEB, ZST, MTR, AH, and UDT. <%= member_table( - units: "", - legal_range: "*any numeric expression*", - default: "1 (exporting enabled)", - required: "No", - variability: "subhour /end of interval") - %> +units: "", +legal_range: "_any numeric expression_", +default: "1 (exporting enabled)", +required: "No", +variability: "subhour /end of interval") +%> -**exTitle=*string*** +**exTitle=_string_** -Title for use in export header of User-Defined export. Disallowed if *exType* is not UDT. +Title for use in export header of User-Defined export. Disallowed if _exType_ is not UDT. <%= member_table( - units: "", - legal_range: "", - default: "User-defined Export", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "", +default: "User-defined Export", +required: "No", +variability: "constant") +%> -**exHeader=*choice*** +**exHeader=_choice_** Use NO to suppress the export header which gives the export type, zone, meter, or air handler being exported, time interval, column headings, etc. You might do this if the export is to be subsequently imported to a program that is confused by the header information. Alternatively, one may use COLUMNSONLY to print only the column headings. This can be useful when plotting CSV data in a spreadsheet tool or [DView](https://beopt.nrel.gov/downloadDView). -The choices YESIFNEW and COLUMNSONLYIFNEW cause header generation when the associated EXPORTFILE is being created but suppress headers when appending to an existing file. This is useful for accumulating results from a set of runs where typically column headings are desired only once. +The choices YESIFNEW and COLUMNSONLYIFNEW cause header generation when the associated EXPORTFILE is being created but suppress headers when appending to an existing file. This is useful for accumulating results from a set of runs where typically column headings are desired only once. If not suppressed, the export header shows, in four lines: -*runTitle* and *runSerial* (see Section 5.1);the run date and time the export type ("Energy Balance", "Statistics", etc., or *exTitle* if given)and frequency ("year", "day", etc.)a list of field names in the order they will be shown in the data rows("Mon", "Day", "Tair", etc.) +_runTitle_ and _runSerial_ (see Section 5.1);the run date and time the export type ("Energy Balance", "Statistics", etc., or _exTitle_ if given)and frequency ("year", "day", etc.)a list of field names in the order they will be shown in the data rows("Mon", "Day", "Tair", etc.) -The *specific* month, day, etc. is NOT shown in the export header (as it is shown in the report header), because it is shown in each export row. +The _specific_ month, day, etc. is NOT shown in the export header (as it is shown in the report header), because it is shown in each export row. The field names may be used by a program reading the export to identify the data in the rows which follow; if the program does this, it will not require modification when fields are added to or rearranged in the export in a future version of CSE. <%= member_table( - units: "", - legal_range: "YES, YESIFNEW, NO, COLUMNSONLY, COLUMNSONLYIFNEW", - default: "YES", - required: "No", - variability: "constant") %> +units: "", +legal_range: "YES, YESIFNEW, NO, COLUMNSONLY, COLUMNSONLYIFNEW", +default: "YES", +required: "No", +variability: "constant") %> -**exFooter=*choice*** +**exFooter=_choice_** Use NO to suppress the blank line otherwise output as an export "footer". (Exports do not receive the total lines that most reports receive as footers.) <%= member_table( - units: "", - legal_range: "YES, NO", - default: "YES", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "YES, NO", +default: "YES", +required: "No", +variability: "constant") +%> **endExport** Optionally indicates the end of the export definition. Alternatively, the end of the export definition can be indicated by END or by beginning another object. <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") +%> **Related Probes:** -- @[export](#p_export) +- @[export][p_export] diff --git a/doc/src/docs/input-data/exportcol.md b/doc/src/docs/input-data/exportcol.md index d9a6e0e34..e2e1b7474 100644 --- a/doc/src/docs/input-data/exportcol.md +++ b/doc/src/docs/input-data/exportcol.md @@ -11,80 +11,80 @@ EXPORTCOL members are similar to the corresponding REPORTCOL members. See Sectio Name of EXPORTCOL. <%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "_63 characters_", +default: "_none_", +required: "No", +variability: "constant") +%> -**colExport=*exName*** +**colExport=_exName_** -Name of export to which this column belongs. If the EXPORTCOL is given within an EXPORT object, then *colExport* defaults to that export. +Name of export to which this column belongs. If the EXPORTCOL is given within an EXPORT object, then _colExport_ defaults to that export. <%= member_table( - units: "", - legal_range: "name of an *EXPORT*", - default: "*current export, if any*", - required: "Unless in an *EXPORT*", - variability: "constant") - %> +units: "", +legal_range: "name of an _EXPORT_", +default: "_current export, if any_", +required: "Unless in an _EXPORT_", +variability: "constant") +%> -**colVal=*expression*** +**colVal=_expression_** Value to show in this position in each row of export. <%= member_table( - units: "", - legal_range: "*any numeric or string expression*", - default: "*none*", - required: "Yes", - variability: "subhour /end interval") - %> +units: "", +legal_range: "_any numeric or string expression_", +default: "_none_", +required: "Yes", +variability: "subhour /end interval") +%> -**colHead=*string*** +**colHead=_string_** Text used for field name in export header. <%= member_table( - units: "", - legal_range: "", - default: "*colName* or blank", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "", +default: "_colName_ or blank", +required: "No", +variability: "constant") +%> -**colWid=*int*** +**colWid=_int_** -Maximum width. Leading and trailing spaces and non-significant zeroes are removed from export data to save file space. Specifying a *colWid* less than the default may reduce the maximum number of significant digits output. +Maximum width. Leading and trailing spaces and non-significant zeroes are removed from export data to save file space. Specifying a _colWid_ less than the default may reduce the maximum number of significant digits output. <%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "13", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "x $\\ge$ 0", +default: "13", +required: "No", +variability: "constant") +%> -**colDec=*int*** +**colDec=_int_** Number of digits after decimal point. <%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "*flexible format*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "x $\\ge$ 0", +default: "_flexible format_", +required: "No", +variability: "constant") +%> -**colJust=*choice*** +**colJust=_choice_** Specifies positioning of data within column: <%= csv_table(< false) - Left, Left justified - Right, Right justified +Left, Left justified +Right, Right justified END %> @@ -93,13 +93,13 @@ END Optionally indicates the end of the EXPORTCOL. Alternatively, the end of the definition can be indicated by END or by beginning another object. <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") +%> **Related Probes:** -- @[exportCol](#p_exportcol) +- @[exportCol][p_exportcol] diff --git a/doc/src/docs/input-data/exportfile.md b/doc/src/docs/input-data/exportfile.md index 4fc9c54af..e9231c6ea 100644 --- a/doc/src/docs/input-data/exportfile.md +++ b/doc/src/docs/input-data/exportfile.md @@ -11,58 +11,58 @@ Input for EXPORTFILEs and EXPORTs is similar to that for REPORTFILEs and REPORTs Name of EXPORTFILE object. <%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "_63 characters_", +default: "_none_", +required: "No", +variability: "constant") +%> -**xfFileName=*string*** +**xfFileName=_string_** path name of file to be written. If no path is specified, the file is written in the current directory. If no extension is specified, .csv is used. <%= member_table( - units: "", - legal_range: "*file name, path and extension optional*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +units: "", +legal_range: "_file name, path and extension optional_", +default: "_none_", +required: "Yes", +variability: "constant") +%> -**xfFileStat=*choice*** +**xfFileStat=_choice_** -What CSE should do if file *xfFileName* already exists: +What CSE should do if file _xfFileName_ already exists: <%= csv_table(< false) - OVERWRITE, Overwrite pre-existing file. - NEW, Issue error message if file exists. - APPEND, Append new output to present contents of existing file. +OVERWRITE, Overwrite pre-existing file. +NEW, Issue error message if file exists. +APPEND, Append new output to present contents of existing file. END %> -If the specified file does not exist, it is created and *xfFileStat* has no effect. +If the specified file does not exist, it is created and _xfFileStat_ has no effect. <%= member_table( - units: "", - legal_range: "OVERWRITE, NEW, APPEND", - default: "OVERWRITE", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "OVERWRITE, NEW, APPEND", +default: "OVERWRITE", +required: "No", +variability: "constant") +%> **endExportFile** Optionally indicates the end of the export file definition. Alternatively, the end of the Export file definition can be indicated by END or by beginning another object. <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") +%> **Related Probes:** -- @[exportFile](#p_exportfile) +- @[exportFile][p_exportfile] diff --git a/doc/src/docs/input-data/gain.md b/doc/src/docs/input-data/gain.md index 34fa426f8..a14a78377 100644 --- a/doc/src/docs/input-data/gain.md +++ b/doc/src/docs/input-data/gain.md @@ -1,6 +1,6 @@ # GAIN -A GAIN object adds sensible and/or latent heat to the ZONE, and/or adds arbitrary energy use to a METER. GAINs may be subobjects of ZONEs and are normally given within the input for their ZONE. As many GAINs as desired (or none) may be given for each ZONE. Alternatively, GAINs may be subobjects of TOP and specify gnZone to specify their associate zone. +A GAIN object adds sensible and/or latent heat to the ZONE, and/or adds arbitrary energy use to a METER. GAINs may be subobjects of ZONEs and are normally given within the input for their ZONE. As many GAINs as desired (or none) may be given for each ZONE. Alternatively, GAINs may be subobjects of TOP and specify gnZone to specify their associate zone. Each gain has an amount of power (gnPower), which may optionally be accumulated to a METER (gnMeter). The power may be distributed to the zone, plenum, or return as sensible heat with an optional fraction radiant, or to the zone as latent heat (moisture addition), or not. @@ -14,208 +14,204 @@ In the CNE zone mode, the radiant internal gain is distributed to the surfaces i Radiant internal gains are included in the IgnS (Sensible Internal Gain) column in the zone energy balance reports. (They could easily be shown in a separate IgnR column if desired.) Any energy transfer shows two places in the ZEB report, with opposite signs, so that the result is zero -- otherwise it wouldn't be an energy balance. The rest of the reporting story for radiant internal gains turns out to be complex. The specified value of the radiant gain (gnPower \* gnFrZn \* gnFrRad) shows in the IgnS column. To the extent that the gain heats the zone, it also shows negatively in the Masses column, because the zone CAir is lumped with the other masses. To the extent that the gain heats massive surfaces, it also shows negatively in the masses column. To the extent that the gain conducts through windows and quick-model surfaces, it shows negatively in the Conduction column. If the gain conducts through a quick-model surface to another zone, it shows negatively in the Izone (Interzone) column, positively in the Izone column of the receiving zone, and negatively in the receiving zone's Masses or Cond column. - **gnName** Name of gain; follows the word GAIN if given. <%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "_63 characters_", +default: "_none_", +required: "No", +variability: "constant") +%> -**gnZone=*znName*** +**gnZone=_znName_** -Name of ZONE to which heat gains are added. Omitted when GAIN is given as a ZONE subobject. If a TOP subobject (i.e., not a ZONE subobject) and znZone is omitted, heat gains are discarded but energy use is still recorded to gnMeter. This feature can be used to represent energy uses that our outside of conditioned zones (e.g. exterior lighting). +Name of ZONE to which heat gains are added. Omitted when GAIN is given as a ZONE subobject. If a TOP subobject (i.e., not a ZONE subobject) and znZone is omitted, heat gains are discarded but energy use is still recorded to gnMeter. This feature can be used to represent energy uses that our outside of conditioned zones (e.g. exterior lighting). <%= member_table( - units: "", - legal_range: "*name of ZONE*", - default: "*parent zone if any*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "_name of ZONE_", +default: "_parent zone if any_", +required: "No", +variability: "constant") +%> -**gnPower=*float*** +**gnPower=_float_** Rate of heat addition/energy use. Negative gnPower values may be used to represent heat removal/energy generation. Expressions containing functions are commonly used with this member to schedule the gain power on a daily and/or hourly basis. Refer to the functions section in Section 4 for details and examples. -All gains, including electrical, are specified in Btuh units unless associated with DHW use (see gnCtrlDHWSYS), in which case gnPower is specified in Btuh/gal. Note that meter reporting of internal gain is in MBtu (millions of Btu) by default. +All gains, including electrical, are specified in Btuh units unless associated with DHW use (see gnCtrlDHWSYS), in which case gnPower is specified in Btuh/gal. Note that meter reporting of internal gain is in MBtu (millions of Btu) by default. <%= member_table( - units: "Btuh", - legal_range: "*no restrictions*", - default: "*none*", - required: "Yes", - variability: "hourly") - %> +units: "Btuh", +legal_range: "_no restrictions_", +default: "_none_", +required: "Yes", +variability: "hourly") +%> -**gnMeter=*choice*** +**gnMeter=_choice_** Name of meter by which this GAIN's gnPower is recorded. If omitted, gain is assigned to no meter and energy use is not accounted in CSE simulation reports; thus, gnMeter should only be omitted for "free" energy sources. <%= member_table( - units: "", - legal_range: "*name of METER*", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "_name of METER_", +default: "_none_", +required: "No", +variability: "constant") +%> -**gnEndUse=*choice*** +**gnEndUse=_choice_** Meter end use to which the GAIN's energy use should be accumulated. <%= insert_file("doc/src/enduses.md") %> - <%= member_table( - units: "", - legal_range: "*Codes listed above*", - default: "*none*", - required: "Required if gnMeter is given", - variability: "constant") - %> +units: "", +legal_range: "_Codes listed above_", +default: "_none_", +required: "Required if gnMeter is given", +variability: "constant") +%> The gnFrZn, gnFrPl, and gnFrRtn members allow you to allocate the gain among the zone, the zone's plenum, and the zone's return air flow. Values that total to more than 1.0 constitute an error. If they total less than 1, the unallocated portion of the gain is recorded by the meter (if specified) but not transferred into the building. By default, all of the gain not directed to the return or plenum goes to the zone. -**gnFrZn=*float*** +**gnFrZn=_float_** Fraction of gain going to zone. gnFrLat (below) gives portion of this gain that is latent, if any; the remainder is sensible. <% if not_yet_implemented %> <%= member_table( - units: "", - legal_range: "gnFrZn + gnFrPl + gnFrRtn $\leq$ 1", - default: "*1 - gnFrPl - gnFrRtn*", - required: "No", - variability: "hourly") - %> +units: "", +legal_range: "gnFrZn + gnFrPl + gnFrRtn $\leq$ 1", +default: "_1 - gnFrPl - gnFrRtn_", +required: "No", +variability: "hourly") +%> <% else %> <%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "1.", - required: "No", - variability: "hourly") - %> +units: "", +legal_range: "0 $\\leq$ _x_ $\\leq$ 1", +default: "1.", +required: "No", +variability: "hourly") +%> <% end %> -**gnFrPl=*float*** +**gnFrPl=_float_** Fraction of gain going to plenum. <%= member_table( - units: "", - legal_range: "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", - default: "0.", - required: "No", - variability: "hourly") %> +units: "", +legal_range: "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", +default: "0.", +required: "No", +variability: "hourly") %> - -**gnFrRtn=*float*** +**gnFrRtn=_float_** Fraction of gain going to return. <%= member_table( - units: "", - legal_range: "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", - default: "0.", - required: "No", - variability: "hourly") %> +units: "", +legal_range: "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", +default: "0.", +required: "No", +variability: "hourly") %> -**gnFrRad=*float*** +**gnFrRad=_float_** Fraction of total gain going to zone (gnFrZn) that is radiant rather than convective or latent. <%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "0.0", - required: "No", - variability: "hourly") - %> +units: "", +legal_range: "0 $\\leq$ _x_ $\\leq$ 1", +default: "0.0", +required: "No", +variability: "hourly") +%> -**gnFrLat=*float*** +**gnFrLat=_float_** Fraction of total gain going to zone (gnFrZn) that is latent heat (moisture addition). <%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.0", - required: "No", - variability: "hourly") - %> +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.0", +required: "No", +variability: "hourly") +%> -**gnDlFrPow=*float*** +**gnDlFrPow=_float_** Hourly power reduction factor, typically used to modify lighting power to account for daylighting. <%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "1.0", - required: "No", - variability: "hourly") - %> - +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "1.0", +required: "No", +variability: "hourly") +%> -**gnCtrlDHWSYS=*dhwsysName*** +**gnCtrlDHWSYS=_dhwsysName_** -Name of a DHWSYS whose water use modulates gnPower. For example, electricity use of water-using appliances (e.g. dishwasher or clothes washer) can be modeled based on water use, ensuring that the uses are synchronized. When this feature is used, gnPower should be specified in Btuh/gal. +Name of a DHWSYS whose water use modulates gnPower. For example, electricity use of water-using appliances (e.g. dishwasher or clothes washer) can be modeled based on water use, ensuring that the uses are synchronized. When this feature is used, gnPower should be specified in Btuh/gal. <%= member_table( - units: "", - legal_range: "*name of a DHWSYS*", - default: "no DHWSYS/GAIN linkage", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "_name of a DHWSYS_", +default: "no DHWSYS/GAIN linkage", +required: "No", +variability: "constant") +%> -**gnCtrlDHWMETER=*dhwMtrName*** +**gnCtrlDHWMETER=_dhwMtrName_** Allows gains to track water usage such as dishwashers, clothes washers, etc. <%= member_table( - units: "", - legal_range: "*name of DHWMETER*", - default: "0", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_name of DHWMETER_", +default: "0", +required: "No", +variability: "constant") %> -**gnCtrlDHWEndUse=*dhwEndUseName*** +**gnCtrlDHWEndUse=_dhwEndUseName_** -Name of the DHWSYS end use consumption that modulates gnPower. See DHWMETER for DHW end use definitions. +Name of the DHWSYS end use consumption that modulates gnPower. See DHWMETER for DHW end use definitions. <%= member_table( - units: "", - legal_range: "DHW end use", - default: "Total", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "DHW end use", +default: "Total", +required: "No", +variability: "constant") +%> **endGain** Optional to indicate the end of the GAIN definition. Alternatively, the end of the gain definition can be indicated by END or by the declaration of another object. <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") +%> **Related Probes:** -- @[gain](#p_gain) +- @[gain][p_gain] diff --git a/doc/src/docs/input-data/glazetype.md b/doc/src/docs/input-data/glazetype.md index a85632bc4..dd678d1b4 100644 --- a/doc/src/docs/input-data/glazetype.md +++ b/doc/src/docs/input-data/glazetype.md @@ -7,26 +7,26 @@ GLAZETYPE constructs an object of class GLAZETYPE that represents a glazing type Name of glazetype. Required for reference from WINDOW objects, below. <%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +units: "", +legal_range: "_63 characters_", +default: "_none_", +required: "Yes", +variability: "constant") +%> -**gtModel=*choice*** +**gtModel=_choice_** Selects model to be used for WINDOWs based on this GLAZETYPE. <%= member_table( - units: "", - legal_range: "SHGC, ASHWAT", - default: "SHGC", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "SHGC, ASHWAT", +default: "SHGC", +required: "No", +variability: "constant") +%> -**gtU=*float*** +**gtU=_float_** Glazing conductance (U-factor without surface films, therefore not actually a U-factor but a C-factor). Used as wnU default; an error message will be issued if the U value is not given in the window (wnU) nor in the glazeType (gtU). Preferred Approach: To use accurately with standard winter rated U-factor from ASHRAE or NFRC enter as: @@ -37,177 +37,177 @@ Where 0.85 is the sum of the interior (0.68) and exterior (0.17) design air film Approach 2. Enter gtU=U-factor and let the wnInH and wnExH default. This approach systematically underestimates the window U-factor because it adds the wnExfilm resistance to 1/U-factor thereby double counting the exterior film resistance. This approach will also yield incorrect results for gnFrad internal gain since the high wnInH will put almost all the gain back in the space. <%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "Btuh/ft^2^-^o^F", +legal_range: "_x_ $>$ 0", +default: "_none_", +required: "No", +variability: "constant") +%> -**gtUNFRC=*float*** +**gtUNFRC=_float_** Fenestration system (including frame) U-factor evaluated at NFRC heating conditions. For ASHWAT windows, a value for the NFRC U-factor is required, set via gtUNFRC or wnUNFRC. <%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "Btuh/ft^2^-^o^F", +legal_range: "_x_ $>$ 0", +default: "_none_", +required: "No", +variability: "constant") +%> -**gtSHGC=*float*** +**gtSHGC=_float_** Glazing Solar Heat Gain Coefficient: fraction of normal beam insolation which gets through glass to space inside. We recommend using this to represent the glass normal transmissivity characteristic only, before shading and framing effects <%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +units: "fraction", +legal_range: "_0_ $\\leq$ _x_ $\\leq$ _1_", +default: "_none_", +required: "Yes", +variability: "constant") +%> -**gtSMSO=*float*** +**gtSMSO=_float_** SHGC multiplier with shades open. May be overriden in the specific window input. <%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "1.0", - required: "No", - variability: "Monthly - Hourly") - %> +units: "fraction", +legal_range: "_0_ $\\leq$ _x_ $\\leq$ _1_", +default: "1.0", +required: "No", +variability: "Monthly - Hourly") +%> -**gtSMSC=*float*** +**gtSMSC=_float_** SHGC multiplier with shades closed. May be overriden in the specific window input. <%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "gtSMSO (no shades)", - required: "No", - variability: "Monthly - Hourly") - %> +units: "fraction", +legal_range: "_0_ $\\leq$ _x_ $\\leq$ _1_", +default: "gtSMSO (no shades)", +required: "No", +variability: "Monthly - Hourly") +%> -**gtFMult=*float*** +**gtFMult=_float_** Framing multiplier used if none given in window, for example .9 if frame and mullions reduce the solar gain by 10%. Default of 1.0 implies frame/mullion effects allowed for in gtSHGC's or always specified in Windows. <%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "gtSHGCO", - required: "No", - variability: "Monthly - Hourly") - %> +units: "fraction", +legal_range: "_0_ $\\leq$ _x_ $\\leq$ _1_", +default: "gtSHGCO", +required: "No", +variability: "Monthly - Hourly") +%> -**gtPySHGC =*float*** +**gtPySHGC =_float_** Four float values separated by commas. Coefficients for incidence angle SHGC multiplier polynomial applied to gtSHGC to determine beam transmissivity at angles of incidence other than 90 degrees. The values are coefficients for first through fourth powers of the cosine of the incidence angle; there is no constant part. An error message will be issued if the coefficients do not add to one. They are used in the following computation: -    angle = incidence angle of beam radiation, measured from normal to glass. +angle = incidence angle of beam radiation, measured from normal to glass. -    cosI = cos( angle) +cosI = cos( angle) -    angMult = a\*cosI + b\*cosI\^2 + c\*cosI\^3 + d\*cosI\^4 +angMult = a\*cosI + b\*cosI\^2 + c\*cosI\^3 + d\*cosI\^4 -    beamXmisvty = gtSHGCO \* angMult (shades open) +beamXmisvty = gtSHGCO \* angMult (shades open) <%= member_table( - units: "float", - legal_range: "*any*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +units: "float", +legal_range: "_any_", +default: "_none_", +required: "Yes", +variability: "constant") +%> -**gtDMSHGC=*float*** +**gtDMSHGC=_float_** SHGC diffuse multiplier, applied to gtSHGC to determine transmissivity for diffuse radiation. <%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +units: "fraction", +legal_range: "_0_ $\\leq$ _x_ $\\leq$ _1_", +default: "_none_", +required: "Yes", +variability: "constant") +%> -**gtDMRBSol=*float*** +**gtDMRBSol=_float_** SHGC diffuse multiplier, applied to qtSHGC to determine transmissivity for diffuse radiation reflected back out the window. Misnamed as a reflectance. Assume equal to DMSHGC if no other data available. <%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +units: "fraction", +legal_range: "_0_ $\\leq$ _x_ $\\leq$ _1_", +default: "_none_", +required: "Yes", +variability: "constant") +%> -**gtNGlz=*int*** +**gtNGlz=_int_** Number of glazings in the Glazetype (bare glass only, not including any interior or exterior shades). <%= member_table( - units: "", - legal_range: "*0* $<$ *x* $\\leq$ *4*", - default: "2", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "_0_ $<$ _x_ $\\leq$ _4_", +default: "2", +required: "No", +variability: "constant") +%> -**gtExShd=*choice*** +**gtExShd=_choice_** Exterior shading type (ASHWAT only). <%= member_table( - units: "", - legal_range: "NONE INSCRN", - default: "NONE", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "NONE INSCRN", +default: "NONE", +required: "No", +variability: "constant") +%> -**gtInShd=*choice*** +**gtInShd=_choice_** Interior shade type (ASHWAT only). <%= member_table( - units: "", - legal_range: "NONE DRAPEMED", - default: "NONE", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "NONE DRAPEMED", +default: "NONE", +required: "No", +variability: "constant") +%> -**gtDirtLoss=*float*** +**gtDirtLoss=_float_** Glazing dirt loss factor. <%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "0", - required: "No", - variability: "constant") - %> +units: "fraction", +legal_range: "_0_ $\\leq$ _x_ $\\leq$ _1_", +default: "0", +required: "No", +variability: "constant") +%> **endGlazeType** Optional to indicates the end of the Glazetype. Alternatively, the end of the GLAZETYPE definition can be indicated by "END" or by beginning another object <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") +%> **Related Probes:** -- @[glazeType](#p_glazetype) +- @[glazeType][p_glazetype] diff --git a/doc/src/docs/input-data/heatplant.md b/doc/src/docs/input-data/heatplant.md index 4108a7376..ef82a35a0 100644 --- a/doc/src/docs/input-data/heatplant.md +++ b/doc/src/docs/input-data/heatplant.md @@ -4,80 +4,80 @@ A HEATPLANT contains one or more BOILER subobjects (Section 5.20.1) and supports BOILERs, HW coils, and heat exchangers are modeled with simple heat-injection models. There is no explicit modeling of circulating hot water temperatures and flows; it is always assumed the temperature and flow at each load (HW coil or heat exchanger) are sufficient to allow the load to transfer any desired amount of heat up to its capacity. When the total heat demand exceeds the plant's capacity, the model reduces the capacity of each load until the plant is not overloaded. The reduced capacity is the same fraction of rated capacity for all loads on the HEATPLANT; any loads whose requested heat is less than the reduced capacity are unaffected. -The BOILERs in the HEATPLANT can be grouped into *STAGES* of increasing capacity. The HEATPLANT uses the first stage that can meet the load. The load is distributed among the BOILERs in the stage so that each operates at the same fraction of its rated capacity. +The BOILERs in the HEATPLANT can be grouped into _STAGES_ of increasing capacity. The HEATPLANT uses the first stage that can meet the load. The load is distributed among the BOILERs in the stage so that each operates at the same fraction of its rated capacity. For each HEATPLANT, piping loss is modeled, as a constant fraction of the BOILER capacity of the heatPlant's most powerful stage. This heat loss is added to the load whenever the plant is operating; as modeled, the heat loss is independent of load, weather, or any other variables. **heatplantName** -Name of HEATPLANT object, given immediately after the word HEATPLANT. This name is used to refer to the heatPlant in *tuhcHeatplant* and *ahhcHeatplant* commands. +Name of HEATPLANT object, given immediately after the word HEATPLANT. This name is used to refer to the heatPlant in _tuhcHeatplant_ and _ahhcHeatplant_ commands. <%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") %> +units: "", +legal_range: "_63 characters_", +default: "_none_", +required: "Yes", +variability: "constant") %> -**hpSched=*choice*** +**hpSched=_choice_** Heat plant schedule: hourly variable choice of OFF, AVAIL, or ON. <%= csv_table(< false) -OFF, HEATPLANT will not supply hot water regardless of demand. All loads (HW coils and heat exchangers) should be scheduled off when the plant is off; an error will occur if a coil calls for heat when its plant is off. -AVAIL, HEATPLANT will operate when one or more loads demand heat. -ON, HEATPLANT runs unconditionally. When no load wants heat, least powerful (first) stage runs. +OFF, HEATPLANT will not supply hot water regardless of demand. All loads (HW coils and heat exchangers) should be scheduled off when the plant is off; an error will occur if a coil calls for heat when its plant is off. +AVAIL, HEATPLANT will operate when one or more loads demand heat. +ON, HEATPLANT runs unconditionally. When no load wants heat, least powerful (first) stage runs. END %> <%= member_table( - units: "", - legal_range: "OFF, AVAIL, or ON", - default: "AVAIL", - required: "No", - variability: "hourly") %> +units: "", +legal_range: "OFF, AVAIL, or ON", +default: "AVAIL", +required: "No", +variability: "hourly") %> -**hpPipeLossF=*float*** +**hpPipeLossF=_float_** Heat plant pipe loss: heat assumed lost from piping connecting boilers to loads whenever the HEATPLANT is operating, expressed as a fraction of the boiler capacity of the plant's most powerful stage. <%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.01", - required: "No", - variability: "constant") %> +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.01", +required: "No", +variability: "constant") %> **hpStage1=boilerName, boilerName, boilerName, ...** -**hpStage1=ALL\_BUT, boilerName, boilerName, boilerName, ...** +**hpStage1=ALL_BUT, boilerName, boilerName, boilerName, ...** **hpStage2 through hpStage7 same** -The commands *hpStage1* through *hpStage7* allow specification of up to seven *STAGES* in which BOILERs are activated as the load increases. Each stage may be specified with a list of up to seven names of BOILERs in the HEATPLANT, or with the word ALL, meaning all of the HEATPLANT's BOILERs, or with the word ALL\_BUT and a list of up to six names of BOILERs. Each stage should be more powerful than the preceding one. If you have less than seven stages, you may skip some of the commands *hpStage1* through *hpStage7* -- the used stage numbers need not be contiguous. +The commands _hpStage1_ through _hpStage7_ allow specification of up to seven _STAGES_ in which BOILERs are activated as the load increases. Each stage may be specified with a list of up to seven names of BOILERs in the HEATPLANT, or with the word ALL, meaning all of the HEATPLANT's BOILERs, or with the word ALL_BUT and a list of up to six names of BOILERs. Each stage should be more powerful than the preceding one. If you have less than seven stages, you may skip some of the commands _hpStage1_ through _hpStage7_ -- the used stage numbers need not be contiguous. -If none of *hpStage1* through *hpStage7* are given, CSE supplies a single default stage containing all boilers. +If none of _hpStage1_ through _hpStage7_ are given, CSE supplies a single default stage containing all boilers. -A comma must be entered between boiler names and after the word ALL\_BUT. +A comma must be entered between boiler names and after the word ALL_BUT. <%= member_table( - units: "", - legal_range: "1 to 7 names;ALL\_BUT and 1 to 6 names;ALL", - default: "*hpStage1* = ALL", - required: "No", - variability: "constant") %> +units: "", +legal_range: "1 to 7 names;ALL_BUT and 1 to 6 names;ALL", +default: "_hpStage1_ = ALL", +required: "No", +variability: "constant") %> **endHeatplant** Optionally indicates the end of the HEATPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") %> **Related Probes:** -- @[heatPlant](#p_heatplant) +- @[heatPlant][p_heatplant] diff --git a/doc/src/docs/input-data/holiday.md b/doc/src/docs/input-data/holiday.md index bcac9d04a..f254c2559 100644 --- a/doc/src/docs/input-data/holiday.md +++ b/doc/src/docs/input-data/holiday.md @@ -7,17 +7,18 @@ Examples and the list of default holidays are given after the member description + **hdName** Name of holiday: must follow the word HOLIDAY. <%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +units: "", +legal_range: "_63 characters_", +default: "_none_", +required: "Yes", +variability: "constant") +%> A holiday may be specified by date or via a rule such as "Fourth Thursday in November". To specify by date, give hdDateTrue, and also hdDateObs or hdOnMonday if desired. To specify by rule, give all three of hdCase, hdMon, and hdDow. @@ -26,112 +27,116 @@ A holiday may be specified by date or via a rule such as "Fourth Thursday in Nov The true date of a holiday, even if not celebrated on that day. <%= member_table( - units: "", - legal_range: "*date*", - default: "*blank*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "_date_", +default: "_blank_", +required: "No", +variability: "constant") +%> **hdDateObs*=date*** The date that a holiday will be observed. Allowed only if hdDateTrue given and hdOnMonday not given. <%= member_table( - units: "", - legal_range: "*date*", - default: "*hdDateTrue*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "_date_", +default: "_hdDateTrue_", +required: "No", +variability: "constant") +%> -**hdOnMonday=*choice*** +**hdOnMonday=_choice_** If YES, holiday is observed on the following Monday if the true date falls on a weekend. Allowed only if hdDateTrue given and hdDateObs not given. -Note: there is no provision to celebrate a holiday that falls on a Saturday on *Friday* (as July 4 was celebrated in 1992). +Note: there is no provision to celebrate a holiday that falls on a Saturday on _Friday_ (as July 4 was celebrated in 1992). <%= member_table( - units: "", - legal_range: "YES/NO", - default: "YES", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "YES/NO", +default: "YES", +required: "No", +variability: "constant") +%> -**hdCase=*choice*** +**hdCase=_choice_** Week of the month that the holiday is observed. hdCase, hdMon, and hdDow may be given only if hdDateTrue, hdDateObs, and hdOnMonday are not given. <%= member_table( - units: "", - legal_range: "FIRST SECOND THIRD FOURTH LAST", - default: "FIRST", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "FIRST SECOND THIRD FOURTH LAST", +default: "FIRST", +required: "No", +variability: "constant") +%> -**hdMon=*choice*** +**hdMon=_choice_** Month that the holiday is observed. <%= member_table( - units: "", - legal_range: "JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC", - default: "*none*", - required: "required if hdCase given", - variability: "constant") - %> +units: "", +legal_range: "JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC", +default: "_none_", +required: "required if hdCase given", +variability: "constant") +%> **hdDow*=choice*** Day of the week that the holiday is observed. <%= member_table( - units: "", - legal_range: "SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY", - default: "MONDAY", - required: "required if hdCase given", - variability: "constant") - %> +units: "", +legal_range: "SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY", +default: "MONDAY", +required: "required if hdCase given", +variability: "constant") +%> **endHoliday** Indicates the end of the holiday definition. Alternatively, the end of the holiday definition can be indicated by "END" or simply by beginning another object. <%= member_table( - units: "", - legal_range: "", - default: "", - required: "*none*", - variability: "constant") - %> +units: "", +legal_range: "", +default: "", +required: "_none_", +variability: "constant") +%> Examples of valid HOLIDAY object specifications: -- Holiday on May first, observed date moved to following Monday if the first falls on a weekend (hdOnMonday defaults Yes). +- Holiday on May first, observed date moved to following Monday if the first falls on a weekend (hdOnMonday defaults Yes). + HOLIDAY MAYDAY; hdDateTrue = May 1; -- Holiday on May 1, observed on May 3. +- Holiday on May 1, observed on May 3. + HOLIDAY MAYDAY; hdDateTrue = May 1; hdDateObs = May 3; -- Holiday observed on May 1 even if on a weekend. +- Holiday observed on May 1 even if on a weekend. + HOLIDAY MAYDAY; hdDateTrue = May 1; hdOnMonday = No; -- Holiday observed on Wednesday of third week of March +- Holiday observed on Wednesday of third week of March + HOLIDAY HYPOTHET; hdCase = third; hdDow = Wed; @@ -140,20 +145,20 @@ Examples of valid HOLIDAY object specifications: As with reports, Holidays are automatically generated for a standard set of Holidays. The following are the default holidays automatically defined by CSE: <%= csv_table(< false) - New Year's Day, \*January 1 - M L King Day, \*January 15 - President's Day, 3rd Monday in February - Memorial Day, last Monday in May - Fourth of July, \*July 4 - Labor Day, 1st Monday in September - Columbus Day, 2nd Monday in October - Veterans Day, \*November 11 - Thanksgiving, 4th Thursday in November - Christmas, \*December 25 +New Year's Day, \*January 1 +M L King Day, \*January 15 +President's Day, 3rd Monday in February +Memorial Day, last Monday in May +Fourth of July, \*July 4 +Labor Day, 1st Monday in September +Columbus Day, 2nd Monday in October +Veterans Day, \*November 11 +Thanksgiving, 4th Thursday in November +Christmas, \*December 25 END %> -\* *observed on the following Monday if falls on a weekend, except as otherwise noted:* +\* _observed on the following Monday if falls on a weekend, except as otherwise noted:_ If a particular default holiday is not desired, it can be removed with a DELETE statement: @@ -163,8 +168,8 @@ If a particular default holiday is not desired, it can be removed with a DELETE DELETE HOLIDAY "VETERANS DAY" // No case-sensitivity -Note that the name must be spelled *exactly* as listed above. +Note that the name must be spelled _exactly_ as listed above. **Related Probes:** -- @[holiday](#p_holiday) +- @[holiday][p_holiday] diff --git a/doc/src/docs/input-data/importfile.md b/doc/src/docs/input-data/importfile.md index 15005a9dd..c9201d242 100644 --- a/doc/src/docs/input-data/importfile.md +++ b/doc/src/docs/input-data/importfile.md @@ -1,17 +1,17 @@ # IMPORTFILE -IMPORTFILE allows specification of a file from which external data can be accessed using the [import()](#import) and [importStr()](#importstr) functions. This allows external values to be referenced in expressions. Any number of IMPORTFILEs can be defined and any number of import()/importStr() references can be made to a give IMPORTFILE. - -Import files are text files containing an optional header and comma-separated data fields. With -the header present, the structure of an import file matches that of an [EXPORT](#export) file. This makes it convenient to import unmodified files EXPORTed from prior runs. The file structure is as follows (noting that the header in lines 1-4 should not be present when imHeader=NO) -- - -<%= csv_table(< true) - Line, Contents, Notes - 1, *runTitle*, *runNumber*, read but not checked - 2, *timestamp*, in quotes, read but not checked - 3, *title*, *freq*, should match imTitle and imFreq (see below) - 4, *colName1*, *colName2*, ..., comma separated column names optionally in quotes - 5 .., *val1*, *val2*, ..., comma separated values (string values optionally in quotes) +IMPORTFILE allows specification of a file from which external data can be accessed using the [import()](../input-structure.md#import) and [importStr()](../input-structure.md#importstr) functions. This allows external values to be referenced in expressions. Any number of IMPORTFILEs can be defined and any number of import()/importStr() references can be made to a give IMPORTFILE. + +Import files are text files containing an optional header and comma-separated data fields. With +the header present, the structure of an import file matches that of an [EXPORT][export] file. This makes it convenient to import unmodified files EXPORTed from prior runs. The file structure is as follows (noting that the header in lines 1-4 should not be present when imHeader=NO) -- + +<%= csv*table(< true) +Line, Contents, Notes +1, \_runTitle*, _runNumber_, read but not checked +2, _timestamp_, in quotes, read but not checked +3, _title_, _freq_, should match imTitle and imFreq (see below) +4, _colName1_, _colName2_, ..., comma separated column names optionally in quotes +5 .., _val1_, _val2_, ..., comma separated values (string values optionally in quotes) END %> @@ -45,93 +45,91 @@ Example IMPORTFILE use (reading from imp1.csv) Notes - * As usual, IMPORTFILEs can be referenced before they are defined. HOWEVER, *imFreq* is not known for forward-references to IMPORTFILEs and will be assumed to be subhour. Errors (and no run) will result if the referencing import()s expect values at another *imFreq*. **Recommendation: locate IMPORTFILEs prior to associated imports() in the input file.** - * Columns are referenced by 1-based index or column names (assuming file header is present). - In the example above, "Tdb" could be replaced by 3. - * Column names should be case-insensitive unique. CSE issues a warning for each non-unique name found. Reference to a non-unique name in import()/importStr() is treated as an error (no run). - * Heading or data string values generally do not need to be quoted except for values that include comma(s). - - +- As usual, IMPORTFILEs can be referenced before they are defined. HOWEVER, _imFreq_ is not known for forward-references to IMPORTFILEs and will be assumed to be subhour. Errors (and no run) will result if the referencing import()s expect values at another _imFreq_. **Recommendation: locate IMPORTFILEs prior to associated imports() in the input file.** +- Columns are referenced by 1-based index or column names (assuming file header is present). + In the example above, "Tdb" could be replaced by 3. +- Column names should be case-insensitive unique. CSE issues a warning for each non-unique name found. Reference to a non-unique name in import()/importStr() is treated as an error (no run). +- Heading or data string values generally do not need to be quoted except for values that include comma(s). **imName** Name of IMPORTFILE object (for reference from Import()). -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_63 characters*", +default: "_none_", +required: "No", +variability: "constant") %> -**imFileName=*string*** +**imFileName=_string_** Gives path name of file to be read. If directory is specified, CSE first looks for the file the current directory and searches include paths specified by the -I command line parameter (if any). -<%= member_table( - units: "", - legal_range: "*file name, path optional*", - default: "*none*", - required: "Yes", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_file name, path optional*", +default: "_none_", +required: "Yes", +variability: "constant") %> -**imTitle=*string*** +**imTitle=_string_** -Title expected to be found on line 3 of the import file. A warning is issued if a non-blank imTitle does not match the import file title. +Title expected to be found on line 3 of the import file. A warning is issued if a non-blank imTitle does not match the import file title. -<%= member_table( - units: "", - legal_range: "Text string", - default: "*none*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "Text string", +default: "\_none*", +required: "No", +variability: "constant") %> -**imFreq=*choice*** +**imFreq=_choice_** -Specifies the interval at which CSE reads from the import file. Data is read at the beginning of the indicated interval and buffered in memory for access in expressions via import() or importStr(). +Specifies the interval at which CSE reads from the import file. Data is read at the beginning of the indicated interval and buffered in memory for access in expressions via import() or importStr(). -<%= member_table( - units: "", - legal_range: "YEAR, MONTH, DAY, HOUR, or SUBHOUR", - default: "*none*", - required: "Yes", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "YEAR, MONTH, DAY, HOUR, or SUBHOUR", +default: "\_none*", +required: "Yes", +variability: "constant") %> -**imHeader=*choice*** +**imHeader=_choice_** -Indicates whether the import file include a 4 line header, as described above. If NO, the import file +Indicates whether the import file include a 4 line header, as described above. If NO, the import file should contain only comma-separated data rows and data items can be referenced only by 1-based column number. <%= member_table( - units: "", - legal_range: "YES NO", - default: "YES", - required: "No", - variability: "constant") %> +units: "", +legal_range: "YES NO", +default: "YES", +required: "No", +variability: "constant") %> -**imBinary=*choice*** +**imBinary=_choice_** Adds the possibility to output the file as a binary option. <%= member_table( - units: "", - legal_range: "YES NO", - default: "No", - required: "No", - variability: "constant") %> +units: "", +legal_range: "YES NO", +default: "No", +required: "No", +variability: "constant") %> **endImportFile** Optionally indicates the end of the import file definition. Alternatively, the end of the import file definition can be indicated by END or by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "", +default: "\_none*", +required: "No", +variability: "constant") %> **Related Probes:** -- @[importFile](#p_importfile) -- @[impFileFldNames](#p_impfilefldnames) +- @[importFile][p_importfile] +- @[impFileFldNames][p_impfilefldnames] diff --git a/doc/src/docs/input-data/index.md b/doc/src/docs/input-data/index.md index fd7f10bfd..fa06b6069 100644 --- a/doc/src/docs/input-data/index.md +++ b/doc/src/docs/input-data/index.md @@ -16,7 +16,7 @@ After the object name, each member's description is introduced with a line of th - _date_ -These types discussed in the section on [expression types](#expression-types). +These types discussed in the section on [expression types][expression-types]. Each member's description continues with a table of the form: diff --git a/doc/src/docs/input-data/izxfer.md b/doc/src/docs/input-data/izxfer.md index 99bb52b21..8d48781f8 100644 --- a/doc/src/docs/input-data/izxfer.md +++ b/doc/src/docs/input-data/izxfer.md @@ -496,4 +496,4 @@ Optionally indicates the end of the interzone transfer definition. **Related Probes:** -- @[izXfer](#p_izxfer) +- @[izXfer][p_izxfer] diff --git a/doc/src/docs/input-data/layer.md b/doc/src/docs/input-data/layer.md index a88e22245..fc2d8c390 100644 --- a/doc/src/docs/input-data/layer.md +++ b/doc/src/docs/input-data/layer.md @@ -67,4 +67,4 @@ Optional end-of-LAYER indicator; LAYER definition may also be indicated by "END" **Related Probes:** -- @[layer](#p_layer) +- @[layer][p_layer] diff --git a/doc/src/docs/input-data/loadmeter.md b/doc/src/docs/input-data/loadmeter.md index 0ce3e84f1..91f60afe3 100644 --- a/doc/src/docs/input-data/loadmeter.md +++ b/doc/src/docs/input-data/loadmeter.md @@ -65,4 +65,4 @@ Indicates the end of the meter definition. Alternatively, the end of the meter d **Related Probes:** -- @[loadmeter](#p_loadmeter) +- @[loadmeter][p_loadmeter] diff --git a/doc/src/docs/input-data/material.md b/doc/src/docs/input-data/material.md index 71926f83f..3960336c0 100644 --- a/doc/src/docs/input-data/material.md +++ b/doc/src/docs/input-data/material.md @@ -105,4 +105,4 @@ Optional to indicate the end of the material. Alternatively, the end of the mate **Related Probes:** -- @[material](#p_material) +- @[material][p_material] diff --git a/doc/src/docs/input-data/meter.md b/doc/src/docs/input-data/meter.md index f2800c37f..7254dd025 100644 --- a/doc/src/docs/input-data/meter.md +++ b/doc/src/docs/input-data/meter.md @@ -2,28 +2,28 @@ A METER object is a user-defined "device" that records energy consumption of equipment as simulated by CSE. The user defines METERs with the desired names, then assigns energy uses of specific equipment to the desired meters using commands described under each equipment type's class description (AIRHANDLER, TERMINAL, etc.). Additional energy use from equipment not simulated by CSE (except optionally for its effect on heating and cooling loads) can also be charged to METERs (see GAIN). The data accumulated by meters can be reported at hourly, daily, monthly, and annual (run) intervals by using REPORTs and EXPORTs of type MTR. -Meters account for energy use in the following pre-defined categories, called *end uses*. The abbreviations in parentheses are used in MTR report headings (and for gnMeter input, below). You also get a column for the net total on the meter (abbreviated "Tot"). +Meters account for energy use in the following pre-defined categories, called _end uses_. The abbreviations in parentheses are used in MTR report headings (and for gnMeter input, below). You also get a column for the net total on the meter (abbreviated "Tot"). <%= insert_file('doc/src/enduses.md') %> -The user has complete freedom over how many meters are defined and how equipment is assigned to them. At one extreme, a single meter "Electricity" could be defined and have all of electrical uses assigned to it. On the other hand, definition of separate meters "Elect\_Fan1", "Elect\_Fan2", and so forth allows accounting of the electricity use for individual pieces of equipment. Various groupings are possible: for example, in a building with several air handlers, one could separate the energy consumption of the fans from the coils, or one could separate the energy use by air handler, or both ways, depending on the information desired from the run. +The user has complete freedom over how many meters are defined and how equipment is assigned to them. At one extreme, a single meter "Electricity" could be defined and have all of electrical uses assigned to it. On the other hand, definition of separate meters "Elect_Fan1", "Elect_Fan2", and so forth allows accounting of the electricity use for individual pieces of equipment. Various groupings are possible: for example, in a building with several air handlers, one could separate the energy consumption of the fans from the coils, or one could separate the energy use by air handler, or both ways, depending on the information desired from the run. The members that assign energy use to meters include: -- GAIN: gnMeter, gnEndUse -- ZONE: xfanMtr -- IZXFER: izfanMtr -- RSYS: rsElecMtr, rsFuelMtr -- DHWSYS: wsElecMtr, wsFuelMtr -- DHWHEATER: whElectMtr, whFuelMtr -- DHWPUMP: wpElecMtr -- DHWLOOPPUMP: wlpElecMtr -- PVARRAY: pvElecMeter -- TERMINAL: tuhcMtr, tfanMtr -- AIRHANDLER: sfanMtr, rfanMtr, ahhcMtr, ahccMtr, ahhcAuxOnMtr, ahhcAuxOffMtr, ahhcAuxFullOnMtr, ahhcAuxOnAtAllMtr, ahccAuxOnMtr, ahccAuxOffMtr, ahccAuxFullOnMtr, ahccAuxOnAtAllMtr -- BOILER: blrMtr, blrpMtr, blrAuxOnMtr, blrAuxOffMtr, blrAuxFullOnMtr, blrAuxOnAtAllMtr -- CHILLER: chMtr, chppMtr, chcpMtr, chAuxOnMtr, chAuxOffMtr, chAuxFullOnMtr, chAuxOnAtAllMtr -- TOWERPLANT: tpMtr +- GAIN: gnMeter, gnEndUse +- ZONE: xfanMtr +- IZXFER: izfanMtr +- RSYS: rsElecMtr, rsFuelMtr +- DHWSYS: wsElecMtr, wsFuelMtr +- DHWHEATER: whElectMtr, whFuelMtr +- DHWPUMP: wpElecMtr +- DHWLOOPPUMP: wlpElecMtr +- PVARRAY: pvElecMeter +- TERMINAL: tuhcMtr, tfanMtr +- AIRHANDLER: sfanMtr, rfanMtr, ahhcMtr, ahccMtr, ahhcAuxOnMtr, ahhcAuxOffMtr, ahhcAuxFullOnMtr, ahhcAuxOnAtAllMtr, ahccAuxOnMtr, ahccAuxOffMtr, ahccAuxFullOnMtr, ahccAuxOnAtAllMtr +- BOILER: blrMtr, blrpMtr, blrAuxOnMtr, blrAuxOffMtr, blrAuxFullOnMtr, blrAuxOnAtAllMtr +- CHILLER: chMtr, chppMtr, chcpMtr, chAuxOnMtr, chAuxOffMtr, chAuxFullOnMtr, chAuxOnAtAllMtr +- TOWERPLANT: tpMtr The end use can be specified by the user only for GAINs and PVARRAYs; in other cases it is hard-wired to Clg, Htg, FanC, FanH, FanV, Fan, or Aux as appropriate. @@ -32,76 +32,76 @@ The end use can be specified by the user only for GAINs and PVARRAYs; in other c Name of meter: required for assigning energy uses to the meter elsewhere. <%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") %> +units: "", +legal_range: "_63 characters_", +default: "_none_", +required: "Yes", +variability: "constant") %> -**mtrDemandRate=*float*** +**mtrDemandRate=_float_** DmdCost per Btu of demand, for a month. <%= member_table( - units: "", - legal_range: "", - default: "N/A", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "N/A", +required: "No", +variability: "constant") %> -**mtrRate=*float*** +**mtrRate=_float_** Cost of energy use per Btu. <%= member_table( - units: "", - legal_range: "", - default: "N/A", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "N/A", +required: "No", +variability: "constant") %> -**mtrSubmeters=*list of up to 50 METERs*** +**mtrSubmeters=_list of up to 50 METERs_** -A comma-separate list of METERs that are accumulated into this METER with optional multipliers (see mtrSubmeterMults). Submeters facilitate flexible categorization of energy results. In addition, use of mtrSubmeterMults allows energy results from a representative model to be scaled and included in overall results. For example, a typical zone could be used to represent 5 similar spaces. The energy uses of the typical zone could be assigned to a dedicated METER that is accumulated to a main METER with a multiplier of 5. Rules -- +A comma-separate list of METERs that are accumulated into this METER with optional multipliers (see mtrSubmeterMults). Submeters facilitate flexible categorization of energy results. In addition, use of mtrSubmeterMults allows energy results from a representative model to be scaled and included in overall results. For example, a typical zone could be used to represent 5 similar spaces. The energy uses of the typical zone could be assigned to a dedicated METER that is accumulated to a main METER with a multiplier of 5. Rules -- -- A METER cannot reference itself as a submeter. -- A given METER can be referenced only once in the mtrSubmeters list. -- Circular references are not allowed. +- A METER cannot reference itself as a submeter. +- A given METER can be referenced only once in the mtrSubmeters list. +- Circular references are not allowed. <%= member_table( - units: "", - legal_range: "*names of METERs*", - default: "", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_names of METERs_", +default: "", +required: "No", +variability: "constant") %> -**mtrSubmeterMults=*list of up to 50 floats*** +**mtrSubmeterMults=_list of up to 50 floats_** Submeter multipliers. Use cases for multipliers include -- - Scaling results from portions of a model to approximate the behavior of multiple similar aspects (e.g. multiple floors in a high-rise building) - Tracking energy use during selected time intervals; for example, peak-period energy use could be metered for certain hours via scheduled multipliers of 0 or 1. -A note re default values: if mtrSubmeterMults is omitted, all multipliers are defaulted to 1. However, when mtrSubmeterMults is included, a multiplier value should be provided for each METER listed in mtrSubmeters since unspecified values are set to 0. +A note re default values: if mtrSubmeterMults is omitted, all multipliers are defaulted to 1. However, when mtrSubmeterMults is included, a multiplier value should be provided for each METER listed in mtrSubmeters since unspecified values are set to 0. <%= member_table( - units: "", - legal_range: "", - default: "1", - required: "No", - variability: "hourly") %> +units: "", +legal_range: "", +default: "1", +required: "No", +variability: "hourly") %> **endMeter** Indicates the end of the meter definition. Alternatively, the end of the meter definition can be indicated by the declaration of another object or by END. <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") %> **Related Probes:** -- @[meter](#p_meter) +- @[meter][p_meter] diff --git a/doc/src/docs/input-data/perimeter.md b/doc/src/docs/input-data/perimeter.md index 795fd5ea8..a03e7bacb 100644 --- a/doc/src/docs/input-data/perimeter.md +++ b/doc/src/docs/input-data/perimeter.md @@ -48,5 +48,5 @@ Optionally indicates the end of the perimeter definition. **Related Probes:** -- @[perimeter](#p_perimeter) -- @[xsurf](#p_xsurf) +- @[perimeter][p_perimeter] +- @[xsurf][p_xsurf] diff --git a/doc/src/docs/input-data/pvarray.md b/doc/src/docs/input-data/pvarray.md index cc1b28489..069d0801a 100644 --- a/doc/src/docs/input-data/pvarray.md +++ b/doc/src/docs/input-data/pvarray.md @@ -6,9 +6,9 @@ PVARRAY describes a photovoltaic panel system. The algorithms are based on the [ Name of photovoltaic array. Give after the word PVARRAY. -<%= member_table( +<%= member*table( units: "", -legal_range: "_63 characters_", +legal_range: "\_63 characters*", default: "_none_", required: "No", variability: "constant") @@ -18,9 +18,9 @@ variability: "constant") Name of meter by which this PVARRAY's AC power out is recorded. Generated power is expressed as a negative value. -<%= member_table( +<%= member*table( units: "", -legal_range: "_name of a METER_", +legal_range: "\_name of a METER*", default: "_none_", required: "No", variability: "constant") @@ -32,9 +32,9 @@ Meter end use to which the PVARRAY's generated energy should be accumulated. <%= insert_file('doc/src/enduses.md') %> -<%= member_table( +<%= member*table( units: "", -legal_range: "_Codes listed above_", +legal_range: "\_Codes listed above*", default: "PV", required: "No", variability: "constant") @@ -44,10 +44,10 @@ variability: "constant") The rated photovoltaic system DC capacity/size as indicated by the nameplate. -<%= member_table( +<%= member*table( units: "kW", legal_range: "x $\\geq$ 0", -default: "_none_", +default: "\_none*", required: "Yes", variability: "constant") %> @@ -89,9 +89,9 @@ variability: "constant") The temperature coefficient how the efficiency of the module varies with the cell temperature. Values are typically negative. -<%= member_table( +<%= member*table( units: "1/^o^F", -legal_range: "_no restrictions_", +legal_range: "\_no restrictions*", default: "-0.00206", required: "No", variability: "constant") @@ -145,11 +145,11 @@ variability: "hourly") **pvVertices=_list of up to 36 floats_** -Vertices of an optional polygon representing the position and shape of the photovoltaic array. The polygon is used to calculate the shaded fraction using an advanced shading model. Only PVARRAYs and [SHADEXs](#shadex) are considered in the advanced shading model -- PVARRAYs can be shaded by SHADEXs or other PVARRAYs. If pvVertices is omitted, the PVARRAY is assumed to be unshaded at all times. Advanced shading must be enabled via [TOP exShadeModel](#top-model-control-items). Note that the polygon is used only for evaluating shading; array capacity is specified by pvDCSysSize (above). +Vertices of an optional polygon representing the position and shape of the photovoltaic array. The polygon is used to calculate the shaded fraction using an advanced shading model. Only PVARRAYs and [SHADEXs][shadex]re considered in the advanced shading model -- PVARRAYs can be shaded by SHADEXs or other PVARRAYs. If pvVertices is omitted, the PVARRAY is assumed to be unshaded at all times. Advanced shading must be enabled via [TOP exShadeModel][top-model-control-items]. Note that the polygon is used only for evaluating shading; array capacity is specified by pvDCSysSize (above). The values that follow pvVertices are a series of X, Y, and Z values for the vertices of the polygon using a coordinate system defined from a viewpoint facing north. X and Y values convey east-west and north-south location respectively relative to an arbitrary origin (positive X value are to the east; positive Y values are to the north). Z values convey height relative to the building 0 level and positive values are upward. -The vertices are specified in counter-clockwise order when facing the receiving surface of the PVARRAY. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When pvMounting=Building, the effective position of the polygon is modified in response to building rotation specified by [TOP bldgAzm](#top-general-data-items). +The vertices are specified in counter-clockwise order when facing the receiving surface of the PVARRAY. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When pvMounting=Building, the effective position of the polygon is modified in response to building rotation specified by [TOP bldgAzm][top-general-data-items] For example, to specify a rectangular photovoltaic array that is 10 x 20 ft, tilted 45 degrees, and facing south -- @@ -173,15 +173,15 @@ where $f_{sh}$ is the fraction of the array that is shaded. Default value is 1.2, which is representative of PV systems with sub-array microinverters or DC power optimizers. For systems without sub-array power electronics, values are closer to 2.0. -<%= member_table( -legal_range: "_x_ $\\geq$ 1.0", +<%= member*table( +legal_range: "\_x* $\\geq$ 1.0", default: "1.2", required: "No", variability: "constant") %> **pvMounting=_choice_** -Specified mounting location of this PVARRAY. pvMounting=Site indicates the array position is not altered by building rotation via [TOP bldgAzm](#top-general-data-items), while PVARRAYs with pvMounting=Building are assumed to rotate with the building. +Specified mounting location of this PVARRAY. pvMounting=Site indicates the array position is not altered by building rotation via [TOP bldgAzm][top-general-data-items]while PVARRAYs with pvMounting=Building are assumed to rotate with the building. <%= member_table( units: "", @@ -195,9 +195,9 @@ variability: "constant") Ground reflectance used for calculating reflected solar incidence on the array. -<%= member_table( +<%= member*table( units: "", -legal_range: "0 $<$ _x_ $<$ 1.0", +legal_range: "0 $<$ \_x* $<$ 1.0", default: "0.2", required: "No", variability: "hourly") @@ -220,9 +220,9 @@ Ground coverage ratio is. This is currently unused as array self-shading is not DC-to-AC ratio used to intentionally undersize the AC inverter. This is used to increase energy production in the beginning and end of the day despite the possibility of clipping peak sun hours. -<%= member_table( +<%= member*table( units: "", -legal_range: "_x_ > 0.0", +legal_range: "\_x* > 0.0", default: "1.2", required: "No", variability: "constant") @@ -232,9 +232,9 @@ variability: "constant") AC inverter efficiency at rated DC power. -<%= member_table( +<%= member*table( units: "", -legal_range: "0 $<$ _x_ $<$ 1.0", +legal_range: "0 $<$ \_x* $<$ 1.0", default: "0.96", required: "No", variability: "constant") @@ -244,10 +244,10 @@ variability: "constant") Fraction of total DC energy lost. The total loss from a system is aggregated from several possible causes as illustrated below: -<%= csv_table(< true) +<%= csv*table(< true) **Loss Type**, **Default Assumption** Soiling, 0.02 -_Shading_, _0 (handled explicitly)_ +\_Shading*, _0 (handled explicitly)_ Snow, 0 _Mismatch_, _0 (shading mismatch handled explicitly [see pvSIF])_ Wiring, 0.02 @@ -262,9 +262,9 @@ END _Italic_ lines indicate differences from PVWatts assumptions. -<%= member_table( +<%= member*table( units: "", -legal_range: "0 $<$ _x_ $<$ 1.0", +legal_range: "0 $<$ \_x* $<$ 1.0", default: "0.14", required: "No", variability: "hourly") @@ -274,14 +274,14 @@ variability: "hourly") Optionally indicates the end of the PVARRAY definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. -<%= member_table( +<%= member*table( units: "", legal_range: "", -default: "_none_", +default: "\_none*", required: "No", variability: "constant") %> **Related Probes:** -- @[PVArray](#p_pvarray) +- @[PVArray][p_pvarray] diff --git a/doc/src/docs/input-data/report.md b/doc/src/docs/input-data/report.md index a93209546..a8c95353c 100644 --- a/doc/src/docs/input-data/report.md +++ b/doc/src/docs/input-data/report.md @@ -280,4 +280,4 @@ Optionally indicates the end of the report definition. Alternatively, the end of **Related Probes:** -- @[report](#p_report) +- @[report][p_report] diff --git a/doc/src/docs/input-data/reportcol.md b/doc/src/docs/input-data/reportcol.md index 95b66979d..f7516ed9e 100644 --- a/doc/src/docs/input-data/reportcol.md +++ b/doc/src/docs/input-data/reportcol.md @@ -2,92 +2,92 @@ Each REPORTCOL defines a single column of a User Defined Table (UDT) report. REPORTCOLs are not used with report types other than UDT. -Use as many REPORTCOLs as there are values to be shown in each row of the user-defined report. The values will appear in columns, ordered from left to right in the order defined. Be sure to include any necessary values to identify the row, such as the day of month, hour of day, etc. CSE supplies *NO* columns automatically. +Use as many REPORTCOLs as there are values to be shown in each row of the user-defined report. The values will appear in columns, ordered from left to right in the order defined. Be sure to include any necessary values to identify the row, such as the day of month, hour of day, etc. CSE supplies _NO_ columns automatically. **colName** Name of REPORTCOL. <%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_63 characters_", +default: "_none_", +required: "No", +variability: "constant") %> -**colReport=*rpName*** +**colReport=_rpName_** -Name of report to which current report column belongs. If REPORTCOL is given within a REPORT object, then *colReport* defaults to that report. +Name of report to which current report column belongs. If REPORTCOL is given within a REPORT object, then _colReport_ defaults to that report. <%= member_table( - units: "", - legal_range: "name of a *REPORT*", - default: "*current report, if any*", - required: "Unless in a *REPORT*", - variability: "constant") %> +units: "", +legal_range: "name of a _REPORT_", +default: "_current report, if any_", +required: "Unless in a _REPORT_", +variability: "constant") %> -**colVal=*expression*** +**colVal=_expression_** Value to show in this column of report. <%= member_table( - units: "", - legal_range: "*any numeric or string expression*", - default: "*none*", - required: "Yes", - variability: "subhour /end interval") %> +units: "", +legal_range: "_any numeric or string expression_", +default: "_none_", +required: "Yes", +variability: "subhour /end interval") %> -**colHead=*string*** +**colHead=_string_** Text used for column head. <%= member_table( - units: "", - legal_range: "", - default: "*colName* or blank", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "_colName_ or blank", +required: "No", +variability: "constant") %> -**colGap=*int*** +**colGap=_int_** -Space between (to left of) column, in character positions. Allows you to space columns unequally, to emphasize relations among columns or to improve readability. If the total of the *colGaps* and *colWids* in the report's REPORTCOLs is substantially less than the REPORT's *rpCPL* (characters per line, see REPORT), CSE will insert additional spaces between columns. To suppress these spaces, use a smaller *rpCPL* or use *rpCPL* = -1. +Space between (to left of) column, in character positions. Allows you to space columns unequally, to emphasize relations among columns or to improve readability. If the total of the _colGaps_ and _colWids_ in the report's REPORTCOLs is substantially less than the REPORT's _rpCPL_ (characters per line, see REPORT), CSE will insert additional spaces between columns. To suppress these spaces, use a smaller _rpCPL_ or use _rpCPL_ = -1. <%= member_table( - units: "", - legal_range: "*x* $\\ge$ 0", - default: "1", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $\\ge$ 0", +default: "1", +required: "No", +variability: "constant") %> -**colWid=*int*** +**colWid=_int_** Column width. <%= member_table( - units: "", - legal_range: "*x* $\\ge$ 0", - default: "10", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $\\ge$ 0", +default: "10", +required: "No", +variability: "constant") %> -**colDec=*int*** +**colDec=_int_** Number of digits after decimal point. <%= member_table( - units: "", - legal_range: "*x* $\\ge$ 0", - default: "*flexible format*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $\\ge$ 0", +default: "_flexible format_", +required: "No", +variability: "constant") %> -**colJust=*choice*** +**colJust=_choice_** Specifies positioning of data within column: <%= csv_table(< false) - Left, Left justified - Right, Right justified +Left, Left justified +Right, Right justified END %> @@ -96,12 +96,12 @@ END Optionally indicates the end of the report column definition. Alternatively, the end of the report column definition can be indicated by END or by beginning another REPORTCOL or other object. <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") %> **Related Probes:** -- @[reportCol](#p_reportcol) +- @[reportCol][p_reportcol] diff --git a/doc/src/docs/input-data/reportfile.md b/doc/src/docs/input-data/reportfile.md index 2b4cbe0d2..4123d0bfa 100644 --- a/doc/src/docs/input-data/reportfile.md +++ b/doc/src/docs/input-data/reportfile.md @@ -102,4 +102,4 @@ Optionally indicates the end of the report file definition. Alternatively, the e **Related Probes:** -- @[reportFile](#p_reportfile) +- @[reportFile][p_reportfile] diff --git a/doc/src/docs/input-data/rsys.md b/doc/src/docs/input-data/rsys.md index 0c60a2314..a5e74ccbd 100644 --- a/doc/src/docs/input-data/rsys.md +++ b/doc/src/docs/input-data/rsys.md @@ -7,393 +7,393 @@ RSYS constructs an object representing an air-based residential HVAC system. Optional name of HVAC system; give after the word “RSYS” if desired. <%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_63 characters_", +default: "_none_", +required: "No", +variability: "constant") %> -**rsType=*choice*** +**rsType=_choice_** Type of system. <%= csv_table(< true) rsType, Description -ACFURNACE, Compressor-based cooling modeled per SEER and EER. Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. -ACPMFURNACE, Compressor-based cooling modeled per PERFORMANCEMAP specified in rsPerfMapClg. Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. -ACRESISTANCE, Compressor-based cooling and electric ('strip') heating. Cooling performance based on SEER and EER. Primary heating input energy is accumulated to end use HTG of meter rsElecMtr. +ACFURNACE, Compressor-based cooling modeled per SEER and EER. Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. +ACPMFURNACE, Compressor-based cooling modeled per PERFORMANCEMAP specified in rsPerfMapClg. Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. +ACRESISTANCE, Compressor-based cooling and electric ('strip') heating. Cooling performance based on SEER and EER. Primary heating input energy is accumulated to end use HTG of meter rsElecMtr. ACPMRESISTANCE, Cooling based on PERFORMANCEMAP specified in rsPerfMapClg. Primary heating input energy is accumulated to end use HTG of meter rsElecMtr. -ASHP, Air-source heat pump (compressor-based heating and cooling). Primary (compressor) heating input energy is accumulated to end use HTG of meter rsElecMtr. Auxiliary and defrost heating input energy is accumulated to end use HPBU of meter rsElecMtr or meter rsFuelMtr (depending on rsTypeAuxH). -ASHPKGROOM, Packaged room air-source heat pump. +ASHP, Air-source heat pump (compressor-based heating and cooling). Primary (compressor) heating input energy is accumulated to end use HTG of meter rsElecMtr. Auxiliary and defrost heating input energy is accumulated to end use HPBU of meter rsElecMtr or meter rsFuelMtr (depending on rsTypeAuxH). +ASHPKGROOM, Packaged room air-source heat pump. ASHPHYDRONIC, Air-to-water heat pump with hydronic distribution. Compressor performance is approximated using the air-to-air model with adjusted efficiencies. ASHPPM, Air-to-air heat pump modeled per PERFORMANCMAPs specified via rsPerfMapHtg and rsPerfMapClg. -WSHP, Water-to-air heat pump. +WSHP, Water-to-air heat pump. AC, Compressor-based cooling; no heating. Required ratings are SEER and capacity and EER at 95 ^o^F outdoor dry bulb. ACPM, Compressor-based cooling modeled per PERFORMANCEMAP specified in rsPerfMapClg; no heating. ACPKGROOM, Packaged compressor-based cooling; no heating. Required ratings are capacity and EER at 95 ^o^F outdoor dry bulb. -FURNACE, Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. -RESISTANCE, Electric heating. Primary heating input energy is accumulated to end use HTG of meter rsElecMtr. +FURNACE, Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. +RESISTANCE, Electric heating. Primary heating input energy is accumulated to end use HTG of meter rsElecMtr. ACPKGROOMFURNACE, Packaged room cooling and (separate) furnace heating. ACPKGROOMRESISTANCE, Packaged room cooling and electric resistance heating. -COMBINEDHEATDHW, Combined heating / DHW. Use rsCHDHWSYS to specify the DHWSYS that provides hot water to the coil in this RSYS. No cooling. +COMBINEDHEATDHW, Combined heating / DHW. Use rsCHDHWSYS to specify the DHWSYS that provides hot water to the coil in this RSYS. No cooling. ACCOMBINEDHEATDHW, Compressor-based cooling; COMBINEDHEATDHW heating. ACPMCOMBINEDHEATDHW, Compressor-based cooling modeled per PERFORMANCEMAP specified in rsPerfMapClg; COMBINEDHEATDHW heating. -FANCOIL, Coil-based heating and cooling. No primary (fuel-using) equipment is modeled. rsLoadMtr, rsHtgLoadMtr, and rsClgLoadMtr are typically used to record loads for linking to an external model. +FANCOIL, Coil-based heating and cooling. No primary (fuel-using) equipment is modeled. rsLoadMtr, rsHtgLoadMtr, and rsClgLoadMtr are typically used to record loads for linking to an external model. END %> <%= member_table( - units: "", - legal_range: "*one of above choices*", - default: "ACFURNACE", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_one of above choices_", +default: "ACFURNACE", +required: "No", +variability: "constant") %> -**rsDesc=*string*** +**rsDesc=_string_** Text description of system, included as documentation in debugging reports such as those triggered by rsGeneratePerfMap=YES <%= member_table( - units: "", - legal_range: "string", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "string", +default: "_none_", +required: "No", +variability: "constant") %> -**rsModeCtrl=*choice*** +**rsModeCtrl=_choice_** Specifies systems heating/cooling availability during simulation. <%= csv_table(< false) - OFF, System is off (neither heating nor cooling is available) - HEAT, System can heat (assuming rsType can heat) - COOL, System can cool (assuming rsType can cool) - AUTO, System can either heat or cool (assuming rsType compatibility). First request by any zone served by this RSYS determines mode for the current time step. +OFF, System is off (neither heating nor cooling is available) +HEAT, System can heat (assuming rsType can heat) +COOL, System can cool (assuming rsType can cool) +AUTO, System can either heat or cool (assuming rsType compatibility). First request by any zone served by this RSYS determines mode for the current time step. END %> <%= member_table( - units: "", - legal_range: "OFF, HEAT, COOL, AUTO", - default: "AUTO", - required: "No", - variability: "hourly") %> +units: "", +legal_range: "OFF, HEAT, COOL, AUTO", +default: "AUTO", +required: "No", +variability: "hourly") %> -**rsGeneratePerfMap=*choice*** +**rsGeneratePerfMap=_choice_** -Generate performance map(s) for this RSYS. Comma-separated text is written to file PM\_[rsName].csv. This is a debugging capability that is not necessarily maintained. The format of the generated csv text file may change and is unrelated to the PERFORMANCEMAP input scheme used via *rsPerfMapHtg* and *rsPerfMapClg*. +Generate performance map(s) for this RSYS. Comma-separated text is written to file PM\_[rsName].csv. This is a debugging capability that is not necessarily maintained. The format of the generated csv text file may change and is unrelated to the PERFORMANCEMAP input scheme used via _rsPerfMapHtg_ and _rsPerfMapClg_. <%= member_table( - units: "", - legal_range: "YES, NO", - default: "NO", - required: "No", - variability: "constant") %> +units: "", +legal_range: "YES, NO", +default: "NO", +required: "No", +variability: "constant") %> -**rsFanTy=*choice*** +**rsFanTy=_choice_** -Specifies fan (blower) position relative to primary heating or cooling source (i.e. heat exchanger or heat pump coil for heating and AC coil for cooling). The blower position determines where fan heat is added to the RSYS air stream and thus influences the coil entering air temperature. +Specifies fan (blower) position relative to primary heating or cooling source (i.e. heat exchanger or heat pump coil for heating and AC coil for cooling). The blower position determines where fan heat is added to the RSYS air stream and thus influences the coil entering air temperature. <%= member_table( - units: "", - legal_range: "BLOWTHRU, DRAWTHRU", - default: "BLOWTHRU", - required: "No", - variability: "constant") %> +units: "", +legal_range: "BLOWTHRU, DRAWTHRU", +default: "BLOWTHRU", +required: "No", +variability: "constant") %> -**rsFanMotTy=*choice*** +**rsFanMotTy=_choice_** Specifies type of motor driving the fan (blower). This is used in the derivation of the coil-only cooling capacity for the RSYS. <%= csv_table(< false) - PSC, Permanent split capacitor - BPM, Brushless permanent magnet (aka ECM) +PSC, Permanent split capacitor +BPM, Brushless permanent magnet (aka ECM) END %> <%= member_table( - units: "", - legal_range: "PSC, BPM", - default: "PSC", - required: "No", - variability: "constant") %> +units: "", +legal_range: "PSC, BPM", +default: "PSC", +required: "No", +variability: "constant") %> -**rsAdjForFanHt=*choice*** +**rsAdjForFanHt=_choice_** Fan heat adjustment with two options Yes or no. Yes: fanHtRtd derived from rsFanTy and removed from capacity and input values. No: no rated fan heat adjustments. -**rsElecMtr=*mtrName*** +**rsElecMtr=_mtrName_** Name of METER object, if any, by which system’s electrical energy use is recorded (under appropriate end uses). <%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_name of a METER_", +default: "_none_", +required: "No", +variability: "constant") %> -**rsFuelMtr =*mtrName*** +**rsFuelMtr =_mtrName_** Name of METER object, if any, by which system’s fuel energy use is recorded (under appropriate end uses). <%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_name of a METER_", +default: "_none_", +required: "No", +variability: "constant") %> -**rsLoadMtr =*ldMtrName***\ -**rsHtgLoadMtr =*ldMtrName***\ -**rsClgLoadMtr =*ldMtrName*** +**rsLoadMtr =_ldMtrName_**\ +**rsHtgLoadMtr =_ldMtrName_**\ +**rsClgLoadMtr =_ldMtrName_** -Names of LOADMETER objects, if any, to which the system’s heating and/or cooling loads are recorded. Loads are the gross heating and cooling energy added to (or removed from) the air stream. Fan heat, auxiliary heat, and duct losses are not included in loads values. +Names of LOADMETER objects, if any, to which the system’s heating and/or cooling loads are recorded. Loads are the gross heating and cooling energy added to (or removed from) the air stream. Fan heat, auxiliary heat, and duct losses are not included in loads values. -rsLoadMtr accumulates both heating (> 0) and cooling (< 0) loads. rsHtgLoadMtr accumulates only heating loads. rsClgLoadMtr accumulates only cooling loads. This arrangement accomodates mixed heating and cooling source configurations. For example, loads can be tracked appropriately in a building that has multiple cooling sources and a single heating source. +rsLoadMtr accumulates both heating (> 0) and cooling (< 0) loads. rsHtgLoadMtr accumulates only heating loads. rsClgLoadMtr accumulates only cooling loads. This arrangement accomodates mixed heating and cooling source configurations. For example, loads can be tracked appropriately in a building that has multiple cooling sources and a single heating source. rsLoadMtr should not specify the same LOADMETER as rsHtgLoadMtr or rsClgLoadMtr since this would result in double counting. <%= member_table( - units: "", - legal_range: "*name of a LOADMETER*", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_name of a LOADMETER_", +default: "_none_", +required: "No", +variability: "constant") %> -**rsSrcSideLoadMtr=*ldMtrName***\ -**rsHtgSrcSideLoadMtr =*ldMtrName***\ -**rsClgSrcSideLoadMtr =*ldMtrName*** +**rsSrcSideLoadMtr=_ldMtrName_**\ +**rsHtgSrcSideLoadMtr =_ldMtrName_**\ +**rsClgSrcSideLoadMtr =_ldMtrName_** -Name of LOADMETER objects, if any, to which the system’s source-side heat transfers are recorded. For DX systems, this is the outdoor coil heat transfer. For other types, source-side values are the same as the indoor coil loads reported via rsLoadMtr. +Name of LOADMETER objects, if any, to which the system’s source-side heat transfers are recorded. For DX systems, this is the outdoor coil heat transfer. For other types, source-side values are the same as the indoor coil loads reported via rsLoadMtr. -rsSrcSideLoadMtr accumulates both heating (> 0) and cooling (< 0) transfers. rsHtgSrcSideLoadMtr accumulates only heating transfers. rsClgSrcSideLoadMtr accumulates only cooling transfers. This arrangement accomodates mixed heating and cooling source configurations. +rsSrcSideLoadMtr accumulates both heating (> 0) and cooling (< 0) transfers. rsHtgSrcSideLoadMtr accumulates only heating transfers. rsClgSrcSideLoadMtr accumulates only cooling transfers. This arrangement accomodates mixed heating and cooling source configurations. rsSrcSideLoadMtr should not specify the same LOADMETER as rsHtgSrcSideLoadMtr or rsClgSrcSideLoadMtr since this would result in double counting. <%= member_table( - units: "", - legal_range: "*Name of a LOADMETER*", - default: "", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_Name of a LOADMETER_", +default: "", +required: "No", +variability: "constant") %> -**rsCHDHWSYS=*dhwsysName*** +**rsCHDHWSYS=_dhwsysName_** -DHWSYS hot water source for this RSYS, required when rsType is COMBINEDHEATDHW or ACCOMBINEDHEATDHW. The specified DHWSYS must include a DHWHEATER of whType=ASHPX or RESISTANCEX. +DHWSYS hot water source for this RSYS, required when rsType is COMBINEDHEATDHW or ACCOMBINEDHEATDHW. The specified DHWSYS must include a DHWHEATER of whType=ASHPX or RESISTANCEX. <%= member_table( - units: "", - legal_range: "Name of a DHWSYS", - default: "*none*", - required: "if combined heat/DHW", - variability: "constant") %> +units: "", +legal_range: "Name of a DHWSYS", +default: "_none_", +required: "if combined heat/DHW", +variability: "constant") %> -**rsAFUE=*float*** +**rsAFUE=_float_** Heating Annual Fuel Utilization Efficiency (AFUE). <%= member_table( - units: "", - legal_range: "0 $<$ x $\\le$ 1", - default: "0.9 if furnace, 1.0 if resistance", - required: "No", - variability: "constant") %> +units: "", +legal_range: "0 $<$ x $\\le$ 1", +default: "0.9 if furnace, 1.0 if resistance", +required: "No", +variability: "constant") %> -**rsCapH=*float*** +**rsCapH=_float_** Heating capacity, used when rsType is ACFURNACE, ACRESISTANCE, FURNACE, WSHP or RESISTANCE. If rsType=WSHP, rsCapH is at source fluid temperature = 68 ^o^F. <%= member_table( - units: "Btu/hr", - legal_range: "*AUTOSIZE* or x $\\ge$ 0", - default: "0", - required: "No", - variability: "constant") %> +units: "Btu/hr", +legal_range: "_AUTOSIZE_ or x $\\ge$ 0", +default: "0", +required: "No", +variability: "constant") %> -**rsTdDesH=*float*** +**rsTdDesH=_float_** Nominal heating temperature rise (across system, not at zone) used during autosizing (when capacity is not yet known) and to derive heating air flow rate from heating capacity. <%= member_table( - units: "^o^F", - legal_range: "*x* $>$ 0", - default: "30 ^o^F if heat pump else 50 ^o^F", - required: "No", - variability: "constant") %> +units: "^o^F", +legal_range: "_x_ $>$ 0", +default: "30 ^o^F if heat pump else 50 ^o^F", +required: "No", +variability: "constant") %> -**rsFxCapH=*float*** +**rsFxCapH=_float_** -Heating autosizing capacity factor. If AUTOSIZEd, rsCapH or rsCap47 is set to rsFxCapH $\times$ (peak design-day load). Peak design-day load is the heating capacity that holds zone temperature at the thermostat set point during the *last substep* of all hours of all design days. +Heating autosizing capacity factor. If AUTOSIZEd, rsCapH or rsCap47 is set to rsFxCapH $\times$ (peak design-day load). Peak design-day load is the heating capacity that holds zone temperature at the thermostat set point during the _last substep_ of all hours of all design days. <%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "1.4", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $>$ 0", +default: "1.4", +required: "No", +variability: "constant") %> -**rsFanPwrH=*float*** +**rsFanPwrH=_float_** -Heating operating fan power. For most rsTypes, heating air flow is calculated from heating capacity and rsTdDesH. The default value of rsFanPwrH is .365 W/cfm except 0.273 W/cfm is used when rsType=COMBINEDHEATDHW and rsType=ACCOMBINEDHEATDHW. +Heating operating fan power. For most rsTypes, heating air flow is calculated from heating capacity and rsTdDesH. The default value of rsFanPwrH is .365 W/cfm except 0.273 W/cfm is used when rsType=COMBINEDHEATDHW and rsType=ACCOMBINEDHEATDHW. <%= member_table( - units: "W/cfm", - legal_range: "*x* $\\ge$ 0", - default: "see above", - required: "No", - variability: "constant") %> +units: "W/cfm", +legal_range: "_x_ $\\ge$ 0", +default: "see above", +required: "No", +variability: "constant") %> -**rsHSPF=*float*** +**rsHSPF=_float_** For rsType=ASHP, Heating Seasonal Performance Factor (HSPF). <%= member_table( - units: "Btu/Wh", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "Yes if rsType=ASHP", - variability: "constant") %> +units: "Btu/Wh", +legal_range: "_x_ $>$ 0", +default: "_none_", +required: "Yes if rsType=ASHP", +variability: "constant") %> -**rsCap47=*float*** +**rsCap47=_float_** For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 47 ^o^F. If rsType=ASHP and both rsCapC and rsCap47 are autosized, both are set to the larger consistent value using rsCapRat9547 (after application of rsFxCapH and rsFxCapC). <%= member_table( - units: "Btu/Wh", - legal_range: "*AUTOSIZE* or *x* $>$ 0", - default: "Calculated from rsCapC", - required: "No", - variability: "constant") %> +units: "Btu/Wh", +legal_range: "_AUTOSIZE_ or _x_ $>$ 0", +default: "Calculated from rsCapC", +required: "No", +variability: "constant") %> -**rsCap35=*float*** +**rsCap35=_float_** -For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 35 ^o^F. rsCap35 typically reflects reduced capacity due to reverse (cooling) heat pump operation for defrost. +For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 35 ^o^F. rsCap35 typically reflects reduced capacity due to reverse (cooling) heat pump operation for defrost. <%= member_table( - units: "Btu/Wh", - legal_range: "*x* $>$ 0", - default: "Calculated from rsCap47 and rsCap17", - required: "No", - variability: "constant") %> +units: "Btu/Wh", +legal_range: "_x_ $>$ 0", +default: "Calculated from rsCap47 and rsCap17", +required: "No", +variability: "constant") %> -**rsCap17=*float*** +**rsCap17=_float_** For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 17 ^o^F. <%= member_table( - units: "Btu/Wh", - legal_range: "*x* $>$ 0", - default: "Calculated from rsCap47", - required: "No", - variability: "constant") %> +units: "Btu/Wh", +legal_range: "_x_ $>$ 0", +default: "Calculated from rsCap47", +required: "No", +variability: "constant") %> -**rsCOP95=*float*** +**rsCOP95=_float_** For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 95 ^o^F. <%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "Calculated from rsCap95", - required: "No", - variability: "constant") %> +units: "", +legal_range: "x $>$ 0", +default: "Calculated from rsCap95", +required: "No", +variability: "constant") %> -**rsCOP47=*float*** +**rsCOP47=_float_** For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 47 ^o^F. For rsType=WSHP, rated heating coefficient of performance at source fluid temperature = 68 ^o^F. <%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "Estimated from rsHSPF, rsCap47, and rsCap17", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $>$ 0", +default: "Estimated from rsHSPF, rsCap47, and rsCap17", +required: "No", +variability: "constant") %> -**rsCOP35=*float*** +**rsCOP35=_float_** For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 35 ^o^F. <%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "Calculated from rsCap35, rsCap47, rsCap17, rsCOP47, and rsCOP17", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $>$ 0", +default: "Calculated from rsCap35, rsCap47, rsCap17, rsCOP47, and rsCOP17", +required: "No", +variability: "constant") %> -**rsCOP17=*float*** +**rsCOP17=_float_** For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 17 ^o^F. <%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "Calculated from rsHSPF, rsCap47, and rsCap17", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $>$ 0", +default: "Calculated from rsHSPF, rsCap47, and rsCap17", +required: "No", +variability: "constant") %> -**rsCapRat1747=*float*** +**rsCapRat1747=_float_** Ratio of rsCAP17 over rsCAP47. <%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "Based on HSPF or\nother correlations", - required: "No", - variability: "Start of a run") %> +units: "", +legal_range: "x $>$ 0", +default: "Based on HSPF or\nother correlations", +required: "No", +variability: "Start of a run") %> -**rsCapRat9547=*float*** +**rsCapRat9547=_float_** -Ratio of rsCAP95 to rsCAP47. This ratio is used for inter-defaulting rsCap47 and rsCapC such that they have consistent values as is required given that a heat pump is a single device. If not given, rsCapRat9547 is determined during calculations using the relationship cap95 = 0.98 * cap47 + 180 (derived via correlation of capacities of a set of real units). +Ratio of rsCAP95 to rsCAP47. This ratio is used for inter-defaulting rsCap47 and rsCapC such that they have consistent values as is required given that a heat pump is a single device. If not given, rsCapRat9547 is determined during calculations using the relationship cap95 = 0.98 \* cap47 + 180 (derived via correlation of capacities of a set of real units). <%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "See above", - required: "No", - variability: "constant") %> +units: "", +legal_range: "x $>$ 0", +default: "See above", +required: "No", +variability: "constant") %> -**rsCapRatCH=*float*** +**rsCapRatCH=_float_** -For WSHP only: ratio of rsCapC to rsCapH. Used to derive capacity during autosizing or when only one capacity is specified. +For WSHP only: ratio of rsCapC to rsCapH. Used to derive capacity during autosizing or when only one capacity is specified. <%= member_table( - units: "", - legal_range: ".3 $\\leq$ x $<$ 2", - default: "0.8", - required: "No", - variability: "Start of a run") %> +units: "", +legal_range: ".3 $\\leq$ x $<$ 2", +default: "0.8", +required: "No", +variability: "Start of a run") %> -**rsPerfMapHtg=*performanceMapName*** +**rsPerfMapHtg=_performanceMapName_** -Specifies the heating performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM. The PERFORMANCEMAP must have grid variables outdoor drybulb and compressor speed (in that order) and lookup values of net capacity ratios and COP. See example in PERFORMANCEMAP. +Specifies the heating performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM. The PERFORMANCEMAP must have grid variables outdoor drybulb and compressor speed (in that order) and lookup values of net capacity ratios and COP. See example in PERFORMANCEMAP. <%= member_table( - units: "", - legal_range: "Name of a PERFORMANCEMAP", - default: "", - required: "if rsType specifies a performance map model", - variability: "Start of a run") %> +units: "", +legal_range: "Name of a PERFORMANCEMAP", +default: "", +required: "if rsType specifies a performance map model", +variability: "Start of a run") %> -**rsPerfMapClg=*performanceMapName*** +**rsPerfMapClg=_performanceMapName_** -Specifies the cooling performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM, ACPM, ACPMFURNACE, ACPMRESISTANCE, or ACPMCOMBINEDHEATDHW. The PERFORMANCEMAP must have grid variables outdoor drybulb and compressor speed (in that order) and lookup values of net capacity ratios and COP. See example in PERFORMANCEMAP. +Specifies the cooling performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM, ACPM, ACPMFURNACE, ACPMRESISTANCE, or ACPMCOMBINEDHEATDHW. The PERFORMANCEMAP must have grid variables outdoor drybulb and compressor speed (in that order) and lookup values of net capacity ratios and COP. See example in PERFORMANCEMAP. <%= member_table( - units: "", - legal_range: "Name of a PERFORMANCEMAP", - default: "", - required: "if rsType specifies a performance map model", - variability: "Start of a run") %> +units: "", +legal_range: "Name of a PERFORMANCEMAP", +default: "", +required: "if rsType specifies a performance map model", +variability: "Start of a run") %> -**rsTypeAuxH=*choice*** +**rsTypeAuxH=_choice_** -For rsType=ASHP, type of auxiliary heat. Auxiliary heating is used when heatpump capacity is insufficient to maintain zone temperature and during reverse-cycle defrost operation (if rsDefrostModel=REVCYCLEAUX). If rsTypeAuxH=Furnace, energy use for auxiliary heat is accumulated to end use HPBU of meter rsFuelMtr (if specified). If rsTypeAuxH=Resistance, energy use for auxiliary heat is accumulated to end use HPBU of meter rsElecMtr (if specified). +For rsType=ASHP, type of auxiliary heat. Auxiliary heating is used when heatpump capacity is insufficient to maintain zone temperature and during reverse-cycle defrost operation (if rsDefrostModel=REVCYCLEAUX). If rsTypeAuxH=Furnace, energy use for auxiliary heat is accumulated to end use HPBU of meter rsFuelMtr (if specified). If rsTypeAuxH=Resistance, energy use for auxiliary heat is accumulated to end use HPBU of meter rsElecMtr (if specified). <%= csv_table(< true) Choice, Description @@ -404,13 +404,13 @@ END %> <%= member_table( - units: "", - legal_range: "See table above", - default: "RESISTANCE", - required: "No", - variability: "constant") %> +units: "", +legal_range: "See table above", +default: "RESISTANCE", +required: "No", +variability: "constant") %> -**rsCtrlAuxH=*choice*** +**rsCtrlAuxH=_choice_** For rsType=ASHP, type of auxiliary heating control. @@ -423,97 +423,97 @@ END %> <%= member_table( - units: "", - legal_range: "See table above", - default: "ALTERNATE if rsTypeAuxH=FURNACE else CYCLE", - required: "No", - variability: "Start of a run") %> +units: "", +legal_range: "See table above", +default: "ALTERNATE if rsTypeAuxH=FURNACE else CYCLE", +required: "No", +variability: "Start of a run") %> -**rsCapAuxH=*float*** +**rsCapAuxH=_float_** For rsType=ASHP, auxiliary heating capacity. If AUTOSIZEd, rsCapAuxH is set to the peak heating load evaluated at the heating design temperature (Top.heatDsTDbO). <%= member_table( - units: "Btu/hr", - legal_range: "*AUTOSIZE* or *x* $\\ge$ 0", - default: "0", - required: "No", - variability: "constant") %> +units: "Btu/hr", +legal_range: "_AUTOSIZE_ or _x_ $\\ge$ 0", +default: "0", +required: "No", +variability: "constant") %> -**rsAFUEAuxH=*float*** +**rsAFUEAuxH=_float_** For rsType=ASHP, auxiliary heat annualized fuel utilization efficiency. <%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "0.9 if rsTypeAuxH=FURNACE else 1", - required: "No", - variability: "constant") %> +units: "", +legal_range: "x $>$ 0", +default: "0.9 if rsTypeAuxH=FURNACE else 1", +required: "No", +variability: "constant") %> -**rsDefrostModel=*choice*** +**rsDefrostModel=_choice_** - Selects modeling options for ASHP outdoor coil defrosting when 17 ^o^F < TDbO < 45 ^o^F. In this temperature range, heating capacity and/or efficiency are typically reduced due to frost accumulation on the outdoor coil. +Selects modeling options for ASHP outdoor coil defrosting when 17 ^o^F < TDbO < 45 ^o^F. In this temperature range, heating capacity and/or efficiency are typically reduced due to frost accumulation on the outdoor coil. <%= csv_table(< false) - NONE, Defrost is not modeled. When 17 ^o^F < TDbO < 45 ^o^F, capacity and efficiency are determined by interpolation using unmodified 17 ^o^F and 47 ^o^F data. - REVCYCLE, Reverse compressor (cooling) operation. Net capacity and efficiency is derived from rsCap17/rsCOP17 and rsCap35/rsCOP35 using linear interpolation. Auxiliary heat is not modeled. - REVCYCLEAUX, Reverse compressor (cooling) operation with provision of sufficient auxiliary heat to make up the loss of heating capacity. Auxiliary heating is typically used to prevent cold air delivery to zones during the defrost cycle. +NONE, Defrost is not modeled. When 17 ^o^F < TDbO < 45 ^o^F, capacity and efficiency are determined by interpolation using unmodified 17 ^o^F and 47 ^o^F data. +REVCYCLE, Reverse compressor (cooling) operation. Net capacity and efficiency is derived from rsCap17/rsCOP17 and rsCap35/rsCOP35 using linear interpolation. Auxiliary heat is not modeled. +REVCYCLEAUX, Reverse compressor (cooling) operation with provision of sufficient auxiliary heat to make up the loss of heating capacity. Auxiliary heating is typically used to prevent cold air delivery to zones during the defrost cycle. END %> <%= member_table( - units: "", - legal_range: "*one of above choices*", - default: "REVCYCLEAUX", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_one of above choices_", +default: "REVCYCLEAUX", +required: "No", +variability: "constant") %> -**rsSHRtarget=*float*** +**rsSHRtarget=_float_** Nominal target for sensible heat ratio (for fancoil). <%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "0.7", - required: "No", - variability: "subhour") %> +units: "", +legal_range: "_x_ $>$ 0", +default: "0.7", +required: "No", +variability: "subhour") %> -**rsFxCapAuxH=*float*** +**rsFxCapAuxH=_float_** - Auxiliary heating autosizing capacity factor. If AUTOSIZEd, rsCapAuxH is set to rsFxCapAuxH $\times$ (peak design-day load). Peak design-day load is the heating capacity that holds zone temperature at the thermostat set point during the *last substep* of all hours of all design days. +Auxiliary heating autosizing capacity factor. If AUTOSIZEd, rsCapAuxH is set to rsFxCapAuxH $\times$ (peak design-day load). Peak design-day load is the heating capacity that holds zone temperature at the thermostat set point during the _last substep_ of all hours of all design days. <%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "1", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $>$ 0", +default: "1", +required: "No", +variability: "constant") %> -**rsSEER=*float*** +**rsSEER=_float_** Cooling rated Seasonal Energy Efficiency Ratio (SEER). <%= member_table( - units: "Btu/Wh", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") %> +units: "Btu/Wh", +legal_range: "_x_ $>$ 0", +default: "_none_", +required: "Yes", +variability: "constant") %> -**rsEER=*float*** +**rsEER=_float_** Cooling Energy Efficiency Ratio (EER) at standard AHRI rating conditions (outdoor drybulb of 95 ^o^F and entering air at 80 ^o^F drybulb and 67 ^o^F wetbulb). For rsType=WSHP, rated EER at fluid source temperature = 86 ^o^F. <%= member_table( - units: "Btu/Wh", - legal_range: "*x* $>$ 0", - default: "Estimated from SEER unless WSHP", - required: "Yes for WSHP else No", - variability: "constant") %> +units: "Btu/Wh", +legal_range: "_x_ $>$ 0", +default: "Estimated from SEER unless WSHP", +required: "Yes for WSHP else No", +variability: "constant") %> -**rsCapC=*float*** +**rsCapC=_float_** Net cooling capacity at standard rating conditions (outdoor drybulb temperature = 95 ^o^F for air source or fluid source temperature = 86 ^o^F for water source). @@ -522,334 +522,330 @@ If rsType=ASHP and both rsCapC and rsCap47 are autosized, both are set to the la If rsType=WSHP and both rsCapC and rsCapH are autosized, both are set to the larger consistent value using rsCapRatCH (after application of rsFxCapH and rsFxCapC). <%= member_table( - units: "Btu/hr", - legal_range: "*AUTOSIZE* or *x* $\\le$ 0 (x $>$ 0 coverted to $<$ 0)", - default: "*none*", - required: "Yes if rsType includes cooling", - variability: "constant") %> +units: "Btu/hr", +legal_range: "_AUTOSIZE_ or _x_ $\\le$ 0 (x $>$ 0 coverted to $<$ 0)", +default: "_none_", +required: "Yes if rsType includes cooling", +variability: "constant") %> -**rsTdDesC=*float*** +**rsTdDesC=_float_** Nominal cooling temperature fall (across system, not zone) used during autosizing (when capacity is not yet known). <%= member_table( - units: "^o^F", - legal_range: "*x* $<$ 0", - default: "-25", - required: "No", - variability: "constant") %> +units: "^o^F", +legal_range: "_x_ $<$ 0", +default: "-25", +required: "No", +variability: "constant") %> -**rsFxCapC=*float*** +**rsFxCapC=_float_** -Cooling autosizing capacity factor. rsCapC is set to rsFxCapC $\times$ (peak design-day load). Peak design-day load is the cooling capacity that holds zone temperature at the thermostat set point during the *last substep* of all hours of all design days. +Cooling autosizing capacity factor. rsCapC is set to rsFxCapC $\times$ (peak design-day load). Peak design-day load is the cooling capacity that holds zone temperature at the thermostat set point during the _last substep_ of all hours of all design days. <%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "1.4", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $>$ 0", +default: "1.4", +required: "No", +variability: "constant") %> -**rsFChg=*float*** - -Cooling compressor capacity factor. The gross cooling capacity is adjusted by the factor rsFChg as specified by California Title 24 procedures. +**rsFChg=_float_** +Cooling compressor capacity factor. The gross cooling capacity is adjusted by the factor rsFChg as specified by California Title 24 procedures. <%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "1 (no effect)", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $>$ 0", +default: "1 (no effect)", +required: "No", +variability: "constant") %> -**rsVFPerTon=*float*** +**rsVFPerTon=_float_** Standard air volumetric flow rate per nominal ton of cooling capacity. <%= member_table( - units: "cfm/ton", - legal_range: "150 $\\le$ x $\\le$ 500", - default: "350", - required: "No", - variability: "constant") %> +units: "cfm/ton", +legal_range: "150 $\\le$ x $\\le$ 500", +default: "350", +required: "No", +variability: "constant") %> -**rsFanPwrC=*float*** +**rsFanPwrC=_float_** Cooling fan power. <%= member_table( - units: "W/cfm", - legal_range: "*x* $\\ge$ 0", - default: "0.365", - required: "No", - variability: "constant") %> +units: "W/cfm", +legal_range: "_x_ $\\ge$ 0", +default: "0.365", +required: "No", +variability: "constant") %> -**rsASHPLockOutT=*float*** +**rsASHPLockOutT=_float_** - Source air dry-bulb temperature below which the air source heat pump compressor does not operate. +Source air dry-bulb temperature below which the air source heat pump compressor does not operate. <%= member_table( - units: "^o^F", - legal_range: "", - default: "(no lockout)", - required: "No", - variability: "hourly") %> +units: "^o^F", +legal_range: "", +default: "(no lockout)", +required: "No", +variability: "hourly") %> -**rsCdH=*float*** +**rsCdH=_float_** - Heating cyclic degradation coefficient, valid only for compressor-based heating (heat pumps). +Heating cyclic degradation coefficient, valid only for compressor-based heating (heat pumps). <%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ 0.5", - default: "ASHPHYDRONIC: 0.25 ASHP: derived from rsHSPF", - required: "No", - variability: "hourly") %> +units: "", +legal_range: "0 $\\le$ x $\\le$ 0.5", +default: "ASHPHYDRONIC: 0.25 ASHP: derived from rsHSPF", +required: "No", +variability: "hourly") %> -**rsCdC=*float*** +**rsCdC=_float_** Cooling cyclic degradation coefficient, valid for configurations having compressor-based cooling. <%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ 0.5", - default: "0", - required: "No", - variability: "hourly") %> +units: "", +legal_range: "0 $\\le$ x $\\le$ 0.5", +default: "0", +required: "No", +variability: "hourly") %> -**rsFEffH=*float*** +**rsFEffH=_float_** -Heating efficiency factor. At each time step, the heating efficiency is multiplied by rsFEffH. +Heating efficiency factor. At each time step, the heating efficiency is multiplied by rsFEffH. <%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "1", - required: "No", - variability: "subhourly") %> +units: "", +legal_range: "_x_ $>$ 0", +default: "1", +required: "No", +variability: "subhourly") %> -**rsFEffAuxHBackup=*float*** +**rsFEffAuxHBackup=_float_** -Backup auxiliary heating efficiency factor. At each time step, the backup heating efficiency is multiplied by rsFEffAuxHBackup. Backup auxiliary heating is typically provided by electric resistance "strip heat" but may be provided by a furnace (see rsTypeAuxH). If rsTypeAuxH is not "none", backup heat operates when air source heat pump compressor capacity is insufficient to meet heating load. See also rsFEffAuxHDefrost. +Backup auxiliary heating efficiency factor. At each time step, the backup heating efficiency is multiplied by rsFEffAuxHBackup. Backup auxiliary heating is typically provided by electric resistance "strip heat" but may be provided by a furnace (see rsTypeAuxH). If rsTypeAuxH is not "none", backup heat operates when air source heat pump compressor capacity is insufficient to meet heating load. See also rsFEffAuxHDefrost. <%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "1", - required: "No", - variability: "subhourly") %> +units: "", +legal_range: "_x_ $>$ 0", +default: "1", +required: "No", +variability: "subhourly") %> -**rsFEffAuxHDefrost=*float*** +**rsFEffAuxHDefrost=_float_** -Defrost auxiliary heating efficiency factor. At each time step, the defrost auxiliary heating efficiency is multiplied by rsFEffAuxHDefrost. Defrost auxiliary heating is typically provided by electric resistance "strip heat" but may be provided by a furnace (see rsTypeAuxH). If rsDefrostModel=REVCYCLEAUX, defrost auxiliary heat operates during air source heat pump defrost mode. Since defrost and backup heating are generally provided by the same equipment, rsFEffAuxHDefrost and rsFEffAuxHBackup are usually set to the same value, but separate inputs are available for special cases. +Defrost auxiliary heating efficiency factor. At each time step, the defrost auxiliary heating efficiency is multiplied by rsFEffAuxHDefrost. Defrost auxiliary heating is typically provided by electric resistance "strip heat" but may be provided by a furnace (see rsTypeAuxH). If rsDefrostModel=REVCYCLEAUX, defrost auxiliary heat operates during air source heat pump defrost mode. Since defrost and backup heating are generally provided by the same equipment, rsFEffAuxHDefrost and rsFEffAuxHBackup are usually set to the same value, but separate inputs are available for special cases. <%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "1", - required: "No", - variability: "subhourly") %> +units: "", +legal_range: "_x_ $>$ 0", +default: "1", +required: "No", +variability: "subhourly") %> -**rsFEffC=*float*** +**rsFEffC=_float_** -Cooling efficiency factor. At each time step, the cooling efficiency is multiplied by rsEffC. +Cooling efficiency factor. At each time step, the cooling efficiency is multiplied by rsEffC. <%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "1", - required: "No", - variability: "subhourly") %> +units: "", +legal_range: "_x_ $>$ 0", +default: "1", +required: "No", +variability: "subhourly") %> -**rsCapNomH=*float*** +**rsCapNomH=_float_** -Heating nominal capacity. Provides type-independent probe source for RSYS heating capacity. Daily variability is specified to support value changes during AUTOSIZEing. Values set via input are typically constant. +Heating nominal capacity. Provides type-independent probe source for RSYS heating capacity. Daily variability is specified to support value changes during AUTOSIZEing. Values set via input are typically constant. <%= member_table( - units: "Btu/hr", - legal_range: "*x* $\\ge$ 0", - default: "no heating: 0 heat pump: rsCap47 (input or AUTOSIZEd) other: rsCapH (input or AUTOSIZEd)", - required: "No", - variability: "daily") %> +units: "Btu/hr", +legal_range: "_x_ $\\ge$ 0", +default: "no heating: 0 heat pump: rsCap47 (input or AUTOSIZEd) other: rsCapH (input or AUTOSIZEd)", +required: "No", +variability: "daily") %> -**rsCapNomC=*float*** +**rsCapNomC=_float_** -Cooling nominal capacity. Provides type-independent probe source for RSYS cooling capacity. Daily variability is specified to support value changes during AUTOSIZEing. Values set via input are typically constant. +Cooling nominal capacity. Provides type-independent probe source for RSYS cooling capacity. Daily variability is specified to support value changes during AUTOSIZEing. Values set via input are typically constant. <%= member_table( - units: "Btu/hr", - legal_range: "*x* $\\ge$ 0", - default: "no cooling: 0 other: rsCap95 (input or AUTOSIZEd)", - required: "No", - variability: "daily") %> - -**rsDSEH=*float*** +units: "Btu/hr", +legal_range: "_x_ $\\ge$ 0", +default: "no cooling: 0 other: rsCap95 (input or AUTOSIZEd)", +required: "No", +variability: "daily") %> -Heating distribution system efficiency. If given, (1-rsDSEH) of RSYS heating output is discarded. Cannot be combined with more detailed DUCTSEG model. +**rsDSEH=_float_** +Heating distribution system efficiency. If given, (1-rsDSEH) of RSYS heating output is discarded. Cannot be combined with more detailed DUCTSEG model. <%= member_table( - units: "", - legal_range: "0 < *x* < 1", - default: "(use DUCTSEG model)", - required: "No", - variability: "hourly") %> +units: "", +legal_range: "0 < _x_ < 1", +default: "(use DUCTSEG model)", +required: "No", +variability: "hourly") %> -**rsDSEC=*float*** - -Cooling distribution system efficiency. If given, (1-rsDSEC) of RSYS cooling output is discarded. Cannot be combined with more detailed DUCTSEG model. +**rsDSEC=_float_** +Cooling distribution system efficiency. If given, (1-rsDSEC) of RSYS cooling output is discarded. Cannot be combined with more detailed DUCTSEG model. <%= member_table( - units: "", - legal_range: "0 < *x* < 1", - default: "(use DUCTSEG model)", - required: "No", - variability: "hourly") %> +units: "", +legal_range: "0 < _x_ < 1", +default: "(use DUCTSEG model)", +required: "No", +variability: "hourly") %> - **rsOAVType=*choice*** +**rsOAVType=_choice_** - Type of central fan integrated (CFI) outside air ventilation (OAV) included in this RSYS. OAV systems use the central system fan to circulate outdoor air (e.g. for night ventilation). +Type of central fan integrated (CFI) outside air ventilation (OAV) included in this RSYS. OAV systems use the central system fan to circulate outdoor air (e.g. for night ventilation). - OAV cannot operate simultaneously with whole building ventilation (operable windows, whole house fans, etc.). Availability of ventilation modes is controlled on an hourly basis via [Top ventAvail](#top-model-control-items). +OAV cannot operate simultaneously with whole building ventilation (operable windows, whole house fans, etc.). Availability of ventilation modes is controlled on an hourly basis via [Top ventAvail][top-model-control-items] <%= csv_table(< false) -NONE, No CFI ventilation capabilities -FIXED, Fixed-flow CFI (aka SmartVent). The specified rsOAVVfDs is used whenever the RSYS operates in OAV mode. -VARIABLE, Variable-flow CFI (aka NightBreeze). Flow rate is determined at midnight based on prior day's average dry-bulb temperature according to a control algorithm defined by the NightBreeze vendor. +NONE, No CFI ventilation capabilities +FIXED, Fixed-flow CFI (aka SmartVent). The specified rsOAVVfDs is used whenever the RSYS operates in OAV mode. +VARIABLE, Variable-flow CFI (aka NightBreeze). Flow rate is determined at midnight based on prior day's average dry-bulb temperature according to a control algorithm defined by the NightBreeze vendor. END %> <%= member_table( - units: "", - legal_range: "NONE, FIXED, VARIABLE", - default: "*none*", - required: "No", - variability: "constant") %> - - **rsOAVVfDs=*float*** +units: "", +legal_range: "NONE, FIXED, VARIABLE", +default: "_none_", +required: "No", +variability: "constant") %> - Design air volume flow rate when RSYS is operating in OAV mode. +**rsOAVVfDs=_float_** +Design air volume flow rate when RSYS is operating in OAV mode. <%= member_table( - units: "cfm", - legal_range: "*x* $\\ge$ 0", - default: "*none*", - required: "if rsOAVType $\ne$ NONE", - variability: "constant") %> +units: "cfm", +legal_range: "_x_ $\\ge$ 0", +default: "_none_", +required: "if rsOAVType $\ne$ NONE", +variability: "constant") %> - **rsOAVVfMinF=*float*** +**rsOAVVfMinF=_float_** - Minimum air volume flow rate fraction when RSYS is operating in OAV mode. When rsOAVType=VARIABLE, air flow rate is constrained to rsOAVVfMinF * rsOAVVfDs or greater. +Minimum air volume flow rate fraction when RSYS is operating in OAV mode. When rsOAVType=VARIABLE, air flow rate is constrained to rsOAVVfMinF \* rsOAVVfDs or greater. <%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ 1", - default: "0.2", - required: "No", - variability: "constant") %> +units: "", +legal_range: "0 $\\le$ x $\\le$ 1", +default: "0.2", +required: "No", +variability: "constant") %> - **rsOAVFanPwr=*float*** +**rsOAVFanPwr=_float_** - RSYS OAV-mode fan power. +RSYS OAV-mode fan power. <%= member_table( - units: "W/cfm", - legal_range: "0 < x $\\le$ 5", - default: "per rsOAVTYPE FIXED: rsFanPwrC VARIABLE: NightBreeze vendor curve based on rsOAVvfDs", - required: "No", - variability: "constant") %> +units: "W/cfm", +legal_range: "0 < x $\\le$ 5", +default: "per rsOAVTYPE FIXED: rsFanPwrC VARIABLE: NightBreeze vendor curve based on rsOAVvfDs", +required: "No", +variability: "constant") %> -**rsOAVTDbInlet=*float*** +**rsOAVTDbInlet=_float_** -OAV inlet (source) air temperature. Supply air temperature at the zone is generally higher due to fan heat. Duct losses, if any, also alter the supply air temperature. +OAV inlet (source) air temperature. Supply air temperature at the zone is generally higher due to fan heat. Duct losses, if any, also alter the supply air temperature. <%= member_table( - units: "^o^F", - legal_range: "*x* $\\ge$ 0", - default: "Dry-bulb temperature from weather file", - required: "No", - variability: "hourly") %> +units: "^o^F", +legal_range: "_x_ $\\ge$ 0", +default: "Dry-bulb temperature from weather file", +required: "No", +variability: "hourly") %> -**rsOAVTdiff=*float*** +**rsOAVTdiff=_float_** - OAV temperature differential. When operating in OAV mode, the zone set point temperature is max( znTD, inletT+rsOAVTdiff). Small values can result in inadvertent zone heating, due to fan heat. +OAV temperature differential. When operating in OAV mode, the zone set point temperature is max( znTD, inletT+rsOAVTdiff). Small values can result in inadvertent zone heating, due to fan heat. <%= member_table( - units: "^o^F", - legal_range: "*x* $>$ 0", - default: "5 ^o^F", - required: "No", - variability: "hourly") %> +units: "^o^F", +legal_range: "_x_ $>$ 0", +default: "5 ^o^F", +required: "No", +variability: "hourly") %> -**rsOAVReliefZn=*znName*** +**rsOAVReliefZn=_znName_** -Name of zone to which relief air is directed during RSYS OAV operation, typically an attic zone. Relief air flow is included in the target zone's pressure and thermal balance. +Name of zone to which relief air is directed during RSYS OAV operation, typically an attic zone. Relief air flow is included in the target zone's pressure and thermal balance. <%= member_table( - units: "", - legal_range: "*name of ZONE*", - default: "*none*", - required: "if rsOAVType $\ne$ NONE", - variability: "constant") %> +units: "", +legal_range: "_name of ZONE_", +default: "_none_", +required: "if rsOAVType $\ne$ NONE", +variability: "constant") %> -**rsParElec=*float*** +**rsParElec=_float_** -Parasitic electrical power. rsParElec is unconditionally accumulated to end use AUX of rsElecMtr (if specified) and has no other effect. +Parasitic electrical power. rsParElec is unconditionally accumulated to end use AUX of rsElecMtr (if specified) and has no other effect. <%= member_table( - units: "W", - legal_range: "", - default: "0", - required: "No", - variability: "hourly") %> +units: "W", +legal_range: "", +default: "0", +required: "No", +variability: "hourly") %> -**rsParFuel=*float*** +**rsParFuel=_float_** -Parasitic fuel use. rsParFuel is unconditionally accumulated to end use AUX of sFuelMtr (if specified) and has no other effect. +Parasitic fuel use. rsParFuel is unconditionally accumulated to end use AUX of sFuelMtr (if specified) and has no other effect. <%= member_table( - units: "Btuh", - legal_range: "", - default: "0", - required: "No", - variability: "hourly") %> +units: "Btuh", +legal_range: "", +default: "0", +required: "No", +variability: "hourly") %> -**rsRhIn=*float*** +**rsRhIn=_float_** Entering air relative humidity (for model testing). <%= member_table( - units: "W/cfm", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "Derived from entering air state", - required: "No", - variability: "constant") %> +units: "W/cfm", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "Derived from entering air state", +required: "No", +variability: "constant") %> -**rsTdbOut=*float*** +**rsTdbOut=_float_** Air dry-bulb temperature at the outdoor portion of this system. <%= member_table( - units: "^o^F", - legal_range: "*x* $\\ge$ 0", - default: "From weather file", - required: "No", - variability: "hourly") %> +units: "^o^F", +legal_range: "_x_ $\\ge$ 0", +default: "From weather file", +required: "No", +variability: "hourly") %> **endRSYS** Optionally indicates the end of the RSYS definition. <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") %> **Related Probes:** -- @[rsys](#p_rsys) -- @[RSYSRes](#p_rsysres) (accumulated results) +- @[rsys][p_rsys] +- @[RSYSRes][p_rsysres](accumulated results) diff --git a/doc/src/docs/input-data/sgdist.md b/doc/src/docs/input-data/sgdist.md index 049a23677..16dacda78 100644 --- a/doc/src/docs/input-data/sgdist.md +++ b/doc/src/docs/input-data/sgdist.md @@ -9,84 +9,85 @@ Via members sgFSO and sgFSC, the fraction of the insolation distributed to the s Name of solar gain distribution (follows "SGDIST" if given). <%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_63 characters_", +default: "_none_", +required: "No", +variability: "constant") %> -**sgSurf=*sfName*** +**sgSurf=_sfName_** Name of surface to which gain is targeted. If there is more than surface with the specified name: if one of the surfaces is in the current zone, it is used; otherwise, an error message is issued. + The specified surface must be modeled with the Delayed model. If gain is targeted to a Quick model surface, a warning message is issued and the gain is redirected to the air of the associated zone. <%= member_table( - units: "", - legal_range: "name of a *SURFACE*", - default: "*none*", - required: "Yes", - variability: "constant") %> +units: "", +legal_range: "name of a _SURFACE_", +default: "_none_", +required: "Yes", +variability: "constant") %> -**sgSide=*choice*** +**sgSide=_choice_** Designates the side of the surface to which the gain is to be targeted: <%= csv_table(< false) -INTERIOR, Apply gain to interior of surface -EXTERIOR, Apply gain to exterior of surface +INTERIOR, Apply gain to interior of surface +EXTERIOR, Apply gain to exterior of surface END %> <%= member_table( - units: "", - legal_range: "INTERIOR, EXTERIOR", - default: "Side of surface in zone containing window; or INTERIOR if both sides are in zone containing window.", - required: "Yes", - variability: "constant") %> +units: "", +legal_range: "INTERIOR, EXTERIOR", +default: "Side of surface in zone containing window; or INTERIOR if both sides are in zone containing window.", +required: "Yes", +variability: "constant") %> -**sgFSO=*float*** +**sgFSO=_float_** Fraction of solar gain directed to specified surface when the owning window's interior shading is in the open position (when the window's zone's shade closure (znSC) is 0). <%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1,and sum of window's sgFSO's $\\le$ 1", - default: "*none*", - required: "Yes", - variability: "monthly-hourly") %> +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1,and sum of window's sgFSO's $\\le$ 1", +default: "_none_", +required: "Yes", +variability: "monthly-hourly") %> -**sgFSC=*float*** +**sgFSC=_float_** Fraction of solar gain directed to specified surface when the owning window's interior shading is in the closed position. If the zone's shades are partly closed (znSC between 0 and 1), a proportional fraction between sgFSO and sgFSC is used. <%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1, and sum of window's sgFSC's $\\le$ 1", - default: "*sgFSO*", - required: "No", - variability: "monthly-hourly") %> +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1, and sum of window's sgFSC's $\\le$ 1", +default: "_sgFSO_", +required: "No", +variability: "monthly-hourly") %> **endSGDist** Optionally indicates the end of the solar gain distribution definition. Alternatively, the end of the solar gain distribution definition can be indicated by END or by just beginning another object. <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") %> **Related Probes:** -- @[sgdist](#p_sgdist) +- @[sgdist][p_sgdist] diff --git a/doc/src/docs/input-data/shade.md b/doc/src/docs/input-data/shade.md index 4c1482225..b213cce9a 100644 --- a/doc/src/docs/input-data/shade.md +++ b/doc/src/docs/input-data/shade.md @@ -172,4 +172,4 @@ Optional to indicate the end of the SHADE definition. Alternatively, the end of **Related Probes:** -- @[shade](#p_shade) +- @[shade][p_shade] diff --git a/doc/src/docs/input-data/shadex.md b/doc/src/docs/input-data/shadex.md index c031e3942..6939e5dc4 100644 --- a/doc/src/docs/input-data/shadex.md +++ b/doc/src/docs/input-data/shadex.md @@ -1,59 +1,59 @@ # SHADEX -SHADEX describes an object that shades other building surfaces using an advanced shading model. Advanced shading calculations are provided only for [PVARRAYs](#pvarray). Advanced shading must be enabled via [Top exShadeModel](#top-model-control-items). +SHADEX describes an object that shades other building surfaces using an advanced shading model. Advanced shading calculations are provided only for [PVARRAYs][pvarray] Advanced shading must be enabled via [Top exShadeModel][top-model-control-items] **sxName** Name of photovoltaic array. Give after the word SHADEX. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "\_63 characters*", +default: "_none_", +required: "No", +variability: "constant") %> -**sxMounting=*choice*** +**sxMounting=_choice_** -Specifies the mounting location of the shade. sxMounting=Site indicates the SHADEX position is fixed and is not modified if the building is rotated. The position of SHADEXs with sxMounting=Building are modified to include the effect of building rotation specified via [Top bldgAz](#bldgAzm) +Specifies the mounting location of the shade. sxMounting=Site indicates the SHADEX position is fixed and is not modified if the building is rotated. The position of SHADEXs with sxMounting=Building are modified to include the effect of building rotation specified via [TOP bldgAz][top-general-data-items] <%= member_table( - units: "", - legal_range: "Building or Site", - default: "Site", - required: "No", - variability: "constant") %> +units: "", +legal_range: "Building or Site", +default: "Site", +required: "No", +variability: "constant") %> -**sxVertices=*list of up to 36 floats*** +**sxVertices=_list of up to 36 floats_** Vertices of a polygon representing the shape of the shading object. -The values that follow sxVertices are a series of X, Y, and Z values for the vertices of the polygon. The coordinate system is defined from a viewpoint facing north. X and Y values convey east-west and north-south location respectively relative to an arbitrary origin (positive X value are to the east; positive Y values are to the north). Z values convey height relative to the building 0 level and positive values are upward. +The values that follow sxVertices are a series of X, Y, and Z values for the vertices of the polygon. The coordinate system is defined from a viewpoint facing north. X and Y values convey east-west and north-south location respectively relative to an arbitrary origin (positive X value are to the east; positive Y values are to the north). Z values convey height relative to the building 0 level and positive values are upward. -The vertices are specified in counter-clockwise order when facing the shading object from the south. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When sxType=Building, the effective position of the polygon reflects building rotation specified by [TOP bldgAzm](#top-general-data-items). +The vertices are specified in counter-clockwise order when facing the shading object from the south. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When sxType=Building, the effective position of the polygon reflects building rotation specified by [TOP bldgAzm][top-general-data-items] For example, to specify a rectangular shade "tree" that is 10 x 40 ft, facing south, and 100 ft to the south of the nominal building origin -- sxVertices = 5, -100, 0, 15, -100, 0, 15, -100, 40, 5, -100, 40 -<%= member_table( - units: "ft", - legal_range: "unrestricted", - default: "*none*", - required: "9, 12, 15, 18, 21, 24, 27, 30, 33 or 36 values", - variability: "constant") %> +<%= member*table( +units: "ft", +legal_range: "unrestricted", +default: "\_none*", +required: "9, 12, 15, 18, 21, 24, 27, 30, 33 or 36 values", +variability: "constant") %> **endSHADEX** Optionally indicates the end of the SHADEX definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +<%= member*table( +units: "", +legal_range: "", +default: "\_none*", +required: "No", +variability: "constant") %> **Related Probes:** -- @[SHADEX](#p_shadex) +- @[SHADEX][p_shadex] diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index 5b3531c4c..c099ff2b2 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -7,13 +7,13 @@ Surface constructs a ZONE subobject of class SURFACE that represents a surroundi Name of surface; give after the word SURFACE. <%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_63 characters_", +default: "_none_", +required: "No", +variability: "constant") %> -**sfType=*choice*** +**sfType=_choice_** Type of surface: @@ -27,201 +27,204 @@ END sfType is used extensively for default determination and input checking, but does not have any further internal effect. The Floor, Wall, and Ceiling choices identify surfaces that form boundaries between the zone and some other condition. <%= member_table( - units: "", - legal_range: "FLOOR WALL CEILING", - default: "*none*", - required: "Yes", - variability: "constant") %> +units: "", +legal_range: "FLOOR WALL CEILING", +default: "_none_", +required: "Yes", +variability: "constant") %> -**sfArea=*float*** +**sfArea=_float_** Gross area of surface. (CSE computes the net area for simulation by subtracting the areas of any windows and doors in the surface.). <%= member_table( - units: "ft^2^", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") %> +units: "ft^2^", +legal_range: "_x_ $>$ 0", +default: "_none_", +required: "Yes", +variability: "constant") %> -**sfTilt=*float*** +**sfTilt=_float_** Surface tilt from horizontal. Values outside the range 0 to 360 are first normalized to that range. The default and allowed range depend on sfType, as follows: - ------------------ ------------------------------------------- - sfType = FLOOR *sfTilt*=180, default = 180 (fixed value) - sfType = WALL 60 $<$ *sfTilt* $<$ 180, default = 90 - sfType = CEILING 0 $\leq$ *sfTilt* $\leq$ 60, default = 0 - ------------------ ------------------------------------------- +--- + +sfType = FLOOR _sfTilt_=180, default = 180 (fixed value) +sfType = WALL 60 $<$ _sfTilt_ $<$ 180, default = 90 +sfType = CEILING 0 $\leq$ _sfTilt_ $\leq$ 60, default = 0 + +--- <%= member_table( - units: "degrees", - legal_range: "Dependent upon *sfType* See above", - default: "Dependent upon *sfType* See above", - required: "No", - variability: "constant") %> +units: "degrees", +legal_range: "Dependent upon _sfType_ See above", +default: "Dependent upon _sfType_ See above", +required: "No", +variability: "constant") %> -**sfAzm=*float*** +**sfAzm=_float_** Azimuth of surface with respect to znAzm. The azimuth used in simulating a surface is bldgAzm + znAzm + sfAzm; the surface is rotated if any of those are changed. Values outside the range 0 to 360 are normalized to that range. Required for non-horizontal surfaces. <%= member_table( - units: "degrees", - legal_range: "unrestricted", - default: "*none*", - required: "Required if *sfTilt* $\\neq$ 0 and *sfTilt* $\\neq$ 180", - variability: "constant") %> +units: "degrees", +legal_range: "unrestricted", +default: "_none_", +required: "Required if _sfTilt_ $\\neq$ 0 and _sfTilt_ $\\neq$ 180", +variability: "constant") %> -**sfModel=*choice*** +**sfModel=_choice_** Provides user control over how CSE models conduction for this surface. <%= csv_table(< false) -QUICK, Surface is modeled using a simple conductance. Heat capacity effects are ignored. Either sfCon or sfU (next) can be specified. -DELAYED, DELAYED\_HOUR, DELAYED\_SUBHOUR, Surface is modeled using a multi-layer finite difference technique that represents heat capacity effects. If the time constant of the surface is too short to accurately simulate, a warning message is issued and the Quick model is used. The program **cannot** use the finite difference model if sfU rather than sfCon is specified. +QUICK, Surface is modeled using a simple conductance. Heat capacity effects are ignored. Either sfCon or sfU (next) can be specified. +DELAYED, DELAYED_HOUR, DELAYED_SUBHOUR, Surface is modeled using a multi-layer finite difference technique that represents heat capacity effects. If the time constant of the surface is too short to accurately simulate, a warning message is issued and the Quick model is used. The program **cannot** use the finite difference model if sfU rather than sfCon is specified. AUTO, Program selects Quick or the appropriate Delayed automatically according to the time constant of the surface (if sfU is specified, Quick is selected). -FD (or FORWARD\_DIFFERENCE), Selects the forward difference model (used with short time steps and the CZM/UZM zone model). -KIVA, Uses a two-dimensional finite difference model to simulate heat flow through foundation surfaces. +FD (or FORWARD_DIFFERENCE), Selects the forward difference model (used with short time steps and the CZM/UZM zone model). +KIVA, Uses a two-dimensional finite difference model to simulate heat flow through foundation surfaces. END %> <%= member_table( - legal_range: "QUICK, DELAYED, DELAYED\_HOUR, DELAYED\_SUBOUR, AUTO, 2D_FND", - default: "AUTO", - required: "No", - variability: "constant") %> +legal_range: "QUICK, DELAYED, DELAYED_HOUR, DELAYED_SUBOUR, AUTO, 2D_FND", +default: "AUTO", +required: "No", +variability: "constant") %> + Either sfU or sfCon must be specified, but not both. -**sfU=*float*** +**sfU=_float_** Surface U-value (NOT including surface (air film) conductances). For surfaces for which no heat capacity is to be modeled, allows direct entry of U-value without defining a CONSTRUCTION. <%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "*x* $>$ 0", - default: "Determined from *sfCon*", - required: "if *sfCon* not given", - variability: "constant") %> +units: "Btuh/ft^2^-^o^F", +legal_range: "_x_ $>$ 0", +default: "Determined from _sfCon_", +required: "if _sfCon_ not given", +variability: "constant") %> -**sfCon=*conName*** +**sfCon=_conName_** Name of CONSTRUCTION of the surface. <%= member_table( - units: "", - legal_range: "Name of a *CONSTRUCTION*", - default: "*none*", - required: "unless *sfU* given", - variability: "constant") %> +units: "", +legal_range: "Name of a _CONSTRUCTION_", +default: "_none_", +required: "unless _sfU_ given", +variability: "constant") %> -**sfLThkF=*float*** +**sfLThkF=_float_** -Sublayer thickness adjustment factor for FORWARD\_DIFFERENCE conduction model used with sfCon surfaces. Material layers in the construction are divided into sublayers as needed for numerical stability. sfLThkF allows adjustment of the thickness criterion used for subdivision. A value of 0 prevents subdivision; the default value (0.5) uses layers with conservative thickness equal to half of an estimated safe value. Fewer (thicker) sublayers improves runtime at the expense of accurate representation of rapid changes. +Sublayer thickness adjustment factor for FORWARD_DIFFERENCE conduction model used with sfCon surfaces. Material layers in the construction are divided into sublayers as needed for numerical stability. sfLThkF allows adjustment of the thickness criterion used for subdivision. A value of 0 prevents subdivision; the default value (0.5) uses layers with conservative thickness equal to half of an estimated safe value. Fewer (thicker) sublayers improves runtime at the expense of accurate representation of rapid changes. <%= member_table( - units: "", - legal_range: "*x* $\\ge$ 0", - default: "0.5", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $\\ge$ 0", +default: "0.5", +required: "No", +variability: "constant") %> -**sfExCnd=*choice*** +**sfExCnd=_choice_** Specifies the thermal conditions assumed at surface exterior, and at exterior of any subobjects (windows or doors) belonging to current surface. The conditions accounted for are dry bulb temperature and incident solar radiation. <%= csv_table(< false) -AMBIENT, Exterior surface is exposed to the 'weather' as read from the weather file. Solar gain is calculated using solar geometry, sfAzm, sfTilt, and sfExAbs. -SPECIFIEDT, Exterior surface is exposed to solar radiation as in AMBIENT, but the dry bulb temperature is calculated with a user specified function (sfExT). sfExAbs can be set to 0 to eliminate solar effects. -ADJZN, Exterior surface is exposed to another zone, whose name is specified by sfAdjZn. Solar gain is 0 unless gain is targeted to the surface with SGDIST below. -GROUND, The surface is in contact with the ground. Details of the two-dimensional foundation design are defined by sfFnd. Only floor and wall surfaces may use this option. +AMBIENT, Exterior surface is exposed to the 'weather' as read from the weather file. Solar gain is calculated using solar geometry, sfAzm, sfTilt, and sfExAbs. +SPECIFIEDT, Exterior surface is exposed to solar radiation as in AMBIENT, but the dry bulb temperature is calculated with a user specified function (sfExT). sfExAbs can be set to 0 to eliminate solar effects. +ADJZN, Exterior surface is exposed to another zone, whose name is specified by sfAdjZn. Solar gain is 0 unless gain is targeted to the surface with SGDIST below. +GROUND, The surface is in contact with the ground. Details of the two-dimensional foundation design are defined by sfFnd. Only floor and wall surfaces may use this option. ADIABATIC, Exterior surface heat flow is 0. Thermal storage effects of delayed surfaces are modeled. END %> -**sfExAbs=*float*** +**sfExAbs=_float_** Surface exterior absorptivity. <%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.5", - required: "Required if *sfExCnd* = AMBIENT or *sfExCnd* = SPECIFIEDT", - variability: "monthly-hourly") %> +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.5", +required: "Required if _sfExCnd_ = AMBIENT or _sfExCnd_ = SPECIFIEDT", +variability: "monthly-hourly") %> -**sfInAbs=*float*** +**sfInAbs=_float_** Surface interior solar absorptivity. <%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\le$ 1", - default: "sfType = CEILING, 0.2; sfType = WALL, 0.6; sfType = FLOOR, 0.8", - required: "No", - variability: "monthly-hourly") %> +units: "", +legal_range: "0 $\\le$ _x_ $\le$ 1", +default: "sfType = CEILING, 0.2; sfType = WALL, 0.6; sfType = FLOOR, 0.8", +required: "No", +variability: "monthly-hourly") %> -**sfExEpsLW=*float*** +**sfExEpsLW=_float_** Surface exterior long wave (thermal) emittance. <%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.9", - required: "No", - variability: "constant") %> +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.9", +required: "No", +variability: "constant") %> -**sfInEpsLW=*float*** +**sfInEpsLW=_float_** Surface interior long wave (thermal) emittance. <%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.9", - required: "No", - variability: "constant") %> +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.9", +required: "No", +variability: "constant") %> -**sfExT=*float*** +**sfExT=_float_** Exterior air temperature. <%= member_table( - units: "^o^F", - legal_range: "*unrestricted*", - default: "*none*", - required: "Required if *sfExCnd* = SPECIFIEDT", - variability: "hourly") %> +units: "^o^F", +legal_range: "_unrestricted_", +default: "_none_", +required: "Required if _sfExCnd_ = SPECIFIEDT", +variability: "hourly") %> -**sfAdjZn=*znName*** +**sfAdjZn=_znName_** Name of adjacent zone; used only when sfExCnd is ADJZN. Can be the same as the current zone. <%= member_table( - units: "", - legal_range: "name of a *ZONE*", - default: "*none*", - required: "Required when
*sfExCnd* = ADJZN", - variability: "constant") %> +units: "", +legal_range: "name of a _ZONE_", +default: "_none_", +required: "Required when
_sfExCnd_ = ADJZN", +variability: "constant") %> -**sfGrndRefl=*float*** +**sfGrndRefl=_float_** Ground reflectivity for this surface. <%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "grndRefl", - required: "No", - variability: "Monthly - Hourly") %> +units: "fraction", +legal_range: "0 $\\leq$ _x_ $\\leq$ 1", +default: "grndRefl", +required: "No", +variability: "Monthly - Hourly") %> -**sfInH=*float*** +**sfInH=_float_** -Inside surface (air film) conductance. Ignored for sfModel = Forward\_Difference. Default depends on the surface type. +Inside surface (air film) conductance. Ignored for sfModel = Forward_Difference. Default depends on the surface type. <%= csv_table(< false) sfType = FLOOR or CEILING, 1.32 @@ -230,228 +233,227 @@ END %> <%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "*x* $>$ 0", - default: "*See above*", - required: "No", - variability: "constant") %> +units: "Btuh/ft^2^-^o^F", +legal_range: "_x_ $>$ 0", +default: "_See above_", +required: "No", +variability: "constant") %> -**sfExH=*float*** +**sfExH=_float_** -Outside combined surface (air film) conductance. Ignored for sfModel = Forward\_Difference. The default value is dependent upon the exterior conditions: +Outside combined surface (air film) conductance. Ignored for sfModel = Forward_Difference. The default value is dependent upon the exterior conditions: <%= csv_table(< false) -sfExCnd = AMBIENT, dflExH (Top-level member, described above) -sfExCnd = SPECIFIEDT, dflExH (described above) -sfExCnd = ADJZN, 1.5 -sfExCnd = ADIABATIC, not applicable +sfExCnd = AMBIENT, dflExH (Top-level member, described above) +sfExCnd = SPECIFIEDT, dflExH (described above) +sfExCnd = ADJZN, 1.5 +sfExCnd = ADIABATIC, not applicable END %> <%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "*x* $>$ 0", - default: "see above", - required: "No", - variability: "constant") %> +units: "Btuh/ft^2^-^o^F", +legal_range: "_x_ $>$ 0", +default: "see above", +required: "No", +variability: "constant") %> -When sfModel = Forward\_Difference, several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on sfExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. +When sfModel = Forward_Difference, several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on sfExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. <%= csv_table(< true) -Model, Exposed to ambient, Exposed to zone -UNIFIED, default CSE model, default CSE model -INPUT, hc = sfExHcMult, hc = sfxxHcMult -AKBARI, Akbari model, n/a -WALTON, Walton model, n/a -WINKELMANN, Winkelmann model, n/a -DOE2, DOE2 model, n/a -MILLS, n/a, Mills model -ASHRAE, n/a, ASHRAE handbook values -TARP, n/a, TARP model +Model, Exposed to ambient, Exposed to zone +UNIFIED, default CSE model, default CSE model +INPUT, hc = sfExHcMult, hc = sfxxHcMult +AKBARI, Akbari model, n/a +WALTON, Walton model, n/a +WINKELMANN, Winkelmann model, n/a +DOE2, DOE2 model, n/a +MILLS, n/a, Mills model +ASHRAE, n/a, ASHRAE handbook values +TARP, n/a, TARP model END %> -**sfExHcModel=*choice*** +**sfExHcModel=_choice_** -Selects the model used for exterior surface convection when sfModel = Forward\_Difference. +Selects the model used for exterior surface convection when sfModel = Forward_Difference. <%= member_table( - units: "", - legal_range: "*choices above*", - default: "UNIFIED", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_choices above_", +default: "UNIFIED", +required: "No", +variability: "constant") %> -**sfExHcLChar=*float*** +**sfExHcLChar=_float_** -Characteristic length of surface, used in derivation of forced exterior convection coefficients in some models when outside surface is exposed to ambient. See sfExHcModel. +Characteristic length of surface, used in derivation of forced exterior convection coefficients in some models when outside surface is exposed to ambient. See sfExHcModel. <%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "10", - required: "No", - variability: "constant") %> +units: "ft", +legal_range: "_x_ $>$ 0", +default: "10", +required: "No", +variability: "constant") %> -**sfExHcMult=*float*** +**sfExHcMult=_float_** -Exterior convection coefficient adjustment factor. When sfExHcModel=INPUT, hc=sfExHcMult. For other sfExHcModel choices, the model-derived hc is multiplied by sfExHcMult. +Exterior convection coefficient adjustment factor. When sfExHcModel=INPUT, hc=sfExHcMult. For other sfExHcModel choices, the model-derived hc is multiplied by sfExHcMult. <%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "1", - required: "No", - variability: "subhourly") %> +units: "", +legal_range: "x $\\ge$ 0", +default: "1", +required: "No", +variability: "subhourly") %> -**sfExRf=*float*** +**sfExRf=_float_** -Exterior surface roughness factor. Used only when surface is exposed to ambient (i.e. with wind exposure). Typical values: +Exterior surface roughness factor. Used only when surface is exposed to ambient (i.e. with wind exposure). Typical values: <%= csv_table(< true) -Roughness Index, sfExRf, Example -1 (very rough), 2.17, Stucco -2 (rough), 1.67, Brick -3 (medium rough), 1.52, Concrete -4 (Medium smooth), 1.13, Clear pine -5 (Smooth), 1.11, Smooth plaster -6 (Very Smooth), 1, Glass +Roughness Index, sfExRf, Example +1 (very rough), 2.17, Stucco +2 (rough), 1.67, Brick +3 (medium rough), 1.52, Concrete +4 (Medium smooth), 1.13, Clear pine +5 (Smooth), 1.11, Smooth plaster +6 (Very Smooth), 1, Glass END %> <%= member_table( - units: "", - legal_range: "", - default: "sfExHcModel = WINKELMANN: 1.66 else 2.17", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "sfExHcModel = WINKELMANN: 1.66 else 2.17", +required: "No", +variability: "constant") %> -**sfInHcModel=*choice*** +**sfInHcModel=_choice_** - Selects the model used for the inside (zone) surface convection when sfModel = Forward\_Difference. +Selects the model used for the inside (zone) surface convection when sfModel = Forward_Difference. <%= member_table( - units: "", - legal_range: "*choices above (see sfExHcModel)*", - default: "UNIFIED", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_choices above (see sfExHcModel)_", +default: "UNIFIED", +required: "No", +variability: "constant") %> - **sfInHcMult=*float*** +**sfInHcMult=_float_** - Interior convection coefficient adjustment factor. When sfInHcModel=INPUT, hc=sfInHcMult. For other sfInHcModel choices, the model-derived hc is multiplied by sfInHcMult. +Interior convection coefficient adjustment factor. When sfInHcModel=INPUT, hc=sfInHcMult. For other sfInHcModel choices, the model-derived hc is multiplied by sfInHcMult. <%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "1", - required: "No", - variability: "subhourly") %> +units: "", +legal_range: "x $\\ge$ 0", +default: "1", +required: "No", +variability: "subhourly") %> -The items below give values associated with CSE's model for below grade surfaces (sfExCnd=GROUND). See CSE Engineering Documentation for technical details. +The items below give values associated with CSE's model for below grade surfaces (sfExCnd=GROUND). See CSE Engineering Documentation for technical details. -**sfFnd=*fdName*** +**sfFnd=_fdName_** Name of FOUNDATION applied to ground-contact Floor SURFACEs; used only for Floor SURFACEs when sfExCnd is GROUND. <%= member_table( - legal_range: "Name of a *Foundation*", - default: "*none*", - required: "when
*sfExCnd* = GROUND and
*sfType* = Floor", - variability: "constant") %> +legal_range: "Name of a _Foundation_", +default: "_none_", +required: "when
_sfExCnd_ = GROUND and
_sfType_ = Floor", +variability: "constant") %> -**sfFndFloor=*sfName*** +**sfFndFloor=_sfName_** Name of adjacent ground-contact Floor SURFACE; used only for Wall SURFACEs when sfExCnd is GROUND. <%= member_table( - legal_range: "Name of a *Surface*", - default: "*none*", - required: "when
*sfExCnd* = GROUND and
*sfType* = Wall", - variability: "constant") %> +legal_range: "Name of a _Surface_", +default: "_none_", +required: "when
_sfExCnd_ = GROUND and
_sfType_ = Wall", +variability: "constant") %> -**sfHeight=*float*** +**sfHeight=_float_** Needed for foundation wall height, otherwise ignored. Maybe combine with sfDepthBG? <%= member_table( - units: "ft", - legal_range: "x $>$ 0", - default: "*none*", - required: "when *sfType* is WALL and *sfExtCnd* is GROUND", - variability: "constant") %> +units: "ft", +legal_range: "x $>$ 0", +default: "_none_", +required: "when _sfType_ is WALL and _sfExtCnd_ is GROUND", +variability: "constant") %> -**sfExpPerim=*float*** +**sfExpPerim=_float_** Exposed perimeter of foundation floors. <%= member_table( - units: "ft", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "when *sfType* is FLOOR, *sfFnd* is set, and *sfExtCnd* is GROUND", - variability: "constant") %> - +units: "ft", +legal_range: "x $\\geq$ 0", +default: "_none_", +required: "when _sfType_ is FLOOR, _sfFnd_ is set, and _sfExtCnd_ is GROUND", +variability: "constant") %> -**sfDepthBG=*float*** +**sfDepthBG=_float_** -*Note: sfDepthBG is used as part of the simple ground model, which is no longer supported. Use sfHeight with sfFnd instead.* +_Note: sfDepthBG is used as part of the simple ground model, which is no longer supported. Use sfHeight with sfFnd instead._ -Depth below grade of surface. For walls, sfDepthBG is measured to the lower edge. For floors, sfDepthBG is measured to the bottom face. +Depth below grade of surface. For walls, sfDepthBG is measured to the lower edge. For floors, sfDepthBG is measured to the bottom face. <%= member_table( - units: "ft", - legal_range: "*x* $\\ge$ 0", - default: "*none*", - required: "No", - variability: "constant") %> +units: "ft", +legal_range: "_x_ $\\ge$ 0", +default: "_none_", +required: "No", +variability: "constant") %> -*Note: The following data members are part of the simple ground model, which is no longer supported. Use sfFnd instead.* +_Note: The following data members are part of the simple ground model, which is no longer supported. Use sfFnd instead._ -**sfExCTGrnd=*float*** +**sfExCTGrnd=_float_** -**sfExCTaDbAvg07=*float*** +**sfExCTaDbAvg07=_float_** -**sfExCTaDbAvg14=*float*** +**sfExCTaDbAvg14=_float_** -**sfExCTaDbAvg31=*float*** +**sfExCTaDbAvg31=_float_** -**sfExCTaDbAvgYr=*float*** +**sfExCTaDbAvgYr=_float_** Conductances from outside face of surface to the weather file ground temperature and the moving average outdoor dry-bulb temperatures for 7, 14, 31, and 365 days. <%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "*x* $\\ge$ 0", - default: "see above", - required: "No", - variability: "constant") %> +units: "Btuh/ft^2^-^o^F", +legal_range: "_x_ $\\ge$ 0", +default: "see above", +required: "No", +variability: "constant") %> -**sfExRConGrnd=*float*** +**sfExRConGrnd=_float_** -Resistance overall construction resistance. TODO: full documentation. +Resistance overall construction resistance. TODO: full documentation. <%= member_table( - units: "", - legal_range: "*x* $\\ge$ 0", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $\\ge$ 0", +default: "_none_", +required: "No", +variability: "constant") %> **endSURFACE** Optional to indicates the end of the surface definition. Alternatively, the end of the surface definition can be indicated by END, or by beginning another SURFACE or other object definition. If used, should follow the definitions of the SURFACE's subobjects -- DOORs, WINDOWs, SHADEs, SGDISTs, etc. <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") %> -**humMeth=*choice*** +**humMeth=_choice_** Developmental zone humidity computation method choice for CNE models (no effect for CSE models). <%= csv_table(< false) -ROB, Rob's backward difference method. Works well within limitations of backward difference approach. -PHIL, Phil's central difference method. Should be better if perfected*coma* but initialization at air handler startup is unresolved*coma and ringing has been observed. +ROB, Rob's backward difference method. Works well within limitations of backward difference approach. +PHIL, Phil's central difference method. Should be better if perfected*coma* but initialization at air handler startup is unresolved\*coma and ringing has been observed. END %> <%= member_table( - units: "", - legal_range: "ROB, PHIL", - default: "ROB", - required: "No", - variability: "constant") %> +units: "", +legal_range: "ROB, PHIL", +default: "ROB", +required: "No", +variability: "constant") %> -**dflExH=*float*** +**dflExH=_float_** Default exterior surface (air film) conductance used for opaque and glazed surfaces exposed to ambient conditions in the absence of explicit specification. <%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "*x* $>$ 0", - default: "2.64", - required: "No", - variability: "constant") %> +units: "Btuh/ft^2^-^o^F", +legal_range: "_x_ $>$ 0", +default: "2.64", +required: "No", +variability: "constant") %> -**bldgAzm=*float*** +**bldgAzm=_float_** -Reference compass azimuth (0 = north, 90 = east, etc.). All zone orientations (and therefore surface orientations) are relative to this value, so the entire building can be rotated by changing bldgAzm only. If a value outside the range 0^o^ $\leq$ *x* $<$ 360^o^ is given, it is normalized to that range. +Reference compass azimuth (0 = north, 90 = east, etc.). All zone orientations (and therefore surface orientations) are relative to this value, so the entire building can be rotated by changing bldgAzm only. If a value outside the range 0^o^ $\leq$ _x_ $<$ 360^o^ is given, it is normalized to that range. <%= member_table( - units: "^o^ (degrees)", - legal_range: "unrestricted", - default: "0", - required: "No", - variability: "constant") %> +units: "^o^ (degrees)", +legal_range: "unrestricted", +default: "0", +required: "No", +variability: "constant") %> -**elevation=*float*** +**elevation=_float_** Elevation of the building site. Used internally for the computation of barometric pressure and air density of the location. <%= member_table( - units: "ft", - legal_range: "*x* $\\ge$ 0", - default: "0 (sea level)", - required: "No", - variability: "constant") %> +units: "ft", +legal_range: "_x_ $\\ge$ 0", +default: "0 (sea level)", +required: "No", +variability: "constant") %> -**runTitle=*string*** +**runTitle=_string_** Run title for the simulation. Appears in report footers, export headers, and in the title lines to the INP, LOG, and ERR built-in reports (these appear by default in the primary report file; the ERR report also appears in the error message file, if one is created). <%= member_table( - units: "", - legal_range: "*63 characters*", - default: "blank (no title", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_63 characters_", +default: "blank (no title", +required: "No", +variability: "constant") %> -**runSerial=*int*** +**runSerial=_int_** Run serial number for the simulation. Increments on each run in a session; appears in report footers. <%= member_table( - units: "", - legal_range: "0 $\leq$ *x* $\leq$ 999", - default: "0", - required: "No", - variability: "constant") %> +units: "", +legal_range: "0 $\leq$ _x_ $\leq$ 999", +default: "0", +required: "No", +variability: "constant") %> ## TOP Daylight Saving Time Items Daylight savings starts by default at 2:00 a.m. of the second Sunday in March. Internally, hour 3 (2:00-3:00 a.m.) is skipped and reports for this day show only 23 hours. Daylight savings ends by default at 2:00 a.m. of the first Sunday of November; for this day 25 hours are shown on reports. CSE fetches weather data using standard time but uses daylight savings time to calculate variable expressions (and thus all schedules). -**DT=*choice*** +**DT=_choice_** Whether Daylight Savings Time is to be used for the current run. <%= member_table( - units: "", - legal_range: "YES, NO", - default: "YES", - required: "No", - variability: "constant") %> +units: "", +legal_range: "YES, NO", +default: "YES", +required: "No", +variability: "constant") %> -**DTbegDay=*date*** +**DTbegDay=_date_** Start day for daylight saving time (assuming DT=Yes) <%= member_table( - units: "", - legal_range: "*date*", - default: "*second Sunday in March*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_date_", +default: "_second Sunday in March_", +required: "No", +variability: "constant") %> -**DTendDay=*date*** +**DTendDay=_date_** End day for daylight saving time (assuming DT=Yes) <%= member_table( - units: "", - legal_range: "*date*", - default: "*first Sunday in November*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_date_", +default: "_first Sunday in November_", +required: "No", +variability: "constant") %> ## TOP Model Control Items -**ventAvail=*choice*** +**ventAvail=_choice_** -Indicates availability of outdoor ventilation strategies. CSE cannot model simultaneously-operating alternative ventilation strategies. For example, an RSYS central fan integrated (CFI) OAV system is never modeled while whole house fan ventilation is available. ventAvail controls which ventilation mode, if any, is available for the current hour. Note that mode availability means that the strategy could operate but may not operate due to other control assumptions. +Indicates availability of outdoor ventilation strategies. CSE cannot model simultaneously-operating alternative ventilation strategies. For example, an RSYS central fan integrated (CFI) OAV system is never modeled while whole house fan ventilation is available. ventAvail controls which ventilation mode, if any, is available for the current hour. Note that mode availability means that the strategy could operate but may not operate due to other control assumptions. <%= csv_table(< true) Choice, Ventilation Strategy Available -NONE, None +NONE, None WHOLEBUILDING, IZXFER (window and whole-house fan) -RSYSOAV, RSYS central fan integrated (CFI) outside air ventilation (OAV) +RSYSOAV, RSYS central fan integrated (CFI) outside air ventilation (OAV) END %> -As noted, ventAvail is evaluated hourly, permitting flexible control strategy modeling. The following example specifies that RSYSOAV (CFI) ventilation is available when the seven day moving average temperature is above 68 ^o^F, otherwise whole building ventilation is available between 7 and 11 PM, otherwise no ventilation. +As noted, ventAvail is evaluated hourly, permitting flexible control strategy modeling. The following example specifies that RSYSOAV (CFI) ventilation is available when the seven day moving average temperature is above 68 ^o^F, otherwise whole building ventilation is available between 7 and 11 PM, otherwise no ventilation. ventAvail = (@weather.taDbAvg07 > 68) ? RSYSOAV : ($hour >= 19 && $hour <= 23) ? WHOLEBUILDING : NONE <%= member_table( - units: "", - legal_range: "*Choices above*", - default: "WHOLEBUILDING", - required: "No", - variability: "hourly") %> +units: "", +legal_range: "_Choices above_", +default: "WHOLEBUILDING", +required: "No", +variability: "hourly") %> -**exShadeModel=*choice*** +**exShadeModel=_choice_** -Specifies advanced exterior shading model used to evaluate shading of [PVARRAYs](#pvarray) by [SHADEXs](#shadex) or other PVARRAYs. Advanced shading is not implemented for building surfaces and this setting has no effect on walls or windows. +Specifies advanced exterior shading model used to evaluate shading of [PVARRAYs][pvarray] by [SHADEXs][shadex] or other PVARRAYs. Advanced shading is not implemented for building surfaces and this setting has no effect on walls or windows. <%= csv_table(< true) -**Choice**, **Effect** -PENUMBRA, Calculate shading using the Penumbra model -NONE, Disable advanced shading calculations +**Choice**, **Effect** +PENUMBRA, Calculate shading using the Penumbra model +NONE, Disable advanced shading calculations END %> <%= member_table( - units: "", - legal_range: "*Choices above*", - default: "PENUMBRA", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_Choices above_", +default: "PENUMBRA", +required: "No", +variability: "constant") %> -**slrInterpMeth=*choice*** +**slrInterpMeth=_choice_** Solar interpolation method. @@ -385,104 +385,103 @@ END %> <%= member_table( - units: "", - legal_range: "See table above", - default: "CSE", - required: "No", - variability: "constant") %> +units: "", +legal_range: "See table above", +default: "CSE", +required: "No", +variability: "constant") %> -**ANTolAbs=*float*** +**ANTolAbs=_float_** -AirNet absolute convergence tolerance. Ideally, calculated zone air pressures should be such that the net air flow into each zone is 0 -- that is, there should be a perfect mass balance. The iterative AirNet solution techniques are deemed converged when netAirMassFlow < max( ANTolAbs, ANTolRel*totAirMassFlow). +AirNet absolute convergence tolerance. Ideally, calculated zone air pressures should be such that the net air flow into each zone is 0 -- that is, there should be a perfect mass balance. The iterative AirNet solution techniques are deemed converged when netAirMassFlow < max( ANTolAbs, ANTolRel\*totAirMassFlow). <%= member_table( - units: "lbm/sec", - legal_range: "*x* $>$ 0", - default: "0.00125 (about 1 cfm)", - required: "No", - variability: "constant") %> +units: "lbm/sec", +legal_range: "_x_ $>$ 0", +default: "0.00125 (about 1 cfm)", +required: "No", +variability: "constant") %> -**ANTolRel=*float*** +**ANTolRel=_float_** -AirNet relative convergence tolerance. See AnTolAbs just above. +AirNet relative convergence tolerance. See AnTolAbs just above. <%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "0.0001", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $>$ 0", +default: "0.0001", +required: "No", +variability: "constant") %> -**ANPressWarn=*float*** +**ANPressWarn=_float_** -AirNet pressure warning threshold. A warning message is issued when the absolute value of the AirNet-calculated zone pressure exceeds ANPressWarn. Note the default for ANPressWarn conservatively large. 10 lb/ft2 is about 500 pascals -- a pressure that is probably impossible in a building. The intent of this value is to alert the user to incorrect modeling inputs while avoiding excessive messages. +AirNet pressure warning threshold. A warning message is issued when the absolute value of the AirNet-calculated zone pressure exceeds ANPressWarn. Note the default for ANPressWarn conservatively large. 10 lb/ft2 is about 500 pascals -- a pressure that is probably impossible in a building. The intent of this value is to alert the user to incorrect modeling inputs while avoiding excessive messages. <%= member_table( - units: "lb/ft2", - legal_range: "x $\\gt$ 0", - default: "10", - required: "No", - variability: "constant") %> +units: "lb/ft2", +legal_range: "x $\\gt$ 0", +default: "10", +required: "No", +variability: "constant") %> -**ANPressErr=*float*** +**ANPressErr=_float_** -AirNet pressure error threshold. The simulation terminates with a message if the absolute value of any AirNet-calculated zone pressure exceeds ANPressErr. Note the default value for ANPressErr is physically unrealistic. 30 lb/ft2 is about 1500 pascals -- a pressure that would never be possible in a building. The intent of this value is to prevent simulation crashes due to numerical errors in AirNet calculations. +AirNet pressure error threshold. The simulation terminates with a message if the absolute value of any AirNet-calculated zone pressure exceeds ANPressErr. Note the default value for ANPressErr is physically unrealistic. 30 lb/ft2 is about 1500 pascals -- a pressure that would never be possible in a building. The intent of this value is to prevent simulation crashes due to numerical errors in AirNet calculations. <%= member_table( - units: "lb/ft2", - legal_range: "x $\\gt$ 0", - default: "30", - required: "No", - variability: "constant") %> +units: "lb/ft2", +legal_range: "x $\\gt$ 0", +default: "30", +required: "No", +variability: "constant") %> +The ASHWAT complex fenestration model used when WINDOW wnModel=ASHWAT yields several heat transfer results that are accurate over local ranges of conditions. Several values control when these value are recalculated. If any of the specified values changes more than the associated threshold, a full ASHWAT calculation is triggered. Otherwise, prior results are used. ASHWAT calculations are computationally expensive and conditions often change only incrementally between time steps. -The ASHWAT complex fenestration model used when WINDOW wnModel=ASHWAT yields several heat transfer results that are accurate over local ranges of conditions. Several values control when these value are recalculated. If any of the specified values changes more than the associated threshold, a full ASHWAT calculation is triggered. Otherwise, prior results are used. ASHWAT calculations are computationally expensive and conditions often change only incrementally between time steps. - -**AWTrigT=*float*** +**AWTrigT=_float_** ASHWAT temperature change threshold -- full calculation is triggered by a change of either indoor or outdoor environmental (combined air and radiant) temperature that exceeds AWTrigT. <%= member_table( - units: "^o^F", - legal_range: "*x* $>$ 0", - default: "1", - required: "No", - variability: "constant") %> +units: "^o^F", +legal_range: "_x_ $>$ 0", +default: "1", +required: "No", +variability: "constant") %> -**AWTrigSlr=*float*** +**AWTrigSlr=_float_** ASHWAT solar change threshold -- full calculation is triggered by a fractional change of incident solar radiation that exceeds AWTrigSlr. <%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "0.05", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $>$ 0", +default: "0.05", +required: "No", +variability: "constant") %> -**AWTrigH=*float*** +**AWTrigH=_float_** ASHWAT convection coefficient change threshold -- full calculation is triggered by a fractional change of inside surface convection coefficient that exceeds AWTrigH. <%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "0.1", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $>$ 0", +default: "0.1", +required: "No", +variability: "constant") %> ## TOP Weather Data Items The following system variables (4.6.4) are determined from the weather file for each simulated hour: <%= csv_table(< false) -\$radBeam, beam irradiance on tracking surface (integral for hour, Btu/ft^2^). -\$radDiff, diffuse irradiance on a horizontal surface (integral for hour, Btu/ft^2^). -\$tDbO, dry bulb temp (^o^F). -\$tWbO, wet bulb temp (^o^F). -\$wO, humidity ratio -\$windDirDeg, wind direction (degrees, NOT RADIANS; 0=N, 90=E). -\$windSpeed, wind speed (mph). +\$radBeam, beam irradiance on tracking surface (integral for hour, Btu/ft^2^). +\$radDiff, diffuse irradiance on a horizontal surface (integral for hour, Btu/ft^2^). +\$tDbO, dry bulb temp (^o^F). +\$tWbO, wet bulb temp (^o^F). +\$wO, humidity ratio +\$windDirDeg, wind direction (degrees, NOT RADIANS; 0=N, 90=E). +\$windSpeed, wind speed (mph). END %> @@ -492,314 +491,309 @@ The following are the terms determined from the weather file for internal use, a @Top.windSpeedSquaredWind speed squared (mph2). -**wfName=*string*** +**wfName=_string_** -Weather file path name for simulation. The file should be in the current directory, in the directory CSE.EXE was read from, or in a directory on the operating system PATH. Weather file formats supported are CSW, EPW, and ET1. Only full-year weather files are supported. +Weather file path name for simulation. The file should be in the current directory, in the directory CSE.EXE was read from, or in a directory on the operating system PATH. Weather file formats supported are CSW, EPW, and ET1. Only full-year weather files are supported. -Note: Backslash (\\) characters in path names must be doubled to work properly (e.g. "\\\\wthr\\\\mywthr.epw"). Forward slash (/) may be used in place of backslash without doubling. +Note: Backslash (\\) characters in path names must be doubled to work properly (e.g. "\\\\wthr\\\\mywthr.epw"). Forward slash (/) may be used in place of backslash without doubling. <%= member_table( - units: "", - legal_range: "file name,path optional", - default: "*none*", - required: "Yes", - variability: "constant") %> +units: "", +legal_range: "file name,path optional", +default: "_none_", +required: "Yes", +variability: "constant") %> -**skyModel=*choice*** +**skyModel=_choice_** Selects sky model used to determine relative amounts of direct and diffuse irradiance. <%= csv_table(< false) -ISOTROPIC, traditional isotropic sky model -ANISOTROPIC, Hay anisotropic model +ISOTROPIC, traditional isotropic sky model +ANISOTROPIC, Hay anisotropic model END %> <%= member_table( - units: "", - legal_range: "*choices above*", - default: "ANISOTROPIC", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_choices above_", +default: "ANISOTROPIC", +required: "No", +variability: "constant") %> -**skyModelLW=*choice*** +**skyModelLW=_choice_** -Selects the model used to derive sky temperature used in long-wave (thermal) radiant heat exchange calculations for SURFACEs exposed to ambient conditions. See the RACM alorithms documentation for technical details. +Selects the model used to derive sky temperature used in long-wave (thermal) radiant heat exchange calculations for SURFACEs exposed to ambient conditions. See the RACM alorithms documentation for technical details. <%= csv_table(< true) -**Choice**, **Description** -DEFAULT, Default: tSky from weather file if available else Berdahl-Martin -BERDAHLMARTIN, Berdahl-Martin (tSky depends on dew point, cloud cover, and hour) -DRYBULB, tSky = dry-bulb temperature (for testing) -BLAST, Blast model (tSky depends on dry-bulb) -IRHORIZ, Derives tSky from horizonal infrared data from the weather file (available on some EPW files only). Caution: minimal error checking! Missing weather file IR values are not handled correctly. +**Choice**, **Description** +DEFAULT, Default: tSky from weather file if available else Berdahl-Martin +BERDAHLMARTIN, Berdahl-Martin (tSky depends on dew point, cloud cover, and hour) +DRYBULB, tSky = dry-bulb temperature (for testing) +BLAST, Blast model (tSky depends on dry-bulb) +IRHORIZ, Derives tSky from horizonal infrared data from the weather file (available on some EPW files only). Caution: minimal error checking! Missing weather file IR values are not handled correctly. END %> <%= member_table( - units: "", - legal_range: "*choices above*", - default: "DEFAULT", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_choices above_", +default: "DEFAULT", +required: "No", +variability: "constant") %> The reference temperature and humidity are used to calculate a humidity ratio assumed in air specific heat calculations. The small effect of changing humidity on the specific heat of air is generally ignored in the interests of speed, but the user can control the humidity whose specific heat is used through the refTemp and refRH inputs. -**refTemp=*float*** +**refTemp=_float_** Reference temperature (see above paragraph). <%= member_table( - units: "^o^F", - legal_range: "*x* $\\ge$ 0", - default: "60^o^", - required: "No", - variability: "constant") %> +units: "^o^F", +legal_range: "_x_ $\\ge$ 0", +default: "60^o^", +required: "No", +variability: "constant") %> -**refRH=*float*** +**refRH=_float_** Reference relative humidity (see above). <%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "0.6", - required: "No", - variability: "constant") %> +units: "", +legal_range: "0 $\\leq$ _x_ $\\leq$ 1", +default: "0.6", +required: "No", +variability: "constant") %> -**grndRefl=*float*** +**grndRefl=_float_** Global ground reflectivity, used except where other value specified with sfGrndRefl or wnGrndRefl. This reflectivity is used in computing the reflected beam and diffuse radiation reaching the surface in question. It is also used to calculate the solar boundary conditions for the exterior grade surface in two-dimensional finite difference calculations for FOUNDATIONs. - <%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "0.2", - required: "No", - variability: "Monthly-Hourly") %> +units: "", +legal_range: "0 $\\leq$ _x_ $\\leq$ 1", +default: "0.2", +required: "No", +variability: "Monthly-Hourly") %> The following values modify weather file data, permitting varying the simulation without making up special weather files. For example, to simulate without the effects of wind, use windF = 0; to halve the effects of diffuse solar radiation, use radDiffF = 0.5. Note that the default values for windSpeedMin and windF result in modification of weather file wind values unless other values are specified. -**grndEmit=*float*** +**grndEmit=_float_** Long-wave emittance of the exterior grade surface used in two-dimensional finite difference calculations for FOUNDATIONs. <%= member_table( - units: "", - legal_range: "0.0 $\le$ x $\le$ 1.0", - default: "0.8", - required: "No", - variability: "constant") %> +units: "", +legal_range: "0.0 $\le$ x $\le$ 1.0", +default: "0.8", +required: "No", +variability: "constant") %> - **grndRf** Ground surface roughness. Used for convection and wind speed corrections in two-dimensional finite difference calculations for FOUNDATIONs. <%= member_table( - units: "ft", - legal_range: "x $\\geq$ 0.0", - default: "0.1", - required: "No", - variability: "constant") %> +units: "ft", +legal_range: "x $\\geq$ 0.0", +default: "0.1", +required: "No", +variability: "constant") %> -**windSpeedMin=*float*** +**windSpeedMin=_float_** Minimum value for wind speed <%= member_table( - units: "mph", - legal_range: "*x* $\\ge$ 0", - default: "0.5", - required: "No", - variability: "constant") %> +units: "mph", +legal_range: "_x_ $\\ge$ 0", +default: "0.5", +required: "No", +variability: "constant") %> -**windF=*float*** +**windF=_float_** -Wind Factor: multiplier for wind speeds read from weather file. windF is applied *after* windSpeedMin. Note that windF does *not* effect infiltration rates calculated by the Sherman-Grimsrud model (see e.g. ZONE.infELA). However, windF does modify AirNet flows (see IZXFER). +Wind Factor: multiplier for wind speeds read from weather file. windF is applied _after_ windSpeedMin. Note that windF does _not_ effect infiltration rates calculated by the Sherman-Grimsrud model (see e.g. ZONE.infELA). However, windF does modify AirNet flows (see IZXFER). <%= member_table( - units: "", - legal_range: "*x* $\\ge$ 0", - default: "0.25", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $\\ge$ 0", +default: "0.25", +required: "No", +variability: "constant") %> -**terrainClass=*int*** +**terrainClass=_int_** Specifies characteristics of ground terrain in the project region. <%= csv_table(< false) -1, ocean or other body of water with at least 5 km unrestricted expanse -2, flat terrain with some isolated obstacles (buildings or trees well separated) -3, rural areas with low buildings, trees, etc. -4, urban, industrial, or forest areas -5, center of large city +1, ocean or other body of water with at least 5 km unrestricted expanse +2, flat terrain with some isolated obstacles (buildings or trees well separated) +3, rural areas with low buildings, trees, etc. +4, urban, industrial, or forest areas +5, center of large city END %> <%= member_table( - units: "", - legal_range: "1 $\\leq$ *x* $\\leq$ 5", - default: "4", - required: "No", - variability: "constant") %> +units: "", +legal_range: "1 $\\leq$ _x_ $\\leq$ 5", +default: "4", +required: "No", +variability: "constant") %> -**radBeamF=*float*** + +**radBeamF=_float_** Multiplier for direct normal (beam) irradiance <%= member_table( - units: "", - legal_range: "*x* $\\ge$ 0", - default: "1", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $\\ge$ 0", +default: "1", +required: "No", +variability: "constant") %> -**radDiffF=*float*** +**radDiffF=_float_** Multiplier for diffuse horizonal irradiance. <%= member_table( - units: "", - legal_range: "*x* $\\ge$ 0", - default: "1", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_x_ $\\ge$ 0", +default: "1", +required: "No", +variability: "constant") %> -**hConvMod=*choice*** +**hConvMod=_choice_** Enable/disable convection convective coefficient pressure modification factor. $$0.24 + 0.76 \cdot P_{Location}/P_{SeaLevel}$$ <%= member_table( - units: "", - legal_range: "YES, NO", - default: "YES", - required: "No", - variability: "constant") %> +units: "", +legal_range: "YES, NO", +default: "YES", +required: "No", +variability: "constant") %> -**soilDiff=*float*** +**soilDiff=_float_** -*Note: soilDiff is used as part of the simple ground model, which is no longer supported. Use soilCond, soilSpHt, and SoilDens instead.* +_Note: soilDiff is used as part of the simple ground model, which is no longer supported. Use soilCond, soilSpHt, and SoilDens instead._ -Soil diffusivity, used in derivation of ground temperature. CSE calculates a ground temperature at 10 ft depth for each day of the year using dry-bulb temperatures from the weather file and soilDiff. Ground temperature is used in heat transfer calculations for SURFACEs with sfExCnd=GROUND. Note: derivation of mains water temperature for DHW calculations involves a ground temperature based on soil diffusivity = 0.025 and does not use this soilDiff. +Soil diffusivity, used in derivation of ground temperature. CSE calculates a ground temperature at 10 ft depth for each day of the year using dry-bulb temperatures from the weather file and soilDiff. Ground temperature is used in heat transfer calculations for SURFACEs with sfExCnd=GROUND. Note: derivation of mains water temperature for DHW calculations involves a ground temperature based on soil diffusivity = 0.025 and does not use this soilDiff. <%= member_table( - units: "ft^2^/hr", - legal_range: "*x* $>$ 0", - default: "0.025", - required: "No", - variability: "constant") %> +units: "ft^2^/hr", +legal_range: "_x_ $>$ 0", +default: "0.025", +required: "No", +variability: "constant") %> -**soilCond=*float*** +**soilCond=_float_** Soil conductivity. Used in two-dimensional finite difference calculations for FOUNDATIONs. <%= member_table( - units: "Btuh-ft/ft^2^-^o^F", - legal_range: "*x* $>$ 0", - default: "1.0", - required: "No", - variability: "constant") %> +units: "Btuh-ft/ft^2^-^o^F", +legal_range: "_x_ $>$ 0", +default: "1.0", +required: "No", +variability: "constant") %> -**soilSpHt=*float*** +**soilSpHt=_float_** Soil specific heat. Used in two-dimensional finite difference calculations for FOUNDATIONs. <%= member_table( - units: "Btu/lb-^o^F", - legal_range: "*x* $>$ 0", - default: "0.1", - required: "No", - variability: "constant") %> +units: "Btu/lb-^o^F", +legal_range: "_x_ $>$ 0", +default: "0.1", +required: "No", +variability: "constant") %> -**soilDens=*float*** +**soilDens=_float_** Soil density. Used in two-dimensional finite difference calculations for FOUNDATIONs. <%= member_table( - units: "lb/ft^3^", - legal_range: "*x* $>$ 0", - default: "115", - required: "No", - variability: "constant") %> +units: "lb/ft^3^", +legal_range: "_x_ $>$ 0", +default: "115", +required: "No", +variability: "constant") %> -**farFieldWidth=*float*** +**farFieldWidth=_float_** Far-field width. Distance from foundation to the lateral, zero-flux boundary condition. Used in two-dimensional finite difference calculations for FOUNDATIONs. <%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "130", - required: "No", - variability: "constant") %> - +units: "ft", +legal_range: "_x_ $>$ 0", +default: "130", +required: "No", +variability: "constant") %> -**deepGrndCnd=*choice*** +**deepGrndCnd=_choice_** Deep-ground boundary condition type. Choices are WATERTABLE (i.e., a defined temperature) or ZEROFLUX. <%= member_table( - legal_range: "WATERTABLE, ZEROFLUX", - default: "ZEROFLUX", - required: "No", - variability: "constant") %> +legal_range: "WATERTABLE, ZEROFLUX", +default: "ZEROFLUX", +required: "No", +variability: "constant") %> -**deepGrndDepth=*float*** +**deepGrndDepth=_float_** Deep-ground depth. Distance from exterior grade to the deep-ground boundary. Used in two-dimensional finite difference calculations for FOUNDATIONs. <%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "130", - required: "No", - variability: "constant") %> +units: "ft", +legal_range: "_x_ $>$ 0", +default: "130", +required: "No", +variability: "constant") %> - -**deepGrndT=*float*** +**deepGrndT=_float_** Deep-ground temperature. Used when deepGrndCnd=WATERTABLE. <%= member_table( - units: "F", - legal_range: "*x* $>$ 0", - default: "Annual average drybulb temperature", - required: "No", - variability: "hourly") %> - - +units: "F", +legal_range: "_x_ $>$ 0", +default: "Annual average drybulb temperature", +required: "No", +variability: "hourly") %> ## TOP TDV (Time Dependent Value) Items -CSE supports an optional comma-separated (CSV) text file that provides hourly TDV values for electricity and fuel. TDV values are read along with the weather file and the values merged with weather data. Several daily statistics are calculated for use via probes. The file has no other effect on the simulation. Only full-year TDV files are supported. +CSE supports an optional comma-separated (CSV) text file that provides hourly TDV values for electricity and fuel. TDV values are read along with the weather file and the values merged with weather data. Several daily statistics are calculated for use via probes. The file has no other effect on the simulation. Only full-year TDV files are supported. -The format of a TDV file is the same as an [IMPORTFILE](#importfile) with the proviso that the 4 line header is not optional and certain header items must have specified values. In the following table, non-italic items must be provided as shown (with optional quotes). +The format of a TDV file is the same as an [IMPORTFILE][importfile] with the proviso that the 4 line header is not optional and certain header items must have specified values. In the following table, non-italic items must be provided as shown (with optional quotes). <%= csv_table(< true) -**Line** **Contents** **Notes** -1, TDV Data (TDV/Btu), *runNumber*, *runNumber* is not checked -2, *timestamp* optionally in quotes accessible via @TOP.TDVFileTimeStamp -3, *title*, hour *title* (in quotes if it contains commas) accessible via @TOP.TDVFileTitle -4, tdvElec, tdvFuel comma separated column names (optionally in quotes)\ not checked -5 .., *valElec*,*valFuel* comma separated numerical values (8760 or 8784 rows) tdvElec is always in column 1, tdvFuel always in column 2 column names in row 4 do not determine order +**Line** **Contents** **Notes** +1, TDV Data (TDV/Btu), _runNumber_, _runNumber_ is not checked +2, _timestamp_ optionally in quotes accessible via @TOP.TDVFileTimeStamp +3, _title_, hour _title_ (in quotes if it contains commas) accessible via @TOP.TDVFileTitle +4, tdvElec, tdvFuel comma separated column names (optionally in quotes)\ not checked +5 .., _valElec_,_valFuel_ comma separated numerical values (8760 or 8784 rows) tdvElec is always in column 1, tdvFuel always in column 2 column names in row 4 do not determine order END %> @@ -822,264 +816,262 @@ Example TDV file -- Note: additional columns can be included and are ignored. -The table below shows probes available for accessing TDV data in expressions. Except as noted, daily values are updated based on standard time, so they may be inaccurate by small amounts when daylight savings time is in effect. +The table below shows probes available for accessing TDV data in expressions. Except as noted, daily values are updated based on standard time, so they may be inaccurate by small amounts when daylight savings time is in effect. <%= csv_table(< true) -**Probe**, **Variability**, **Description** +**Probe**, **Variability**, **Description** @Weather.tdvElec, Hour, current hour electricity TDV @Weather.tdvFuel, Hour, current hour fuel TDV -@Weather.tdvElecPk, Day, current day peak electricity TDV (includes future hours). Updated at hour 23 during daylight savings. +@Weather.tdvElecPk, Day, current day peak electricity TDV (includes future hours). Updated at hour 23 during daylight savings. @Weather.tdvElecAvg, Day, current day average electricity TDV (includes future hours) @Weather.tdvElecPvPk, Day,previous day peak electricity TDV @Weather.tdvElecAvg01, Day,previous day average electricity TDV -@weather.tdvElecHrRank[], Day, hour ranking of TDVElec values. tdvElecHrRank[ 1] is the hour having the highest TDVElec, tdvElecHrRank[ 2] is the next highest, etc. The hour values are adjusted when dayight savings time is in effect, so they remain consistent with system variable $hour. +@weather.tdvElecHrRank[], Day, hour ranking of TDVElec values. tdvElecHrRank[ 1] is the hour having the highest TDVElec, tdvElecHrRank[ 2] is the next highest, etc. The hour values are adjusted when dayight savings time is in effect, so they remain consistent with system variable $hour. @weatherFile.tdvFileTimeStamp, Constant, TDV file timestamp (line 2 of header) @weatherFile.tdvFileTitle, Constant, TDV file title (line 3 of header) @Top.tdvFName, Constant, TDV file full path END %> -**TDVfName=*string*** +**TDVfName=_string_** -Note: Backslash (\\) characters in path names must be doubled to work properly (e.g. "\\\\data\\\\mytdv.tdv"). Forward slash (/) may be used in place of backslash without doubling. +Note: Backslash (\\) characters in path names must be doubled to work properly (e.g. "\\\\data\\\\mytdv.tdv"). Forward slash (/) may be used in place of backslash without doubling. <%= member_table( - units: "", - legal_range: "file name, path optional", - default: "(no TDV file)", - required: "No", - variability: "constant") %> +units: "", +legal_range: "file name, path optional", +default: "(no TDV file)", +required: "No", +variability: "constant") %> ## TOP Report Data Items These items are used in page-formatted report output files. See REPORTFILE, Section 5.245.21, and REPORT, Section 5.25. -**repHdrL=*string*** +**repHdrL=_string_** Report left header. Appears at the upper left of each report page unless page formatting (rfPageFmt) is OFF. If combined length of repHdrL and repHdrR is too large for the page width, one or both will be truncated. <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") %> -**repHdrR=*string*** +**repHdrR=_string_** Report right header. Appears at the upper right of each report page unless page formatting (rfPageFmt) is OFF. If combined length of repHdrL and repHdrR is too large for the page width, one or both will be truncated. <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") %> -**repLPP=*int*** +**repLPP=_int_** Total lines per page to be assumed for reports. Number of lines used for text (including headers and footers) is repLPP - repTopM - repBotM. <%= member_table( - units: "lines", - legal_range: "*x* $\\ge$ 50", - default: "66", - required: "No", - variability: "constant") %> +units: "lines", +legal_range: "_x_ $\\ge$ 50", +default: "66", +required: "No", +variability: "constant") %> -**repTopM=*int*** +**repTopM=_int_** Number of lines to be skipped at the top of each report page (prior to header). <%= member_table( - units: "lines", - legal_range: "0 $\\geq$ *x* $\\geq$ 12", - default: "3", - required: "No", - variability: "constant") %> +units: "lines", +legal_range: "0 $\\geq$ _x_ $\\geq$ 12", +default: "3", +required: "No", +variability: "constant") %> -**repBotM=*int*** +**repBotM=_int_** Number of lines reserved at the bottom of each report page. repBotM determines the position of the footer on the page (blank lines after the footer are not actually written). <%= member_table( - units: "lines", - legal_range: "0 $\\geq$ *x* $\\geq$ 12", - default: "3", - required: "No", - variability: "constant") %> +units: "lines", +legal_range: "0 $\\geq$ _x_ $\\geq$ 12", +default: "3", +required: "No", +variability: "constant") %> -**repCPL=*int*** +**repCPL=_int_** Characters per line for report headers and footers, user defined reports, and error messages. CSE writes simple ASCII files and assumes a fixed (not proportional) spaced printer font. Many of the built-in reports now (July 1992) assume a line width of 132 columns. <%= member_table( - units: "characters", - legal_range: "78 $\\leq$ *x* $\\leq$ 132", - default: "78", - required: "No", - variability: "constant") %> +units: "characters", +legal_range: "78 $\\leq$ _x_ $\\leq$ 132", +default: "78", +required: "No", +variability: "constant") %> -**repTestPfx=*string*** +**repTestPfx=_string_** Report test prefix. Appears at beginning of report lines that are expected to differ from prior runs. This is useful for "hiding" lines from text comparison utilities in automated testing schemes. Note: the value specified with command line -x takes precedence over this input. <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") %> ## TOP Autosizing -**doAutoSize=*choice*** +**doAutoSize=_choice_** Controls invocation of autosizing phase prior to simulation. <%= member_table( - units: "", - legal_range: "YES, NO", - default: "NO, unless AUTOSIZE commands in input", - required: "No", - variability: "constant") %> +units: "", +legal_range: "YES, NO", +default: "NO, unless AUTOSIZE commands in input", +required: "No", +variability: "constant") %> -**auszTol=*float*** +**auszTol=_float_** -Autosize tolerance. Sized capacity results are deemed final when successive design day calculations produce results within auszTol of the prior iteration. +Autosize tolerance. Sized capacity results are deemed final when successive design day calculations produce results within auszTol of the prior iteration. <%= member_table( - units: "", - legal_range: "", - default: ".005", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: ".005", +required: "No", +variability: "constant") %> -**heatDsTDbO=*float*** +**heatDsTDbO=_float_** Heating outdoor dry bulb design temperature used for autosizing heating equipment. <%= member_table( - units: "^o^F", - legal_range: "", - default: "*none*", - required: "No", - variability: "hourly") %> +units: "^o^F", +legal_range: "", +default: "_none_", +required: "No", +variability: "hourly") %> -**heatDsTWbO=*float*** +**heatDsTWbO=_float_** Heating outdoor design dry bulb temperature used for autosizing heating equipment. <%= member_table( - units: "^o^F", - legal_range: "*x* $\\ge$ 0", - default: "derived assuming RH=.7", - required: "No", - variability: "hourly") %> +units: "^o^F", +legal_range: "_x_ $\\ge$ 0", +default: "derived assuming RH=.7", +required: "No", +variability: "hourly") %> -CSE provides 3 mutually-exclusive methods for specifying cooling design conditions. Each resulting design day is simulated repeatedly until results (e.g. equipment capacities) converge to stable values. Multiple days are typically used to ensure the a range of temperatures and sun positions are considered. +CSE provides 3 mutually-exclusive methods for specifying cooling design conditions. Each resulting design day is simulated repeatedly until results (e.g. equipment capacities) converge to stable values. Multiple days are typically used to ensure the a range of temperatures and sun positions are considered. -- Design conditions. One or more DESCONDs are specified. DESCOND data is used to generate 24 hour design day weather data. -- Design days (from weather file). One or more dates are specified. Actual days from the weather file are simulated. -- Monthly design data. Deprecated method using conditions found in ET1 format weather files. +- Design conditions. One or more DESCONDs are specified. DESCOND data is used to generate 24 hour design day weather data. +- Design days (from weather file). One or more dates are specified. Actual days from the weather file are simulated. +- Monthly design data. Deprecated method using conditions found in ET1 format weather files. -**coolDsCond=*list of up to 12 DESCONDs*** +**coolDsCond=_list of up to 12 DESCONDs_** -Specifies cooling design conditions for cooling autosizing. A comma-separated list of up to 12 DESCOND names can be provided. Each day will be simulated repeatedly using weather conditions generated from DESCOND values. +Specifies cooling design conditions for cooling autosizing. A comma-separated list of up to 12 DESCOND names can be provided. Each day will be simulated repeatedly using weather conditions generated from DESCOND values. <%= member_table( - units: "", - legal_range: "*name of DESCOND*", - default: "*none*", - required: "No", - variability: "constant") %> +units: "", +legal_range: "_name of DESCOND_", +default: "_none_", +required: "No", +variability: "constant") %> -**coolDsDay=*list of up to 12 days*** +**coolDsDay=_list of up to 12 days_** -Specifies cooling design days for cooling autosizing. Each day will be simulated repeatedly using weather file conditions for that day. +Specifies cooling design days for cooling autosizing. Each day will be simulated repeatedly using weather file conditions for that day. <%= member_table( - units: "dates", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +units: "dates", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") %> -**coolDsMo=*list of up to 12 months*** +**coolDsMo=_list of up to 12 months_** -Deprecated method for specifying design days for cooling autosizing. Design conditions are taken from ET1 weather file header, however, the limited availale ET1 files do not contain design condition information. +Deprecated method for specifying design days for cooling autosizing. Design conditions are taken from ET1 weather file header, however, the limited availale ET1 files do not contain design condition information. <%= member_table( - units: "months", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> - +units: "months", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") %> ## TOP Debug Reporting -**verbose=*int*** +**verbose=_int_** Controls verbosity of screen remarks. Most possible remarks are generated during autosizing of CNE models. Little or no effect in CSE models. TODO: document options <%= member_table( - units: "", - legal_range: "0 - 5", - default: "1", - required: "No", - variability: "constant") %> +units: "", +legal_range: "0 - 5", +default: "1", +required: "No", +variability: "constant") %> The following dbgPrintMask values provide bitwise control of addition of semi-formated internal results to the run report file. The values and format of debugging reports are modified as required for testing purposes. -**dbgPrintMaskC=*int*** +**dbgPrintMaskC=_int_** Constant portion of debug reporting control. <%= member_table( - units: "", - legal_range: "", - default: "0", - required: "No", - variability: "constant") %> +units: "", +legal_range: "", +default: "0", +required: "No", +variability: "constant") %> -**dbgPrintMask=*int*** +**dbgPrintMask=_int_** Hourly portion of debug reporting control (generally an expression that evaluates to non-0 only on days or hours of interest). <%= member_table( - units: "", - legal_range: "", - default: "0", - required: "No", - variability: "hourly") %> +units: "", +legal_range: "", +default: "0", +required: "No", +variability: "hourly") %> -**dbgFlag=*int*** +**dbgFlag=_int_** -Allows passing an input value to ad-hoc debugging code. No permanent use; no impact on results. +Allows passing an input value to ad-hoc debugging code. No permanent use; no impact on results. <%= member_table( - units: "", - legal_range: "", - default: "0", - required: "No", - variability: "subhourly") %> +units: "", +legal_range: "", +default: "0", +required: "No", +variability: "subhourly") %> -**doCoverage=*choice*** +**doCoverage=_choice_** -Enables expression code coverage reporting. Development aid. +Enables expression code coverage reporting. Development aid. <%= member_table( - units: "", - legal_range: "NO, YES", - default: "*NO*", - required: "No", - variability: "constant") %> - +units: "", +legal_range: "NO, YES", +default: "_NO_", +required: "No", +variability: "constant") %> **Related Probes:** -- @[top](#p_top) -- @[weatherFile](#p_weatherfile) -- @[weather](#p_weather) -- @[weatherNextHour](#p_weathernexthour) +- @[top][p_top] +- @[weatherFile][p_weatherfile] +- @[weather][p_weather] +- @[weatherNextHour][p_weathernexthour] diff --git a/doc/src/docs/input-data/towerplant.md b/doc/src/docs/input-data/towerplant.md index 08f79d0e4..d1f31b6a7 100644 --- a/doc/src/docs/input-data/towerplant.md +++ b/doc/src/docs/input-data/towerplant.md @@ -14,242 +14,294 @@ There is no provision for scheduling a TOWERPLANT: it operates whenever the heat Name of TOWERPLANT object, given immediately after the word TOWERPLANT to begin the object's input. The name is used to refer to the TOWERPLANT in COOLPLANTs and HPLOOPs. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- +**Units** **Legal Range** **Default** **Required** **Variability** + +--- + *63 characters* Yes constant -**tpTsSp=*float*** +**tpTsSp=_float_** Setpoint temperature for water leaving towers. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 85 No hourly +**Units** **Legal Range** **Default** **Required** **Variability** + +--- + +^o^F _x_ > 0 85 No hourly -**tpMtr=*name of a METER*** +**tpMtr=_name of a METER_** METER object by which TOWERPLANT's fan input energy is to be recorded, in category "Aux". If omitted, energy use is not recorded, and thus cannot be reported. Towerplants have no modeled input energy other than for their fans (the heat rejection pumps are part of the CHILLER and HPLOOP objects). - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ------------- -------------- ----------------- +**Units** **Legal Range** **Default** **Required** **Variability** + +--- + *name of a METER* *none* No constant -**tpStg=*choice*** +**tpStg=_choice_** How tower fans are staged to meet the load: - ----------- ---------------------------------------------------------- - TOGETHER All fans operate at the same speed or cycle on and off - together. +--- + +TOGETHER All fans operate at the same speed or cycle on and off +together. + +LEAD A single "Lead" tower's fan is modulated as required and +as many additional fans as necessary run at their (single) +full speed. - LEAD A single "Lead" tower's fan is modulated as required and - as many additional fans as necessary run at their (single) - full speed. - ----------- ---------------------------------------------------------- +--- Whenever the heat rejection pump in a CHILLER or HPLOOP heat exchanger is on, the water flows through all towers in the TOWERPLANT, regardless of the number of fans operating. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- +**Units** **Legal Range** **Default** **Required** **Variability** + +--- + TOGETHER, LEAD TOGETHER No constant -**ctN=*integer*** +**ctN=_integer_** Number of towers in the TOWERPLANT. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- +**Units** **Legal Range** **Default** **Required** **Variability** + +--- + *x* > 0 1 No constant -**ctType=*choice*** +**ctType=_choice_** -Cooling tower fan control type: ONESPEED, TWOSPEED, or VARIABLE. This applies to all towers under TOGETHER staging. For LEAD staging, *ctType* applies only to the lead tower; additional towers have ONESPEED fans. +Cooling tower fan control type: ONESPEED, TWOSPEED, or VARIABLE. This applies to all towers under TOGETHER staging. For LEAD staging, _ctType_ applies only to the lead tower; additional towers have ONESPEED fans. + +**Units** **Legal Range** **Default** **Required** **Variability** + +--- - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------------ ------------- -------------- ----------------- ONESPEED, TWOSPEED, VARIABLE ONESPEED No constant -**ctLoSpd=*float*** +**ctLoSpd=_float_** Low speed for TWOSPEED fan, as a fraction of full speed cfm. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------- ------------- -------------- ----------------- +**Units** **Legal Range** **Default** **Required** **Variability** + +--- + 0 < *x* $\le$ 1 0.5 No constant -Note: full speed fan cfm is given by *ctVfDs*, below. +Note: full speed fan cfm is given by _ctVfDs_, below. -The rest of the input variables apply to each tower in the group; the towers are identical except for the single-speed fan on non-lead towers when *tpStg* is LEAD. +The rest of the input variables apply to each tower in the group; the towers are identical except for the single-speed fan on non-lead towers when _tpStg_ is LEAD. The following two inputs permit computation of the tower fan electrical energy consumption: -**ctShaftBhp=*float*** +**ctShaftBhp=_float_** Shaft brake horsepower of each tower fan motor. The default value is the sum of the rejected (condenser) heats (including pump heat) at design conditions of the most powerful stage of each connected COOLPLANT, plus the design capacity of each connected HPLOOP heat exchanger, all divided by 290,000 and by the number of cooling towers in the TOWERPLANT. - **Units** **Lgl Range** **Default** **Req'd** **Variability** - ----------- --------------- ----------------------------- ----------- ----------------- - Bhp *x* > 0 (sum of loads)/290000/*cTn* No constant +**Units** **Lgl Range** **Default** **Req'd** **Variability** -**ctMotEff=*float*** +--- + +Bhp _x_ > 0 (sum of loads)/290000/_cTn_ No constant + +**ctMotEff=_float_** Motor (and drive, if any) efficiency for tower fans. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- +**Units** **Legal Range** **Default** **Required** **Variability** + +--- + *x* > 0 .88 No constant The next four items specify the coefficients of polynomial curves relating fan power consumption to average speed (cfm) for the various fan types. For the non-variable speed cases CSE uses linear polynomials of the form $$p = a + b \cdot \text{spd}$$ -where *p* is the power consumption as a fraction of full speed power consumption, and *spd* is the average speed as a fraction of full speed. The linear relationship reflects the fact that the fans cycle to match partial loads. A non-0 value may be given for the constant part *a* to reflect start-stop losses. For the two speed fan, separate polynomials are used for low and high speed operation; the default coefficients assume power input varies with the cube of speed, that is, at low speed (*ctLoSpd*) the relative power input is *ctLoSpd3*. For the variable speed case a cubic polynomial is used. +where _p_ is the power consumption as a fraction of full speed power consumption, and _spd_ is the average speed as a fraction of full speed. The linear relationship reflects the fact that the fans cycle to match partial loads. A non-0 value may be given for the constant part _a_ to reflect start-stop losses. For the two speed fan, separate polynomials are used for low and high speed operation; the default coefficients assume power input varies with the cube of speed, that is, at low speed (_ctLoSpd_) the relative power input is _ctLoSpd3_. For the variable speed case a cubic polynomial is used. -For each linear polynomial, two *float* expressions are given, separated by a comma. The first expression is the constant, *a*. The second expression is the coefficient of the average speed, *b*. Except for *ctFcLo*, *a* and *b* should add up to 1, to make the relative power consumption 1 when *spd* is 1; otherwise, CSE will issue a warning message and normalize them. +For each linear polynomial, two _float_ expressions are given, separated by a comma. The first expression is the constant, _a_. The second expression is the coefficient of the average speed, _b_. Except for _ctFcLo_, _a_ and _b_ should add up to 1, to make the relative power consumption 1 when _spd_ is 1; otherwise, CSE will issue a warning message and normalize them. -**ctFcOne=*a, b*** +**ctFcOne=_a, b_** -Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for ONESPEED fan. For the one-speed case, the relative average speed *spd* is the fraction of the time the fan is on. +Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for ONESPEED fan. For the one-speed case, the relative average speed _spd_ is the fraction of the time the fan is on. + +**Units** **Legal Range** **Default** **Required** **Variability** + +--- - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- *a + b = 1.0* 0, 1 No constant -**ctFcLo=*a, b*** +**ctFcLo=_a, b_** + +Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for low speed of TWOSPEED fan, when _spd_ $\le$ _ctLoSpd_. + +**Units** **Legal Range** **Default** **Required** **Variability** -Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for low speed of TWOSPEED fan, when *spd* $\le$ *ctLoSpd*. +--- - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ----------------- -------------- ----------------- *a + b = 1.0* 0, *ctLoSpd^2^* No constant -**ctFcHi=*a, b*** +**ctFcHi=_a, b_** -Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for high speed of TWOSPEED fan, when *spd* > *ctLoSpd*. +Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for high speed of TWOSPEED fan, when _spd_ > _ctLoSpd_. + +**Units** **Legal Range** **Default** **Required** **Variability** + +--- - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- --------------------------------------------------- -------------- ----------------- *a + b = 1.0* *-ctLoSpd^2^ - ctLoSpd, ctLoSpd^2^ + ctLoSpd + 1* No constant -**ctFcVar=*a, b, c, d*** +**ctFcVar=_a, b, c, d_** + +For VARIABLE speed fan, four _float_ values for coefficients of cubic fan power consumption polynomial of the form $p = a + b \cdot \text{spd} + c \cdot \text{spd}^2 + d \cdot \text{spd}^3$. + +**Units** **Legal Range** **Default** **Required** **Variability** -For VARIABLE speed fan, four *float* values for coefficients of cubic fan power consumption polynomial of the form $p = a + b \cdot \text{spd} + c \cdot \text{spd}^2 + d \cdot \text{spd}^3$. +--- - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- *a + b + c + d = 1.0* 0, 0, 0, 1 No constant The next six items specify the tower performance under one set of conditions, the "design conditions". The conditions should be chosen to be representative of full load operating conditions. -**ctCapDs=*float*** +**ctCapDs=_float_** Design capacity: amount of heat extracted from water under design conditions by one tower. The default value is the sum of the rejected (condenser) heats (including pump heat) at design conditions of the most powerful stage of each connected COOLPLANT, plus the design capacity of each connected HPLOOP heat exchanger, all divided by the number of towers. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ---------------------- -------------- ----------------- - Btuh *x* $\neq$ 0 (sum of loads)/*ctN* No constant +**Units** **Legal Range** **Default** **Required** **Variability** -**ctVfDs=*float*** +--- + +Btuh _x_ $\neq$ 0 (sum of loads)/_ctN_ No constant + +**ctVfDs=_float_** Design air flow, per tower; also the fan full-speed cfm specification. -The default value is the sum of the loads (computed as for *ctCapDs*, just above) divided by 51, divided by the number of cooling towers. +The default value is the sum of the loads (computed as for _ctCapDs_, just above) divided by 51, divided by the number of cooling towers. + +**Units** **Legal Range** **Default** **Required** **Variability** + +--- - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------- -------------- ----------------- - cfm *x* > 0 (sum of loads)/51/*ctN* No constant +cfm _x_ > 0 (sum of loads)/51/_ctN_ No constant -**ctGpmDs=*float*** +**ctGpmDs=_float_** Design water flow, per tower. The default is the sum of the flows of the connected heat rejection pumps, using the largest stage for COOLPLANTs, divided by the number of towers. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ---------------------- -------------- ----------------- - gpm *x* > 0 (sum of pumps)/*ctN* No constant +**Units** **Legal Range** **Default** **Required** **Variability** -**ctTDbODs=*float*** +--- -Design outdoor drybulb temperature (needed to convert *ctVfDs* from cfm to lb/hr). +gpm _x_ > 0 (sum of pumps)/_ctN_ No constant - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 93.5 No constant +**ctTDbODs=_float_** -**ctTWbODs=*float*** +Design outdoor drybulb temperature (needed to convert _ctVfDs_ from cfm to lb/hr). + +**Units** **Legal Range** **Default** **Required** **Variability** + +--- + +^o^F _x_ > 0 93.5 No constant + +**ctTWbODs=_float_** Design outdoor wetbulb temperature. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 78 No constant +**Units** **Legal Range** **Default** **Required** **Variability** -**ctTwoDs=*float*** +--- + +^o^F _x_ > 0 78 No constant + +**ctTwoDs=_float_** Design leaving water temperature. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 85 No constant +**Units** **Legal Range** **Default** **Required** **Variability** + +--- + +^o^F _x_ > 0 85 No constant -The following six items allow optional specification of tower performance under another set of conditions, the "off design" conditions. If given, they allow CSE to compute the tower's relation between flows and heat transfer; in this case, *ctK* (below) may not be given. +The following six items allow optional specification of tower performance under another set of conditions, the "off design" conditions. If given, they allow CSE to compute the tower's relation between flows and heat transfer; in this case, _ctK_ (below) may not be given. -**ctCapOd=*float*** +**ctCapOd=_float_** Off-design capacity, per tower. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ---------------------- -------------- ----------------- - Btuh *x* $\neq$ 0 (sum of loads)/*ctN* No constant +**Units** **Legal Range** **Default** **Required** **Variability** -**ctVfOd=*float*** +--- -Off-design air flow, per tower. Must differ from design air flow; thus *ctVfDs* and *ctVfOd* cannot both be defaulted if off-design conditions are being given. The off-design air and water flows must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. +Btuh _x_ $\neq$ 0 (sum of loads)/_ctN_ No constant - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------------------- ------------------------- -------------- ----------------- - cfm *x* > 0; *x* $\neq$ *ctVfDs* (sum of loads)/51/*ctN* No constant +**ctVfOd=_float_** -**ctGpmOd=*float*** +Off-design air flow, per tower. Must differ from design air flow; thus _ctVfDs_ and _ctVfOd_ cannot both be defaulted if off-design conditions are being given. The off-design air and water flows must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. + +**Units** **Legal Range** **Default** **Required** **Variability** + +--- + +cfm _x_ > 0; _x_ $\neq$ _ctVfDs_ (sum of loads)/51/_ctN_ No constant + +**ctGpmOd=_float_** Off-design water flow, per tower. Must differ from design water flow; thus, both cannot be defaulted if off-design conditions are being given. Value must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------------------- ---------------------- -------------- ----------------- - gpm *x* > 0; *x* $\neq$ *ctGpmDs* (sum of pumps)/*ctN* No constant +**Units** **Legal Range** **Default** **Required** **Variability** -**ctTDbOOd=*float*** +--- + +gpm _x_ > 0; _x_ $\neq$ _ctGpmDs_ (sum of pumps)/_ctN_ No constant + +**ctTDbOOd=_float_** Off-design outdoor drybulb temperature. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 93.5 No constant +**Units** **Legal Range** **Default** **Required** **Variability** + +--- + +^o^F _x_ > 0 93.5 No constant -**ctTWbOOd=*float*** +**ctTWbOOd=_float_** Off-design outdoor wetbulb temperature. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 78 No constant +**Units** **Legal Range** **Default** **Required** **Variability** -**ctTwoOd=*float*** +--- + +^o^F _x_ > 0 78 No constant + +**ctTwoOd=_float_** Off-design leaving water temperature. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 85 No constant +**Units** **Legal Range** **Default** **Required** **Variability** + +--- + +^o^F _x_ > 0 85 No constant The following item allows explicit specification of the relationship between flows and heat transfer, when the preceding "off design" inputs are not given. If omitted, it will be computed from the "off design" inputs if given, else the default value of 0.4 will be used. -**ctK=*float*** +**ctK=_float_** Optional. Exponent in the formula @@ -257,52 +309,64 @@ $$\text{ntuA} = k \cdot (mwi/ma)^{ctK}$$ where ntuA is the number of transfer units on the air side, mwi and ma are the water and air flows respectively, and k is a constant. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------------------------------- -------------- ----------------- +**Units** **Legal Range** **Default** **Required** **Variability** + +--- + 0 < *x* < 1 *from "Od" members if given, else* 0.4 No constant -**ctStkFlFr=*float*** +**ctStkFlFr=_float_** + +Fraction of air flow which occurs when tower fan is off, due to stack effect (convection). Cooling due to this air flow occurs in all towers whenever the water flow is on, and may, by itself, cool the water below the setpoint _tpTsSp_. Additional flow, when fan is on, is proportional to fan speed. + +**Units** **Legal Range** **Default** **Required** **Variability** -Fraction of air flow which occurs when tower fan is off, due to stack effect (convection). Cooling due to this air flow occurs in all towers whenever the water flow is on, and may, by itself, cool the water below the setpoint *tpTsSp*. Additional flow, when fan is on, is proportional to fan speed. +--- - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- 0 $\le$ *x* $\le$ 1 .18 No constant The following items allow CSE to compute the effect of makeup water on the leaving water temperature. -**ctBldn=*float*** +**ctBldn=_float_** Blowdown rate: fraction of inflowing water that is bled from the sump down the drain, to reduce the buildup of impurities that don't evaporate. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- +**Units** **Legal Range** **Default** **Required** **Variability** + +--- + 0 $\le$ *x* $\le$ 1 .01 No constant -**ctDrft=*float*** +**ctDrft=_float_** Drift rate: fraction of inflowing water that is blown out of tower as droplets without evaporating. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- +**Units** **Legal Range** **Default** **Required** **Variability** + +--- + 0 $\le$ *x* $\le$ 1 0 No constant -**ctTWm=*float*** +**ctTWm=_float_** Temperature of makeup water from mains, used to replace water lost by blowdown, drift, and evaporation. Blowdown and drift are given by the preceding two inputs; evaporation is computed. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 60 No constant +**Units** **Legal Range** **Default** **Required** **Variability** + +--- + +^o^F _x_ > 0 60 No constant **endTowerplant** Optionally indicates the end of the TOWERPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- +**Units** **Legal Range** **Default** **Required** **Variability** + +--- + *N/A* No constant **Related Probes:** -- @[towerPlant](#p_towerplant) +- @[towerPlant][p_towerplant] diff --git a/doc/src/docs/input-data/window.md b/doc/src/docs/input-data/window.md index ef0c1b9cf..87b2364cb 100644 --- a/doc/src/docs/input-data/window.md +++ b/doc/src/docs/input-data/window.md @@ -1,6 +1,6 @@ # WINDOW -WINDOW defines a subobject belonging to the current SURFACE that represents one or more identical windows. The azimuth, tilt, and exterior conditions of the window are the same as those of the surface to which it belongs. The total window area (*wnHt* $\cdot$ *wnWid* $\cdot$ *wnMult*) is deducted from the gross surface area. A surface may have any number of windows. +WINDOW defines a subobject belonging to the current SURFACE that represents one or more identical windows. The azimuth, tilt, and exterior conditions of the window are the same as those of the surface to which it belongs. The total window area (_wnHt_ $\cdot$ _wnWid_ $\cdot$ _wnMult_) is deducted from the gross surface area. A surface may have any number of windows. Windows may optionally have operable interior shading that reduces the overall shading coefficient when closed. @@ -9,78 +9,78 @@ Windows may optionally have operable interior shading that reduces the overall s Name of window: follows the word "WINDOW" if given. <%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "_63 characters_", +default: "_none_", +required: "No", +variability: "constant") +%> -**wnHeight=*float*** +**wnHeight=_float_** Overall height of window (including frame). <%= member_table( - units: "ft", - legal_range: "x $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> +units: "ft", +legal_range: "x $>$ 0", +default: "_none_", +required: "Yes", +variability: "constant") +%> -**wnWidth=*float*** +**wnWidth=_float_** Overall width of window (including frame). <%= member_table( - units: "ft", - legal_range: "x $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> +units: "ft", +legal_range: "x $>$ 0", +default: "_none_", +required: "Yes", +variability: "constant") +%> -**wnArea=*float*** +**wnArea=_float_** Overall area of window (including frame). <%= member_table( - units: "ft^2^", - legal_range: "x $>$ 0", - default: "*wnHeight* \* *wnWidth*", - required: "No", - variability: "constant") - %> +units: "ft^2^", +legal_range: "x $>$ 0", +default: "_wnHeight_ \* _wnWidth_", +required: "No", +variability: "constant") +%> -**wnMult=*float*** +**wnMult=_float_** Area multiplier; can be used to represent multiple identical windows. <%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "1", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "x $>$ 0", +default: "1", +required: "No", +variability: "constant") +%> -**wnModel=*choice*** +**wnModel=_choice_** Selects window model <%= member_table( - units: "", - legal_range: "SHGC, ASHWAT", - default: "SHGC", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "SHGC, ASHWAT", +default: "SHGC", +required: "No", +variability: "constant") +%> -**wnGt=*choice*** +**wnGt=_choice_** GLAZETYPE for window. Provides many defaults for window properties as cited below. -**wnU=*float*** +**wnU=_float_** Window conductance (U-factor without surface films, therefore not actually a U-factor but a C-factor). @@ -93,50 +93,50 @@ Where 0.85 is the sum of the interior (0.68) and exterior (0.17) design air film Approach 2. Enter wnU=U-factor and let the wnInH and wnExH default. Tnormally this approach systematically underestimates the window U-factor because it adds the wnExfilm resistance to 1/U-factor thereby double counting the exterior film resistance. This approach will also yield incorrect results for gnFrad internal gain since the high wnInH will put almost all the gain back in the space. <%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "x $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> +units: "Btuh/ft^2^-^o^F", +legal_range: "x $>$ 0", +default: "_none_", +required: "Yes", +variability: "constant") +%> -**wnUNFRC=*float*** +**wnUNFRC=_float_** Fenestration system (including frame) U-factor evaluated at NFRC heating conditions. <%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "x $>$ 0", - default: "gtUNFRC", - required: "Required when *wnModel* = ASHWAT", - variability: "constant") - %> +units: "Btuh/ft^2^-^o^F", +legal_range: "x $>$ 0", +default: "gtUNFRC", +required: "Required when _wnModel_ = ASHWAT", +variability: "constant") +%> -**wnExEpsLW=*float*** +**wnExEpsLW=_float_** Window exterior long wave (thermal) emittance. <%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.84", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.84", +required: "No", +variability: "constant") +%> -**wnInEpsLW=*float*** +**wnInEpsLW=_float_** Window interior long wave (thermal) emittance. <%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.84", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.84", +required: "No", +variability: "constant") +%> -**wnInH=*float*** +**wnInH=_float_** Window interior surface (air film) conductance. @@ -149,244 +149,244 @@ Preferred Approach: Enter the appropriate value for each window, normally: The large default value of 10,000 represents a near-0 resistance, for the convenience of those who wish to include the interior surface film in wnU according to approach 2 above. <%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "x $>$ 0", - default: "10000", - required: "No", - variability: "constant") - %> +units: "Btuh/ft^2^-^o^F", +legal_range: "x $>$ 0", +default: "10000", +required: "No", +variability: "constant") +%> -**wnExH=*float*** +**wnExH=_float_** Window exterior surface (air film) conductance. <%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "x $>$ 0", - default: "same as owning surface", - required: "No", - variability: "constant") - %> +units: "Btuh/ft^2^-^o^F", +legal_range: "x $>$ 0", +default: "same as owning surface", +required: "No", +variability: "constant") +%> -Several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on wnExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. +Several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on wnExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. <%= csv_table(< true) Model, Exposed to ambient, Exposed to zone -UNIFIED, default CSE model, default CSE model -INPUT , hc = wnExHcMult, hc = wnxxHcMult -AKBARI , Akbari model, n/a -WALTON , Walton model, n/a -WINKELMANN, Winkelmann model, n/a -MILLS , n/a , Mills model -ASHRAE , n/a , ASHRAE handbook values +UNIFIED, default CSE model, default CSE model +INPUT , hc = wnExHcMult, hc = wnxxHcMult +AKBARI , Akbari model, n/a +WALTON , Walton model, n/a +WINKELMANN, Winkelmann model, n/a +MILLS , n/a , Mills model +ASHRAE , n/a , ASHRAE handbook values END %> -**wnExHcModel=*choice*** +**wnExHcModel=_choice_** -Selects the model used for exterior surface convection when wnModel = Forward\_Difference. +Selects the model used for exterior surface convection when wnModel = Forward_Difference. <%= member_table( - units: "", - legal_range: "*choices above*", - default: "UNIFIED", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "_choices above_", +default: "UNIFIED", +required: "No", +variability: "constant") +%> -**wnExHcLChar=*float*** +**wnExHcLChar=_float_** Characteristic length of surface, used in derivation of forced exterior convection coefficients in some models when outside face is exposed to ambient (i.e. to wind). <%= member_table( - units: "ft", - legal_range: "x $>$ 0", - default: "10", - required: "No", - variability: "constant") - %> +units: "ft", +legal_range: "x $>$ 0", +default: "10", +required: "No", +variability: "constant") +%> -**wnExHcMult=*float*** +**wnExHcMult=_float_** -Exterior convection coefficient adjustment factor. When wnExHcModel=INPUT, hc=wnExHcMult. For other wnExHcModel choices, the model-derived hc is multiplied by wnExHcMult. +Exterior convection coefficient adjustment factor. When wnExHcModel=INPUT, hc=wnExHcMult. For other wnExHcModel choices, the model-derived hc is multiplied by wnExHcMult. <%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "1", - required: "No", - variability: "subhourly") - %> +units: "", +legal_range: "x $\\ge$ 0", +default: "1", +required: "No", +variability: "subhourly") +%> -**wnInHcModel=*choice*** +**wnInHcModel=_choice_** -Selects the model used for the inside (zone) surface convection when wnModel = Forward\_Difference. +Selects the model used for the inside (zone) surface convection when wnModel = Forward_Difference. <%= member_table( - units: "", - legal_range: "*choices above (see wnExHcModel)*", - default: "UNIFIED", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "_choices above (see wnExHcModel)_", +default: "UNIFIED", +required: "No", +variability: "constant") +%> -**wnInHcMult=*float*** +**wnInHcMult=_float_** -Interior convection coefficient adjustment factor. When wnInHcModel=INPUT, hc=wnInHcMult. For other wnInHcModel choices, the model-derived hc is multiplied by wnInHcMult. +Interior convection coefficient adjustment factor. When wnInHcModel=INPUT, hc=wnInHcMult. For other wnInHcModel choices, the model-derived hc is multiplied by wnInHcMult. <%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "1", - required: "No", - variability: "subhourly") - %> +units: "", +legal_range: "x $\\ge$ 0", +default: "1", +required: "No", +variability: "subhourly") +%> -**wnSHGC=*float*** +**wnSHGC=_float_** Rated Solar Heat Gain Coefficient (SHGC) for the window assembly. <%= member_table( - units: "fraction", - legal_range: "0 < x < 1", - default: "gtSHGC", - required: "No", - variability: "constant") - %> +units: "fraction", +legal_range: "0 < x < 1", +default: "gtSHGC", +required: "No", +variability: "constant") +%> -**wnFMult=*float*** +**wnFMult=_float_** Frame area multiplier = areaGlaze / areaAssembly <%= member_table( - units: "fraction", - legal_range: "0 < x < 1", - default: "gtFMult or 1", - required: "No", - variability: "constant") - %> +units: "fraction", +legal_range: "0 < x < 1", +default: "gtFMult or 1", +required: "No", +variability: "constant") +%> -**wnSMSO=*float*** +**wnSMSO=_float_** SHGC multiplier with shades open. Overrides gtSMSO. <%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "gtSMSO or 1", - required: "No", - variability: "Monthly - Hourly") - %> +units: "fraction", +legal_range: "0 $\\leq$ _x_ $\\leq$ 1", +default: "gtSMSO or 1", +required: "No", +variability: "Monthly - Hourly") +%> -**wnSMSC=*float*** +**wnSMSC=_float_** SHGC multiplier with shades closed. Overrides gtSMSC <%= member_table( - units: "fraction", - legal_range: "0 $\leq$ *x* $\leq$ 1", - default: "wnSMSO or gtSMSC", - required: "No", - variability: "Monthly - Hourly") - %> +units: "fraction", +legal_range: "0 $\leq$ _x_ $\leq$ 1", +default: "wnSMSO or gtSMSC", +required: "No", +variability: "Monthly - Hourly") +%> -**wnNGlz=*int*** +**wnNGlz=_int_** Number of glazings in the window (bare glass only, not including any interior or exterior shades). <%= member_table( - units: "", - legal_range: "0 $<$ *x* $\leq$ 4", - default: "gtNGLZ", - required: "Required when *wnModel* = ASHWAT", - variability: "constant") - %> +units: "", +legal_range: "0 $<$ _x_ $\leq$ 4", +default: "gtNGLZ", +required: "Required when _wnModel_ = ASHWAT", +variability: "constant") +%> -**wnExShd=*choice*** +**wnExShd=_choice_** Exterior shading type (ASHWAT only). <%= member_table( - units: "", - legal_range: "NONE, INSCRN", - default: "gtExShd", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "NONE, INSCRN", +default: "gtExShd", +required: "No", +variability: "constant") +%> -**wnInShd=*choice*** +**wnInShd=_choice_** Interior shade type (ASHWAT only). <%= member_table( - units: "", - legal_range: "NONE, DRAPEMED", - default: "gtInShd", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "NONE, DRAPEMED", +default: "gtInShd", +required: "No", +variability: "constant") +%> -**wnDirtLoss=*float*** +**wnDirtLoss=_float_** Glazing dirt loss factor. <%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "fraction", +legal_range: "0 $\\leq$ _x_ $\\leq$ 1", +default: "_none_", +required: "No", +variability: "constant") +%> -**wnGrndRefl=*float*** +**wnGrndRefl=_float_** Ground reflectivity for this window. <%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "sfGrndRefl", - required: "No", - variability: "Monthly - Hourly") - %> +units: "fraction", +legal_range: "0 $\\leq$ _x_ $\\leq$ 1", +default: "sfGrndRefl", +required: "No", +variability: "Monthly - Hourly") +%> -**wnVfSkyDf=*float*** +**wnVfSkyDf=_float_** View factor from this window to sky for diffuse radiation. For the shading effects of an overhang, a wnVfSkyDf value smaller than the default would be used <%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ x $\\leq$ 1", - default: "0.5 - 0.5 cos(tilt) = .5 for vertical surface", - required: "No", - variability: "Monthly - Hourly") - %> +units: "fraction", +legal_range: "0 $\\leq$ x $\\leq$ 1", +default: "0.5 - 0.5 cos(tilt) = .5 for vertical surface", +required: "No", +variability: "Monthly - Hourly") +%> -**wnVfGrndDf=*float*** +**wnVfGrndDf=_float_** View factor from this window to ground for diffuse radiation. For the shading effects of a fin(s), both wnVfSkyDf and wnVfGrndDf would be used. <%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ x $\\leq$ 1", - default: "0.5 + 0.5 .5 for vertical surface", - required: "No", - variability: "Monthly - Hourly") - %> +units: "fraction", +legal_range: "0 $\\leq$ x $\\leq$ 1", +default: "0.5 + 0.5 .5 for vertical surface", +required: "No", +variability: "Monthly - Hourly") +%> **endWINDOW** Optionally indicates the end of the window definition. Alternatively, the end of the window definition can be indicated by END or the declaration of another object. END or endWindow, if used, should follow any subobjects of the window (SHADEs and/or SGDISTs). <%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") +%> **Related Probes:** -- @[window](#p_window) -- @[xsurf](#p_xsurf) +- @[window][p_window] +- @[xsurf][p_xsurf] diff --git a/doc/src/docs/input-data/zone.md b/doc/src/docs/input-data/zone.md index 39bbd6ac4..2ed208062 100644 --- a/doc/src/docs/input-data/zone.md +++ b/doc/src/docs/input-data/zone.md @@ -8,412 +8,412 @@ ZONE constructs an object of class ZONE, which describes an area of the building Name of zone. Enter after the word ZONE; no "=" is used. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +<%= member*table( +units: "", +legal_range: "\_63 characters*", +default: "_none_", +required: "Yes", +variability: "constant") +%> -**znModel=*choice*** +**znModel=_choice_** Selects model for zone. <%= csv_table(< false) -CNE, Older central difference model based on original CALPAS methods. Not fully supported and not suitable for current compliance applications. +CNE, Older central difference model based on original CALPAS methods. Not fully supported and not suitable for current compliance applications. CZM, Conditioned zone model. Forward-difference, short time step methods are used. UZM, Unconditioned zone model. Identical to CZM except heating and cooling are not supported. Typically used for attics, garages, and other ancillary spaces. END %> -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "CNE", - required: "No", - variability: "constant") - %> +<%= member*table( +units: "", +legal_range: "\_choices above*", +default: "CNE", +required: "No", +variability: "constant") +%> -**znArea=*float*** +**znArea=_float_** Nominal zone floor area. -<%= member_table( - units: "ft^2^", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> +<%= member*table( +units: "ft^2^", +legal_range: "\_x* $>$ 0", +default: "_none_", +required: "Yes", +variability: "constant") +%> -**znVol=*float*** +**znVol=_float_** Nominal zone volume. -<%= member_table( - units: "ft^3^", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> +<%= member*table( +units: "ft^3^", +legal_range: "\_x* $>$ 0", +default: "_none_", +required: "Yes", +variability: "constant") +%> -**znAzm=*float*** +**znAzm=_float_** Zone azimuth with respect to bldgAzm. All surface azimuths are relative to znAzm, so that the zone can be rotated by changing this member only. Values outside the range 0^o^ to 360^o^ are normalized to that range. <%= member_table( - units: "degrees", - legal_range: "unrestricted", - default: "0", - required: "No", - variability: "constant") - %> +units: "degrees", +legal_range: "unrestricted", +default: "0", +required: "No", +variability: "constant") +%> -**znFloorZ=*float*** +**znFloorZ=_float_** Nominal zone floor height relative to arbitrary 0 level. Used re determination of vent heights <%= member_table( - units: "ft", - legal_range: "unrestricted", - default: "0", - required: "No", - variability: "constant") - %> +units: "ft", +legal_range: "unrestricted", +default: "0", +required: "No", +variability: "constant") +%> -**znCeilingHt=*float*** +**znCeilingHt=_float_** Nominal zone ceiling height relative to zone floor (typically 8 – 10 ft). -<%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "*znVol* / *znArea*", - required: "No", - variability: "constant") - %> +<%= member*table( +units: "ft", +legal_range: "\_x* $>$ 0", +default: "_znVol_ / _znArea_", +required: "No", +variability: "constant") +%> -**znEaveZ=*float*** +**znEaveZ=_float_** Nominal eave height above ground level. Used re calculation of local surface wind speed. This in turn influences outside convection coefficients in some surface models and wind-driven air leakage. -<%= member_table( - units: "ft", - legal_range: "x $>$ 0", - default: "*znFloorZ + infStories\*8*", - required: "No", - variability: "constant") - %> +<%= member*table( +units: "ft", +legal_range: "x $>$ 0", +default: "\_znFloorZ + infStories\*8*", +required: "No", +variability: "constant") +%> -**znCAir=*float*** +**znCAir=_float_** Zone "air" heat capacity: represents heat capacity of air, furniture, "light" walls, and everything in zone except surfaces having heat capacity (that is, non-QUICK surfaces). -<%= member_table( - units: "Btu/^o^F", - legal_range: "x $\\geq$ 0", - default: "3.5 \* *znArea*", - required: "No", - variability: "constant") - %> +<%= member*table( +units: "Btu/^o^F", +legal_range: "x $\\geq$ 0", +default: "3.5 \* \_znArea*", +required: "No", +variability: "constant") +%> -**znHcAirX=*float*** +**znHcAirX=_float_** -Zone air exchange rate used in determination of interior surface convective coefficients. This item is generally used only for model testing. +Zone air exchange rate used in determination of interior surface convective coefficients. This item is generally used only for model testing. <%= member_table( - units: "ACH", - legal_range: "x $>$ 0", - default: "as modeled", - required: "No", - variability: "subhourly") - %> +units: "ACH", +legal_range: "x $>$ 0", +default: "as modeled", +required: "No", +variability: "subhourly") +%> -**znHcFrcF=*float*** +**znHcFrcF=_float_** -Zone surface forced convection factor. Interior surface convective transfer is modeled as a combination of forced and natural convection. hcFrc = znHcFrcF * znHcAirX^.8. See CSE Engineering Documentation. +Zone surface forced convection factor. Interior surface convective transfer is modeled as a combination of forced and natural convection. hcFrc = znHcFrcF \* znHcAirX^.8. See CSE Engineering Documentation. <%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: ".2", - default: ".2", - required: "No", - variability: "hourly") - %> +units: "Btuh/ft^2^-^o^F", +legal_range: ".2", +default: ".2", +required: "No", +variability: "hourly") +%> -**znHIRatio=*float*** +**znHIRatio=_float_** -Zone hygric inertia ratio. In zone moisture balance calculations, the effective dry-air mass = znHIRatio * (zone dry air mass). This enhancement can be used to represente the moisture storage capacity of zone surfaces and contents. +Zone hygric inertia ratio. In zone moisture balance calculations, the effective dry-air mass = znHIRatio \* (zone dry air mass). This enhancement can be used to represente the moisture storage capacity of zone surfaces and contents. <%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "1", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "x $>$ 0", +default: "1", +required: "No", +variability: "constant") +%> -**znSC=*float*** +**znSC=_float_** -Zone shade closure. Determines insolation through windows (see WINDOW members *wnSCSO* and *wnSCSC*) and solar gain distribution: see SGDIST members *sgFSO* and *sgFSC*. 0 represents shades open; 1 represents shades closed; intermediate values are allowed. An hourly variable CSE expression may be used to schedule shade closure as a function of weather, time of year, previous interval HVAC use or zone temperature, etc. +Zone shade closure. Determines insolation through windows (see WINDOW members _wnSCSO_ and _wnSCSC_) and solar gain distribution: see SGDIST members _sgFSO_ and _sgFSC_. 0 represents shades open; 1 represents shades closed; intermediate values are allowed. An hourly variable CSE expression may be used to schedule shade closure as a function of weather, time of year, previous interval HVAC use or zone temperature, etc. -<%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "1 when cooling was used in *previous* hour, else 0", - required: "No", - variability: "hourly") - %> +<%= member*table( +units: "", +legal_range: "0 $\\leq$ \_x* $\\leq$ 1", +default: "1 when cooling was used in _previous_ hour, else 0", +required: "No", +variability: "hourly") +%> -**znTH=*float*** +**znTH=_float_** Heating set point used (and required) when znModel=CZM and zone has no terminals. -<%= member_table( - units: "^o^F", - legal_range: "0 < znTH < znTC", - default: "*none*", - required: "Per above", - variability: "subhourly") - %> +<%= member*table( +units: "^o^F", +legal_range: "0 < znTH < znTC", +default: "\_none*", +required: "Per above", +variability: "subhourly") +%> -**znTD=*float*** +**znTD=_float_** -Desired set point (temperature maintained with ventilation if possible) for znModel=CZM. Must be specified when zone ventilation is active. +Desired set point (temperature maintained with ventilation if possible) for znModel=CZM. Must be specified when zone ventilation is active. -<%= member_table( - units: "^o^F", - legal_range: "x > 0; znTH < znTD < znTC", - default: "*none*", - required: "if venting", - variability: "subhourly") - %> +<%= member*table( +units: "^o^F", +legal_range: "x > 0; znTH < znTD < znTC", +default: "\_none*", +required: "if venting", +variability: "subhourly") +%> -**znTC=*float*** +**znTC=_float_** Cooling set point used (and required) when znModel=CZM and zone has no terminals. -<%= member_table( - units: "^o^F", - legal_range: "0 < znTC > znTH", - default: "*none*", - required: "Per above", - variability: "subhourly") - %> +<%= member*table( +units: "^o^F", +legal_range: "0 < znTC > znTH", +default: "\_none*", +required: "Per above", +variability: "subhourly") +%> -znModel = CZM zone heating and cooling is provided either via an RSYS HVAC system, by "magic" heat transfers specified by znQxxx items, or via TERMINAL (s). One of these must be defined. +znModel = CZM zone heating and cooling is provided either via an RSYS HVAC system, by "magic" heat transfers specified by znQxxx items, or via TERMINAL (s). One of these must be defined. -**znRSys=*rsysName*** +**znRSys=_rsysName_** Name of RSYS providing heating, cooling, and optional central fan integrated ventilation to this zone. -<%= member_table( - units: "", - legal_range: "*RSYS name*", - default: "(no RSYS)", - required: "No", - variability: "constant") - %> +<%= member*table( +units: "", +legal_range: "\_RSYS name*", +default: "(no RSYS)", +required: "No", +variability: "constant") +%> -**znQMxH=*float*** +**znQMxH=_float_** Heating capacity at current conditions -<%= member_table( - units: "Btuh", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "No", - variability: "hourly") - %> +<%= member*table( +units: "Btuh", +legal_range: "x $\\geq$ 0", +default: "\_none*", +required: "No", +variability: "hourly") +%> -**znQMxHRated=*float*** +**znQMxHRated=_float_** Rated heating capacity -<%= member_table( - units: "Btuh", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "No", - variability: "constant") - %> +<%= member*table( +units: "Btuh", +legal_range: "x $\\geq$ 0", +default: "\_none*", +required: "No", +variability: "constant") +%> -**znQMxC=*float*** +**znQMxC=_float_** Cooling capacity at current conditions -<%= member_table( - units: "Btuh", - legal_range: "x $\\leq$ 0", - default: "*none*", - required: "No", - variability: "hourly") - %> +<%= member*table( +units: "Btuh", +legal_range: "x $\\leq$ 0", +default: "\_none*", +required: "No", +variability: "hourly") +%> -**znQMxCRated=*float*** +**znQMxCRated=_float_** Rated cooling capacity -<%= member_table( - units: "Btuh", - legal_range: "x $\\leq$ 0", - default: "*none*", - required: "No", - variability: "constant") - %> +<%= member*table( +units: "Btuh", +legal_range: "x $\\leq$ 0", +default: "\_none*", +required: "No", +variability: "constant") +%> <% if comfort_model %> The following provide parameters for comfort calculations -**znComfClo=*float*** +**znComfClo=_float_** Occupant clothing resistance, used only when a comfort model is enabled. -<%= member_table( - units: "clo", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "No", - variability: "subhourly") - %> +<%= member*table( +units: "clo", +legal_range: "x $\\geq$ 0", +default: "\_none*", +required: "No", +variability: "subhourly") +%> -**znComfMet=*float*** +**znComfMet=_float_** Occupant metabolic rate, used only when a comfort model is enabled. -<%= member_table( - units: "met", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "No", - variability: "hourly") - %> +<%= member*table( +units: "met", +legal_range: "x $\\geq$ 0", +default: "\_none*", +required: "No", +variability: "hourly") +%> -**znComfAirV=*float*** +**znComfAirV=_float_** Nominal air velocity used for comfort model, used only when a comfort model is enabled. -<%= member_table( - units: "", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "No", - variability: "Hourly") - %> +<%= member*table( +units: "", +legal_range: "x $\\geq$ 0", +default: "\_none*", +required: "No", +variability: "Hourly") +%> -**znComfRh=*float*** +**znComfRh=_float_** Nominal zone relative humidity used for comfort model, used only when a comfort model is enabled. -<%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "*none*", - required: "No", - variability: "hourly") - %> +<%= member*table( +units: "", +legal_range: "0 $\\leq$ \_x* $\\leq$ 1", +default: "_none_", +required: "No", +variability: "hourly") +%> <% end %> ## ZONE Infiltration -The following control a simplified air change plus leakage area model. The Sherman-Grimsrud model is used to derive air flow rate from leakage area and this rate is added to the air changes specified with infAC. Note that TOP.windF does *not* modify calculated infiltration rates, since the Sherman-Grimsrud model uses its own modifiers. See also AirNet models available via IZXFER. +The following control a simplified air change plus leakage area model. The Sherman-Grimsrud model is used to derive air flow rate from leakage area and this rate is added to the air changes specified with infAC. Note that TOP.windF does _not_ modify calculated infiltration rates, since the Sherman-Grimsrud model uses its own modifiers. See also AirNet models available via IZXFER. -**infAC=*float*** +**infAC=_float_** Zone infiltration air changes per hour. <%= member_table( - units: "1/hr", - legal_range: "x $\\geq$ 0", - default: "0.5", - required: "No", - variability: "hourly") - %> +units: "1/hr", +legal_range: "x $\\geq$ 0", +default: "0.5", +required: "No", +variability: "hourly") +%> -**infELA=*float*** +**infELA=_float_** Zone effective leakage area (ELA). <%= member_table( - units: "in^2^", - legal_range: "x $\\geq$ 0", - default: "0.0", - required: "No", - variability: "hourly") - %> +units: "in^2^", +legal_range: "x $\\geq$ 0", +default: "0.0", +required: "No", +variability: "hourly") +%> -**infShld=*int*** +**infShld=_int_** Zone local shielding class, used in derivation of local wind speed for ELA infiltration model, wind-driven AirNet leakage, and exterior surface coefficients. infShld values are -- <%= csv_table(< false) - 1, no obstructions or local shielding - 2, light local shielding with few obstructions - 3, moderate local shielding, some obstructions within two house heights - 4, heavy shielding, obstructions around most of the perimeter - 5, very heavy shielding, large obstructions surrounding the perimeter within two house heights +1, no obstructions or local shielding +2, light local shielding with few obstructions +3, moderate local shielding, some obstructions within two house heights +4, heavy shielding, obstructions around most of the perimeter +5, very heavy shielding, large obstructions surrounding the perimeter within two house heights END %> -<%= member_table( - units: "", - legal_range: "1 $\\leq$ *x* $\\leq$ 5", - default: "3", - required: "No", - variability: "constant") - %> +<%= member*table( +units: "", +legal_range: "1 $\\leq$ \_x* $\\leq$ 5", +default: "3", +required: "No", +variability: "constant") +%> -**infStories=*int*** +**infStories=_int_** Number of stories in zone, used in ELA model. -<%= member_table( - units: "", - legal_range: "1 $\\leq$ *x* $\\leq$ 3", - default: "1", - required: "No", - variability: "constant") - %> +<%= member*table( +units: "", +legal_range: "1 $\\leq$ \_x* $\\leq$ 3", +default: "1", +required: "No", +variability: "constant") +%> -**znWindFLkg=*float*** +**znWindFLkg=_float_** -Wind speed modifier factor. The weather file wind speed is multiplied by this factor to yield a local wind speed for use in infiltration and convection models. +Wind speed modifier factor. The weather file wind speed is multiplied by this factor to yield a local wind speed for use in infiltration and convection models. <%= member_table( - units: "", - legal_range: "x $\\geq$ 0", - default: "derived from znEaveZ and infShld", - required: "No", - variability: "constant") - %> +units: "", +legal_range: "x $\\geq$ 0", +default: "derived from znEaveZ and infShld", +required: "No", +variability: "constant") +%> -**znAFMtr=*afMtrName*** +**znAFMtr=_afMtrName_** -Name of an AFMETER object, if any, to which zone AirNet air flows are recorded. *ZnAFMtr* defines a pressure boundary for accounting purposes. Multiple zones having the same AFMETER are treated as a single volume -- interzone flows within that volume are not recorded. For example, to obtain "building total" flow data, a common AFMETER could be assigned to several conditioned zones but not to adjacent unconditioned zones such as attic spaces. +Name of an AFMETER object, if any, to which zone AirNet air flows are recorded. _ZnAFMtr_ defines a pressure boundary for accounting purposes. Multiple zones having the same AFMETER are treated as a single volume -- interzone flows within that volume are not recorded. For example, to obtain "building total" flow data, a common AFMETER could be assigned to several conditioned zones but not to adjacent unconditioned zones such as attic spaces. -<%= member_table( - units: "", - legal_range: "*name of an AFMETER*", - default: "*not recorded*", - required: "No", - variability: "constant") - %> +<%= member*table( +units: "", +legal_range: "\_name of an AFMETER*", +default: "_not recorded_", +required: "No", +variability: "constant") +%> -**znLoadMtr=*ldMtrName*** +**znLoadMtr=_ldMtrName_** Name of a LOADMETER object, if any, to which zone heating and cooling loads are recorded. -<%= member_table( - units: "", - legal_range: "*name of a LOADMETER*", - default: "*not recorded*", - required: "No", - variability: "constant") - %> +<%= member*table( +units: "", +legal_range: "\_name of a LOADMETER*", +default: "_not recorded_", +required: "No", +variability: "constant") +%> ## ZONE Exhaust Fan @@ -421,111 +421,110 @@ Presence of an exhaust fan in a zone is indicated by specifying a non-zero desig Zone exhaust fan model implementation is incomplete as of July, 2011. The current code calculates energy use but does not account for the effects of air transfer on room heat balance. IZXFER provides a more complete implementation. -**xfanFOn=*float*** +**xfanFOn=_float_** Exhaust fan on fraction. On/off control assumed, so electricity requirement is proportional to run time. <%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ x $\\leq$ 1", - default: "1", - required: "No", - variability: "hourly") - %> +units: "fraction", +legal_range: "0 $\\leq$ x $\\leq$ 1", +default: "1", +required: "No", +variability: "hourly") +%> Example: The following would run an exhaust fan 70% of the time between 8 AM and 5 PM: xfanFOn = select( (\$hour >= 7 && \$hour < 5), .7, default, 0 ); - -**xfanVfDs=*float*** +**xfanVfDs=_float_** Exhaust fan design flow; 0 or not given indicates no fan. <%= member_table( - units: "cfm", - legal_range: "x $\\geq$ 0", - default: "0, no fan", - required: "If fan present", - variability: "constant") - %> +units: "cfm", +legal_range: "x $\\geq$ 0", +default: "0, no fan", +required: "If fan present", +variability: "constant") +%> -**xfanPress=*float*** +**xfanPress=_float_** Exhaust fan external static pressure. -<%= member_table( - units: "inches", - legal_range: "0.05 $\\leq$ *x* $\\leq$ 1.0", - default: "0.3", - required: "No", - variability: "constant") - %> +<%= member*table( +units: "inches", +legal_range: "0.05 $\\leq$ \_x* $\\leq$ 1.0", +default: "0.3", +required: "No", +variability: "constant") +%> Only one of xfanElecPwr, xfanEff, and xfanShaftBhp may be given: together with xfanVfDs and xfanPress, any one is sufficient for CSE to detemine the others and to compute the fan heat contribution to the air stream. -**xfanElecPwr=*float*** +**xfanElecPwr=_float_** Fan input power per unit air flow (at design flow and pressure). <%= member_table( - units: "W/cfm", - legal_range: "x $>$ 0", - default: "derived from xfanEff", - required: "If xfanEff and xfanShaftBhp not present", - variability: "constant") - %> +units: "W/cfm", +legal_range: "x $>$ 0", +default: "derived from xfanEff", +required: "If xfanEff and xfanShaftBhp not present", +variability: "constant") +%> -**xfanEff=*float*** +**xfanEff=_float_** Exhaust fan/motor/drive combined efficiency. <%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ x $\\leq$ 1", - default: "0.08", - required: "No", - variability: "constant") - %> +units: "fraction", +legal_range: "0 $\\leq$ x $\\leq$ 1", +default: "0.08", +required: "No", +variability: "constant") +%> -**xfanShaftBhp=*float*** +**xfanShaftBhp=_float_** Fan shaft power at design flow and pressure. <%= member_table( - units: "BHP", - legal_range: "x $>$ 0", - default: "derived from xfanElecPwr and xfanVfDs", - required: "If xfanElecPwr not present", - variability: "constant") - %> +units: "BHP", +legal_range: "x $>$ 0", +default: "derived from xfanElecPwr and xfanVfDs", +required: "If xfanElecPwr not present", +variability: "constant") +%> -**xfanMtr=*mtrName*** +**xfanMtr=_mtrName_** Name of METER object, if any, by which fan's energy use is recorded (under end use category "fan"). -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*not recorded*", - required: "No", - variability: "constant") - %> +<%= member*table( +units: "", +legal_range: "\_name of a METER*", +default: "_not recorded_", +required: "No", +variability: "constant") +%> **endZone** Indicates the end of the zone definition. Alternatively, the end of the zone definition can be indicated by the declaration of another object or by "END". If END or endZone is used, it should follow the definitions of the ZONE's subobjects such as GAINs, SURFACEs, TERMINALs, etc. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +<%= member*table( +units: "", +legal_range: "", +default: "\_none*", +required: "No", +variability: "constant") +%> **Related Probes:** -- @[zone](#p_zone) -- @[znRes](#p_znres) (accumulated results) +- @[zone][p_zone] +- @[znRes][p_znres] (accumulated results) diff --git a/doc/src/docs/input-structure.md b/doc/src/docs/input-structure.md index 786857ca7..b7a83276c 100644 --- a/doc/src/docs/input-structure.md +++ b/doc/src/docs/input-structure.md @@ -91,7 +91,7 @@ A statement specifying a data member consists of the data member's name, an = si znVol = 100000; -specifies that the zone has a volume of 100000 cubic feet. (If the statement occurs outside of the description of a ZONE, an error message occurs.) All of the member names for each class are described in the [input data](#input-data) section; most of them begin with an abbreviation of the class name for clarity. +specifies that the zone has a volume of 100000 cubic feet. (If the statement occurs outside of the description of a ZONE, an error message occurs.) All of the member names for each class are described in the [input data][input-data] section; most of them begin with an abbreviation of the class name for clarity. The description of a zone or any object except Top can be terminated with the word "END"; but this is not essential; CSE will assume the ZONE ends when you start another ZONE or any object not a subobject of ZONE, or when you specify a member of a higher level class (Top for ZONE), or give an action-command such as RUN. @@ -149,11 +149,11 @@ The following is a brief CSE input file, annotated with comments intended to exe Terminates ZONE North, since action-commands terminate all objects being constructed. */ -\*\* See [Form of the CSE Data](#form-of-the-cse-data) +\*\* See [Form of the CSE Data][form-of-the-cse-data] ### Expressions -- Overview -_Expressions_ are the parts of statements that specify values -- numeric values, string values, object name values, and choice values. Expressions are composed of operators and operands, in a manner similar to many programming languages. The available operators and operands will be described in the section on [operators](#operators). +_Expressions_ are the parts of statements that specify values -- numeric values, string values, object name values, and choice values. Expressions are composed of operators and operands, in a manner similar to many programming languages. The available operators and operands will be described in the section on [operators][operators]. Unlike most programming languages, CSE expressions have Variation. _Variation_ is how often a value changes during the simulation run -- hourly, daily, monthly, yearly (i.e. does not change during run), etc. For instance, the operand `$hour` represents the hour of the day and has "hourly" variation. An expression has the variation of its fastest-varying component. @@ -264,13 +264,13 @@ A line of the form where there is no space between the identifier and the (, is a macro with parameters given by the identifier list. The expansion of macros with parameters is discussed below. -Macros may also be defined _on the CSE command line_, making it possible to vary a run without changing the input files at all. As described in the [command line](#command-line) section, macros are defined on the CSE command line using the `-D` switch in the forms +Macros may also be defined _on the CSE command line_, making it possible to vary a run without changing the input files at all. As described in the [command line][command-line] section, macros are defined on the CSE command line using the `-D` switch in the forms -D_identifier_ -D_identifier_=_token-sequence_ -The first form simply defines the name with no token-sequence; this is convenient for testing with `#ifdef`, `#ifndef`, or `defined()`, as described in the section on [conditional inclusion of tex](#conditional-inclusion-of-text). The second form allows an argument list and token sequence. The entire command line argument must be enclosed in quotes if it contains any spaces. +The first form simply defines the name with no token-sequence; this is convenient for testing with `#ifdef`, `#ifndef`, or `defined()`, as described in the section on [conditional inclusion of text][conditional-inclusion-of-text]. The second form allows an argument list and token sequence. The entire command line argument must be enclosed in quotes if it contains any spaces. A macro definition is forgotten when an `#undef` directive is encountered: @@ -322,7 +322,7 @@ For an example of the use `#include`s, please see the preprocessor examples at t Conditional text inclusion provides a facility for selectively including or excluding groups of input file lines. The lines so included or excluded may be either CSE input language text _or other preprocessor directives_. The latter capability is very powerful. -Several conditional inclusion directive involve integer constant expressions. Constant integer expressions are formed according the rules discussed in the section on [expressions](#expressions) with the following changes: +Several conditional inclusion directive involve integer constant expressions. Constant integer expressions are formed according the rules discussed in the section on [expressions][expressions] with the following changes: 1. Only constant integer operands are allowed. @@ -441,11 +441,11 @@ This macro can be used whenever a U-value is required (e.g. SURFACE ... sfU=UWin ## CSE Input Language Statements -This section describes the general form of CSE input language statements that define objects, assign values to the data members of objects, and initiate actions. The concepts of objects and the class hierarchy were introduced in the section on [form of CSE data](#form-of-the-cse-data). Information on statements for specific CSE input language classes and their members is the subject of the [input data](#input-data) section. +This section describes the general form of CSE input language statements that define objects, assign values to the data members of objects, and initiate actions. The concepts of objects and the class hierarchy were introduced in the section on [form of CSE data][form-of-the-cse-data]. Information on statements for specific CSE input language classes and their members is the subject of the [input data][input-data] section. ### Object Statements -As we described in a [previous section](#statements-overview), the description of an object is introduced by a statement containing at least the class name, and usually your chosen name for the particular object. In addition, this section will describe several optional qualifiers and modifying clauses that permit defining similar objects without repeating all of the member details, and reopening a previously given object description to change or add to it. +As we described in a [previous section][statements-overview], the description of an object is introduced by a statement containing at least the class name, and usually your chosen name for the particular object. In addition, this section will describe several optional qualifiers and modifying clauses that permit defining similar objects without repeating all of the member details, and reopening a previously given object description to change or add to it. Examples of the basic object-beginning statement: @@ -455,7 +455,7 @@ Examples of the basic object-beginning statement: LAYER; -As described in [the section on nested objects](#nested-objects), such a statement is followed by statements giving the object's member values or describing subobjects of the object. The object description ends when you begin another object that is not of a subclass of the object, or when a member of an embedding (higher level) object previously begun is given, or when END is given. +As described in [the section on nested objects][nested-objects], such a statement is followed by statements giving the object's member values or describing subobjects of the object. The object description ends when you begin another object that is not of a subclass of the object, or when a member of an embedding (higher level) object previously begun is given, or when END is given. #### Object Names @@ -478,7 +478,7 @@ We suggest always quoting object names so you won't have to worry about disallow Duplicate names result in error messages. Object names must be distinct between objects of the same class which are subobjects of the same object. For example, all ZONE names must be distinct, since all ZONEs are subobjects of Top. It is permissible to have SURFACEs with the same name in different ZONEs -- but it is a good idea to keep all of your object names distinct to minimize the chance of an accidental mismatch or a confusing message regarding some other error. -For some classes, such as ZONE, a name is required for each object. This is because several other statements refer to specific ZONEs, and because a name is needed to identify ZONEs in reports. For other classes, the name is optional. The specific statement descriptions in the [Input Data](#input-data) Section 5 say which names are required. We suggest always using object names even where not required; one reason is because they allow CSE to issue clearer error messages. +For some classes, such as ZONE, a name is required for each object. This is because several other statements refer to specific ZONEs, and because a name is needed to identify ZONEs in reports. For other classes, the name is optional. The specific statement descriptions in the [Input Data][input-data] Section 5 say which names are required. We suggest always using object names even where not required; one reason is because they allow CSE to issue clearer error messages. The following _reserved words will not work as object names unless enclosed in quotes_: @@ -514,7 +514,7 @@ ALTER can be used to facilitate making similar runs. For example, to evaluate th wnHeight = 4; wnWidth = 12; // make window smaller RUN; // perform simulation and print reports again -ALTER also lets you access the predefined "Primary" REPORTFILE and EXPORTFILE objects which will be described in the [Input Data](#input-data) Section: +ALTER also lets you access the predefined "Primary" REPORTFILE and EXPORTFILE objects which will be described in the [Input Data][input-data] Section: ALTER REPORTFILE "Primary"; /* open description of object automatically supplied by CSE -- no other way to access */ @@ -610,25 +610,25 @@ END, optionally followed by an object name, can be used to unequivocally termina ### Member Statements -As introduced in the section on [statements](#statements-overview), statements which assign values to members are of the general form: +As introduced in the section on [statements][statements-overview], statements which assign values to members are of the general form: *memberName* = *expression*; The specific member names for each class of objects are given in Section 5; many have already been shown in examples. -Depending on the member, the appropriate type for the expression giving the member value may be numeric (integer or floating point), string, object name, or multiple-choice. Expressions of all types will be described in detail in the section on [expressions](#expressions). +Depending on the member, the appropriate type for the expression giving the member value may be numeric (integer or floating point), string, object name, or multiple-choice. Expressions of all types will be described in detail in the section on [expressions][expressions]. -Each member also has its _variability_ (also given in the [input data](#input-data) section), or maximum acceptable _variation_. This is how often the expression for the value can change during the simulation -- hourly, daily, monthly, no change (constant), etc. The "variations" were introduced in the [expressions overview](#expressions-overview) section and will be further detailed in a [section on variation frequencies](#variation-frequencies-revisited). +Each member also has its _variability_ (also given in the [input data][input-data] section), or maximum acceptable _variation_. This is how often the expression for the value can change during the simulation -- hourly, daily, monthly, no change (constant), etc. The "variations" were introduced in the [expressions overview][expressions-overview] section and will be further detailed in a [section on variation frequencies][variation-frequencies-revisited]. Four special statements, AUTOSIZE, UNSET, REQUIRE, and FREEZE, add flexibility in working with members. #### AUTOSIZE -AUTOSIZE followed by a member name, sets the member to be sized by CSE. The option to AUTOSIZE a member will be shown under its legal range where it is described in the [input data](#input-data) section. AUTOSIZE is only applicable to members describing HVAC system airflows and heating/cooling capacities. If AUTOSIZE is used for any member in the input, input describing design day conditions must also be specified (see [TOP Autosizing](#top-autosizing)). +AUTOSIZE followed by a member name, sets the member to be sized by CSE. The option to AUTOSIZE a member will be shown under its legal range where it is described in the [input data][input-data] section. AUTOSIZE is only applicable to members describing HVAC system airflows and heating/cooling capacities. If AUTOSIZE is used for any member in the input, input describing design day conditions must also be specified (see [TOP Autosizing][top-autosizing]). #### UNSET -UNSET followed by a member name is used when it is desired to delete a member value previously given. UNSETing a member resets the object to the same internal state it was in before the member was originally given. This makes it legal to specify a new value for the member (normally, a duplicate specification results in an error message); if the member is required (as specified in the [input data](#input-data) section), then an error message will occur if RUN is given without re specifying the member. +UNSET followed by a member name is used when it is desired to delete a member value previously given. UNSETing a member resets the object to the same internal state it was in before the member was originally given. This makes it legal to specify a new value for the member (normally, a duplicate specification results in an error message); if the member is required (as specified in the [input data][input-data] section), then an error message will occur if RUN is given without re specifying the member. Situations where you really might want to specify a member, then later remove it, include: @@ -672,17 +672,17 @@ Probably the CSE input language's most powerful characteristic is its ability to But for many object members, CSE accepts _live expressions_ that _vary_ according to time of day, weather, zone temperatures, etc. (etc., etc., etc.!). Live expressions permit simulation of many relationships without special-purpose features in the language. Live expressions support controlling setpoints, scheduling HVAC system operation, resetting air handler supply temperature according to outdoor temperature, and other necessary and foreseen functions without dedicated language features; they will also support many unforeseen user-generated functionalities that would otherwise be unavailable. -Additional expression flexibility is provided by the ability to access all of the input data and much of the internal data as operands in expressions (_probes_, see [this section](#probes)). +Additional expression flexibility is provided by the ability to access all of the input data and much of the internal data as operands in expressions (_probes_, see [this section][probes]). As in a programming language, CSE expressions are constructed from operators and operands; unlike most programming languages, CSE determines how often an expression's operands change and automatically compute and store the value as often as necessary. -Expressions in which all operands are known when the statement is being decoded (for example, if all values are constants) are _always_ allowed, because the input language processor immediately evaluates them and presents the value to the rest of the program in the same manner as if a single number had been entered. _Most_ members also accept expressions that can be evaluated as soon as the run's input is complete, for example expressions involving a reference to another member that has not been given yet. Expressions that vary during the run, say at hourly or daily intervals, are accepted by _many_ members. The _variability_ or maximum acceptable variation for each member is given in the descriptions in the [input data](#input-data) section, and the _variation_ of each non-constant expression component is given in its description in this section. +Expressions in which all operands are known when the statement is being decoded (for example, if all values are constants) are _always_ allowed, because the input language processor immediately evaluates them and presents the value to the rest of the program in the same manner as if a single number had been entered. _Most_ members also accept expressions that can be evaluated as soon as the run's input is complete, for example expressions involving a reference to another member that has not been given yet. Expressions that vary during the run, say at hourly or daily intervals, are accepted by _many_ members. The _variability_ or maximum acceptable variation for each member is given in the descriptions in the [input data][input-data] section, and the _variation_ of each non-constant expression component is given in its description in this section. Interaction of expressions and the preprocessor: Generally, they don't interact. The preprocessor is a text processor which completes its work by including specified files, deleting sections under false \#if's, remembering define definitions, replacing macro calls with the text of the definition, removing preprocessor directives from the text after interpreting them, etc., _then_ the resulting character stream is analyzed by the input language statement compiler. However, the if statement takes an integer numeric expression argument. This expression is similar to those described here except that it can only use constant operands, since the preprocessor must evaluate it before deciding what text to feed to the input statement statement compiler. ### Expression Types -The type of value to which an expression must evaluate is specified in each member description (see the [input data](#input-data) section) or other context in which an expression can be used. Each expression may be a single constant or may be made up of operators and operands described in the rest of this section, so long as the result is the required type or can be converted to that type by CSE, and its variation is not too great for the context. The possible types are: +The type of value to which an expression must evaluate is specified in each member description (see the [input data][input-data] section) or other context in which an expression can be used. Each expression may be a single constant or may be made up of operators and operands described in the rest of this section, so long as the result is the required type or can be converted to that type by CSE, and its variation is not too great for the context. The possible types are: --- @@ -940,7 +940,7 @@ For _strings_, _object names_, and _choices_, the CSE input language currently h ### System Variables -_System Variables_ are built-in operands with useful values. To avoid confusion with other words, they begin with a \$. Descriptions of the CSE system variables follow. Capitalization shown need not be matched. Most system variables change during a simulation run, resulting in the _variations_ shown; they cannot be used where the context will not accept variation at least this fast. (The [Input Data Section](#input-data) gives the _variability_, or maximum acceptable variation, for each object member.) +_System Variables_ are built-in operands with useful values. To avoid confusion with other words, they begin with a \$. Descriptions of the CSE system variables follow. Capitalization shown need not be matched. Most system variables change during a simulation run, resulting in the _variations_ shown; they cannot be used where the context will not accept variation at least this fast. (The [Input Data Section][input-data] gives the _variability_, or maximum acceptable variation, for each object member.) --- @@ -1032,7 +1032,7 @@ heating autosize, 2 during cool autosize. ### Built-in Functions -Built-in functions perform a number of useful scheduling and conditional operations in expressions. Built-in functions have the combined variation of their arguments; for _hourval_, the minimum result variation is hourly. For definitions of _numeric_ and _anyType_, see [Expression Types](#expression-types). +Built-in functions perform a number of useful scheduling and conditional operations in expressions. Built-in functions have the combined variation of their arguments; for _hourval_, the minimum result variation is hourly. For definitions of _numeric_ and _anyType_, see [Expression Types][expression-types]. #### brkt @@ -1523,7 +1523,7 @@ TODO: test psychrometric functions 7-22-2011 _float_ **import**( _string importFile, int colN_) **Remark** Columns can be referenced by name or 1-based index.\ - See [IMPORTFILE](#importfile) for details on use of import() + See [IMPORTFILE][importfile] for details on use of import() --- @@ -1536,7 +1536,7 @@ TODO: test psychrometric functions 7-22-2011 **Syntax** _string_ **importStr**( _string importFile, string colName_)\ _string_ **importStr**( _string importFile, int colN_) -**Remark** See [IMPORTFILE](#importfile) for details on use of importStr() +**Remark** See [IMPORTFILE][importfile] for details on use of importStr() --- @@ -1628,7 +1628,7 @@ Note that while macros require line-splicing ("\\")to extend over one line, func ### Probes -_Probes_ provide a universal means of referencing data within the simulator. Probes permit using the inputtable members of each object, as described in the [Input Data](#input-data) Section, as operands in expressions. In addition, most internal members can be probed; we will describe how to find their names shortly. +_Probes_ provide a universal means of referencing data within the simulator. Probes permit using the inputtable members of each object, as described in the [Input Data][input-data] Section, as operands in expressions. In addition, most internal members can be probed; we will describe how to find their names shortly. Three general ways of using probes are: @@ -1672,9 +1672,9 @@ only one member, Top. _member_ is the name of the particular member being probed. This must be exactly correct. For some inputtable members, the probe name is not the same as the input name given in the -[Input Data](#input-data) Section, and there are many +[Input Data][input-data] Section, and there are many probe-able members not described in the -[Input Data](#input-data) section. +[Input Data][input-data] section. --- @@ -1704,7 +1704,7 @@ A portion of the `-p` output looks like: In the above "exportCol" and "holiday" are class names, and "name", "colHead", "colGap", . . . are member names for class exportCol. Some members have multiple names separated by .'s, or they may contain an additional subscript. To probe one of these, type all of the names and punctuation exactly as shown (except capitalization may differ); if an additional subscript is shown, give a number in the specified range. An "I" designates an "input" parameter, an R means "runtime" parameter. The "owner" is the class of which this class is a subclass. -The data type and variation of each member is also shown. Note that _variation_, or how often the member changes, is shown here. (_Variability_, or how often an expression assigned to the member may change, is given for the input table members in the [Input Data](#input-data) Section). Members for which an "end of" variation is shown can be probed only for use in reports. A name described as "un-probe-able" is a structure or something not convertible to an integer, float, or string. +The data type and variation of each member is also shown. Note that _variation_, or how often the member changes, is shown here. (_Variability_, or how often an expression assigned to the member may change, is given for the input table members in the [Input Data][input-data] Section). Members for which an "end of" variation is shown can be probed only for use in reports. A name described as "un-probe-able" is a structure or something not convertible to an integer, float, or string. -[Operation](#operation) documents the operational aspects of CSE, such as command line switches, file naming conventions, and how CSE finds files it needs. +[Operation][operation] documents the operational aspects of CSE, such as command line switches, file naming conventions, and how CSE finds files it needs. -[Input Structure](#input-structure) documents the CSE input language in general. +[Input Structure][input-structure] documents the CSE input language in general. -[Input Data](#input-data) describes all of the specific input language statements. +[Input Data][input-data] describes all of the specific input language statements. -[Output Reports](#output-reports) will describe the output reports. +[Output Reports][output-reports] will describe the output reports. -Lastly, [Probe Definitions](#probe-definitions) lists all available probes. +Lastly, [Probe Definitions][probe-definitions] lists all available probes. -<%= member*table( +<%= member_table( units: "^o^F", -legal_range: "\_no limit*; typically: 40 $\\le$ _x_ $\\le$ 140^o^", +legal_range: "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", default: "999^o^ F", required: "Only for _asTsSp_=RA; recommend giving for _ahTsSp_=ZN", variability: "hourly") %> @@ -165,8 +165,8 @@ Maximum supply temperature. Also used as heating supply temperature setpoint val Specify zones monitored to determine supply temperature setpoint value (control zones), under _ahTsSp_=WZ and CZ respectively. -<%= csv*table(< false) -\_zone names*, A list of zone names, with commas between them. Up to 15 names may be given. +<%= csv_table(< false) +_zone names_, A list of zone names, with commas between them. Up to 15 names may be given. ALL_BUT, May be followed by a a comma and list of up to 14 zone names; all zones on air handler other than these are the control zones. ALL, Indicates that all zones with terminals connected to the air handler are control zones. END @@ -176,9 +176,9 @@ A comma must be entered between zone names and after the word ALL_BUT. -<%= member*table( +<%= member_table( units: "", -legal_range: "\_name(s) of ZONEs* ALL ALL*BUT \_zone Name(s)*", +legal_range: "_name(s) of ZONEs_ ALL ALL_BUT _zone Name(s)_", default: "ALL", required: "No", variability: "hourly") %> @@ -187,10 +187,10 @@ variability: "hourly") %> Cooling design supply temperature, for sizing coil vs fan. -<%= member*table( +<%= member_table( units: "^o^F", legal_range: "x $>$ 0", -default: "\_ahTsMn*", +default: "_ahTsMn_", required: "No", variability: "hourly") %> @@ -198,10 +198,10 @@ variability: "hourly") %> Heating design supply temperature, for sizing coil vs fan. -<%= member*table( +<%= member_table( units: "^o^F", legal_range: "x $>$ 0", -default: "\_ahTsMx*", +default: "_ahTsMx_", required: "No", variability: "hourly") %> @@ -209,11 +209,11 @@ variability: "hourly") %> Terminal monitored to determine whether to heat or cool under ZN and ZN2 supply temperature setpoint control. Development aid feature; believe there is no need to give this since ahTsSp = ZN or ZN2 should only be used with one zone. -<%= member*table( +<%= member_table( units: "", legal_range: "name of a TERMINAL", default: "AIRHANDLER's TERMINAL, if only one", -required: "If \_ahTsSp* = ZN with more than 1 TERMINAL", +required: "If _ahTsSp_ = ZN with more than 1 TERMINAL", variability: "hourly") %> @@ -232,9 +232,9 @@ When the return air temperature is between *ahTsRaMn*and _ahTsRaMx_, the supply If return air moves outside the range _ahTsRaMn_ to _ahTsRaMx_, the supply temperature setpoint does not change further. -<%= member*table( +<%= member_table( units: "^o^F", -legal_range: "\_no limit*; typically: 40 $\\le$ _x_ $\\le$ 140^o^", +legal_range: "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", default: "_none_", required: " Only for _ahTsSp_=RA", variability: "hourly") %> @@ -258,9 +258,9 @@ variability: "constant") %> Design or rated (volumetric) air flow at rated pressure. Many fans will actually blow a larger volume of air at reduced pressure: see sfanVfMxF (next). -<%= member*table( +<%= member_table( units: "cfm", -legal_range: "\_AUTOSIZE* or _x_ $\\ge$ 0", +legal_range: "_AUTOSIZE_ or _x_ $\\ge$ 0", default: "_none_", required: "Yes", variability: "constant") %> @@ -271,9 +271,9 @@ Overrun factor: maximum factor by which fan will exceed rated flow (at reduced p We recommend giving 1.0 to eliminate overrun in constant volume modeling. -<%= member*table( +<%= member_table( units: "", -legal_range: "\_x* $\\ge$ 1.0", +legal_range: "_x_ $\\ge$ 1.0", default: "1.3", required: "No", variability: "constant") %> @@ -282,9 +282,9 @@ variability: "constant") %> Design or rated pressure. The work done by the fan is computed as the product of this pressure and the current flow, except that the flow is limited to sfanVfDs. That is, in overrun (see _sfanVfMxF_) it is assumed that large VAV terminal damper openings allow the pressure to drop in proportion to the flow over rated. This work is added to the air as heat at the fan, and is termed "fan heat". Setting sfanPress to zero will eliminate simulated fan heat for theoretical simulation of a coil only. -<%= member*table( +<%= member_table( units: "inches H~2~O", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "3", required: "No", variability: "constant") %> @@ -297,9 +297,9 @@ New possible text (after addition of sfanElecPwr): Only one of sfanElecPwr, sfan Fan input power per unit air flow (at design flow and pressure). -<%= member*table( +<%= member_table( units: "W/cfm", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "derived from sfanEff and sfanShaftBhp", required: "If sfanEff and sfanShaftBhp not present", variability: "constant") %> @@ -308,9 +308,9 @@ variability: "constant") %> Fan efficiency at design flow and pressure, as a fraction. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "derived from _sfanShaftBhp_ if given, else 0.65", required: "No", variability: "constant") %> @@ -319,9 +319,9 @@ variability: "constant") %> Fan shaft brake horsepower at design flow and pressure. -<%= member*table( +<%= member_table( units: "bhp", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "derived from _sfanEff_.", required: "No", variability: "constant") %> @@ -341,10 +341,10 @@ where: If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. -<%= member*table( +<%= member_table( units: "", legal_range: "", -default: "\_0, 1, 0, 0, 0 (linear)*", +default: "_0, 1, 0, 0, 0 (linear)_", required: "No", variability: "constant") %> @@ -352,9 +352,9 @@ variability: "constant") %> Motor/drive efficiency. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "0.9", required: "No", variability: "constant") %> @@ -374,9 +374,9 @@ END Name of meter, if any, to record energy used by supply fan. End use category used is "Fan". -<%= member*table( +<%= member_table( units: "", -legal_range: "\_name of a METER*", +legal_range: "_name of a METER_", default: "_not recorded_", required: "No", variability: "constant") %> @@ -407,9 +407,9 @@ variability: "constant") %> design or rated (volumetric) air flow. -<%= member*table( +<%= member_table( units: "cfm", -legal_range: "\_AUTOSIZE* or _x_ $\\gt$ 0", +legal_range: "_AUTOSIZE_ or _x_ $\\gt$ 0", default: "_sfanVfDs - oaVfDsMn_", required: "No", variability: "constant") %> @@ -418,9 +418,9 @@ variability: "constant") %> factor by which fan will exceed design flow (at reduced pressure). -<%= member*table( +<%= member_table( units: "", -legal_range: "\_x* $\\ge$ 1.0", +legal_range: "_x_ $\\ge$ 1.0", default: "1.3", required: "No", variability: "constant") %> @@ -429,9 +429,9 @@ variability: "constant") %> design or rated pressure. -<%= member*table( +<%= member_table( units: "inches H~2~O", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "0.75", required: "No", variability: "constant") %> @@ -442,9 +442,9 @@ _At most, one of the next three?? items may be defined: ??_ rework re rfanElecPw Fan input power per unit air flow (at design flow and pressure). -<%= member*table( +<%= member_table( units: "W/cfm", -legal_range: "\_x* $>$ 0", +legal_range: "_x_ $>$ 0", default: "derived from rfanEff and rfanShaftBhp", required: "If rfanEff and rfanShaftBhp not present", variability: "constant") %> @@ -453,9 +453,9 @@ variability: "constant") %> Fan efficiency at design flow and pressure. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "derived from _rfanShaftBhp_ if given, else 0.65", required: "No", variability: "constant") %> @@ -464,9 +464,9 @@ variability: "constant") %> Fan shaft brake horsepower at design flow and pressure. -<%= member*table( +<%= member_table( units: "bhp", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "derived from _rfanEff_", required: "No", variability: "constant") %> @@ -486,10 +486,10 @@ where: If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. -<%= member*table( +<%= member_table( units: "", legal_range: "", -default: "\_0, 1, 0, 0, 0 (linear)*", +default: "_0, 1, 0, 0, 0 (linear)_", required: "No", variability: "constant") %> @@ -497,9 +497,9 @@ variability: "constant") %> Motor/drive efficiency. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "0.9", required: "No", variability: "constant") %> @@ -519,9 +519,9 @@ variability: "constant") %> Name of meter, if any, to record power consumption of this return fan. May be same or different from meter used for other fans and coils in this and other air handlers. "Fan" end use category is used. -<%= member*table( +<%= member_table( units: "", -legal_range: "\_name of a METER*", +legal_range: "_name of a METER_", default: "_not recorded_", required: "No", variability: "constant") %> @@ -550,10 +550,10 @@ To specify that an AIRHANDLER has a heating coil and thus heating capability, gi Coil type choice: -<%= csv*table(< false) +<%= csv_table(< false) ELECTRIC, electric resistance heat: 100% efficient, can deliver its full rated capacity at any temperature and flow. HW, hot water coil, supplied by a HEATPLANT object. -GAS or OIL, 'coil' type that models heating portion of a forced hot air furnace. Furnace 'coil' model uses inputs for full-load efficiency and part-load power input; model must be completed with appropriate auxiliaries, \_ahTsSp*, etc. See notes above. +GAS or OIL, 'coil' type that models heating portion of a forced hot air furnace. Furnace 'coil' model uses inputs for full-load efficiency and part-load power input; model must be completed with appropriate auxiliaries, _ahTsSp_, etc. See notes above. , GAS and OIL are the same here -- the differences between gas- and oil-fired furnaces is in the auxiliaries (pilot vs. draft fan, etc.), which you specify separately. AHP, heating function of an air source heat pump. NONE, AIRHANDLER has no heat coil, thus no heating capability. @@ -571,9 +571,9 @@ variability: "constant") %> Heat coil schedule; choice of AVAIL or OFF, hourly variable. Use an appropriate ahhcSched expression if heat coil is to operate only at certain times of the day or year or only under certain weather conditions, etc. -<%= csv*table(< false) +<%= csv_table(< false) AVAIL, heat coil available: will operate as necessary to heat supply air to supply temperature setpoint, up to the coil's capacity. -OFF, coil will not operate, no matter how cold supply air is. A HW coil should be scheduled off whenever its HEATPLANT is scheduled off (\_hpSched*) to insure against error messages. +OFF, coil will not operate, no matter how cold supply air is. A HW coil should be scheduled off whenever its HEATPLANT is scheduled off (_hpSched_) to insure against error messages. END %> @@ -588,9 +588,9 @@ variability: "hourly") %> Total heating (output) capacity. For an ELECTRIC, AHP, GAS, or OIL coil, this capacity is always available. For an HW heating coil, when the total heat being requested from the coil's HEATPLANT would overload the HEATPLANT, the capacity of all HW coils connected to the plant (in TERMINALs as well as AIRHANDLERs) is reduced proportionately until the requested total heat is within the HEATPLANT's capacity. For AHP, this value represents the AHRI rated capacity at 47 ^o^F outdoor temperature. -<%= member*table( +<%= member_table( units: "Btuh", -legal_range: "\_AUTOSIZE* or _x_ $\\ge$ 0", +legal_range: "_AUTOSIZE_ or _x_ $\\ge$ 0", default: "_none_", required: "Yes, if coil present", variability: "hourly") %> @@ -610,9 +610,9 @@ variability: "constant") %> Name of meter to accumulate energy use by this heat coil. The input energy used by the coil is accumulated in the end use category "Htg"; for a heat pump, the energy used by the supplemental resistance heaters (regular and defrost) is accumulated under the category "hp". Not allowed when\*ahhcType\* is HW, as an HW coil's energy comes from its HEATPLANT, and the HEATPLANT's BOILERs accumulate input energy to meters. -<%= member*table( +<%= member_table( units: "", -legal_range: "\_name of a METER*", +legal_range: "_name of a METER_", default: "_not recorded_", required: "No", variability: "constant") %> @@ -623,9 +623,9 @@ The following input is used only when _ahhcType_ is HW: Name of HEATPLANT supporting hot water coil. -<%= member*table( +<%= member_table( units: "", -legal_range: "\_name of a HEATPLANT*", +legal_range: "_name of a HEATPLANT_", default: "_none_", required: "if _ahhcType_ is HW", variability: "constant") %> @@ -638,9 +638,9 @@ One of the next two items, but not both, **must** be given for furnaces: Rated energy input ratio (input energy/output energy) at full power. -<%= member*table( +<%= member_table( units: "", -legal_range: "\_x* $\\ge$ 1", +legal_range: "_x_ $\\ge$ 1", default: "_none_", required: "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", variability: "hourly") %> @@ -649,9 +649,9 @@ variability: "hourly") %> Rated efficiency (output energy/input energy; 1/ahhcEirR) at full power -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "_none_", required: "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", variability: "hourly") %> @@ -700,9 +700,9 @@ The factor "`sqrt(200.-@Top.tDbO)`" represents the volume of infiltrated air tha The divisor "`/ (10*68*sqrt(200))`" is to make the value 0.1 when tDbO is 0, that is, to make the stack effect loss use 10% of unused load when it is 0 degrees out. The actual modeling engineer must know enough about his building to be able to estimate the additional infiltration load at some temperature. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "0", required: "No", variability: "hourly") %> @@ -713,9 +713,9 @@ The following heat coil input members, beginning with _ahp-_, are used when mode AHRI steady state (continuous operation) rated capacity at 70 degrees F indoor (return) air temp, and 17 degrees F outdoor temp, respectively. These values reflect no cycling, frost, or defrost degradation. To help you find input errors, the program issues an error message if ahpCap17 >= ahhcCapTRat. -<%= member*table( +<%= member_table( units: "Btuh", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "_none_", required: "Yes, for AHP coil", variability: "constant") %> @@ -724,9 +724,9 @@ variability: "constant") %> The ratio of AHRI steady state (continuous operation) rated capacities at 17 and 47 degrees F outdoor temp. This is used to determine _ahpCap35_ when _ahhcCapTRat_ is AUTOSIZEd. -<%= member*table( +<%= member_table( units: "", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "0.6184", required: "No", variability: "constant") %> @@ -746,9 +746,9 @@ variability: "constant") %> AHRI steady state (continuous operation) rated capacity at 35 F outdoor temp, reflecting frost buildup and defrost degradation but no cycling. Unlikely to be available for input; if not given, will be defaulted to _ahpFd35Df_ (next description) times a value determined by linear interpolation between the given _ahpCap17_ and _ahhcCapTRat_ values. If _ahpCap35_ is given, CSE will issue an error message if it is greater than value determined by linear interpolation between _ahpCap17_ and _ahhcCapTRat_. -<%= member*table( +<%= member_table( units: "Btuh", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "from ahpFd35Df", required: "No", variability: "constant") %> @@ -757,9 +757,9 @@ variability: "constant") %> Default frost/defrost degradation factor at 35 F: reduction of output at unchanged input, due to defrosting and due to frost on outdoor coil. Used in determining default value for _ahpCap35_ (preceding description); not used if _ahpCap35_ is given. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "0.85", required: "No", variability: "constant") %> @@ -768,9 +768,9 @@ variability: "constant") %> Capacity correction factor for indoor (return) air temperature, expressed as a fraction reduction in capacity per degree above 70F. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "0.004", required: "No", variability: "constant") %> @@ -779,9 +779,9 @@ variability: "constant") %> Output capacity of the supplemental reheat coil used when heat pump alone cannot meet the load or to offset the defrost cooling load. Energy consumed by this heater is accumulated in category "HPBU" of ahhcMeter (whereas energy consumption of the heat pump compressor is accumulated under category "Htg"). -<%= member*table( +<%= member_table( units: "Btu/hr", -legal_range: "\_x* $\\ge$ 0", +legal_range: "_x_ $\\ge$ 0", default: "0", required: "No", variability: "constant") %> @@ -790,9 +790,9 @@ variability: "constant") %> Efficiency of the supplemental reheat coil. Use values other than the default for gas supplemental heaters. -<%= member*table( +<%= member_table( units: "", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "1.0", required: "No", variability: "hourly") %> @@ -801,9 +801,9 @@ variability: "hourly") %> Specifies a meter for recording supplemental heater energy use. End use category "HPBU" is used. -<%= member*table( +<%= member_table( units: "", -legal_range: "\_name of a METER*", +legal_range: "_name of a METER_", default: "_not recorded_", required: "No", variability: "constant") %> @@ -832,9 +832,9 @@ In other words, the curve of capacity loss due to frost buildup follows straight An error will occur unless _ahpTFrMn_ < _ahpTFrPk_ < _ahpTFrMx_ and _ahpTFrMn_ < 35 < *ahpTFrMx*. -<%= member*table( +<%= member_table( units: "^o^F", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "_ahpTFrMn_: 17, _ahpTFrMx_: 47, _ahpTFrPk_: 42", required: "No", variability: "constant") %> @@ -859,9 +859,9 @@ During the fraction of the time spent defrosting, the heat pump's input remains The program will issue an error message if _ahpDfrFMx_ $\le$ _ahpDfrFMn_. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "_ahpDfrFMn_: .0222, (2 minutes/90 minutes), _ahpDfrFMx_:.0889, (8 minutes / 90 minutes)", required: "No", variability: "constant") %> @@ -870,9 +870,9 @@ variability: "constant") %> Cooling capacity (to air handler supply air) during defrosting. Program separately computes the lost heating capacity during defrosting, but effects of switchover transient should be included in _ahpDfrCap_. -<%= member*table( +<%= member_table( units: "Btuh", -legal_range: "\_x* $\\neq$ 0", +legal_range: "_x_ $\\neq$ 0", default: "2 $\\cdot$ _ahpCap17_", required: "No", variability: "constant") %> @@ -883,10 +883,10 @@ variability: "constant") %> Heat pump low temperature cutout setpoints. Heat pump is disabled (only the supplemental resistance heater operates) when outdoor temperature falls below _ahpTOff_, and is re-enabled when temperature rises above _ahpTOn_. Different values may be given to simulate thermostat differential. _ahpTOff_ must be $\le$ _ahpTOn_; equal values are accepted. -<%= member*table( +<%= member_table( units: "^o^F", legal_range: "", -default: "\_ahpTOff*: 5, _ahpTOn_: 12", +default: "_ahpTOff_: 5, _ahpTOn_: 12", required: "No", variability: "constant") %> @@ -898,9 +898,9 @@ The next four inputs specify the heating power input for an air source heat pump Steady state (full power, no cycling) coeffient of performance for compressor and crankcase heater at 70 degrees F indoor (return) air temp and 47 and 17 degrees F outdoor temp, respectively. -<%= member*table( +<%= member_table( units: "kW", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "_none_", required: "Yes, for AHP coil", variability: "constant") %> @@ -909,9 +909,9 @@ variability: "constant") %> Indoor (return) air temp power input correction factor: fraction increase in steady-state input per degree above 70 F, or decrease below 70F. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "0.004", required: "No", variability: "constant") %> @@ -920,9 +920,9 @@ variability: "constant") %> AHRI cycling degradation coefficient: ratio of fraction drop in system coefficient of performance (COP) to fraction drop in capacity when cycling, from steady-state values, in AHRI 47 F cycling performance tests. A value of .25 means that if the heat pump is cycled to drop its output to 20% of full capacity (i.e. by the fraction .8), its COP will drop by .8 \* .25 = .2. Here COP includes all energy inputs: compressor, crankcase heater, defrost operation, etc. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "0.25", required: "No", variability: "constant") %> @@ -933,9 +933,9 @@ The following four air handler heat coil members allow specification of auxiliar Auxiliary energy used by the heating coil. -<%= member*table( +<%= member_table( units: "Btu/hr", -legal_range: "\_x* $\\ge$ 0", +legal_range: "_x_ $\\ge$ 0", default: "0", required: "No", variability: "hourly") %> @@ -944,9 +944,9 @@ variability: "hourly") %> Specifies a meter for recording auxiliary energy use. End use category "Aux" is used. -<%= member*table( +<%= member_table( units: "", -legal_range: "\_name of a METER*", +legal_range: "_name of a METER_", default: "_not recorded_", required: "No", variability: "constant") %> @@ -999,9 +999,9 @@ Total rated capacity of coil: sum of its "sensible" (heat-removing) and "latent" For coil specification conditions (a.k.a. rating conditions or design conditions), see _ahccDsTDbEn_, _ahccDsTWbEn_, *ahccDsTDbCnd*and *ahccVfR*below (see index). -<%= member*table( +<%= member_table( units: "Btuh", -legal_range: "\_AUTOSIZE* or _x_ $>$ 0", +legal_range: "_AUTOSIZE_ or _x_ $>$ 0", default: "_none_", required: "Yes", variability: "constant") %> @@ -1010,9 +1010,9 @@ variability: "constant") %> Sensible (heat-removing) rated capacity of cooling coil. Not used with CHW coils. -<%= member*table( +<%= member_table( units: "Btuh", -legal_range: "\_x* $>$ 0", +legal_range: "_x_ $>$ 0", default: "_none_", required: "Yes", variability: "constant") %> @@ -1021,10 +1021,10 @@ variability: "constant") %> Rated sensible heat ratio (_ahccCapSRat_/_ahccCapTRat_) for cooling coil. Default based on correlation to _ahccVfRperTon_. Not used with CHW coils. -<%= member*table( +<%= member_table( units: "", legal_range: "x $>$ 0", -default: "based on \_ahccVfRperTon*", +default: "based on _ahccVfRperTon_", required: "No", variability: "constant") %> @@ -1043,9 +1043,9 @@ variability: "constant") %> Name of meter, if any, to record energy use of air handler cool coil. End use category "Clg" is used. Not used with CHW coils, because the input energy use for a CHW coil is recorded by the COOLPLANT's CHILLERs. -<%= member*table( +<%= member_table( units: "", -legal_range: "\_name of a METER*", +legal_range: "_name of a METER_", default: "_not recorded_", required: "No", variability: "constant") %> @@ -1056,9 +1056,9 @@ The following six members are used with DX cooling coils. Minimum (effective surface) temperature of coil (evaporator). Represents refrigerant setpoint, or cutout to prevent freezing. Coil model will reduce output to keep simulated coil from getting colder than this, even though it lets supply air get warmer than setpoint. Should default be 35?? -<%= member*table( +<%= member_table( units: "^o^F", -legal_range: "\_x* $>$ 0", +legal_range: "_x_ $>$ 0", default: "40^o^F", required: "No", variability: "constant") %> @@ -1067,9 +1067,9 @@ variability: "constant") %> Exponent in power relationship expressing coil effectiveness as a function of relative air flow. Used as K1 in the relationship ntu = ntuR \* relCfmk1, which says that the "number of transfer units" (on the coil outside or air side) varies with the relative air flow raised to the K1 power. Used with CHW as well as DX coils; for a CHW coil, ntuR in the formula is _ahccNtuoDs_. -<%= member*table( +<%= member_table( units: "", -legal_range: "\_x* $<$ 0", +legal_range: "_x_ $<$ 0", default: "-0.4", required: "No", variability: "constant") %> @@ -1078,18 +1078,18 @@ variability: "constant") %> Fraction of air flow which does NOT flow through DX cooling coil, for better humidity control. Running less of the air through the coil lets the coil run colder, resulting in greater moisture removal right??. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\lt$ \_x* $\\le$ 1", +legal_range: "0 $\\lt$ _x_ $\\le$ 1", default: "0", required: "No", variability: "constant") %> The next three members are used in determining the energy input to a DX coil under various load conditions. The input is derived from the full load energy input ratio for four segments of the part load curve. In the following the part load ratio (plr) is the ratio of the actual sensible + latent load on the coil to the coil's capacity. The coil's capacity is ahccCaptRat, adjusted by the coil model for differences between entering air temperature, humidity, and flow rate and the coil rating conditions. The coil may run at less than capacity even at full fan flow, depending on the air temperature change needed, the moisture content of the entering air, and the relative values of between _sfanVfDs_ and _ahccVfR_. -<%= csv*table(< false) +<%= csv_table(< false) full load, plr (part load ratio) = 1.0 -, Full-load power input is power output times \_ahhcEirR.* +, Full-load power input is power output times _ahhcEirR._ compressor unloading region, 1.0 > plr $\\ge$ _ahhcMinUnldPlr_ , Power input is the full-load input times the value of the _pydxEirUl_ polynomial (below) for the current plr, i.e. pydxEirUl(plr). false loading region, _ahccMinUnldPlr_ > plr $\\ge$ _ahccMinFsldPlr_ @@ -1116,9 +1116,9 @@ variability: "constant") %> Compressor part load ratio (total current load/current capacity) at/above which "Compressor unloading" is used and pydxEirUl (below) is used to adjust the full-load power input to get the current part load power input. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "1 (no unloading)", required: "No", variability: "constant") %> @@ -1127,9 +1127,9 @@ variability: "constant") %> "False Loading" is used between this compressor part load ratio and the plr where unloading is activated (_ahccMinUnldPlr_). In this region, input remains at _pydxEirUl_(*ahccMinUnldPlr).*For plr's less than _ahccMinFsldPlr_, cycling is used, and the power input goes to 0 in a straight line. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ _ahccMinUnldPlr_", +legal_range: "0 $\\le$ _x_ $\\le$ _ahccMinUnldPlr_", default: "_ahccMinUnldPlr_ (no false loading)", required: "No", variability: "constant") %> @@ -1223,9 +1223,9 @@ The following four members are used only with CHW coils. In addition, _ahccK1,_ name of COOLPLANT supporting CHW coil. COOLPLANTs contain CHILLERs, and are described in Section 5.21. -<%= member*table( +<%= member_table( units: "", -legal_range: "\_name of a COOLPLANT*", +legal_range: "_name of a COOLPLANT_", default: "_none_", required: "for CHW coil", variability: "constant") %> @@ -1234,9 +1234,9 @@ variability: "constant") %> Design (i.e. maximum) water flow through CHW coil. -<%= member*table( +<%= member_table( units: "gpm", -legal_range: "\_x* $\\ge$ 0", +legal_range: "_x_ $\\ge$ 0", default: "_none_", required: "Yes, for CHW coil", variability: "constant") %> @@ -1245,9 +1245,9 @@ variability: "constant") %> CHW coil outside number of transfer units at design air flow (ahccVfR*, below). See*ahccK1\* above with regard to transfer units at other air flows. -<%= member*table( +<%= member_table( units: "", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "2", required: "No", variability: "constant") %> @@ -1256,9 +1256,9 @@ variability: "constant") %> CHW coil inside number of transfer units at design water flow (ahccGpmDs, above). -<%= member*table( +<%= member_table( units: "", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "2", required: "No", variability: "constant") %> @@ -1269,9 +1269,9 @@ The following four members let you give the specification conditions for the coo Design (rating) entering air dry bulb temperature, used with DX and CHW cooling coils. With CHW coils, this input is used only as the temperature at which to convert _ahccVfR_ from volume to mass. -<%= member*table( +<%= member_table( units: "^o^F", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "80^o^F (AHRI)", required: "No", variability: "constant") %> @@ -1280,9 +1280,9 @@ variability: "constant") %> Design (rating) entering air wet bulb temperature, for CHW coils. -<%= member*table( +<%= member_table( units: "^o^F", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "67^o^F (AHRI)", required: "No", variability: "constant") %> @@ -1291,9 +1291,9 @@ variability: "constant") %> Design (rating) condenser temperature (outdoor air temperature) for DX coils. -<%= member*table( +<%= member_table( units: "^o^F", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "95^o^F (AHRI)", required: "No", variability: "constant") %> @@ -1302,9 +1302,9 @@ variability: "constant") %> Design (rating) (volumetric) air flow rate for DX or CHW cooling coil. The AHRI specification for this test condition for CHW coils is "450 cfm/ton or less", right?? -<%= member*table( +<%= member_table( units: "cfm", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "DX coil: _ahccVfRperTon_ CHW coil: _sfanVfDs_", required: "No", variability: "constant") %> @@ -1326,9 +1326,9 @@ variability: "constant") %> Auxiliary energy used by the cooling coil. -<%= member*table( +<%= member_table( units: "Btu/hr", -legal_range: "\_x* $\\ge$ 0", +legal_range: "_x_ $\\ge$ 0", default: "0", required: "No", variability: "hourly") %> @@ -1337,9 +1337,9 @@ variability: "hourly") %> Specifies a meter for recording auxiliary energy use. End use category "Aux" is used. -<%= member*table( +<%= member_table( units: "", -legal_range: "\_name of a METER*", +legal_range: "_name of a METER_", default: "_not recorded_", required: "No", variability: "constant") %> @@ -1374,9 +1374,9 @@ variability: "constant") %> Design minimum outside air flow. If _oaMnCtrl_ is FRACTION, then this is the minimum outside air flow at full air handler flow. See formulas in _oaMnCtrl_ description, just above. -<%= member*table( +<%= member_table( units: "cfm", -legal_range: "\_x* $\\ge$ 0", +legal_range: "_x_ $\\ge$ 0", default: "0.15 times total area of zones served", required: "No", variability: "constant") %> @@ -1385,9 +1385,9 @@ variability: "constant") %> Fraction of minimum outside air to use this hour, normally 1.0. Use a CSE expression that evaluates to 0 for hours you wish to disable the minimum outside air flow, for example to suppress ventilation during the night or during warm-up hours. Intermediate values may be used for intermediate outside air minima. See formulas in _oaMnCtrl_ description, above. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "1.0", required: "No", variability: "hourly") %> @@ -1400,9 +1400,9 @@ For the purposes of airnet zone pressure modeling ONLY, _oaZoneLeak_ specifies t The default assumption is that airhandlers with return or relief fans provide balanced zone flows while half the supply flow leaks from zones served by supply-fan-only airhandlers. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "no return/relief fan: 0.5 else 0", required: "No", variability: "hourly") %> @@ -1421,11 +1421,11 @@ Second, the economizer will operate even if the air handler is heating, resultin Type of economizer. Choice of: -<%= csv*table(< false) +<%= csv_table(< false) NONE, No economizer; outside air flow is the minimum. INTEGRATED, Coil and economizer operate independently. NONINTEGRATED, Coil does not run when economizer is using all outside air: simulates interlock in some equipment designed to prevent coil icing due to insufficient load, right? -TWO_STAGE, Economizer is disabled when coil cycles on. \_NOT IMPLEMENTED* as of July 1992. +TWO_STAGE, Economizer is disabled when coil cycles on. _NOT IMPLEMENTED_ as of July 1992. END %> @@ -1433,9 +1433,9 @@ END Economizer outside air temperature high limit. The economizer is disabled (outside air flow is reduced to a minimum) when the outside air temperature is greater than _oaLimT_. A number may be entered, or "RA" to specify the current Return Air temperature. _OaLimT_ may be scheduled to a low value, for example -99, if desired to disable the economizer at certain times. -<%= member*table( +<%= member_table( units: "^o^F", -legal_range: "\_number* or RA", +legal_range: "_number_ or RA", default: "RA (return air temperature)", required: "No", variability: "hourly") %> @@ -1444,9 +1444,9 @@ variability: "hourly") %> Economizer outside air enthalpy high limit. The economizer is disabled (outside air flow is reduced to a minimum) when the outside air enthalpy is greater than _oaLimE_. A number may be entered, or "RA" to specify the current Return Air enthalpy. _OaLimE_ may be scheduled to a low value, for example -99, if desired to disable the economizer at certain times. -<%= member*table( +<%= member_table( units: "Btu/^o^F", -legal_range: "\_number* or RA", +legal_range: "_number_ or RA", default: "999 (enthalpy limit disabled)", required: "No", variability: "hourly") %> @@ -1457,9 +1457,9 @@ _oaOaLeak_ and _oaRaLeak_ specify leakages in the economizer dampers, when prese Outside air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. If an economizer is present, _oaOaLeak_ is a fraction of the supply fan design cfm, _sfanVfDs_. Otherwise, _oaOaLeak_ is a fraction of the design minimum outside air flow _oaVfDsMn_. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", default: "0.1", required: "No", variability: "constant") %> @@ -1468,9 +1468,9 @@ variability: "constant") %> Return air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. Expressed as a fraction of the supply fan design cfm, _sfanVfDs_. Not used when no economizer is being modeled. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", default: "0.1", required: "No", variability: "constant") %> @@ -1483,9 +1483,9 @@ The following data members are used to describe a heat exchanger for recovering Heat exchanger design or rated flow. -<%= member*table( +<%= member_table( units: "cfm", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: "_oaVfDsMn_", required: "No", variability: "constant") %> @@ -1494,9 +1494,9 @@ variability: "constant") %> Heat exchanger flow fraction (of design flow) used for second set of effectivenesses. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\lt$ \_x* $\\lt$ 1.0", +legal_range: "0 $\\lt$ _x_ $\\lt$ 1.0", default: "0.75", required: "No", variability: "constant") %> @@ -1505,9 +1505,9 @@ variability: "constant") %> Heat exchanger sensible effectiveness in heating mode at the design flow rate. Specifying input triggers modeling of heat recovery. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", required: "when modeling heat recovery", variability: "constant") %> @@ -1515,9 +1515,9 @@ variability: "constant") %> Heat exchanger sensible effectiveness in heating mode at the second flow rate (**oaHXf2**). -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", default: "0", required: "No", variability: "constant") %> @@ -1526,9 +1526,9 @@ variability: "constant") %> Heat exchanger latent effectiveness in heating mode at the design flow rate. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", default: "0", required: "No", variability: "constant") %> @@ -1537,9 +1537,9 @@ variability: "constant") %> Heat exchanger latent effectiveness in heating mode at the second flow rate (**oaHXf2**). -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", default: "0", required: "No", variability: "constant") %> @@ -1548,9 +1548,9 @@ variability: "constant") %> Heat exchanger sensible effectiveness in cooling mode at the design flow rate. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", default: "0", required: "No", variability: "constant") %> @@ -1559,9 +1559,9 @@ variability: "constant") %> Heat exchanger sensible effectiveness in cooling mode at the second flow rate (**oaHXf2**). -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", default: "0", required: "No", variability: "constant") %> @@ -1570,9 +1570,9 @@ variability: "constant") %> Heat exchanger latent effectiveness in cooling mode at the design flow rate. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", default: "0", required: "No", variability: "constant") %> @@ -1581,9 +1581,9 @@ variability: "constant") %> Heat exchanger latent effectiveness in cooling mode at the second flow rate (**oaHXf2**). -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1.0", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", default: "0", required: "No", variability: "constant") %> @@ -1603,9 +1603,9 @@ variability: "constant") %> Auxiliary power required to operate the heat recovery device (e.g., wheel motor, contorls). -<%= member*table( +<%= member_table( units: "W", -legal_range: "\_x* $\\ge$ 0", +legal_range: "_x_ $\\ge$ 0", default: "0", required: "No", variability: "subhourly") %> @@ -1614,9 +1614,9 @@ variability: "subhourly") %> Name of meter, if any, to record energy used by auxiliary components of the heat recovery system. -<%= member*table( +<%= member_table( units: "", -legal_range: "\_name of a METER*", +legal_range: "_name of a METER_", default: "_not recorded_", required: "No", variability: "constant") %> @@ -1631,9 +1631,9 @@ If unequal leaks are specified, at present (July 1992) CSE will use the average Supply duct leakage to outdoors, expressed as a fraction of supply fan design flow (_sfanVfDs_). Use 0 if the duct is indoors. A constant-cfm leak is modeled, as the pressure is constant when the fan is on. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "0.01", required: "No", variability: "constant") %> @@ -1642,9 +1642,9 @@ variability: "constant") %> Return duct leakage FROM outdoors, expressed as a fraction of _sfanVfDs_. Use 0 if the duct is indoors. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "0.01", required: "No", variability: "constant") %> @@ -1655,9 +1655,9 @@ _AhSOLoss_ and _ahROLoss_ represent conductive losses from the common supply and Supply duct loss/gain to the outdoors. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "0.1", required: "No", variability: "constant") %> @@ -1666,9 +1666,9 @@ variability: "constant") %> Return duct heat loss/gain to the outdoors. -<%= member*table( +<%= member_table( units: "", -legal_range: "0 $\\le$ \_x* $\\le$ 1", +legal_range: "0 $\\le$ _x_ $\\le$ 1", default: "0.1", required: "No", variability: "constant") %> @@ -1687,9 +1687,9 @@ Appropriateness of use of these inputs when specifying a DX system without assoc Crankcase heater presence and control method. Choice of: -<%= csv*table(< false) +<%= csv_table(< false) NONE, No crankcase heater present -CONSTANT, Crankcase heater input always \_cchPMx* (below). +CONSTANT, Crankcase heater input always _cchPMx_ (below). PTC, Proportional control based on oil temp when compressor does not run in subhour (see _cchTMx_, _cchMn_, and _cchDT_). If compressor runs at all in subhour, the oil is assumed to be hotter than _cchTMn_ and crankcase heater input is _cchPMn_. (PTC stands for 'Positive Temperature Coefficient' or 'Proportional Temperature Control'.) TSTAT, Control based on outdoor temperature, with optional differential, during subhours when compressor is off; crankcase heater does not operate if compressor runs at all in subhour. See _cchTOn_, _cchTOff_. CONSTANT_CLO @@ -1697,10 +1697,10 @@ PTC_CLO, Same as corresponding choices above except zero crankcase heater input END %> -<%= member*table( +<%= member_table( units: "", legal_range: "CONSTANT CONSTANT_CLO PTC PTC_CLO TSTAT NONE", -default: "PTC_CLO if \_ahhcType* is AHP else NONE ", +default: "PTC_CLO if _ahhcType_ is AHP else NONE ", required: "No", variability: "constant") %> @@ -1708,20 +1708,20 @@ variability: "constant") %> Crankcase resistance heater input power; maximum power if _cchCM_ is PTC or PTC_CLO. -<%= member*table( +<%= member_table( units: "kW", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: ".4 kW", required: "No", variability: "constant") %> **cchPMn=_float_** -Crankcase heater minimum input power if _cchCM_ is PTC or PTC*CLO, disallowed for other \_cchCM's*. > 0. +Crankcase heater minimum input power if _cchCM_ is PTC or PTC_CLO, disallowed for other _cchCM's_. > 0. -<%= member*table( +<%= member_table( units: "kW", -legal_range: "\_x* $\\gt$ 0", +legal_range: "_x_ $\\gt$ 0", default: ".04 kW", required: "No", variability: "constant") %> @@ -1730,20 +1730,20 @@ variability: "constant") %> **cchTMn=_float_** -For _cchCM_ = PTC or PTC*CLO, the low temperature (max power) and high temperature (min power) setpoints. In subhours when the compressor does not run, crankcase heater input is \_cchPMx* when oil temperature is at or below _cchTMx_, _cchPMn_ when oil temp is at or above _cchTMn_, and varies linearly (proportionally) in between. _cchTMn_ must be $\ge$ _cchTMx_. See _cchDT_ (next). +For _cchCM_ = PTC or PTC_CLO, the low temperature (max power) and high temperature (min power) setpoints. In subhours when the compressor does not run, crankcase heater input is _cchPMx_ when oil temperature is at or below _cchTMx_, _cchPMn_ when oil temp is at or above _cchTMn_, and varies linearly (proportionally) in between. _cchTMn_ must be $\ge$ _cchTMx_. See _cchDT_ (next). (Note that actual thermostat setpoints probably cannot be used for _cchTMx_ and _cchTMn_ inputs, because the model assumes the difference between the oil temperature and the outdoor temperature is constant (_cchDT_) regardless of the heater power. -<%= member*table( +<%= member_table( units: "^o^F", legal_range: "", -default: "\_cchTMn*: 0; _cchTMx_: 150", +default: "_cchTMn_: 0; _cchTMx_: 150", required: "No", variability: "constant") %> **cchDT=_float_** -For _cchCM_ = PTC or PTC*CLO, how much warmer than the outdoor temp CSE assumes the crankcase oil to be in subhours when the compressor does not run. If the compressor runs at all in the subhour, the oil is assumed to be warmer than \_cchTMn*. +For _cchCM_ = PTC or PTC_CLO, how much warmer than the outdoor temp CSE assumes the crankcase oil to be in subhours when the compressor does not run. If the compressor runs at all in the subhour, the oil is assumed to be warmer than _cchTMn_. <%= member_table( units: "^o^F", @@ -1758,9 +1758,9 @@ variability: "constant") %> For _cchCM_ = TSTAT, in subhours when compressor does not run, the crankcase heater turn-on and turn-off outdoor temperatures, respectively. Unequal values may be given to simulate thermostat differential. When the compressor runs at all in a subhour, the crankcase heater is off for the entire subhour. -<%= member*table( +<%= member_table( units: "^o^F", -legal_range: "\_cchTOff* $\\ge$ _cchTOn_", +legal_range: "_cchTOff_ $\\ge$ _cchTOn_", default: "_cchTOn_: 72^o^F; _chcTOff_: _chcTOn_", required: "No", variability: "constant") %> @@ -1769,9 +1769,9 @@ variability: "constant") %> METER to record crankcase heater energy use, category "Aux"; not recorded if not given. -<%= member*table( +<%= member_table( units: "", -legal_range: "\_name of a METER*", +legal_range: "_name of a METER_", default: "_not recorded_", required: "No", variability: "constant") %> @@ -1780,14 +1780,14 @@ variability: "constant") %> Indicates the end of the air handler definition. Alternatively, the end of the air handler definition can be indicated by the declaration of another object. -<%= member*table( +<%= member_table( units: "", legal_range: "", -default: "\_none*", +default: "_none_", required: "No", variability: "constant") %> **Related Probes:** -- @[airHandler][p_airhandler] -- @[ahRes][p_ahres] (accumulated results) +- @[airHandler](#p_airhandler) +- @[ahRes](#p_ahres) (accumulated results) diff --git a/doc/src/docs/input-data/battery.md b/doc/src/docs/input-data/battery.md index 65ac14465..8377f5130 100644 --- a/doc/src/docs/input-data/battery.md +++ b/doc/src/docs/input-data/battery.md @@ -9,76 +9,76 @@ The modeler can set limits and constraints on capacities and flows and the assoc Name of the battery system. Given after the word BATTERY. <%= member_table( -units: "", -legal_range: "63 characters*", -default: "*none\*", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "63 characters*", + default: "*none*", + required: "No", + variability: "constant") + %> -**btMeter=_choice_** +**btMeter=*choice*** Name of a METER to which the BATTERY's charge/discharge energy flows are recorded. Battery energy flows are accumulated to meter end use "BT". Battery energy flows are seen from the standpoint of a "load" on the electric grid, so charges to the BATTERY system are positive values while discharges from the BATTERY system are negative values. -Note btMeter also determines the source for the probe value _loadSeen_. See discussion and example under btChgReq (below). +Note btMeter also determines the source for the probe value *loadSeen*. See discussion and example under btChgReq (below). <%= member_table( -units: "", -legal_range: "meter name ", -default: "_none_ ", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "meter name ", + default: "*none* ", + required: "No", + variability: "constant") + %> -**btChgEff=_float_** +**btChgEff=*float*** The charging efficiency of storing electricity into the BATTERY system. A value of 1.0 means that no energy is lost and 100% of charge energy enters and is stored in the battery. <%= member_table( -units: "", -legal_range: "0 < x $\\le$ 1", -default: "0.975", -required: "No", -variability: "hourly") -%> + units: "", + legal_range: "0 < x $\\le$ 1", + default: "0.975", + required: "No", + variability: "hourly") + %> -**btDschgEff=_float_** +**btDschgEff=*float*** The discharge efficiency for when the BATTERY system is discharging power. A value of 1.0 means that no energy is lost and 100% of discharge energy leaves the system. <%= member_table( -units: "", -legal_range: "0 < x $\\le$ 1", -default: "0.975", -required: "No", -variability: "hourly") -%> + units: "", + legal_range: "0 < x $\\le$ 1", + default: "0.975", + required: "No", + variability: "hourly") + %> -**btMaxCap=_float_** +**btMaxCap=*float*** This is the maximum amount of energy that can be stored in the BATTERY system in kilowatt-hours. Once the BATTERY has reached its maximum capacity, no additional energy will be stored. <%= member_table( -units: "kWh", -legal_range: "x $\\ge$ 0", -default: "16", -required: "No", -variability: "constant") -%> + units: "kWh", + legal_range: "x $\\ge$ 0", + default: "16", + required: "No", + variability: "constant") + %> -**btInitSOE=_float_** +**btInitSOE=*float*** The initial state of energy of the BATTERY system as a fraction of the total capacity. If `btInitSOE` is specified, the battery state-of-energy at the beginning of the actual simulation will be set to the amount specified, regardless of whether there was a warm-up period or not. If `btInitSOE` is NOT specififed, it will default to 1.0 (i.e., 100%) at the beginning of the warmup period (if any). <%= member_table( -units: "", -legal_range: "0 $\\le$ x $\\le$ 0", -default: "1.0", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "0 $\\le$ x $\\le$ 0", + default: "1.0", + required: "No", + variability: "constant") + %> -**btInitCycles=_int_** +**btInitCycles=*int*** The number of cycles on the battery at the beginning of the run. @@ -89,92 +89,92 @@ Note: a more robust life model will need not only cycle counts but cycles by dep <% end %> <%= member_table( -units: "number of cycles", -legal_range: "x $\\ge$ 0", -default: "0", -required: "No", -variability: "runly") -%> + units: "number of cycles", + legal_range: "x $\\ge$ 0", + default: "0", + required: "No", + variability: "runly") + %> -**btMaxChgPwr=_float_** +**btMaxChgPwr=*float*** -The maximum rate at which the BATTERY can be charged in kilowatts (i.e., energy flowing _into_ the BATTERY). +The maximum rate at which the BATTERY can be charged in kilowatts (i.e., energy flowing *into* the BATTERY). <%= member_table( -units: "kW", -legal_range: "x $\\ge$ 0", -default: "4", -required: "No", -variability: "hourly") -%> + units: "kW", + legal_range: "x $\\ge$ 0", + default: "4", + required: "No", + variability: "hourly") + %> -**btMaxDschgPwr=_float_** +**btMaxDschgPwr=*float*** -The maximum rate at which the BATTERY can be discharged in kilowatts (i.e., energy flowing _out of_ the BATTERY). +The maximum rate at which the BATTERY can be discharged in kilowatts (i.e., energy flowing *out of* the BATTERY). <%= member_table( -units: "kW", -legal_range: "x $\\ge$ 0", -default: "4", -required: "No", -variability: "hourly") -%> + units: "kW", + legal_range: "x $\\ge$ 0", + default: "4", + required: "No", + variability: "hourly") + %> -**btControlAlg=_choice_** +**btControlAlg=*choice*** -Selects charge/discharge control algorithm. btChgReq (next) specifies the desired battery charge or discharge rate. btControlAlg allows selection of alternative algorithms for deriving btChgReq. +Selects charge/discharge control algorithm. btChgReq (next) specifies the desired battery charge or discharge rate. btControlAlg allows selection of alternative algorithms for deriving btChgReq. <%= csv_table(< false) -DEFAULT, btChgReq is used as input or defaulted (see below) -TDVPEAKSAVE, btChgReq input (if any) is ignored. Instead, a California-specific algorithm is used that saves battery charge until peak TDV (Time Dependant Valuation) hours of the day, shifting energy generated on site (e.g. PV) to supply feed the grid during critical periods. The algorithm requires availability of hourly TDV data, see Top.tdvFName. +DEFAULT, btChgReq is used as input or defaulted (see below) +TDVPEAKSAVE, btChgReq input (if any) is ignored. Instead, a California-specific algorithm is used that saves battery charge until peak TDV (Time Dependant Valuation) hours of the day, shifting energy generated on site (e.g. PV) to supply feed the grid during critical periods. The algorithm requires availability of hourly TDV data, see Top.tdvFName. END %> -Note btControlAlg has hourly variability, allowing dynamic algorithm selection. In California compliance applications, TDVPEAKSAVE is typically used only on days with high TDV peaks. +Note btControlAlg has hourly variability, allowing dynamic algorithm selection. In California compliance applications, TDVPEAKSAVE is typically used only on days with high TDV peaks. <%= member_table( -units: "", -legal_range: "DEFAULT or TDVPEAKSAVE", -default: "DEFAULT", -required: "No", -variability: "hourly") -%> + units: "", + legal_range: "DEFAULT or TDVPEAKSAVE", + default: "DEFAULT", + required: "No", + variability: "hourly") + %> -**btChgReq=_float_** +**btChgReq=*float*** -The power request to charge (or discharge if negative) the battery. If omitted, the default strategy is used (attempt to satisfy all loads and absorb all available excess power). btChgReq and the default strategy requested power are literally _requests_: that is, more power will not be delivered than is available; more power will not be absorbed than capacity exits to store; and the battery's power limits will be respected. +The power request to charge (or discharge if negative) the battery. If omitted, the default strategy is used (attempt to satisfy all loads and absorb all available excess power). btChgReq and the default strategy requested power are literally *requests*: that is, more power will not be delivered than is available; more power will not be absorbed than capacity exits to store; and the battery's power limits will be respected. -btChgReq can be set by an expression to allow complex energy management/dispatch strategies. These approaches typically involve the BATTERY probe value _loadSeen_, which is the net electricity use (not including the battery) on the meter specified by btMeter (above). When loadSeen is positive, electricity input (e.g. from the grid) is required; when negative, excess electrical energy is available from photovoltaic generation. loadSeen can be used in btChgReq expressions such as -- +btChgReq can be set by an expression to allow complex energy management/dispatch strategies. These approaches typically involve the BATTERY probe value *loadSeen*, which is the net electricity use (not including the battery) on the meter specified by btMeter (above). When loadSeen is positive, electricity input (e.g. from the grid) is required; when negative, excess electrical energy is available from photovoltaic generation. loadSeen can be used in btChgReq expressions such as -- btChgReq = select( $hour>=9 && $hour<=20,-min(@BATTERY[ 1].loadSeen, 0), // hrs 9 - 20: charge when surplus energy default -max( @BATTERY[ 1].loadSeen, 0)) // else: discharge when energy is required -The sign conventions here are tricky. min(@BATTERY[ 1].loadSeen, 0) produces a value <=0 that is the negative of the amount of surplus energy available. A positive btChgReq value requests charging, hence "-" (minus sign) in front of the min(). Conversely, max( @BATTERY[ 1].loadSeen, 0) results in a value >= 0 indicating the net energy needed by the building. To request discharge, btChgReq must be negative, so "-" is also needed in the discharge expression. (The @BATTERY[1] references mean "this battery", assuming there is only one battery being modelled. In multi-battery situations, the current BATTERY's index or name must be included within the "[ ]".) +The sign conventions here are tricky. min(@BATTERY[ 1].loadSeen, 0) produces a value <=0 that is the negative of the amount of surplus energy available. A positive btChgReq value requests charging, hence "-" (minus sign) in front of the min(). Conversely, max( @BATTERY[ 1].loadSeen, 0) results in a value >= 0 indicating the net energy needed by the building. To request discharge, btChgReq must be negative, so "-" is also needed in the discharge expression. (The @BATTERY[1] references mean "this battery", assuming there is only one battery being modelled. In multi-battery situations, the current BATTERY's index or name must be included within the "[ ]".) <%= member_table( -units: "kW", -legal_range: "", -default: "btMeter net load", -required: "No", -variability: "hourly") -%> + units: "kW", + legal_range: "", + default: "btMeter net load", + required: "No", + variability: "hourly") + %> -**btUseUsrChg=_choice_** +**btUseUsrChg=*choice*** -Former yes/no choice that currently has no effect. Deprecated, will be removed in a future version. +Former yes/no choice that currently has no effect. Deprecated, will be removed in a future version. **endBATTERY** Optionally indicates the end of the BATTERY definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. <%= member_table( -units: "", -legal_range: "", -default: "_none_ ", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "", + default: "*none* ", + required: "No", + variability: "constant") + %> <%= member_table( -units: "^o^F", -legal_range: "_unrestricted_", -default: "_none_", -required: "Required if _sfExCnd_ = SPECIFIEDT", -variability: "hourly") -%> + units: "^o^F", + legal_range: "*unrestricted*", + default: "*none*", + required: "Required if *sfExCnd* = SPECIFIEDT", + variability: "hourly") + %> -**dsInsulR=_float_** +**dsInsulR=*float*** -Insulation thermal resistance _not including_ surface conductances. dsInsulR and dsInsulMat are used to calculate insulation thickness (see below). Duct insulation is modeled as a pure conductance (no mass). +Insulation thermal resistance *not including* surface conductances. dsInsulR and dsInsulMat are used to calculate insulation thickness (see below). Duct insulation is modeled as a pure conductance (no mass). <%= member_table( -units: "ft^2^-^o^F-hr / Btu", -legal_range: "x $\\ge$ 0", -default: "0", -required: "No", -variability: "constant") -%> + units: "ft^2^-^o^F-hr / Btu", + legal_range: "x $\\ge$ 0", + default: "0", + required: "No", + variability: "constant") + %> -**dsInsulMat=_matName_** +**dsInsulMat=*matName*** -Name of insulation MATERIAL. The conductivity of this material at 70 ^o^F is combined with dsInsulR to derive the duct insulation thickness. If omitted, a typical fiberglass material is assumed having conductivity of 0.025 Btu/hr-ft^2^-F at 70 ^o^F and a conductivity coefficient of .00418 1/F (see MATERIAL). In addition, insulation conductivity is adjusted during the simulation in response its average temperature. As noted with dsInsulR, duct insulation is modeled as pure conductance -- MATERIAL matDens and matSpHt are ignored. +Name of insulation MATERIAL. The conductivity of this material at 70 ^o^F is combined with dsInsulR to derive the duct insulation thickness. If omitted, a typical fiberglass material is assumed having conductivity of 0.025 Btu/hr-ft^2^-F at 70 ^o^F and a conductivity coefficient of .00418 1/F (see MATERIAL). In addition, insulation conductivity is adjusted during the simulation in response its average temperature. As noted with dsInsulR, duct insulation is modeled as pure conductance -- MATERIAL matDens and matSpHt are ignored. <%= member_table( -units: "", -legal_range: "name of a _MATERIAL_", -default: "fiberglass", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "name of a *MATERIAL*", + default: "fiberglass", + required: "No", + variability: "constant") + %> -**dsLeakF=_float_** +**dsLeakF=*float*** Duct leakage. Return duct leakage is modeled as if it all occurs at the segment inlet. Supply duct leakage is modeled as if it all occurs at the outlet. <%= member_table( -units: "", -legal_range: "0 $<$ x $\\le$ 1", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "0 $<$ x $\\le$ 1", + default: "*none*", + required: "No", + variability: "constant") + %> -**dsExH=_float_** +**dsExH=*float*** Outside (exposed) surface convection coefficient. <%= member_table( -units: "Btuh/ft^2^-^o^F", -legal_range: "x $\\ge$ 0", -default: ".54", -required: "No", -variability: "subhourly") -%> + units: "Btuh/ft^2^-^o^F", + legal_range: "x $\\ge$ 0", + default: ".54", + required: "No", + variability: "subhourly") + %> **endDuctSeg** Optionally indicates the end of the DUCTSEG definition. <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[ductSeg][p_ductseg] -- @[izXfer][p_izxfer] (generated as "\-DLkI" for supply or "\-DLkO" for return) +- @[ductSeg](#p_ductseg) +- @[izXfer](#p_izxfer) (generated as "\-DLkI" for supply or "\-DLkO" for return) diff --git a/doc/src/docs/input-data/export.md b/doc/src/docs/input-data/export.md index 4b2a9e569..9b44854c3 100644 --- a/doc/src/docs/input-data/export.md +++ b/doc/src/docs/input-data/export.md @@ -6,7 +6,7 @@ No exports are generated by default; each desired export must be specified with Each row of an export contains several values, separated by commas, with quotes around string values. The row is terminated with a carriage return/line feed character pair. The first fields of the row identify the data. Multiple fields are used as necessary to identify the data. For example, the rows of an hourly ZEB export begin with the month, day of month, and hour of day. In contrast, reports, being subject to a width limitation, use only a single column of each row to identify the data; additional identification is put in the header. For example, an hourly ZEB Report shows the hour in a column and the day and month in the header; the header is repeated at the start of each day. The header of an export is never repeated. -Depending on your application, if you specify multiple exports, you may need to place each in a separate file. Generate these files with EXPORTFILE, preceding section. You may also need to suppress the export header and/or footer, with _exHeader_ and/or _exFooter_, described in this section. +Depending on your application, if you specify multiple exports, you may need to place each in a separate file. Generate these files with EXPORTFILE, preceding section. You may also need to suppress the export header and/or footer, with *exHeader* and/or *exFooter*, described in this section. Input for EXPORTs is similar to input for REPORTs; refer to the REPORT description in Section 5.25 for further discussion of the members shown here. @@ -15,224 +15,224 @@ Input for EXPORTs is similar to input for REPORTs; refer to the REPORT descripti Name of export. Give after the word EXPORT. <%= member_table( -units: "", -legal_range: "_63 characters_", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") + %> -**exExportfile=_fname_** +**exExportfile=*fname*** Name of export file to which current export will be written. If omitted, if EXPORT is within an EXPORTFILE object, report will be written to that export file, or else to the automatically-supplied EXPORTFILE "Primary", which by default uses the name of the input file with the extension .csv. <%= member_table( -units: "", -legal_range: "name of an _EXPORTFILE_", -default: "current _EXPORTFILE_, if any, else 'Primary'", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "name of an *EXPORTFILE*", + default: "current *EXPORTFILE*, if any, else 'Primary'", + required: "No", + variability: "constant") + %> -**exType=_choice_** +**exType=*choice*** -Choice indicating export type. See descriptions in Section 5.22, REPORT. While not actually disallowed, use of _exType_ = ERR, LOG, INP, or ZDD is unexpected. +Choice indicating export type. See descriptions in Section 5.22, REPORT. While not actually disallowed, use of *exType* = ERR, LOG, INP, or ZDD is unexpected. <%= member_table( -units: "", -legal_range: "ZEB, ZST, MTR, DHWMTR, AH, UDT, or SUM", -default: "_none_", -required: "Yes", -variability: "constant") -%> + units: "", + legal_range: "ZEB, ZST, MTR, DHWMTR, AH, UDT, or SUM", + default: "*none*", + required: "Yes", + variability: "constant") + %> -**exFreq=_choice_** +**exFreq=*choice*** Export Frequency: specifies interval for generating rows of export data: <%= member_table( -units: "", -legal_range: "YEAR, MONTH, DAY, HOUR, HOURANDSUB, SUBHOUR", -default: "_none_", -required: "Yes", -variability: "constant") -%> + units: "", + legal_range: "YEAR, MONTH, DAY, HOUR, HOURANDSUB, SUBHOUR", + default: "*none*", + required: "Yes", + variability: "constant") + %> -**exDayBeg=_date_** +**exDayBeg=*date*** -Initial day of export. Exports for which _exFreq_ = YEAR do not allow specification of _exDayBeg_ and _exDayEnd_; for MONTH exports, these members are optional and default to include the entire run; for DAY and shorter-interval exports, _exDayBeg_ is required and _exDayEnd_ defaults to _exDayBeg_. +Initial day of export. Exports for which *exFreq* = YEAR do not allow specification of *exDayBeg* and *exDayEnd*; for MONTH exports, these members are optional and default to include the entire run; for DAY and shorter-interval exports, *exDayBeg* is required and *exDayEnd* defaults to *exDayBeg*. <%= member_table( -units: "", -legal_range: "_date_", -default: "first day of simulation if _exFreq_ = MONTH", -required: "Required for _exTypes_ ZEB, ZST, MTR, AH, and UDT if _exFreq_ is DAY, HOUR, HOURANDSUB, or SUBHOUR", -variability: "constant") -%> + units: "", + legal_range: "*date*", + default: "first day of simulation if *exFreq* = MONTH", + required: "Required for *exTypes* ZEB, ZST, MTR, AH, and UDT if *exFreq* is DAY, HOUR, HOURANDSUB, or SUBHOUR", + variability: "constant") + %> -**exDayEnd=_date_** +**exDayEnd=*date*** Final day of export period, except for YEAR exports. <%= member_table( -units: "", -legal_range: "_date_", -default: "last day of simulation if _exFreq_= MONTH, else _exDayBeg_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "*date*", + default: "last day of simulation if *exFreq*= MONTH, else *exDayBeg*", + required: "No", + variability: "constant") + %> -**exZone=_znName_** +**exZone=*znName*** -Name of ZONE for which a ZEB, ZST, or ZDD export is being requested; ALL and SUM are also allowed except with _exType_ = ZST. +Name of ZONE for which a ZEB, ZST, or ZDD export is being requested; ALL and SUM are also allowed except with *exType* = ZST. <%= member_table( -units: "", -legal_range: "name of a _ZONE_, ALL, SUM", -default: "_none_", -required: "Required for _exTypes_ ZDD, ZEB, and ZST.", -variability: "constant") -%> + units: "", + legal_range: "name of a *ZONE*, ALL, SUM", + default: "*none*", + required: "Required for *exTypes* ZDD, ZEB, and ZST.", + variability: "constant") + %> -**exMeter=_mtrName_** +**exMeter=*mtrName*** -Specifies meter(s) whose data is to be exported, for _exType_=MTR. +Specifies meter(s) whose data is to be exported, for *exType*=MTR. <%= member_table( -units: "", -legal_range: "name of a _METER_, ALL, SUM", -default: "_none_", -required: "for _exType_=MTR", -variability: "constant") -%> + units: "", + legal_range: "name of a *METER*, ALL, SUM", + default: "*none*", + required: "for *exType*=MTR", + variability: "constant") + %> -**exTu=_tuName_** +**exTu=*tuName*** -Specifies air handler(s) to be reported, for _rpType_=TUSIZE or TULOAD. +Specifies air handler(s) to be reported, for *rpType*=TUSIZE or TULOAD. <%= member_table( -units: "", -legal_range: "name of a TERMINAL, ALL, SUM", -default: "", -required: "Required for _rpType_", -variability: "constant") %> + units: "", + legal_range: "name of a TERMINAL, ALL, SUM", + default: "", + required: "Required for *rpType*", + variability: "constant") %> -**exDHWMeter=_dhwMtrName_** +**exDHWMeter=*dhwMtrName*** -Specifies DHW meter(s) whose data is to be exported, for _exType_=DHWMTR. +Specifies DHW meter(s) whose data is to be exported, for *exType*=DHWMTR. <%= member_table( -units: "", -legal_range: "name of a _DHWMETER_, ALL, SUM", -default: "_none_", -required: "for _exType_=DHWMTR", -variability: "constant") -%> + units: "", + legal_range: "name of a *DHWMETER*, ALL, SUM", + default: "*none*", + required: "for *exType*=DHWMTR", + variability: "constant") + %> -**exAFMeter=_afMtrName_** +**exAFMeter=*afMtrName*** Air flow meter report. <%= member_table( -units: "", -legal_range: "_Name of AFMETER_", -default: "0", -required: "No", -variability: "runly") %> + units: "", + legal_range: "*Name of AFMETER*", + default: "0", + required: "No", + variability: "runly") %> **exAh=ah*Name*** -Specifies air handler(s) to be exported, for _exType_=AH. +Specifies air handler(s) to be exported, for *exType*=AH. <%= member_table( -units: "", -legal_range: "name of an _AIRHANDLER_, ALL, SUM", -default: "_none_", -required: "for _exType_=AH", -variability: "constant") -%> + units: "", + legal_range: "name of an *AIRHANDLER*, ALL, SUM", + default: "*none*", + required: "for *exType*=AH", + variability: "constant") + %> -**exBtuSf=_float_** +**exBtuSf=*float*** Scale factor used for exported energy values. <%= member_table( -units: "", -legal_range: "_any multiple of ten_", -default: "1,000,000: energy exported in MBtu.", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "*any multiple of ten*", + default: "1,000,000: energy exported in MBtu.", + required: "No", + variability: "constant") + %> -**exCond=_expression_** +**exCond=*expression*** -Conditional exporting flag. If given, export rows are generated only when value of expression is non-0. Allowed with _exTypes_ ZEB, ZST, MTR, AH, and UDT. +Conditional exporting flag. If given, export rows are generated only when value of expression is non-0. Allowed with *exTypes* ZEB, ZST, MTR, AH, and UDT. <%= member_table( -units: "", -legal_range: "_any numeric expression_", -default: "1 (exporting enabled)", -required: "No", -variability: "subhour /end of interval") -%> + units: "", + legal_range: "*any numeric expression*", + default: "1 (exporting enabled)", + required: "No", + variability: "subhour /end of interval") + %> -**exTitle=_string_** +**exTitle=*string*** -Title for use in export header of User-Defined export. Disallowed if _exType_ is not UDT. +Title for use in export header of User-Defined export. Disallowed if *exType* is not UDT. <%= member_table( -units: "", -legal_range: "", -default: "User-defined Export", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "", + default: "User-defined Export", + required: "No", + variability: "constant") + %> -**exHeader=_choice_** +**exHeader=*choice*** Use NO to suppress the export header which gives the export type, zone, meter, or air handler being exported, time interval, column headings, etc. You might do this if the export is to be subsequently imported to a program that is confused by the header information. Alternatively, one may use COLUMNSONLY to print only the column headings. This can be useful when plotting CSV data in a spreadsheet tool or [DView](https://beopt.nrel.gov/downloadDView). -The choices YESIFNEW and COLUMNSONLYIFNEW cause header generation when the associated EXPORTFILE is being created but suppress headers when appending to an existing file. This is useful for accumulating results from a set of runs where typically column headings are desired only once. +The choices YESIFNEW and COLUMNSONLYIFNEW cause header generation when the associated EXPORTFILE is being created but suppress headers when appending to an existing file. This is useful for accumulating results from a set of runs where typically column headings are desired only once. If not suppressed, the export header shows, in four lines: -_runTitle_ and _runSerial_ (see Section 5.1);the run date and time the export type ("Energy Balance", "Statistics", etc., or _exTitle_ if given)and frequency ("year", "day", etc.)a list of field names in the order they will be shown in the data rows("Mon", "Day", "Tair", etc.) +*runTitle* and *runSerial* (see Section 5.1);the run date and time the export type ("Energy Balance", "Statistics", etc., or *exTitle* if given)and frequency ("year", "day", etc.)a list of field names in the order they will be shown in the data rows("Mon", "Day", "Tair", etc.) -The _specific_ month, day, etc. is NOT shown in the export header (as it is shown in the report header), because it is shown in each export row. +The *specific* month, day, etc. is NOT shown in the export header (as it is shown in the report header), because it is shown in each export row. The field names may be used by a program reading the export to identify the data in the rows which follow; if the program does this, it will not require modification when fields are added to or rearranged in the export in a future version of CSE. <%= member_table( -units: "", -legal_range: "YES, YESIFNEW, NO, COLUMNSONLY, COLUMNSONLYIFNEW", -default: "YES", -required: "No", -variability: "constant") %> + units: "", + legal_range: "YES, YESIFNEW, NO, COLUMNSONLY, COLUMNSONLYIFNEW", + default: "YES", + required: "No", + variability: "constant") %> -**exFooter=_choice_** +**exFooter=*choice*** Use NO to suppress the blank line otherwise output as an export "footer". (Exports do not receive the total lines that most reports receive as footers.) <%= member_table( -units: "", -legal_range: "YES, NO", -default: "YES", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "YES, NO", + default: "YES", + required: "No", + variability: "constant") + %> **endExport** Optionally indicates the end of the export definition. Alternatively, the end of the export definition can be indicated by END or by beginning another object. <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[export][p_export] +- @[export](#p_export) diff --git a/doc/src/docs/input-data/exportcol.md b/doc/src/docs/input-data/exportcol.md index e2e1b7474..d9a6e0e34 100644 --- a/doc/src/docs/input-data/exportcol.md +++ b/doc/src/docs/input-data/exportcol.md @@ -11,80 +11,80 @@ EXPORTCOL members are similar to the corresponding REPORTCOL members. See Sectio Name of EXPORTCOL. <%= member_table( -units: "", -legal_range: "_63 characters_", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") + %> -**colExport=_exName_** +**colExport=*exName*** -Name of export to which this column belongs. If the EXPORTCOL is given within an EXPORT object, then _colExport_ defaults to that export. +Name of export to which this column belongs. If the EXPORTCOL is given within an EXPORT object, then *colExport* defaults to that export. <%= member_table( -units: "", -legal_range: "name of an _EXPORT_", -default: "_current export, if any_", -required: "Unless in an _EXPORT_", -variability: "constant") -%> + units: "", + legal_range: "name of an *EXPORT*", + default: "*current export, if any*", + required: "Unless in an *EXPORT*", + variability: "constant") + %> -**colVal=_expression_** +**colVal=*expression*** Value to show in this position in each row of export. <%= member_table( -units: "", -legal_range: "_any numeric or string expression_", -default: "_none_", -required: "Yes", -variability: "subhour /end interval") -%> + units: "", + legal_range: "*any numeric or string expression*", + default: "*none*", + required: "Yes", + variability: "subhour /end interval") + %> -**colHead=_string_** +**colHead=*string*** Text used for field name in export header. <%= member_table( -units: "", -legal_range: "", -default: "_colName_ or blank", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "", + default: "*colName* or blank", + required: "No", + variability: "constant") + %> -**colWid=_int_** +**colWid=*int*** -Maximum width. Leading and trailing spaces and non-significant zeroes are removed from export data to save file space. Specifying a _colWid_ less than the default may reduce the maximum number of significant digits output. +Maximum width. Leading and trailing spaces and non-significant zeroes are removed from export data to save file space. Specifying a *colWid* less than the default may reduce the maximum number of significant digits output. <%= member_table( -units: "", -legal_range: "x $\\ge$ 0", -default: "13", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "x $\\ge$ 0", + default: "13", + required: "No", + variability: "constant") + %> -**colDec=_int_** +**colDec=*int*** Number of digits after decimal point. <%= member_table( -units: "", -legal_range: "x $\\ge$ 0", -default: "_flexible format_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "x $\\ge$ 0", + default: "*flexible format*", + required: "No", + variability: "constant") + %> -**colJust=_choice_** +**colJust=*choice*** Specifies positioning of data within column: <%= csv_table(< false) -Left, Left justified -Right, Right justified + Left, Left justified + Right, Right justified END %> @@ -93,13 +93,13 @@ END Optionally indicates the end of the EXPORTCOL. Alternatively, the end of the definition can be indicated by END or by beginning another object. <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[exportCol][p_exportcol] +- @[exportCol](#p_exportcol) diff --git a/doc/src/docs/input-data/exportfile.md b/doc/src/docs/input-data/exportfile.md index e9231c6ea..4fc9c54af 100644 --- a/doc/src/docs/input-data/exportfile.md +++ b/doc/src/docs/input-data/exportfile.md @@ -11,58 +11,58 @@ Input for EXPORTFILEs and EXPORTs is similar to that for REPORTFILEs and REPORTs Name of EXPORTFILE object. <%= member_table( -units: "", -legal_range: "_63 characters_", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") + %> -**xfFileName=_string_** +**xfFileName=*string*** path name of file to be written. If no path is specified, the file is written in the current directory. If no extension is specified, .csv is used. <%= member_table( -units: "", -legal_range: "_file name, path and extension optional_", -default: "_none_", -required: "Yes", -variability: "constant") -%> + units: "", + legal_range: "*file name, path and extension optional*", + default: "*none*", + required: "Yes", + variability: "constant") + %> -**xfFileStat=_choice_** +**xfFileStat=*choice*** -What CSE should do if file _xfFileName_ already exists: +What CSE should do if file *xfFileName* already exists: <%= csv_table(< false) -OVERWRITE, Overwrite pre-existing file. -NEW, Issue error message if file exists. -APPEND, Append new output to present contents of existing file. + OVERWRITE, Overwrite pre-existing file. + NEW, Issue error message if file exists. + APPEND, Append new output to present contents of existing file. END %> -If the specified file does not exist, it is created and _xfFileStat_ has no effect. +If the specified file does not exist, it is created and *xfFileStat* has no effect. <%= member_table( -units: "", -legal_range: "OVERWRITE, NEW, APPEND", -default: "OVERWRITE", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "OVERWRITE, NEW, APPEND", + default: "OVERWRITE", + required: "No", + variability: "constant") + %> **endExportFile** Optionally indicates the end of the export file definition. Alternatively, the end of the Export file definition can be indicated by END or by beginning another object. <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[exportFile][p_exportfile] +- @[exportFile](#p_exportfile) diff --git a/doc/src/docs/input-data/fndblock.md b/doc/src/docs/input-data/fndblock.md index f564534a8..5fa345883 100644 --- a/doc/src/docs/input-data/fndblock.md +++ b/doc/src/docs/input-data/fndblock.md @@ -16,19 +16,19 @@ Note: X and Z point values of zero imply that a point is the same as the referen It does not matter which of the four corners of a block are used to define the two points as long as they are opposite corners. -**fbMat=_matName_** +**fbMat=*matName*** Name of MATERIAL of the foundation block. <%= member_table( -legal_range: "Name of a _Material_", -default: "_none_", -required: "Yes", -variability: "constant") %> + legal_range: "Name of a *Material*", + default: "*none*", + required: "Yes", + variability: "constant") %> -**fbX1Ref=_choice_** +**fbX1Ref=*choice*** -Relative X origin for _fbX1_ point. Options are: +Relative X origin for *fbX1* point. Options are: - SYMMETRY - WALLINT @@ -37,15 +37,15 @@ Relative X origin for _fbX1_ point. Options are: - FARFIELD <%= member_table( -units: "", -legal_range: "_choices above_", -default: "WALLINT", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*choices above*", + default: "WALLINT", + required: "No", + variability: "constant") %> -**fbZ1Ref=_choice_** +**fbZ1Ref=*choice*** -Relative Z origin for _fbZ1_ point. Options are: +Relative Z origin for *fbZ1* point. Options are: - WALLTOP - GRADE @@ -55,37 +55,37 @@ Relative Z origin for _fbZ1_ point. Options are: - DEEPGROUND <%= member_table( -units: "", -legal_range: "_choices above_", -default: "WALLTOP", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*choices above*", + default: "WALLTOP", + required: "No", + variability: "constant") %> -**fbX1=_float_** +**fbX1=*float*** -The X position of the first corner of the block relative to _fbX1Ref_. +The X position of the first corner of the block relative to *fbX1Ref*. <%= member_table( -units: "ft", -legal_range: "", -default: "0.0", -required: "No", -variability: "constant") %> + units: "ft", + legal_range: "", + default: "0.0", + required: "No", + variability: "constant") %> -**fbZ1=_float_** +**fbZ1=*float*** -The Z position of the first corner of the block relative to _fbZ1Ref_. +The Z position of the first corner of the block relative to *fbZ1Ref*. <%= member_table( -units: "ft", -legal_range: "", -default: "0.0", -required: "No", -variability: "constant") %> + units: "ft", + legal_range: "", + default: "0.0", + required: "No", + variability: "constant") %> -**fbX2Ref=_choice_** +**fbX2Ref=*choice*** -Relative X origin for _fbX2_ point. Options are: +Relative X origin for *fbX2* point. Options are: - SYMMETRY - WALLINT @@ -94,15 +94,15 @@ Relative X origin for _fbX2_ point. Options are: - FARFIELD <%= member_table( -units: "", -legal_range: "_choices above_", -default: "WALLINT", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*choices above*", + default: "WALLINT", + required: "No", + variability: "constant") %> -**fbZ2Ref=_choice_** +**fbZ2Ref=*choice*** -Relative Z origin for _fbZ2_ point. Options are: +Relative Z origin for *fbZ2* point. Options are: - WALLTOP - GRADE @@ -112,42 +112,42 @@ Relative Z origin for _fbZ2_ point. Options are: - DEEPGROUND <%= member_table( -units: "", -legal_range: "_choices above_", -default: "WALLTOP", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*choices above*", + default: "WALLTOP", + required: "No", + variability: "constant") %> -**fbX2=_float_** +**fbX2=*float*** -The X position of the second corner of the block relative to _fbX2Ref_. +The X position of the second corner of the block relative to *fbX2Ref*. <%= member_table( -units: "ft", -legal_range: "", -default: "0.0", -required: "No", -variability: "constant") %> + units: "ft", + legal_range: "", + default: "0.0", + required: "No", + variability: "constant") %> -**fbZ2=_float_** +**fbZ2=*float*** -The Z position of the second corner of the block relative to _fbZ2Ref_. +The Z position of the second corner of the block relative to *fbZ2Ref*. <%= member_table( -units: "ft", -legal_range: "", -default: "0.0", -required: "No", -variability: "constant") %> + units: "ft", + legal_range: "", + default: "0.0", + required: "No", + variability: "constant") %> **endFndBlock** Indicates the end of the foundation block definition. Alternatively, the end of the foundation block definition can be indicated by the declaration of another object or by END. <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> diff --git a/doc/src/docs/input-data/foundation.md b/doc/src/docs/input-data/foundation.md index b3f933e59..bd0e5129a 100644 --- a/doc/src/docs/input-data/foundation.md +++ b/doc/src/docs/input-data/foundation.md @@ -38,60 +38,59 @@ The following data members describe the dimensions and properties of the foundat ![Foundation wall dimensions](../assets/images/fd_dims.png) -Other components of the foundation design (e.g., interior/exterior insulation) as well as other variations in thermal properties within the ground are defined using FNDBLOCK (foundation block) objects. Any number of FNDBLOCKs can appear after the definition of a FOUNDATION to be properly associated. + Other components of the foundation design (e.g., interior/exterior insulation) as well as other variations in thermal properties within the ground are defined using FNDBLOCK (foundation block) objects. Any number of FNDBLOCKs can appear after the definition of a FOUNDATION to be properly associated. **fdName** Name of foundation; give after the word FOUNDATION. Required for reference from SURFACE objects. <%= member_table( -legal_range: "_63 characters_", -default: "_none_", -required: "Yes", -variability: "constant") %> + legal_range: "*63 characters*", + default: "*none*", + required: "Yes", + variability: "constant") %> -**fdWlHtAbvGrd=_float_** +**fdWlHtAbvGrd=*float*** Wall height above grade. <%= member_table( -units: "ft", -legal_range: "x $\\geq$ 0", -default: "0.0", -required: "No", -variability: "constant") %> + units: "ft", + legal_range: "x $\\geq$ 0", + default: "0.0", + required: "No", + variability: "constant") %> -**fdWlDpBlwSlb=_float_** +**fdWlDpBlwSlb=*float*** - Wall depth below slab. <%= member_table( -units: "ft", -legal_range: "x $\\geq$ 0", -default: "0.0", -required: "No", -variability: "constant") %> + units: "ft", + legal_range: "x $\\geq$ 0", + default: "0.0", + required: "No", + variability: "constant") %> -**fdFtCon=_conName_** +**fdFtCon=*conName*** Name of CONSTRUCTION of the footing wall. Only required **IF** it is a slab foundation (i.e., no wall surfaces reference this FOUNDATION object). <%= member_table( -legal_range: "Name of a _Construction_", -default: "_none_", -required: "if a slab foundation", -variability: "constant") %> + legal_range: "Name of a *Construction*", + default: "*none*", + required: "if a slab foundation", + variability: "constant") %> **endFoundation** Indicates the end of the foundation definition. Alternatively, the end of the foundation definition can be indicated by the declaration of another object or by END. <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> diff --git a/doc/src/docs/input-data/gain.md b/doc/src/docs/input-data/gain.md index a14a78377..34fa426f8 100644 --- a/doc/src/docs/input-data/gain.md +++ b/doc/src/docs/input-data/gain.md @@ -1,6 +1,6 @@ # GAIN -A GAIN object adds sensible and/or latent heat to the ZONE, and/or adds arbitrary energy use to a METER. GAINs may be subobjects of ZONEs and are normally given within the input for their ZONE. As many GAINs as desired (or none) may be given for each ZONE. Alternatively, GAINs may be subobjects of TOP and specify gnZone to specify their associate zone. +A GAIN object adds sensible and/or latent heat to the ZONE, and/or adds arbitrary energy use to a METER. GAINs may be subobjects of ZONEs and are normally given within the input for their ZONE. As many GAINs as desired (or none) may be given for each ZONE. Alternatively, GAINs may be subobjects of TOP and specify gnZone to specify their associate zone. Each gain has an amount of power (gnPower), which may optionally be accumulated to a METER (gnMeter). The power may be distributed to the zone, plenum, or return as sensible heat with an optional fraction radiant, or to the zone as latent heat (moisture addition), or not. @@ -14,204 +14,208 @@ In the CNE zone mode, the radiant internal gain is distributed to the surfaces i Radiant internal gains are included in the IgnS (Sensible Internal Gain) column in the zone energy balance reports. (They could easily be shown in a separate IgnR column if desired.) Any energy transfer shows two places in the ZEB report, with opposite signs, so that the result is zero -- otherwise it wouldn't be an energy balance. The rest of the reporting story for radiant internal gains turns out to be complex. The specified value of the radiant gain (gnPower \* gnFrZn \* gnFrRad) shows in the IgnS column. To the extent that the gain heats the zone, it also shows negatively in the Masses column, because the zone CAir is lumped with the other masses. To the extent that the gain heats massive surfaces, it also shows negatively in the masses column. To the extent that the gain conducts through windows and quick-model surfaces, it shows negatively in the Conduction column. If the gain conducts through a quick-model surface to another zone, it shows negatively in the Izone (Interzone) column, positively in the Izone column of the receiving zone, and negatively in the receiving zone's Masses or Cond column. + **gnName** Name of gain; follows the word GAIN if given. <%= member_table( -units: "", -legal_range: "_63 characters_", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") + %> -**gnZone=_znName_** +**gnZone=*znName*** -Name of ZONE to which heat gains are added. Omitted when GAIN is given as a ZONE subobject. If a TOP subobject (i.e., not a ZONE subobject) and znZone is omitted, heat gains are discarded but energy use is still recorded to gnMeter. This feature can be used to represent energy uses that our outside of conditioned zones (e.g. exterior lighting). +Name of ZONE to which heat gains are added. Omitted when GAIN is given as a ZONE subobject. If a TOP subobject (i.e., not a ZONE subobject) and znZone is omitted, heat gains are discarded but energy use is still recorded to gnMeter. This feature can be used to represent energy uses that our outside of conditioned zones (e.g. exterior lighting). <%= member_table( -units: "", -legal_range: "_name of ZONE_", -default: "_parent zone if any_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "*name of ZONE*", + default: "*parent zone if any*", + required: "No", + variability: "constant") + %> -**gnPower=_float_** +**gnPower=*float*** Rate of heat addition/energy use. Negative gnPower values may be used to represent heat removal/energy generation. Expressions containing functions are commonly used with this member to schedule the gain power on a daily and/or hourly basis. Refer to the functions section in Section 4 for details and examples. -All gains, including electrical, are specified in Btuh units unless associated with DHW use (see gnCtrlDHWSYS), in which case gnPower is specified in Btuh/gal. Note that meter reporting of internal gain is in MBtu (millions of Btu) by default. +All gains, including electrical, are specified in Btuh units unless associated with DHW use (see gnCtrlDHWSYS), in which case gnPower is specified in Btuh/gal. Note that meter reporting of internal gain is in MBtu (millions of Btu) by default. <%= member_table( -units: "Btuh", -legal_range: "_no restrictions_", -default: "_none_", -required: "Yes", -variability: "hourly") -%> + units: "Btuh", + legal_range: "*no restrictions*", + default: "*none*", + required: "Yes", + variability: "hourly") + %> -**gnMeter=_choice_** +**gnMeter=*choice*** Name of meter by which this GAIN's gnPower is recorded. If omitted, gain is assigned to no meter and energy use is not accounted in CSE simulation reports; thus, gnMeter should only be omitted for "free" energy sources. <%= member_table( -units: "", -legal_range: "_name of METER_", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "*name of METER*", + default: "*none*", + required: "No", + variability: "constant") + %> -**gnEndUse=_choice_** +**gnEndUse=*choice*** Meter end use to which the GAIN's energy use should be accumulated. <%= insert_file("doc/src/enduses.md") %> + <%= member_table( -units: "", -legal_range: "_Codes listed above_", -default: "_none_", -required: "Required if gnMeter is given", -variability: "constant") -%> + units: "", + legal_range: "*Codes listed above*", + default: "*none*", + required: "Required if gnMeter is given", + variability: "constant") + %> The gnFrZn, gnFrPl, and gnFrRtn members allow you to allocate the gain among the zone, the zone's plenum, and the zone's return air flow. Values that total to more than 1.0 constitute an error. If they total less than 1, the unallocated portion of the gain is recorded by the meter (if specified) but not transferred into the building. By default, all of the gain not directed to the return or plenum goes to the zone. -**gnFrZn=_float_** +**gnFrZn=*float*** Fraction of gain going to zone. gnFrLat (below) gives portion of this gain that is latent, if any; the remainder is sensible. <% if not_yet_implemented %> <%= member_table( -units: "", -legal_range: "gnFrZn + gnFrPl + gnFrRtn $\leq$ 1", -default: "_1 - gnFrPl - gnFrRtn_", -required: "No", -variability: "hourly") -%> + units: "", + legal_range: "gnFrZn + gnFrPl + gnFrRtn $\leq$ 1", + default: "*1 - gnFrPl - gnFrRtn*", + required: "No", + variability: "hourly") + %> <% else %> <%= member_table( -units: "", -legal_range: "0 $\\leq$ _x_ $\\leq$ 1", -default: "1.", -required: "No", -variability: "hourly") -%> + units: "", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "1.", + required: "No", + variability: "hourly") + %> <% end %> -**gnFrPl=_float_** +**gnFrPl=*float*** Fraction of gain going to plenum. <%= member_table( -units: "", -legal_range: "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", -default: "0.", -required: "No", -variability: "hourly") %> + units: "", + legal_range: "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", + default: "0.", + required: "No", + variability: "hourly") %> -**gnFrRtn=_float_** + +**gnFrRtn=*float*** Fraction of gain going to return. <%= member_table( -units: "", -legal_range: "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", -default: "0.", -required: "No", -variability: "hourly") %> + units: "", + legal_range: "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", + default: "0.", + required: "No", + variability: "hourly") %> -**gnFrRad=_float_** +**gnFrRad=*float*** Fraction of total gain going to zone (gnFrZn) that is radiant rather than convective or latent. <%= member_table( -units: "", -legal_range: "0 $\\leq$ _x_ $\\leq$ 1", -default: "0.0", -required: "No", -variability: "hourly") -%> + units: "", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "0.0", + required: "No", + variability: "hourly") + %> -**gnFrLat=_float_** +**gnFrLat=*float*** Fraction of total gain going to zone (gnFrZn) that is latent heat (moisture addition). <%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.0", -required: "No", -variability: "hourly") -%> + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "0.0", + required: "No", + variability: "hourly") + %> -**gnDlFrPow=_float_** +**gnDlFrPow=*float*** Hourly power reduction factor, typically used to modify lighting power to account for daylighting. <%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "1.0", -required: "No", -variability: "hourly") -%> + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "1.0", + required: "No", + variability: "hourly") + %> + -**gnCtrlDHWSYS=_dhwsysName_** +**gnCtrlDHWSYS=*dhwsysName*** -Name of a DHWSYS whose water use modulates gnPower. For example, electricity use of water-using appliances (e.g. dishwasher or clothes washer) can be modeled based on water use, ensuring that the uses are synchronized. When this feature is used, gnPower should be specified in Btuh/gal. +Name of a DHWSYS whose water use modulates gnPower. For example, electricity use of water-using appliances (e.g. dishwasher or clothes washer) can be modeled based on water use, ensuring that the uses are synchronized. When this feature is used, gnPower should be specified in Btuh/gal. <%= member_table( -units: "", -legal_range: "_name of a DHWSYS_", -default: "no DHWSYS/GAIN linkage", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "*name of a DHWSYS*", + default: "no DHWSYS/GAIN linkage", + required: "No", + variability: "constant") + %> -**gnCtrlDHWMETER=_dhwMtrName_** +**gnCtrlDHWMETER=*dhwMtrName*** Allows gains to track water usage such as dishwashers, clothes washers, etc. <%= member_table( -units: "", -legal_range: "_name of DHWMETER_", -default: "0", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*name of DHWMETER*", + default: "0", + required: "No", + variability: "constant") %> -**gnCtrlDHWEndUse=_dhwEndUseName_** +**gnCtrlDHWEndUse=*dhwEndUseName*** -Name of the DHWSYS end use consumption that modulates gnPower. See DHWMETER for DHW end use definitions. +Name of the DHWSYS end use consumption that modulates gnPower. See DHWMETER for DHW end use definitions. <%= member_table( -units: "", -legal_range: "DHW end use", -default: "Total", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "DHW end use", + default: "Total", + required: "No", + variability: "constant") + %> **endGain** Optional to indicate the end of the GAIN definition. Alternatively, the end of the gain definition can be indicated by END or by the declaration of another object. <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[gain][p_gain] +- @[gain](#p_gain) diff --git a/doc/src/docs/input-data/glazetype.md b/doc/src/docs/input-data/glazetype.md index dd678d1b4..a85632bc4 100644 --- a/doc/src/docs/input-data/glazetype.md +++ b/doc/src/docs/input-data/glazetype.md @@ -7,26 +7,26 @@ GLAZETYPE constructs an object of class GLAZETYPE that represents a glazing type Name of glazetype. Required for reference from WINDOW objects, below. <%= member_table( -units: "", -legal_range: "_63 characters_", -default: "_none_", -required: "Yes", -variability: "constant") -%> + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "Yes", + variability: "constant") + %> -**gtModel=_choice_** +**gtModel=*choice*** Selects model to be used for WINDOWs based on this GLAZETYPE. <%= member_table( -units: "", -legal_range: "SHGC, ASHWAT", -default: "SHGC", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "SHGC, ASHWAT", + default: "SHGC", + required: "No", + variability: "constant") + %> -**gtU=_float_** +**gtU=*float*** Glazing conductance (U-factor without surface films, therefore not actually a U-factor but a C-factor). Used as wnU default; an error message will be issued if the U value is not given in the window (wnU) nor in the glazeType (gtU). Preferred Approach: To use accurately with standard winter rated U-factor from ASHRAE or NFRC enter as: @@ -37,177 +37,177 @@ Where 0.85 is the sum of the interior (0.68) and exterior (0.17) design air film Approach 2. Enter gtU=U-factor and let the wnInH and wnExH default. This approach systematically underestimates the window U-factor because it adds the wnExfilm resistance to 1/U-factor thereby double counting the exterior film resistance. This approach will also yield incorrect results for gnFrad internal gain since the high wnInH will put almost all the gain back in the space. <%= member_table( -units: "Btuh/ft^2^-^o^F", -legal_range: "_x_ $>$ 0", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "Btuh/ft^2^-^o^F", + legal_range: "*x* $>$ 0", + default: "*none*", + required: "No", + variability: "constant") + %> -**gtUNFRC=_float_** +**gtUNFRC=*float*** Fenestration system (including frame) U-factor evaluated at NFRC heating conditions. For ASHWAT windows, a value for the NFRC U-factor is required, set via gtUNFRC or wnUNFRC. <%= member_table( -units: "Btuh/ft^2^-^o^F", -legal_range: "_x_ $>$ 0", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "Btuh/ft^2^-^o^F", + legal_range: "*x* $>$ 0", + default: "*none*", + required: "No", + variability: "constant") + %> -**gtSHGC=_float_** +**gtSHGC=*float*** Glazing Solar Heat Gain Coefficient: fraction of normal beam insolation which gets through glass to space inside. We recommend using this to represent the glass normal transmissivity characteristic only, before shading and framing effects <%= member_table( -units: "fraction", -legal_range: "_0_ $\\leq$ _x_ $\\leq$ _1_", -default: "_none_", -required: "Yes", -variability: "constant") -%> + units: "fraction", + legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", + default: "*none*", + required: "Yes", + variability: "constant") + %> -**gtSMSO=_float_** +**gtSMSO=*float*** SHGC multiplier with shades open. May be overriden in the specific window input. <%= member_table( -units: "fraction", -legal_range: "_0_ $\\leq$ _x_ $\\leq$ _1_", -default: "1.0", -required: "No", -variability: "Monthly - Hourly") -%> + units: "fraction", + legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", + default: "1.0", + required: "No", + variability: "Monthly - Hourly") + %> -**gtSMSC=_float_** +**gtSMSC=*float*** SHGC multiplier with shades closed. May be overriden in the specific window input. <%= member_table( -units: "fraction", -legal_range: "_0_ $\\leq$ _x_ $\\leq$ _1_", -default: "gtSMSO (no shades)", -required: "No", -variability: "Monthly - Hourly") -%> + units: "fraction", + legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", + default: "gtSMSO (no shades)", + required: "No", + variability: "Monthly - Hourly") + %> -**gtFMult=_float_** +**gtFMult=*float*** Framing multiplier used if none given in window, for example .9 if frame and mullions reduce the solar gain by 10%. Default of 1.0 implies frame/mullion effects allowed for in gtSHGC's or always specified in Windows. <%= member_table( -units: "fraction", -legal_range: "_0_ $\\leq$ _x_ $\\leq$ _1_", -default: "gtSHGCO", -required: "No", -variability: "Monthly - Hourly") -%> + units: "fraction", + legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", + default: "gtSHGCO", + required: "No", + variability: "Monthly - Hourly") + %> -**gtPySHGC =_float_** +**gtPySHGC =*float*** Four float values separated by commas. Coefficients for incidence angle SHGC multiplier polynomial applied to gtSHGC to determine beam transmissivity at angles of incidence other than 90 degrees. The values are coefficients for first through fourth powers of the cosine of the incidence angle; there is no constant part. An error message will be issued if the coefficients do not add to one. They are used in the following computation: -angle = incidence angle of beam radiation, measured from normal to glass. +    angle = incidence angle of beam radiation, measured from normal to glass. -cosI = cos( angle) +    cosI = cos( angle) -angMult = a\*cosI + b\*cosI\^2 + c\*cosI\^3 + d\*cosI\^4 +    angMult = a\*cosI + b\*cosI\^2 + c\*cosI\^3 + d\*cosI\^4 -beamXmisvty = gtSHGCO \* angMult (shades open) +    beamXmisvty = gtSHGCO \* angMult (shades open) <%= member_table( -units: "float", -legal_range: "_any_", -default: "_none_", -required: "Yes", -variability: "constant") -%> + units: "float", + legal_range: "*any*", + default: "*none*", + required: "Yes", + variability: "constant") + %> -**gtDMSHGC=_float_** +**gtDMSHGC=*float*** SHGC diffuse multiplier, applied to gtSHGC to determine transmissivity for diffuse radiation. <%= member_table( -units: "fraction", -legal_range: "_0_ $\\leq$ _x_ $\\leq$ _1_", -default: "_none_", -required: "Yes", -variability: "constant") -%> + units: "fraction", + legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", + default: "*none*", + required: "Yes", + variability: "constant") + %> -**gtDMRBSol=_float_** +**gtDMRBSol=*float*** SHGC diffuse multiplier, applied to qtSHGC to determine transmissivity for diffuse radiation reflected back out the window. Misnamed as a reflectance. Assume equal to DMSHGC if no other data available. <%= member_table( -units: "fraction", -legal_range: "_0_ $\\leq$ _x_ $\\leq$ _1_", -default: "_none_", -required: "Yes", -variability: "constant") -%> + units: "fraction", + legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", + default: "*none*", + required: "Yes", + variability: "constant") + %> -**gtNGlz=_int_** +**gtNGlz=*int*** Number of glazings in the Glazetype (bare glass only, not including any interior or exterior shades). <%= member_table( -units: "", -legal_range: "_0_ $<$ _x_ $\\leq$ _4_", -default: "2", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "*0* $<$ *x* $\\leq$ *4*", + default: "2", + required: "No", + variability: "constant") + %> -**gtExShd=_choice_** +**gtExShd=*choice*** Exterior shading type (ASHWAT only). <%= member_table( -units: "", -legal_range: "NONE INSCRN", -default: "NONE", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "NONE INSCRN", + default: "NONE", + required: "No", + variability: "constant") + %> -**gtInShd=_choice_** +**gtInShd=*choice*** Interior shade type (ASHWAT only). <%= member_table( -units: "", -legal_range: "NONE DRAPEMED", -default: "NONE", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "NONE DRAPEMED", + default: "NONE", + required: "No", + variability: "constant") + %> -**gtDirtLoss=_float_** +**gtDirtLoss=*float*** Glazing dirt loss factor. <%= member_table( -units: "fraction", -legal_range: "_0_ $\\leq$ _x_ $\\leq$ _1_", -default: "0", -required: "No", -variability: "constant") -%> + units: "fraction", + legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", + default: "0", + required: "No", + variability: "constant") + %> **endGlazeType** Optional to indicates the end of the Glazetype. Alternatively, the end of the GLAZETYPE definition can be indicated by "END" or by beginning another object <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[glazeType][p_glazetype] +- @[glazeType](#p_glazetype) diff --git a/doc/src/docs/input-data/heatplant.md b/doc/src/docs/input-data/heatplant.md index ef82a35a0..4108a7376 100644 --- a/doc/src/docs/input-data/heatplant.md +++ b/doc/src/docs/input-data/heatplant.md @@ -4,80 +4,80 @@ A HEATPLANT contains one or more BOILER subobjects (Section 5.20.1) and supports BOILERs, HW coils, and heat exchangers are modeled with simple heat-injection models. There is no explicit modeling of circulating hot water temperatures and flows; it is always assumed the temperature and flow at each load (HW coil or heat exchanger) are sufficient to allow the load to transfer any desired amount of heat up to its capacity. When the total heat demand exceeds the plant's capacity, the model reduces the capacity of each load until the plant is not overloaded. The reduced capacity is the same fraction of rated capacity for all loads on the HEATPLANT; any loads whose requested heat is less than the reduced capacity are unaffected. -The BOILERs in the HEATPLANT can be grouped into _STAGES_ of increasing capacity. The HEATPLANT uses the first stage that can meet the load. The load is distributed among the BOILERs in the stage so that each operates at the same fraction of its rated capacity. +The BOILERs in the HEATPLANT can be grouped into *STAGES* of increasing capacity. The HEATPLANT uses the first stage that can meet the load. The load is distributed among the BOILERs in the stage so that each operates at the same fraction of its rated capacity. For each HEATPLANT, piping loss is modeled, as a constant fraction of the BOILER capacity of the heatPlant's most powerful stage. This heat loss is added to the load whenever the plant is operating; as modeled, the heat loss is independent of load, weather, or any other variables. **heatplantName** -Name of HEATPLANT object, given immediately after the word HEATPLANT. This name is used to refer to the heatPlant in _tuhcHeatplant_ and _ahhcHeatplant_ commands. +Name of HEATPLANT object, given immediately after the word HEATPLANT. This name is used to refer to the heatPlant in *tuhcHeatplant* and *ahhcHeatplant* commands. <%= member_table( -units: "", -legal_range: "_63 characters_", -default: "_none_", -required: "Yes", -variability: "constant") %> + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "Yes", + variability: "constant") %> -**hpSched=_choice_** +**hpSched=*choice*** Heat plant schedule: hourly variable choice of OFF, AVAIL, or ON. <%= csv_table(< false) -OFF, HEATPLANT will not supply hot water regardless of demand. All loads (HW coils and heat exchangers) should be scheduled off when the plant is off; an error will occur if a coil calls for heat when its plant is off. -AVAIL, HEATPLANT will operate when one or more loads demand heat. -ON, HEATPLANT runs unconditionally. When no load wants heat, least powerful (first) stage runs. +OFF, HEATPLANT will not supply hot water regardless of demand. All loads (HW coils and heat exchangers) should be scheduled off when the plant is off; an error will occur if a coil calls for heat when its plant is off. +AVAIL, HEATPLANT will operate when one or more loads demand heat. +ON, HEATPLANT runs unconditionally. When no load wants heat, least powerful (first) stage runs. END %> <%= member_table( -units: "", -legal_range: "OFF, AVAIL, or ON", -default: "AVAIL", -required: "No", -variability: "hourly") %> + units: "", + legal_range: "OFF, AVAIL, or ON", + default: "AVAIL", + required: "No", + variability: "hourly") %> -**hpPipeLossF=_float_** +**hpPipeLossF=*float*** Heat plant pipe loss: heat assumed lost from piping connecting boilers to loads whenever the HEATPLANT is operating, expressed as a fraction of the boiler capacity of the plant's most powerful stage. <%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.01", -required: "No", -variability: "constant") %> + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "0.01", + required: "No", + variability: "constant") %> **hpStage1=boilerName, boilerName, boilerName, ...** -**hpStage1=ALL_BUT, boilerName, boilerName, boilerName, ...** +**hpStage1=ALL\_BUT, boilerName, boilerName, boilerName, ...** **hpStage2 through hpStage7 same** -The commands _hpStage1_ through _hpStage7_ allow specification of up to seven _STAGES_ in which BOILERs are activated as the load increases. Each stage may be specified with a list of up to seven names of BOILERs in the HEATPLANT, or with the word ALL, meaning all of the HEATPLANT's BOILERs, or with the word ALL_BUT and a list of up to six names of BOILERs. Each stage should be more powerful than the preceding one. If you have less than seven stages, you may skip some of the commands _hpStage1_ through _hpStage7_ -- the used stage numbers need not be contiguous. +The commands *hpStage1* through *hpStage7* allow specification of up to seven *STAGES* in which BOILERs are activated as the load increases. Each stage may be specified with a list of up to seven names of BOILERs in the HEATPLANT, or with the word ALL, meaning all of the HEATPLANT's BOILERs, or with the word ALL\_BUT and a list of up to six names of BOILERs. Each stage should be more powerful than the preceding one. If you have less than seven stages, you may skip some of the commands *hpStage1* through *hpStage7* -- the used stage numbers need not be contiguous. -If none of _hpStage1_ through _hpStage7_ are given, CSE supplies a single default stage containing all boilers. +If none of *hpStage1* through *hpStage7* are given, CSE supplies a single default stage containing all boilers. -A comma must be entered between boiler names and after the word ALL_BUT. +A comma must be entered between boiler names and after the word ALL\_BUT. <%= member_table( -units: "", -legal_range: "1 to 7 names;ALL_BUT and 1 to 6 names;ALL", -default: "_hpStage1_ = ALL", -required: "No", -variability: "constant") %> + units: "", + legal_range: "1 to 7 names;ALL\_BUT and 1 to 6 names;ALL", + default: "*hpStage1* = ALL", + required: "No", + variability: "constant") %> **endHeatplant** Optionally indicates the end of the HEATPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[heatPlant][p_heatplant] +- @[heatPlant](#p_heatplant) diff --git a/doc/src/docs/input-data/holiday.md b/doc/src/docs/input-data/holiday.md index f254c2559..bcac9d04a 100644 --- a/doc/src/docs/input-data/holiday.md +++ b/doc/src/docs/input-data/holiday.md @@ -7,18 +7,17 @@ Examples and the list of default holidays are given after the member description - **hdName** Name of holiday: must follow the word HOLIDAY. <%= member_table( -units: "", -legal_range: "_63 characters_", -default: "_none_", -required: "Yes", -variability: "constant") -%> + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "Yes", + variability: "constant") + %> A holiday may be specified by date or via a rule such as "Fourth Thursday in November". To specify by date, give hdDateTrue, and also hdDateObs or hdOnMonday if desired. To specify by rule, give all three of hdCase, hdMon, and hdDow. @@ -27,116 +26,112 @@ A holiday may be specified by date or via a rule such as "Fourth Thursday in Nov The true date of a holiday, even if not celebrated on that day. <%= member_table( -units: "", -legal_range: "_date_", -default: "_blank_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "*date*", + default: "*blank*", + required: "No", + variability: "constant") + %> **hdDateObs*=date*** The date that a holiday will be observed. Allowed only if hdDateTrue given and hdOnMonday not given. <%= member_table( -units: "", -legal_range: "_date_", -default: "_hdDateTrue_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "*date*", + default: "*hdDateTrue*", + required: "No", + variability: "constant") + %> -**hdOnMonday=_choice_** +**hdOnMonday=*choice*** If YES, holiday is observed on the following Monday if the true date falls on a weekend. Allowed only if hdDateTrue given and hdDateObs not given. -Note: there is no provision to celebrate a holiday that falls on a Saturday on _Friday_ (as July 4 was celebrated in 1992). +Note: there is no provision to celebrate a holiday that falls on a Saturday on *Friday* (as July 4 was celebrated in 1992). <%= member_table( -units: "", -legal_range: "YES/NO", -default: "YES", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "YES/NO", + default: "YES", + required: "No", + variability: "constant") + %> -**hdCase=_choice_** +**hdCase=*choice*** Week of the month that the holiday is observed. hdCase, hdMon, and hdDow may be given only if hdDateTrue, hdDateObs, and hdOnMonday are not given. <%= member_table( -units: "", -legal_range: "FIRST SECOND THIRD FOURTH LAST", -default: "FIRST", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "FIRST SECOND THIRD FOURTH LAST", + default: "FIRST", + required: "No", + variability: "constant") + %> -**hdMon=_choice_** +**hdMon=*choice*** Month that the holiday is observed. <%= member_table( -units: "", -legal_range: "JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC", -default: "_none_", -required: "required if hdCase given", -variability: "constant") -%> + units: "", + legal_range: "JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC", + default: "*none*", + required: "required if hdCase given", + variability: "constant") + %> **hdDow*=choice*** Day of the week that the holiday is observed. <%= member_table( -units: "", -legal_range: "SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY", -default: "MONDAY", -required: "required if hdCase given", -variability: "constant") -%> + units: "", + legal_range: "SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY", + default: "MONDAY", + required: "required if hdCase given", + variability: "constant") + %> **endHoliday** Indicates the end of the holiday definition. Alternatively, the end of the holiday definition can be indicated by "END" or simply by beginning another object. <%= member_table( -units: "", -legal_range: "", -default: "", -required: "_none_", -variability: "constant") -%> + units: "", + legal_range: "", + default: "", + required: "*none*", + variability: "constant") + %> Examples of valid HOLIDAY object specifications: -- Holiday on May first, observed date moved to following Monday if the first falls on a weekend (hdOnMonday defaults Yes). +- Holiday on May first, observed date moved to following Monday if the first falls on a weekend (hdOnMonday defaults Yes). - HOLIDAY MAYDAY; hdDateTrue = May 1; -- Holiday on May 1, observed on May 3. +- Holiday on May 1, observed on May 3. - HOLIDAY MAYDAY; hdDateTrue = May 1; hdDateObs = May 3; -- Holiday observed on May 1 even if on a weekend. +- Holiday observed on May 1 even if on a weekend. - HOLIDAY MAYDAY; hdDateTrue = May 1; hdOnMonday = No; -- Holiday observed on Wednesday of third week of March +- Holiday observed on Wednesday of third week of March - HOLIDAY HYPOTHET; hdCase = third; hdDow = Wed; @@ -145,20 +140,20 @@ Examples of valid HOLIDAY object specifications: As with reports, Holidays are automatically generated for a standard set of Holidays. The following are the default holidays automatically defined by CSE: <%= csv_table(< false) -New Year's Day, \*January 1 -M L King Day, \*January 15 -President's Day, 3rd Monday in February -Memorial Day, last Monday in May -Fourth of July, \*July 4 -Labor Day, 1st Monday in September -Columbus Day, 2nd Monday in October -Veterans Day, \*November 11 -Thanksgiving, 4th Thursday in November -Christmas, \*December 25 + New Year's Day, \*January 1 + M L King Day, \*January 15 + President's Day, 3rd Monday in February + Memorial Day, last Monday in May + Fourth of July, \*July 4 + Labor Day, 1st Monday in September + Columbus Day, 2nd Monday in October + Veterans Day, \*November 11 + Thanksgiving, 4th Thursday in November + Christmas, \*December 25 END %> -\* _observed on the following Monday if falls on a weekend, except as otherwise noted:_ +\* *observed on the following Monday if falls on a weekend, except as otherwise noted:* If a particular default holiday is not desired, it can be removed with a DELETE statement: @@ -168,8 +163,8 @@ If a particular default holiday is not desired, it can be removed with a DELETE DELETE HOLIDAY "VETERANS DAY" // No case-sensitivity -Note that the name must be spelled _exactly_ as listed above. +Note that the name must be spelled *exactly* as listed above. **Related Probes:** -- @[holiday][p_holiday] +- @[holiday](#p_holiday) diff --git a/doc/src/docs/input-data/importfile.md b/doc/src/docs/input-data/importfile.md index c9201d242..15005a9dd 100644 --- a/doc/src/docs/input-data/importfile.md +++ b/doc/src/docs/input-data/importfile.md @@ -1,17 +1,17 @@ # IMPORTFILE -IMPORTFILE allows specification of a file from which external data can be accessed using the [import()](../input-structure.md#import) and [importStr()](../input-structure.md#importstr) functions. This allows external values to be referenced in expressions. Any number of IMPORTFILEs can be defined and any number of import()/importStr() references can be made to a give IMPORTFILE. - -Import files are text files containing an optional header and comma-separated data fields. With -the header present, the structure of an import file matches that of an [EXPORT][export] file. This makes it convenient to import unmodified files EXPORTed from prior runs. The file structure is as follows (noting that the header in lines 1-4 should not be present when imHeader=NO) -- - -<%= csv*table(< true) -Line, Contents, Notes -1, \_runTitle*, _runNumber_, read but not checked -2, _timestamp_, in quotes, read but not checked -3, _title_, _freq_, should match imTitle and imFreq (see below) -4, _colName1_, _colName2_, ..., comma separated column names optionally in quotes -5 .., _val1_, _val2_, ..., comma separated values (string values optionally in quotes) +IMPORTFILE allows specification of a file from which external data can be accessed using the [import()](#import) and [importStr()](#importstr) functions. This allows external values to be referenced in expressions. Any number of IMPORTFILEs can be defined and any number of import()/importStr() references can be made to a give IMPORTFILE. + +Import files are text files containing an optional header and comma-separated data fields. With +the header present, the structure of an import file matches that of an [EXPORT](#export) file. This makes it convenient to import unmodified files EXPORTed from prior runs. The file structure is as follows (noting that the header in lines 1-4 should not be present when imHeader=NO) -- + +<%= csv_table(< true) + Line, Contents, Notes + 1, *runTitle*, *runNumber*, read but not checked + 2, *timestamp*, in quotes, read but not checked + 3, *title*, *freq*, should match imTitle and imFreq (see below) + 4, *colName1*, *colName2*, ..., comma separated column names optionally in quotes + 5 .., *val1*, *val2*, ..., comma separated values (string values optionally in quotes) END %> @@ -45,91 +45,93 @@ Example IMPORTFILE use (reading from imp1.csv) Notes -- As usual, IMPORTFILEs can be referenced before they are defined. HOWEVER, _imFreq_ is not known for forward-references to IMPORTFILEs and will be assumed to be subhour. Errors (and no run) will result if the referencing import()s expect values at another _imFreq_. **Recommendation: locate IMPORTFILEs prior to associated imports() in the input file.** -- Columns are referenced by 1-based index or column names (assuming file header is present). - In the example above, "Tdb" could be replaced by 3. -- Column names should be case-insensitive unique. CSE issues a warning for each non-unique name found. Reference to a non-unique name in import()/importStr() is treated as an error (no run). -- Heading or data string values generally do not need to be quoted except for values that include comma(s). + * As usual, IMPORTFILEs can be referenced before they are defined. HOWEVER, *imFreq* is not known for forward-references to IMPORTFILEs and will be assumed to be subhour. Errors (and no run) will result if the referencing import()s expect values at another *imFreq*. **Recommendation: locate IMPORTFILEs prior to associated imports() in the input file.** + * Columns are referenced by 1-based index or column names (assuming file header is present). + In the example above, "Tdb" could be replaced by 3. + * Column names should be case-insensitive unique. CSE issues a warning for each non-unique name found. Reference to a non-unique name in import()/importStr() is treated as an error (no run). + * Heading or data string values generally do not need to be quoted except for values that include comma(s). + + **imName** Name of IMPORTFILE object (for reference from Import()). -<%= member*table( -units: "", -legal_range: "\_63 characters*", -default: "_none_", -required: "No", -variability: "constant") %> +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") %> -**imFileName=_string_** +**imFileName=*string*** Gives path name of file to be read. If directory is specified, CSE first looks for the file the current directory and searches include paths specified by the -I command line parameter (if any). -<%= member*table( -units: "", -legal_range: "\_file name, path optional*", -default: "_none_", -required: "Yes", -variability: "constant") %> +<%= member_table( + units: "", + legal_range: "*file name, path optional*", + default: "*none*", + required: "Yes", + variability: "constant") %> -**imTitle=_string_** +**imTitle=*string*** -Title expected to be found on line 3 of the import file. A warning is issued if a non-blank imTitle does not match the import file title. +Title expected to be found on line 3 of the import file. A warning is issued if a non-blank imTitle does not match the import file title. -<%= member*table( -units: "", -legal_range: "Text string", -default: "\_none*", -required: "No", -variability: "constant") %> +<%= member_table( + units: "", + legal_range: "Text string", + default: "*none*", + required: "No", + variability: "constant") %> -**imFreq=_choice_** +**imFreq=*choice*** -Specifies the interval at which CSE reads from the import file. Data is read at the beginning of the indicated interval and buffered in memory for access in expressions via import() or importStr(). +Specifies the interval at which CSE reads from the import file. Data is read at the beginning of the indicated interval and buffered in memory for access in expressions via import() or importStr(). -<%= member*table( -units: "", -legal_range: "YEAR, MONTH, DAY, HOUR, or SUBHOUR", -default: "\_none*", -required: "Yes", -variability: "constant") %> +<%= member_table( + units: "", + legal_range: "YEAR, MONTH, DAY, HOUR, or SUBHOUR", + default: "*none*", + required: "Yes", + variability: "constant") %> -**imHeader=_choice_** +**imHeader=*choice*** -Indicates whether the import file include a 4 line header, as described above. If NO, the import file +Indicates whether the import file include a 4 line header, as described above. If NO, the import file should contain only comma-separated data rows and data items can be referenced only by 1-based column number. <%= member_table( -units: "", -legal_range: "YES NO", -default: "YES", -required: "No", -variability: "constant") %> + units: "", + legal_range: "YES NO", + default: "YES", + required: "No", + variability: "constant") %> -**imBinary=_choice_** +**imBinary=*choice*** Adds the possibility to output the file as a binary option. <%= member_table( -units: "", -legal_range: "YES NO", -default: "No", -required: "No", -variability: "constant") %> + units: "", + legal_range: "YES NO", + default: "No", + required: "No", + variability: "constant") %> **endImportFile** Optionally indicates the end of the import file definition. Alternatively, the end of the import file definition can be indicated by END or by beginning another object. -<%= member*table( -units: "", -legal_range: "", -default: "\_none*", -required: "No", -variability: "constant") %> +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[importFile][p_importfile] -- @[impFileFldNames][p_impfilefldnames] +- @[importFile](#p_importfile) +- @[impFileFldNames](#p_impfilefldnames) diff --git a/doc/src/docs/input-data/izxfer.md b/doc/src/docs/input-data/izxfer.md index 8d48781f8..99bb52b21 100644 --- a/doc/src/docs/input-data/izxfer.md +++ b/doc/src/docs/input-data/izxfer.md @@ -496,4 +496,4 @@ Optionally indicates the end of the interzone transfer definition. **Related Probes:** -- @[izXfer][p_izxfer] +- @[izXfer](#p_izxfer) diff --git a/doc/src/docs/input-data/layer.md b/doc/src/docs/input-data/layer.md index fc2d8c390..a88e22245 100644 --- a/doc/src/docs/input-data/layer.md +++ b/doc/src/docs/input-data/layer.md @@ -67,4 +67,4 @@ Optional end-of-LAYER indicator; LAYER definition may also be indicated by "END" **Related Probes:** -- @[layer][p_layer] +- @[layer](#p_layer) diff --git a/doc/src/docs/input-data/loadmeter.md b/doc/src/docs/input-data/loadmeter.md index 91f60afe3..0ce3e84f1 100644 --- a/doc/src/docs/input-data/loadmeter.md +++ b/doc/src/docs/input-data/loadmeter.md @@ -65,4 +65,4 @@ Indicates the end of the meter definition. Alternatively, the end of the meter d **Related Probes:** -- @[loadmeter][p_loadmeter] +- @[loadmeter](#p_loadmeter) diff --git a/doc/src/docs/input-data/material.md b/doc/src/docs/input-data/material.md index 3960336c0..71926f83f 100644 --- a/doc/src/docs/input-data/material.md +++ b/doc/src/docs/input-data/material.md @@ -105,4 +105,4 @@ Optional to indicate the end of the material. Alternatively, the end of the mate **Related Probes:** -- @[material][p_material] +- @[material](#p_material) diff --git a/doc/src/docs/input-data/meter.md b/doc/src/docs/input-data/meter.md index 7254dd025..f2800c37f 100644 --- a/doc/src/docs/input-data/meter.md +++ b/doc/src/docs/input-data/meter.md @@ -2,28 +2,28 @@ A METER object is a user-defined "device" that records energy consumption of equipment as simulated by CSE. The user defines METERs with the desired names, then assigns energy uses of specific equipment to the desired meters using commands described under each equipment type's class description (AIRHANDLER, TERMINAL, etc.). Additional energy use from equipment not simulated by CSE (except optionally for its effect on heating and cooling loads) can also be charged to METERs (see GAIN). The data accumulated by meters can be reported at hourly, daily, monthly, and annual (run) intervals by using REPORTs and EXPORTs of type MTR. -Meters account for energy use in the following pre-defined categories, called _end uses_. The abbreviations in parentheses are used in MTR report headings (and for gnMeter input, below). You also get a column for the net total on the meter (abbreviated "Tot"). +Meters account for energy use in the following pre-defined categories, called *end uses*. The abbreviations in parentheses are used in MTR report headings (and for gnMeter input, below). You also get a column for the net total on the meter (abbreviated "Tot"). <%= insert_file('doc/src/enduses.md') %> -The user has complete freedom over how many meters are defined and how equipment is assigned to them. At one extreme, a single meter "Electricity" could be defined and have all of electrical uses assigned to it. On the other hand, definition of separate meters "Elect_Fan1", "Elect_Fan2", and so forth allows accounting of the electricity use for individual pieces of equipment. Various groupings are possible: for example, in a building with several air handlers, one could separate the energy consumption of the fans from the coils, or one could separate the energy use by air handler, or both ways, depending on the information desired from the run. +The user has complete freedom over how many meters are defined and how equipment is assigned to them. At one extreme, a single meter "Electricity" could be defined and have all of electrical uses assigned to it. On the other hand, definition of separate meters "Elect\_Fan1", "Elect\_Fan2", and so forth allows accounting of the electricity use for individual pieces of equipment. Various groupings are possible: for example, in a building with several air handlers, one could separate the energy consumption of the fans from the coils, or one could separate the energy use by air handler, or both ways, depending on the information desired from the run. The members that assign energy use to meters include: -- GAIN: gnMeter, gnEndUse -- ZONE: xfanMtr -- IZXFER: izfanMtr -- RSYS: rsElecMtr, rsFuelMtr -- DHWSYS: wsElecMtr, wsFuelMtr -- DHWHEATER: whElectMtr, whFuelMtr -- DHWPUMP: wpElecMtr -- DHWLOOPPUMP: wlpElecMtr -- PVARRAY: pvElecMeter -- TERMINAL: tuhcMtr, tfanMtr -- AIRHANDLER: sfanMtr, rfanMtr, ahhcMtr, ahccMtr, ahhcAuxOnMtr, ahhcAuxOffMtr, ahhcAuxFullOnMtr, ahhcAuxOnAtAllMtr, ahccAuxOnMtr, ahccAuxOffMtr, ahccAuxFullOnMtr, ahccAuxOnAtAllMtr -- BOILER: blrMtr, blrpMtr, blrAuxOnMtr, blrAuxOffMtr, blrAuxFullOnMtr, blrAuxOnAtAllMtr -- CHILLER: chMtr, chppMtr, chcpMtr, chAuxOnMtr, chAuxOffMtr, chAuxFullOnMtr, chAuxOnAtAllMtr -- TOWERPLANT: tpMtr +- GAIN: gnMeter, gnEndUse +- ZONE: xfanMtr +- IZXFER: izfanMtr +- RSYS: rsElecMtr, rsFuelMtr +- DHWSYS: wsElecMtr, wsFuelMtr +- DHWHEATER: whElectMtr, whFuelMtr +- DHWPUMP: wpElecMtr +- DHWLOOPPUMP: wlpElecMtr +- PVARRAY: pvElecMeter +- TERMINAL: tuhcMtr, tfanMtr +- AIRHANDLER: sfanMtr, rfanMtr, ahhcMtr, ahccMtr, ahhcAuxOnMtr, ahhcAuxOffMtr, ahhcAuxFullOnMtr, ahhcAuxOnAtAllMtr, ahccAuxOnMtr, ahccAuxOffMtr, ahccAuxFullOnMtr, ahccAuxOnAtAllMtr +- BOILER: blrMtr, blrpMtr, blrAuxOnMtr, blrAuxOffMtr, blrAuxFullOnMtr, blrAuxOnAtAllMtr +- CHILLER: chMtr, chppMtr, chcpMtr, chAuxOnMtr, chAuxOffMtr, chAuxFullOnMtr, chAuxOnAtAllMtr +- TOWERPLANT: tpMtr The end use can be specified by the user only for GAINs and PVARRAYs; in other cases it is hard-wired to Clg, Htg, FanC, FanH, FanV, Fan, or Aux as appropriate. @@ -32,76 +32,76 @@ The end use can be specified by the user only for GAINs and PVARRAYs; in other c Name of meter: required for assigning energy uses to the meter elsewhere. <%= member_table( -units: "", -legal_range: "_63 characters_", -default: "_none_", -required: "Yes", -variability: "constant") %> + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "Yes", + variability: "constant") %> -**mtrDemandRate=_float_** +**mtrDemandRate=*float*** DmdCost per Btu of demand, for a month. <%= member_table( -units: "", -legal_range: "", -default: "N/A", -required: "No", -variability: "constant") %> + units: "", + legal_range: "", + default: "N/A", + required: "No", + variability: "constant") %> -**mtrRate=_float_** +**mtrRate=*float*** Cost of energy use per Btu. <%= member_table( -units: "", -legal_range: "", -default: "N/A", -required: "No", -variability: "constant") %> + units: "", + legal_range: "", + default: "N/A", + required: "No", + variability: "constant") %> -**mtrSubmeters=_list of up to 50 METERs_** +**mtrSubmeters=*list of up to 50 METERs*** -A comma-separate list of METERs that are accumulated into this METER with optional multipliers (see mtrSubmeterMults). Submeters facilitate flexible categorization of energy results. In addition, use of mtrSubmeterMults allows energy results from a representative model to be scaled and included in overall results. For example, a typical zone could be used to represent 5 similar spaces. The energy uses of the typical zone could be assigned to a dedicated METER that is accumulated to a main METER with a multiplier of 5. Rules -- +A comma-separate list of METERs that are accumulated into this METER with optional multipliers (see mtrSubmeterMults). Submeters facilitate flexible categorization of energy results. In addition, use of mtrSubmeterMults allows energy results from a representative model to be scaled and included in overall results. For example, a typical zone could be used to represent 5 similar spaces. The energy uses of the typical zone could be assigned to a dedicated METER that is accumulated to a main METER with a multiplier of 5. Rules -- -- A METER cannot reference itself as a submeter. -- A given METER can be referenced only once in the mtrSubmeters list. -- Circular references are not allowed. +- A METER cannot reference itself as a submeter. +- A given METER can be referenced only once in the mtrSubmeters list. +- Circular references are not allowed. <%= member_table( -units: "", -legal_range: "_names of METERs_", -default: "", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*names of METERs*", + default: "", + required: "No", + variability: "constant") %> -**mtrSubmeterMults=_list of up to 50 floats_** +**mtrSubmeterMults=*list of up to 50 floats*** Submeter multipliers. Use cases for multipliers include -- - Scaling results from portions of a model to approximate the behavior of multiple similar aspects (e.g. multiple floors in a high-rise building) - Tracking energy use during selected time intervals; for example, peak-period energy use could be metered for certain hours via scheduled multipliers of 0 or 1. -A note re default values: if mtrSubmeterMults is omitted, all multipliers are defaulted to 1. However, when mtrSubmeterMults is included, a multiplier value should be provided for each METER listed in mtrSubmeters since unspecified values are set to 0. +A note re default values: if mtrSubmeterMults is omitted, all multipliers are defaulted to 1. However, when mtrSubmeterMults is included, a multiplier value should be provided for each METER listed in mtrSubmeters since unspecified values are set to 0. <%= member_table( -units: "", -legal_range: "", -default: "1", -required: "No", -variability: "hourly") %> + units: "", + legal_range: "", + default: "1", + required: "No", + variability: "hourly") %> **endMeter** Indicates the end of the meter definition. Alternatively, the end of the meter definition can be indicated by the declaration of another object or by END. <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[meter][p_meter] +- @[meter](#p_meter) diff --git a/doc/src/docs/input-data/perimeter.md b/doc/src/docs/input-data/perimeter.md index a03e7bacb..795fd5ea8 100644 --- a/doc/src/docs/input-data/perimeter.md +++ b/doc/src/docs/input-data/perimeter.md @@ -48,5 +48,5 @@ Optionally indicates the end of the perimeter definition. **Related Probes:** -- @[perimeter][p_perimeter] -- @[xsurf][p_xsurf] +- @[perimeter](#p_perimeter) +- @[xsurf](#p_xsurf) diff --git a/doc/src/docs/input-data/pvarray.md b/doc/src/docs/input-data/pvarray.md index 069d0801a..5ce062588 100644 --- a/doc/src/docs/input-data/pvarray.md +++ b/doc/src/docs/input-data/pvarray.md @@ -6,120 +6,120 @@ PVARRAY describes a photovoltaic panel system. The algorithms are based on the [ Name of photovoltaic array. Give after the word PVARRAY. -<%= member*table( -units: "", -legal_range: "\_63 characters*", -default: "_none_", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") + %> -**pvElecMtr=_choice_** +**pvElecMtr=*choice*** Name of meter by which this PVARRAY's AC power out is recorded. Generated power is expressed as a negative value. -<%= member*table( -units: "", -legal_range: "\_name of a METER*", -default: "_none_", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "", + legal_range: "*name of a METER*", + default: "*none*", + required: "No", + variability: "constant") + %> -**pvEndUse=_choice_** +**pvEndUse=*choice*** Meter end use to which the PVARRAY's generated energy should be accumulated. <%= insert_file('doc/src/enduses.md') %> -<%= member*table( -units: "", -legal_range: "\_Codes listed above*", -default: "PV", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "", + legal_range: "*Codes listed above*", + default: "PV", + required: "No", + variability: "constant") + %> -**pvDCSysSize=_float_** +**pvDCSysSize=*float*** The rated photovoltaic system DC capacity/size as indicated by the nameplate. -<%= member*table( -units: "kW", -legal_range: "x $\\geq$ 0", -default: "\_none*", -required: "Yes", -variability: "constant") -%> +<%= member_table( + units: "kW", + legal_range: "x $\\geq$ 0", + default: "*none*", + required: "Yes", + variability: "constant") + %> -**pvModuleType=_choice_** +**pvModuleType=*choice*** -Type of module to model. The module type determines the refraction index and temperature coefficient used in the simulation. Alternatively, the "Custom" module type may be used in conjunction with user-defined input for _pvCoverRefrInd_ and _pvTempCoeff_. +Type of module to model. The module type determines the refraction index and temperature coefficient used in the simulation. Alternatively, the "Custom" module type may be used in conjunction with user-defined input for *pvCoverRefrInd* and *pvTempCoeff*. <%= csv_table(< true) -**Module Type**, **pvCoverRefrInd**, **pvTempCoeff** -Standard, 1.3, -0.00206 -Premium, 1.3, -0.00194 -ThinFilm, 1.3, -0.00178 -Custom, User-defined, User-defined + **Module Type**, **pvCoverRefrInd**, **pvTempCoeff** + Standard, 1.3, -0.00206 + Premium, 1.3, -0.00194 + ThinFilm, 1.3, -0.00178 + Custom, User-defined, User-defined END %> <%= member_table( -units: "", -legal_range: "Standard Premium ThinFilm Custom", -default: "Standard", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "Standard Premium ThinFilm Custom", + default: "Standard", + required: "No", + variability: "constant") + %> -**pvCoverRefrInd=_float_** +**pvCoverRefrInd=*float*** The refraction index for the coating applied to the module cover. A value of 1.0 represents refraction through air. Coatings have higher refraction indexes that capture more solar at lower angles of incidence. <%= member_table( -units: "", -legal_range: "x $\\geq$ 0", -default: "1.3", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "x $\\geq$ 0", + default: "1.3", + required: "No", + variability: "constant") + %> -**pvTempCoeff=_float_** +**pvTempCoeff=*float*** The temperature coefficient how the efficiency of the module varies with the cell temperature. Values are typically negative. -<%= member*table( -units: "1/^o^F", -legal_range: "\_no restrictions*", -default: "-0.00206", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "1/^o^F", + legal_range: "*no restrictions*", + default: "-0.00206", + required: "No", + variability: "constant") + %> -**pvArrayType=_choice_** +**pvArrayType=*choice*** The type of array describes mounting and tracking options. Roof mounted arrays have a higher installed nominal operating cell temperature (INOCT) of 120 ^o^F compared to the default of 113 ^o^F. Array self-shading is not currently calculated for adjacent rows of modules within an array. <%= member_table( -units: "", -legal_range: " FixedOpenRack, FixedRoofMount, OneAxisTracking, TwoAxisTracking", -default: "FixedOpenRack", -required: "No", -variability: "constant") -%> + units: "", + legal_range: " FixedOpenRack, FixedRoofMount, OneAxisTracking, TwoAxisTracking", + default: "FixedOpenRack", + required: "No", + variability: "constant") + %> -**pvTilt=_float_** +**pvTilt=*float*** -The tilt of the photovoltaic array from horizontal. Values outside the range 0 to 360 are first normalized to that range. For one-axis tracking, defines the tilt of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. +The tilt of the photovoltaic array from horizontal. Values outside the range 0 to 360 are first normalized to that range. For one-axis tracking, defines the tilt of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. <%= member_table( -units: "degrees", -legal_range: "unrestricted", -default: "from pvVertices (if given) else 0", -required: "No", -variability: "hourly") -%> + units: "degrees", + legal_range: "unrestricted", + default: "from pvVertices (if given) else 0", + required: "No", + variability: "hourly") + %> The following figures illustrate the use of both pvTilt and pvAzm for various configurations: @@ -131,77 +131,78 @@ The following figures illustrate the use of both pvTilt and pvAzm for various co ![One-axis tracker, horizontal aligned East/West (less common)](../assets/images/pv_horiz_tracker_east.png) -**pvAzm=_float_** +**pvAzm=*float*** -Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the range 0^o^ $\leq$ _x_ $<$ 360^o^ is given, it is normalized to that range. For one-axis tracking, defines the azimuth of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. +Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the range 0^o^ $\leq$ *x* $<$ 360^o^ is given, it is normalized to that range. For one-axis tracking, defines the azimuth of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. <%= member_table( -units: "degrees", -legal_range: "unrestricted", -default: "from pvVertices (if given) else 0", -required: "No", -variability: "hourly") -%> + units: "degrees", + legal_range: "unrestricted", + default: "from pvVertices (if given) else 0", + required: "No", + variability: "hourly") + %> -**pvVertices=_list of up to 36 floats_** +**pvVertices=*list of up to 36 floats*** -Vertices of an optional polygon representing the position and shape of the photovoltaic array. The polygon is used to calculate the shaded fraction using an advanced shading model. Only PVARRAYs and [SHADEXs][shadex]re considered in the advanced shading model -- PVARRAYs can be shaded by SHADEXs or other PVARRAYs. If pvVertices is omitted, the PVARRAY is assumed to be unshaded at all times. Advanced shading must be enabled via [TOP exShadeModel][top-model-control-items]. Note that the polygon is used only for evaluating shading; array capacity is specified by pvDCSysSize (above). + Vertices of an optional polygon representing the position and shape of the photovoltaic array. The polygon is used to calculate the shaded fraction using an advanced shading model. Only PVARRAYs and [SHADEXs](#shadex) are considered in the advanced shading model -- PVARRAYs can be shaded by SHADEXs or other PVARRAYs. If pvVertices is omitted, the PVARRAY is assumed to be unshaded at all times. Advanced shading must be enabled via [TOP exShadeModel](#top-model-control-items). Note that the polygon is used only for evaluating shading; array capacity is specified by pvDCSysSize (above). -The values that follow pvVertices are a series of X, Y, and Z values for the vertices of the polygon using a coordinate system defined from a viewpoint facing north. X and Y values convey east-west and north-south location respectively relative to an arbitrary origin (positive X value are to the east; positive Y values are to the north). Z values convey height relative to the building 0 level and positive values are upward. + The values that follow pvVertices are a series of X, Y, and Z values for the vertices of the polygon using a coordinate system defined from a viewpoint facing north. X and Y values convey east-west and north-south location respectively relative to an arbitrary origin (positive X value are to the east; positive Y values are to the north). Z values convey height relative to the building 0 level and positive values are upward. -The vertices are specified in counter-clockwise order when facing the receiving surface of the PVARRAY. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When pvMounting=Building, the effective position of the polygon is modified in response to building rotation specified by [TOP bldgAzm][top-general-data-items] + The vertices are specified in counter-clockwise order when facing the receiving surface of the PVARRAY. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When pvMounting=Building, the effective position of the polygon is modified in response to building rotation specified by [TOP bldgAzm](#top-general-data-items). -For example, to specify a rectangular photovoltaic array that is 10 x 20 ft, tilted 45 degrees, and facing south -- + For example, to specify a rectangular photovoltaic array that is 10 x 20 ft, tilted 45 degrees, and facing south -- pvVertices = 0, 0, 15, 20, 0, 15, 20, 7.07, 22.07, 0, 7.07, 22.07 <%= member_table( -units: "ft", -legal_range: "unrestricted", -default: "no polygon", -required: "9, 12, 15, 18, 21, 24, 27, 30, 33, or 36 values", -variability: "constant") -%> + units: "ft", + legal_range: "unrestricted", + default: "no polygon", + required: "9, 12, 15, 18, 21, 24, 27, 30, 33, or 36 values", + variability: "constant") + %> + +**pvSIF=*float*** -**pvSIF=_float_** + Shading Impact Factor (SIF) of the array used to represent the disproportionate impact on array output of partially shaded modules at the sub-array level. This impact is applied to the effective beam irradiance on the array: -Shading Impact Factor (SIF) of the array used to represent the disproportionate impact on array output of partially shaded modules at the sub-array level. This impact is applied to the effective beam irradiance on the array: + $$I_{poa,beam,eff} = \max\left(I_{poa,beam}\cdot\left(1-SIF\cdot f_{sh}\right),0\right)$$ -$$I_{poa,beam,eff} = \max\left(I_{poa,beam}\cdot\left(1-SIF\cdot f_{sh}\right),0\right)$$ + where $f_{sh}$ is the fraction of the array that is shaded. -where $f_{sh}$ is the fraction of the array that is shaded. + Default value is 1.2, which is representative of PV systems with sub-array microinverters or DC power optimizers. For systems without sub-array power electronics, values are closer to 2.0. -Default value is 1.2, which is representative of PV systems with sub-array microinverters or DC power optimizers. For systems without sub-array power electronics, values are closer to 2.0. +<%= member_table( + legal_range: "*x* $\\geq$ 1.0", + default: "1.2", + required: "No", + variability: "constant") %> -<%= member*table( -legal_range: "\_x* $\\geq$ 1.0", -default: "1.2", -required: "No", -variability: "constant") %> -**pvMounting=_choice_** +**pvMounting=*choice*** -Specified mounting location of this PVARRAY. pvMounting=Site indicates the array position is not altered by building rotation via [TOP bldgAzm][top-general-data-items]while PVARRAYs with pvMounting=Building are assumed to rotate with the building. + Specified mounting location of this PVARRAY. pvMounting=Site indicates the array position is not altered by building rotation via [TOP bldgAzm](#top-general-data-items), while PVARRAYs with pvMounting=Building are assumed to rotate with the building. <%= member_table( -units: "", -legal_range: "Building or Site", -default: "Building", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "Building or Site", + default: "Building", + required: "No", + variability: "constant") + %> -**pvGrndRefl=_float_** +**pvGrndRefl=*float*** Ground reflectance used for calculating reflected solar incidence on the array. -<%= member*table( -units: "", -legal_range: "0 $<$ \_x* $<$ 1.0", -default: "0.2", -required: "No", -variability: "hourly") -%> +<%= member_table( + units: "", + legal_range: "0 $<$ *x* $<$ 1.0", + default: "0.2", + required: "No", + variability: "hourly") + %> -**pvDCtoACRatio=_float_** +**pvDCtoACRatio=*float*** DC-to-AC ratio used to intentionally undersize the AC inverter. This is used to increase energy production in the beginning and end of the day despite the possibility of clipping peak sun hours. -<%= member*table( -units: "", -legal_range: "\_x* > 0.0", -default: "1.2", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "", + legal_range: "*x* > 0.0", + default: "1.2", + required: "No", + variability: "constant") + %> -**pvInverterEff=_float_** +**pvInverterEff=*float*** AC inverter efficiency at rated DC power. -<%= member*table( -units: "", -legal_range: "0 $<$ \_x* $<$ 1.0", -default: "0.96", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "", + legal_range: "0 $<$ *x* $<$ 1.0", + default: "0.96", + required: "No", + variability: "constant") + %> -**pvSysLosses=_float_** +**pvSysLosses=*float*** Fraction of total DC energy lost. The total loss from a system is aggregated from several possible causes as illustrated below: -<%= csv*table(< true) -**Loss Type**, **Default Assumption** -Soiling, 0.02 -\_Shading*, _0 (handled explicitly)_ -Snow, 0 -_Mismatch_, _0 (shading mismatch handled explicitly [see pvSIF])_ -Wiring, 0.02 -Connections, 0.005 -Light-induced degradation, 0.015 -Nameplate rating, 0.01 -_Age_, _0.05 (estimated 0.5% degradation over 20 years)_ -Availability, 0.03 -**Total**, **0.14** +<%= csv_table(< true) + **Loss Type**, **Default Assumption** + Soiling, 0.02 + *Shading*, *0 (handled explicitly)* + Snow, 0 + *Mismatch*, *0 (shading mismatch handled explicitly [see pvSIF])* + Wiring, 0.02 + Connections, 0.005 + Light-induced degradation, 0.015 + Nameplate rating, 0.01 + *Age*, *0.05 (estimated 0.5% degradation over 20 years)* + Availability, 0.03 + **Total**, **0.14** END %> -_Italic_ lines indicate differences from PVWatts assumptions. +*Italic* lines indicate differences from PVWatts assumptions. -<%= member*table( -units: "", -legal_range: "0 $<$ \_x* $<$ 1.0", -default: "0.14", -required: "No", -variability: "hourly") -%> +<%= member_table( + units: "", + legal_range: "0 $<$ *x* $<$ 1.0", + default: "0.14", + required: "No", + variability: "hourly") + %> **endPVARRAY** Optionally indicates the end of the PVARRAY definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. -<%= member*table( -units: "", -legal_range: "", -default: "\_none*", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[PVArray][p_pvarray] +- @[PVArray](#p_pvarray) diff --git a/doc/src/docs/input-data/report.md b/doc/src/docs/input-data/report.md index a8c95353c..a93209546 100644 --- a/doc/src/docs/input-data/report.md +++ b/doc/src/docs/input-data/report.md @@ -280,4 +280,4 @@ Optionally indicates the end of the report definition. Alternatively, the end of **Related Probes:** -- @[report][p_report] +- @[report](#p_report) diff --git a/doc/src/docs/input-data/reportcol.md b/doc/src/docs/input-data/reportcol.md index f7516ed9e..95b66979d 100644 --- a/doc/src/docs/input-data/reportcol.md +++ b/doc/src/docs/input-data/reportcol.md @@ -2,92 +2,92 @@ Each REPORTCOL defines a single column of a User Defined Table (UDT) report. REPORTCOLs are not used with report types other than UDT. -Use as many REPORTCOLs as there are values to be shown in each row of the user-defined report. The values will appear in columns, ordered from left to right in the order defined. Be sure to include any necessary values to identify the row, such as the day of month, hour of day, etc. CSE supplies _NO_ columns automatically. +Use as many REPORTCOLs as there are values to be shown in each row of the user-defined report. The values will appear in columns, ordered from left to right in the order defined. Be sure to include any necessary values to identify the row, such as the day of month, hour of day, etc. CSE supplies *NO* columns automatically. **colName** Name of REPORTCOL. <%= member_table( -units: "", -legal_range: "_63 characters_", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") %> -**colReport=_rpName_** +**colReport=*rpName*** -Name of report to which current report column belongs. If REPORTCOL is given within a REPORT object, then _colReport_ defaults to that report. +Name of report to which current report column belongs. If REPORTCOL is given within a REPORT object, then *colReport* defaults to that report. <%= member_table( -units: "", -legal_range: "name of a _REPORT_", -default: "_current report, if any_", -required: "Unless in a _REPORT_", -variability: "constant") %> + units: "", + legal_range: "name of a *REPORT*", + default: "*current report, if any*", + required: "Unless in a *REPORT*", + variability: "constant") %> -**colVal=_expression_** +**colVal=*expression*** Value to show in this column of report. <%= member_table( -units: "", -legal_range: "_any numeric or string expression_", -default: "_none_", -required: "Yes", -variability: "subhour /end interval") %> + units: "", + legal_range: "*any numeric or string expression*", + default: "*none*", + required: "Yes", + variability: "subhour /end interval") %> -**colHead=_string_** +**colHead=*string*** Text used for column head. <%= member_table( -units: "", -legal_range: "", -default: "_colName_ or blank", -required: "No", -variability: "constant") %> + units: "", + legal_range: "", + default: "*colName* or blank", + required: "No", + variability: "constant") %> -**colGap=_int_** +**colGap=*int*** -Space between (to left of) column, in character positions. Allows you to space columns unequally, to emphasize relations among columns or to improve readability. If the total of the _colGaps_ and _colWids_ in the report's REPORTCOLs is substantially less than the REPORT's _rpCPL_ (characters per line, see REPORT), CSE will insert additional spaces between columns. To suppress these spaces, use a smaller _rpCPL_ or use _rpCPL_ = -1. +Space between (to left of) column, in character positions. Allows you to space columns unequally, to emphasize relations among columns or to improve readability. If the total of the *colGaps* and *colWids* in the report's REPORTCOLs is substantially less than the REPORT's *rpCPL* (characters per line, see REPORT), CSE will insert additional spaces between columns. To suppress these spaces, use a smaller *rpCPL* or use *rpCPL* = -1. <%= member_table( -units: "", -legal_range: "_x_ $\\ge$ 0", -default: "1", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $\\ge$ 0", + default: "1", + required: "No", + variability: "constant") %> -**colWid=_int_** +**colWid=*int*** Column width. <%= member_table( -units: "", -legal_range: "_x_ $\\ge$ 0", -default: "10", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $\\ge$ 0", + default: "10", + required: "No", + variability: "constant") %> -**colDec=_int_** +**colDec=*int*** Number of digits after decimal point. <%= member_table( -units: "", -legal_range: "_x_ $\\ge$ 0", -default: "_flexible format_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $\\ge$ 0", + default: "*flexible format*", + required: "No", + variability: "constant") %> -**colJust=_choice_** +**colJust=*choice*** Specifies positioning of data within column: <%= csv_table(< false) -Left, Left justified -Right, Right justified + Left, Left justified + Right, Right justified END %> @@ -96,12 +96,12 @@ END Optionally indicates the end of the report column definition. Alternatively, the end of the report column definition can be indicated by END or by beginning another REPORTCOL or other object. <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[reportCol][p_reportcol] +- @[reportCol](#p_reportcol) diff --git a/doc/src/docs/input-data/reportfile.md b/doc/src/docs/input-data/reportfile.md index 4123d0bfa..2b4cbe0d2 100644 --- a/doc/src/docs/input-data/reportfile.md +++ b/doc/src/docs/input-data/reportfile.md @@ -102,4 +102,4 @@ Optionally indicates the end of the report file definition. Alternatively, the e **Related Probes:** -- @[reportFile][p_reportfile] +- @[reportFile](#p_reportfile) diff --git a/doc/src/docs/input-data/rsys.md b/doc/src/docs/input-data/rsys.md index a5e74ccbd..0c60a2314 100644 --- a/doc/src/docs/input-data/rsys.md +++ b/doc/src/docs/input-data/rsys.md @@ -7,393 +7,393 @@ RSYS constructs an object representing an air-based residential HVAC system. Optional name of HVAC system; give after the word “RSYS” if desired. <%= member_table( -units: "", -legal_range: "_63 characters_", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") %> -**rsType=_choice_** +**rsType=*choice*** Type of system. <%= csv_table(< true) rsType, Description -ACFURNACE, Compressor-based cooling modeled per SEER and EER. Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. -ACPMFURNACE, Compressor-based cooling modeled per PERFORMANCEMAP specified in rsPerfMapClg. Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. -ACRESISTANCE, Compressor-based cooling and electric ('strip') heating. Cooling performance based on SEER and EER. Primary heating input energy is accumulated to end use HTG of meter rsElecMtr. +ACFURNACE, Compressor-based cooling modeled per SEER and EER. Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. +ACPMFURNACE, Compressor-based cooling modeled per PERFORMANCEMAP specified in rsPerfMapClg. Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. +ACRESISTANCE, Compressor-based cooling and electric ('strip') heating. Cooling performance based on SEER and EER. Primary heating input energy is accumulated to end use HTG of meter rsElecMtr. ACPMRESISTANCE, Cooling based on PERFORMANCEMAP specified in rsPerfMapClg. Primary heating input energy is accumulated to end use HTG of meter rsElecMtr. -ASHP, Air-source heat pump (compressor-based heating and cooling). Primary (compressor) heating input energy is accumulated to end use HTG of meter rsElecMtr. Auxiliary and defrost heating input energy is accumulated to end use HPBU of meter rsElecMtr or meter rsFuelMtr (depending on rsTypeAuxH). -ASHPKGROOM, Packaged room air-source heat pump. +ASHP, Air-source heat pump (compressor-based heating and cooling). Primary (compressor) heating input energy is accumulated to end use HTG of meter rsElecMtr. Auxiliary and defrost heating input energy is accumulated to end use HPBU of meter rsElecMtr or meter rsFuelMtr (depending on rsTypeAuxH). +ASHPKGROOM, Packaged room air-source heat pump. ASHPHYDRONIC, Air-to-water heat pump with hydronic distribution. Compressor performance is approximated using the air-to-air model with adjusted efficiencies. ASHPPM, Air-to-air heat pump modeled per PERFORMANCMAPs specified via rsPerfMapHtg and rsPerfMapClg. -WSHP, Water-to-air heat pump. +WSHP, Water-to-air heat pump. AC, Compressor-based cooling; no heating. Required ratings are SEER and capacity and EER at 95 ^o^F outdoor dry bulb. ACPM, Compressor-based cooling modeled per PERFORMANCEMAP specified in rsPerfMapClg; no heating. ACPKGROOM, Packaged compressor-based cooling; no heating. Required ratings are capacity and EER at 95 ^o^F outdoor dry bulb. -FURNACE, Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. -RESISTANCE, Electric heating. Primary heating input energy is accumulated to end use HTG of meter rsElecMtr. +FURNACE, Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. +RESISTANCE, Electric heating. Primary heating input energy is accumulated to end use HTG of meter rsElecMtr. ACPKGROOMFURNACE, Packaged room cooling and (separate) furnace heating. ACPKGROOMRESISTANCE, Packaged room cooling and electric resistance heating. -COMBINEDHEATDHW, Combined heating / DHW. Use rsCHDHWSYS to specify the DHWSYS that provides hot water to the coil in this RSYS. No cooling. +COMBINEDHEATDHW, Combined heating / DHW. Use rsCHDHWSYS to specify the DHWSYS that provides hot water to the coil in this RSYS. No cooling. ACCOMBINEDHEATDHW, Compressor-based cooling; COMBINEDHEATDHW heating. ACPMCOMBINEDHEATDHW, Compressor-based cooling modeled per PERFORMANCEMAP specified in rsPerfMapClg; COMBINEDHEATDHW heating. -FANCOIL, Coil-based heating and cooling. No primary (fuel-using) equipment is modeled. rsLoadMtr, rsHtgLoadMtr, and rsClgLoadMtr are typically used to record loads for linking to an external model. +FANCOIL, Coil-based heating and cooling. No primary (fuel-using) equipment is modeled. rsLoadMtr, rsHtgLoadMtr, and rsClgLoadMtr are typically used to record loads for linking to an external model. END %> <%= member_table( -units: "", -legal_range: "_one of above choices_", -default: "ACFURNACE", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*one of above choices*", + default: "ACFURNACE", + required: "No", + variability: "constant") %> -**rsDesc=_string_** +**rsDesc=*string*** Text description of system, included as documentation in debugging reports such as those triggered by rsGeneratePerfMap=YES <%= member_table( -units: "", -legal_range: "string", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "string", + default: "*none*", + required: "No", + variability: "constant") %> -**rsModeCtrl=_choice_** +**rsModeCtrl=*choice*** Specifies systems heating/cooling availability during simulation. <%= csv_table(< false) -OFF, System is off (neither heating nor cooling is available) -HEAT, System can heat (assuming rsType can heat) -COOL, System can cool (assuming rsType can cool) -AUTO, System can either heat or cool (assuming rsType compatibility). First request by any zone served by this RSYS determines mode for the current time step. + OFF, System is off (neither heating nor cooling is available) + HEAT, System can heat (assuming rsType can heat) + COOL, System can cool (assuming rsType can cool) + AUTO, System can either heat or cool (assuming rsType compatibility). First request by any zone served by this RSYS determines mode for the current time step. END %> <%= member_table( -units: "", -legal_range: "OFF, HEAT, COOL, AUTO", -default: "AUTO", -required: "No", -variability: "hourly") %> + units: "", + legal_range: "OFF, HEAT, COOL, AUTO", + default: "AUTO", + required: "No", + variability: "hourly") %> -**rsGeneratePerfMap=_choice_** +**rsGeneratePerfMap=*choice*** -Generate performance map(s) for this RSYS. Comma-separated text is written to file PM\_[rsName].csv. This is a debugging capability that is not necessarily maintained. The format of the generated csv text file may change and is unrelated to the PERFORMANCEMAP input scheme used via _rsPerfMapHtg_ and _rsPerfMapClg_. +Generate performance map(s) for this RSYS. Comma-separated text is written to file PM\_[rsName].csv. This is a debugging capability that is not necessarily maintained. The format of the generated csv text file may change and is unrelated to the PERFORMANCEMAP input scheme used via *rsPerfMapHtg* and *rsPerfMapClg*. <%= member_table( -units: "", -legal_range: "YES, NO", -default: "NO", -required: "No", -variability: "constant") %> + units: "", + legal_range: "YES, NO", + default: "NO", + required: "No", + variability: "constant") %> -**rsFanTy=_choice_** +**rsFanTy=*choice*** -Specifies fan (blower) position relative to primary heating or cooling source (i.e. heat exchanger or heat pump coil for heating and AC coil for cooling). The blower position determines where fan heat is added to the RSYS air stream and thus influences the coil entering air temperature. +Specifies fan (blower) position relative to primary heating or cooling source (i.e. heat exchanger or heat pump coil for heating and AC coil for cooling). The blower position determines where fan heat is added to the RSYS air stream and thus influences the coil entering air temperature. <%= member_table( -units: "", -legal_range: "BLOWTHRU, DRAWTHRU", -default: "BLOWTHRU", -required: "No", -variability: "constant") %> + units: "", + legal_range: "BLOWTHRU, DRAWTHRU", + default: "BLOWTHRU", + required: "No", + variability: "constant") %> -**rsFanMotTy=_choice_** +**rsFanMotTy=*choice*** Specifies type of motor driving the fan (blower). This is used in the derivation of the coil-only cooling capacity for the RSYS. <%= csv_table(< false) -PSC, Permanent split capacitor -BPM, Brushless permanent magnet (aka ECM) + PSC, Permanent split capacitor + BPM, Brushless permanent magnet (aka ECM) END %> <%= member_table( -units: "", -legal_range: "PSC, BPM", -default: "PSC", -required: "No", -variability: "constant") %> + units: "", + legal_range: "PSC, BPM", + default: "PSC", + required: "No", + variability: "constant") %> -**rsAdjForFanHt=_choice_** +**rsAdjForFanHt=*choice*** Fan heat adjustment with two options Yes or no. Yes: fanHtRtd derived from rsFanTy and removed from capacity and input values. No: no rated fan heat adjustments. -**rsElecMtr=_mtrName_** +**rsElecMtr=*mtrName*** Name of METER object, if any, by which system’s electrical energy use is recorded (under appropriate end uses). <%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*name of a METER*", + default: "*none*", + required: "No", + variability: "constant") %> -**rsFuelMtr =_mtrName_** +**rsFuelMtr =*mtrName*** Name of METER object, if any, by which system’s fuel energy use is recorded (under appropriate end uses). <%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*name of a METER*", + default: "*none*", + required: "No", + variability: "constant") %> -**rsLoadMtr =_ldMtrName_**\ -**rsHtgLoadMtr =_ldMtrName_**\ -**rsClgLoadMtr =_ldMtrName_** +**rsLoadMtr =*ldMtrName***\ +**rsHtgLoadMtr =*ldMtrName***\ +**rsClgLoadMtr =*ldMtrName*** -Names of LOADMETER objects, if any, to which the system’s heating and/or cooling loads are recorded. Loads are the gross heating and cooling energy added to (or removed from) the air stream. Fan heat, auxiliary heat, and duct losses are not included in loads values. +Names of LOADMETER objects, if any, to which the system’s heating and/or cooling loads are recorded. Loads are the gross heating and cooling energy added to (or removed from) the air stream. Fan heat, auxiliary heat, and duct losses are not included in loads values. -rsLoadMtr accumulates both heating (> 0) and cooling (< 0) loads. rsHtgLoadMtr accumulates only heating loads. rsClgLoadMtr accumulates only cooling loads. This arrangement accomodates mixed heating and cooling source configurations. For example, loads can be tracked appropriately in a building that has multiple cooling sources and a single heating source. +rsLoadMtr accumulates both heating (> 0) and cooling (< 0) loads. rsHtgLoadMtr accumulates only heating loads. rsClgLoadMtr accumulates only cooling loads. This arrangement accomodates mixed heating and cooling source configurations. For example, loads can be tracked appropriately in a building that has multiple cooling sources and a single heating source. rsLoadMtr should not specify the same LOADMETER as rsHtgLoadMtr or rsClgLoadMtr since this would result in double counting. <%= member_table( -units: "", -legal_range: "_name of a LOADMETER_", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*name of a LOADMETER*", + default: "*none*", + required: "No", + variability: "constant") %> -**rsSrcSideLoadMtr=_ldMtrName_**\ -**rsHtgSrcSideLoadMtr =_ldMtrName_**\ -**rsClgSrcSideLoadMtr =_ldMtrName_** +**rsSrcSideLoadMtr=*ldMtrName***\ +**rsHtgSrcSideLoadMtr =*ldMtrName***\ +**rsClgSrcSideLoadMtr =*ldMtrName*** -Name of LOADMETER objects, if any, to which the system’s source-side heat transfers are recorded. For DX systems, this is the outdoor coil heat transfer. For other types, source-side values are the same as the indoor coil loads reported via rsLoadMtr. +Name of LOADMETER objects, if any, to which the system’s source-side heat transfers are recorded. For DX systems, this is the outdoor coil heat transfer. For other types, source-side values are the same as the indoor coil loads reported via rsLoadMtr. -rsSrcSideLoadMtr accumulates both heating (> 0) and cooling (< 0) transfers. rsHtgSrcSideLoadMtr accumulates only heating transfers. rsClgSrcSideLoadMtr accumulates only cooling transfers. This arrangement accomodates mixed heating and cooling source configurations. +rsSrcSideLoadMtr accumulates both heating (> 0) and cooling (< 0) transfers. rsHtgSrcSideLoadMtr accumulates only heating transfers. rsClgSrcSideLoadMtr accumulates only cooling transfers. This arrangement accomodates mixed heating and cooling source configurations. rsSrcSideLoadMtr should not specify the same LOADMETER as rsHtgSrcSideLoadMtr or rsClgSrcSideLoadMtr since this would result in double counting. <%= member_table( -units: "", -legal_range: "_Name of a LOADMETER_", -default: "", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*Name of a LOADMETER*", + default: "", + required: "No", + variability: "constant") %> -**rsCHDHWSYS=_dhwsysName_** +**rsCHDHWSYS=*dhwsysName*** -DHWSYS hot water source for this RSYS, required when rsType is COMBINEDHEATDHW or ACCOMBINEDHEATDHW. The specified DHWSYS must include a DHWHEATER of whType=ASHPX or RESISTANCEX. +DHWSYS hot water source for this RSYS, required when rsType is COMBINEDHEATDHW or ACCOMBINEDHEATDHW. The specified DHWSYS must include a DHWHEATER of whType=ASHPX or RESISTANCEX. <%= member_table( -units: "", -legal_range: "Name of a DHWSYS", -default: "_none_", -required: "if combined heat/DHW", -variability: "constant") %> + units: "", + legal_range: "Name of a DHWSYS", + default: "*none*", + required: "if combined heat/DHW", + variability: "constant") %> -**rsAFUE=_float_** +**rsAFUE=*float*** Heating Annual Fuel Utilization Efficiency (AFUE). <%= member_table( -units: "", -legal_range: "0 $<$ x $\\le$ 1", -default: "0.9 if furnace, 1.0 if resistance", -required: "No", -variability: "constant") %> + units: "", + legal_range: "0 $<$ x $\\le$ 1", + default: "0.9 if furnace, 1.0 if resistance", + required: "No", + variability: "constant") %> -**rsCapH=_float_** +**rsCapH=*float*** Heating capacity, used when rsType is ACFURNACE, ACRESISTANCE, FURNACE, WSHP or RESISTANCE. If rsType=WSHP, rsCapH is at source fluid temperature = 68 ^o^F. <%= member_table( -units: "Btu/hr", -legal_range: "_AUTOSIZE_ or x $\\ge$ 0", -default: "0", -required: "No", -variability: "constant") %> + units: "Btu/hr", + legal_range: "*AUTOSIZE* or x $\\ge$ 0", + default: "0", + required: "No", + variability: "constant") %> -**rsTdDesH=_float_** +**rsTdDesH=*float*** Nominal heating temperature rise (across system, not at zone) used during autosizing (when capacity is not yet known) and to derive heating air flow rate from heating capacity. <%= member_table( -units: "^o^F", -legal_range: "_x_ $>$ 0", -default: "30 ^o^F if heat pump else 50 ^o^F", -required: "No", -variability: "constant") %> + units: "^o^F", + legal_range: "*x* $>$ 0", + default: "30 ^o^F if heat pump else 50 ^o^F", + required: "No", + variability: "constant") %> -**rsFxCapH=_float_** +**rsFxCapH=*float*** -Heating autosizing capacity factor. If AUTOSIZEd, rsCapH or rsCap47 is set to rsFxCapH $\times$ (peak design-day load). Peak design-day load is the heating capacity that holds zone temperature at the thermostat set point during the _last substep_ of all hours of all design days. +Heating autosizing capacity factor. If AUTOSIZEd, rsCapH or rsCap47 is set to rsFxCapH $\times$ (peak design-day load). Peak design-day load is the heating capacity that holds zone temperature at the thermostat set point during the *last substep* of all hours of all design days. <%= member_table( -units: "", -legal_range: "_x_ $>$ 0", -default: "1.4", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $>$ 0", + default: "1.4", + required: "No", + variability: "constant") %> -**rsFanPwrH=_float_** +**rsFanPwrH=*float*** -Heating operating fan power. For most rsTypes, heating air flow is calculated from heating capacity and rsTdDesH. The default value of rsFanPwrH is .365 W/cfm except 0.273 W/cfm is used when rsType=COMBINEDHEATDHW and rsType=ACCOMBINEDHEATDHW. +Heating operating fan power. For most rsTypes, heating air flow is calculated from heating capacity and rsTdDesH. The default value of rsFanPwrH is .365 W/cfm except 0.273 W/cfm is used when rsType=COMBINEDHEATDHW and rsType=ACCOMBINEDHEATDHW. <%= member_table( -units: "W/cfm", -legal_range: "_x_ $\\ge$ 0", -default: "see above", -required: "No", -variability: "constant") %> + units: "W/cfm", + legal_range: "*x* $\\ge$ 0", + default: "see above", + required: "No", + variability: "constant") %> -**rsHSPF=_float_** +**rsHSPF=*float*** For rsType=ASHP, Heating Seasonal Performance Factor (HSPF). <%= member_table( -units: "Btu/Wh", -legal_range: "_x_ $>$ 0", -default: "_none_", -required: "Yes if rsType=ASHP", -variability: "constant") %> + units: "Btu/Wh", + legal_range: "*x* $>$ 0", + default: "*none*", + required: "Yes if rsType=ASHP", + variability: "constant") %> -**rsCap47=_float_** +**rsCap47=*float*** For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 47 ^o^F. If rsType=ASHP and both rsCapC and rsCap47 are autosized, both are set to the larger consistent value using rsCapRat9547 (after application of rsFxCapH and rsFxCapC). <%= member_table( -units: "Btu/Wh", -legal_range: "_AUTOSIZE_ or _x_ $>$ 0", -default: "Calculated from rsCapC", -required: "No", -variability: "constant") %> + units: "Btu/Wh", + legal_range: "*AUTOSIZE* or *x* $>$ 0", + default: "Calculated from rsCapC", + required: "No", + variability: "constant") %> -**rsCap35=_float_** +**rsCap35=*float*** -For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 35 ^o^F. rsCap35 typically reflects reduced capacity due to reverse (cooling) heat pump operation for defrost. +For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 35 ^o^F. rsCap35 typically reflects reduced capacity due to reverse (cooling) heat pump operation for defrost. <%= member_table( -units: "Btu/Wh", -legal_range: "_x_ $>$ 0", -default: "Calculated from rsCap47 and rsCap17", -required: "No", -variability: "constant") %> + units: "Btu/Wh", + legal_range: "*x* $>$ 0", + default: "Calculated from rsCap47 and rsCap17", + required: "No", + variability: "constant") %> -**rsCap17=_float_** +**rsCap17=*float*** For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 17 ^o^F. <%= member_table( -units: "Btu/Wh", -legal_range: "_x_ $>$ 0", -default: "Calculated from rsCap47", -required: "No", -variability: "constant") %> + units: "Btu/Wh", + legal_range: "*x* $>$ 0", + default: "Calculated from rsCap47", + required: "No", + variability: "constant") %> -**rsCOP95=_float_** +**rsCOP95=*float*** For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 95 ^o^F. <%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "Calculated from rsCap95", -required: "No", -variability: "constant") %> + units: "", + legal_range: "x $>$ 0", + default: "Calculated from rsCap95", + required: "No", + variability: "constant") %> -**rsCOP47=_float_** +**rsCOP47=*float*** For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 47 ^o^F. For rsType=WSHP, rated heating coefficient of performance at source fluid temperature = 68 ^o^F. <%= member_table( -units: "", -legal_range: "_x_ $>$ 0", -default: "Estimated from rsHSPF, rsCap47, and rsCap17", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $>$ 0", + default: "Estimated from rsHSPF, rsCap47, and rsCap17", + required: "No", + variability: "constant") %> -**rsCOP35=_float_** +**rsCOP35=*float*** For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 35 ^o^F. <%= member_table( -units: "", -legal_range: "_x_ $>$ 0", -default: "Calculated from rsCap35, rsCap47, rsCap17, rsCOP47, and rsCOP17", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $>$ 0", + default: "Calculated from rsCap35, rsCap47, rsCap17, rsCOP47, and rsCOP17", + required: "No", + variability: "constant") %> -**rsCOP17=_float_** +**rsCOP17=*float*** For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 17 ^o^F. <%= member_table( -units: "", -legal_range: "_x_ $>$ 0", -default: "Calculated from rsHSPF, rsCap47, and rsCap17", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $>$ 0", + default: "Calculated from rsHSPF, rsCap47, and rsCap17", + required: "No", + variability: "constant") %> -**rsCapRat1747=_float_** +**rsCapRat1747=*float*** Ratio of rsCAP17 over rsCAP47. <%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "Based on HSPF or\nother correlations", -required: "No", -variability: "Start of a run") %> + units: "", + legal_range: "x $>$ 0", + default: "Based on HSPF or\nother correlations", + required: "No", + variability: "Start of a run") %> -**rsCapRat9547=_float_** +**rsCapRat9547=*float*** -Ratio of rsCAP95 to rsCAP47. This ratio is used for inter-defaulting rsCap47 and rsCapC such that they have consistent values as is required given that a heat pump is a single device. If not given, rsCapRat9547 is determined during calculations using the relationship cap95 = 0.98 \* cap47 + 180 (derived via correlation of capacities of a set of real units). +Ratio of rsCAP95 to rsCAP47. This ratio is used for inter-defaulting rsCap47 and rsCapC such that they have consistent values as is required given that a heat pump is a single device. If not given, rsCapRat9547 is determined during calculations using the relationship cap95 = 0.98 * cap47 + 180 (derived via correlation of capacities of a set of real units). <%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "See above", -required: "No", -variability: "constant") %> + units: "", + legal_range: "x $>$ 0", + default: "See above", + required: "No", + variability: "constant") %> -**rsCapRatCH=_float_** +**rsCapRatCH=*float*** -For WSHP only: ratio of rsCapC to rsCapH. Used to derive capacity during autosizing or when only one capacity is specified. +For WSHP only: ratio of rsCapC to rsCapH. Used to derive capacity during autosizing or when only one capacity is specified. <%= member_table( -units: "", -legal_range: ".3 $\\leq$ x $<$ 2", -default: "0.8", -required: "No", -variability: "Start of a run") %> + units: "", + legal_range: ".3 $\\leq$ x $<$ 2", + default: "0.8", + required: "No", + variability: "Start of a run") %> -**rsPerfMapHtg=_performanceMapName_** +**rsPerfMapHtg=*performanceMapName*** -Specifies the heating performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM. The PERFORMANCEMAP must have grid variables outdoor drybulb and compressor speed (in that order) and lookup values of net capacity ratios and COP. See example in PERFORMANCEMAP. +Specifies the heating performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM. The PERFORMANCEMAP must have grid variables outdoor drybulb and compressor speed (in that order) and lookup values of net capacity ratios and COP. See example in PERFORMANCEMAP. <%= member_table( -units: "", -legal_range: "Name of a PERFORMANCEMAP", -default: "", -required: "if rsType specifies a performance map model", -variability: "Start of a run") %> + units: "", + legal_range: "Name of a PERFORMANCEMAP", + default: "", + required: "if rsType specifies a performance map model", + variability: "Start of a run") %> -**rsPerfMapClg=_performanceMapName_** +**rsPerfMapClg=*performanceMapName*** -Specifies the cooling performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM, ACPM, ACPMFURNACE, ACPMRESISTANCE, or ACPMCOMBINEDHEATDHW. The PERFORMANCEMAP must have grid variables outdoor drybulb and compressor speed (in that order) and lookup values of net capacity ratios and COP. See example in PERFORMANCEMAP. +Specifies the cooling performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM, ACPM, ACPMFURNACE, ACPMRESISTANCE, or ACPMCOMBINEDHEATDHW. The PERFORMANCEMAP must have grid variables outdoor drybulb and compressor speed (in that order) and lookup values of net capacity ratios and COP. See example in PERFORMANCEMAP. <%= member_table( -units: "", -legal_range: "Name of a PERFORMANCEMAP", -default: "", -required: "if rsType specifies a performance map model", -variability: "Start of a run") %> + units: "", + legal_range: "Name of a PERFORMANCEMAP", + default: "", + required: "if rsType specifies a performance map model", + variability: "Start of a run") %> -**rsTypeAuxH=_choice_** +**rsTypeAuxH=*choice*** -For rsType=ASHP, type of auxiliary heat. Auxiliary heating is used when heatpump capacity is insufficient to maintain zone temperature and during reverse-cycle defrost operation (if rsDefrostModel=REVCYCLEAUX). If rsTypeAuxH=Furnace, energy use for auxiliary heat is accumulated to end use HPBU of meter rsFuelMtr (if specified). If rsTypeAuxH=Resistance, energy use for auxiliary heat is accumulated to end use HPBU of meter rsElecMtr (if specified). +For rsType=ASHP, type of auxiliary heat. Auxiliary heating is used when heatpump capacity is insufficient to maintain zone temperature and during reverse-cycle defrost operation (if rsDefrostModel=REVCYCLEAUX). If rsTypeAuxH=Furnace, energy use for auxiliary heat is accumulated to end use HPBU of meter rsFuelMtr (if specified). If rsTypeAuxH=Resistance, energy use for auxiliary heat is accumulated to end use HPBU of meter rsElecMtr (if specified). <%= csv_table(< true) Choice, Description @@ -404,13 +404,13 @@ END %> <%= member_table( -units: "", -legal_range: "See table above", -default: "RESISTANCE", -required: "No", -variability: "constant") %> + units: "", + legal_range: "See table above", + default: "RESISTANCE", + required: "No", + variability: "constant") %> -**rsCtrlAuxH=_choice_** +**rsCtrlAuxH=*choice*** For rsType=ASHP, type of auxiliary heating control. @@ -423,97 +423,97 @@ END %> <%= member_table( -units: "", -legal_range: "See table above", -default: "ALTERNATE if rsTypeAuxH=FURNACE else CYCLE", -required: "No", -variability: "Start of a run") %> + units: "", + legal_range: "See table above", + default: "ALTERNATE if rsTypeAuxH=FURNACE else CYCLE", + required: "No", + variability: "Start of a run") %> -**rsCapAuxH=_float_** +**rsCapAuxH=*float*** For rsType=ASHP, auxiliary heating capacity. If AUTOSIZEd, rsCapAuxH is set to the peak heating load evaluated at the heating design temperature (Top.heatDsTDbO). <%= member_table( -units: "Btu/hr", -legal_range: "_AUTOSIZE_ or _x_ $\\ge$ 0", -default: "0", -required: "No", -variability: "constant") %> + units: "Btu/hr", + legal_range: "*AUTOSIZE* or *x* $\\ge$ 0", + default: "0", + required: "No", + variability: "constant") %> -**rsAFUEAuxH=_float_** +**rsAFUEAuxH=*float*** For rsType=ASHP, auxiliary heat annualized fuel utilization efficiency. <%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "0.9 if rsTypeAuxH=FURNACE else 1", -required: "No", -variability: "constant") %> + units: "", + legal_range: "x $>$ 0", + default: "0.9 if rsTypeAuxH=FURNACE else 1", + required: "No", + variability: "constant") %> -**rsDefrostModel=_choice_** +**rsDefrostModel=*choice*** -Selects modeling options for ASHP outdoor coil defrosting when 17 ^o^F < TDbO < 45 ^o^F. In this temperature range, heating capacity and/or efficiency are typically reduced due to frost accumulation on the outdoor coil. + Selects modeling options for ASHP outdoor coil defrosting when 17 ^o^F < TDbO < 45 ^o^F. In this temperature range, heating capacity and/or efficiency are typically reduced due to frost accumulation on the outdoor coil. <%= csv_table(< false) -NONE, Defrost is not modeled. When 17 ^o^F < TDbO < 45 ^o^F, capacity and efficiency are determined by interpolation using unmodified 17 ^o^F and 47 ^o^F data. -REVCYCLE, Reverse compressor (cooling) operation. Net capacity and efficiency is derived from rsCap17/rsCOP17 and rsCap35/rsCOP35 using linear interpolation. Auxiliary heat is not modeled. -REVCYCLEAUX, Reverse compressor (cooling) operation with provision of sufficient auxiliary heat to make up the loss of heating capacity. Auxiliary heating is typically used to prevent cold air delivery to zones during the defrost cycle. + NONE, Defrost is not modeled. When 17 ^o^F < TDbO < 45 ^o^F, capacity and efficiency are determined by interpolation using unmodified 17 ^o^F and 47 ^o^F data. + REVCYCLE, Reverse compressor (cooling) operation. Net capacity and efficiency is derived from rsCap17/rsCOP17 and rsCap35/rsCOP35 using linear interpolation. Auxiliary heat is not modeled. + REVCYCLEAUX, Reverse compressor (cooling) operation with provision of sufficient auxiliary heat to make up the loss of heating capacity. Auxiliary heating is typically used to prevent cold air delivery to zones during the defrost cycle. END %> <%= member_table( -units: "", -legal_range: "_one of above choices_", -default: "REVCYCLEAUX", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*one of above choices*", + default: "REVCYCLEAUX", + required: "No", + variability: "constant") %> -**rsSHRtarget=_float_** +**rsSHRtarget=*float*** Nominal target for sensible heat ratio (for fancoil). <%= member_table( -units: "", -legal_range: "_x_ $>$ 0", -default: "0.7", -required: "No", -variability: "subhour") %> + units: "", + legal_range: "*x* $>$ 0", + default: "0.7", + required: "No", + variability: "subhour") %> -**rsFxCapAuxH=_float_** +**rsFxCapAuxH=*float*** -Auxiliary heating autosizing capacity factor. If AUTOSIZEd, rsCapAuxH is set to rsFxCapAuxH $\times$ (peak design-day load). Peak design-day load is the heating capacity that holds zone temperature at the thermostat set point during the _last substep_ of all hours of all design days. + Auxiliary heating autosizing capacity factor. If AUTOSIZEd, rsCapAuxH is set to rsFxCapAuxH $\times$ (peak design-day load). Peak design-day load is the heating capacity that holds zone temperature at the thermostat set point during the *last substep* of all hours of all design days. <%= member_table( -units: "", -legal_range: "_x_ $>$ 0", -default: "1", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $>$ 0", + default: "1", + required: "No", + variability: "constant") %> -**rsSEER=_float_** +**rsSEER=*float*** Cooling rated Seasonal Energy Efficiency Ratio (SEER). <%= member_table( -units: "Btu/Wh", -legal_range: "_x_ $>$ 0", -default: "_none_", -required: "Yes", -variability: "constant") %> + units: "Btu/Wh", + legal_range: "*x* $>$ 0", + default: "*none*", + required: "Yes", + variability: "constant") %> -**rsEER=_float_** +**rsEER=*float*** Cooling Energy Efficiency Ratio (EER) at standard AHRI rating conditions (outdoor drybulb of 95 ^o^F and entering air at 80 ^o^F drybulb and 67 ^o^F wetbulb). For rsType=WSHP, rated EER at fluid source temperature = 86 ^o^F. <%= member_table( -units: "Btu/Wh", -legal_range: "_x_ $>$ 0", -default: "Estimated from SEER unless WSHP", -required: "Yes for WSHP else No", -variability: "constant") %> + units: "Btu/Wh", + legal_range: "*x* $>$ 0", + default: "Estimated from SEER unless WSHP", + required: "Yes for WSHP else No", + variability: "constant") %> -**rsCapC=_float_** +**rsCapC=*float*** Net cooling capacity at standard rating conditions (outdoor drybulb temperature = 95 ^o^F for air source or fluid source temperature = 86 ^o^F for water source). @@ -522,330 +522,334 @@ If rsType=ASHP and both rsCapC and rsCap47 are autosized, both are set to the la If rsType=WSHP and both rsCapC and rsCapH are autosized, both are set to the larger consistent value using rsCapRatCH (after application of rsFxCapH and rsFxCapC). <%= member_table( -units: "Btu/hr", -legal_range: "_AUTOSIZE_ or _x_ $\\le$ 0 (x $>$ 0 coverted to $<$ 0)", -default: "_none_", -required: "Yes if rsType includes cooling", -variability: "constant") %> + units: "Btu/hr", + legal_range: "*AUTOSIZE* or *x* $\\le$ 0 (x $>$ 0 coverted to $<$ 0)", + default: "*none*", + required: "Yes if rsType includes cooling", + variability: "constant") %> -**rsTdDesC=_float_** +**rsTdDesC=*float*** Nominal cooling temperature fall (across system, not zone) used during autosizing (when capacity is not yet known). <%= member_table( -units: "^o^F", -legal_range: "_x_ $<$ 0", -default: "-25", -required: "No", -variability: "constant") %> + units: "^o^F", + legal_range: "*x* $<$ 0", + default: "-25", + required: "No", + variability: "constant") %> -**rsFxCapC=_float_** +**rsFxCapC=*float*** -Cooling autosizing capacity factor. rsCapC is set to rsFxCapC $\times$ (peak design-day load). Peak design-day load is the cooling capacity that holds zone temperature at the thermostat set point during the _last substep_ of all hours of all design days. +Cooling autosizing capacity factor. rsCapC is set to rsFxCapC $\times$ (peak design-day load). Peak design-day load is the cooling capacity that holds zone temperature at the thermostat set point during the *last substep* of all hours of all design days. <%= member_table( -units: "", -legal_range: "_x_ $>$ 0", -default: "1.4", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $>$ 0", + default: "1.4", + required: "No", + variability: "constant") %> -**rsFChg=_float_** +**rsFChg=*float*** + +Cooling compressor capacity factor. The gross cooling capacity is adjusted by the factor rsFChg as specified by California Title 24 procedures. -Cooling compressor capacity factor. The gross cooling capacity is adjusted by the factor rsFChg as specified by California Title 24 procedures. <%= member_table( -units: "", -legal_range: "_x_ $>$ 0", -default: "1 (no effect)", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $>$ 0", + default: "1 (no effect)", + required: "No", + variability: "constant") %> -**rsVFPerTon=_float_** +**rsVFPerTon=*float*** Standard air volumetric flow rate per nominal ton of cooling capacity. <%= member_table( -units: "cfm/ton", -legal_range: "150 $\\le$ x $\\le$ 500", -default: "350", -required: "No", -variability: "constant") %> + units: "cfm/ton", + legal_range: "150 $\\le$ x $\\le$ 500", + default: "350", + required: "No", + variability: "constant") %> -**rsFanPwrC=_float_** +**rsFanPwrC=*float*** Cooling fan power. <%= member_table( -units: "W/cfm", -legal_range: "_x_ $\\ge$ 0", -default: "0.365", -required: "No", -variability: "constant") %> + units: "W/cfm", + legal_range: "*x* $\\ge$ 0", + default: "0.365", + required: "No", + variability: "constant") %> -**rsASHPLockOutT=_float_** +**rsASHPLockOutT=*float*** -Source air dry-bulb temperature below which the air source heat pump compressor does not operate. + Source air dry-bulb temperature below which the air source heat pump compressor does not operate. <%= member_table( -units: "^o^F", -legal_range: "", -default: "(no lockout)", -required: "No", -variability: "hourly") %> + units: "^o^F", + legal_range: "", + default: "(no lockout)", + required: "No", + variability: "hourly") %> -**rsCdH=_float_** +**rsCdH=*float*** -Heating cyclic degradation coefficient, valid only for compressor-based heating (heat pumps). + Heating cyclic degradation coefficient, valid only for compressor-based heating (heat pumps). <%= member_table( -units: "", -legal_range: "0 $\\le$ x $\\le$ 0.5", -default: "ASHPHYDRONIC: 0.25 ASHP: derived from rsHSPF", -required: "No", -variability: "hourly") %> + units: "", + legal_range: "0 $\\le$ x $\\le$ 0.5", + default: "ASHPHYDRONIC: 0.25 ASHP: derived from rsHSPF", + required: "No", + variability: "hourly") %> -**rsCdC=_float_** +**rsCdC=*float*** Cooling cyclic degradation coefficient, valid for configurations having compressor-based cooling. <%= member_table( -units: "", -legal_range: "0 $\\le$ x $\\le$ 0.5", -default: "0", -required: "No", -variability: "hourly") %> + units: "", + legal_range: "0 $\\le$ x $\\le$ 0.5", + default: "0", + required: "No", + variability: "hourly") %> -**rsFEffH=_float_** +**rsFEffH=*float*** -Heating efficiency factor. At each time step, the heating efficiency is multiplied by rsFEffH. +Heating efficiency factor. At each time step, the heating efficiency is multiplied by rsFEffH. <%= member_table( -units: "", -legal_range: "_x_ $>$ 0", -default: "1", -required: "No", -variability: "subhourly") %> + units: "", + legal_range: "*x* $>$ 0", + default: "1", + required: "No", + variability: "subhourly") %> -**rsFEffAuxHBackup=_float_** +**rsFEffAuxHBackup=*float*** -Backup auxiliary heating efficiency factor. At each time step, the backup heating efficiency is multiplied by rsFEffAuxHBackup. Backup auxiliary heating is typically provided by electric resistance "strip heat" but may be provided by a furnace (see rsTypeAuxH). If rsTypeAuxH is not "none", backup heat operates when air source heat pump compressor capacity is insufficient to meet heating load. See also rsFEffAuxHDefrost. +Backup auxiliary heating efficiency factor. At each time step, the backup heating efficiency is multiplied by rsFEffAuxHBackup. Backup auxiliary heating is typically provided by electric resistance "strip heat" but may be provided by a furnace (see rsTypeAuxH). If rsTypeAuxH is not "none", backup heat operates when air source heat pump compressor capacity is insufficient to meet heating load. See also rsFEffAuxHDefrost. <%= member_table( -units: "", -legal_range: "_x_ $>$ 0", -default: "1", -required: "No", -variability: "subhourly") %> + units: "", + legal_range: "*x* $>$ 0", + default: "1", + required: "No", + variability: "subhourly") %> -**rsFEffAuxHDefrost=_float_** +**rsFEffAuxHDefrost=*float*** -Defrost auxiliary heating efficiency factor. At each time step, the defrost auxiliary heating efficiency is multiplied by rsFEffAuxHDefrost. Defrost auxiliary heating is typically provided by electric resistance "strip heat" but may be provided by a furnace (see rsTypeAuxH). If rsDefrostModel=REVCYCLEAUX, defrost auxiliary heat operates during air source heat pump defrost mode. Since defrost and backup heating are generally provided by the same equipment, rsFEffAuxHDefrost and rsFEffAuxHBackup are usually set to the same value, but separate inputs are available for special cases. +Defrost auxiliary heating efficiency factor. At each time step, the defrost auxiliary heating efficiency is multiplied by rsFEffAuxHDefrost. Defrost auxiliary heating is typically provided by electric resistance "strip heat" but may be provided by a furnace (see rsTypeAuxH). If rsDefrostModel=REVCYCLEAUX, defrost auxiliary heat operates during air source heat pump defrost mode. Since defrost and backup heating are generally provided by the same equipment, rsFEffAuxHDefrost and rsFEffAuxHBackup are usually set to the same value, but separate inputs are available for special cases. <%= member_table( -units: "", -legal_range: "_x_ $>$ 0", -default: "1", -required: "No", -variability: "subhourly") %> + units: "", + legal_range: "*x* $>$ 0", + default: "1", + required: "No", + variability: "subhourly") %> -**rsFEffC=_float_** +**rsFEffC=*float*** -Cooling efficiency factor. At each time step, the cooling efficiency is multiplied by rsEffC. +Cooling efficiency factor. At each time step, the cooling efficiency is multiplied by rsEffC. <%= member_table( -units: "", -legal_range: "_x_ $>$ 0", -default: "1", -required: "No", -variability: "subhourly") %> + units: "", + legal_range: "*x* $>$ 0", + default: "1", + required: "No", + variability: "subhourly") %> -**rsCapNomH=_float_** +**rsCapNomH=*float*** -Heating nominal capacity. Provides type-independent probe source for RSYS heating capacity. Daily variability is specified to support value changes during AUTOSIZEing. Values set via input are typically constant. +Heating nominal capacity. Provides type-independent probe source for RSYS heating capacity. Daily variability is specified to support value changes during AUTOSIZEing. Values set via input are typically constant. <%= member_table( -units: "Btu/hr", -legal_range: "_x_ $\\ge$ 0", -default: "no heating: 0 heat pump: rsCap47 (input or AUTOSIZEd) other: rsCapH (input or AUTOSIZEd)", -required: "No", -variability: "daily") %> + units: "Btu/hr", + legal_range: "*x* $\\ge$ 0", + default: "no heating: 0 heat pump: rsCap47 (input or AUTOSIZEd) other: rsCapH (input or AUTOSIZEd)", + required: "No", + variability: "daily") %> -**rsCapNomC=_float_** +**rsCapNomC=*float*** -Cooling nominal capacity. Provides type-independent probe source for RSYS cooling capacity. Daily variability is specified to support value changes during AUTOSIZEing. Values set via input are typically constant. +Cooling nominal capacity. Provides type-independent probe source for RSYS cooling capacity. Daily variability is specified to support value changes during AUTOSIZEing. Values set via input are typically constant. <%= member_table( -units: "Btu/hr", -legal_range: "_x_ $\\ge$ 0", -default: "no cooling: 0 other: rsCap95 (input or AUTOSIZEd)", -required: "No", -variability: "daily") %> + units: "Btu/hr", + legal_range: "*x* $\\ge$ 0", + default: "no cooling: 0 other: rsCap95 (input or AUTOSIZEd)", + required: "No", + variability: "daily") %> + +**rsDSEH=*float*** -**rsDSEH=_float_** +Heating distribution system efficiency. If given, (1-rsDSEH) of RSYS heating output is discarded. Cannot be combined with more detailed DUCTSEG model. -Heating distribution system efficiency. If given, (1-rsDSEH) of RSYS heating output is discarded. Cannot be combined with more detailed DUCTSEG model. <%= member_table( -units: "", -legal_range: "0 < _x_ < 1", -default: "(use DUCTSEG model)", -required: "No", -variability: "hourly") %> + units: "", + legal_range: "0 < *x* < 1", + default: "(use DUCTSEG model)", + required: "No", + variability: "hourly") %> -**rsDSEC=_float_** +**rsDSEC=*float*** + +Cooling distribution system efficiency. If given, (1-rsDSEC) of RSYS cooling output is discarded. Cannot be combined with more detailed DUCTSEG model. -Cooling distribution system efficiency. If given, (1-rsDSEC) of RSYS cooling output is discarded. Cannot be combined with more detailed DUCTSEG model. <%= member_table( -units: "", -legal_range: "0 < _x_ < 1", -default: "(use DUCTSEG model)", -required: "No", -variability: "hourly") %> + units: "", + legal_range: "0 < *x* < 1", + default: "(use DUCTSEG model)", + required: "No", + variability: "hourly") %> -**rsOAVType=_choice_** + **rsOAVType=*choice*** -Type of central fan integrated (CFI) outside air ventilation (OAV) included in this RSYS. OAV systems use the central system fan to circulate outdoor air (e.g. for night ventilation). + Type of central fan integrated (CFI) outside air ventilation (OAV) included in this RSYS. OAV systems use the central system fan to circulate outdoor air (e.g. for night ventilation). -OAV cannot operate simultaneously with whole building ventilation (operable windows, whole house fans, etc.). Availability of ventilation modes is controlled on an hourly basis via [Top ventAvail][top-model-control-items] + OAV cannot operate simultaneously with whole building ventilation (operable windows, whole house fans, etc.). Availability of ventilation modes is controlled on an hourly basis via [Top ventAvail](#top-model-control-items). <%= csv_table(< false) -NONE, No CFI ventilation capabilities -FIXED, Fixed-flow CFI (aka SmartVent). The specified rsOAVVfDs is used whenever the RSYS operates in OAV mode. -VARIABLE, Variable-flow CFI (aka NightBreeze). Flow rate is determined at midnight based on prior day's average dry-bulb temperature according to a control algorithm defined by the NightBreeze vendor. +NONE, No CFI ventilation capabilities +FIXED, Fixed-flow CFI (aka SmartVent). The specified rsOAVVfDs is used whenever the RSYS operates in OAV mode. +VARIABLE, Variable-flow CFI (aka NightBreeze). Flow rate is determined at midnight based on prior day's average dry-bulb temperature according to a control algorithm defined by the NightBreeze vendor. END %> <%= member_table( -units: "", -legal_range: "NONE, FIXED, VARIABLE", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "NONE, FIXED, VARIABLE", + default: "*none*", + required: "No", + variability: "constant") %> + + **rsOAVVfDs=*float*** -**rsOAVVfDs=_float_** + Design air volume flow rate when RSYS is operating in OAV mode. -Design air volume flow rate when RSYS is operating in OAV mode. <%= member_table( -units: "cfm", -legal_range: "_x_ $\\ge$ 0", -default: "_none_", -required: "if rsOAVType $\ne$ NONE", -variability: "constant") %> + units: "cfm", + legal_range: "*x* $\\ge$ 0", + default: "*none*", + required: "if rsOAVType $\ne$ NONE", + variability: "constant") %> -**rsOAVVfMinF=_float_** + **rsOAVVfMinF=*float*** -Minimum air volume flow rate fraction when RSYS is operating in OAV mode. When rsOAVType=VARIABLE, air flow rate is constrained to rsOAVVfMinF \* rsOAVVfDs or greater. + Minimum air volume flow rate fraction when RSYS is operating in OAV mode. When rsOAVType=VARIABLE, air flow rate is constrained to rsOAVVfMinF * rsOAVVfDs or greater. <%= member_table( -units: "", -legal_range: "0 $\\le$ x $\\le$ 1", -default: "0.2", -required: "No", -variability: "constant") %> + units: "", + legal_range: "0 $\\le$ x $\\le$ 1", + default: "0.2", + required: "No", + variability: "constant") %> -**rsOAVFanPwr=_float_** + **rsOAVFanPwr=*float*** -RSYS OAV-mode fan power. + RSYS OAV-mode fan power. <%= member_table( -units: "W/cfm", -legal_range: "0 < x $\\le$ 5", -default: "per rsOAVTYPE FIXED: rsFanPwrC VARIABLE: NightBreeze vendor curve based on rsOAVvfDs", -required: "No", -variability: "constant") %> + units: "W/cfm", + legal_range: "0 < x $\\le$ 5", + default: "per rsOAVTYPE FIXED: rsFanPwrC VARIABLE: NightBreeze vendor curve based on rsOAVvfDs", + required: "No", + variability: "constant") %> -**rsOAVTDbInlet=_float_** +**rsOAVTDbInlet=*float*** -OAV inlet (source) air temperature. Supply air temperature at the zone is generally higher due to fan heat. Duct losses, if any, also alter the supply air temperature. +OAV inlet (source) air temperature. Supply air temperature at the zone is generally higher due to fan heat. Duct losses, if any, also alter the supply air temperature. <%= member_table( -units: "^o^F", -legal_range: "_x_ $\\ge$ 0", -default: "Dry-bulb temperature from weather file", -required: "No", -variability: "hourly") %> + units: "^o^F", + legal_range: "*x* $\\ge$ 0", + default: "Dry-bulb temperature from weather file", + required: "No", + variability: "hourly") %> -**rsOAVTdiff=_float_** +**rsOAVTdiff=*float*** -OAV temperature differential. When operating in OAV mode, the zone set point temperature is max( znTD, inletT+rsOAVTdiff). Small values can result in inadvertent zone heating, due to fan heat. + OAV temperature differential. When operating in OAV mode, the zone set point temperature is max( znTD, inletT+rsOAVTdiff). Small values can result in inadvertent zone heating, due to fan heat. <%= member_table( -units: "^o^F", -legal_range: "_x_ $>$ 0", -default: "5 ^o^F", -required: "No", -variability: "hourly") %> + units: "^o^F", + legal_range: "*x* $>$ 0", + default: "5 ^o^F", + required: "No", + variability: "hourly") %> -**rsOAVReliefZn=_znName_** +**rsOAVReliefZn=*znName*** -Name of zone to which relief air is directed during RSYS OAV operation, typically an attic zone. Relief air flow is included in the target zone's pressure and thermal balance. +Name of zone to which relief air is directed during RSYS OAV operation, typically an attic zone. Relief air flow is included in the target zone's pressure and thermal balance. <%= member_table( -units: "", -legal_range: "_name of ZONE_", -default: "_none_", -required: "if rsOAVType $\ne$ NONE", -variability: "constant") %> + units: "", + legal_range: "*name of ZONE*", + default: "*none*", + required: "if rsOAVType $\ne$ NONE", + variability: "constant") %> -**rsParElec=_float_** +**rsParElec=*float*** -Parasitic electrical power. rsParElec is unconditionally accumulated to end use AUX of rsElecMtr (if specified) and has no other effect. +Parasitic electrical power. rsParElec is unconditionally accumulated to end use AUX of rsElecMtr (if specified) and has no other effect. <%= member_table( -units: "W", -legal_range: "", -default: "0", -required: "No", -variability: "hourly") %> + units: "W", + legal_range: "", + default: "0", + required: "No", + variability: "hourly") %> -**rsParFuel=_float_** +**rsParFuel=*float*** -Parasitic fuel use. rsParFuel is unconditionally accumulated to end use AUX of sFuelMtr (if specified) and has no other effect. +Parasitic fuel use. rsParFuel is unconditionally accumulated to end use AUX of sFuelMtr (if specified) and has no other effect. <%= member_table( -units: "Btuh", -legal_range: "", -default: "0", -required: "No", -variability: "hourly") %> + units: "Btuh", + legal_range: "", + default: "0", + required: "No", + variability: "hourly") %> -**rsRhIn=_float_** +**rsRhIn=*float*** Entering air relative humidity (for model testing). <%= member_table( -units: "W/cfm", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "Derived from entering air state", -required: "No", -variability: "constant") %> + units: "W/cfm", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "Derived from entering air state", + required: "No", + variability: "constant") %> -**rsTdbOut=_float_** +**rsTdbOut=*float*** Air dry-bulb temperature at the outdoor portion of this system. <%= member_table( -units: "^o^F", -legal_range: "_x_ $\\ge$ 0", -default: "From weather file", -required: "No", -variability: "hourly") %> + units: "^o^F", + legal_range: "*x* $\\ge$ 0", + default: "From weather file", + required: "No", + variability: "hourly") %> **endRSYS** Optionally indicates the end of the RSYS definition. <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[rsys][p_rsys] -- @[RSYSRes][p_rsysres](accumulated results) +- @[rsys](#p_rsys) +- @[RSYSRes](#p_rsysres) (accumulated results) diff --git a/doc/src/docs/input-data/sgdist.md b/doc/src/docs/input-data/sgdist.md index 16dacda78..049a23677 100644 --- a/doc/src/docs/input-data/sgdist.md +++ b/doc/src/docs/input-data/sgdist.md @@ -9,85 +9,84 @@ Via members sgFSO and sgFSC, the fraction of the insolation distributed to the s Name of solar gain distribution (follows "SGDIST" if given). <%= member_table( -units: "", -legal_range: "_63 characters_", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") %> -**sgSurf=_sfName_** +**sgSurf=*sfName*** Name of surface to which gain is targeted. If there is more than surface with the specified name: if one of the surfaces is in the current zone, it is used; otherwise, an error message is issued. - The specified surface must be modeled with the Delayed model. If gain is targeted to a Quick model surface, a warning message is issued and the gain is redirected to the air of the associated zone. <%= member_table( -units: "", -legal_range: "name of a _SURFACE_", -default: "_none_", -required: "Yes", -variability: "constant") %> + units: "", + legal_range: "name of a *SURFACE*", + default: "*none*", + required: "Yes", + variability: "constant") %> -**sgSide=_choice_** +**sgSide=*choice*** Designates the side of the surface to which the gain is to be targeted: <%= csv_table(< false) -INTERIOR, Apply gain to interior of surface -EXTERIOR, Apply gain to exterior of surface +INTERIOR, Apply gain to interior of surface +EXTERIOR, Apply gain to exterior of surface END %> <%= member_table( -units: "", -legal_range: "INTERIOR, EXTERIOR", -default: "Side of surface in zone containing window; or INTERIOR if both sides are in zone containing window.", -required: "Yes", -variability: "constant") %> + units: "", + legal_range: "INTERIOR, EXTERIOR", + default: "Side of surface in zone containing window; or INTERIOR if both sides are in zone containing window.", + required: "Yes", + variability: "constant") %> -**sgFSO=_float_** +**sgFSO=*float*** Fraction of solar gain directed to specified surface when the owning window's interior shading is in the open position (when the window's zone's shade closure (znSC) is 0). <%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1,and sum of window's sgFSO's $\\le$ 1", -default: "_none_", -required: "Yes", -variability: "monthly-hourly") %> + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1,and sum of window's sgFSO's $\\le$ 1", + default: "*none*", + required: "Yes", + variability: "monthly-hourly") %> -**sgFSC=_float_** +**sgFSC=*float*** Fraction of solar gain directed to specified surface when the owning window's interior shading is in the closed position. If the zone's shades are partly closed (znSC between 0 and 1), a proportional fraction between sgFSO and sgFSC is used. <%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1, and sum of window's sgFSC's $\\le$ 1", -default: "_sgFSO_", -required: "No", -variability: "monthly-hourly") %> + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1, and sum of window's sgFSC's $\\le$ 1", + default: "*sgFSO*", + required: "No", + variability: "monthly-hourly") %> **endSGDist** Optionally indicates the end of the solar gain distribution definition. Alternatively, the end of the solar gain distribution definition can be indicated by END or by just beginning another object. <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[sgdist][p_sgdist] +- @[sgdist](#p_sgdist) diff --git a/doc/src/docs/input-data/shade.md b/doc/src/docs/input-data/shade.md index b213cce9a..4c1482225 100644 --- a/doc/src/docs/input-data/shade.md +++ b/doc/src/docs/input-data/shade.md @@ -172,4 +172,4 @@ Optional to indicate the end of the SHADE definition. Alternatively, the end of **Related Probes:** -- @[shade][p_shade] +- @[shade](#p_shade) diff --git a/doc/src/docs/input-data/shadex.md b/doc/src/docs/input-data/shadex.md index 6939e5dc4..c031e3942 100644 --- a/doc/src/docs/input-data/shadex.md +++ b/doc/src/docs/input-data/shadex.md @@ -1,59 +1,59 @@ # SHADEX -SHADEX describes an object that shades other building surfaces using an advanced shading model. Advanced shading calculations are provided only for [PVARRAYs][pvarray] Advanced shading must be enabled via [Top exShadeModel][top-model-control-items] +SHADEX describes an object that shades other building surfaces using an advanced shading model. Advanced shading calculations are provided only for [PVARRAYs](#pvarray). Advanced shading must be enabled via [Top exShadeModel](#top-model-control-items). **sxName** Name of photovoltaic array. Give after the word SHADEX. -<%= member*table( -units: "", -legal_range: "\_63 characters*", -default: "_none_", -required: "No", -variability: "constant") %> +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") %> -**sxMounting=_choice_** +**sxMounting=*choice*** -Specifies the mounting location of the shade. sxMounting=Site indicates the SHADEX position is fixed and is not modified if the building is rotated. The position of SHADEXs with sxMounting=Building are modified to include the effect of building rotation specified via [TOP bldgAz][top-general-data-items] +Specifies the mounting location of the shade. sxMounting=Site indicates the SHADEX position is fixed and is not modified if the building is rotated. The position of SHADEXs with sxMounting=Building are modified to include the effect of building rotation specified via [Top bldgAz](#bldgAzm) <%= member_table( -units: "", -legal_range: "Building or Site", -default: "Site", -required: "No", -variability: "constant") %> + units: "", + legal_range: "Building or Site", + default: "Site", + required: "No", + variability: "constant") %> -**sxVertices=_list of up to 36 floats_** +**sxVertices=*list of up to 36 floats*** Vertices of a polygon representing the shape of the shading object. -The values that follow sxVertices are a series of X, Y, and Z values for the vertices of the polygon. The coordinate system is defined from a viewpoint facing north. X and Y values convey east-west and north-south location respectively relative to an arbitrary origin (positive X value are to the east; positive Y values are to the north). Z values convey height relative to the building 0 level and positive values are upward. +The values that follow sxVertices are a series of X, Y, and Z values for the vertices of the polygon. The coordinate system is defined from a viewpoint facing north. X and Y values convey east-west and north-south location respectively relative to an arbitrary origin (positive X value are to the east; positive Y values are to the north). Z values convey height relative to the building 0 level and positive values are upward. -The vertices are specified in counter-clockwise order when facing the shading object from the south. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When sxType=Building, the effective position of the polygon reflects building rotation specified by [TOP bldgAzm][top-general-data-items] +The vertices are specified in counter-clockwise order when facing the shading object from the south. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When sxType=Building, the effective position of the polygon reflects building rotation specified by [TOP bldgAzm](#top-general-data-items). For example, to specify a rectangular shade "tree" that is 10 x 40 ft, facing south, and 100 ft to the south of the nominal building origin -- sxVertices = 5, -100, 0, 15, -100, 0, 15, -100, 40, 5, -100, 40 -<%= member*table( -units: "ft", -legal_range: "unrestricted", -default: "\_none*", -required: "9, 12, 15, 18, 21, 24, 27, 30, 33 or 36 values", -variability: "constant") %> +<%= member_table( + units: "ft", + legal_range: "unrestricted", + default: "*none*", + required: "9, 12, 15, 18, 21, 24, 27, 30, 33 or 36 values", + variability: "constant") %> **endSHADEX** Optionally indicates the end of the SHADEX definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. -<%= member*table( -units: "", -legal_range: "", -default: "\_none*", -required: "No", -variability: "constant") %> +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[SHADEX][p_shadex] +- @[SHADEX](#p_shadex) diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index c099ff2b2..5b3531c4c 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -7,13 +7,13 @@ Surface constructs a ZONE subobject of class SURFACE that represents a surroundi Name of surface; give after the word SURFACE. <%= member_table( -units: "", -legal_range: "_63 characters_", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") %> -**sfType=_choice_** +**sfType=*choice*** Type of surface: @@ -27,204 +27,201 @@ END sfType is used extensively for default determination and input checking, but does not have any further internal effect. The Floor, Wall, and Ceiling choices identify surfaces that form boundaries between the zone and some other condition. <%= member_table( -units: "", -legal_range: "FLOOR WALL CEILING", -default: "_none_", -required: "Yes", -variability: "constant") %> + units: "", + legal_range: "FLOOR WALL CEILING", + default: "*none*", + required: "Yes", + variability: "constant") %> -**sfArea=_float_** +**sfArea=*float*** Gross area of surface. (CSE computes the net area for simulation by subtracting the areas of any windows and doors in the surface.). <%= member_table( -units: "ft^2^", -legal_range: "_x_ $>$ 0", -default: "_none_", -required: "Yes", -variability: "constant") %> + units: "ft^2^", + legal_range: "*x* $>$ 0", + default: "*none*", + required: "Yes", + variability: "constant") %> -**sfTilt=_float_** +**sfTilt=*float*** Surface tilt from horizontal. Values outside the range 0 to 360 are first normalized to that range. The default and allowed range depend on sfType, as follows: ---- - -sfType = FLOOR _sfTilt_=180, default = 180 (fixed value) -sfType = WALL 60 $<$ _sfTilt_ $<$ 180, default = 90 -sfType = CEILING 0 $\leq$ _sfTilt_ $\leq$ 60, default = 0 - ---- + ------------------ ------------------------------------------- + sfType = FLOOR *sfTilt*=180, default = 180 (fixed value) + sfType = WALL 60 $<$ *sfTilt* $<$ 180, default = 90 + sfType = CEILING 0 $\leq$ *sfTilt* $\leq$ 60, default = 0 + ------------------ ------------------------------------------- <%= member_table( -units: "degrees", -legal_range: "Dependent upon _sfType_ See above", -default: "Dependent upon _sfType_ See above", -required: "No", -variability: "constant") %> + units: "degrees", + legal_range: "Dependent upon *sfType* See above", + default: "Dependent upon *sfType* See above", + required: "No", + variability: "constant") %> -**sfAzm=_float_** +**sfAzm=*float*** Azimuth of surface with respect to znAzm. The azimuth used in simulating a surface is bldgAzm + znAzm + sfAzm; the surface is rotated if any of those are changed. Values outside the range 0 to 360 are normalized to that range. Required for non-horizontal surfaces. <%= member_table( -units: "degrees", -legal_range: "unrestricted", -default: "_none_", -required: "Required if _sfTilt_ $\\neq$ 0 and _sfTilt_ $\\neq$ 180", -variability: "constant") %> + units: "degrees", + legal_range: "unrestricted", + default: "*none*", + required: "Required if *sfTilt* $\\neq$ 0 and *sfTilt* $\\neq$ 180", + variability: "constant") %> -**sfModel=_choice_** +**sfModel=*choice*** Provides user control over how CSE models conduction for this surface. <%= csv_table(< false) -QUICK, Surface is modeled using a simple conductance. Heat capacity effects are ignored. Either sfCon or sfU (next) can be specified. -DELAYED, DELAYED_HOUR, DELAYED_SUBHOUR, Surface is modeled using a multi-layer finite difference technique that represents heat capacity effects. If the time constant of the surface is too short to accurately simulate, a warning message is issued and the Quick model is used. The program **cannot** use the finite difference model if sfU rather than sfCon is specified. +QUICK, Surface is modeled using a simple conductance. Heat capacity effects are ignored. Either sfCon or sfU (next) can be specified. +DELAYED, DELAYED\_HOUR, DELAYED\_SUBHOUR, Surface is modeled using a multi-layer finite difference technique that represents heat capacity effects. If the time constant of the surface is too short to accurately simulate, a warning message is issued and the Quick model is used. The program **cannot** use the finite difference model if sfU rather than sfCon is specified. AUTO, Program selects Quick or the appropriate Delayed automatically according to the time constant of the surface (if sfU is specified, Quick is selected). -FD (or FORWARD_DIFFERENCE), Selects the forward difference model (used with short time steps and the CZM/UZM zone model). -KIVA, Uses a two-dimensional finite difference model to simulate heat flow through foundation surfaces. +FD (or FORWARD\_DIFFERENCE), Selects the forward difference model (used with short time steps and the CZM/UZM zone model). +KIVA, Uses a two-dimensional finite difference model to simulate heat flow through foundation surfaces. END %> <%= member_table( -legal_range: "QUICK, DELAYED, DELAYED_HOUR, DELAYED_SUBOUR, AUTO, 2D_FND", -default: "AUTO", -required: "No", -variability: "constant") %> + legal_range: "QUICK, DELAYED, DELAYED\_HOUR, DELAYED\_SUBOUR, AUTO, 2D_FND", + default: "AUTO", + required: "No", + variability: "constant") %> - Either sfU or sfCon must be specified, but not both. -**sfU=_float_** +**sfU=*float*** Surface U-value (NOT including surface (air film) conductances). For surfaces for which no heat capacity is to be modeled, allows direct entry of U-value without defining a CONSTRUCTION. <%= member_table( -units: "Btuh/ft^2^-^o^F", -legal_range: "_x_ $>$ 0", -default: "Determined from _sfCon_", -required: "if _sfCon_ not given", -variability: "constant") %> + units: "Btuh/ft^2^-^o^F", + legal_range: "*x* $>$ 0", + default: "Determined from *sfCon*", + required: "if *sfCon* not given", + variability: "constant") %> -**sfCon=_conName_** +**sfCon=*conName*** Name of CONSTRUCTION of the surface. <%= member_table( -units: "", -legal_range: "Name of a _CONSTRUCTION_", -default: "_none_", -required: "unless _sfU_ given", -variability: "constant") %> + units: "", + legal_range: "Name of a *CONSTRUCTION*", + default: "*none*", + required: "unless *sfU* given", + variability: "constant") %> -**sfLThkF=_float_** +**sfLThkF=*float*** -Sublayer thickness adjustment factor for FORWARD_DIFFERENCE conduction model used with sfCon surfaces. Material layers in the construction are divided into sublayers as needed for numerical stability. sfLThkF allows adjustment of the thickness criterion used for subdivision. A value of 0 prevents subdivision; the default value (0.5) uses layers with conservative thickness equal to half of an estimated safe value. Fewer (thicker) sublayers improves runtime at the expense of accurate representation of rapid changes. +Sublayer thickness adjustment factor for FORWARD\_DIFFERENCE conduction model used with sfCon surfaces. Material layers in the construction are divided into sublayers as needed for numerical stability. sfLThkF allows adjustment of the thickness criterion used for subdivision. A value of 0 prevents subdivision; the default value (0.5) uses layers with conservative thickness equal to half of an estimated safe value. Fewer (thicker) sublayers improves runtime at the expense of accurate representation of rapid changes. <%= member_table( -units: "", -legal_range: "_x_ $\\ge$ 0", -default: "0.5", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $\\ge$ 0", + default: "0.5", + required: "No", + variability: "constant") %> -**sfExCnd=_choice_** +**sfExCnd=*choice*** Specifies the thermal conditions assumed at surface exterior, and at exterior of any subobjects (windows or doors) belonging to current surface. The conditions accounted for are dry bulb temperature and incident solar radiation. <%= csv_table(< false) -AMBIENT, Exterior surface is exposed to the 'weather' as read from the weather file. Solar gain is calculated using solar geometry, sfAzm, sfTilt, and sfExAbs. -SPECIFIEDT, Exterior surface is exposed to solar radiation as in AMBIENT, but the dry bulb temperature is calculated with a user specified function (sfExT). sfExAbs can be set to 0 to eliminate solar effects. -ADJZN, Exterior surface is exposed to another zone, whose name is specified by sfAdjZn. Solar gain is 0 unless gain is targeted to the surface with SGDIST below. -GROUND, The surface is in contact with the ground. Details of the two-dimensional foundation design are defined by sfFnd. Only floor and wall surfaces may use this option. +AMBIENT, Exterior surface is exposed to the 'weather' as read from the weather file. Solar gain is calculated using solar geometry, sfAzm, sfTilt, and sfExAbs. +SPECIFIEDT, Exterior surface is exposed to solar radiation as in AMBIENT, but the dry bulb temperature is calculated with a user specified function (sfExT). sfExAbs can be set to 0 to eliminate solar effects. +ADJZN, Exterior surface is exposed to another zone, whose name is specified by sfAdjZn. Solar gain is 0 unless gain is targeted to the surface with SGDIST below. +GROUND, The surface is in contact with the ground. Details of the two-dimensional foundation design are defined by sfFnd. Only floor and wall surfaces may use this option. ADIABATIC, Exterior surface heat flow is 0. Thermal storage effects of delayed surfaces are modeled. END %> -**sfExAbs=_float_** +**sfExAbs=*float*** Surface exterior absorptivity. <%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.5", -required: "Required if _sfExCnd_ = AMBIENT or _sfExCnd_ = SPECIFIEDT", -variability: "monthly-hourly") %> + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "0.5", + required: "Required if *sfExCnd* = AMBIENT or *sfExCnd* = SPECIFIEDT", + variability: "monthly-hourly") %> -**sfInAbs=_float_** +**sfInAbs=*float*** Surface interior solar absorptivity. <%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\le$ 1", -default: "sfType = CEILING, 0.2; sfType = WALL, 0.6; sfType = FLOOR, 0.8", -required: "No", -variability: "monthly-hourly") %> + units: "", + legal_range: "0 $\\le$ *x* $\le$ 1", + default: "sfType = CEILING, 0.2; sfType = WALL, 0.6; sfType = FLOOR, 0.8", + required: "No", + variability: "monthly-hourly") %> -**sfExEpsLW=_float_** +**sfExEpsLW=*float*** Surface exterior long wave (thermal) emittance. <%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.9", -required: "No", -variability: "constant") %> + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "0.9", + required: "No", + variability: "constant") %> -**sfInEpsLW=_float_** +**sfInEpsLW=*float*** Surface interior long wave (thermal) emittance. <%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.9", -required: "No", -variability: "constant") %> + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "0.9", + required: "No", + variability: "constant") %> -**sfExT=_float_** +**sfExT=*float*** Exterior air temperature. <%= member_table( -units: "^o^F", -legal_range: "_unrestricted_", -default: "_none_", -required: "Required if _sfExCnd_ = SPECIFIEDT", -variability: "hourly") %> + units: "^o^F", + legal_range: "*unrestricted*", + default: "*none*", + required: "Required if *sfExCnd* = SPECIFIEDT", + variability: "hourly") %> -**sfAdjZn=_znName_** +**sfAdjZn=*znName*** Name of adjacent zone; used only when sfExCnd is ADJZN. Can be the same as the current zone. <%= member_table( -units: "", -legal_range: "name of a _ZONE_", -default: "_none_", -required: "Required when
_sfExCnd_ = ADJZN", -variability: "constant") %> + units: "", + legal_range: "name of a *ZONE*", + default: "*none*", + required: "Required when
*sfExCnd* = ADJZN", + variability: "constant") %> -**sfGrndRefl=_float_** +**sfGrndRefl=*float*** Ground reflectivity for this surface. <%= member_table( -units: "fraction", -legal_range: "0 $\\leq$ _x_ $\\leq$ 1", -default: "grndRefl", -required: "No", -variability: "Monthly - Hourly") %> + units: "fraction", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "grndRefl", + required: "No", + variability: "Monthly - Hourly") %> -**sfInH=_float_** +**sfInH=*float*** -Inside surface (air film) conductance. Ignored for sfModel = Forward_Difference. Default depends on the surface type. +Inside surface (air film) conductance. Ignored for sfModel = Forward\_Difference. Default depends on the surface type. <%= csv_table(< false) sfType = FLOOR or CEILING, 1.32 @@ -233,227 +230,228 @@ END %> <%= member_table( -units: "Btuh/ft^2^-^o^F", -legal_range: "_x_ $>$ 0", -default: "_See above_", -required: "No", -variability: "constant") %> + units: "Btuh/ft^2^-^o^F", + legal_range: "*x* $>$ 0", + default: "*See above*", + required: "No", + variability: "constant") %> -**sfExH=_float_** +**sfExH=*float*** -Outside combined surface (air film) conductance. Ignored for sfModel = Forward_Difference. The default value is dependent upon the exterior conditions: +Outside combined surface (air film) conductance. Ignored for sfModel = Forward\_Difference. The default value is dependent upon the exterior conditions: <%= csv_table(< false) -sfExCnd = AMBIENT, dflExH (Top-level member, described above) -sfExCnd = SPECIFIEDT, dflExH (described above) -sfExCnd = ADJZN, 1.5 -sfExCnd = ADIABATIC, not applicable +sfExCnd = AMBIENT, dflExH (Top-level member, described above) +sfExCnd = SPECIFIEDT, dflExH (described above) +sfExCnd = ADJZN, 1.5 +sfExCnd = ADIABATIC, not applicable END %> <%= member_table( -units: "Btuh/ft^2^-^o^F", -legal_range: "_x_ $>$ 0", -default: "see above", -required: "No", -variability: "constant") %> + units: "Btuh/ft^2^-^o^F", + legal_range: "*x* $>$ 0", + default: "see above", + required: "No", + variability: "constant") %> -When sfModel = Forward_Difference, several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on sfExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. +When sfModel = Forward\_Difference, several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on sfExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. <%= csv_table(< true) -Model, Exposed to ambient, Exposed to zone -UNIFIED, default CSE model, default CSE model -INPUT, hc = sfExHcMult, hc = sfxxHcMult -AKBARI, Akbari model, n/a -WALTON, Walton model, n/a -WINKELMANN, Winkelmann model, n/a -DOE2, DOE2 model, n/a -MILLS, n/a, Mills model -ASHRAE, n/a, ASHRAE handbook values -TARP, n/a, TARP model +Model, Exposed to ambient, Exposed to zone +UNIFIED, default CSE model, default CSE model +INPUT, hc = sfExHcMult, hc = sfxxHcMult +AKBARI, Akbari model, n/a +WALTON, Walton model, n/a +WINKELMANN, Winkelmann model, n/a +DOE2, DOE2 model, n/a +MILLS, n/a, Mills model +ASHRAE, n/a, ASHRAE handbook values +TARP, n/a, TARP model END %> -**sfExHcModel=_choice_** +**sfExHcModel=*choice*** -Selects the model used for exterior surface convection when sfModel = Forward_Difference. +Selects the model used for exterior surface convection when sfModel = Forward\_Difference. <%= member_table( -units: "", -legal_range: "_choices above_", -default: "UNIFIED", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*choices above*", + default: "UNIFIED", + required: "No", + variability: "constant") %> -**sfExHcLChar=_float_** +**sfExHcLChar=*float*** -Characteristic length of surface, used in derivation of forced exterior convection coefficients in some models when outside surface is exposed to ambient. See sfExHcModel. +Characteristic length of surface, used in derivation of forced exterior convection coefficients in some models when outside surface is exposed to ambient. See sfExHcModel. <%= member_table( -units: "ft", -legal_range: "_x_ $>$ 0", -default: "10", -required: "No", -variability: "constant") %> + units: "ft", + legal_range: "*x* $>$ 0", + default: "10", + required: "No", + variability: "constant") %> -**sfExHcMult=_float_** +**sfExHcMult=*float*** -Exterior convection coefficient adjustment factor. When sfExHcModel=INPUT, hc=sfExHcMult. For other sfExHcModel choices, the model-derived hc is multiplied by sfExHcMult. +Exterior convection coefficient adjustment factor. When sfExHcModel=INPUT, hc=sfExHcMult. For other sfExHcModel choices, the model-derived hc is multiplied by sfExHcMult. <%= member_table( -units: "", -legal_range: "x $\\ge$ 0", -default: "1", -required: "No", -variability: "subhourly") %> + units: "", + legal_range: "x $\\ge$ 0", + default: "1", + required: "No", + variability: "subhourly") %> -**sfExRf=_float_** +**sfExRf=*float*** -Exterior surface roughness factor. Used only when surface is exposed to ambient (i.e. with wind exposure). Typical values: +Exterior surface roughness factor. Used only when surface is exposed to ambient (i.e. with wind exposure). Typical values: <%= csv_table(< true) -Roughness Index, sfExRf, Example -1 (very rough), 2.17, Stucco -2 (rough), 1.67, Brick -3 (medium rough), 1.52, Concrete -4 (Medium smooth), 1.13, Clear pine -5 (Smooth), 1.11, Smooth plaster -6 (Very Smooth), 1, Glass +Roughness Index, sfExRf, Example +1 (very rough), 2.17, Stucco +2 (rough), 1.67, Brick +3 (medium rough), 1.52, Concrete +4 (Medium smooth), 1.13, Clear pine +5 (Smooth), 1.11, Smooth plaster +6 (Very Smooth), 1, Glass END %> <%= member_table( -units: "", -legal_range: "", -default: "sfExHcModel = WINKELMANN: 1.66 else 2.17", -required: "No", -variability: "constant") %> + units: "", + legal_range: "", + default: "sfExHcModel = WINKELMANN: 1.66 else 2.17", + required: "No", + variability: "constant") %> -**sfInHcModel=_choice_** +**sfInHcModel=*choice*** -Selects the model used for the inside (zone) surface convection when sfModel = Forward_Difference. + Selects the model used for the inside (zone) surface convection when sfModel = Forward\_Difference. <%= member_table( -units: "", -legal_range: "_choices above (see sfExHcModel)_", -default: "UNIFIED", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*choices above (see sfExHcModel)*", + default: "UNIFIED", + required: "No", + variability: "constant") %> -**sfInHcMult=_float_** + **sfInHcMult=*float*** -Interior convection coefficient adjustment factor. When sfInHcModel=INPUT, hc=sfInHcMult. For other sfInHcModel choices, the model-derived hc is multiplied by sfInHcMult. + Interior convection coefficient adjustment factor. When sfInHcModel=INPUT, hc=sfInHcMult. For other sfInHcModel choices, the model-derived hc is multiplied by sfInHcMult. <%= member_table( -units: "", -legal_range: "x $\\ge$ 0", -default: "1", -required: "No", -variability: "subhourly") %> + units: "", + legal_range: "x $\\ge$ 0", + default: "1", + required: "No", + variability: "subhourly") %> -The items below give values associated with CSE's model for below grade surfaces (sfExCnd=GROUND). See CSE Engineering Documentation for technical details. +The items below give values associated with CSE's model for below grade surfaces (sfExCnd=GROUND). See CSE Engineering Documentation for technical details. -**sfFnd=_fdName_** +**sfFnd=*fdName*** Name of FOUNDATION applied to ground-contact Floor SURFACEs; used only for Floor SURFACEs when sfExCnd is GROUND. <%= member_table( -legal_range: "Name of a _Foundation_", -default: "_none_", -required: "when
_sfExCnd_ = GROUND and
_sfType_ = Floor", -variability: "constant") %> + legal_range: "Name of a *Foundation*", + default: "*none*", + required: "when
*sfExCnd* = GROUND and
*sfType* = Floor", + variability: "constant") %> -**sfFndFloor=_sfName_** +**sfFndFloor=*sfName*** Name of adjacent ground-contact Floor SURFACE; used only for Wall SURFACEs when sfExCnd is GROUND. <%= member_table( -legal_range: "Name of a _Surface_", -default: "_none_", -required: "when
_sfExCnd_ = GROUND and
_sfType_ = Wall", -variability: "constant") %> + legal_range: "Name of a *Surface*", + default: "*none*", + required: "when
*sfExCnd* = GROUND and
*sfType* = Wall", + variability: "constant") %> -**sfHeight=_float_** +**sfHeight=*float*** Needed for foundation wall height, otherwise ignored. Maybe combine with sfDepthBG? <%= member_table( -units: "ft", -legal_range: "x $>$ 0", -default: "_none_", -required: "when _sfType_ is WALL and _sfExtCnd_ is GROUND", -variability: "constant") %> + units: "ft", + legal_range: "x $>$ 0", + default: "*none*", + required: "when *sfType* is WALL and *sfExtCnd* is GROUND", + variability: "constant") %> -**sfExpPerim=_float_** +**sfExpPerim=*float*** Exposed perimeter of foundation floors. <%= member_table( -units: "ft", -legal_range: "x $\\geq$ 0", -default: "_none_", -required: "when _sfType_ is FLOOR, _sfFnd_ is set, and _sfExtCnd_ is GROUND", -variability: "constant") %> + units: "ft", + legal_range: "x $\\geq$ 0", + default: "*none*", + required: "when *sfType* is FLOOR, *sfFnd* is set, and *sfExtCnd* is GROUND", + variability: "constant") %> + -**sfDepthBG=_float_** +**sfDepthBG=*float*** -_Note: sfDepthBG is used as part of the simple ground model, which is no longer supported. Use sfHeight with sfFnd instead._ +*Note: sfDepthBG is used as part of the simple ground model, which is no longer supported. Use sfHeight with sfFnd instead.* -Depth below grade of surface. For walls, sfDepthBG is measured to the lower edge. For floors, sfDepthBG is measured to the bottom face. +Depth below grade of surface. For walls, sfDepthBG is measured to the lower edge. For floors, sfDepthBG is measured to the bottom face. <%= member_table( -units: "ft", -legal_range: "_x_ $\\ge$ 0", -default: "_none_", -required: "No", -variability: "constant") %> + units: "ft", + legal_range: "*x* $\\ge$ 0", + default: "*none*", + required: "No", + variability: "constant") %> -_Note: The following data members are part of the simple ground model, which is no longer supported. Use sfFnd instead._ +*Note: The following data members are part of the simple ground model, which is no longer supported. Use sfFnd instead.* -**sfExCTGrnd=_float_** +**sfExCTGrnd=*float*** -**sfExCTaDbAvg07=_float_** +**sfExCTaDbAvg07=*float*** -**sfExCTaDbAvg14=_float_** +**sfExCTaDbAvg14=*float*** -**sfExCTaDbAvg31=_float_** +**sfExCTaDbAvg31=*float*** -**sfExCTaDbAvgYr=_float_** +**sfExCTaDbAvgYr=*float*** Conductances from outside face of surface to the weather file ground temperature and the moving average outdoor dry-bulb temperatures for 7, 14, 31, and 365 days. <%= member_table( -units: "Btuh/ft^2^-^o^F", -legal_range: "_x_ $\\ge$ 0", -default: "see above", -required: "No", -variability: "constant") %> + units: "Btuh/ft^2^-^o^F", + legal_range: "*x* $\\ge$ 0", + default: "see above", + required: "No", + variability: "constant") %> -**sfExRConGrnd=_float_** +**sfExRConGrnd=*float*** -Resistance overall construction resistance. TODO: full documentation. +Resistance overall construction resistance. TODO: full documentation. <%= member_table( -units: "", -legal_range: "_x_ $\\ge$ 0", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $\\ge$ 0", + default: "*none*", + required: "No", + variability: "constant") %> **endSURFACE** Optional to indicates the end of the surface definition. Alternatively, the end of the surface definition can be indicated by END, or by beginning another SURFACE or other object definition. If used, should follow the definitions of the SURFACE's subobjects -- DOORs, WINDOWs, SHADEs, SGDISTs, etc. <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> -**humMeth=_choice_** +**humMeth=*choice*** Developmental zone humidity computation method choice for CNE models (no effect for CSE models). <%= csv_table(< false) -ROB, Rob's backward difference method. Works well within limitations of backward difference approach. -PHIL, Phil's central difference method. Should be better if perfected*coma* but initialization at air handler startup is unresolved\*coma and ringing has been observed. +ROB, Rob's backward difference method. Works well within limitations of backward difference approach. +PHIL, Phil's central difference method. Should be better if perfected*coma* but initialization at air handler startup is unresolved*coma and ringing has been observed. END %> <%= member_table( -units: "", -legal_range: "ROB, PHIL", -default: "ROB", -required: "No", -variability: "constant") %> + units: "", + legal_range: "ROB, PHIL", + default: "ROB", + required: "No", + variability: "constant") %> -**dflExH=_float_** +**dflExH=*float*** Default exterior surface (air film) conductance used for opaque and glazed surfaces exposed to ambient conditions in the absence of explicit specification. <%= member_table( -units: "Btuh/ft^2^-^o^F", -legal_range: "_x_ $>$ 0", -default: "2.64", -required: "No", -variability: "constant") %> + units: "Btuh/ft^2^-^o^F", + legal_range: "*x* $>$ 0", + default: "2.64", + required: "No", + variability: "constant") %> -**bldgAzm=_float_** +**bldgAzm=*float*** -Reference compass azimuth (0 = north, 90 = east, etc.). All zone orientations (and therefore surface orientations) are relative to this value, so the entire building can be rotated by changing bldgAzm only. If a value outside the range 0^o^ $\leq$ _x_ $<$ 360^o^ is given, it is normalized to that range. +Reference compass azimuth (0 = north, 90 = east, etc.). All zone orientations (and therefore surface orientations) are relative to this value, so the entire building can be rotated by changing bldgAzm only. If a value outside the range 0^o^ $\leq$ *x* $<$ 360^o^ is given, it is normalized to that range. <%= member_table( -units: "^o^ (degrees)", -legal_range: "unrestricted", -default: "0", -required: "No", -variability: "constant") %> + units: "^o^ (degrees)", + legal_range: "unrestricted", + default: "0", + required: "No", + variability: "constant") %> -**elevation=_float_** +**elevation=*float*** Elevation of the building site. Used internally for the computation of barometric pressure and air density of the location. <%= member_table( -units: "ft", -legal_range: "_x_ $\\ge$ 0", -default: "0 (sea level)", -required: "No", -variability: "constant") %> + units: "ft", + legal_range: "*x* $\\ge$ 0", + default: "0 (sea level)", + required: "No", + variability: "constant") %> -**runTitle=_string_** +**runTitle=*string*** Run title for the simulation. Appears in report footers, export headers, and in the title lines to the INP, LOG, and ERR built-in reports (these appear by default in the primary report file; the ERR report also appears in the error message file, if one is created). <%= member_table( -units: "", -legal_range: "_63 characters_", -default: "blank (no title", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*63 characters*", + default: "blank (no title", + required: "No", + variability: "constant") %> -**runSerial=_int_** +**runSerial=*int*** Run serial number for the simulation. Increments on each run in a session; appears in report footers. <%= member_table( -units: "", -legal_range: "0 $\leq$ _x_ $\leq$ 999", -default: "0", -required: "No", -variability: "constant") %> + units: "", + legal_range: "0 $\leq$ *x* $\leq$ 999", + default: "0", + required: "No", + variability: "constant") %> ## TOP Daylight Saving Time Items Daylight savings starts by default at 2:00 a.m. of the second Sunday in March. Internally, hour 3 (2:00-3:00 a.m.) is skipped and reports for this day show only 23 hours. Daylight savings ends by default at 2:00 a.m. of the first Sunday of November; for this day 25 hours are shown on reports. CSE fetches weather data using standard time but uses daylight savings time to calculate variable expressions (and thus all schedules). -**DT=_choice_** +**DT=*choice*** Whether Daylight Savings Time is to be used for the current run. <%= member_table( -units: "", -legal_range: "YES, NO", -default: "YES", -required: "No", -variability: "constant") %> + units: "", + legal_range: "YES, NO", + default: "YES", + required: "No", + variability: "constant") %> -**DTbegDay=_date_** +**DTbegDay=*date*** Start day for daylight saving time (assuming DT=Yes) <%= member_table( -units: "", -legal_range: "_date_", -default: "_second Sunday in March_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*date*", + default: "*second Sunday in March*", + required: "No", + variability: "constant") %> -**DTendDay=_date_** +**DTendDay=*date*** End day for daylight saving time (assuming DT=Yes) <%= member_table( -units: "", -legal_range: "_date_", -default: "_first Sunday in November_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*date*", + default: "*first Sunday in November*", + required: "No", + variability: "constant") %> ## TOP Model Control Items -**ventAvail=_choice_** +**ventAvail=*choice*** -Indicates availability of outdoor ventilation strategies. CSE cannot model simultaneously-operating alternative ventilation strategies. For example, an RSYS central fan integrated (CFI) OAV system is never modeled while whole house fan ventilation is available. ventAvail controls which ventilation mode, if any, is available for the current hour. Note that mode availability means that the strategy could operate but may not operate due to other control assumptions. +Indicates availability of outdoor ventilation strategies. CSE cannot model simultaneously-operating alternative ventilation strategies. For example, an RSYS central fan integrated (CFI) OAV system is never modeled while whole house fan ventilation is available. ventAvail controls which ventilation mode, if any, is available for the current hour. Note that mode availability means that the strategy could operate but may not operate due to other control assumptions. <%= csv_table(< true) Choice, Ventilation Strategy Available -NONE, None +NONE, None WHOLEBUILDING, IZXFER (window and whole-house fan) -RSYSOAV, RSYS central fan integrated (CFI) outside air ventilation (OAV) +RSYSOAV, RSYS central fan integrated (CFI) outside air ventilation (OAV) END %> -As noted, ventAvail is evaluated hourly, permitting flexible control strategy modeling. The following example specifies that RSYSOAV (CFI) ventilation is available when the seven day moving average temperature is above 68 ^o^F, otherwise whole building ventilation is available between 7 and 11 PM, otherwise no ventilation. +As noted, ventAvail is evaluated hourly, permitting flexible control strategy modeling. The following example specifies that RSYSOAV (CFI) ventilation is available when the seven day moving average temperature is above 68 ^o^F, otherwise whole building ventilation is available between 7 and 11 PM, otherwise no ventilation. ventAvail = (@weather.taDbAvg07 > 68) ? RSYSOAV : ($hour >= 19 && $hour <= 23) ? WHOLEBUILDING : NONE <%= member_table( -units: "", -legal_range: "_Choices above_", -default: "WHOLEBUILDING", -required: "No", -variability: "hourly") %> + units: "", + legal_range: "*Choices above*", + default: "WHOLEBUILDING", + required: "No", + variability: "hourly") %> -**exShadeModel=_choice_** +**exShadeModel=*choice*** -Specifies advanced exterior shading model used to evaluate shading of [PVARRAYs][pvarray] by [SHADEXs][shadex] or other PVARRAYs. Advanced shading is not implemented for building surfaces and this setting has no effect on walls or windows. +Specifies advanced exterior shading model used to evaluate shading of [PVARRAYs](#pvarray) by [SHADEXs](#shadex) or other PVARRAYs. Advanced shading is not implemented for building surfaces and this setting has no effect on walls or windows. <%= csv_table(< true) -**Choice**, **Effect** -PENUMBRA, Calculate shading using the Penumbra model -NONE, Disable advanced shading calculations +**Choice**, **Effect** +PENUMBRA, Calculate shading using the Penumbra model +NONE, Disable advanced shading calculations END %> <%= member_table( -units: "", -legal_range: "_Choices above_", -default: "PENUMBRA", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*Choices above*", + default: "PENUMBRA", + required: "No", + variability: "constant") %> -**slrInterpMeth=_choice_** +**slrInterpMeth=*choice*** Solar interpolation method. @@ -385,103 +385,104 @@ END %> <%= member_table( -units: "", -legal_range: "See table above", -default: "CSE", -required: "No", -variability: "constant") %> + units: "", + legal_range: "See table above", + default: "CSE", + required: "No", + variability: "constant") %> -**ANTolAbs=_float_** +**ANTolAbs=*float*** -AirNet absolute convergence tolerance. Ideally, calculated zone air pressures should be such that the net air flow into each zone is 0 -- that is, there should be a perfect mass balance. The iterative AirNet solution techniques are deemed converged when netAirMassFlow < max( ANTolAbs, ANTolRel\*totAirMassFlow). +AirNet absolute convergence tolerance. Ideally, calculated zone air pressures should be such that the net air flow into each zone is 0 -- that is, there should be a perfect mass balance. The iterative AirNet solution techniques are deemed converged when netAirMassFlow < max( ANTolAbs, ANTolRel*totAirMassFlow). <%= member_table( -units: "lbm/sec", -legal_range: "_x_ $>$ 0", -default: "0.00125 (about 1 cfm)", -required: "No", -variability: "constant") %> + units: "lbm/sec", + legal_range: "*x* $>$ 0", + default: "0.00125 (about 1 cfm)", + required: "No", + variability: "constant") %> -**ANTolRel=_float_** +**ANTolRel=*float*** -AirNet relative convergence tolerance. See AnTolAbs just above. +AirNet relative convergence tolerance. See AnTolAbs just above. <%= member_table( -units: "", -legal_range: "_x_ $>$ 0", -default: "0.0001", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $>$ 0", + default: "0.0001", + required: "No", + variability: "constant") %> -**ANPressWarn=_float_** +**ANPressWarn=*float*** -AirNet pressure warning threshold. A warning message is issued when the absolute value of the AirNet-calculated zone pressure exceeds ANPressWarn. Note the default for ANPressWarn conservatively large. 10 lb/ft2 is about 500 pascals -- a pressure that is probably impossible in a building. The intent of this value is to alert the user to incorrect modeling inputs while avoiding excessive messages. +AirNet pressure warning threshold. A warning message is issued when the absolute value of the AirNet-calculated zone pressure exceeds ANPressWarn. Note the default for ANPressWarn conservatively large. 10 lb/ft2 is about 500 pascals -- a pressure that is probably impossible in a building. The intent of this value is to alert the user to incorrect modeling inputs while avoiding excessive messages. <%= member_table( -units: "lb/ft2", -legal_range: "x $\\gt$ 0", -default: "10", -required: "No", -variability: "constant") %> + units: "lb/ft2", + legal_range: "x $\\gt$ 0", + default: "10", + required: "No", + variability: "constant") %> -**ANPressErr=_float_** +**ANPressErr=*float*** -AirNet pressure error threshold. The simulation terminates with a message if the absolute value of any AirNet-calculated zone pressure exceeds ANPressErr. Note the default value for ANPressErr is physically unrealistic. 30 lb/ft2 is about 1500 pascals -- a pressure that would never be possible in a building. The intent of this value is to prevent simulation crashes due to numerical errors in AirNet calculations. +AirNet pressure error threshold. The simulation terminates with a message if the absolute value of any AirNet-calculated zone pressure exceeds ANPressErr. Note the default value for ANPressErr is physically unrealistic. 30 lb/ft2 is about 1500 pascals -- a pressure that would never be possible in a building. The intent of this value is to prevent simulation crashes due to numerical errors in AirNet calculations. <%= member_table( -units: "lb/ft2", -legal_range: "x $\\gt$ 0", -default: "30", -required: "No", -variability: "constant") %> + units: "lb/ft2", + legal_range: "x $\\gt$ 0", + default: "30", + required: "No", + variability: "constant") %> -The ASHWAT complex fenestration model used when WINDOW wnModel=ASHWAT yields several heat transfer results that are accurate over local ranges of conditions. Several values control when these value are recalculated. If any of the specified values changes more than the associated threshold, a full ASHWAT calculation is triggered. Otherwise, prior results are used. ASHWAT calculations are computationally expensive and conditions often change only incrementally between time steps. -**AWTrigT=_float_** +The ASHWAT complex fenestration model used when WINDOW wnModel=ASHWAT yields several heat transfer results that are accurate over local ranges of conditions. Several values control when these value are recalculated. If any of the specified values changes more than the associated threshold, a full ASHWAT calculation is triggered. Otherwise, prior results are used. ASHWAT calculations are computationally expensive and conditions often change only incrementally between time steps. + +**AWTrigT=*float*** ASHWAT temperature change threshold -- full calculation is triggered by a change of either indoor or outdoor environmental (combined air and radiant) temperature that exceeds AWTrigT. <%= member_table( -units: "^o^F", -legal_range: "_x_ $>$ 0", -default: "1", -required: "No", -variability: "constant") %> + units: "^o^F", + legal_range: "*x* $>$ 0", + default: "1", + required: "No", + variability: "constant") %> -**AWTrigSlr=_float_** +**AWTrigSlr=*float*** ASHWAT solar change threshold -- full calculation is triggered by a fractional change of incident solar radiation that exceeds AWTrigSlr. <%= member_table( -units: "", -legal_range: "_x_ $>$ 0", -default: "0.05", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $>$ 0", + default: "0.05", + required: "No", + variability: "constant") %> -**AWTrigH=_float_** +**AWTrigH=*float*** ASHWAT convection coefficient change threshold -- full calculation is triggered by a fractional change of inside surface convection coefficient that exceeds AWTrigH. <%= member_table( -units: "", -legal_range: "_x_ $>$ 0", -default: "0.1", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $>$ 0", + default: "0.1", + required: "No", + variability: "constant") %> ## TOP Weather Data Items The following system variables (4.6.4) are determined from the weather file for each simulated hour: <%= csv_table(< false) -\$radBeam, beam irradiance on tracking surface (integral for hour, Btu/ft^2^). -\$radDiff, diffuse irradiance on a horizontal surface (integral for hour, Btu/ft^2^). -\$tDbO, dry bulb temp (^o^F). -\$tWbO, wet bulb temp (^o^F). -\$wO, humidity ratio -\$windDirDeg, wind direction (degrees, NOT RADIANS; 0=N, 90=E). -\$windSpeed, wind speed (mph). +\$radBeam, beam irradiance on tracking surface (integral for hour, Btu/ft^2^). +\$radDiff, diffuse irradiance on a horizontal surface (integral for hour, Btu/ft^2^). +\$tDbO, dry bulb temp (^o^F). +\$tWbO, wet bulb temp (^o^F). +\$wO, humidity ratio +\$windDirDeg, wind direction (degrees, NOT RADIANS; 0=N, 90=E). +\$windSpeed, wind speed (mph). END %> @@ -491,309 +492,314 @@ The following are the terms determined from the weather file for internal use, a @Top.windSpeedSquaredWind speed squared (mph2). -**wfName=_string_** +**wfName=*string*** -Weather file path name for simulation. The file should be in the current directory, in the directory CSE.EXE was read from, or in a directory on the operating system PATH. Weather file formats supported are CSW, EPW, and ET1. Only full-year weather files are supported. +Weather file path name for simulation. The file should be in the current directory, in the directory CSE.EXE was read from, or in a directory on the operating system PATH. Weather file formats supported are CSW, EPW, and ET1. Only full-year weather files are supported. -Note: Backslash (\\) characters in path names must be doubled to work properly (e.g. "\\\\wthr\\\\mywthr.epw"). Forward slash (/) may be used in place of backslash without doubling. +Note: Backslash (\\) characters in path names must be doubled to work properly (e.g. "\\\\wthr\\\\mywthr.epw"). Forward slash (/) may be used in place of backslash without doubling. <%= member_table( -units: "", -legal_range: "file name,path optional", -default: "_none_", -required: "Yes", -variability: "constant") %> + units: "", + legal_range: "file name,path optional", + default: "*none*", + required: "Yes", + variability: "constant") %> -**skyModel=_choice_** +**skyModel=*choice*** Selects sky model used to determine relative amounts of direct and diffuse irradiance. <%= csv_table(< false) -ISOTROPIC, traditional isotropic sky model -ANISOTROPIC, Hay anisotropic model +ISOTROPIC, traditional isotropic sky model +ANISOTROPIC, Hay anisotropic model END %> <%= member_table( -units: "", -legal_range: "_choices above_", -default: "ANISOTROPIC", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*choices above*", + default: "ANISOTROPIC", + required: "No", + variability: "constant") %> -**skyModelLW=_choice_** +**skyModelLW=*choice*** -Selects the model used to derive sky temperature used in long-wave (thermal) radiant heat exchange calculations for SURFACEs exposed to ambient conditions. See the RACM alorithms documentation for technical details. +Selects the model used to derive sky temperature used in long-wave (thermal) radiant heat exchange calculations for SURFACEs exposed to ambient conditions. See the RACM alorithms documentation for technical details. <%= csv_table(< true) -**Choice**, **Description** -DEFAULT, Default: tSky from weather file if available else Berdahl-Martin -BERDAHLMARTIN, Berdahl-Martin (tSky depends on dew point, cloud cover, and hour) -DRYBULB, tSky = dry-bulb temperature (for testing) -BLAST, Blast model (tSky depends on dry-bulb) -IRHORIZ, Derives tSky from horizonal infrared data from the weather file (available on some EPW files only). Caution: minimal error checking! Missing weather file IR values are not handled correctly. +**Choice**, **Description** +DEFAULT, Default: tSky from weather file if available else Berdahl-Martin +BERDAHLMARTIN, Berdahl-Martin (tSky depends on dew point, cloud cover, and hour) +DRYBULB, tSky = dry-bulb temperature (for testing) +BLAST, Blast model (tSky depends on dry-bulb) +IRHORIZ, Derives tSky from horizonal infrared data from the weather file (available on some EPW files only). Caution: minimal error checking! Missing weather file IR values are not handled correctly. END %> <%= member_table( -units: "", -legal_range: "_choices above_", -default: "DEFAULT", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*choices above*", + default: "DEFAULT", + required: "No", + variability: "constant") %> The reference temperature and humidity are used to calculate a humidity ratio assumed in air specific heat calculations. The small effect of changing humidity on the specific heat of air is generally ignored in the interests of speed, but the user can control the humidity whose specific heat is used through the refTemp and refRH inputs. -**refTemp=_float_** +**refTemp=*float*** Reference temperature (see above paragraph). <%= member_table( -units: "^o^F", -legal_range: "_x_ $\\ge$ 0", -default: "60^o^", -required: "No", -variability: "constant") %> + units: "^o^F", + legal_range: "*x* $\\ge$ 0", + default: "60^o^", + required: "No", + variability: "constant") %> -**refRH=_float_** +**refRH=*float*** Reference relative humidity (see above). <%= member_table( -units: "", -legal_range: "0 $\\leq$ _x_ $\\leq$ 1", -default: "0.6", -required: "No", -variability: "constant") %> + units: "", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "0.6", + required: "No", + variability: "constant") %> -**grndRefl=_float_** +**grndRefl=*float*** Global ground reflectivity, used except where other value specified with sfGrndRefl or wnGrndRefl. This reflectivity is used in computing the reflected beam and diffuse radiation reaching the surface in question. It is also used to calculate the solar boundary conditions for the exterior grade surface in two-dimensional finite difference calculations for FOUNDATIONs. + <%= member_table( -units: "", -legal_range: "0 $\\leq$ _x_ $\\leq$ 1", -default: "0.2", -required: "No", -variability: "Monthly-Hourly") %> + units: "", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "0.2", + required: "No", + variability: "Monthly-Hourly") %> The following values modify weather file data, permitting varying the simulation without making up special weather files. For example, to simulate without the effects of wind, use windF = 0; to halve the effects of diffuse solar radiation, use radDiffF = 0.5. Note that the default values for windSpeedMin and windF result in modification of weather file wind values unless other values are specified. -**grndEmit=_float_** +**grndEmit=*float*** Long-wave emittance of the exterior grade surface used in two-dimensional finite difference calculations for FOUNDATIONs. <%= member_table( -units: "", -legal_range: "0.0 $\le$ x $\le$ 1.0", -default: "0.8", -required: "No", -variability: "constant") %> + units: "", + legal_range: "0.0 $\le$ x $\le$ 1.0", + default: "0.8", + required: "No", + variability: "constant") %> + **grndRf** Ground surface roughness. Used for convection and wind speed corrections in two-dimensional finite difference calculations for FOUNDATIONs. <%= member_table( -units: "ft", -legal_range: "x $\\geq$ 0.0", -default: "0.1", -required: "No", -variability: "constant") %> + units: "ft", + legal_range: "x $\\geq$ 0.0", + default: "0.1", + required: "No", + variability: "constant") %> -**windSpeedMin=_float_** +**windSpeedMin=*float*** Minimum value for wind speed <%= member_table( -units: "mph", -legal_range: "_x_ $\\ge$ 0", -default: "0.5", -required: "No", -variability: "constant") %> + units: "mph", + legal_range: "*x* $\\ge$ 0", + default: "0.5", + required: "No", + variability: "constant") %> -**windF=_float_** +**windF=*float*** -Wind Factor: multiplier for wind speeds read from weather file. windF is applied _after_ windSpeedMin. Note that windF does _not_ effect infiltration rates calculated by the Sherman-Grimsrud model (see e.g. ZONE.infELA). However, windF does modify AirNet flows (see IZXFER). +Wind Factor: multiplier for wind speeds read from weather file. windF is applied *after* windSpeedMin. Note that windF does *not* effect infiltration rates calculated by the Sherman-Grimsrud model (see e.g. ZONE.infELA). However, windF does modify AirNet flows (see IZXFER). <%= member_table( -units: "", -legal_range: "_x_ $\\ge$ 0", -default: "0.25", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $\\ge$ 0", + default: "0.25", + required: "No", + variability: "constant") %> -**terrainClass=_int_** +**terrainClass=*int*** Specifies characteristics of ground terrain in the project region. <%= csv_table(< false) -1, ocean or other body of water with at least 5 km unrestricted expanse -2, flat terrain with some isolated obstacles (buildings or trees well separated) -3, rural areas with low buildings, trees, etc. -4, urban, industrial, or forest areas -5, center of large city +1, ocean or other body of water with at least 5 km unrestricted expanse +2, flat terrain with some isolated obstacles (buildings or trees well separated) +3, rural areas with low buildings, trees, etc. +4, urban, industrial, or forest areas +5, center of large city END %> <%= member_table( -units: "", -legal_range: "1 $\\leq$ _x_ $\\leq$ 5", -default: "4", -required: "No", -variability: "constant") %> + units: "", + legal_range: "1 $\\leq$ *x* $\\leq$ 5", + default: "4", + required: "No", + variability: "constant") %> - -**radBeamF=_float_** +**radBeamF=*float*** Multiplier for direct normal (beam) irradiance <%= member_table( -units: "", -legal_range: "_x_ $\\ge$ 0", -default: "1", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $\\ge$ 0", + default: "1", + required: "No", + variability: "constant") %> -**radDiffF=_float_** +**radDiffF=*float*** Multiplier for diffuse horizonal irradiance. <%= member_table( -units: "", -legal_range: "_x_ $\\ge$ 0", -default: "1", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*x* $\\ge$ 0", + default: "1", + required: "No", + variability: "constant") %> -**hConvMod=_choice_** +**hConvMod=*choice*** Enable/disable convection convective coefficient pressure modification factor. $$0.24 + 0.76 \cdot P_{Location}/P_{SeaLevel}$$ <%= member_table( -units: "", -legal_range: "YES, NO", -default: "YES", -required: "No", -variability: "constant") %> + units: "", + legal_range: "YES, NO", + default: "YES", + required: "No", + variability: "constant") %> -**soilDiff=_float_** +**soilDiff=*float*** -_Note: soilDiff is used as part of the simple ground model, which is no longer supported. Use soilCond, soilSpHt, and SoilDens instead._ +*Note: soilDiff is used as part of the simple ground model, which is no longer supported. Use soilCond, soilSpHt, and SoilDens instead.* -Soil diffusivity, used in derivation of ground temperature. CSE calculates a ground temperature at 10 ft depth for each day of the year using dry-bulb temperatures from the weather file and soilDiff. Ground temperature is used in heat transfer calculations for SURFACEs with sfExCnd=GROUND. Note: derivation of mains water temperature for DHW calculations involves a ground temperature based on soil diffusivity = 0.025 and does not use this soilDiff. +Soil diffusivity, used in derivation of ground temperature. CSE calculates a ground temperature at 10 ft depth for each day of the year using dry-bulb temperatures from the weather file and soilDiff. Ground temperature is used in heat transfer calculations for SURFACEs with sfExCnd=GROUND. Note: derivation of mains water temperature for DHW calculations involves a ground temperature based on soil diffusivity = 0.025 and does not use this soilDiff. <%= member_table( -units: "ft^2^/hr", -legal_range: "_x_ $>$ 0", -default: "0.025", -required: "No", -variability: "constant") %> + units: "ft^2^/hr", + legal_range: "*x* $>$ 0", + default: "0.025", + required: "No", + variability: "constant") %> -**soilCond=_float_** +**soilCond=*float*** Soil conductivity. Used in two-dimensional finite difference calculations for FOUNDATIONs. <%= member_table( -units: "Btuh-ft/ft^2^-^o^F", -legal_range: "_x_ $>$ 0", -default: "1.0", -required: "No", -variability: "constant") %> + units: "Btuh-ft/ft^2^-^o^F", + legal_range: "*x* $>$ 0", + default: "1.0", + required: "No", + variability: "constant") %> -**soilSpHt=_float_** +**soilSpHt=*float*** Soil specific heat. Used in two-dimensional finite difference calculations for FOUNDATIONs. <%= member_table( -units: "Btu/lb-^o^F", -legal_range: "_x_ $>$ 0", -default: "0.1", -required: "No", -variability: "constant") %> + units: "Btu/lb-^o^F", + legal_range: "*x* $>$ 0", + default: "0.1", + required: "No", + variability: "constant") %> -**soilDens=_float_** +**soilDens=*float*** Soil density. Used in two-dimensional finite difference calculations for FOUNDATIONs. <%= member_table( -units: "lb/ft^3^", -legal_range: "_x_ $>$ 0", -default: "115", -required: "No", -variability: "constant") %> + units: "lb/ft^3^", + legal_range: "*x* $>$ 0", + default: "115", + required: "No", + variability: "constant") %> -**farFieldWidth=_float_** +**farFieldWidth=*float*** Far-field width. Distance from foundation to the lateral, zero-flux boundary condition. Used in two-dimensional finite difference calculations for FOUNDATIONs. <%= member_table( -units: "ft", -legal_range: "_x_ $>$ 0", -default: "130", -required: "No", -variability: "constant") %> + units: "ft", + legal_range: "*x* $>$ 0", + default: "130", + required: "No", + variability: "constant") %> + -**deepGrndCnd=_choice_** +**deepGrndCnd=*choice*** Deep-ground boundary condition type. Choices are WATERTABLE (i.e., a defined temperature) or ZEROFLUX. <%= member_table( -legal_range: "WATERTABLE, ZEROFLUX", -default: "ZEROFLUX", -required: "No", -variability: "constant") %> + legal_range: "WATERTABLE, ZEROFLUX", + default: "ZEROFLUX", + required: "No", + variability: "constant") %> -**deepGrndDepth=_float_** +**deepGrndDepth=*float*** Deep-ground depth. Distance from exterior grade to the deep-ground boundary. Used in two-dimensional finite difference calculations for FOUNDATIONs. <%= member_table( -units: "ft", -legal_range: "_x_ $>$ 0", -default: "130", -required: "No", -variability: "constant") %> + units: "ft", + legal_range: "*x* $>$ 0", + default: "130", + required: "No", + variability: "constant") %> -**deepGrndT=_float_** + +**deepGrndT=*float*** Deep-ground temperature. Used when deepGrndCnd=WATERTABLE. <%= member_table( -units: "F", -legal_range: "_x_ $>$ 0", -default: "Annual average drybulb temperature", -required: "No", -variability: "hourly") %> + units: "F", + legal_range: "*x* $>$ 0", + default: "Annual average drybulb temperature", + required: "No", + variability: "hourly") %> + + ## TOP TDV (Time Dependent Value) Items -CSE supports an optional comma-separated (CSV) text file that provides hourly TDV values for electricity and fuel. TDV values are read along with the weather file and the values merged with weather data. Several daily statistics are calculated for use via probes. The file has no other effect on the simulation. Only full-year TDV files are supported. +CSE supports an optional comma-separated (CSV) text file that provides hourly TDV values for electricity and fuel. TDV values are read along with the weather file and the values merged with weather data. Several daily statistics are calculated for use via probes. The file has no other effect on the simulation. Only full-year TDV files are supported. -The format of a TDV file is the same as an [IMPORTFILE][importfile] with the proviso that the 4 line header is not optional and certain header items must have specified values. In the following table, non-italic items must be provided as shown (with optional quotes). +The format of a TDV file is the same as an [IMPORTFILE](#importfile) with the proviso that the 4 line header is not optional and certain header items must have specified values. In the following table, non-italic items must be provided as shown (with optional quotes). <%= csv_table(< true) -**Line** **Contents** **Notes** -1, TDV Data (TDV/Btu), _runNumber_, _runNumber_ is not checked -2, _timestamp_ optionally in quotes accessible via @TOP.TDVFileTimeStamp -3, _title_, hour _title_ (in quotes if it contains commas) accessible via @TOP.TDVFileTitle -4, tdvElec, tdvFuel comma separated column names (optionally in quotes)\ not checked -5 .., _valElec_,_valFuel_ comma separated numerical values (8760 or 8784 rows) tdvElec is always in column 1, tdvFuel always in column 2 column names in row 4 do not determine order +**Line** **Contents** **Notes** +1, TDV Data (TDV/Btu), *runNumber*, *runNumber* is not checked +2, *timestamp* optionally in quotes accessible via @TOP.TDVFileTimeStamp +3, *title*, hour *title* (in quotes if it contains commas) accessible via @TOP.TDVFileTitle +4, tdvElec, tdvFuel comma separated column names (optionally in quotes)\ not checked +5 .., *valElec*,*valFuel* comma separated numerical values (8760 or 8784 rows) tdvElec is always in column 1, tdvFuel always in column 2 column names in row 4 do not determine order END %> @@ -816,262 +822,264 @@ Example TDV file -- Note: additional columns can be included and are ignored. -The table below shows probes available for accessing TDV data in expressions. Except as noted, daily values are updated based on standard time, so they may be inaccurate by small amounts when daylight savings time is in effect. +The table below shows probes available for accessing TDV data in expressions. Except as noted, daily values are updated based on standard time, so they may be inaccurate by small amounts when daylight savings time is in effect. <%= csv_table(< true) -**Probe**, **Variability**, **Description** +**Probe**, **Variability**, **Description** @Weather.tdvElec, Hour, current hour electricity TDV @Weather.tdvFuel, Hour, current hour fuel TDV -@Weather.tdvElecPk, Day, current day peak electricity TDV (includes future hours). Updated at hour 23 during daylight savings. +@Weather.tdvElecPk, Day, current day peak electricity TDV (includes future hours). Updated at hour 23 during daylight savings. @Weather.tdvElecAvg, Day, current day average electricity TDV (includes future hours) @Weather.tdvElecPvPk, Day,previous day peak electricity TDV @Weather.tdvElecAvg01, Day,previous day average electricity TDV -@weather.tdvElecHrRank[], Day, hour ranking of TDVElec values. tdvElecHrRank[ 1] is the hour having the highest TDVElec, tdvElecHrRank[ 2] is the next highest, etc. The hour values are adjusted when dayight savings time is in effect, so they remain consistent with system variable $hour. +@weather.tdvElecHrRank[], Day, hour ranking of TDVElec values. tdvElecHrRank[ 1] is the hour having the highest TDVElec, tdvElecHrRank[ 2] is the next highest, etc. The hour values are adjusted when dayight savings time is in effect, so they remain consistent with system variable $hour. @weatherFile.tdvFileTimeStamp, Constant, TDV file timestamp (line 2 of header) @weatherFile.tdvFileTitle, Constant, TDV file title (line 3 of header) @Top.tdvFName, Constant, TDV file full path END %> -**TDVfName=_string_** +**TDVfName=*string*** -Note: Backslash (\\) characters in path names must be doubled to work properly (e.g. "\\\\data\\\\mytdv.tdv"). Forward slash (/) may be used in place of backslash without doubling. +Note: Backslash (\\) characters in path names must be doubled to work properly (e.g. "\\\\data\\\\mytdv.tdv"). Forward slash (/) may be used in place of backslash without doubling. <%= member_table( -units: "", -legal_range: "file name, path optional", -default: "(no TDV file)", -required: "No", -variability: "constant") %> + units: "", + legal_range: "file name, path optional", + default: "(no TDV file)", + required: "No", + variability: "constant") %> ## TOP Report Data Items These items are used in page-formatted report output files. See REPORTFILE, Section 5.245.21, and REPORT, Section 5.25. -**repHdrL=_string_** +**repHdrL=*string*** Report left header. Appears at the upper left of each report page unless page formatting (rfPageFmt) is OFF. If combined length of repHdrL and repHdrR is too large for the page width, one or both will be truncated. <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> -**repHdrR=_string_** +**repHdrR=*string*** Report right header. Appears at the upper right of each report page unless page formatting (rfPageFmt) is OFF. If combined length of repHdrL and repHdrR is too large for the page width, one or both will be truncated. <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> -**repLPP=_int_** +**repLPP=*int*** Total lines per page to be assumed for reports. Number of lines used for text (including headers and footers) is repLPP - repTopM - repBotM. <%= member_table( -units: "lines", -legal_range: "_x_ $\\ge$ 50", -default: "66", -required: "No", -variability: "constant") %> + units: "lines", + legal_range: "*x* $\\ge$ 50", + default: "66", + required: "No", + variability: "constant") %> -**repTopM=_int_** +**repTopM=*int*** Number of lines to be skipped at the top of each report page (prior to header). <%= member_table( -units: "lines", -legal_range: "0 $\\geq$ _x_ $\\geq$ 12", -default: "3", -required: "No", -variability: "constant") %> + units: "lines", + legal_range: "0 $\\geq$ *x* $\\geq$ 12", + default: "3", + required: "No", + variability: "constant") %> -**repBotM=_int_** +**repBotM=*int*** Number of lines reserved at the bottom of each report page. repBotM determines the position of the footer on the page (blank lines after the footer are not actually written). <%= member_table( -units: "lines", -legal_range: "0 $\\geq$ _x_ $\\geq$ 12", -default: "3", -required: "No", -variability: "constant") %> + units: "lines", + legal_range: "0 $\\geq$ *x* $\\geq$ 12", + default: "3", + required: "No", + variability: "constant") %> -**repCPL=_int_** +**repCPL=*int*** Characters per line for report headers and footers, user defined reports, and error messages. CSE writes simple ASCII files and assumes a fixed (not proportional) spaced printer font. Many of the built-in reports now (July 1992) assume a line width of 132 columns. <%= member_table( -units: "characters", -legal_range: "78 $\\leq$ _x_ $\\leq$ 132", -default: "78", -required: "No", -variability: "constant") %> + units: "characters", + legal_range: "78 $\\leq$ *x* $\\leq$ 132", + default: "78", + required: "No", + variability: "constant") %> -**repTestPfx=_string_** +**repTestPfx=*string*** Report test prefix. Appears at beginning of report lines that are expected to differ from prior runs. This is useful for "hiding" lines from text comparison utilities in automated testing schemes. Note: the value specified with command line -x takes precedence over this input. <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> ## TOP Autosizing -**doAutoSize=_choice_** +**doAutoSize=*choice*** Controls invocation of autosizing phase prior to simulation. <%= member_table( -units: "", -legal_range: "YES, NO", -default: "NO, unless AUTOSIZE commands in input", -required: "No", -variability: "constant") %> + units: "", + legal_range: "YES, NO", + default: "NO, unless AUTOSIZE commands in input", + required: "No", + variability: "constant") %> -**auszTol=_float_** +**auszTol=*float*** -Autosize tolerance. Sized capacity results are deemed final when successive design day calculations produce results within auszTol of the prior iteration. +Autosize tolerance. Sized capacity results are deemed final when successive design day calculations produce results within auszTol of the prior iteration. <%= member_table( -units: "", -legal_range: "", -default: ".005", -required: "No", -variability: "constant") %> + units: "", + legal_range: "", + default: ".005", + required: "No", + variability: "constant") %> -**heatDsTDbO=_float_** +**heatDsTDbO=*float*** Heating outdoor dry bulb design temperature used for autosizing heating equipment. <%= member_table( -units: "^o^F", -legal_range: "", -default: "_none_", -required: "No", -variability: "hourly") %> + units: "^o^F", + legal_range: "", + default: "*none*", + required: "No", + variability: "hourly") %> -**heatDsTWbO=_float_** +**heatDsTWbO=*float*** Heating outdoor design dry bulb temperature used for autosizing heating equipment. <%= member_table( -units: "^o^F", -legal_range: "_x_ $\\ge$ 0", -default: "derived assuming RH=.7", -required: "No", -variability: "hourly") %> + units: "^o^F", + legal_range: "*x* $\\ge$ 0", + default: "derived assuming RH=.7", + required: "No", + variability: "hourly") %> -CSE provides 3 mutually-exclusive methods for specifying cooling design conditions. Each resulting design day is simulated repeatedly until results (e.g. equipment capacities) converge to stable values. Multiple days are typically used to ensure the a range of temperatures and sun positions are considered. +CSE provides 3 mutually-exclusive methods for specifying cooling design conditions. Each resulting design day is simulated repeatedly until results (e.g. equipment capacities) converge to stable values. Multiple days are typically used to ensure the a range of temperatures and sun positions are considered. -- Design conditions. One or more DESCONDs are specified. DESCOND data is used to generate 24 hour design day weather data. -- Design days (from weather file). One or more dates are specified. Actual days from the weather file are simulated. -- Monthly design data. Deprecated method using conditions found in ET1 format weather files. +- Design conditions. One or more DESCONDs are specified. DESCOND data is used to generate 24 hour design day weather data. +- Design days (from weather file). One or more dates are specified. Actual days from the weather file are simulated. +- Monthly design data. Deprecated method using conditions found in ET1 format weather files. -**coolDsCond=_list of up to 12 DESCONDs_** +**coolDsCond=*list of up to 12 DESCONDs*** -Specifies cooling design conditions for cooling autosizing. A comma-separated list of up to 12 DESCOND names can be provided. Each day will be simulated repeatedly using weather conditions generated from DESCOND values. +Specifies cooling design conditions for cooling autosizing. A comma-separated list of up to 12 DESCOND names can be provided. Each day will be simulated repeatedly using weather conditions generated from DESCOND values. <%= member_table( -units: "", -legal_range: "_name of DESCOND_", -default: "_none_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "*name of DESCOND*", + default: "*none*", + required: "No", + variability: "constant") %> -**coolDsDay=_list of up to 12 days_** +**coolDsDay=*list of up to 12 days*** -Specifies cooling design days for cooling autosizing. Each day will be simulated repeatedly using weather file conditions for that day. +Specifies cooling design days for cooling autosizing. Each day will be simulated repeatedly using weather file conditions for that day. <%= member_table( -units: "dates", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") %> + units: "dates", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> -**coolDsMo=_list of up to 12 months_** +**coolDsMo=*list of up to 12 months*** -Deprecated method for specifying design days for cooling autosizing. Design conditions are taken from ET1 weather file header, however, the limited availale ET1 files do not contain design condition information. +Deprecated method for specifying design days for cooling autosizing. Design conditions are taken from ET1 weather file header, however, the limited availale ET1 files do not contain design condition information. <%= member_table( -units: "months", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") %> + units: "months", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> + ## TOP Debug Reporting -**verbose=_int_** +**verbose=*int*** Controls verbosity of screen remarks. Most possible remarks are generated during autosizing of CNE models. Little or no effect in CSE models. TODO: document options <%= member_table( -units: "", -legal_range: "0 - 5", -default: "1", -required: "No", -variability: "constant") %> + units: "", + legal_range: "0 - 5", + default: "1", + required: "No", + variability: "constant") %> The following dbgPrintMask values provide bitwise control of addition of semi-formated internal results to the run report file. The values and format of debugging reports are modified as required for testing purposes. -**dbgPrintMaskC=_int_** +**dbgPrintMaskC=*int*** Constant portion of debug reporting control. <%= member_table( -units: "", -legal_range: "", -default: "0", -required: "No", -variability: "constant") %> + units: "", + legal_range: "", + default: "0", + required: "No", + variability: "constant") %> -**dbgPrintMask=_int_** +**dbgPrintMask=*int*** Hourly portion of debug reporting control (generally an expression that evaluates to non-0 only on days or hours of interest). <%= member_table( -units: "", -legal_range: "", -default: "0", -required: "No", -variability: "hourly") %> + units: "", + legal_range: "", + default: "0", + required: "No", + variability: "hourly") %> -**dbgFlag=_int_** +**dbgFlag=*int*** -Allows passing an input value to ad-hoc debugging code. No permanent use; no impact on results. +Allows passing an input value to ad-hoc debugging code. No permanent use; no impact on results. <%= member_table( -units: "", -legal_range: "", -default: "0", -required: "No", -variability: "subhourly") %> + units: "", + legal_range: "", + default: "0", + required: "No", + variability: "subhourly") %> -**doCoverage=_choice_** +**doCoverage=*choice*** -Enables expression code coverage reporting. Development aid. +Enables expression code coverage reporting. Development aid. <%= member_table( -units: "", -legal_range: "NO, YES", -default: "_NO_", -required: "No", -variability: "constant") %> + units: "", + legal_range: "NO, YES", + default: "*NO*", + required: "No", + variability: "constant") %> + **Related Probes:** -- @[top][p_top] -- @[weatherFile][p_weatherfile] -- @[weather][p_weather] -- @[weatherNextHour][p_weathernexthour] +- @[top](#p_top) +- @[weatherFile](#p_weatherfile) +- @[weather](#p_weather) +- @[weatherNextHour](#p_weathernexthour) diff --git a/doc/src/docs/input-data/towerplant.md b/doc/src/docs/input-data/towerplant.md index d1f31b6a7..08f79d0e4 100644 --- a/doc/src/docs/input-data/towerplant.md +++ b/doc/src/docs/input-data/towerplant.md @@ -14,294 +14,242 @@ There is no provision for scheduling a TOWERPLANT: it operates whenever the heat Name of TOWERPLANT object, given immediately after the word TOWERPLANT to begin the object's input. The name is used to refer to the TOWERPLANT in COOLPLANTs and HPLOOPs. -**Units** **Legal Range** **Default** **Required** **Variability** - ---- - + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ------------- -------------- ----------------- *63 characters* Yes constant -**tpTsSp=_float_** +**tpTsSp=*float*** Setpoint temperature for water leaving towers. -**Units** **Legal Range** **Default** **Required** **Variability** - ---- - -^o^F _x_ > 0 85 No hourly + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ------------- -------------- ----------------- + ^o^F *x* > 0 85 No hourly -**tpMtr=_name of a METER_** +**tpMtr=*name of a METER*** METER object by which TOWERPLANT's fan input energy is to be recorded, in category "Aux". If omitted, energy use is not recorded, and thus cannot be reported. Towerplants have no modeled input energy other than for their fans (the heat rejection pumps are part of the CHILLER and HPLOOP objects). -**Units** **Legal Range** **Default** **Required** **Variability** - ---- - + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ------------------- ------------- -------------- ----------------- *name of a METER* *none* No constant -**tpStg=_choice_** +**tpStg=*choice*** How tower fans are staged to meet the load: ---- - -TOGETHER All fans operate at the same speed or cycle on and off -together. - -LEAD A single "Lead" tower's fan is modulated as required and -as many additional fans as necessary run at their (single) -full speed. + ----------- ---------------------------------------------------------- + TOGETHER All fans operate at the same speed or cycle on and off + together. ---- + LEAD A single "Lead" tower's fan is modulated as required and + as many additional fans as necessary run at their (single) + full speed. + ----------- ---------------------------------------------------------- Whenever the heat rejection pump in a CHILLER or HPLOOP heat exchanger is on, the water flows through all towers in the TOWERPLANT, regardless of the number of fans operating. -**Units** **Legal Range** **Default** **Required** **Variability** - ---- - + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ------------- -------------- ----------------- TOGETHER, LEAD TOGETHER No constant -**ctN=_integer_** +**ctN=*integer*** Number of towers in the TOWERPLANT. -**Units** **Legal Range** **Default** **Required** **Variability** - ---- - + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ------------- -------------- ----------------- *x* > 0 1 No constant -**ctType=_choice_** +**ctType=*choice*** -Cooling tower fan control type: ONESPEED, TWOSPEED, or VARIABLE. This applies to all towers under TOGETHER staging. For LEAD staging, _ctType_ applies only to the lead tower; additional towers have ONESPEED fans. - -**Units** **Legal Range** **Default** **Required** **Variability** - ---- +Cooling tower fan control type: ONESPEED, TWOSPEED, or VARIABLE. This applies to all towers under TOGETHER staging. For LEAD staging, *ctType* applies only to the lead tower; additional towers have ONESPEED fans. + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ------------------------------ ------------- -------------- ----------------- ONESPEED, TWOSPEED, VARIABLE ONESPEED No constant -**ctLoSpd=_float_** +**ctLoSpd=*float*** Low speed for TWOSPEED fan, as a fraction of full speed cfm. -**Units** **Legal Range** **Default** **Required** **Variability** - ---- - + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- -------------------- ------------- -------------- ----------------- 0 < *x* $\le$ 1 0.5 No constant -Note: full speed fan cfm is given by _ctVfDs_, below. +Note: full speed fan cfm is given by *ctVfDs*, below. -The rest of the input variables apply to each tower in the group; the towers are identical except for the single-speed fan on non-lead towers when _tpStg_ is LEAD. +The rest of the input variables apply to each tower in the group; the towers are identical except for the single-speed fan on non-lead towers when *tpStg* is LEAD. The following two inputs permit computation of the tower fan electrical energy consumption: -**ctShaftBhp=_float_** +**ctShaftBhp=*float*** Shaft brake horsepower of each tower fan motor. The default value is the sum of the rejected (condenser) heats (including pump heat) at design conditions of the most powerful stage of each connected COOLPLANT, plus the design capacity of each connected HPLOOP heat exchanger, all divided by 290,000 and by the number of cooling towers in the TOWERPLANT. -**Units** **Lgl Range** **Default** **Req'd** **Variability** + **Units** **Lgl Range** **Default** **Req'd** **Variability** + ----------- --------------- ----------------------------- ----------- ----------------- + Bhp *x* > 0 (sum of loads)/290000/*cTn* No constant ---- - -Bhp _x_ > 0 (sum of loads)/290000/_cTn_ No constant - -**ctMotEff=_float_** +**ctMotEff=*float*** Motor (and drive, if any) efficiency for tower fans. -**Units** **Legal Range** **Default** **Required** **Variability** - ---- - + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ------------- -------------- ----------------- *x* > 0 .88 No constant The next four items specify the coefficients of polynomial curves relating fan power consumption to average speed (cfm) for the various fan types. For the non-variable speed cases CSE uses linear polynomials of the form $$p = a + b \cdot \text{spd}$$ -where _p_ is the power consumption as a fraction of full speed power consumption, and _spd_ is the average speed as a fraction of full speed. The linear relationship reflects the fact that the fans cycle to match partial loads. A non-0 value may be given for the constant part _a_ to reflect start-stop losses. For the two speed fan, separate polynomials are used for low and high speed operation; the default coefficients assume power input varies with the cube of speed, that is, at low speed (_ctLoSpd_) the relative power input is _ctLoSpd3_. For the variable speed case a cubic polynomial is used. +where *p* is the power consumption as a fraction of full speed power consumption, and *spd* is the average speed as a fraction of full speed. The linear relationship reflects the fact that the fans cycle to match partial loads. A non-0 value may be given for the constant part *a* to reflect start-stop losses. For the two speed fan, separate polynomials are used for low and high speed operation; the default coefficients assume power input varies with the cube of speed, that is, at low speed (*ctLoSpd*) the relative power input is *ctLoSpd3*. For the variable speed case a cubic polynomial is used. -For each linear polynomial, two _float_ expressions are given, separated by a comma. The first expression is the constant, _a_. The second expression is the coefficient of the average speed, _b_. Except for _ctFcLo_, _a_ and _b_ should add up to 1, to make the relative power consumption 1 when _spd_ is 1; otherwise, CSE will issue a warning message and normalize them. +For each linear polynomial, two *float* expressions are given, separated by a comma. The first expression is the constant, *a*. The second expression is the coefficient of the average speed, *b*. Except for *ctFcLo*, *a* and *b* should add up to 1, to make the relative power consumption 1 when *spd* is 1; otherwise, CSE will issue a warning message and normalize them. -**ctFcOne=_a, b_** +**ctFcOne=*a, b*** -Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for ONESPEED fan. For the one-speed case, the relative average speed _spd_ is the fraction of the time the fan is on. - -**Units** **Legal Range** **Default** **Required** **Variability** - ---- +Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for ONESPEED fan. For the one-speed case, the relative average speed *spd* is the fraction of the time the fan is on. + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ------------- -------------- ----------------- *a + b = 1.0* 0, 1 No constant -**ctFcLo=_a, b_** - -Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for low speed of TWOSPEED fan, when _spd_ $\le$ _ctLoSpd_. - -**Units** **Legal Range** **Default** **Required** **Variability** +**ctFcLo=*a, b*** ---- +Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for low speed of TWOSPEED fan, when *spd* $\le$ *ctLoSpd*. + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ----------------- -------------- ----------------- *a + b = 1.0* 0, *ctLoSpd^2^* No constant -**ctFcHi=_a, b_** +**ctFcHi=*a, b*** -Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for high speed of TWOSPEED fan, when _spd_ > _ctLoSpd_. - -**Units** **Legal Range** **Default** **Required** **Variability** - ---- +Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for high speed of TWOSPEED fan, when *spd* > *ctLoSpd*. + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- --------------------------------------------------- -------------- ----------------- *a + b = 1.0* *-ctLoSpd^2^ - ctLoSpd, ctLoSpd^2^ + ctLoSpd + 1* No constant -**ctFcVar=_a, b, c, d_** - -For VARIABLE speed fan, four _float_ values for coefficients of cubic fan power consumption polynomial of the form $p = a + b \cdot \text{spd} + c \cdot \text{spd}^2 + d \cdot \text{spd}^3$. - -**Units** **Legal Range** **Default** **Required** **Variability** +**ctFcVar=*a, b, c, d*** ---- +For VARIABLE speed fan, four *float* values for coefficients of cubic fan power consumption polynomial of the form $p = a + b \cdot \text{spd} + c \cdot \text{spd}^2 + d \cdot \text{spd}^3$. + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------------- ------------- -------------- ----------------- *a + b + c + d = 1.0* 0, 0, 0, 1 No constant The next six items specify the tower performance under one set of conditions, the "design conditions". The conditions should be chosen to be representative of full load operating conditions. -**ctCapDs=_float_** +**ctCapDs=*float*** Design capacity: amount of heat extracted from water under design conditions by one tower. The default value is the sum of the rejected (condenser) heats (including pump heat) at design conditions of the most powerful stage of each connected COOLPLANT, plus the design capacity of each connected HPLOOP heat exchanger, all divided by the number of towers. -**Units** **Legal Range** **Default** **Required** **Variability** + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ---------------------- -------------- ----------------- + Btuh *x* $\neq$ 0 (sum of loads)/*ctN* No constant ---- - -Btuh _x_ $\neq$ 0 (sum of loads)/_ctN_ No constant - -**ctVfDs=_float_** +**ctVfDs=*float*** Design air flow, per tower; also the fan full-speed cfm specification. -The default value is the sum of the loads (computed as for _ctCapDs_, just above) divided by 51, divided by the number of cooling towers. - -**Units** **Legal Range** **Default** **Required** **Variability** - ---- +The default value is the sum of the loads (computed as for *ctCapDs*, just above) divided by 51, divided by the number of cooling towers. -cfm _x_ > 0 (sum of loads)/51/_ctN_ No constant + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ------------------------- -------------- ----------------- + cfm *x* > 0 (sum of loads)/51/*ctN* No constant -**ctGpmDs=_float_** +**ctGpmDs=*float*** Design water flow, per tower. The default is the sum of the flows of the connected heat rejection pumps, using the largest stage for COOLPLANTs, divided by the number of towers. -**Units** **Legal Range** **Default** **Required** **Variability** + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ---------------------- -------------- ----------------- + gpm *x* > 0 (sum of pumps)/*ctN* No constant ---- +**ctTDbODs=*float*** -gpm _x_ > 0 (sum of pumps)/_ctN_ No constant +Design outdoor drybulb temperature (needed to convert *ctVfDs* from cfm to lb/hr). -**ctTDbODs=_float_** + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ------------- -------------- ----------------- + ^o^F *x* > 0 93.5 No constant -Design outdoor drybulb temperature (needed to convert _ctVfDs_ from cfm to lb/hr). - -**Units** **Legal Range** **Default** **Required** **Variability** - ---- - -^o^F _x_ > 0 93.5 No constant - -**ctTWbODs=_float_** +**ctTWbODs=*float*** Design outdoor wetbulb temperature. -**Units** **Legal Range** **Default** **Required** **Variability** + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ------------- -------------- ----------------- + ^o^F *x* > 0 78 No constant ---- - -^o^F _x_ > 0 78 No constant - -**ctTwoDs=_float_** +**ctTwoDs=*float*** Design leaving water temperature. -**Units** **Legal Range** **Default** **Required** **Variability** - ---- - -^o^F _x_ > 0 85 No constant + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ------------- -------------- ----------------- + ^o^F *x* > 0 85 No constant -The following six items allow optional specification of tower performance under another set of conditions, the "off design" conditions. If given, they allow CSE to compute the tower's relation between flows and heat transfer; in this case, _ctK_ (below) may not be given. +The following six items allow optional specification of tower performance under another set of conditions, the "off design" conditions. If given, they allow CSE to compute the tower's relation between flows and heat transfer; in this case, *ctK* (below) may not be given. -**ctCapOd=_float_** +**ctCapOd=*float*** Off-design capacity, per tower. -**Units** **Legal Range** **Default** **Required** **Variability** + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ---------------------- -------------- ----------------- + Btuh *x* $\neq$ 0 (sum of loads)/*ctN* No constant ---- +**ctVfOd=*float*** -Btuh _x_ $\neq$ 0 (sum of loads)/_ctN_ No constant +Off-design air flow, per tower. Must differ from design air flow; thus *ctVfDs* and *ctVfOd* cannot both be defaulted if off-design conditions are being given. The off-design air and water flows must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. -**ctVfOd=_float_** + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- --------------------------------- ------------------------- -------------- ----------------- + cfm *x* > 0; *x* $\neq$ *ctVfDs* (sum of loads)/51/*ctN* No constant -Off-design air flow, per tower. Must differ from design air flow; thus _ctVfDs_ and _ctVfOd_ cannot both be defaulted if off-design conditions are being given. The off-design air and water flows must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. - -**Units** **Legal Range** **Default** **Required** **Variability** - ---- - -cfm _x_ > 0; _x_ $\neq$ _ctVfDs_ (sum of loads)/51/_ctN_ No constant - -**ctGpmOd=_float_** +**ctGpmOd=*float*** Off-design water flow, per tower. Must differ from design water flow; thus, both cannot be defaulted if off-design conditions are being given. Value must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. -**Units** **Legal Range** **Default** **Required** **Variability** + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ---------------------------------- ---------------------- -------------- ----------------- + gpm *x* > 0; *x* $\neq$ *ctGpmDs* (sum of pumps)/*ctN* No constant ---- - -gpm _x_ > 0; _x_ $\neq$ _ctGpmDs_ (sum of pumps)/_ctN_ No constant - -**ctTDbOOd=_float_** +**ctTDbOOd=*float*** Off-design outdoor drybulb temperature. -**Units** **Legal Range** **Default** **Required** **Variability** - ---- - -^o^F _x_ > 0 93.5 No constant + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ------------- -------------- ----------------- + ^o^F *x* > 0 93.5 No constant -**ctTWbOOd=_float_** +**ctTWbOOd=*float*** Off-design outdoor wetbulb temperature. -**Units** **Legal Range** **Default** **Required** **Variability** + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ------------- -------------- ----------------- + ^o^F *x* > 0 78 No constant ---- - -^o^F _x_ > 0 78 No constant - -**ctTwoOd=_float_** +**ctTwoOd=*float*** Off-design leaving water temperature. -**Units** **Legal Range** **Default** **Required** **Variability** - ---- - -^o^F _x_ > 0 85 No constant + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ------------- -------------- ----------------- + ^o^F *x* > 0 85 No constant The following item allows explicit specification of the relationship between flows and heat transfer, when the preceding "off design" inputs are not given. If omitted, it will be computed from the "off design" inputs if given, else the default value of 0.4 will be used. -**ctK=_float_** +**ctK=*float*** Optional. Exponent in the formula @@ -309,64 +257,52 @@ $$\text{ntuA} = k \cdot (mwi/ma)^{ctK}$$ where ntuA is the number of transfer units on the air side, mwi and ma are the water and air flows respectively, and k is a constant. -**Units** **Legal Range** **Default** **Required** **Variability** - ---- - + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ------------------- ---------------------------------------- -------------- ----------------- 0 < *x* < 1 *from "Od" members if given, else* 0.4 No constant -**ctStkFlFr=_float_** - -Fraction of air flow which occurs when tower fan is off, due to stack effect (convection). Cooling due to this air flow occurs in all towers whenever the water flow is on, and may, by itself, cool the water below the setpoint _tpTsSp_. Additional flow, when fan is on, is proportional to fan speed. - -**Units** **Legal Range** **Default** **Required** **Variability** +**ctStkFlFr=*float*** ---- +Fraction of air flow which occurs when tower fan is off, due to stack effect (convection). Cooling due to this air flow occurs in all towers whenever the water flow is on, and may, by itself, cool the water below the setpoint *tpTsSp*. Additional flow, when fan is on, is proportional to fan speed. + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- --------------------- ------------- -------------- ----------------- 0 $\le$ *x* $\le$ 1 .18 No constant The following items allow CSE to compute the effect of makeup water on the leaving water temperature. -**ctBldn=_float_** +**ctBldn=*float*** Blowdown rate: fraction of inflowing water that is bled from the sump down the drain, to reduce the buildup of impurities that don't evaporate. -**Units** **Legal Range** **Default** **Required** **Variability** - ---- - + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- --------------------- ------------- -------------- ----------------- 0 $\le$ *x* $\le$ 1 .01 No constant -**ctDrft=_float_** +**ctDrft=*float*** Drift rate: fraction of inflowing water that is blown out of tower as droplets without evaporating. -**Units** **Legal Range** **Default** **Required** **Variability** - ---- - + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- --------------------- ------------- -------------- ----------------- 0 $\le$ *x* $\le$ 1 0 No constant -**ctTWm=_float_** +**ctTWm=*float*** Temperature of makeup water from mains, used to replace water lost by blowdown, drift, and evaporation. Blowdown and drift are given by the preceding two inputs; evaporation is computed. -**Units** **Legal Range** **Default** **Required** **Variability** - ---- - -^o^F _x_ > 0 60 No constant + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ------------- -------------- ----------------- + ^o^F *x* > 0 60 No constant **endTowerplant** Optionally indicates the end of the TOWERPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. -**Units** **Legal Range** **Default** **Required** **Variability** - ---- - + **Units** **Legal Range** **Default** **Required** **Variability** + ----------- ----------------- ------------- -------------- ----------------- *N/A* No constant **Related Probes:** -- @[towerPlant][p_towerplant] +- @[towerPlant](#p_towerplant) diff --git a/doc/src/docs/input-data/window.md b/doc/src/docs/input-data/window.md index 87b2364cb..ef0c1b9cf 100644 --- a/doc/src/docs/input-data/window.md +++ b/doc/src/docs/input-data/window.md @@ -1,6 +1,6 @@ # WINDOW -WINDOW defines a subobject belonging to the current SURFACE that represents one or more identical windows. The azimuth, tilt, and exterior conditions of the window are the same as those of the surface to which it belongs. The total window area (_wnHt_ $\cdot$ _wnWid_ $\cdot$ _wnMult_) is deducted from the gross surface area. A surface may have any number of windows. +WINDOW defines a subobject belonging to the current SURFACE that represents one or more identical windows. The azimuth, tilt, and exterior conditions of the window are the same as those of the surface to which it belongs. The total window area (*wnHt* $\cdot$ *wnWid* $\cdot$ *wnMult*) is deducted from the gross surface area. A surface may have any number of windows. Windows may optionally have operable interior shading that reduces the overall shading coefficient when closed. @@ -9,78 +9,78 @@ Windows may optionally have operable interior shading that reduces the overall s Name of window: follows the word "WINDOW" if given. <%= member_table( -units: "", -legal_range: "_63 characters_", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") + %> -**wnHeight=_float_** +**wnHeight=*float*** Overall height of window (including frame). <%= member_table( -units: "ft", -legal_range: "x $>$ 0", -default: "_none_", -required: "Yes", -variability: "constant") -%> + units: "ft", + legal_range: "x $>$ 0", + default: "*none*", + required: "Yes", + variability: "constant") + %> -**wnWidth=_float_** +**wnWidth=*float*** Overall width of window (including frame). <%= member_table( -units: "ft", -legal_range: "x $>$ 0", -default: "_none_", -required: "Yes", -variability: "constant") -%> + units: "ft", + legal_range: "x $>$ 0", + default: "*none*", + required: "Yes", + variability: "constant") + %> -**wnArea=_float_** +**wnArea=*float*** Overall area of window (including frame). <%= member_table( -units: "ft^2^", -legal_range: "x $>$ 0", -default: "_wnHeight_ \* _wnWidth_", -required: "No", -variability: "constant") -%> + units: "ft^2^", + legal_range: "x $>$ 0", + default: "*wnHeight* \* *wnWidth*", + required: "No", + variability: "constant") + %> -**wnMult=_float_** +**wnMult=*float*** Area multiplier; can be used to represent multiple identical windows. <%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "1", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "x $>$ 0", + default: "1", + required: "No", + variability: "constant") + %> -**wnModel=_choice_** +**wnModel=*choice*** Selects window model <%= member_table( -units: "", -legal_range: "SHGC, ASHWAT", -default: "SHGC", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "SHGC, ASHWAT", + default: "SHGC", + required: "No", + variability: "constant") + %> -**wnGt=_choice_** +**wnGt=*choice*** GLAZETYPE for window. Provides many defaults for window properties as cited below. -**wnU=_float_** +**wnU=*float*** Window conductance (U-factor without surface films, therefore not actually a U-factor but a C-factor). @@ -93,50 +93,50 @@ Where 0.85 is the sum of the interior (0.68) and exterior (0.17) design air film Approach 2. Enter wnU=U-factor and let the wnInH and wnExH default. Tnormally this approach systematically underestimates the window U-factor because it adds the wnExfilm resistance to 1/U-factor thereby double counting the exterior film resistance. This approach will also yield incorrect results for gnFrad internal gain since the high wnInH will put almost all the gain back in the space. <%= member_table( -units: "Btuh/ft^2^-^o^F", -legal_range: "x $>$ 0", -default: "_none_", -required: "Yes", -variability: "constant") -%> + units: "Btuh/ft^2^-^o^F", + legal_range: "x $>$ 0", + default: "*none*", + required: "Yes", + variability: "constant") + %> -**wnUNFRC=_float_** +**wnUNFRC=*float*** Fenestration system (including frame) U-factor evaluated at NFRC heating conditions. <%= member_table( -units: "Btuh/ft^2^-^o^F", -legal_range: "x $>$ 0", -default: "gtUNFRC", -required: "Required when _wnModel_ = ASHWAT", -variability: "constant") -%> + units: "Btuh/ft^2^-^o^F", + legal_range: "x $>$ 0", + default: "gtUNFRC", + required: "Required when *wnModel* = ASHWAT", + variability: "constant") + %> -**wnExEpsLW=_float_** +**wnExEpsLW=*float*** Window exterior long wave (thermal) emittance. <%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.84", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "0.84", + required: "No", + variability: "constant") + %> -**wnInEpsLW=_float_** +**wnInEpsLW=*float*** Window interior long wave (thermal) emittance. <%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.84", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "0.84", + required: "No", + variability: "constant") + %> -**wnInH=_float_** +**wnInH=*float*** Window interior surface (air film) conductance. @@ -149,244 +149,244 @@ Preferred Approach: Enter the appropriate value for each window, normally: The large default value of 10,000 represents a near-0 resistance, for the convenience of those who wish to include the interior surface film in wnU according to approach 2 above. <%= member_table( -units: "Btuh/ft^2^-^o^F", -legal_range: "x $>$ 0", -default: "10000", -required: "No", -variability: "constant") -%> + units: "Btuh/ft^2^-^o^F", + legal_range: "x $>$ 0", + default: "10000", + required: "No", + variability: "constant") + %> -**wnExH=_float_** +**wnExH=*float*** Window exterior surface (air film) conductance. <%= member_table( -units: "Btuh/ft^2^-^o^F", -legal_range: "x $>$ 0", -default: "same as owning surface", -required: "No", -variability: "constant") -%> + units: "Btuh/ft^2^-^o^F", + legal_range: "x $>$ 0", + default: "same as owning surface", + required: "No", + variability: "constant") + %> -Several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on wnExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. +Several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on wnExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. <%= csv_table(< true) Model, Exposed to ambient, Exposed to zone -UNIFIED, default CSE model, default CSE model -INPUT , hc = wnExHcMult, hc = wnxxHcMult -AKBARI , Akbari model, n/a -WALTON , Walton model, n/a -WINKELMANN, Winkelmann model, n/a -MILLS , n/a , Mills model -ASHRAE , n/a , ASHRAE handbook values +UNIFIED, default CSE model, default CSE model +INPUT , hc = wnExHcMult, hc = wnxxHcMult +AKBARI , Akbari model, n/a +WALTON , Walton model, n/a +WINKELMANN, Winkelmann model, n/a +MILLS , n/a , Mills model +ASHRAE , n/a , ASHRAE handbook values END %> -**wnExHcModel=_choice_** +**wnExHcModel=*choice*** -Selects the model used for exterior surface convection when wnModel = Forward_Difference. +Selects the model used for exterior surface convection when wnModel = Forward\_Difference. <%= member_table( -units: "", -legal_range: "_choices above_", -default: "UNIFIED", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "*choices above*", + default: "UNIFIED", + required: "No", + variability: "constant") + %> -**wnExHcLChar=_float_** +**wnExHcLChar=*float*** Characteristic length of surface, used in derivation of forced exterior convection coefficients in some models when outside face is exposed to ambient (i.e. to wind). <%= member_table( -units: "ft", -legal_range: "x $>$ 0", -default: "10", -required: "No", -variability: "constant") -%> + units: "ft", + legal_range: "x $>$ 0", + default: "10", + required: "No", + variability: "constant") + %> -**wnExHcMult=_float_** +**wnExHcMult=*float*** -Exterior convection coefficient adjustment factor. When wnExHcModel=INPUT, hc=wnExHcMult. For other wnExHcModel choices, the model-derived hc is multiplied by wnExHcMult. +Exterior convection coefficient adjustment factor. When wnExHcModel=INPUT, hc=wnExHcMult. For other wnExHcModel choices, the model-derived hc is multiplied by wnExHcMult. <%= member_table( -units: "", -legal_range: "x $\\ge$ 0", -default: "1", -required: "No", -variability: "subhourly") -%> + units: "", + legal_range: "x $\\ge$ 0", + default: "1", + required: "No", + variability: "subhourly") + %> -**wnInHcModel=_choice_** +**wnInHcModel=*choice*** -Selects the model used for the inside (zone) surface convection when wnModel = Forward_Difference. +Selects the model used for the inside (zone) surface convection when wnModel = Forward\_Difference. <%= member_table( -units: "", -legal_range: "_choices above (see wnExHcModel)_", -default: "UNIFIED", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "*choices above (see wnExHcModel)*", + default: "UNIFIED", + required: "No", + variability: "constant") + %> -**wnInHcMult=_float_** +**wnInHcMult=*float*** -Interior convection coefficient adjustment factor. When wnInHcModel=INPUT, hc=wnInHcMult. For other wnInHcModel choices, the model-derived hc is multiplied by wnInHcMult. +Interior convection coefficient adjustment factor. When wnInHcModel=INPUT, hc=wnInHcMult. For other wnInHcModel choices, the model-derived hc is multiplied by wnInHcMult. <%= member_table( -units: "", -legal_range: "x $\\ge$ 0", -default: "1", -required: "No", -variability: "subhourly") -%> + units: "", + legal_range: "x $\\ge$ 0", + default: "1", + required: "No", + variability: "subhourly") + %> -**wnSHGC=_float_** +**wnSHGC=*float*** Rated Solar Heat Gain Coefficient (SHGC) for the window assembly. <%= member_table( -units: "fraction", -legal_range: "0 < x < 1", -default: "gtSHGC", -required: "No", -variability: "constant") -%> + units: "fraction", + legal_range: "0 < x < 1", + default: "gtSHGC", + required: "No", + variability: "constant") + %> -**wnFMult=_float_** +**wnFMult=*float*** Frame area multiplier = areaGlaze / areaAssembly <%= member_table( -units: "fraction", -legal_range: "0 < x < 1", -default: "gtFMult or 1", -required: "No", -variability: "constant") -%> + units: "fraction", + legal_range: "0 < x < 1", + default: "gtFMult or 1", + required: "No", + variability: "constant") + %> -**wnSMSO=_float_** +**wnSMSO=*float*** SHGC multiplier with shades open. Overrides gtSMSO. <%= member_table( -units: "fraction", -legal_range: "0 $\\leq$ _x_ $\\leq$ 1", -default: "gtSMSO or 1", -required: "No", -variability: "Monthly - Hourly") -%> + units: "fraction", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "gtSMSO or 1", + required: "No", + variability: "Monthly - Hourly") + %> -**wnSMSC=_float_** +**wnSMSC=*float*** SHGC multiplier with shades closed. Overrides gtSMSC <%= member_table( -units: "fraction", -legal_range: "0 $\leq$ _x_ $\leq$ 1", -default: "wnSMSO or gtSMSC", -required: "No", -variability: "Monthly - Hourly") -%> + units: "fraction", + legal_range: "0 $\leq$ *x* $\leq$ 1", + default: "wnSMSO or gtSMSC", + required: "No", + variability: "Monthly - Hourly") + %> -**wnNGlz=_int_** +**wnNGlz=*int*** Number of glazings in the window (bare glass only, not including any interior or exterior shades). <%= member_table( -units: "", -legal_range: "0 $<$ _x_ $\leq$ 4", -default: "gtNGLZ", -required: "Required when _wnModel_ = ASHWAT", -variability: "constant") -%> + units: "", + legal_range: "0 $<$ *x* $\leq$ 4", + default: "gtNGLZ", + required: "Required when *wnModel* = ASHWAT", + variability: "constant") + %> -**wnExShd=_choice_** +**wnExShd=*choice*** Exterior shading type (ASHWAT only). <%= member_table( -units: "", -legal_range: "NONE, INSCRN", -default: "gtExShd", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "NONE, INSCRN", + default: "gtExShd", + required: "No", + variability: "constant") + %> -**wnInShd=_choice_** +**wnInShd=*choice*** Interior shade type (ASHWAT only). <%= member_table( -units: "", -legal_range: "NONE, DRAPEMED", -default: "gtInShd", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "NONE, DRAPEMED", + default: "gtInShd", + required: "No", + variability: "constant") + %> -**wnDirtLoss=_float_** +**wnDirtLoss=*float*** Glazing dirt loss factor. <%= member_table( -units: "fraction", -legal_range: "0 $\\leq$ _x_ $\\leq$ 1", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "fraction", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "*none*", + required: "No", + variability: "constant") + %> -**wnGrndRefl=_float_** +**wnGrndRefl=*float*** Ground reflectivity for this window. <%= member_table( -units: "fraction", -legal_range: "0 $\\leq$ _x_ $\\leq$ 1", -default: "sfGrndRefl", -required: "No", -variability: "Monthly - Hourly") -%> + units: "fraction", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "sfGrndRefl", + required: "No", + variability: "Monthly - Hourly") + %> -**wnVfSkyDf=_float_** +**wnVfSkyDf=*float*** View factor from this window to sky for diffuse radiation. For the shading effects of an overhang, a wnVfSkyDf value smaller than the default would be used <%= member_table( -units: "fraction", -legal_range: "0 $\\leq$ x $\\leq$ 1", -default: "0.5 - 0.5 cos(tilt) = .5 for vertical surface", -required: "No", -variability: "Monthly - Hourly") -%> + units: "fraction", + legal_range: "0 $\\leq$ x $\\leq$ 1", + default: "0.5 - 0.5 cos(tilt) = .5 for vertical surface", + required: "No", + variability: "Monthly - Hourly") + %> -**wnVfGrndDf=_float_** +**wnVfGrndDf=*float*** View factor from this window to ground for diffuse radiation. For the shading effects of a fin(s), both wnVfSkyDf and wnVfGrndDf would be used. <%= member_table( -units: "fraction", -legal_range: "0 $\\leq$ x $\\leq$ 1", -default: "0.5 + 0.5 .5 for vertical surface", -required: "No", -variability: "Monthly - Hourly") -%> + units: "fraction", + legal_range: "0 $\\leq$ x $\\leq$ 1", + default: "0.5 + 0.5 .5 for vertical surface", + required: "No", + variability: "Monthly - Hourly") + %> **endWINDOW** Optionally indicates the end of the window definition. Alternatively, the end of the window definition can be indicated by END or the declaration of another object. END or endWindow, if used, should follow any subobjects of the window (SHADEs and/or SGDISTs). <%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[window][p_window] -- @[xsurf][p_xsurf] +- @[window](#p_window) +- @[xsurf](#p_xsurf) diff --git a/doc/src/docs/input-data/zone.md b/doc/src/docs/input-data/zone.md index 2ed208062..39bbd6ac4 100644 --- a/doc/src/docs/input-data/zone.md +++ b/doc/src/docs/input-data/zone.md @@ -8,412 +8,412 @@ ZONE constructs an object of class ZONE, which describes an area of the building Name of zone. Enter after the word ZONE; no "=" is used. -<%= member*table( -units: "", -legal_range: "\_63 characters*", -default: "_none_", -required: "Yes", -variability: "constant") -%> +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "Yes", + variability: "constant") + %> -**znModel=_choice_** +**znModel=*choice*** Selects model for zone. <%= csv_table(< false) -CNE, Older central difference model based on original CALPAS methods. Not fully supported and not suitable for current compliance applications. +CNE, Older central difference model based on original CALPAS methods. Not fully supported and not suitable for current compliance applications. CZM, Conditioned zone model. Forward-difference, short time step methods are used. UZM, Unconditioned zone model. Identical to CZM except heating and cooling are not supported. Typically used for attics, garages, and other ancillary spaces. END %> -<%= member*table( -units: "", -legal_range: "\_choices above*", -default: "CNE", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "", + legal_range: "*choices above*", + default: "CNE", + required: "No", + variability: "constant") + %> -**znArea=_float_** +**znArea=*float*** Nominal zone floor area. -<%= member*table( -units: "ft^2^", -legal_range: "\_x* $>$ 0", -default: "_none_", -required: "Yes", -variability: "constant") -%> +<%= member_table( + units: "ft^2^", + legal_range: "*x* $>$ 0", + default: "*none*", + required: "Yes", + variability: "constant") + %> -**znVol=_float_** +**znVol=*float*** Nominal zone volume. -<%= member*table( -units: "ft^3^", -legal_range: "\_x* $>$ 0", -default: "_none_", -required: "Yes", -variability: "constant") -%> +<%= member_table( + units: "ft^3^", + legal_range: "*x* $>$ 0", + default: "*none*", + required: "Yes", + variability: "constant") + %> -**znAzm=_float_** +**znAzm=*float*** Zone azimuth with respect to bldgAzm. All surface azimuths are relative to znAzm, so that the zone can be rotated by changing this member only. Values outside the range 0^o^ to 360^o^ are normalized to that range. <%= member_table( -units: "degrees", -legal_range: "unrestricted", -default: "0", -required: "No", -variability: "constant") -%> + units: "degrees", + legal_range: "unrestricted", + default: "0", + required: "No", + variability: "constant") + %> -**znFloorZ=_float_** +**znFloorZ=*float*** Nominal zone floor height relative to arbitrary 0 level. Used re determination of vent heights <%= member_table( -units: "ft", -legal_range: "unrestricted", -default: "0", -required: "No", -variability: "constant") -%> + units: "ft", + legal_range: "unrestricted", + default: "0", + required: "No", + variability: "constant") + %> -**znCeilingHt=_float_** +**znCeilingHt=*float*** Nominal zone ceiling height relative to zone floor (typically 8 – 10 ft). -<%= member*table( -units: "ft", -legal_range: "\_x* $>$ 0", -default: "_znVol_ / _znArea_", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "ft", + legal_range: "*x* $>$ 0", + default: "*znVol* / *znArea*", + required: "No", + variability: "constant") + %> -**znEaveZ=_float_** +**znEaveZ=*float*** Nominal eave height above ground level. Used re calculation of local surface wind speed. This in turn influences outside convection coefficients in some surface models and wind-driven air leakage. -<%= member*table( -units: "ft", -legal_range: "x $>$ 0", -default: "\_znFloorZ + infStories\*8*", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "ft", + legal_range: "x $>$ 0", + default: "*znFloorZ + infStories\*8*", + required: "No", + variability: "constant") + %> -**znCAir=_float_** +**znCAir=*float*** Zone "air" heat capacity: represents heat capacity of air, furniture, "light" walls, and everything in zone except surfaces having heat capacity (that is, non-QUICK surfaces). -<%= member*table( -units: "Btu/^o^F", -legal_range: "x $\\geq$ 0", -default: "3.5 \* \_znArea*", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "Btu/^o^F", + legal_range: "x $\\geq$ 0", + default: "3.5 \* *znArea*", + required: "No", + variability: "constant") + %> -**znHcAirX=_float_** +**znHcAirX=*float*** -Zone air exchange rate used in determination of interior surface convective coefficients. This item is generally used only for model testing. +Zone air exchange rate used in determination of interior surface convective coefficients. This item is generally used only for model testing. <%= member_table( -units: "ACH", -legal_range: "x $>$ 0", -default: "as modeled", -required: "No", -variability: "subhourly") -%> + units: "ACH", + legal_range: "x $>$ 0", + default: "as modeled", + required: "No", + variability: "subhourly") + %> -**znHcFrcF=_float_** +**znHcFrcF=*float*** -Zone surface forced convection factor. Interior surface convective transfer is modeled as a combination of forced and natural convection. hcFrc = znHcFrcF \* znHcAirX^.8. See CSE Engineering Documentation. +Zone surface forced convection factor. Interior surface convective transfer is modeled as a combination of forced and natural convection. hcFrc = znHcFrcF * znHcAirX^.8. See CSE Engineering Documentation. <%= member_table( -units: "Btuh/ft^2^-^o^F", -legal_range: ".2", -default: ".2", -required: "No", -variability: "hourly") -%> + units: "Btuh/ft^2^-^o^F", + legal_range: ".2", + default: ".2", + required: "No", + variability: "hourly") + %> -**znHIRatio=_float_** +**znHIRatio=*float*** -Zone hygric inertia ratio. In zone moisture balance calculations, the effective dry-air mass = znHIRatio \* (zone dry air mass). This enhancement can be used to represente the moisture storage capacity of zone surfaces and contents. +Zone hygric inertia ratio. In zone moisture balance calculations, the effective dry-air mass = znHIRatio * (zone dry air mass). This enhancement can be used to represente the moisture storage capacity of zone surfaces and contents. <%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "1", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "x $>$ 0", + default: "1", + required: "No", + variability: "constant") + %> -**znSC=_float_** +**znSC=*float*** -Zone shade closure. Determines insolation through windows (see WINDOW members _wnSCSO_ and _wnSCSC_) and solar gain distribution: see SGDIST members _sgFSO_ and _sgFSC_. 0 represents shades open; 1 represents shades closed; intermediate values are allowed. An hourly variable CSE expression may be used to schedule shade closure as a function of weather, time of year, previous interval HVAC use or zone temperature, etc. +Zone shade closure. Determines insolation through windows (see WINDOW members *wnSCSO* and *wnSCSC*) and solar gain distribution: see SGDIST members *sgFSO* and *sgFSC*. 0 represents shades open; 1 represents shades closed; intermediate values are allowed. An hourly variable CSE expression may be used to schedule shade closure as a function of weather, time of year, previous interval HVAC use or zone temperature, etc. -<%= member*table( -units: "", -legal_range: "0 $\\leq$ \_x* $\\leq$ 1", -default: "1 when cooling was used in _previous_ hour, else 0", -required: "No", -variability: "hourly") -%> +<%= member_table( + units: "", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "1 when cooling was used in *previous* hour, else 0", + required: "No", + variability: "hourly") + %> -**znTH=_float_** +**znTH=*float*** Heating set point used (and required) when znModel=CZM and zone has no terminals. -<%= member*table( -units: "^o^F", -legal_range: "0 < znTH < znTC", -default: "\_none*", -required: "Per above", -variability: "subhourly") -%> +<%= member_table( + units: "^o^F", + legal_range: "0 < znTH < znTC", + default: "*none*", + required: "Per above", + variability: "subhourly") + %> -**znTD=_float_** +**znTD=*float*** -Desired set point (temperature maintained with ventilation if possible) for znModel=CZM. Must be specified when zone ventilation is active. +Desired set point (temperature maintained with ventilation if possible) for znModel=CZM. Must be specified when zone ventilation is active. -<%= member*table( -units: "^o^F", -legal_range: "x > 0; znTH < znTD < znTC", -default: "\_none*", -required: "if venting", -variability: "subhourly") -%> +<%= member_table( + units: "^o^F", + legal_range: "x > 0; znTH < znTD < znTC", + default: "*none*", + required: "if venting", + variability: "subhourly") + %> -**znTC=_float_** +**znTC=*float*** Cooling set point used (and required) when znModel=CZM and zone has no terminals. -<%= member*table( -units: "^o^F", -legal_range: "0 < znTC > znTH", -default: "\_none*", -required: "Per above", -variability: "subhourly") -%> +<%= member_table( + units: "^o^F", + legal_range: "0 < znTC > znTH", + default: "*none*", + required: "Per above", + variability: "subhourly") + %> -znModel = CZM zone heating and cooling is provided either via an RSYS HVAC system, by "magic" heat transfers specified by znQxxx items, or via TERMINAL (s). One of these must be defined. +znModel = CZM zone heating and cooling is provided either via an RSYS HVAC system, by "magic" heat transfers specified by znQxxx items, or via TERMINAL (s). One of these must be defined. -**znRSys=_rsysName_** +**znRSys=*rsysName*** Name of RSYS providing heating, cooling, and optional central fan integrated ventilation to this zone. -<%= member*table( -units: "", -legal_range: "\_RSYS name*", -default: "(no RSYS)", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "", + legal_range: "*RSYS name*", + default: "(no RSYS)", + required: "No", + variability: "constant") + %> -**znQMxH=_float_** +**znQMxH=*float*** Heating capacity at current conditions -<%= member*table( -units: "Btuh", -legal_range: "x $\\geq$ 0", -default: "\_none*", -required: "No", -variability: "hourly") -%> +<%= member_table( + units: "Btuh", + legal_range: "x $\\geq$ 0", + default: "*none*", + required: "No", + variability: "hourly") + %> -**znQMxHRated=_float_** +**znQMxHRated=*float*** Rated heating capacity -<%= member*table( -units: "Btuh", -legal_range: "x $\\geq$ 0", -default: "\_none*", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "Btuh", + legal_range: "x $\\geq$ 0", + default: "*none*", + required: "No", + variability: "constant") + %> -**znQMxC=_float_** +**znQMxC=*float*** Cooling capacity at current conditions -<%= member*table( -units: "Btuh", -legal_range: "x $\\leq$ 0", -default: "\_none*", -required: "No", -variability: "hourly") -%> +<%= member_table( + units: "Btuh", + legal_range: "x $\\leq$ 0", + default: "*none*", + required: "No", + variability: "hourly") + %> -**znQMxCRated=_float_** +**znQMxCRated=*float*** Rated cooling capacity -<%= member*table( -units: "Btuh", -legal_range: "x $\\leq$ 0", -default: "\_none*", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "Btuh", + legal_range: "x $\\leq$ 0", + default: "*none*", + required: "No", + variability: "constant") + %> <% if comfort_model %> The following provide parameters for comfort calculations -**znComfClo=_float_** +**znComfClo=*float*** Occupant clothing resistance, used only when a comfort model is enabled. -<%= member*table( -units: "clo", -legal_range: "x $\\geq$ 0", -default: "\_none*", -required: "No", -variability: "subhourly") -%> +<%= member_table( + units: "clo", + legal_range: "x $\\geq$ 0", + default: "*none*", + required: "No", + variability: "subhourly") + %> -**znComfMet=_float_** +**znComfMet=*float*** Occupant metabolic rate, used only when a comfort model is enabled. -<%= member*table( -units: "met", -legal_range: "x $\\geq$ 0", -default: "\_none*", -required: "No", -variability: "hourly") -%> +<%= member_table( + units: "met", + legal_range: "x $\\geq$ 0", + default: "*none*", + required: "No", + variability: "hourly") + %> -**znComfAirV=_float_** +**znComfAirV=*float*** Nominal air velocity used for comfort model, used only when a comfort model is enabled. -<%= member*table( -units: "", -legal_range: "x $\\geq$ 0", -default: "\_none*", -required: "No", -variability: "Hourly") -%> +<%= member_table( + units: "", + legal_range: "x $\\geq$ 0", + default: "*none*", + required: "No", + variability: "Hourly") + %> -**znComfRh=_float_** +**znComfRh=*float*** Nominal zone relative humidity used for comfort model, used only when a comfort model is enabled. -<%= member*table( -units: "", -legal_range: "0 $\\leq$ \_x* $\\leq$ 1", -default: "_none_", -required: "No", -variability: "hourly") -%> +<%= member_table( + units: "", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "*none*", + required: "No", + variability: "hourly") + %> <% end %> ## ZONE Infiltration -The following control a simplified air change plus leakage area model. The Sherman-Grimsrud model is used to derive air flow rate from leakage area and this rate is added to the air changes specified with infAC. Note that TOP.windF does _not_ modify calculated infiltration rates, since the Sherman-Grimsrud model uses its own modifiers. See also AirNet models available via IZXFER. +The following control a simplified air change plus leakage area model. The Sherman-Grimsrud model is used to derive air flow rate from leakage area and this rate is added to the air changes specified with infAC. Note that TOP.windF does *not* modify calculated infiltration rates, since the Sherman-Grimsrud model uses its own modifiers. See also AirNet models available via IZXFER. -**infAC=_float_** +**infAC=*float*** Zone infiltration air changes per hour. <%= member_table( -units: "1/hr", -legal_range: "x $\\geq$ 0", -default: "0.5", -required: "No", -variability: "hourly") -%> + units: "1/hr", + legal_range: "x $\\geq$ 0", + default: "0.5", + required: "No", + variability: "hourly") + %> -**infELA=_float_** +**infELA=*float*** Zone effective leakage area (ELA). <%= member_table( -units: "in^2^", -legal_range: "x $\\geq$ 0", -default: "0.0", -required: "No", -variability: "hourly") -%> + units: "in^2^", + legal_range: "x $\\geq$ 0", + default: "0.0", + required: "No", + variability: "hourly") + %> -**infShld=_int_** +**infShld=*int*** Zone local shielding class, used in derivation of local wind speed for ELA infiltration model, wind-driven AirNet leakage, and exterior surface coefficients. infShld values are -- <%= csv_table(< false) -1, no obstructions or local shielding -2, light local shielding with few obstructions -3, moderate local shielding, some obstructions within two house heights -4, heavy shielding, obstructions around most of the perimeter -5, very heavy shielding, large obstructions surrounding the perimeter within two house heights + 1, no obstructions or local shielding + 2, light local shielding with few obstructions + 3, moderate local shielding, some obstructions within two house heights + 4, heavy shielding, obstructions around most of the perimeter + 5, very heavy shielding, large obstructions surrounding the perimeter within two house heights END %> -<%= member*table( -units: "", -legal_range: "1 $\\leq$ \_x* $\\leq$ 5", -default: "3", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "", + legal_range: "1 $\\leq$ *x* $\\leq$ 5", + default: "3", + required: "No", + variability: "constant") + %> -**infStories=_int_** +**infStories=*int*** Number of stories in zone, used in ELA model. -<%= member*table( -units: "", -legal_range: "1 $\\leq$ \_x* $\\leq$ 3", -default: "1", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "", + legal_range: "1 $\\leq$ *x* $\\leq$ 3", + default: "1", + required: "No", + variability: "constant") + %> -**znWindFLkg=_float_** +**znWindFLkg=*float*** -Wind speed modifier factor. The weather file wind speed is multiplied by this factor to yield a local wind speed for use in infiltration and convection models. +Wind speed modifier factor. The weather file wind speed is multiplied by this factor to yield a local wind speed for use in infiltration and convection models. <%= member_table( -units: "", -legal_range: "x $\\geq$ 0", -default: "derived from znEaveZ and infShld", -required: "No", -variability: "constant") -%> + units: "", + legal_range: "x $\\geq$ 0", + default: "derived from znEaveZ and infShld", + required: "No", + variability: "constant") + %> -**znAFMtr=_afMtrName_** +**znAFMtr=*afMtrName*** -Name of an AFMETER object, if any, to which zone AirNet air flows are recorded. _ZnAFMtr_ defines a pressure boundary for accounting purposes. Multiple zones having the same AFMETER are treated as a single volume -- interzone flows within that volume are not recorded. For example, to obtain "building total" flow data, a common AFMETER could be assigned to several conditioned zones but not to adjacent unconditioned zones such as attic spaces. +Name of an AFMETER object, if any, to which zone AirNet air flows are recorded. *ZnAFMtr* defines a pressure boundary for accounting purposes. Multiple zones having the same AFMETER are treated as a single volume -- interzone flows within that volume are not recorded. For example, to obtain "building total" flow data, a common AFMETER could be assigned to several conditioned zones but not to adjacent unconditioned zones such as attic spaces. -<%= member*table( -units: "", -legal_range: "\_name of an AFMETER*", -default: "_not recorded_", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "", + legal_range: "*name of an AFMETER*", + default: "*not recorded*", + required: "No", + variability: "constant") + %> -**znLoadMtr=_ldMtrName_** +**znLoadMtr=*ldMtrName*** Name of a LOADMETER object, if any, to which zone heating and cooling loads are recorded. -<%= member*table( -units: "", -legal_range: "\_name of a LOADMETER*", -default: "_not recorded_", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "", + legal_range: "*name of a LOADMETER*", + default: "*not recorded*", + required: "No", + variability: "constant") + %> ## ZONE Exhaust Fan @@ -421,110 +421,111 @@ Presence of an exhaust fan in a zone is indicated by specifying a non-zero desig Zone exhaust fan model implementation is incomplete as of July, 2011. The current code calculates energy use but does not account for the effects of air transfer on room heat balance. IZXFER provides a more complete implementation. -**xfanFOn=_float_** +**xfanFOn=*float*** Exhaust fan on fraction. On/off control assumed, so electricity requirement is proportional to run time. <%= member_table( -units: "fraction", -legal_range: "0 $\\leq$ x $\\leq$ 1", -default: "1", -required: "No", -variability: "hourly") -%> + units: "fraction", + legal_range: "0 $\\leq$ x $\\leq$ 1", + default: "1", + required: "No", + variability: "hourly") + %> Example: The following would run an exhaust fan 70% of the time between 8 AM and 5 PM: xfanFOn = select( (\$hour >= 7 && \$hour < 5), .7, default, 0 ); -**xfanVfDs=_float_** + +**xfanVfDs=*float*** Exhaust fan design flow; 0 or not given indicates no fan. <%= member_table( -units: "cfm", -legal_range: "x $\\geq$ 0", -default: "0, no fan", -required: "If fan present", -variability: "constant") -%> + units: "cfm", + legal_range: "x $\\geq$ 0", + default: "0, no fan", + required: "If fan present", + variability: "constant") + %> -**xfanPress=_float_** +**xfanPress=*float*** Exhaust fan external static pressure. -<%= member*table( -units: "inches", -legal_range: "0.05 $\\leq$ \_x* $\\leq$ 1.0", -default: "0.3", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "inches", + legal_range: "0.05 $\\leq$ *x* $\\leq$ 1.0", + default: "0.3", + required: "No", + variability: "constant") + %> Only one of xfanElecPwr, xfanEff, and xfanShaftBhp may be given: together with xfanVfDs and xfanPress, any one is sufficient for CSE to detemine the others and to compute the fan heat contribution to the air stream. -**xfanElecPwr=_float_** +**xfanElecPwr=*float*** Fan input power per unit air flow (at design flow and pressure). <%= member_table( -units: "W/cfm", -legal_range: "x $>$ 0", -default: "derived from xfanEff", -required: "If xfanEff and xfanShaftBhp not present", -variability: "constant") -%> + units: "W/cfm", + legal_range: "x $>$ 0", + default: "derived from xfanEff", + required: "If xfanEff and xfanShaftBhp not present", + variability: "constant") + %> -**xfanEff=_float_** +**xfanEff=*float*** Exhaust fan/motor/drive combined efficiency. <%= member_table( -units: "fraction", -legal_range: "0 $\\leq$ x $\\leq$ 1", -default: "0.08", -required: "No", -variability: "constant") -%> + units: "fraction", + legal_range: "0 $\\leq$ x $\\leq$ 1", + default: "0.08", + required: "No", + variability: "constant") + %> -**xfanShaftBhp=_float_** +**xfanShaftBhp=*float*** Fan shaft power at design flow and pressure. <%= member_table( -units: "BHP", -legal_range: "x $>$ 0", -default: "derived from xfanElecPwr and xfanVfDs", -required: "If xfanElecPwr not present", -variability: "constant") -%> + units: "BHP", + legal_range: "x $>$ 0", + default: "derived from xfanElecPwr and xfanVfDs", + required: "If xfanElecPwr not present", + variability: "constant") + %> -**xfanMtr=_mtrName_** +**xfanMtr=*mtrName*** Name of METER object, if any, by which fan's energy use is recorded (under end use category "fan"). -<%= member*table( -units: "", -legal_range: "\_name of a METER*", -default: "_not recorded_", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "", + legal_range: "*name of a METER*", + default: "*not recorded*", + required: "No", + variability: "constant") + %> **endZone** Indicates the end of the zone definition. Alternatively, the end of the zone definition can be indicated by the declaration of another object or by "END". If END or endZone is used, it should follow the definitions of the ZONE's subobjects such as GAINs, SURFACEs, TERMINALs, etc. -<%= member*table( -units: "", -legal_range: "", -default: "\_none*", -required: "No", -variability: "constant") -%> +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[zone][p_zone] -- @[znRes][p_znres] (accumulated results) +- @[zone](#p_zone) +- @[znRes](#p_znres) (accumulated results) From 6e0b22bf190a12a2951cfd04b5c57a5d2596c6b1 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Fri, 28 Feb 2025 15:47:27 -0700 Subject: [PATCH 010/117] Restore autoref syntax for links. --- doc/src/docs/input-data/afmeter.md | 4 ++-- doc/src/docs/input-data/airhandler.md | 4 ++-- doc/src/docs/input-data/battery.md | 2 +- doc/src/docs/input-data/boiler.md | 2 +- doc/src/docs/input-data/chiller.md | 2 +- doc/src/docs/input-data/construction.md | 2 +- doc/src/docs/input-data/coolplant.md | 2 +- doc/src/docs/input-data/descond.md | 2 +- doc/src/docs/input-data/dhwdayuse.md | 2 +- doc/src/docs/input-data/dhwheater-doc.md | 2 +- doc/src/docs/input-data/dhwloop.md | 2 +- doc/src/docs/input-data/dhwloopbranch.md | 2 +- doc/src/docs/input-data/dhwlooppump.md | 2 +- doc/src/docs/input-data/dhwloopseg.md | 2 +- doc/src/docs/input-data/dhwmeter.md | 4 ++-- doc/src/docs/input-data/dhwpump.md | 2 +- doc/src/docs/input-data/dhwsys.md | 2 +- doc/src/docs/input-data/dhwtank.md | 2 +- doc/src/docs/input-data/dhwuse.md | 4 ++-- doc/src/docs/input-data/doas.md | 2 +- doc/src/docs/input-data/door.md | 6 +++--- doc/src/docs/input-data/ductseg.md | 4 ++-- doc/src/docs/input-data/export.md | 2 +- doc/src/docs/input-data/exportcol.md | 2 +- doc/src/docs/input-data/exportfile.md | 2 +- doc/src/docs/input-data/gain.md | 2 +- doc/src/docs/input-data/glazetype.md | 2 +- doc/src/docs/input-data/heatplant.md | 2 +- doc/src/docs/input-data/holiday.md | 2 +- doc/src/docs/input-data/importfile.md | 8 ++++---- doc/src/docs/input-data/izxfer.md | 2 +- doc/src/docs/input-data/layer.md | 2 +- doc/src/docs/input-data/loadmeter.md | 2 +- doc/src/docs/input-data/material.md | 2 +- doc/src/docs/input-data/meter.md | 2 +- doc/src/docs/input-data/perimeter.md | 4 ++-- doc/src/docs/input-data/pvarray.md | 8 ++++---- doc/src/docs/input-data/report.md | 2 +- doc/src/docs/input-data/reportcol.md | 2 +- doc/src/docs/input-data/reportfile.md | 2 +- doc/src/docs/input-data/rsys.md | 6 +++--- doc/src/docs/input-data/sgdist.md | 2 +- doc/src/docs/input-data/shade.md | 2 +- doc/src/docs/input-data/shadex.md | 8 ++++---- doc/src/docs/input-data/surface.md | 6 +++--- doc/src/docs/input-data/terminal.md | 4 ++-- doc/src/docs/input-data/top-members.md | 12 ++++++------ doc/src/docs/input-data/towerplant.md | 2 +- doc/src/docs/input-data/window.md | 4 ++-- doc/src/docs/input-data/zone.md | 4 ++-- 50 files changed, 79 insertions(+), 79 deletions(-) diff --git a/doc/src/docs/input-data/afmeter.md b/doc/src/docs/input-data/afmeter.md index d9097731a..d1d305423 100644 --- a/doc/src/docs/input-data/afmeter.md +++ b/doc/src/docs/input-data/afmeter.md @@ -8,7 +8,7 @@ If any AFMETERs are defined, an additional AFMETER "sum_of_AFMETERs" is automati Note that *only* AirNet flows are recorded. -AFMETER results can be REPORTed using rpType=AFMTR (or EXPORTed using exType=AFMTR). See [Air Flow Meter Report](#air-flow-meter-report). +AFMETER results can be REPORTed using rpType=AFMTR (or EXPORTed using exType=AFMTR). See [Air Flow Meter Report][air-flow-meter-report]. **afMtrName** @@ -37,4 +37,4 @@ Indicates the end of the meter definition. Alternatively, the end of the meter d **Related Probes:** -- @[afmeter](#p_afmeter) +- @[afmeter][p_afmeter] diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index 8dc295cea..83558dd5b 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -1789,5 +1789,5 @@ variability: "constant") %> **Related Probes:** -- @[airHandler](#p_airhandler) -- @[ahRes](#p_ahres) (accumulated results) +- @[airHandler][p_airhandler] +- @[ahRes][p_ahres] (accumulated results) diff --git a/doc/src/docs/input-data/battery.md b/doc/src/docs/input-data/battery.md index 8377f5130..7d358d844 100644 --- a/doc/src/docs/input-data/battery.md +++ b/doc/src/docs/input-data/battery.md @@ -185,4 +185,4 @@ SOE **Related Probes:** -- @[battery](#p_battery) +- @[battery][p_battery] diff --git a/doc/src/docs/input-data/boiler.md b/doc/src/docs/input-data/boiler.md index d5b04fa21..8deb9d6af 100644 --- a/doc/src/docs/input-data/boiler.md +++ b/doc/src/docs/input-data/boiler.md @@ -248,4 +248,4 @@ Optionally indicates the end of the boiler definition. Alternatively, the end of **Related Probes:** -- @[boiler](#p_boiler) +- @[boiler][p_boiler] diff --git a/doc/src/docs/input-data/chiller.md b/doc/src/docs/input-data/chiller.md index 1a34226b2..ca0d43cd5 100644 --- a/doc/src/docs/input-data/chiller.md +++ b/doc/src/docs/input-data/chiller.md @@ -363,4 +363,4 @@ Optionally indicates the end of the CHILLER definition. Alternatively, the end o **Related Probes:** -- @[chiller](#p_chiller) +- @[chiller][p_chiller] diff --git a/doc/src/docs/input-data/construction.md b/doc/src/docs/input-data/construction.md index 4e773de7e..34a4621ae 100644 --- a/doc/src/docs/input-data/construction.md +++ b/doc/src/docs/input-data/construction.md @@ -40,4 +40,4 @@ Optional to indicates the end of the CONSTRUCTION. Alternatively, the end of the **Related Probes:** -- @[construction](#p_construction) +- @[construction][p_construction] diff --git a/doc/src/docs/input-data/coolplant.md b/doc/src/docs/input-data/coolplant.md index 99d273bcd..912ba44c6 100644 --- a/doc/src/docs/input-data/coolplant.md +++ b/doc/src/docs/input-data/coolplant.md @@ -106,4 +106,4 @@ Optionally indicates the end of the COOLPLANT definition. Alternatively, the end **Related Probes:** -- @[coolPlant](#p_coolplant) +- @[coolPlant][p_coolplant] diff --git a/doc/src/docs/input-data/descond.md b/doc/src/docs/input-data/descond.md index 15b95eace..a775030b9 100644 --- a/doc/src/docs/input-data/descond.md +++ b/doc/src/docs/input-data/descond.md @@ -1,6 +1,6 @@ # DESCOND -Specifies conditions for a cooling design day. When referenced in TOP coolDsCond (see [TOP Autosizing](#top-autosizing)), DESCOND members are used to generate a 24 hour design day used during cooling autosizing. Note that coolDsCond can reference more than one DESCOND, allowing multiple design conditions to be used for autosizing. For example, both summer and fall days could be specified to ensure a range of sun angles are considered. Any DESCONDs that are not referenced in coolDsCond have no effect. +Specifies conditions for a cooling design day. When referenced in TOP coolDsCond (see [TOP Autosizing][top-autosizing]), DESCOND members are used to generate a 24 hour design day used during cooling autosizing. Note that coolDsCond can reference more than one DESCOND, allowing multiple design conditions to be used for autosizing. For example, both summer and fall days could be specified to ensure a range of sun angles are considered. Any DESCONDs that are not referenced in coolDsCond have no effect. **desCondName** diff --git a/doc/src/docs/input-data/dhwdayuse.md b/doc/src/docs/input-data/dhwdayuse.md index 32bccc406..b0ceee926 100644 --- a/doc/src/docs/input-data/dhwdayuse.md +++ b/doc/src/docs/input-data/dhwdayuse.md @@ -86,4 +86,4 @@ Indicates the end of the DHWDAYUSE definition. endDHWDAYUSE should follow all c **Related Probes:** -- @[DHWDayUse](#p_dhwdayuse) +- @[DHWDayUse][p_dhwdayuse] diff --git a/doc/src/docs/input-data/dhwheater-doc.md b/doc/src/docs/input-data/dhwheater-doc.md index 168c2d5b9..0537717d6 100644 --- a/doc/src/docs/input-data/dhwheater-doc.md +++ b/doc/src/docs/input-data/dhwheater-doc.md @@ -629,4 +629,4 @@ Optionally indicates the end of the DHWHEATER definition. **Related Probes:** -- @[DHWHeater](#p_dhwheater) +- @[DHWHeater][p_dhwheater] diff --git a/doc/src/docs/input-data/dhwloop.md b/doc/src/docs/input-data/dhwloop.md index adfbdb9e4..12f3edf21 100644 --- a/doc/src/docs/input-data/dhwloop.md +++ b/doc/src/docs/input-data/dhwloop.md @@ -114,4 +114,4 @@ Optionally indicates the end of the DHWLOOP definition. **Related Probes:** -- @[DHWLoop](#p_dhwloop) +- @[DHWLoop][p_dhwloop] diff --git a/doc/src/docs/input-data/dhwloopbranch.md b/doc/src/docs/input-data/dhwloopbranch.md index 1e6050e70..61249cc75 100644 --- a/doc/src/docs/input-data/dhwloopbranch.md +++ b/doc/src/docs/input-data/dhwloopbranch.md @@ -191,4 +191,4 @@ Optionally indicates the end of the DHWLOOPBRANCH definition. **Related Probes:** -- @[DHWLoopBranch](#p_dhwloopbranch) +- @[DHWLoopBranch][p_dhwloopbranch] diff --git a/doc/src/docs/input-data/dhwlooppump.md b/doc/src/docs/input-data/dhwlooppump.md index 0ee89a820..e7bfe62c7 100644 --- a/doc/src/docs/input-data/dhwlooppump.md +++ b/doc/src/docs/input-data/dhwlooppump.md @@ -76,4 +76,4 @@ Optionally indicates the end of the DHWPUMP definition. **Related Probes:** -- @[DHWLoopPump](#p_dhwlooppump) +- @[DHWLoopPump][p_dhwlooppump] diff --git a/doc/src/docs/input-data/dhwloopseg.md b/doc/src/docs/input-data/dhwloopseg.md index 3b91b3077..0324ac7bc 100644 --- a/doc/src/docs/input-data/dhwloopseg.md +++ b/doc/src/docs/input-data/dhwloopseg.md @@ -130,4 +130,4 @@ Optionally indicates the end of the DHWLOOPSEG definition. **Related Probes:** -- @[DHWLoopSeg](#p_dhwloopseg) +- @[DHWLoopSeg][p_dhwloopseg] diff --git a/doc/src/docs/input-data/dhwmeter.md b/doc/src/docs/input-data/dhwmeter.md index 9b3e426f6..60fdabcca 100644 --- a/doc/src/docs/input-data/dhwmeter.md +++ b/doc/src/docs/input-data/dhwmeter.md @@ -13,7 +13,7 @@ DHWMETERs account for water use in the following pre-defined end uses. The abbr - Clothes washer (CWashr) - Dishwasher (DWashr) -[DHWSYS](#dhwsys) items wsWHhwMtr and wsFXhwMtr specify the DHWMETER(s) to which water consumption is accumulated. +[DHWSYS][dhwsys] items wsWHhwMtr and wsFXhwMtr specify the DHWMETER(s) to which water consumption is accumulated. **dhwMtrName** @@ -30,4 +30,4 @@ Name of meter: required for assigning water uses to the DHWMETER. **Related Probes:** -- @[DHWmeter](#p_dhwmeter) +- @[DHWmeter][p_dhwmeter] diff --git a/doc/src/docs/input-data/dhwpump.md b/doc/src/docs/input-data/dhwpump.md index d019fdb42..4edcf41d2 100644 --- a/doc/src/docs/input-data/dhwpump.md +++ b/doc/src/docs/input-data/dhwpump.md @@ -64,4 +64,4 @@ Optionally indicates the end of the DHWPUMP definition. **Related Probes:** -- @[DHWPump](#p_dhwpump) +- @[DHWPump][p_dhwpump] diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index b51af6e90..f5172f102 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -813,4 +813,4 @@ Optionally indicates the end of the DHWSYS definition. **Related Probes:** -- @[DHWSys](#p_dhwsys) +- @[DHWSys][p_dhwsys] diff --git a/doc/src/docs/input-data/dhwtank.md b/doc/src/docs/input-data/dhwtank.md index 5ee16ac0f..808cf046e 100644 --- a/doc/src/docs/input-data/dhwtank.md +++ b/doc/src/docs/input-data/dhwtank.md @@ -127,4 +127,4 @@ Optionally indicates the end of the DHWTANK definition. **Related Probes:** -- @[DHWTank](#p_dhwtank) +- @[DHWTank][p_dhwtank] diff --git a/doc/src/docs/input-data/dhwuse.md b/doc/src/docs/input-data/dhwuse.md index 218301047..3124efe6a 100644 --- a/doc/src/docs/input-data/dhwuse.md +++ b/doc/src/docs/input-data/dhwuse.md @@ -81,7 +81,7 @@ Heat recovery effectiveness, allows simple modeling of heat recovery devices suc If non-0 (evaluated hourly), hot water use is reduced based on wuTemp, DHWSYS wsTUse, and DHWSYS wsTInlet. DHWHEATREC(s), if any, are ignored for this use. wuTemp must be specified. -If 0, detailed heat recovery modeling *may* apply, see [DHWHEATREC](#dhwheatrec). +If 0, detailed heat recovery modeling *may* apply, see [DHWHEATREC][dhwheatrec]. <%= member_table( units: "", @@ -133,4 +133,4 @@ Optionally indicates the end of the DHWUSE definition. **Related Probes:** -- @[DHWUse](#p_dhwuse) +- @[DHWUse][p_dhwuse] diff --git a/doc/src/docs/input-data/doas.md b/doc/src/docs/input-data/doas.md index 89c16c284..1c25e336a 100644 --- a/doc/src/docs/input-data/doas.md +++ b/doc/src/docs/input-data/doas.md @@ -483,4 +483,4 @@ Indicates the end of the DOAS definition. Alternatively, the end of the DOAS def **Related Probes:** -- @[doas](#p_doas) \ No newline at end of file +- @[doas][p_doas] \ No newline at end of file diff --git a/doc/src/docs/input-data/door.md b/doc/src/docs/input-data/door.md index 9656b935e..38578b920 100644 --- a/doc/src/docs/input-data/door.md +++ b/doc/src/docs/input-data/door.md @@ -266,6 +266,6 @@ Indicates the end of the door definition. Alternatively, the end of the door def **Related Probes:** -- @[door](#p_door) -- @[xsurf](#p_xsurf) -- @[mass](#p_mass) +- @[door][p_door] +- @[xsurf][p_xsurf] +- @[mass][p_mass] diff --git a/doc/src/docs/input-data/ductseg.md b/doc/src/docs/input-data/ductseg.md index d77fd47da..0e28099fe 100644 --- a/doc/src/docs/input-data/ductseg.md +++ b/doc/src/docs/input-data/ductseg.md @@ -234,5 +234,5 @@ Optionally indicates the end of the DUCTSEG definition. **Related Probes:** -- @[ductSeg](#p_ductseg) -- @[izXfer](#p_izxfer) (generated as "\-DLkI" for supply or "\-DLkO" for return) +- @[ductSeg][p_ductseg] +- @[izXfer][p_izxfer] (generated as "\-DLkI" for supply or "\-DLkO" for return) diff --git a/doc/src/docs/input-data/export.md b/doc/src/docs/input-data/export.md index 9b44854c3..f77ffed63 100644 --- a/doc/src/docs/input-data/export.md +++ b/doc/src/docs/input-data/export.md @@ -235,4 +235,4 @@ Optionally indicates the end of the export definition. Alternatively, the end of **Related Probes:** -- @[export](#p_export) +- @[export][p_export] diff --git a/doc/src/docs/input-data/exportcol.md b/doc/src/docs/input-data/exportcol.md index d9a6e0e34..59b1f56a5 100644 --- a/doc/src/docs/input-data/exportcol.md +++ b/doc/src/docs/input-data/exportcol.md @@ -102,4 +102,4 @@ Optionally indicates the end of the EXPORTCOL. Alternatively, the end of the def **Related Probes:** -- @[exportCol](#p_exportcol) +- @[exportCol][p_exportcol] diff --git a/doc/src/docs/input-data/exportfile.md b/doc/src/docs/input-data/exportfile.md index 4fc9c54af..1d0fb849c 100644 --- a/doc/src/docs/input-data/exportfile.md +++ b/doc/src/docs/input-data/exportfile.md @@ -65,4 +65,4 @@ Optionally indicates the end of the export file definition. Alternatively, the e **Related Probes:** -- @[exportFile](#p_exportfile) +- @[exportFile][p_exportfile] diff --git a/doc/src/docs/input-data/gain.md b/doc/src/docs/input-data/gain.md index 34fa426f8..490558b70 100644 --- a/doc/src/docs/input-data/gain.md +++ b/doc/src/docs/input-data/gain.md @@ -218,4 +218,4 @@ Optional to indicate the end of the GAIN definition. Alternatively, the end of t **Related Probes:** -- @[gain](#p_gain) +- @[gain][p_gain] diff --git a/doc/src/docs/input-data/glazetype.md b/doc/src/docs/input-data/glazetype.md index a85632bc4..7dfe3d351 100644 --- a/doc/src/docs/input-data/glazetype.md +++ b/doc/src/docs/input-data/glazetype.md @@ -210,4 +210,4 @@ Optional to indicates the end of the Glazetype. Alternatively, the end of the GL **Related Probes:** -- @[glazeType](#p_glazetype) +- @[glazeType][p_glazetype] diff --git a/doc/src/docs/input-data/heatplant.md b/doc/src/docs/input-data/heatplant.md index 4108a7376..7ef0fe8f5 100644 --- a/doc/src/docs/input-data/heatplant.md +++ b/doc/src/docs/input-data/heatplant.md @@ -80,4 +80,4 @@ Optionally indicates the end of the HEATPLANT definition. Alternatively, the end **Related Probes:** -- @[heatPlant](#p_heatplant) +- @[heatPlant][p_heatplant] diff --git a/doc/src/docs/input-data/holiday.md b/doc/src/docs/input-data/holiday.md index bcac9d04a..cc4ab149a 100644 --- a/doc/src/docs/input-data/holiday.md +++ b/doc/src/docs/input-data/holiday.md @@ -167,4 +167,4 @@ Note that the name must be spelled *exactly* as listed above. **Related Probes:** -- @[holiday](#p_holiday) +- @[holiday][p_holiday] diff --git a/doc/src/docs/input-data/importfile.md b/doc/src/docs/input-data/importfile.md index 15005a9dd..ffecc6b7b 100644 --- a/doc/src/docs/input-data/importfile.md +++ b/doc/src/docs/input-data/importfile.md @@ -1,9 +1,9 @@ # IMPORTFILE -IMPORTFILE allows specification of a file from which external data can be accessed using the [import()](#import) and [importStr()](#importstr) functions. This allows external values to be referenced in expressions. Any number of IMPORTFILEs can be defined and any number of import()/importStr() references can be made to a give IMPORTFILE. +IMPORTFILE allows specification of a file from which external data can be accessed using the [import()][import] and [importStr()][importstr] functions. This allows external values to be referenced in expressions. Any number of IMPORTFILEs can be defined and any number of import()/importStr() references can be made to a give IMPORTFILE. Import files are text files containing an optional header and comma-separated data fields. With -the header present, the structure of an import file matches that of an [EXPORT](#export) file. This makes it convenient to import unmodified files EXPORTed from prior runs. The file structure is as follows (noting that the header in lines 1-4 should not be present when imHeader=NO) -- +the header present, the structure of an import file matches that of an [EXPORT][export] file. This makes it convenient to import unmodified files EXPORTed from prior runs. The file structure is as follows (noting that the header in lines 1-4 should not be present when imHeader=NO) -- <%= csv_table(< true) Line, Contents, Notes @@ -133,5 +133,5 @@ Optionally indicates the end of the import file definition. Alternatively, the e **Related Probes:** -- @[importFile](#p_importfile) -- @[impFileFldNames](#p_impfilefldnames) +- @[importFile][p_importfile] +- @[impFileFldNames][p_impfilefldnames] diff --git a/doc/src/docs/input-data/izxfer.md b/doc/src/docs/input-data/izxfer.md index 99bb52b21..8d48781f8 100644 --- a/doc/src/docs/input-data/izxfer.md +++ b/doc/src/docs/input-data/izxfer.md @@ -496,4 +496,4 @@ Optionally indicates the end of the interzone transfer definition. **Related Probes:** -- @[izXfer](#p_izxfer) +- @[izXfer][p_izxfer] diff --git a/doc/src/docs/input-data/layer.md b/doc/src/docs/input-data/layer.md index a88e22245..fc2d8c390 100644 --- a/doc/src/docs/input-data/layer.md +++ b/doc/src/docs/input-data/layer.md @@ -67,4 +67,4 @@ Optional end-of-LAYER indicator; LAYER definition may also be indicated by "END" **Related Probes:** -- @[layer](#p_layer) +- @[layer][p_layer] diff --git a/doc/src/docs/input-data/loadmeter.md b/doc/src/docs/input-data/loadmeter.md index 0ce3e84f1..91f60afe3 100644 --- a/doc/src/docs/input-data/loadmeter.md +++ b/doc/src/docs/input-data/loadmeter.md @@ -65,4 +65,4 @@ Indicates the end of the meter definition. Alternatively, the end of the meter d **Related Probes:** -- @[loadmeter](#p_loadmeter) +- @[loadmeter][p_loadmeter] diff --git a/doc/src/docs/input-data/material.md b/doc/src/docs/input-data/material.md index 71926f83f..3960336c0 100644 --- a/doc/src/docs/input-data/material.md +++ b/doc/src/docs/input-data/material.md @@ -105,4 +105,4 @@ Optional to indicate the end of the material. Alternatively, the end of the mate **Related Probes:** -- @[material](#p_material) +- @[material][p_material] diff --git a/doc/src/docs/input-data/meter.md b/doc/src/docs/input-data/meter.md index f2800c37f..893058617 100644 --- a/doc/src/docs/input-data/meter.md +++ b/doc/src/docs/input-data/meter.md @@ -104,4 +104,4 @@ Indicates the end of the meter definition. Alternatively, the end of the meter d **Related Probes:** -- @[meter](#p_meter) +- @[meter][p_meter] diff --git a/doc/src/docs/input-data/perimeter.md b/doc/src/docs/input-data/perimeter.md index 795fd5ea8..a03e7bacb 100644 --- a/doc/src/docs/input-data/perimeter.md +++ b/doc/src/docs/input-data/perimeter.md @@ -48,5 +48,5 @@ Optionally indicates the end of the perimeter definition. **Related Probes:** -- @[perimeter](#p_perimeter) -- @[xsurf](#p_xsurf) +- @[perimeter][p_perimeter] +- @[xsurf][p_xsurf] diff --git a/doc/src/docs/input-data/pvarray.md b/doc/src/docs/input-data/pvarray.md index 5ce062588..9463a37d5 100644 --- a/doc/src/docs/input-data/pvarray.md +++ b/doc/src/docs/input-data/pvarray.md @@ -145,11 +145,11 @@ Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the **pvVertices=*list of up to 36 floats*** - Vertices of an optional polygon representing the position and shape of the photovoltaic array. The polygon is used to calculate the shaded fraction using an advanced shading model. Only PVARRAYs and [SHADEXs](#shadex) are considered in the advanced shading model -- PVARRAYs can be shaded by SHADEXs or other PVARRAYs. If pvVertices is omitted, the PVARRAY is assumed to be unshaded at all times. Advanced shading must be enabled via [TOP exShadeModel](#top-model-control-items). Note that the polygon is used only for evaluating shading; array capacity is specified by pvDCSysSize (above). + Vertices of an optional polygon representing the position and shape of the photovoltaic array. The polygon is used to calculate the shaded fraction using an advanced shading model. Only PVARRAYs and [SHADEXs][shadex] are considered in the advanced shading model -- PVARRAYs can be shaded by SHADEXs or other PVARRAYs. If pvVertices is omitted, the PVARRAY is assumed to be unshaded at all times. Advanced shading must be enabled via [TOP exShadeModel][top-model-control-items]. Note that the polygon is used only for evaluating shading; array capacity is specified by pvDCSysSize (above). The values that follow pvVertices are a series of X, Y, and Z values for the vertices of the polygon using a coordinate system defined from a viewpoint facing north. X and Y values convey east-west and north-south location respectively relative to an arbitrary origin (positive X value are to the east; positive Y values are to the north). Z values convey height relative to the building 0 level and positive values are upward. - The vertices are specified in counter-clockwise order when facing the receiving surface of the PVARRAY. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When pvMounting=Building, the effective position of the polygon is modified in response to building rotation specified by [TOP bldgAzm](#top-general-data-items). + The vertices are specified in counter-clockwise order when facing the receiving surface of the PVARRAY. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When pvMounting=Building, the effective position of the polygon is modified in response to building rotation specified by [TOP bldgAzm][top-general-data-items]. For example, to specify a rectangular photovoltaic array that is 10 x 20 ft, tilted 45 degrees, and facing south -- @@ -182,7 +182,7 @@ Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the **pvMounting=*choice*** - Specified mounting location of this PVARRAY. pvMounting=Site indicates the array position is not altered by building rotation via [TOP bldgAzm](#top-general-data-items), while PVARRAYs with pvMounting=Building are assumed to rotate with the building. + Specified mounting location of this PVARRAY. pvMounting=Site indicates the array position is not altered by building rotation via [TOP bldgAzm][top-general-data-items], while PVARRAYs with pvMounting=Building are assumed to rotate with the building. <%= member_table( units: "", @@ -285,4 +285,4 @@ Optionally indicates the end of the PVARRAY definition. Alternatively, the end o **Related Probes:** -- @[PVArray](#p_pvarray) +- @[PVArray][p_pvarray] diff --git a/doc/src/docs/input-data/report.md b/doc/src/docs/input-data/report.md index a93209546..a8c95353c 100644 --- a/doc/src/docs/input-data/report.md +++ b/doc/src/docs/input-data/report.md @@ -280,4 +280,4 @@ Optionally indicates the end of the report definition. Alternatively, the end of **Related Probes:** -- @[report](#p_report) +- @[report][p_report] diff --git a/doc/src/docs/input-data/reportcol.md b/doc/src/docs/input-data/reportcol.md index 95b66979d..70203a777 100644 --- a/doc/src/docs/input-data/reportcol.md +++ b/doc/src/docs/input-data/reportcol.md @@ -104,4 +104,4 @@ Optionally indicates the end of the report column definition. Alternatively, the **Related Probes:** -- @[reportCol](#p_reportcol) +- @[reportCol][p_reportcol] diff --git a/doc/src/docs/input-data/reportfile.md b/doc/src/docs/input-data/reportfile.md index 2b4cbe0d2..4123d0bfa 100644 --- a/doc/src/docs/input-data/reportfile.md +++ b/doc/src/docs/input-data/reportfile.md @@ -102,4 +102,4 @@ Optionally indicates the end of the report file definition. Alternatively, the e **Related Probes:** -- @[reportFile](#p_reportfile) +- @[reportFile][p_reportfile] diff --git a/doc/src/docs/input-data/rsys.md b/doc/src/docs/input-data/rsys.md index 0c60a2314..499ca607b 100644 --- a/doc/src/docs/input-data/rsys.md +++ b/doc/src/docs/input-data/rsys.md @@ -711,7 +711,7 @@ Cooling distribution system efficiency. If given, (1-rsDSEC) of RSYS cooling ou Type of central fan integrated (CFI) outside air ventilation (OAV) included in this RSYS. OAV systems use the central system fan to circulate outdoor air (e.g. for night ventilation). - OAV cannot operate simultaneously with whole building ventilation (operable windows, whole house fans, etc.). Availability of ventilation modes is controlled on an hourly basis via [Top ventAvail](#top-model-control-items). + OAV cannot operate simultaneously with whole building ventilation (operable windows, whole house fans, etc.). Availability of ventilation modes is controlled on an hourly basis via [Top ventAvail][top-model-control-items]. <%= csv_table(< false) NONE, No CFI ventilation capabilities @@ -851,5 +851,5 @@ Optionally indicates the end of the RSYS definition. **Related Probes:** -- @[rsys](#p_rsys) -- @[RSYSRes](#p_rsysres) (accumulated results) +- @[rsys][p_rsys] +- @[RSYSRes][p_rsysres] (accumulated results) diff --git a/doc/src/docs/input-data/sgdist.md b/doc/src/docs/input-data/sgdist.md index 049a23677..a4f849284 100644 --- a/doc/src/docs/input-data/sgdist.md +++ b/doc/src/docs/input-data/sgdist.md @@ -89,4 +89,4 @@ Optionally indicates the end of the solar gain distribution definition. Alternat **Related Probes:** -- @[sgdist](#p_sgdist) +- @[sgdist][p_sgdist] diff --git a/doc/src/docs/input-data/shade.md b/doc/src/docs/input-data/shade.md index 4c1482225..b213cce9a 100644 --- a/doc/src/docs/input-data/shade.md +++ b/doc/src/docs/input-data/shade.md @@ -172,4 +172,4 @@ Optional to indicate the end of the SHADE definition. Alternatively, the end of **Related Probes:** -- @[shade](#p_shade) +- @[shade][p_shade] diff --git a/doc/src/docs/input-data/shadex.md b/doc/src/docs/input-data/shadex.md index c031e3942..0615b66ee 100644 --- a/doc/src/docs/input-data/shadex.md +++ b/doc/src/docs/input-data/shadex.md @@ -1,6 +1,6 @@ # SHADEX -SHADEX describes an object that shades other building surfaces using an advanced shading model. Advanced shading calculations are provided only for [PVARRAYs](#pvarray). Advanced shading must be enabled via [Top exShadeModel](#top-model-control-items). +SHADEX describes an object that shades other building surfaces using an advanced shading model. Advanced shading calculations are provided only for [PVARRAYs][pvarray]. Advanced shading must be enabled via [Top exShadeModel][top-model-control-items]. **sxName** @@ -15,7 +15,7 @@ Name of photovoltaic array. Give after the word SHADEX. **sxMounting=*choice*** -Specifies the mounting location of the shade. sxMounting=Site indicates the SHADEX position is fixed and is not modified if the building is rotated. The position of SHADEXs with sxMounting=Building are modified to include the effect of building rotation specified via [Top bldgAz](#bldgAzm) +Specifies the mounting location of the shade. sxMounting=Site indicates the SHADEX position is fixed and is not modified if the building is rotated. The position of SHADEXs with sxMounting=Building are modified to include the effect of building rotation specified via [Top bldgAz][bldgAzm] <%= member_table( units: "", @@ -30,7 +30,7 @@ Vertices of a polygon representing the shape of the shading object. The values that follow sxVertices are a series of X, Y, and Z values for the vertices of the polygon. The coordinate system is defined from a viewpoint facing north. X and Y values convey east-west and north-south location respectively relative to an arbitrary origin (positive X value are to the east; positive Y values are to the north). Z values convey height relative to the building 0 level and positive values are upward. -The vertices are specified in counter-clockwise order when facing the shading object from the south. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When sxType=Building, the effective position of the polygon reflects building rotation specified by [TOP bldgAzm](#top-general-data-items). +The vertices are specified in counter-clockwise order when facing the shading object from the south. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When sxType=Building, the effective position of the polygon reflects building rotation specified by [TOP bldgAzm][top-general-data-items]. For example, to specify a rectangular shade "tree" that is 10 x 40 ft, facing south, and 100 ft to the south of the nominal building origin -- @@ -56,4 +56,4 @@ Optionally indicates the end of the SHADEX definition. Alternatively, the end of **Related Probes:** -- @[SHADEX](#p_shadex) +- @[SHADEX][p_shadex] diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index 5b3531c4c..642764dea 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -494,6 +494,6 @@ The following tables summarize the defaults and legal ranges of surface members **Related Probes:** -- @[surface](#p_surface) -- @[xsurf](#p_xsurf) -- @[mass](#p_mass) +- @[surface][p_surface] +- @[xsurf][p_xsurf] +- @[mass][p_mass] diff --git a/doc/src/docs/input-data/terminal.md b/doc/src/docs/input-data/terminal.md index d4d60d5a0..820d42f0f 100644 --- a/doc/src/docs/input-data/terminal.md +++ b/doc/src/docs/input-data/terminal.md @@ -467,5 +467,5 @@ Optional to indicates the end of terminal definition. Alternatively, the end of **Related Probes:** -- @[terminal](#p_terminal) -- @[zhx](#p_zhx) +- @[terminal][p_terminal] +- @[zhx][p_zhx] diff --git a/doc/src/docs/input-data/top-members.md b/doc/src/docs/input-data/top-members.md index 85a01f877..fd60dc5e8 100644 --- a/doc/src/docs/input-data/top-members.md +++ b/doc/src/docs/input-data/top-members.md @@ -357,7 +357,7 @@ As noted, ventAvail is evaluated hourly, permitting flexible control strategy mo **exShadeModel=*choice*** -Specifies advanced exterior shading model used to evaluate shading of [PVARRAYs](#pvarray) by [SHADEXs](#shadex) or other PVARRAYs. Advanced shading is not implemented for building surfaces and this setting has no effect on walls or windows. +Specifies advanced exterior shading model used to evaluate shading of [PVARRAYs][pvarray] by [SHADEXs][shadex] or other PVARRAYs. Advanced shading is not implemented for building surfaces and this setting has no effect on walls or windows. <%= csv_table(< true) **Choice**, **Effect** @@ -791,7 +791,7 @@ Deep-ground temperature. Used when deepGrndCnd=WATERTABLE. CSE supports an optional comma-separated (CSV) text file that provides hourly TDV values for electricity and fuel. TDV values are read along with the weather file and the values merged with weather data. Several daily statistics are calculated for use via probes. The file has no other effect on the simulation. Only full-year TDV files are supported. -The format of a TDV file is the same as an [IMPORTFILE](#importfile) with the proviso that the 4 line header is not optional and certain header items must have specified values. In the following table, non-italic items must be provided as shown (with optional quotes). +The format of a TDV file is the same as an [IMPORTFILE][importfile] with the proviso that the 4 line header is not optional and certain header items must have specified values. In the following table, non-italic items must be provided as shown (with optional quotes). <%= csv_table(< true) **Line** **Contents** **Notes** @@ -1079,7 +1079,7 @@ Enables expression code coverage reporting. Development aid. **Related Probes:** -- @[top](#p_top) -- @[weatherFile](#p_weatherfile) -- @[weather](#p_weather) -- @[weatherNextHour](#p_weathernexthour) +- @[top][p_top] +- @[weatherFile][p_weatherfile] +- @[weather][p_weather] +- @[weatherNextHour][p_weathernexthour] diff --git a/doc/src/docs/input-data/towerplant.md b/doc/src/docs/input-data/towerplant.md index 08f79d0e4..31f552377 100644 --- a/doc/src/docs/input-data/towerplant.md +++ b/doc/src/docs/input-data/towerplant.md @@ -305,4 +305,4 @@ Optionally indicates the end of the TOWERPLANT definition. Alternatively, the en **Related Probes:** -- @[towerPlant](#p_towerplant) +- @[towerPlant][p_towerplant] diff --git a/doc/src/docs/input-data/window.md b/doc/src/docs/input-data/window.md index ef0c1b9cf..1027530cc 100644 --- a/doc/src/docs/input-data/window.md +++ b/doc/src/docs/input-data/window.md @@ -388,5 +388,5 @@ Optionally indicates the end of the window definition. Alternatively, the end of **Related Probes:** -- @[window](#p_window) -- @[xsurf](#p_xsurf) +- @[window][p_window] +- @[xsurf][p_xsurf] diff --git a/doc/src/docs/input-data/zone.md b/doc/src/docs/input-data/zone.md index 39bbd6ac4..d609c73b2 100644 --- a/doc/src/docs/input-data/zone.md +++ b/doc/src/docs/input-data/zone.md @@ -527,5 +527,5 @@ Indicates the end of the zone definition. Alternatively, the end of the zone def **Related Probes:** -- @[zone](#p_zone) -- @[znRes](#p_znres) (accumulated results) +- @[zone][p_zone] +- @[znRes][p_znres] (accumulated results) From a93a9a9224c6ff2cc6b0c221a6ed61756228db08 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Fri, 28 Feb 2025 15:57:38 -0700 Subject: [PATCH 011/117] Replace insert_file functionality with mkdocs-macros' include statement. --- doc/src/docs/input-data/dhwheater.md | 2 +- doc/src/docs/input-data/dhwloopheater.md | 2 +- doc/src/docs/input-data/gain.md | 3 +-- doc/src/docs/input-data/meter.md | 2 +- doc/src/docs/input-data/pvarray.md | 2 +- doc/src/mkdocs.yml | 3 ++- doc/src/{docs/input-data => shared}/dhwheater-doc.md | 0 doc/src/{docs => shared}/enduses.md | 0 8 files changed, 7 insertions(+), 7 deletions(-) rename doc/src/{docs/input-data => shared}/dhwheater-doc.md (100%) rename doc/src/{docs => shared}/enduses.md (100%) diff --git a/doc/src/docs/input-data/dhwheater.md b/doc/src/docs/input-data/dhwheater.md index 6f76b62df..ceec142a8 100644 --- a/doc/src/docs/input-data/dhwheater.md +++ b/doc/src/docs/input-data/dhwheater.md @@ -2,4 +2,4 @@ DHWHEATER constructs an object representing a domestic hot water heater (or several if identical). -<%= insert_file('doc/src/records/dhwheater-doc.md') %> +{% include 'dhwheater-doc.md' %} \ No newline at end of file diff --git a/doc/src/docs/input-data/dhwloopheater.md b/doc/src/docs/input-data/dhwloopheater.md index 036c0a30c..bc46682a6 100644 --- a/doc/src/docs/input-data/dhwloopheater.md +++ b/doc/src/docs/input-data/dhwloopheater.md @@ -2,4 +2,4 @@ DHWHEATERLOOP constructs an object representing a hot water heater dedicated to heating DHWLOOP return water (or several if identical). -<%= insert_file('doc/src/records/dhwheater-doc.md') %> +{% include 'dhwheater-doc.md' %} \ No newline at end of file diff --git a/doc/src/docs/input-data/gain.md b/doc/src/docs/input-data/gain.md index 490558b70..a24f0005f 100644 --- a/doc/src/docs/input-data/gain.md +++ b/doc/src/docs/input-data/gain.md @@ -69,8 +69,7 @@ Name of meter by which this GAIN's gnPower is recorded. If omitted, gain is assi Meter end use to which the GAIN's energy use should be accumulated. -<%= insert_file("doc/src/enduses.md") %> - +{% include 'enduses.md' %} <%= member_table( units: "", diff --git a/doc/src/docs/input-data/meter.md b/doc/src/docs/input-data/meter.md index 893058617..ce45aba99 100644 --- a/doc/src/docs/input-data/meter.md +++ b/doc/src/docs/input-data/meter.md @@ -4,7 +4,7 @@ A METER object is a user-defined "device" that records energy consumption of equ Meters account for energy use in the following pre-defined categories, called *end uses*. The abbreviations in parentheses are used in MTR report headings (and for gnMeter input, below). You also get a column for the net total on the meter (abbreviated "Tot"). -<%= insert_file('doc/src/enduses.md') %> +{% include 'enduses.md' %} The user has complete freedom over how many meters are defined and how equipment is assigned to them. At one extreme, a single meter "Electricity" could be defined and have all of electrical uses assigned to it. On the other hand, definition of separate meters "Elect\_Fan1", "Elect\_Fan2", and so forth allows accounting of the electricity use for individual pieces of equipment. Various groupings are possible: for example, in a building with several air handlers, one could separate the energy consumption of the fans from the coils, or one could separate the energy use by air handler, or both ways, depending on the information desired from the run. diff --git a/doc/src/docs/input-data/pvarray.md b/doc/src/docs/input-data/pvarray.md index 9463a37d5..a2fcd30ec 100644 --- a/doc/src/docs/input-data/pvarray.md +++ b/doc/src/docs/input-data/pvarray.md @@ -30,7 +30,7 @@ Name of meter by which this PVARRAY's AC power out is recorded. Generated power Meter end use to which the PVARRAY's generated energy should be accumulated. -<%= insert_file('doc/src/enduses.md') %> +{% include 'enduses.md' %} <%= member_table( units: "", diff --git a/doc/src/mkdocs.yml b/doc/src/mkdocs.yml index 324db5b7e..74b3c4540 100644 --- a/doc/src/mkdocs.yml +++ b/doc/src/mkdocs.yml @@ -89,7 +89,8 @@ nav: plugins: - autorefs: resolve_closest: true - - macros + - macros: + include_dir: shared - search - table-reader markdown_extensions: diff --git a/doc/src/docs/input-data/dhwheater-doc.md b/doc/src/shared/dhwheater-doc.md similarity index 100% rename from doc/src/docs/input-data/dhwheater-doc.md rename to doc/src/shared/dhwheater-doc.md diff --git a/doc/src/docs/enduses.md b/doc/src/shared/enduses.md similarity index 100% rename from doc/src/docs/enduses.md rename to doc/src/shared/enduses.md From 38fcede51c144a8838307ab18d7ee3ef3e803c98 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Fri, 28 Feb 2025 16:10:15 -0700 Subject: [PATCH 012/117] Move unused files to extra folder. Can these be deleted? --- doc/src/{docs/input-data => extra}/dhwsolartank.md | 0 doc/src/{docs/input-data => extra}/hploop.md | 0 doc/src/{docs/input-data => extra}/inverse.md | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename doc/src/{docs/input-data => extra}/dhwsolartank.md (100%) rename doc/src/{docs/input-data => extra}/hploop.md (100%) rename doc/src/{docs/input-data => extra}/inverse.md (100%) diff --git a/doc/src/docs/input-data/dhwsolartank.md b/doc/src/extra/dhwsolartank.md similarity index 100% rename from doc/src/docs/input-data/dhwsolartank.md rename to doc/src/extra/dhwsolartank.md diff --git a/doc/src/docs/input-data/hploop.md b/doc/src/extra/hploop.md similarity index 100% rename from doc/src/docs/input-data/hploop.md rename to doc/src/extra/hploop.md diff --git a/doc/src/docs/input-data/inverse.md b/doc/src/extra/inverse.md similarity index 100% rename from doc/src/docs/input-data/inverse.md rename to doc/src/extra/inverse.md From 0030d1def494a10049b4a98f7dc59f240ba76278 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Fri, 28 Feb 2025 16:25:19 -0700 Subject: [PATCH 013/117] Add (draft) version of csv_table and member_table functions. --- .../docs/assets/stylesheets/extra_styles.css | 8 +++ doc/src/main.py | 67 +++++++++++++++++++ doc/src/mkdocs.yml | 3 + doc/src/shared/enduses.md | 52 +++++++------- 4 files changed, 104 insertions(+), 26 deletions(-) create mode 100644 doc/src/main.py diff --git a/doc/src/docs/assets/stylesheets/extra_styles.css b/doc/src/docs/assets/stylesheets/extra_styles.css index 93062dcaf..462db4f98 100644 --- a/doc/src/docs/assets/stylesheets/extra_styles.css +++ b/doc/src/docs/assets/stylesheets/extra_styles.css @@ -3,3 +3,11 @@ transition: unset !important; } } + +.no-header-table + * table:not([class]) thead { + display: none; +} + +.no-header-table + * table:not([class]) tr:first-child td { + border-top: none; +} \ No newline at end of file diff --git a/doc/src/main.py b/doc/src/main.py new file mode 100644 index 000000000..3ac0dd9ed --- /dev/null +++ b/doc/src/main.py @@ -0,0 +1,67 @@ +def define_env(env): + """ + This is the hook for the variables, macros and filters. + """ + + @env.macro + def csv_table(csv, header=True): + rows = [row.split(",") for row in csv.split("\n")] + + max_length = max(len(row) for row in rows) + padded_rows = [row + [""] * (max_length - len(row)) for row in rows] + + header_row = padded_rows[0] if header else ([""] * max_length) + body_rows = padded_rows[1:] if header else padded_rows + + table = ( + ('
\n' if not header else "") + + "| " + + " | ".join(header_row) + + " |\n" + + "| " + + " | ".join(f"------" for c in header_row) + + " |\n" + + ( + "\n".join( + ("| " + " | ".join(f"{c}" for c in row) + " |") for row in body_rows + ) + if len(body_rows) > 0 + else "" + ) + ) + + # print(table) + return table + + @env.macro + def member_table(args): + fallback = "—" + units = args.get("units", fallback) + legal_range = args.get("legal_range", fallback) + default = args.get("default", fallback) + required = args.get("required", "No") + variability = args.get("variability", "constant") + + table = ( + '
\n' + + "| " + + " | ".join( + f"{c}" + for c in ["Units", "Legal Range", "Default", "Required", "Variability"] + ) + + " |\n" + + "| " + + " | ".join( + f"------" + for c in ["Units", "Legal Range", "Default", "Required", "Variability"] + ) + + " |\n" + + "| " + + " | ".join( + f"{c}" for c in [units, legal_range, default, required, variability] + ) + + " |\n" + ) + + # print(table) + return table diff --git a/doc/src/mkdocs.yml b/doc/src/mkdocs.yml index 74b3c4540..8054b4d68 100644 --- a/doc/src/mkdocs.yml +++ b/doc/src/mkdocs.yml @@ -4,6 +4,9 @@ site_dir: ../build site_name: CSE Documentation site_url: "https://cse-sim.github.io/cse/" copyright: "© 2025 The CSE Authors. All rights reserved." +watch: + - main.py + - shared theme: name: material features: diff --git a/doc/src/shared/enduses.md b/doc/src/shared/enduses.md index a449d124f..4048852ef 100644 --- a/doc/src/shared/enduses.md +++ b/doc/src/shared/enduses.md @@ -1,26 +1,26 @@ ---- -Clg Cooling -Htg Heating (includes heat pump compressor) -HPBU Heat pump resistance heating (backup and defrost) -DHW Domestic (service) hot water -DHWBU Domestic (service) hot water heating backup (HPWH resistance) -DHWMFL Domestic (service) hot water heating multi-family loop pumping and loss makeup -FANC Fans, AC and cooling ventilation -FANH Fans, heating -FANV Fans, IAQ venting -FAN Fans, other purposes -AUX HVAC auxiliaries such as pumps -PROC Process -LIT Lighting -RCP Receptacles -EXT Exterior lighting -REFR Refrigeration -DISH Dishwashing -DRY Clothes drying -WASH Clothes washing -COOK Cooking -USER1 User-defined category 1 -USER2 User-defined category 2 -BT Battery charge power -PV Photovoltaic power generation ---- +{{csv_table( +"Clg, Cooling +Htg, Heating (includes heat pump compressor) +HPBU, Heat pump resistance heating (backup and defrost) +DHW, Domestic (service) hot water +DHWBU, Domestic (service) hot water heating backup (HPWH resistance) +DHWMFL, Domestic (service) hot water heating multi-family loop pumping and loss makeup +FANC, Fans, AC and cooling ventilation +FANH, Fans, heating +FANV, Fans, IAQ venting +FAN, Fans, other purposes +AUX, HVAC auxiliaries such as pumps +PROC, Process +LIT, Lighting +RCP, Receptacles +EXT, Exterior lighting +REFR, Refrigeration +DISH, Dishwashing +DRY, Clothes drying +WASH, Clothes washing +COOK, Cooking +USER1, User-defined category 1 +USER2, User-defined category 2 +BT, Battery charge power +PV, Photovoltaic power generation", header=False) +}} \ No newline at end of file From 0c001f414734fda845791f3d5d84cb488f0427b2 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 3 Mar 2025 10:53:23 -0700 Subject: [PATCH 014/117] Update syntax for (most) member tables. --- .../docs/assets/stylesheets/extra_styles.css | 11 + doc/src/docs/input-data/afmeter.md | 32 +- doc/src/docs/input-data/airhandler.md | 1835 ++++++++++------- doc/src/docs/input-data/battery.md | 192 +- doc/src/docs/input-data/boiler.md | 315 +-- doc/src/docs/input-data/chiller.md | 405 ++-- doc/src/docs/input-data/construction.md | 48 +- doc/src/docs/input-data/coolplant.md | 105 +- doc/src/docs/input-data/descond.md | 151 +- doc/src/docs/input-data/dhwdayuse.md | 48 +- doc/src/docs/input-data/dhwheatrec.md | 165 +- doc/src/docs/input-data/dhwloop.md | 150 +- doc/src/docs/input-data/dhwloopbranch.md | 237 ++- doc/src/docs/input-data/dhwlooppump.md | 96 +- doc/src/docs/input-data/dhwloopseg.md | 160 +- doc/src/docs/input-data/dhwmeter.md | 15 +- doc/src/docs/input-data/dhwpump.md | 80 +- doc/src/docs/input-data/dhwsolarcollector.md | 286 +-- doc/src/docs/input-data/dhwsolarsys.md | 182 +- doc/src/docs/input-data/dhwsys.md | 914 ++++---- doc/src/docs/input-data/dhwtank.md | 159 +- doc/src/docs/input-data/dhwuse.md | 160 +- doc/src/docs/input-data/doas.md | 540 +++-- doc/src/docs/input-data/door.md | 303 +-- doc/src/docs/input-data/ductseg.md | 300 +-- doc/src/docs/input-data/export.md | 285 +-- doc/src/docs/input-data/exportcol.md | 112 +- doc/src/docs/input-data/exportfile.md | 64 +- doc/src/docs/input-data/fndblock.md | 136 +- doc/src/docs/input-data/foundation.md | 46 +- doc/src/docs/input-data/gain.md | 253 ++- doc/src/docs/input-data/glazetype.md | 256 ++- doc/src/docs/input-data/heatplant.md | 75 +- doc/src/docs/input-data/holiday.md | 128 +- doc/src/docs/input-data/importfile.md | 105 +- doc/src/docs/input-data/index.md | 15 +- doc/src/docs/input-data/izxfer.md | 555 +++-- doc/src/docs/input-data/layer.md | 75 +- doc/src/docs/input-data/loadmeter.md | 60 +- doc/src/docs/input-data/material.md | 135 +- doc/src/docs/input-data/meter.md | 90 +- doc/src/docs/input-data/performancemap.md | 173 +- doc/src/docs/input-data/perimeter.md | 60 +- doc/src/docs/input-data/pvarray.md | 272 +-- doc/src/docs/input-data/report.md | 285 ++- doc/src/docs/input-data/reportcol.md | 120 +- doc/src/docs/input-data/reportfile.md | 75 +- doc/src/docs/input-data/rsys.md | 1020 +++++---- doc/src/docs/input-data/sgdist.md | 90 +- doc/src/docs/input-data/shade.md | 225 +- doc/src/docs/input-data/shadex.md | 60 +- doc/src/docs/input-data/surface.md | 435 ++-- doc/src/docs/input-data/terminal.md | 495 +++-- doc/src/docs/input-data/top-members.md | 1185 ++++++----- doc/src/docs/input-data/window.md | 464 +++-- doc/src/docs/input-data/zone.md | 640 +++--- doc/src/extra/inverse.md | 105 +- doc/src/shared/dhwheater-doc.md | 602 +++--- 58 files changed, 9155 insertions(+), 6430 deletions(-) diff --git a/doc/src/docs/assets/stylesheets/extra_styles.css b/doc/src/docs/assets/stylesheets/extra_styles.css index 462db4f98..d5e75aae0 100644 --- a/doc/src/docs/assets/stylesheets/extra_styles.css +++ b/doc/src/docs/assets/stylesheets/extra_styles.css @@ -10,4 +10,15 @@ .no-header-table + * table:not([class]) tr:first-child td { border-top: none; +} + +.member-table-sibling + * .md-typeset__table { + width: 100%; +} + +.member-table-sibling + * table:not([class]) { + border-radius: 6px; + display: table; + table-layout: fixed; + width: 100%; } \ No newline at end of file diff --git a/doc/src/docs/input-data/afmeter.md b/doc/src/docs/input-data/afmeter.md index d1d305423..7ff5377cd 100644 --- a/doc/src/docs/input-data/afmeter.md +++ b/doc/src/docs/input-data/afmeter.md @@ -15,25 +15,29 @@ AFMETER results can be REPORTed using rpType=AFMTR (or EXPORTed using exType=AFM Name of meter: required for assigning air flows to the AFMETER. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") -%> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **endAFMeter** Indicates the end of the meter definition. Alternatively, the end of the meter definition can be indicated by the declaration of another object or by END. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") -%> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index 83558dd5b..455ba1b9c 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -18,13 +18,15 @@ AIRHANDLER is designed primarily to model a central system that supplies hot or Name of air handler: give after the word AIRHANDLER. Required for reference in TERMINALs. -<%= member_table( -units: "", -legal_range: "_63 characters_", -default: "", -required: "Yes", -variability: "constant") -%> +{{ + member_table({ + "units": "", + "legal_range": "_63 characters_", + "default": "", + "required": "Yes", + "variability": "constant" + }) +}} **ahSched=_choice_** @@ -41,24 +43,29 @@ The following might be used to run an air handler between 8 AM and 5 PM: ahSched = select( (\$hour > 8 && \$hour <= 5), ON, default, OFF ); -<%= member_table( -units: "", -legal_range: "ON/OFF", -default: "ON", -required: "No", -variability: "hourly") -%> +{{ + member_table({ + "units": "", + "legal_range": "ON/OFF", + "default": "ON", + "required": "No", + "variability": "hourly" + }) +}} **ahFxVfFan=_float_** Fan flow rate multiplier for autosized fan(s). The default value (1.1) specifies 10% oversizing. -<%= member_table( -units: "", -legal_range: "x $\\ge$ 0", -default: "1.1", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\ge$ 0", + "default": "1.1", + "required": "No", + "variability": "constant" + }) +}} ## AIRHANDLER Supply Air Temperature Controller @@ -85,13 +92,15 @@ Unless _ahTsSp_ is ZN or ZN2, the AIRHANDLER does not know whether it is heating Giving _ahTsSp_ is disallowed for an air handler with no economizer, no heat coil and no cooling coil. Such an AIRHANDLER object is valid as a ventilator; its supply temperature is not controlled. but rather determined by the outside temperature and/or the return air temperature. -<%= member_table( -units: "^o^F", -legal_range: "_number_, RA\*, WZ, CZ, ZN\*\*, ZN2\*\*,", -default: "0", -required: "Yes, if coil(s) or economizer present", -variability: "hourly") -%> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_number_, RA\*, WZ, CZ, ZN\*\*, ZN2\*\*,", + "default": "0", + "required": "Yes, if coil(s) or economizer present", + "variability": "hourly" + }) +}} \* ahTsRaMn, ahTsRaMx, ahTsMn, and ahTsMx are _required_ input for this choice. @@ -124,34 +133,41 @@ NO, Normal CSE behavior for simulating VAV systems with continuously running (or END %> -<%= member_table( -units: "", -legal_range: "YES, NO", -default: "YES when _ahTsSp_=ZN, NO otherwise", -required: "No", -variability: "hourly") -%> +{{ + member_table({ + "units": "", + "legal_range": "YES, NO", + "default": "YES when _ahTsSp_=ZN, NO otherwise", + "required": "No", + "variability": "hourly" + }) +}} **ahTsMn=_float_** Minimum supply temperature. Also used as cooling supply temperature setpoint value under _ahTsSp_ = ZN. -<%= member_table( -units: "^o^F", -legal_range: "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", -default: "0^o^F", -required: "Only for _ahTsSp_=RA", -variability: "hourly") -%> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", + "default": "0^o^F", + "required": "Only for _ahTsSp_=RA", + "variability": "hourly" + }) +}} -<%= member_table( -units: "^o^F", -legal_range: "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", -default: "999^o^ F", -required: "Only for _asTsSp_=RA; recommend giving for _ahTsSp_=ZN", -variability: "hourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", + "default": "999^o^ F", + "required": "Only for _asTsSp_=RA; recommend giving for _ahTsSp_=ZN", + "variability": "hourly" + }) +}} **ahTsMx=_float_** @@ -176,45 +192,57 @@ A comma must be entered between zone names and after the word ALL_BUT. -<%= member_table( -units: "", -legal_range: "_name(s) of ZONEs_ ALL ALL_BUT _zone Name(s)_", -default: "ALL", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "_name(s) of ZONEs_ ALL ALL_BUT _zone Name(s)_", + "default": "ALL", + "required": "No", + "variability": "hourly" + }) +}} **ahTsDsC=_float_** Cooling design supply temperature, for sizing coil vs fan. -<%= member_table( -units: "^o^F", -legal_range: "x $>$ 0", -default: "_ahTsMn_", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "x $>$ 0", + "default": "_ahTsMn_", + "required": "No", + "variability": "hourly" + }) +}} **ahTsDsH=_float_** Heating design supply temperature, for sizing coil vs fan. -<%= member_table( -units: "^o^F", -legal_range: "x $>$ 0", -default: "_ahTsMx_", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "x $>$ 0", + "default": "_ahTsMx_", + "required": "No", + "variability": "hourly" + }) +}} **ahCtu=_terminal name_** Terminal monitored to determine whether to heat or cool under ZN and ZN2 supply temperature setpoint control. Development aid feature; believe there is no need to give this since ahTsSp = ZN or ZN2 should only be used with one zone. -<%= member_table( -units: "", -legal_range: "name of a TERMINAL", -default: "AIRHANDLER's TERMINAL, if only one", -required: "If _ahTsSp_ = ZN with more than 1 TERMINAL", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "name of a TERMINAL", + "default": "AIRHANDLER's TERMINAL, if only one", + "required": "If _ahTsSp_ = ZN with more than 1 TERMINAL", + "variability": "hourly" + }) +}} @@ -232,12 +260,15 @@ When the return air temperature is between *ahTsRaMn*and _ahTsRaMx_, the supply If return air moves outside the range _ahTsRaMn_ to _ahTsRaMx_, the supply temperature setpoint does not change further. -<%= member_table( -units: "^o^F", -legal_range: "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", -default: "_none_", -required: " Only for _ahTsSp_=RA", -variability: "hourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", + "default": "_none_", + "required": " Only for _ahTsSp_=RA", + "variability": "hourly" + }) +}} ## AIRHANDLER Supply fan @@ -247,23 +278,29 @@ All AIRHANDLERs have supply fans. Supply fan type/position. A BLOWTHRU fan is located in the air path before the coils; a DRAWTHRU fan is after the coils. -<%= member_table( -units: "", -legal_range: "DRAWTHRU, BLOWTHRU", -default: "DRAWTHRU", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "DRAWTHRU, BLOWTHRU", + "default": "DRAWTHRU", + "required": "No", + "variability": "constant" + }) +}} **sfanVfDs=_float_** Design or rated (volumetric) air flow at rated pressure. Many fans will actually blow a larger volume of air at reduced pressure: see sfanVfMxF (next). -<%= member_table( -units: "cfm", -legal_range: "_AUTOSIZE_ or _x_ $\\ge$ 0", -default: "_none_", -required: "Yes", -variability: "constant") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "_AUTOSIZE_ or _x_ $\\ge$ 0", + "default": "_none_", + "required": "Yes", + "variability": "constant" + }) +}} **sfanVfMxF=_float_** @@ -271,23 +308,29 @@ Overrun factor: maximum factor by which fan will exceed rated flow (at reduced p We recommend giving 1.0 to eliminate overrun in constant volume modeling. -<%= member_table( -units: "", -legal_range: "_x_ $\\ge$ 1.0", -default: "1.3", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_x_ $\\ge$ 1.0", + "default": "1.3", + "required": "No", + "variability": "constant" + }) +}} **sfanPress*=float*** Design or rated pressure. The work done by the fan is computed as the product of this pressure and the current flow, except that the flow is limited to sfanVfDs. That is, in overrun (see _sfanVfMxF_) it is assumed that large VAV terminal damper openings allow the pressure to drop in proportion to the flow over rated. This work is added to the air as heat at the fan, and is termed "fan heat". Setting sfanPress to zero will eliminate simulated fan heat for theoretical simulation of a coil only. -<%= member_table( -units: "inches H~2~O", -legal_range: "_x_ $\\gt$ 0", -default: "3", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "inches H~2~O", + "legal_range": "_x_ $\\gt$ 0", + "default": "3", + "required": "No", + "variability": "constant" + }) +}} Prior text: At most, one of the next two items may be given: in combination with sfanVfDs and sfanPress, either is sufficient to compute the other. SfanCurvePy is then used to compute the mechanical power at the fan shaft at partial loads; sfanMotEff allows determining the electrical input from the shaft power. @@ -297,34 +340,43 @@ New possible text (after addition of sfanElecPwr): Only one of sfanElecPwr, sfan Fan input power per unit air flow (at design flow and pressure). -<%= member_table( -units: "W/cfm", -legal_range: "_x_ $\\gt$ 0", -default: "derived from sfanEff and sfanShaftBhp", -required: "If sfanEff and sfanShaftBhp not present", -variability: "constant") %> +{{ + member_table({ + "units": "W/cfm", + "legal_range": "_x_ $\\gt$ 0", + "default": "derived from sfanEff and sfanShaftBhp", + "required": "If sfanEff and sfanShaftBhp not present", + "variability": "constant" + }) +}} **sfanEff=_float_** Fan efficiency at design flow and pressure, as a fraction. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "derived from _sfanShaftBhp_ if given, else 0.65", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "derived from _sfanShaftBhp_ if given, else 0.65", + "required": "No", + "variability": "constant" + }) +}} **sfanShaftBhp=_float_** Fan shaft brake horsepower at design flow and pressure. -<%= member_table( -units: "bhp", -legal_range: "_x_ $\\gt$ 0", -default: "derived from _sfanEff_.", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "bhp", + "legal_range": "_x_ $\\gt$ 0", + "default": "derived from _sfanEff_.", + "required": "No", + "variability": "constant" + }) +}} **sfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** @@ -341,23 +393,29 @@ where: If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. -<%= member_table( -units: "", -legal_range: "", -default: "_0, 1, 0, 0, 0 (linear)_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "_0, 1, 0, 0, 0 (linear)_", + "required": "No", + "variability": "constant" + }) +}} **sfanMotEff=_float_** Motor/drive efficiency. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.9", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.9", + "required": "No", + "variability": "constant" + }) +}} **sfanMotPos=_choice_** @@ -374,12 +432,15 @@ END Name of meter, if any, to record energy used by supply fan. End use category used is "Fan". -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} ## AIRHANDLER Return/Relief fan @@ -396,45 +457,57 @@ NONE, no return/relief fan in this AIRHANDLER. END %> -<%= member_table( -units: "", -legal_range: "NONE, RETURN, RELIEF", -default: "NONE", -required: "Yes, if fan present", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "NONE, RETURN, RELIEF", + "default": "NONE", + "required": "Yes, if fan present", + "variability": "constant" + }) +}} **rfanVfDs=_float_** design or rated (volumetric) air flow. -<%= member_table( -units: "cfm", -legal_range: "_AUTOSIZE_ or _x_ $\\gt$ 0", -default: "_sfanVfDs - oaVfDsMn_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "_AUTOSIZE_ or _x_ $\\gt$ 0", + "default": "_sfanVfDs - oaVfDsMn_", + "required": "No", + "variability": "constant" + }) +}} **rfanVfMxF=_float_** factor by which fan will exceed design flow (at reduced pressure). -<%= member_table( -units: "", -legal_range: "_x_ $\\ge$ 1.0", -default: "1.3", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_x_ $\\ge$ 1.0", + "default": "1.3", + "required": "No", + "variability": "constant" + }) +}} **rfanPress=_float_** design or rated pressure. -<%= member_table( -units: "inches H~2~O", -legal_range: "_x_ $\\gt$ 0", -default: "0.75", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "inches H~2~O", + "legal_range": "_x_ $\\gt$ 0", + "default": "0.75", + "required": "No", + "variability": "constant" + }) +}} _At most, one of the next three?? items may be defined: ??_ rework re rfanElecPwr @@ -442,34 +515,43 @@ _At most, one of the next three?? items may be defined: ??_ rework re rfanElecPw Fan input power per unit air flow (at design flow and pressure). -<%= member_table( -units: "W/cfm", -legal_range: "_x_ $>$ 0", -default: "derived from rfanEff and rfanShaftBhp", -required: "If rfanEff and rfanShaftBhp not present", -variability: "constant") %> +{{ + member_table({ + "units": "W/cfm", + "legal_range": "_x_ $>$ 0", + "default": "derived from rfanEff and rfanShaftBhp", + "required": "If rfanEff and rfanShaftBhp not present", + "variability": "constant" + }) +}} **rfanEff=_float_** Fan efficiency at design flow and pressure. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "derived from _rfanShaftBhp_ if given, else 0.65", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "derived from _rfanShaftBhp_ if given, else 0.65", + "required": "No", + "variability": "constant" + }) +}} **rfanShaftBhp=_float_** Fan shaft brake horsepower at design flow and pressure. -<%= member_table( -units: "bhp", -legal_range: "_x_ $\\gt$ 0", -default: "derived from _rfanEff_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "bhp", + "legal_range": "_x_ $\\gt$ 0", + "default": "derived from _rfanEff_", + "required": "No", + "variability": "constant" + }) +}} **rfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** @@ -486,45 +568,57 @@ where: If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. -<%= member_table( -units: "", -legal_range: "", -default: "_0, 1, 0, 0, 0 (linear)_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "_0, 1, 0, 0, 0 (linear)_", + "required": "No", + "variability": "constant" + }) +}} **rfanMotEff=_float_** Motor/drive efficiency. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.9", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.9", + "required": "No", + "variability": "constant" + }) +}} **rfanMotPos=_choice_** Motor/drive position. -<%= member_table( -units: "", -legal_range: "IN_FLOW, EXTERNAL", -default: "IN_FLOW", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "IN_FLOW, EXTERNAL", + "default": "IN_FLOW", + "required": "No", + "variability": "constant" + }) +}} **rfanMtr=_mtrName_** Name of meter, if any, to record power consumption of this return fan. May be same or different from meter used for other fans and coils in this and other air handlers. "Fan" end use category is used. -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} ## AIRHANDLER Heating coil/Modeling Furnaces @@ -560,12 +654,15 @@ NONE, AIRHANDLER has no heat coil, thus no heating capability. END %> -<%= member_table( -units: "", -legal_range: "ELECTRIC, HW, GAS OIL, AHP, NONE", -default: "NONE", -required: "Yes, if coil is present", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "ELECTRIC, HW, GAS OIL, AHP, NONE", + "default": "NONE", + "required": "Yes, if coil is present", + "variability": "constant" + }) +}} **ahhcSched=_choice_** @@ -577,45 +674,57 @@ OFF, coil will not operate, no matter how cold supply air is. A HW coil sh END %> -<%= member_table( -units: "", -legal_range: "AVAIL, OFF", -default: "AVAIL", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "AVAIL, OFF", + "default": "AVAIL", + "required": "No", + "variability": "hourly" + }) +}} **ahhcCapTRat=_float_** Total heating (output) capacity. For an ELECTRIC, AHP, GAS, or OIL coil, this capacity is always available. For an HW heating coil, when the total heat being requested from the coil's HEATPLANT would overload the HEATPLANT, the capacity of all HW coils connected to the plant (in TERMINALs as well as AIRHANDLERs) is reduced proportionately until the requested total heat is within the HEATPLANT's capacity. For AHP, this value represents the AHRI rated capacity at 47 ^o^F outdoor temperature. -<%= member_table( -units: "Btuh", -legal_range: "_AUTOSIZE_ or _x_ $\\ge$ 0", -default: "_none_", -required: "Yes, if coil present", -variability: "hourly") %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "_AUTOSIZE_ or _x_ $\\ge$ 0", + "default": "_none_", + "required": "Yes, if coil present", + "variability": "hourly" + }) +}} **ahhcFxCap=_float_** Capacity sizing multiplier for autoSized heating coils. The default value (1.1) specifies 10% oversizing. -<%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "1.1", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "1.1", + "required": "No", + "variability": "constant" + }) +}} **ahhcMtr=_mtrName_** Name of meter to accumulate energy use by this heat coil. The input energy used by the coil is accumulated in the end use category "Htg"; for a heat pump, the energy used by the supplemental resistance heaters (regular and defrost) is accumulated under the category "hp". Not allowed when\*ahhcType\* is HW, as an HW coil's energy comes from its HEATPLANT, and the HEATPLANT's BOILERs accumulate input energy to meters. -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} The following input is used only when _ahhcType_ is HW: @@ -623,12 +732,15 @@ The following input is used only when _ahhcType_ is HW: Name of HEATPLANT supporting hot water coil. -<%= member_table( -units: "", -legal_range: "_name of a HEATPLANT_", -default: "_none_", -required: "if _ahhcType_ is HW", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a HEATPLANT_", + "default": "_none_", + "required": "if _ahhcType_ is HW", + "variability": "constant" + }) +}} The following inputs are used only for furnaces (_ahhcType_ = GAS or OIL). @@ -638,23 +750,29 @@ One of the next two items, but not both, **must** be given for furnaces: Rated energy input ratio (input energy/output energy) at full power. -<%= member_table( -units: "", -legal_range: "_x_ $\\ge$ 1", -default: "_none_", -required: "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "_x_ $\\ge$ 1", + "default": "_none_", + "required": "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", + "variability": "hourly" + }) +}} **ahhcEffR=_float_** Rated efficiency (output energy/input energy; 1/ahhcEirR) at full power -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "_none_", -required: "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "_none_", + "required": "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", + "variability": "hourly" + }) +}} **ahhcPyEi=$k_0$, $k_1$, $k_2$, $k_3$** @@ -670,12 +788,15 @@ $$\text{pyEi}(\text{plrAv}) = 0.01861 + 1.094209 \cdot \textbf{plrAv} - 0.112819 Note that the value of this polynomial adjusts the energy input, not the energy input ratio, for part load operation. -<%= member_table( -units: "", -legal_range: "", -default: "0.01861, 1.094209, -0.112819, 0.0.", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "0.01861, 1.094209, -0.112819, 0.0.", + "required": "No", + "variability": "constant" + }) +}} **ahhcStackEffect=_float_** @@ -700,12 +821,15 @@ The factor "`sqrt(200.-@Top.tDbO)`" represents the volume of infiltrated air tha The divisor "`/ (10*68*sqrt(200))`" is to make the value 0.1 when tDbO is 0, that is, to make the stack effect loss use 10% of unused load when it is 0 degrees out. The actual modeling engineer must know enough about his building to be able to estimate the additional infiltration load at some temperature. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0", + "required": "No", + "variability": "hourly" + }) +}} The following heat coil input members, beginning with _ahp-_, are used when modeling the heating function of an air source heat pump with the air handler heat coil, that is, when _ahhcType_= AHP is given. Also, see the "AIRHANDLER Crankcase Heater" section with regard to specifying the heat pump's crankcase heater. @@ -713,100 +837,127 @@ The following heat coil input members, beginning with _ahp-_, are used when mode AHRI steady state (continuous operation) rated capacity at 70 degrees F indoor (return) air temp, and 17 degrees F outdoor temp, respectively. These values reflect no cycling, frost, or defrost degradation. To help you find input errors, the program issues an error message if ahpCap17 >= ahhcCapTRat. -<%= member_table( -units: "Btuh", -legal_range: "_x_ $\\gt$ 0", -default: "_none_", -required: "Yes, for AHP coil", -variability: "constant") %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "_x_ $\\gt$ 0", + "default": "_none_", + "required": "Yes, for AHP coil", + "variability": "constant" + }) +}} **ahpCapRat1747=_float_** The ratio of AHRI steady state (continuous operation) rated capacities at 17 and 47 degrees F outdoor temp. This is used to determine _ahpCap35_ when _ahhcCapTRat_ is AUTOSIZEd. -<%= member_table( -units: "", -legal_range: "_x_ $\\gt$ 0", -default: "0.6184", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_x_ $\\gt$ 0", + "default": "0.6184", + "required": "No", + "variability": "constant" + }) +}} **ahpCapRat9547=_float_** Ratio of ahccCapTRat to ahhcCapTRat. This ratio is used for defaulting of AUTOSIZEd heat pump heating and cooling capacities such that they have consistent values as is required given that a heat pump is a single device. If not given, ahpCapRat9547 is determined during calculations using the relationship ahccCapTRat = 0.98 \* ahhcCapTRat + 180 (derived via correlation of capacities of a set of real units). -<%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "See above", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "See above", + "required": "No", + "variability": "constant" + }) +}} **ahpCap35=_float_** AHRI steady state (continuous operation) rated capacity at 35 F outdoor temp, reflecting frost buildup and defrost degradation but no cycling. Unlikely to be available for input; if not given, will be defaulted to _ahpFd35Df_ (next description) times a value determined by linear interpolation between the given _ahpCap17_ and _ahhcCapTRat_ values. If _ahpCap35_ is given, CSE will issue an error message if it is greater than value determined by linear interpolation between _ahpCap17_ and _ahhcCapTRat_. -<%= member_table( -units: "Btuh", -legal_range: "_x_ $\\gt$ 0", -default: "from ahpFd35Df", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "_x_ $\\gt$ 0", + "default": "from ahpFd35Df", + "required": "No", + "variability": "constant" + }) +}} **ahpFd35Df=_float_** Default frost/defrost degradation factor at 35 F: reduction of output at unchanged input, due to defrosting and due to frost on outdoor coil. Used in determining default value for _ahpCap35_ (preceding description); not used if _ahpCap35_ is given. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.85", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.85", + "required": "No", + "variability": "constant" + }) +}} **ahpCapIa=_float_** Capacity correction factor for indoor (return) air temperature, expressed as a fraction reduction in capacity per degree above 70F. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.004", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.004", + "required": "No", + "variability": "constant" + }) +}} **ahpCapSupH=_float_** Output capacity of the supplemental reheat coil used when heat pump alone cannot meet the load or to offset the defrost cooling load. Energy consumed by this heater is accumulated in category "HPBU" of ahhcMeter (whereas energy consumption of the heat pump compressor is accumulated under category "Htg"). -<%= member_table( -units: "Btu/hr", -legal_range: "_x_ $\\ge$ 0", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "Btu/hr", + "legal_range": "_x_ $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **ahpEffSupH=_float_** Efficiency of the supplemental reheat coil. Use values other than the default for gas supplemental heaters. -<%= member_table( -units: "", -legal_range: "_x_ $\\gt$ 0", -default: "1.0", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "_x_ $\\gt$ 0", + "default": "1.0", + "required": "No", + "variability": "hourly" + }) +}} **ahpSupHMtr=_mtrName_** Specifies a meter for recording supplemental heater energy use. End use category "HPBU" is used. -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} The next seven inputs specify frost buildup and defrosting and their effect on capacity. @@ -832,12 +983,15 @@ In other words, the curve of capacity loss due to frost buildup follows straight An error will occur unless _ahpTFrMn_ < _ahpTFrPk_ < _ahpTFrMx_ and _ahpTFrMn_ < 35 < *ahpTFrMx*. -<%= member_table( -units: "^o^F", -legal_range: "_x_ $\\gt$ 0", -default: "_ahpTFrMn_: 17, _ahpTFrMx_: 47, _ahpTFrPk_: 42", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_x_ $\\gt$ 0", + "default": "_ahpTFrMn_: 17, _ahpTFrMx_: 47, _ahpTFrPk_: 42", + "required": "No", + "variability": "constant" + }) +}} **ahpDfrFMn=_float_** @@ -859,23 +1013,29 @@ During the fraction of the time spent defrosting, the heat pump's input remains The program will issue an error message if _ahpDfrFMx_ $\le$ _ahpDfrFMn_. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "_ahpDfrFMn_: .0222, (2 minutes/90 minutes), _ahpDfrFMx_:.0889, (8 minutes / 90 minutes)", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "_ahpDfrFMn_: .0222, (2 minutes/90 minutes), _ahpDfrFMx_:.0889, (8 minutes / 90 minutes)", + "required": "No", + "variability": "constant" + }) +}} **ahpDfrCap=_float_** Cooling capacity (to air handler supply air) during defrosting. Program separately computes the lost heating capacity during defrosting, but effects of switchover transient should be included in _ahpDfrCap_. -<%= member_table( -units: "Btuh", -legal_range: "_x_ $\\neq$ 0", -default: "2 $\\cdot$ _ahpCap17_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "_x_ $\\neq$ 0", + "default": "2 $\\cdot$ _ahpCap17_", + "required": "No", + "variability": "constant" + }) +}} **ahpTOff=_float_** @@ -883,12 +1043,15 @@ variability: "constant") %> Heat pump low temperature cutout setpoints. Heat pump is disabled (only the supplemental resistance heater operates) when outdoor temperature falls below _ahpTOff_, and is re-enabled when temperature rises above _ahpTOn_. Different values may be given to simulate thermostat differential. _ahpTOff_ must be $\le$ _ahpTOn_; equal values are accepted. -<%= member_table( -units: "^o^F", -legal_range: "", -default: "_ahpTOff_: 5, _ahpTOn_: 12", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "", + "default": "_ahpTOff_: 5, _ahpTOn_: 12", + "required": "No", + "variability": "constant" + }) +}} The next four inputs specify the heating power input for an air source heat pump: @@ -898,34 +1061,43 @@ The next four inputs specify the heating power input for an air source heat pump Steady state (full power, no cycling) coeffient of performance for compressor and crankcase heater at 70 degrees F indoor (return) air temp and 47 and 17 degrees F outdoor temp, respectively. -<%= member_table( -units: "kW", -legal_range: "_x_ $\\gt$ 0", -default: "_none_", -required: "Yes, for AHP coil", -variability: "constant") %> +{{ + member_table({ + "units": "kW", + "legal_range": "_x_ $\\gt$ 0", + "default": "_none_", + "required": "Yes, for AHP coil", + "variability": "constant" + }) +}} **ahpInIa=_float_** Indoor (return) air temp power input correction factor: fraction increase in steady-state input per degree above 70 F, or decrease below 70F. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.004", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.004", + "required": "No", + "variability": "constant" + }) +}} **ahpCd=_float_** AHRI cycling degradation coefficient: ratio of fraction drop in system coefficient of performance (COP) to fraction drop in capacity when cycling, from steady-state values, in AHRI 47 F cycling performance tests. A value of .25 means that if the heat pump is cycled to drop its output to 20% of full capacity (i.e. by the fraction .8), its COP will drop by .8 \* .25 = .2. Here COP includes all energy inputs: compressor, crankcase heater, defrost operation, etc. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.25", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.25", + "required": "No", + "variability": "constant" + }) +}} The following four air handler heat coil members allow specification of auxiliary input power consumption associated with the heat coil (or furnace) under the indicated conditions. The single description box applies to all four. @@ -933,23 +1105,29 @@ The following four air handler heat coil members allow specification of auxiliar Auxiliary energy used by the heating coil. -<%= member_table( -units: "Btu/hr", -legal_range: "_x_ $\\ge$ 0", -default: "0", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "Btu/hr", + "legal_range": "_x_ $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "hourly" + }) +}} **ahhcAuxMtr=_mtrName_** Specifies a meter for recording auxiliary energy use. End use category "Aux" is used. -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} ## AIRHANDLER Cooling coil @@ -969,12 +1147,15 @@ NONE, AIRHANDLER has no cooling coil and no cooling capability. END %> -<%= member_table( -units: "", -legal_range: "ELECTRIC, DX, CHW, NONE", -default: "NONE", -required: "Yes, if coil present", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "ELECTRIC, DX, CHW, NONE", + "default": "NONE", + "required": "Yes, if coil present", + "variability": "constant" + }) +}} **ahccSched*=choice*** @@ -986,12 +1167,15 @@ OFF, Cooling coil will not operate no matter how hot the supply air is. To avoid END %> -<%= member_table( -units: "", -legal_range: "AVAIL, OFF", -default: "AVAIL", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "AVAIL, OFF", + "default": "AVAIL", + "required": "No", + "variability": "constant" + }) +}} **ahccCapTRat=_float_** @@ -999,56 +1183,71 @@ Total rated capacity of coil: sum of its "sensible" (heat-removing) and "latent" For coil specification conditions (a.k.a. rating conditions or design conditions), see _ahccDsTDbEn_, _ahccDsTWbEn_, *ahccDsTDbCnd*and *ahccVfR*below (see index). -<%= member_table( -units: "Btuh", -legal_range: "_AUTOSIZE_ or _x_ $>$ 0", -default: "_none_", -required: "Yes", -variability: "constant") %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "_AUTOSIZE_ or _x_ $>$ 0", + "default": "_none_", + "required": "Yes", + "variability": "constant" + }) +}} **ahccCapSRat=_float_** Sensible (heat-removing) rated capacity of cooling coil. Not used with CHW coils. -<%= member_table( -units: "Btuh", -legal_range: "_x_ $>$ 0", -default: "_none_", -required: "Yes", -variability: "constant") %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "_x_ $>$ 0", + "default": "_none_", + "required": "Yes", + "variability": "constant" + }) +}} **ahccSHRRat=_float_** Rated sensible heat ratio (_ahccCapSRat_/_ahccCapTRat_) for cooling coil. Default based on correlation to _ahccVfRperTon_. Not used with CHW coils. -<%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "based on _ahccVfRperTon_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "based on _ahccVfRperTon_", + "required": "No", + "variability": "constant" + }) +}} **ahccFxCap=_float_** Capacity sizing multiplier for autoSized cooling coils. The default value (1.1) specifies 10% oversizing. -<%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "1.1", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "1.1", + "required": "No", + "variability": "constant" + }) +}} **ahccMtr=_mtrName_** Name of meter, if any, to record energy use of air handler cool coil. End use category "Clg" is used. Not used with CHW coils, because the input energy use for a CHW coil is recorded by the COOLPLANT's CHILLERs. -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} The following six members are used with DX cooling coils. @@ -1056,34 +1255,43 @@ The following six members are used with DX cooling coils. Minimum (effective surface) temperature of coil (evaporator). Represents refrigerant setpoint, or cutout to prevent freezing. Coil model will reduce output to keep simulated coil from getting colder than this, even though it lets supply air get warmer than setpoint. Should default be 35?? -<%= member_table( -units: "^o^F", -legal_range: "_x_ $>$ 0", -default: "40^o^F", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_x_ $>$ 0", + "default": "40^o^F", + "required": "No", + "variability": "constant" + }) +}} **ahccK1=_float_** Exponent in power relationship expressing coil effectiveness as a function of relative air flow. Used as K1 in the relationship ntu = ntuR \* relCfmk1, which says that the "number of transfer units" (on the coil outside or air side) varies with the relative air flow raised to the K1 power. Used with CHW as well as DX coils; for a CHW coil, ntuR in the formula is _ahccNtuoDs_. -<%= member_table( -units: "", -legal_range: "_x_ $<$ 0", -default: "-0.4", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_x_ $<$ 0", + "default": "-0.4", + "required": "No", + "variability": "constant" + }) +}} **ahccBypass=_float_** Fraction of air flow which does NOT flow through DX cooling coil, for better humidity control. Running less of the air through the coil lets the coil run colder, resulting in greater moisture removal right??. -<%= member_table( -units: "", -legal_range: "0 $\\lt$ _x_ $\\le$ 1", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\lt$ _x_ $\\le$ 1", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} The next three members are used in determining the energy input to a DX coil under various load conditions. The input is derived from the full load energy input ratio for four segments of the part load curve. In the following the part load ratio (plr) is the ratio of the actual sensible + latent load on the coil to the coil's capacity. The coil's capacity is ahccCaptRat, adjusted by the coil model for differences between entering air temperature, humidity, and flow rate and the coil rating conditions. The coil may run at less than capacity even at full fan flow, depending on the air temperature change needed, the moisture content of the entering air, and the relative values of between _sfanVfDs_ and _ahccVfR_. @@ -1105,34 +1313,43 @@ The default values for the following three members are the DOE2 PTAC (Window air DX compressor energy input ratio (EIR) at full load under rated conditions; defined as the full-load electric energy input divided by the rated capacity, both in Btuh; same as the reciprocal of the Coefficient Of Performance (COP). Polynomials given below are used by CSE to adjust the energy input for part load and for off rated flow and temperature conditions. The default value includes outdoor (condenser) fan energy, but not indoor (air handler supply) fan energy. -<%= member_table( -units: "", -legal_range: "", -default: "0.438", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "0.438", + "required": "No", + "variability": "constant" + }) +}} **ahccMinUnldPlr=_float_** Compressor part load ratio (total current load/current capacity) at/above which "Compressor unloading" is used and pydxEirUl (below) is used to adjust the full-load power input to get the current part load power input. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "1 (no unloading)", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "1 (no unloading)", + "required": "No", + "variability": "constant" + }) +}} **ahccMinFsldPlr=_float_** "False Loading" is used between this compressor part load ratio and the plr where unloading is activated (_ahccMinUnldPlr_). In this region, input remains at _pydxEirUl_(*ahccMinUnldPlr).*For plr's less than _ahccMinFsldPlr_, cycling is used, and the power input goes to 0 in a straight line. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ _ahccMinUnldPlr_", -default: "_ahccMinUnldPlr_ (no false loading)", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ _ahccMinUnldPlr_", + "default": "_ahccMinUnldPlr_ (no false loading)", + "required": "No", + "variability": "constant" + }) +}} The following four inputs specify polynomials to approximate functions giving DX coil capacity and power (energy) input as functions of entering temperatures, relative (to ahccVfR) flow, and relative load (plr). In each case several _float_ values may be given, for use as coefficients of the polynomial. The values are ordered from constant to coefficient of highest power. If fewer than the maximum number of values are given, zeroes are used for the trailing (high order) coefficients. @@ -1164,45 +1381,57 @@ The default values for the polynomial coefficients are the DOE2 PTAC values. Coefficients of biquadratic polynomial function of entering air wetbulb and condenser temperatures whose value is used to adjust _ahccCaptRat_ for the actual entering air temperatures. The condenser temperature is the outdoor drybulb, but not less than 70. See discussion in preceding paragraphs. -<%= member_table( -units: "", -legal_range: "", -default: "1.1839345, -0.0081087, 0.00021104, -0.0061425, 0.00000161, -0.0000030", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "1.1839345, -0.0081087, 0.00021104, -0.0061425, 0.00000161, -0.0000030", + "required": "No", + "variability": "constant" + }) +}} **pydxCaptF=a=a, b, c, d** Coefficients of cubic polynomial function of relative flow (entering air cfm/_ahccVfR_) whose value is used to adjust _ahccCaptRat_ for the actual flow. See discussion in preceding paragraphs. -<%= member_table( -units: "", -legal_range: "", -default: "0.8, 0.2, 0.0, 0.0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "0.8, 0.2, 0.0, 0.0", + "required": "No", + "variability": "constant" + }) +}} **pydxCaptFLim=_float_** Upper limit for value of pydxCaptF. -<%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "1.05", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "1.05", + "required": "No", + "variability": "constant" + }) +}} **pydxEirT=_a, b, c, d, e, f_** Coefficients of biquadratic polynomial function of entering air wetbulb and condenser temperatures whose value is used to adjust _ahccEirR_ for the actual entering air temperatures. The condenser temperature is the outdoor air drybulb, but not less than 70. If the entering air wetbulb is less than 60, 60 is used, in this function only. See discussion in preceding paragraphs. -<%= member_table( -units: "", -legal_range: "", -default: "-0.6550461, 0.03889096, -0.0001925, 0.00130464, 0.00013517, -0.0002247", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "-0.6550461, 0.03889096, -0.0001925, 0.00130464, 0.00013517, -0.0002247", + "required": "No", + "variability": "constant" + }) +}} **pydxEirUl=_a, b, c, d_** @@ -1210,12 +1439,15 @@ Coefficients of cubic polynomial function of part load ratio used to adjust ener This polynomial adjusts the full load energy input to part load, not the ratio of input to output, despite the "Eir" in its name. -<%= member_table( -units: "", -legal_range: "", -default: "0.125, 0.875, 0.0, 0.0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "0.125, 0.875, 0.0, 0.0", + "required": "No", + "variability": "constant" + }) +}} The following four members are used only with CHW coils. In addition, _ahccK1,_ described above, is used. @@ -1223,45 +1455,57 @@ The following four members are used only with CHW coils. In addition, _ahccK1,_ name of COOLPLANT supporting CHW coil. COOLPLANTs contain CHILLERs, and are described in Section 5.21. -<%= member_table( -units: "", -legal_range: "_name of a COOLPLANT_", -default: "_none_", -required: "for CHW coil", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a COOLPLANT_", + "default": "_none_", + "required": "for CHW coil", + "variability": "constant" + }) +}} **ahccGpmDs=_float_** Design (i.e. maximum) water flow through CHW coil. -<%= member_table( -units: "gpm", -legal_range: "_x_ $\\ge$ 0", -default: "_none_", -required: "Yes, for CHW coil", -variability: "constant") %> +{{ + member_table({ + "units": "gpm", + "legal_range": "_x_ $\\ge$ 0", + "default": "_none_", + "required": "Yes, for CHW coil", + "variability": "constant" + }) +}} **ahccNtuoDs=_float_** CHW coil outside number of transfer units at design air flow (ahccVfR*, below). See*ahccK1\* above with regard to transfer units at other air flows. -<%= member_table( -units: "", -legal_range: "_x_ $\\gt$ 0", -default: "2", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_x_ $\\gt$ 0", + "default": "2", + "required": "No", + "variability": "constant" + }) +}} **ahccNtuiDs=_float_** CHW coil inside number of transfer units at design water flow (ahccGpmDs, above). -<%= member_table( -units: "", -legal_range: "_x_ $\\gt$ 0", -default: "2", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_x_ $\\gt$ 0", + "default": "2", + "required": "No", + "variability": "constant" + }) +}} The following four members let you give the specification conditions for the cooling coil: the rating conditions, design conditions, or other test conditions under which the coil's performance is known. The defaults are AHRI (Air-Conditioning and Refrigeration Institute) standard rating conditions. @@ -1269,45 +1513,57 @@ The following four members let you give the specification conditions for the coo Design (rating) entering air dry bulb temperature, used with DX and CHW cooling coils. With CHW coils, this input is used only as the temperature at which to convert _ahccVfR_ from volume to mass. -<%= member_table( -units: "^o^F", -legal_range: "_x_ $\\gt$ 0", -default: "80^o^F (AHRI)", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_x_ $\\gt$ 0", + "default": "80^o^F (AHRI)", + "required": "No", + "variability": "constant" + }) +}} **ahccDsTWbEn=_float_** Design (rating) entering air wet bulb temperature, for CHW coils. -<%= member_table( -units: "^o^F", -legal_range: "_x_ $\\gt$ 0", -default: "67^o^F (AHRI)", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_x_ $\\gt$ 0", + "default": "67^o^F (AHRI)", + "required": "No", + "variability": "constant" + }) +}} **ahccDsTDbCnd=_float_** Design (rating) condenser temperature (outdoor air temperature) for DX coils. -<%= member_table( -units: "^o^F", -legal_range: "_x_ $\\gt$ 0", -default: "95^o^F (AHRI)", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_x_ $\\gt$ 0", + "default": "95^o^F (AHRI)", + "required": "No", + "variability": "constant" + }) +}} **ahccVfR=_float_** Design (rating) (volumetric) air flow rate for DX or CHW cooling coil. The AHRI specification for this test condition for CHW coils is "450 cfm/ton or less", right?? -<%= member_table( -units: "cfm", -legal_range: "_x_ $\\gt$ 0", -default: "DX coil: _ahccVfRperTon_ CHW coil: _sfanVfDs_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "_x_ $\\gt$ 0", + "default": "DX coil: _ahccVfRperTon_ CHW coil: _sfanVfDs_", + "required": "No", + "variability": "constant" + }) +}} The following four members permit specification of auxiliary input power use associated with the cooling coil under the conditions indicated. @@ -1315,34 +1571,43 @@ The following four members permit specification of auxiliary input power use ass Design default _ahccVfR_ per ton (12000 Btuh) of _ahhcCapTRat_. -<%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "400.0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "400.0", + "required": "No", + "variability": "constant" + }) +}} **ahccAux=_float_** Auxiliary energy used by the cooling coil. -<%= member_table( -units: "Btu/hr", -legal_range: "_x_ $\\ge$ 0", -default: "0", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "Btu/hr", + "legal_range": "_x_ $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "hourly" + }) +}} **ahccAuxMtr=_mtrName_** Specifies a meter for recording auxiliary energy use. End use category "Aux" is used. -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} ## AIRHANDLER Outside Air @@ -1363,34 +1628,43 @@ END If the minimum outside air flow is greater than the total requested by the terminals served by the air handler, then 100% outside air at the latter flow is used. To insure minimum outside air cfm to the zones, use suitable terminal minimum flows (_tuVfMn_) as well as air handler minimum outside air specifications. -<%= member_table( -units: "", -legal_range: "VOLUME, FRACTION", -default: "VOLUME", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "VOLUME, FRACTION", + "default": "VOLUME", + "required": "No", + "variability": "constant" + }) +}} **oaVfDsMn=_float_** Design minimum outside air flow. If _oaMnCtrl_ is FRACTION, then this is the minimum outside air flow at full air handler flow. See formulas in _oaMnCtrl_ description, just above. -<%= member_table( -units: "cfm", -legal_range: "_x_ $\\ge$ 0", -default: "0.15 times total area of zones served", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "_x_ $\\ge$ 0", + "default": "0.15 times total area of zones served", + "required": "No", + "variability": "constant" + }) +}} **oaMnFrac=_float_** Fraction of minimum outside air to use this hour, normally 1.0. Use a CSE expression that evaluates to 0 for hours you wish to disable the minimum outside air flow, for example to suppress ventilation during the night or during warm-up hours. Intermediate values may be used for intermediate outside air minima. See formulas in _oaMnCtrl_ description, above. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "1.0", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "1.0", + "required": "No", + "variability": "hourly" + }) +}} CAUTION: the minimum outside air flow only applies when the supply fan is running; it won't assure meeting minimum ventilation requirements when used with ahFanCycles = YES (constant volume, fan cycling). @@ -1400,12 +1674,15 @@ For the purposes of airnet zone pressure modeling ONLY, _oaZoneLeak_ specifies t The default assumption is that airhandlers with return or relief fans provide balanced zone flows while half the supply flow leaks from zones served by supply-fan-only airhandlers. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "no return/relief fan: 0.5 else 0", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "no return/relief fan: 0.5 else 0", + "required": "No", + "variability": "hourly" + }) +}} If an _oaEcoType_ choice other than NONE is given, an economizer will be simulated. The economizer will be enabled when the outside temperature is below oaLimT _AND_ the outside air enthalpy is below oaLimE. When enabled, the economizer adjusts the economizer dampers to increase the outside air mixed with the return air until the mixture is cooler than the air handler supply temperature setpoint, if possible, or to maximum outside air if the outside air is not cool enough. @@ -1433,23 +1710,29 @@ END Economizer outside air temperature high limit. The economizer is disabled (outside air flow is reduced to a minimum) when the outside air temperature is greater than _oaLimT_. A number may be entered, or "RA" to specify the current Return Air temperature. _OaLimT_ may be scheduled to a low value, for example -99, if desired to disable the economizer at certain times. -<%= member_table( -units: "^o^F", -legal_range: "_number_ or RA", -default: "RA (return air temperature)", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_number_ or RA", + "default": "RA (return air temperature)", + "required": "No", + "variability": "hourly" + }) +}} **oaLimE=_float_ or _RA_** Economizer outside air enthalpy high limit. The economizer is disabled (outside air flow is reduced to a minimum) when the outside air enthalpy is greater than _oaLimE_. A number may be entered, or "RA" to specify the current Return Air enthalpy. _OaLimE_ may be scheduled to a low value, for example -99, if desired to disable the economizer at certain times. -<%= member_table( -units: "Btu/^o^F", -legal_range: "_number_ or RA", -default: "999 (enthalpy limit disabled)", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "Btu/^o^F", + "legal_range": "_number_ or RA", + "default": "999 (enthalpy limit disabled)", + "required": "No", + "variability": "hourly" + }) +}} _oaOaLeak_ and _oaRaLeak_ specify leakages in the economizer dampers, when present. The leaks are constant-cfm flows, expressed as fractions of the maximum possible flow. Thus, when the current flow is less than the maximum possible, the range of operation of the economizer is reduced. When the two damper leakages add up to more than the current air handler flow, outside and return air are used in the ratio of the two leakages and the economizer, if enabled, is ineffective. @@ -1457,23 +1740,29 @@ _oaOaLeak_ and _oaRaLeak_ specify leakages in the economizer dampers, when prese Outside air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. If an economizer is present, _oaOaLeak_ is a fraction of the supply fan design cfm, _sfanVfDs_. Otherwise, _oaOaLeak_ is a fraction of the design minimum outside air flow _oaVfDsMn_. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0.1", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0.1", + "required": "No", + "variability": "constant" + }) +}} **oaRaLeak=_float_** Return air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. Expressed as a fraction of the supply fan design cfm, _sfanVfDs_. Not used when no economizer is being modeled. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0.1", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0.1", + "required": "No", + "variability": "constant" + }) +}} ## AIRHANDLER Heat Recovery @@ -1483,23 +1772,29 @@ The following data members are used to describe a heat exchanger for recovering Heat exchanger design or rated flow. -<%= member_table( -units: "cfm", -legal_range: "_x_ $\\gt$ 0", -default: "_oaVfDsMn_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "_x_ $\\gt$ 0", + "default": "_oaVfDsMn_", + "required": "No", + "variability": "constant" + }) +}} **oaHXf2=_float_** Heat exchanger flow fraction (of design flow) used for second set of effectivenesses. -<%= member_table( -units: "", -legal_range: "0 $\\lt$ _x_ $\\lt$ 1.0", -default: "0.75", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\lt$ _x_ $\\lt$ 1.0", + "default": "0.75", + "required": "No", + "variability": "constant" + }) +}} **oaHXSenEffHDs=_float_** @@ -1515,111 +1810,141 @@ variability: "constant") %> Heat exchanger sensible effectiveness in heating mode at the second flow rate (**oaHXf2**). -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **oaHXLatEffHDs=_float_** Heat exchanger latent effectiveness in heating mode at the design flow rate. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **oaHXLatEffHf2=_float_** Heat exchanger latent effectiveness in heating mode at the second flow rate (**oaHXf2**). -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **oaHXSenEffCDs=_float_** Heat exchanger sensible effectiveness in cooling mode at the design flow rate. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **oaHXSenEffCf2=_float_** Heat exchanger sensible effectiveness in cooling mode at the second flow rate (**oaHXf2**). -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **oaHXLatEffCDs=_float_** Heat exchanger latent effectiveness in cooling mode at the design flow rate. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **oaHXLatEffCf2=_float_** Heat exchanger latent effectiveness in cooling mode at the second flow rate (**oaHXf2**). -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **oaHXBypass=_choice_** Yes/No choice for enabling heat exchanger bypass. If selected, the outdoor air will bypass the heat exchanger when otherwise the heat exchanger would require more heating or cooling energy to meet the respective setpoints. -<%= member_table( -units: "", -legal_range: "NO, YES", -default: "NO", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "NO, YES", + "default": "NO", + "required": "No", + "variability": "constant" + }) +}} **oaHXAuxPwr=_float_** Auxiliary power required to operate the heat recovery device (e.g., wheel motor, contorls). -<%= member_table( -units: "W", -legal_range: "_x_ $\\ge$ 0", -default: "0", -required: "No", -variability: "subhourly") %> +{{ + member_table({ + "units": "W", + "legal_range": "_x_ $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "subhourly" + }) +}} **oaHXAuxMtr=_mtrName_** Name of meter, if any, to record energy used by auxiliary components of the heat recovery system. -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} ## AIRHANDLER Leaks and Losses @@ -1631,23 +1956,29 @@ If unequal leaks are specified, at present (July 1992) CSE will use the average Supply duct leakage to outdoors, expressed as a fraction of supply fan design flow (_sfanVfDs_). Use 0 if the duct is indoors. A constant-cfm leak is modeled, as the pressure is constant when the fan is on. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.01", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.01", + "required": "No", + "variability": "constant" + }) +}} **ahROLeak=_float_** Return duct leakage FROM outdoors, expressed as a fraction of _sfanVfDs_. Use 0 if the duct is indoors. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.01", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.01", + "required": "No", + "variability": "constant" + }) +}} _AhSOLoss_ and _ahROLoss_ represent conductive losses from the common supply and return ducts to the outdoors. For an individual zone's conductive duct loss, see TERMINAL member _tuSRLoss_. Losses here are expressed as a fraction of the temperature difference which is lost. For example, if the supply air temperature is 120, the outdoor temperature is 60, and the pertinent loss is .1, the effect of the loss as modeled will be to reduce the supply air temperature by 6 degrees ( .1 \* (120 - 60) ) to 114 degrees. CSE currently models these losses a constant _TEMPERATURE LOSSes_ regardless of cfm. @@ -1655,23 +1986,29 @@ _AhSOLoss_ and _ahROLoss_ represent conductive losses from the common supply and Supply duct loss/gain to the outdoors. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.1", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.1", + "required": "No", + "variability": "constant" + }) +}} **ahROLoss=_float_** Return duct heat loss/gain to the outdoors. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.1", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.1", + "required": "No", + "variability": "constant" + }) +}} ## AIRHANDLER Crankcase Heater @@ -1697,34 +2034,43 @@ PTC_CLO, Same as corresponding choices above except zero crankcase heater input END %> -<%= member_table( -units: "", -legal_range: "CONSTANT CONSTANT_CLO PTC PTC_CLO TSTAT NONE", -default: "PTC_CLO if _ahhcType_ is AHP else NONE ", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "CONSTANT CONSTANT_CLO PTC PTC_CLO TSTAT NONE", + "default": "PTC_CLO if _ahhcType_ is AHP else NONE ", + "required": "No", + "variability": "constant" + }) +}} **cchPMx=_float_** Crankcase resistance heater input power; maximum power if _cchCM_ is PTC or PTC_CLO. -<%= member_table( -units: "kW", -legal_range: "_x_ $\\gt$ 0", -default: ".4 kW", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "kW", + "legal_range": "_x_ $\\gt$ 0", + "default": ".4 kW", + "required": "No", + "variability": "constant" + }) +}} **cchPMn=_float_** Crankcase heater minimum input power if _cchCM_ is PTC or PTC_CLO, disallowed for other _cchCM's_. > 0. -<%= member_table( -units: "kW", -legal_range: "_x_ $\\gt$ 0", -default: ".04 kW", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "kW", + "legal_range": "_x_ $\\gt$ 0", + "default": ".04 kW", + "required": "No", + "variability": "constant" + }) +}} **cchTMx=_float_** @@ -1734,23 +2080,29 @@ For _cchCM_ = PTC or PTC_CLO, the low temperature (max power) and high temperatu (Note that actual thermostat setpoints probably cannot be used for _cchTMx_ and _cchTMn_ inputs, because the model assumes the difference between the oil temperature and the outdoor temperature is constant (_cchDT_) regardless of the heater power. -<%= member_table( -units: "^o^F", -legal_range: "", -default: "_cchTMn_: 0; _cchTMx_: 150", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "", + "default": "_cchTMn_: 0; _cchTMx_: 150", + "required": "No", + "variability": "constant" + }) +}} **cchDT=_float_** For _cchCM_ = PTC or PTC_CLO, how much warmer than the outdoor temp CSE assumes the crankcase oil to be in subhours when the compressor does not run. If the compressor runs at all in the subhour, the oil is assumed to be warmer than _cchTMn_. -<%= member_table( -units: "^o^F", -legal_range: "", -default: "20^o^F", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "", + "default": "20^o^F", + "required": "No", + "variability": "constant" + }) +}} **cchTOn=_float_** @@ -1758,34 +2110,43 @@ variability: "constant") %> For _cchCM_ = TSTAT, in subhours when compressor does not run, the crankcase heater turn-on and turn-off outdoor temperatures, respectively. Unequal values may be given to simulate thermostat differential. When the compressor runs at all in a subhour, the crankcase heater is off for the entire subhour. -<%= member_table( -units: "^o^F", -legal_range: "_cchTOff_ $\\ge$ _cchTOn_", -default: "_cchTOn_: 72^o^F; _chcTOff_: _chcTOn_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_cchTOff_ $\\ge$ _cchTOn_", + "default": "_cchTOn_: 72^o^F; _chcTOff_: _chcTOn_", + "required": "No", + "variability": "constant" + }) +}} **cchMtr=_name of a METER_** METER to record crankcase heater energy use, category "Aux"; not recorded if not given. -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} **endAirHandler** Indicates the end of the air handler definition. Alternatively, the end of the air handler definition can be indicated by the declaration of another object. -<%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "_none_", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/battery.md b/doc/src/docs/input-data/battery.md index 7d358d844..b431e3ead 100644 --- a/doc/src/docs/input-data/battery.md +++ b/doc/src/docs/input-data/battery.md @@ -8,13 +8,15 @@ The modeler can set limits and constraints on capacities and flows and the assoc Name of the battery system. Given after the word BATTERY. -<%= member_table( - units: "", - legal_range: "63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **btMeter=*choice*** @@ -22,61 +24,71 @@ Name of a METER to which the BATTERY's charge/discharge energy flows are recorde Note btMeter also determines the source for the probe value *loadSeen*. See discussion and example under btChgReq (below). -<%= member_table( - units: "", - legal_range: "meter name ", - default: "*none* ", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "meter name ", + "default": "*none* ", + "required": "No", + "variability": "constant" + }) +}} **btChgEff=*float*** The charging efficiency of storing electricity into the BATTERY system. A value of 1.0 means that no energy is lost and 100% of charge energy enters and is stored in the battery. -<%= member_table( - units: "", - legal_range: "0 < x $\\le$ 1", - default: "0.975", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 < x $\\le$ 1", + "default": "0.975", + "required": "No", + "variability": "hourly" + }) +}} **btDschgEff=*float*** The discharge efficiency for when the BATTERY system is discharging power. A value of 1.0 means that no energy is lost and 100% of discharge energy leaves the system. -<%= member_table( - units: "", - legal_range: "0 < x $\\le$ 1", - default: "0.975", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 < x $\\le$ 1", + "default": "0.975", + "required": "No", + "variability": "hourly" + }) +}} **btMaxCap=*float*** This is the maximum amount of energy that can be stored in the BATTERY system in kilowatt-hours. Once the BATTERY has reached its maximum capacity, no additional energy will be stored. -<%= member_table( - units: "kWh", - legal_range: "x $\\ge$ 0", - default: "16", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "kWh", + "legal_range": "x $\\ge$ 0", + "default": "16", + "required": "No", + "variability": "constant" + }) +}} **btInitSOE=*float*** The initial state of energy of the BATTERY system as a fraction of the total capacity. If `btInitSOE` is specified, the battery state-of-energy at the beginning of the actual simulation will be set to the amount specified, regardless of whether there was a warm-up period or not. If `btInitSOE` is NOT specififed, it will default to 1.0 (i.e., 100%) at the beginning of the warmup period (if any). -<%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ 0", - default: "1.0", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ x $\\le$ 0", + "default": "1.0", + "required": "No", + "variability": "constant" + }) +}} **btInitCycles=*int*** @@ -88,37 +100,43 @@ Note: a more robust life model will need not only cycle counts but cycles by dep <% end %> -<%= member_table( - units: "number of cycles", - legal_range: "x $\\ge$ 0", - default: "0", - required: "No", - variability: "runly") - %> +{{ + member_table({ + "units": "number of cycles", + "legal_range": "x $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "runly" + }) +}} **btMaxChgPwr=*float*** The maximum rate at which the BATTERY can be charged in kilowatts (i.e., energy flowing *into* the BATTERY). -<%= member_table( - units: "kW", - legal_range: "x $\\ge$ 0", - default: "4", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "kW", + "legal_range": "x $\\ge$ 0", + "default": "4", + "required": "No", + "variability": "hourly" + }) +}} **btMaxDschgPwr=*float*** The maximum rate at which the BATTERY can be discharged in kilowatts (i.e., energy flowing *out of* the BATTERY). -<%= member_table( - units: "kW", - legal_range: "x $\\ge$ 0", - default: "4", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "kW", + "legal_range": "x $\\ge$ 0", + "default": "4", + "required": "No", + "variability": "hourly" + }) +}} **btControlAlg=*choice*** @@ -132,13 +150,15 @@ END Note btControlAlg has hourly variability, allowing dynamic algorithm selection. In California compliance applications, TDVPEAKSAVE is typically used only on days with high TDV peaks. -<%= member_table( - units: "", - legal_range: "DEFAULT or TDVPEAKSAVE", - default: "DEFAULT", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "DEFAULT or TDVPEAKSAVE", + "default": "DEFAULT", + "required": "No", + "variability": "hourly" + }) +}} **btChgReq=*float*** @@ -152,13 +172,15 @@ btChgReq can be set by an expression to allow complex energy management/dispatch The sign conventions here are tricky. min(@BATTERY[ 1].loadSeen, 0) produces a value <=0 that is the negative of the amount of surplus energy available. A positive btChgReq value requests charging, hence "-" (minus sign) in front of the min(). Conversely, max( @BATTERY[ 1].loadSeen, 0) results in a value >= 0 indicating the net energy needed by the building. To request discharge, btChgReq must be negative, so "-" is also needed in the discharge expression. (The @BATTERY[1] references mean "this battery", assuming there is only one battery being modelled. In multi-battery situations, the current BATTERY's index or name must be included within the "[ ]".) -<%= member_table( - units: "kW", - legal_range: "", - default: "btMeter net load", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "kW", + "legal_range": "", + "default": "btMeter net load", + "required": "No", + "variability": "hourly" + }) +}} **btUseUsrChg=*choice*** @@ -168,13 +190,15 @@ Former yes/no choice that currently has no effect. Deprecated, will be removed Optionally indicates the end of the BATTERY definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none* ", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none* ", + "required": "No", + "variability": "constant" + }) +}} -<%= member_table( - units: "^o^F", - legal_range: "*unrestricted*", - default: "*none*", - required: "Required if *sfExCnd* = SPECIFIEDT", - variability: "hourly") - %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "*unrestricted*", + "default": "*none*", + "required": "Required if *sfExCnd* = SPECIFIEDT", + "variability": "hourly" + }) +}} **dsInsulR=*float*** Insulation thermal resistance *not including* surface conductances. dsInsulR and dsInsulMat are used to calculate insulation thickness (see below). Duct insulation is modeled as a pure conductance (no mass). -<%= member_table( - units: "ft^2^-^o^F-hr / Btu", - legal_range: "x $\\ge$ 0", - default: "0", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "ft^2^-^o^F-hr / Btu", + "legal_range": "x $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **dsInsulMat=*matName*** Name of insulation MATERIAL. The conductivity of this material at 70 ^o^F is combined with dsInsulR to derive the duct insulation thickness. If omitted, a typical fiberglass material is assumed having conductivity of 0.025 Btu/hr-ft^2^-F at 70 ^o^F and a conductivity coefficient of .00418 1/F (see MATERIAL). In addition, insulation conductivity is adjusted during the simulation in response its average temperature. As noted with dsInsulR, duct insulation is modeled as pure conductance -- MATERIAL matDens and matSpHt are ignored. -<%= member_table( - units: "", - legal_range: "name of a *MATERIAL*", - default: "fiberglass", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of a *MATERIAL*", + "default": "fiberglass", + "required": "No", + "variability": "constant" + }) +}} **dsLeakF=*float*** Duct leakage. Return duct leakage is modeled as if it all occurs at the segment inlet. Supply duct leakage is modeled as if it all occurs at the outlet. -<%= member_table( - units: "", - legal_range: "0 $<$ x $\\le$ 1", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $<$ x $\\le$ 1", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **dsExH=*float*** Outside (exposed) surface convection coefficient. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "x $\\ge$ 0", - default: ".54", - required: "No", - variability: "subhourly") - %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": "x $\\ge$ 0", + "default": ".54", + "required": "No", + "variability": "subhourly" + }) +}} **endDuctSeg** Optionally indicates the end of the DUCTSEG definition. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/export.md b/doc/src/docs/input-data/export.md index f77ffed63..7799b1009 100644 --- a/doc/src/docs/input-data/export.md +++ b/doc/src/docs/input-data/export.md @@ -14,179 +14,211 @@ Input for EXPORTs is similar to input for REPORTs; refer to the REPORT descripti Name of export. Give after the word EXPORT. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **exExportfile=*fname*** Name of export file to which current export will be written. If omitted, if EXPORT is within an EXPORTFILE object, report will be written to that export file, or else to the automatically-supplied EXPORTFILE "Primary", which by default uses the name of the input file with the extension .csv. -<%= member_table( - units: "", - legal_range: "name of an *EXPORTFILE*", - default: "current *EXPORTFILE*, if any, else 'Primary'", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of an *EXPORTFILE*", + "default": "current *EXPORTFILE*, if any, else 'Primary'", + "required": "No", + "variability": "constant" + }) +}} **exType=*choice*** Choice indicating export type. See descriptions in Section 5.22, REPORT. While not actually disallowed, use of *exType* = ERR, LOG, INP, or ZDD is unexpected. -<%= member_table( - units: "", - legal_range: "ZEB, ZST, MTR, DHWMTR, AH, UDT, or SUM", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "ZEB, ZST, MTR, DHWMTR, AH, UDT, or SUM", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **exFreq=*choice*** Export Frequency: specifies interval for generating rows of export data: -<%= member_table( - units: "", - legal_range: "YEAR, MONTH, DAY, HOUR, HOURANDSUB, SUBHOUR", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "YEAR, MONTH, DAY, HOUR, HOURANDSUB, SUBHOUR", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **exDayBeg=*date*** Initial day of export. Exports for which *exFreq* = YEAR do not allow specification of *exDayBeg* and *exDayEnd*; for MONTH exports, these members are optional and default to include the entire run; for DAY and shorter-interval exports, *exDayBeg* is required and *exDayEnd* defaults to *exDayBeg*. -<%= member_table( - units: "", - legal_range: "*date*", - default: "first day of simulation if *exFreq* = MONTH", - required: "Required for *exTypes* ZEB, ZST, MTR, AH, and UDT if *exFreq* is DAY, HOUR, HOURANDSUB, or SUBHOUR", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*date*", + "default": "first day of simulation if *exFreq* = MONTH", + "required": "Required for *exTypes* ZEB, ZST, MTR, AH, and UDT if *exFreq* is DAY, HOUR, HOURANDSUB, or SUBHOUR", + "variability": "constant" + }) +}} **exDayEnd=*date*** Final day of export period, except for YEAR exports. -<%= member_table( - units: "", - legal_range: "*date*", - default: "last day of simulation if *exFreq*= MONTH, else *exDayBeg*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*date*", + "default": "last day of simulation if *exFreq*= MONTH, else *exDayBeg*", + "required": "No", + "variability": "constant" + }) +}} **exZone=*znName*** Name of ZONE for which a ZEB, ZST, or ZDD export is being requested; ALL and SUM are also allowed except with *exType* = ZST. -<%= member_table( - units: "", - legal_range: "name of a *ZONE*, ALL, SUM", - default: "*none*", - required: "Required for *exTypes* ZDD, ZEB, and ZST.", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of a *ZONE*, ALL, SUM", + "default": "*none*", + "required": "Required for *exTypes* ZDD, ZEB, and ZST.", + "variability": "constant" + }) +}} **exMeter=*mtrName*** Specifies meter(s) whose data is to be exported, for *exType*=MTR. -<%= member_table( - units: "", - legal_range: "name of a *METER*, ALL, SUM", - default: "*none*", - required: "for *exType*=MTR", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of a *METER*, ALL, SUM", + "default": "*none*", + "required": "for *exType*=MTR", + "variability": "constant" + }) +}} **exTu=*tuName*** Specifies air handler(s) to be reported, for *rpType*=TUSIZE or TULOAD. -<%= member_table( - units: "", - legal_range: "name of a TERMINAL, ALL, SUM", - default: "", - required: "Required for *rpType*", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "name of a TERMINAL, ALL, SUM", + "default": "", + "required": "Required for *rpType*", + "variability": "constant" + }) +}} **exDHWMeter=*dhwMtrName*** Specifies DHW meter(s) whose data is to be exported, for *exType*=DHWMTR. -<%= member_table( - units: "", - legal_range: "name of a *DHWMETER*, ALL, SUM", - default: "*none*", - required: "for *exType*=DHWMTR", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of a *DHWMETER*, ALL, SUM", + "default": "*none*", + "required": "for *exType*=DHWMTR", + "variability": "constant" + }) +}} **exAFMeter=*afMtrName*** Air flow meter report. -<%= member_table( - units: "", - legal_range: "*Name of AFMETER*", - default: "0", - required: "No", - variability: "runly") %> +{{ + member_table({ + "units": "", + "legal_range": "*Name of AFMETER*", + "default": "0", + "required": "No", + "variability": "runly" + }) +}} **exAh=ah*Name*** Specifies air handler(s) to be exported, for *exType*=AH. -<%= member_table( - units: "", - legal_range: "name of an *AIRHANDLER*, ALL, SUM", - default: "*none*", - required: "for *exType*=AH", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of an *AIRHANDLER*, ALL, SUM", + "default": "*none*", + "required": "for *exType*=AH", + "variability": "constant" + }) +}} **exBtuSf=*float*** Scale factor used for exported energy values. -<%= member_table( - units: "", - legal_range: "*any multiple of ten*", - default: "1,000,000: energy exported in MBtu.", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*any multiple of ten*", + "default": "1,000,000: energy exported in MBtu.", + "required": "No", + "variability": "constant" + }) +}} **exCond=*expression*** Conditional exporting flag. If given, export rows are generated only when value of expression is non-0. Allowed with *exTypes* ZEB, ZST, MTR, AH, and UDT. -<%= member_table( - units: "", - legal_range: "*any numeric expression*", - default: "1 (exporting enabled)", - required: "No", - variability: "subhour /end of interval") - %> +{{ + member_table({ + "units": "", + "legal_range": "*any numeric expression*", + "default": "1 (exporting enabled)", + "required": "No", + "variability": "subhour /end of interval" + }) +}} **exTitle=*string*** Title for use in export header of User-Defined export. Disallowed if *exType* is not UDT. -<%= member_table( - units: "", - legal_range: "", - default: "User-defined Export", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "User-defined Export", + "required": "No", + "variability": "constant" + }) +}} **exHeader=*choice*** @@ -202,36 +234,43 @@ The *specific* month, day, etc. is NOT shown in the export header (as it is show The field names may be used by a program reading the export to identify the data in the rows which follow; if the program does this, it will not require modification when fields are added to or rearranged in the export in a future version of CSE. -<%= member_table( - units: "", - legal_range: "YES, YESIFNEW, NO, COLUMNSONLY, COLUMNSONLYIFNEW", - default: "YES", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "YES, YESIFNEW, NO, COLUMNSONLY, COLUMNSONLYIFNEW", + "default": "YES", + "required": "No", + "variability": "constant" + }) +}} **exFooter=*choice*** Use NO to suppress the blank line otherwise output as an export "footer". (Exports do not receive the total lines that most reports receive as footers.) -<%= member_table( - units: "", - legal_range: "YES, NO", - default: "YES", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "YES, NO", + "default": "YES", + "required": "No", + "variability": "constant" + }) +}} **endExport** Optionally indicates the end of the export definition. Alternatively, the end of the export definition can be indicated by END or by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/exportcol.md b/doc/src/docs/input-data/exportcol.md index 59b1f56a5..ba8068c66 100644 --- a/doc/src/docs/input-data/exportcol.md +++ b/doc/src/docs/input-data/exportcol.md @@ -10,73 +10,85 @@ EXPORTCOL members are similar to the corresponding REPORTCOL members. See Sectio Name of EXPORTCOL. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **colExport=*exName*** Name of export to which this column belongs. If the EXPORTCOL is given within an EXPORT object, then *colExport* defaults to that export. -<%= member_table( - units: "", - legal_range: "name of an *EXPORT*", - default: "*current export, if any*", - required: "Unless in an *EXPORT*", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of an *EXPORT*", + "default": "*current export, if any*", + "required": "Unless in an *EXPORT*", + "variability": "constant" + }) +}} **colVal=*expression*** Value to show in this position in each row of export. -<%= member_table( - units: "", - legal_range: "*any numeric or string expression*", - default: "*none*", - required: "Yes", - variability: "subhour /end interval") - %> +{{ + member_table({ + "units": "", + "legal_range": "*any numeric or string expression*", + "default": "*none*", + "required": "Yes", + "variability": "subhour /end interval" + }) +}} **colHead=*string*** Text used for field name in export header. -<%= member_table( - units: "", - legal_range: "", - default: "*colName* or blank", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*colName* or blank", + "required": "No", + "variability": "constant" + }) +}} **colWid=*int*** Maximum width. Leading and trailing spaces and non-significant zeroes are removed from export data to save file space. Specifying a *colWid* less than the default may reduce the maximum number of significant digits output. -<%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "13", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\ge$ 0", + "default": "13", + "required": "No", + "variability": "constant" + }) +}} **colDec=*int*** Number of digits after decimal point. -<%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "*flexible format*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\ge$ 0", + "default": "*flexible format*", + "required": "No", + "variability": "constant" + }) +}} **colJust=*choice*** @@ -92,13 +104,15 @@ END Optionally indicates the end of the EXPORTCOL. Alternatively, the end of the definition can be indicated by END or by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/exportfile.md b/doc/src/docs/input-data/exportfile.md index 1d0fb849c..1a1e11d53 100644 --- a/doc/src/docs/input-data/exportfile.md +++ b/doc/src/docs/input-data/exportfile.md @@ -10,25 +10,29 @@ Input for EXPORTFILEs and EXPORTs is similar to that for REPORTFILEs and REPORTs Name of EXPORTFILE object. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **xfFileName=*string*** path name of file to be written. If no path is specified, the file is written in the current directory. If no extension is specified, .csv is used. -<%= member_table( - units: "", - legal_range: "*file name, path and extension optional*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*file name, path and extension optional*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **xfFileStat=*choice*** @@ -43,25 +47,29 @@ END If the specified file does not exist, it is created and *xfFileStat* has no effect. -<%= member_table( - units: "", - legal_range: "OVERWRITE, NEW, APPEND", - default: "OVERWRITE", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "OVERWRITE, NEW, APPEND", + "default": "OVERWRITE", + "required": "No", + "variability": "constant" + }) +}} **endExportFile** Optionally indicates the end of the export file definition. Alternatively, the end of the Export file definition can be indicated by END or by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/fndblock.md b/doc/src/docs/input-data/fndblock.md index 5fa345883..99d30b6b4 100644 --- a/doc/src/docs/input-data/fndblock.md +++ b/doc/src/docs/input-data/fndblock.md @@ -36,12 +36,15 @@ Relative X origin for *fbX1* point. Options are: - WALLEXT - FARFIELD -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "WALLINT", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "WALLINT", + "required": "No", + "variability": "constant" + }) +}} **fbZ1Ref=*choice*** @@ -54,34 +57,43 @@ Relative Z origin for *fbZ1* point. Options are: - WALLBOTTOM - DEEPGROUND -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "WALLTOP", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "WALLTOP", + "required": "No", + "variability": "constant" + }) +}} **fbX1=*float*** The X position of the first corner of the block relative to *fbX1Ref*. -<%= member_table( - units: "ft", - legal_range: "", - default: "0.0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "", + "default": "0.0", + "required": "No", + "variability": "constant" + }) +}} **fbZ1=*float*** The Z position of the first corner of the block relative to *fbZ1Ref*. -<%= member_table( - units: "ft", - legal_range: "", - default: "0.0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "", + "default": "0.0", + "required": "No", + "variability": "constant" + }) +}} **fbX2Ref=*choice*** @@ -93,12 +105,15 @@ Relative X origin for *fbX2* point. Options are: - WALLEXT - FARFIELD -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "WALLINT", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "WALLINT", + "required": "No", + "variability": "constant" + }) +}} **fbZ2Ref=*choice*** @@ -111,43 +126,54 @@ Relative Z origin for *fbZ2* point. Options are: - WALLBOTTOM - DEEPGROUND -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "WALLTOP", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "WALLTOP", + "required": "No", + "variability": "constant" + }) +}} **fbX2=*float*** The X position of the second corner of the block relative to *fbX2Ref*. -<%= member_table( - units: "ft", - legal_range: "", - default: "0.0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "", + "default": "0.0", + "required": "No", + "variability": "constant" + }) +}} **fbZ2=*float*** The Z position of the second corner of the block relative to *fbZ2Ref*. -<%= member_table( - units: "ft", - legal_range: "", - default: "0.0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "", + "default": "0.0", + "required": "No", + "variability": "constant" + }) +}} **endFndBlock** Indicates the end of the foundation block definition. Alternatively, the end of the foundation block definition can be indicated by the declaration of another object or by END. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} diff --git a/doc/src/docs/input-data/foundation.md b/doc/src/docs/input-data/foundation.md index bd0e5129a..ac1abf76d 100644 --- a/doc/src/docs/input-data/foundation.md +++ b/doc/src/docs/input-data/foundation.md @@ -54,24 +54,30 @@ Name of foundation; give after the word FOUNDATION. Required for reference from Wall height above grade. -<%= member_table( - units: "ft", - legal_range: "x $\\geq$ 0", - default: "0.0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "x $\\geq$ 0", + "default": "0.0", + "required": "No", + "variability": "constant" + }) +}} **fdWlDpBlwSlb=*float*** Wall depth below slab. -<%= member_table( - units: "ft", - legal_range: "x $\\geq$ 0", - default: "0.0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "x $\\geq$ 0", + "default": "0.0", + "required": "No", + "variability": "constant" + }) +}} **fdFtCon=*conName*** @@ -87,10 +93,12 @@ Name of CONSTRUCTION of the footing wall. Only required **IF** it is a slab foun Indicates the end of the foundation definition. Alternatively, the end of the foundation definition can be indicated by the declaration of another object or by END. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} diff --git a/doc/src/docs/input-data/gain.md b/doc/src/docs/input-data/gain.md index a24f0005f..042510571 100644 --- a/doc/src/docs/input-data/gain.md +++ b/doc/src/docs/input-data/gain.md @@ -19,25 +19,29 @@ Radiant internal gains are included in the IgnS (Sensible Internal Gain) column Name of gain; follows the word GAIN if given. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **gnZone=*znName*** Name of ZONE to which heat gains are added. Omitted when GAIN is given as a ZONE subobject. If a TOP subobject (i.e., not a ZONE subobject) and znZone is omitted, heat gains are discarded but energy use is still recorded to gnMeter. This feature can be used to represent energy uses that our outside of conditioned zones (e.g. exterior lighting). -<%= member_table( - units: "", - legal_range: "*name of ZONE*", - default: "*parent zone if any*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*name of ZONE*", + "default": "*parent zone if any*", + "required": "No", + "variability": "constant" + }) +}} **gnPower=*float*** @@ -45,25 +49,29 @@ Rate of heat addition/energy use. Negative gnPower values may be used to represe All gains, including electrical, are specified in Btuh units unless associated with DHW use (see gnCtrlDHWSYS), in which case gnPower is specified in Btuh/gal. Note that meter reporting of internal gain is in MBtu (millions of Btu) by default. -<%= member_table( - units: "Btuh", - legal_range: "*no restrictions*", - default: "*none*", - required: "Yes", - variability: "hourly") - %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "*no restrictions*", + "default": "*none*", + "required": "Yes", + "variability": "hourly" + }) +}} **gnMeter=*choice*** Name of meter by which this GAIN's gnPower is recorded. If omitted, gain is assigned to no meter and energy use is not accounted in CSE simulation reports; thus, gnMeter should only be omitted for "free" energy sources. -<%= member_table( - units: "", - legal_range: "*name of METER*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*name of METER*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **gnEndUse=*choice*** @@ -71,13 +79,15 @@ Meter end use to which the GAIN's energy use should be accumulated. {% include 'enduses.md' %} -<%= member_table( - units: "", - legal_range: "*Codes listed above*", - default: "*none*", - required: "Required if gnMeter is given", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*Codes listed above*", + "default": "*none*", + "required": "Required if gnMeter is given", + "variability": "constant" + }) +}} The gnFrZn, gnFrPl, and gnFrRtn members allow you to allocate the gain among the zone, the zone's plenum, and the zone's return air flow. Values that total to more than 1.0 constitute an error. If they total less than 1, the unallocated portion of the gain is recorded by the meter (if specified) but not transferred into the building. By default, all of the gain not directed to the return or plenum goes to the zone. @@ -87,23 +97,27 @@ Fraction of gain going to zone. gnFrLat (below) gives portion of this gain that <% if not_yet_implemented %> -<%= member_table( - units: "", - legal_range: "gnFrZn + gnFrPl + gnFrRtn $\leq$ 1", - default: "*1 - gnFrPl - gnFrRtn*", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "gnFrZn + gnFrPl + gnFrRtn $\leq$ 1", + "default": "*1 - gnFrPl - gnFrRtn*", + "required": "No", + "variability": "hourly" + }) +}} <% else %> -<%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "1.", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "1.", + "required": "No", + "variability": "hourly" + }) +}} <% end %> @@ -111,109 +125,130 @@ Fraction of gain going to zone. gnFrLat (below) gives portion of this gain that Fraction of gain going to plenum. -<%= member_table( - units: "", - legal_range: "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", - default: "0.", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", + "default": "0.", + "required": "No", + "variability": "hourly" + }) +}} **gnFrRtn=*float*** Fraction of gain going to return. -<%= member_table( - units: "", - legal_range: "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", - default: "0.", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", + "default": "0.", + "required": "No", + "variability": "hourly" + }) +}} **gnFrRad=*float*** Fraction of total gain going to zone (gnFrZn) that is radiant rather than convective or latent. -<%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "0.0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "0.0", + "required": "No", + "variability": "hourly" + }) +}} **gnFrLat=*float*** Fraction of total gain going to zone (gnFrZn) that is latent heat (moisture addition). -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ *x* $\\le$ 1", + "default": "0.0", + "required": "No", + "variability": "hourly" + }) +}} **gnDlFrPow=*float*** Hourly power reduction factor, typically used to modify lighting power to account for daylighting. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "1.0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ *x* $\\le$ 1", + "default": "1.0", + "required": "No", + "variability": "hourly" + }) +}} **gnCtrlDHWSYS=*dhwsysName*** Name of a DHWSYS whose water use modulates gnPower. For example, electricity use of water-using appliances (e.g. dishwasher or clothes washer) can be modeled based on water use, ensuring that the uses are synchronized. When this feature is used, gnPower should be specified in Btuh/gal. -<%= member_table( - units: "", - legal_range: "*name of a DHWSYS*", - default: "no DHWSYS/GAIN linkage", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*name of a DHWSYS*", + "default": "no DHWSYS/GAIN linkage", + "required": "No", + "variability": "constant" + }) +}} **gnCtrlDHWMETER=*dhwMtrName*** Allows gains to track water usage such as dishwashers, clothes washers, etc. -<%= member_table( - units: "", - legal_range: "*name of DHWMETER*", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*name of DHWMETER*", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **gnCtrlDHWEndUse=*dhwEndUseName*** Name of the DHWSYS end use consumption that modulates gnPower. See DHWMETER for DHW end use definitions. -<%= member_table( - units: "", - legal_range: "DHW end use", - default: "Total", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "DHW end use", + "default": "Total", + "required": "No", + "variability": "constant" + }) +}} **endGain** Optional to indicate the end of the GAIN definition. Alternatively, the end of the gain definition can be indicated by END or by the declaration of another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/glazetype.md b/doc/src/docs/input-data/glazetype.md index 7dfe3d351..5aaa30490 100644 --- a/doc/src/docs/input-data/glazetype.md +++ b/doc/src/docs/input-data/glazetype.md @@ -6,25 +6,29 @@ GLAZETYPE constructs an object of class GLAZETYPE that represents a glazing type Name of glazetype. Required for reference from WINDOW objects, below. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **gtModel=*choice*** Selects model to be used for WINDOWs based on this GLAZETYPE. -<%= member_table( - units: "", - legal_range: "SHGC, ASHWAT", - default: "SHGC", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "SHGC, ASHWAT", + "default": "SHGC", + "required": "No", + "variability": "constant" + }) +}} **gtU=*float*** @@ -36,73 +40,85 @@ Where 0.85 is the sum of the interior (0.68) and exterior (0.17) design air film Approach 2. Enter gtU=U-factor and let the wnInH and wnExH default. This approach systematically underestimates the window U-factor because it adds the wnExfilm resistance to 1/U-factor thereby double counting the exterior film resistance. This approach will also yield incorrect results for gnFrad internal gain since the high wnInH will put almost all the gain back in the space. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **gtUNFRC=*float*** Fenestration system (including frame) U-factor evaluated at NFRC heating conditions. For ASHWAT windows, a value for the NFRC U-factor is required, set via gtUNFRC or wnUNFRC. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **gtSHGC=*float*** Glazing Solar Heat Gain Coefficient: fraction of normal beam insolation which gets through glass to space inside. We recommend using this to represent the glass normal transmissivity characteristic only, before shading and framing effects -<%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **gtSMSO=*float*** SHGC multiplier with shades open. May be overriden in the specific window input. -<%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "1.0", - required: "No", - variability: "Monthly - Hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "default": "1.0", + "required": "No", + "variability": "Monthly - Hourly" + }) +}} **gtSMSC=*float*** SHGC multiplier with shades closed. May be overriden in the specific window input. -<%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "gtSMSO (no shades)", - required: "No", - variability: "Monthly - Hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "default": "gtSMSO (no shades)", + "required": "No", + "variability": "Monthly - Hourly" + }) +}} **gtFMult=*float*** Framing multiplier used if none given in window, for example .9 if frame and mullions reduce the solar gain by 10%. Default of 1.0 implies frame/mullion effects allowed for in gtSHGC's or always specified in Windows. -<%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "gtSHGCO", - required: "No", - variability: "Monthly - Hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "default": "gtSHGCO", + "required": "No", + "variability": "Monthly - Hourly" + }) +}} **gtPySHGC =*float*** @@ -116,97 +132,113 @@ Four float values separated by commas. Coefficients for incidence angle SHGC mul     beamXmisvty = gtSHGCO \* angMult (shades open) -<%= member_table( - units: "float", - legal_range: "*any*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "float", + "legal_range": "*any*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **gtDMSHGC=*float*** SHGC diffuse multiplier, applied to gtSHGC to determine transmissivity for diffuse radiation. -<%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **gtDMRBSol=*float*** SHGC diffuse multiplier, applied to qtSHGC to determine transmissivity for diffuse radiation reflected back out the window. Misnamed as a reflectance. Assume equal to DMSHGC if no other data available. -<%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **gtNGlz=*int*** Number of glazings in the Glazetype (bare glass only, not including any interior or exterior shades). -<%= member_table( - units: "", - legal_range: "*0* $<$ *x* $\\leq$ *4*", - default: "2", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*0* $<$ *x* $\\leq$ *4*", + "default": "2", + "required": "No", + "variability": "constant" + }) +}} **gtExShd=*choice*** Exterior shading type (ASHWAT only). -<%= member_table( - units: "", - legal_range: "NONE INSCRN", - default: "NONE", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "NONE INSCRN", + "default": "NONE", + "required": "No", + "variability": "constant" + }) +}} **gtInShd=*choice*** Interior shade type (ASHWAT only). -<%= member_table( - units: "", - legal_range: "NONE DRAPEMED", - default: "NONE", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "NONE DRAPEMED", + "default": "NONE", + "required": "No", + "variability": "constant" + }) +}} **gtDirtLoss=*float*** Glazing dirt loss factor. -<%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "0", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **endGlazeType** Optional to indicates the end of the Glazetype. Alternatively, the end of the GLAZETYPE definition can be indicated by "END" or by beginning another object -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/heatplant.md b/doc/src/docs/input-data/heatplant.md index 7ef0fe8f5..59548c924 100644 --- a/doc/src/docs/input-data/heatplant.md +++ b/doc/src/docs/input-data/heatplant.md @@ -12,12 +12,15 @@ For each HEATPLANT, piping loss is modeled, as a constant fraction of the BOILER Name of HEATPLANT object, given immediately after the word HEATPLANT. This name is used to refer to the heatPlant in *tuhcHeatplant* and *ahhcHeatplant* commands. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **hpSched=*choice*** @@ -30,23 +33,29 @@ ON, HEATPLANT runs unconditionally. When no load wants heat, least po END %> -<%= member_table( - units: "", - legal_range: "OFF, AVAIL, or ON", - default: "AVAIL", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "OFF, AVAIL, or ON", + "default": "AVAIL", + "required": "No", + "variability": "hourly" + }) +}} **hpPipeLossF=*float*** Heat plant pipe loss: heat assumed lost from piping connecting boilers to loads whenever the HEATPLANT is operating, expressed as a fraction of the boiler capacity of the plant's most powerful stage. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.01", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ *x* $\\le$ 1", + "default": "0.01", + "required": "No", + "variability": "constant" + }) +}} **hpStage1=boilerName, boilerName, boilerName, ...** @@ -60,23 +69,29 @@ If none of *hpStage1* through *hpStage7* are given, CSE supplies a single defaul A comma must be entered between boiler names and after the word ALL\_BUT. -<%= member_table( - units: "", - legal_range: "1 to 7 names;ALL\_BUT and 1 to 6 names;ALL", - default: "*hpStage1* = ALL", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "1 to 7 names;ALL\_BUT and 1 to 6 names;ALL", + "default": "*hpStage1* = ALL", + "required": "No", + "variability": "constant" + }) +}} **endHeatplant** Optionally indicates the end of the HEATPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/holiday.md b/doc/src/docs/input-data/holiday.md index cc4ab149a..5c5ebcc37 100644 --- a/doc/src/docs/input-data/holiday.md +++ b/doc/src/docs/input-data/holiday.md @@ -11,13 +11,15 @@ hdName is required in the program. WHY? 7-92. Name of holiday: must follow the word HOLIDAY. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} A holiday may be specified by date or via a rule such as "Fourth Thursday in November". To specify by date, give hdDateTrue, and also hdDateObs or hdOnMonday if desired. To specify by rule, give all three of hdCase, hdMon, and hdDow. @@ -25,25 +27,29 @@ A holiday may be specified by date or via a rule such as "Fourth Thursday in Nov The true date of a holiday, even if not celebrated on that day. -<%= member_table( - units: "", - legal_range: "*date*", - default: "*blank*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*date*", + "default": "*blank*", + "required": "No", + "variability": "constant" + }) +}} **hdDateObs*=date*** The date that a holiday will be observed. Allowed only if hdDateTrue given and hdOnMonday not given. -<%= member_table( - units: "", - legal_range: "*date*", - default: "*hdDateTrue*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*date*", + "default": "*hdDateTrue*", + "required": "No", + "variability": "constant" + }) +}} **hdOnMonday=*choice*** @@ -51,61 +57,71 @@ If YES, holiday is observed on the following Monday if the true date falls on a Note: there is no provision to celebrate a holiday that falls on a Saturday on *Friday* (as July 4 was celebrated in 1992). -<%= member_table( - units: "", - legal_range: "YES/NO", - default: "YES", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "YES/NO", + "default": "YES", + "required": "No", + "variability": "constant" + }) +}} **hdCase=*choice*** Week of the month that the holiday is observed. hdCase, hdMon, and hdDow may be given only if hdDateTrue, hdDateObs, and hdOnMonday are not given. -<%= member_table( - units: "", - legal_range: "FIRST SECOND THIRD FOURTH LAST", - default: "FIRST", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "FIRST SECOND THIRD FOURTH LAST", + "default": "FIRST", + "required": "No", + "variability": "constant" + }) +}} **hdMon=*choice*** Month that the holiday is observed. -<%= member_table( - units: "", - legal_range: "JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC", - default: "*none*", - required: "required if hdCase given", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC", + "default": "*none*", + "required": "required if hdCase given", + "variability": "constant" + }) +}} **hdDow*=choice*** Day of the week that the holiday is observed. -<%= member_table( - units: "", - legal_range: "SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY", - default: "MONDAY", - required: "required if hdCase given", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY", + "default": "MONDAY", + "required": "required if hdCase given", + "variability": "constant" + }) +}} **endHoliday** Indicates the end of the holiday definition. Alternatively, the end of the holiday definition can be indicated by "END" or simply by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "", - required: "*none*", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "", + "required": "*none*", + "variability": "constant" + }) +}} Examples of valid HOLIDAY object specifications: diff --git a/doc/src/docs/input-data/importfile.md b/doc/src/docs/input-data/importfile.md index ffecc6b7b..92a783044 100644 --- a/doc/src/docs/input-data/importfile.md +++ b/doc/src/docs/input-data/importfile.md @@ -57,79 +57,100 @@ Notes Name of IMPORTFILE object (for reference from Import()). -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **imFileName=*string*** Gives path name of file to be read. If directory is specified, CSE first looks for the file the current directory and searches include paths specified by the -I command line parameter (if any). -<%= member_table( - units: "", - legal_range: "*file name, path optional*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*file name, path optional*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **imTitle=*string*** Title expected to be found on line 3 of the import file. A warning is issued if a non-blank imTitle does not match the import file title. -<%= member_table( - units: "", - legal_range: "Text string", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "Text string", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **imFreq=*choice*** Specifies the interval at which CSE reads from the import file. Data is read at the beginning of the indicated interval and buffered in memory for access in expressions via import() or importStr(). -<%= member_table( - units: "", - legal_range: "YEAR, MONTH, DAY, HOUR, or SUBHOUR", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "YEAR, MONTH, DAY, HOUR, or SUBHOUR", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **imHeader=*choice*** Indicates whether the import file include a 4 line header, as described above. If NO, the import file should contain only comma-separated data rows and data items can be referenced only by 1-based column number. -<%= member_table( - units: "", - legal_range: "YES NO", - default: "YES", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "YES NO", + "default": "YES", + "required": "No", + "variability": "constant" + }) +}} **imBinary=*choice*** Adds the possibility to output the file as a binary option. -<%= member_table( - units: "", - legal_range: "YES NO", - default: "No", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "YES NO", + "default": "No", + "required": "No", + "variability": "constant" + }) +}} **endImportFile** Optionally indicates the end of the import file definition. Alternatively, the end of the import file definition can be indicated by END or by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/index.md b/doc/src/docs/input-data/index.md index 8163333e8..9e4e21ade 100644 --- a/doc/src/docs/input-data/index.md +++ b/doc/src/docs/input-data/index.md @@ -20,12 +20,15 @@ These types discussed in the section on [expression types][expression-types]. Each member's description continues with a table of the form: -<%= member_table( -units: "ft^2^", -legal_range: "x > 0", -default: "wnHeight \\\* wnWidth", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "ft^2^", + "legal_range": "x > 0", + "default": "wnHeight \\\* wnWidth", + "required": "No", + "variability": "constant" + }) +}} where the column headers have the following meaning: diff --git a/doc/src/docs/input-data/izxfer.md b/doc/src/docs/input-data/izxfer.md index 8d48781f8..7e72c3cc5 100644 --- a/doc/src/docs/input-data/izxfer.md +++ b/doc/src/docs/input-data/izxfer.md @@ -11,12 +11,15 @@ The assumption is that in realistic configurations, zone pressure will generally Optional name of interzone transfer; give after the word "IZXFER" if desired. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **izNVType=*choice*** @@ -40,12 +43,15 @@ END Note that optional inputs izTEx, izWEx, and izWindSpeed can override the outside conditions assumed for ivNVTypes that are connected to ambient (AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, and AIRNETHERV). -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **izAFCat=*choice*** @@ -67,34 +73,43 @@ END Default values for izAFCat are generally adequate *except* that natural ventilation IZXFERs are by default categorized as infiltration. It is thus recommended that izAfCat be omitted except that ventilation IZXFERs (e.g. representing openable windows) should include izAfCat=VentEx (or VentIz). -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "derived from IZXFER characteristics", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "derived from IZXFER characteristics", + "required": "No", + "variability": "constant" + }) +}} **izZn1=*znName*** Name of primary zone. Flow rates $>$ 0 are into the primary zone. -<%= member_table( - units: "", - legal_range: "name of a ZONE", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "name of a ZONE", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **izZn2=*znName*** Name of secondary zone. -<%= member_table( - units: "", - legal_range: "name of a ZONE", - default: "*none*", - required: "required unless constant izNVType = AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, or AIRNETHERV", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "name of a ZONE", + "default": "*none*", + "required": "required unless constant izNVType = AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, or AIRNETHERV", + "variability": "constant" + }) +}} **izDOAS=*oaName*** @@ -113,12 +128,15 @@ For example, consider a DOAS-linked IZXFER with izVfMin = 100 and izLinkedFlowMu Note izLinkedFlowMult has no effect on the air flow to or from the zone specified by izZn1. -<%= member_table( - units: "--", - legal_range: "*x* $\\gt$ 0", - default: "1", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "--", + "legal_range": "*x* $\\gt$ 0", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} Give izHConst for a conductive transfer between zones. Give izNVType other than NONE and the following variables for a convective (air) transfer between the zones or between a zone and outdoors. Both may be given if desired. Not known to work properly as of July 2011 @@ -127,34 +145,43 @@ Give izHConst for a conductive transfer between zones. Give izNVType other than Conductance between zones. -<%= member_table( - units: "Btu/^o^F", - legal_range: "*x* $\\ge$ 0", - default: "0", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "Btu/^o^F", + "legal_range": "*x* $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "hourly" + }) +}} **izALo=*float*** Area of low or only vent (typically VentOff) -<%= member_table( - units: "ft^2^", - legal_range: "*x* $\\ge$ 0", - default: "0", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "ft^2^", + "legal_range": "*x* $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "hourly" + }) +}} **izAHi=*float*** Additional vent area (high vent or VentOn). If used in AIRNET, izAHi > izALo typically but this is not required. -<%= member_table( - units: "ft^2^", - legal_range: "*x* $\\ge$ 0", - default: "izALo", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "ft^2^", + "legal_range": "*x* $\\ge$ 0", + "default": "izALo", + "required": "No", + "variability": "hourly" + }) +}} **izTEx=*float*** @@ -168,12 +195,15 @@ One use of izTEx is in representation of leaks in surfaces adjacent to zones not This will allow Z1's pressure to be realistic without inducing thermal loads that would occur if the leak source had outdoor conditions. -<%= member_table( - units: "^o^F", - legal_range: "", - default: "Outdoor dry-bulb", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "", + "default": "Outdoor dry-bulb", + "required": "No", + "variability": "subhourly" + }) +}} **izWEx=*float*** @@ -183,12 +213,15 @@ Caution: izWEx is not checked against saturation -- there is no verification tha See izTEx example just above. -<%= member_table( - units: "", - legal_range: "$\\gt$ 0", - default: "Outdoor humidity ratio", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "", + "legal_range": "$\\gt$ 0", + "default": "Outdoor humidity ratio", + "required": "No", + "variability": "subhourly" + }) +}} **izWindSpeed=*float*** @@ -198,211 +231,268 @@ No adjustments such as TOP windF or ZONE znWindFLkg are applied to izWindSpeed w Note that izCpr must be non-0 for izWindSpeed to have any effect. -<%= member_table( - units: "mph", - legal_range: "$\\ge$ 0", - default: "Zone adjusted windspeed", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "mph", + "legal_range": "$\\ge$ 0", + "default": "Zone adjusted windspeed", + "required": "No", + "variability": "subhourly" + }) +}} **izL1=*float*** Length or width of AIRNETHORIZ opening. -<%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "if izNVType = AIRNETHORIZ", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "if izNVType = AIRNETHORIZ", + "variability": "constant" + }) +}} **izL2=*float*** Width or length of AIRNETHORIZ opening. -<%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "if izNVType = AIRNETHORIZ", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "if izNVType = AIRNETHORIZ", + "variability": "constant" + }) +}} **izStairAngle=*float*** Stairway angle for AIRNETHORIZ opening. Use 90 for an open hole. Note that 0 prevents flow. -<%= member_table( - units: "^o^ degrees", - legal_range: "*x* $>$ 0", - default: "34", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "^o^ degrees", + "legal_range": "*x* $>$ 0", + "default": "34", + "required": "No", + "variability": "constant" + }) +}} **izHD=*float*** Vent center-to-center height difference (for TWOWAY) or vent height above nominal 0 level (for AirNet types) -<%= member_table( - units: "ft", - legal_range: "", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **izNVEff=*float*** Vent discharge coefficient. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.8", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ *x* $\\le$ 1", + "default": "0.8", + "required": "No", + "variability": "constant" + }) +}} **izfanVfDs=*float*** Fan design or rated flow at rated pressure. For AIRNETHERV, this is the net air flow into the zone, gross flow at the fan is derived using izEATR (see below). -<%= member_table( - units: "cfm", - legal_range: "*x* $\\ge$ 0", - default: "0 (no fan)", - required: "If fan present", - variability: "constant") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "*x* $\\ge$ 0", + "default": "0 (no fan)", + "required": "If fan present", + "variability": "constant" + }) +}} **izCpr=*float*** Wind pressure coefficient (for AIRNETEXT). -<%= member_table( - units: "", - legal_range: "*x* $\\ge$ 0", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*x* $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **izExp=*float*** Opening exponent (for AIRNETEXT). -<%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "0.5", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*x* $>$ 0", + "default": "0.5", + "required": "No", + "variability": "constant" + }) +}} **izVfMin=*float*** Minimum volume flow rate (VentOff mode). -<%= member_table( - units: "cfm", - legal_range: "*x* $\\ge$ 0", - default: "izfanVfDs", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "*x* $\\ge$ 0", + "default": "izfanVfDs", + "required": "No", + "variability": "subhourly" + }) +}} **izVfMax=*float*** Maximum volume flow rate (VentOn mode) -<%= member_table( - units: "cfm", - legal_range: "*x* $\\ge$ 0", - default: "izVfMin", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "*x* $\\ge$ 0", + "default": "izVfMin", + "required": "No", + "variability": "subhourly" + }) +}} **izASEF=*float*** Apparent sensible effectiveness for AIRNETHERV ventilator. ASEF is a commonly-reported HERV rating and is calculated as (supplyT - sourceT) / (returnT - sourceT). This formulation includes fan heat (in supplyT), hence the term "apparent". Ignored if izSRE is given. CSE does not HRV exhaust-side condensation, so this model is approximate. -<%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ 1", - default: "0", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ x $\\le$ 1", + "default": "0", + "required": "No", + "variability": "subhourly" + }) +}} **izSRE=*float*** Sensible recovery efficiency (SRE) for AIRNETHERV ventilator. Used as the sensible effectiveness in calculation of the supply air temperature. Note that values of SRE greater than approximately 0.6 imply exhaust-side condensation under HVI rating conditions. CSE does not adjust for these effects. High values of izSRE will produce unrealistic results under mild outdoor conditions and/or dry indoor conditions. -<%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ 1", - default: "0", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ x $\\le$ 1", + "default": "0", + "required": "No", + "variability": "subhourly" + }) +}} **izASRE=*float*** Adjusted sensible recovery efficiency (ASRE) for AIRNETHERV ventilator. The difference izASRE - izSRE is used to calculate fan heat added to the supply air stream. See izSRE notes. No effect when izSRE is 0. -<%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ izSRE", - default: "0", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ x $\\le$ izSRE", + "default": "0", + "required": "No", + "variability": "subhourly" + }) +}} **izEATR=*float*** Exhaust air transfer ratio for AIRNETHERV ventilator. NetFlow = (1 - EATR)*(grossFlow). -<%= member_table( - units: "cfm", - legal_range: "0 $\\le$ x $\\le$ 1", - default: "0", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "0 $\\le$ x $\\le$ 1", + "default": "0", + "required": "No", + "variability": "subhourly" + }) +}} **izLEF=*float*** Latent heat recovery effectiveness for AIRNETHERV ventilator. The default value (0) results in sensible-only heat recovery. -<%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ 1", - default: "0", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ x $\\le$ 1", + "default": "0", + "required": "No", + "variability": "subhourly" + }) +}} **izRVFanHeatF=*float*** Fraction of fan heat added to supply air stream for AIRNETHERV ventilator. Used only when when izSRE is 0 (that is, when izASEF specifies the sensible effectiveness). -<%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ 1", - default: "0", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ x $\\le$ 1", + "default": "0", + "required": "No", + "variability": "subhourly" + }) +}} **izVfExhRat=*float*** Exhaust volume flow ratio for AIRNETHERV ventilator = (exhaust flow) / (supply flow). Any value other than 1 indicates unbalanced flow that effects the zone pressure. -<%= member_table( - units: "", - legal_range: "*x* $\\ge$ 0", - default: "1 (balanced)", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*x* $\\ge$ 0", + "default": "1 (balanced)", + "required": "No", + "variability": "constant" + }) +}} **izfanPress=*float*** Design or rated fan pressure. -<%= member_table( - units: "inches H~2~O", - legal_range: "*x* $>$ 0", - default: "0.3", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "inches H~2~O", + "legal_range": "*x* $>$ 0", + "default": "0.3", + "required": "No", + "variability": "constant" + }) +}} Only one of izfanElecPwr, izfanEff, and izfanShaftBhp may be given: together with izfanVfDs and izfanPress, any one is sufficient for CSE to determine the others and to compute the fan heat contribution to the air stream. @@ -410,34 +500,43 @@ Only one of izfanElecPwr, izfanEff, and izfanShaftBhp may be given: together wit Fan input power per unit air flow (at design flow and pressure). -<%= member_table( - units: "W/cfm", - legal_range: "*x* $>$ 0", - default: "derived from izfanEff and izfanShaftBhp", - required: "If izfanEff and izfanShaftBhp not present", - variability: "constant") %> +{{ + member_table({ + "units": "W/cfm", + "legal_range": "*x* $>$ 0", + "default": "derived from izfanEff and izfanShaftBhp", + "required": "If izfanEff and izfanShaftBhp not present", + "variability": "constant" + }) +}} **izfanEff=*float*** Fan efficiency at design flow and pressure, as a fraction. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "derived from *izfanShaftBhp* if given, else 0.08", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ *x* $\\le$ 1", + "default": "derived from *izfanShaftBhp* if given, else 0.08", + "required": "No", + "variability": "constant" + }) +}} **izfanShaftBhp=*float*** Fan shaft brake horsepower at design flow and pressure. -<%= member_table( - units: "bhp", - legal_range: "*x* $>$ 0", - default: "derived from *izfanEff*.", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "bhp", + "legal_range": "*x* $>$ 0", + "default": "derived from *izfanEff*.", + "required": "No", + "variability": "constant" + }) +}} **izfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** @@ -454,45 +553,57 @@ where: If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. -<%= member_table( - units: "", - legal_range: "*x* $\\ge$ 0", - default: "*0, 1, 0, 0, 0 (linear)*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*x* $\\ge$ 0", + "default": "*0, 1, 0, 0, 0 (linear)*", + "required": "No", + "variability": "constant" + }) +}} **izFanMtr=*mtrName*** Name of meter, if any, to record energy used by supply fan. End use category used is specified by izFanEndUse (next). -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*not recorded*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*name of a METER*", + "default": "*not recorded*", + "required": "No", + "variability": "constant" + }) +}} **izFanEndUse=*choice*** End use to which fan energy is recorded (in METER specified by izFanMtr). See METER for available end use choices. -<%= member_table( - units: "", - legal_range: "*end use choice*", - default: "Fan", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*end use choice*", + "default": "Fan", + "required": "No", + "variability": "constant" + }) +}} **endIZXFER** Optionally indicates the end of the interzone transfer definition. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/layer.md b/doc/src/docs/input-data/layer.md index fc2d8c390..abaac896e 100644 --- a/doc/src/docs/input-data/layer.md +++ b/doc/src/docs/input-data/layer.md @@ -10,56 +10,71 @@ The layer thickness may be given by lrThk, or matThk of the material, or matThk Name of layer (follows "LAYER"). Required only if the LAYER is later referenced in another object, for example with LIKE or ALTER; however, we suggest naming all objects for clearer error messages and future flexibility. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **lrMat=*matName*** Name of primary MATERIAL in layer. -<%= member_table( - units: "", - legal_range: "name of a *MATERIAL*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "name of a *MATERIAL*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **lrThk=*float*** Thickness of layer. -<%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "Required if *matThk* not specified in referenced *lrMat*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $>$ 0", + "default": "Required if *matThk* not specified in referenced *lrMat*", + "required": "No", + "variability": "constant" + }) +}} **lrFrmMat=*matName*** Name of framing MATERIAL in layer, if any. At most one layer with lrFrmMat is allowed per CONSTRUCTION. See caution above regarding framed-layer model. -<%= member_table( - units: "", - legal_range: "name of a MATERIAL", - default: "*no framed layer*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "name of a MATERIAL", + "default": "*no framed layer*", + "required": "No", + "variability": "constant" + }) +}} **lrFrmFrac=*float*** Fraction of layer that is framing. Must be specified if frmMat is specified. See caution above regarding framed-layer model. -<%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "*no framed layer*", - required: "Required if *lrFrmMat* specified, else disallowed", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "*no framed layer*", + "required": "Required if *lrFrmMat* specified, else disallowed", + "variability": "constant" + }) +}} **endLayer** diff --git a/doc/src/docs/input-data/loadmeter.md b/doc/src/docs/input-data/loadmeter.md index 91f60afe3..8668973d6 100644 --- a/doc/src/docs/input-data/loadmeter.md +++ b/doc/src/docs/input-data/loadmeter.md @@ -16,12 +16,15 @@ LOADMETER results must be reported using user-defined REPORTs or EXPORTs. For e Name of LOADMETER: required for assigning to ZONEs and RSYSs. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **lmtSubmeters=*list of up to 50 LOADMETERs*** @@ -31,12 +34,15 @@ A comma-separate list of LOADMETERs that are accumulated into this LOADMETER wit - A given LOADMETER can be referenced only once in the lmtSubmeters list. - Circular references are not allowed. -<%= member_table( - units: "", - legal_range: "*names of LOADMETERs*", - default: "", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*names of LOADMETERs*", + "default": "", + "required": "No", + "variability": "constant" + }) +}} **lmtSubmeterMults=*list of up to 50 floats*** @@ -44,24 +50,30 @@ Submeter multipliers. A note re default values: if lmtSubmeterMults is omitted, all multipliers are defaulted to 1. However, when lmtSubmeterMults is included, a multiplier value should be provided for each LOADMETER listed in lmtSubmeters since unspecified values are set to 0. -<%= member_table( - units: "", - legal_range: "", - default: "1", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "1", + "required": "No", + "variability": "subhourly" + }) +}} **endLOADMETER** Indicates the end of the meter definition. Alternatively, the end of the meter definition can be indicated by the declaration of another object or by END. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/material.md b/doc/src/docs/input-data/material.md index 3960336c0..fdc962703 100644 --- a/doc/src/docs/input-data/material.md +++ b/doc/src/docs/input-data/material.md @@ -6,56 +6,71 @@ MATERIAL constructs an object of class MATERIAL that represents a building mater Name of material being defined; follows the word "MATERIAL". -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **matThk=*float*** Thickness of material. If specified, matThk indicates the discreet thickness of a component as used in construction assemblies. If omitted, matThk indicates that the material can be used in any thickness; the thickness is then specified in each LAYER using the material (see below). -<%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **matCond=*float*** Conductivity of material. Note that conductivity is *always* stated for a 1 foot thickness, even when matThk is specified; if the conductance is known for a specific thickness, an expression can be used to derive matCond. -<%= member_table( - units: "Btuh-ft/ft^2^-^o^F", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "Btuh-ft/ft^2^-^o^F", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **matCondT=*float*** Temperature at which matCond is rated. See matCondCT (next). -<%= member_table( - units: "^o^F", - legal_range: "*x* $>$ 0", - default: "70 ^o^F", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "*x* $>$ 0", + "default": "70 ^o^F", + "required": "No", + "variability": "constant" + }) +}} **matCondCT=*float*** Coefficient for temperature adjustment of matCond in the forward difference surface conduction model. Each hour (not subhour), the conductivity of layers using this material are adjusted as followslrCond = matCond \* (1 + matCondCT\*(T~layer~ – matCondT)) -<%= member_table( - units: "^o^F^-1^", - legal_range: "", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "^o^F^-1^", + "legal_range": "", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} Note: A typical value of matCondCT for fiberglass batt insulation is 0.00418 F^-1^ @@ -63,45 +78,57 @@ Note: A typical value of matCondCT for fiberglass batt insulation is 0.00418 F^- Specific heat of material. -<%= member_table( - units: "Btu/lb-^o^F", - legal_range: "*x* $\\ge$ 0", - default: "0 (thermally massless)", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "Btu/lb-^o^F", + "legal_range": "*x* $\\ge$ 0", + "default": "0 (thermally massless)", + "required": "No", + "variability": "constant" + }) +}} **matDens=*float*** Density of material. -<%= member_table( - units: "lb/ft^3^", - legal_range: "*x* $\\ge$ 0", - default: "0 (massless)", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "lb/ft^3^", + "legal_range": "*x* $\\ge$ 0", + "default": "0 (massless)", + "required": "No", + "variability": "constant" + }) +}} **matRNom=*float*** Nominal R-value per foot of material. Appropriate for insulation materials only and *used for documentation only*. If specified, the current material is taken to have a nominal R-value that contributes to the reported nominal R-value for a construction. As with matCond, matRNom is *always* stated for a 1 foot thickness, even when matThk is specified; if the nominal R-value is known for a specific thickness, an expression can be used to derive matRNom. -<%= member_table( - units: "ft^2^-^o^F/Btuh", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft^2^-^o^F/Btuh", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **endMaterial** Optional to indicate the end of the material. Alternatively, the end of the material definition can be indicated by "END" or simply by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/meter.md b/doc/src/docs/input-data/meter.md index ce45aba99..820c821ba 100644 --- a/doc/src/docs/input-data/meter.md +++ b/doc/src/docs/input-data/meter.md @@ -31,34 +31,43 @@ The end use can be specified by the user only for GAINs and PVARRAYs; in other c Name of meter: required for assigning energy uses to the meter elsewhere. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **mtrDemandRate=*float*** DmdCost per Btu of demand, for a month. -<%= member_table( - units: "", - legal_range: "", - default: "N/A", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "N/A", + "required": "No", + "variability": "constant" + }) +}} **mtrRate=*float*** Cost of energy use per Btu. -<%= member_table( - units: "", - legal_range: "", - default: "N/A", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "N/A", + "required": "No", + "variability": "constant" + }) +}} **mtrSubmeters=*list of up to 50 METERs*** @@ -68,12 +77,15 @@ A comma-separate list of METERs that are accumulated into this METER with option - A given METER can be referenced only once in the mtrSubmeters list. - Circular references are not allowed. -<%= member_table( - units: "", - legal_range: "*names of METERs*", - default: "", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*names of METERs*", + "default": "", + "required": "No", + "variability": "constant" + }) +}} **mtrSubmeterMults=*list of up to 50 floats*** @@ -84,23 +96,29 @@ Submeter multipliers. Use cases for multipliers include -- A note re default values: if mtrSubmeterMults is omitted, all multipliers are defaulted to 1. However, when mtrSubmeterMults is included, a multiplier value should be provided for each METER listed in mtrSubmeters since unspecified values are set to 0. -<%= member_table( - units: "", - legal_range: "", - default: "1", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "1", + "required": "No", + "variability": "hourly" + }) +}} **endMeter** Indicates the end of the meter definition. Alternatively, the end of the meter definition can be indicated by the declaration of another object or by END. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/performancemap.md b/doc/src/docs/input-data/performancemap.md index 30b65f450..a5fdd7dfd 100644 --- a/doc/src/docs/input-data/performancemap.md +++ b/doc/src/docs/input-data/performancemap.md @@ -33,24 +33,29 @@ At OutdoorDBT=95 and Speed=2, this performance map would yield CapRat=1.00 and C Name of performance map; given after the word "PERFORMANCEMAP". Necessary to allow reference from e.g. RSYS. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **endPERFORMANCEMAP** Optionally indicates the end of PERFORMANCEMAP definition. It is good practice to include *endPerformanceMap* after the associated PMGRIDAXIS and PMLOOKDATA. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} @@ -64,60 +69,71 @@ The order of PMGRIDAXIS commands fixes the order of PMLOOKUPDATA values -- later Name of grid axis; optionally given after the word "PMGRIDAXIS". Used in error messages. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **pmGXType=*string*** Documents the dimension of the axis, for example "OutdoorDBT", "Speed", or "AirFlow". -<%= member_table( - units: "", - legal_range: "*at least 1 char*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*at least 1 char*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **pmGXValues=*float array*** 1 to 10 comma-separated values specifying the data points of this axis. Must be in strictly ascending order. -<%= member_table( - units: "various", - legal_range: "", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "various", + "legal_range": "", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **pmGXRefValue=*float*** Defines the reference or nominal value of this PMGRIDAXIS. For example, when defining temperature points for a typical air conditioner, pmGXRefValue=95 might be used, since AC capacity is rated at 95 F. -<%= member_table( - units: "same as pmGXValues", - legal_range: "", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "same as pmGXValues", + "legal_range": "", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **endPMGRIDAXIS** Optionally indicates the end of PMGRIDAXIS definition. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} @@ -127,45 +143,54 @@ Optionally indicates the end of PMGRIDAXIS definition. Name of lookup data; optionally given after the word "PMLOOKUPDATA". Used in error messages. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **pmLUType=*string*** Documents the current lookup value, e.g. "COP" or "CapacityRatio". -<%= member_table( - units: "", - legal_range: "*at least 1 char*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*at least 1 char*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **pmLUValues=*float array*** Comma-separated values specifying the lookup data. The number of values required is the product of the size of all PMGRIDAXISs in the current PEFORMANCEMAP. In the example above, there are 4 OutdoorDBTs and 3 speeds, so 12 values must be provided. -<%= member_table( - units: "various", - legal_range: "", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "various", + "legal_range": "", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **endPMLOOKUPDATA** Optionally indicates the end of PMLOOKUPDATA definition. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> \ No newline at end of file +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} \ No newline at end of file diff --git a/doc/src/docs/input-data/perimeter.md b/doc/src/docs/input-data/perimeter.md index a03e7bacb..89c5d2a76 100644 --- a/doc/src/docs/input-data/perimeter.md +++ b/doc/src/docs/input-data/perimeter.md @@ -6,45 +6,57 @@ PERIMETER defines a subobject belonging to the current zone that represents a le Optional name of perimeter. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **prLen=*float*** Length of exposed perimeter. -<%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **prF2=*float*** Perimeter conduction per unit length. -<%= member_table( - units: "Btuh/ft-^o^F", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "Btuh/ft-^o^F", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **endPerimeter** Optionally indicates the end of the perimeter definition. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/pvarray.md b/doc/src/docs/input-data/pvarray.md index a2fcd30ec..3bb0418d2 100644 --- a/doc/src/docs/input-data/pvarray.md +++ b/doc/src/docs/input-data/pvarray.md @@ -6,25 +6,29 @@ PVARRAY describes a photovoltaic panel system. The algorithms are based on the [ Name of photovoltaic array. Give after the word PVARRAY. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **pvElecMtr=*choice*** Name of meter by which this PVARRAY's AC power out is recorded. Generated power is expressed as a negative value. -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*name of a METER*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **pvEndUse=*choice*** @@ -32,25 +36,29 @@ Meter end use to which the PVARRAY's generated energy should be accumulated. {% include 'enduses.md' %} -<%= member_table( - units: "", - legal_range: "*Codes listed above*", - default: "PV", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*Codes listed above*", + "default": "PV", + "required": "No", + "variability": "constant" + }) +}} **pvDCSysSize=*float*** The rated photovoltaic system DC capacity/size as indicated by the nameplate. -<%= member_table( - units: "kW", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "kW", + "legal_range": "x $\\geq$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **pvModuleType=*choice*** @@ -65,61 +73,71 @@ Type of module to model. The module type determines the refraction index and tem END %> -<%= member_table( - units: "", - legal_range: "Standard Premium ThinFilm Custom", - default: "Standard", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "Standard Premium ThinFilm Custom", + "default": "Standard", + "required": "No", + "variability": "constant" + }) +}} **pvCoverRefrInd=*float*** The refraction index for the coating applied to the module cover. A value of 1.0 represents refraction through air. Coatings have higher refraction indexes that capture more solar at lower angles of incidence. -<%= member_table( - units: "", - legal_range: "x $\\geq$ 0", - default: "1.3", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\geq$ 0", + "default": "1.3", + "required": "No", + "variability": "constant" + }) +}} **pvTempCoeff=*float*** The temperature coefficient how the efficiency of the module varies with the cell temperature. Values are typically negative. -<%= member_table( - units: "1/^o^F", - legal_range: "*no restrictions*", - default: "-0.00206", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "1/^o^F", + "legal_range": "*no restrictions*", + "default": "-0.00206", + "required": "No", + "variability": "constant" + }) +}} **pvArrayType=*choice*** The type of array describes mounting and tracking options. Roof mounted arrays have a higher installed nominal operating cell temperature (INOCT) of 120 ^o^F compared to the default of 113 ^o^F. Array self-shading is not currently calculated for adjacent rows of modules within an array. -<%= member_table( - units: "", - legal_range: " FixedOpenRack, FixedRoofMount, OneAxisTracking, TwoAxisTracking", - default: "FixedOpenRack", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": " FixedOpenRack, FixedRoofMount, OneAxisTracking, TwoAxisTracking", + "default": "FixedOpenRack", + "required": "No", + "variability": "constant" + }) +}} **pvTilt=*float*** The tilt of the photovoltaic array from horizontal. Values outside the range 0 to 360 are first normalized to that range. For one-axis tracking, defines the tilt of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. -<%= member_table( - units: "degrees", - legal_range: "unrestricted", - default: "from pvVertices (if given) else 0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "degrees", + "legal_range": "unrestricted", + "default": "from pvVertices (if given) else 0", + "required": "No", + "variability": "hourly" + }) +}} The following figures illustrate the use of both pvTilt and pvAzm for various configurations: @@ -135,13 +153,15 @@ The following figures illustrate the use of both pvTilt and pvAzm for various co Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the range 0^o^ $\leq$ *x* $<$ 360^o^ is given, it is normalized to that range. For one-axis tracking, defines the azimuth of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. -<%= member_table( - units: "degrees", - legal_range: "unrestricted", - default: "from pvVertices (if given) else 0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "degrees", + "legal_range": "unrestricted", + "default": "from pvVertices (if given) else 0", + "required": "No", + "variability": "hourly" + }) +}} **pvVertices=*list of up to 36 floats*** @@ -155,13 +175,15 @@ Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the pvVertices = 0, 0, 15, 20, 0, 15, 20, 7.07, 22.07, 0, 7.07, 22.07 -<%= member_table( - units: "ft", - legal_range: "unrestricted", - default: "no polygon", - required: "9, 12, 15, 18, 21, 24, 27, 30, 33, or 36 values", - variability: "constant") - %> +{{ + member_table({ + "units": "ft", + "legal_range": "unrestricted", + "default": "no polygon", + "required": "9, 12, 15, 18, 21, 24, 27, 30, 33, or 36 values", + "variability": "constant" + }) +}} **pvSIF=*float*** @@ -184,25 +206,29 @@ Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the Specified mounting location of this PVARRAY. pvMounting=Site indicates the array position is not altered by building rotation via [TOP bldgAzm][top-general-data-items], while PVARRAYs with pvMounting=Building are assumed to rotate with the building. -<%= member_table( - units: "", - legal_range: "Building or Site", - default: "Building", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "Building or Site", + "default": "Building", + "required": "No", + "variability": "constant" + }) +}} **pvGrndRefl=*float*** Ground reflectance used for calculating reflected solar incidence on the array. -<%= member_table( - units: "", - legal_range: "0 $<$ *x* $<$ 1.0", - default: "0.2", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $<$ *x* $<$ 1.0", + "default": "0.2", + "required": "No", + "variability": "hourly" + }) +}} The specified surface must be modeled with the Delayed model. If gain is targeted to a Quick model surface, a warning message is issued and the gain is redirected to the air of the associated zone. -<%= member_table( - units: "", - legal_range: "name of a *SURFACE*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "name of a *SURFACE*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **sgSide=*choice*** @@ -43,12 +49,15 @@ EXTERIOR, Apply gain to exterior of surface END %> -<%= member_table( - units: "", - legal_range: "INTERIOR, EXTERIOR", - default: "Side of surface in zone containing window; or INTERIOR if both sides are in zone containing window.", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "INTERIOR, EXTERIOR", + "default": "Side of surface in zone containing window; or INTERIOR if both sides are in zone containing window.", + "required": "Yes", + "variability": "constant" + }) +}} @@ -229,67 +286,85 @@ PHIL, Phil's central difference method. Should be better if perfected*co END %> -<%= member_table( - units: "", - legal_range: "ROB, PHIL", - default: "ROB", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "ROB, PHIL", + "default": "ROB", + "required": "No", + "variability": "constant" + }) +}} **dflExH=*float*** Default exterior surface (air film) conductance used for opaque and glazed surfaces exposed to ambient conditions in the absence of explicit specification. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "*x* $>$ 0", - default: "2.64", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": "*x* $>$ 0", + "default": "2.64", + "required": "No", + "variability": "constant" + }) +}} **bldgAzm=*float*** Reference compass azimuth (0 = north, 90 = east, etc.). All zone orientations (and therefore surface orientations) are relative to this value, so the entire building can be rotated by changing bldgAzm only. If a value outside the range 0^o^ $\leq$ *x* $<$ 360^o^ is given, it is normalized to that range. -<%= member_table( - units: "^o^ (degrees)", - legal_range: "unrestricted", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "^o^ (degrees)", + "legal_range": "unrestricted", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **elevation=*float*** Elevation of the building site. Used internally for the computation of barometric pressure and air density of the location. -<%= member_table( - units: "ft", - legal_range: "*x* $\\ge$ 0", - default: "0 (sea level)", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $\\ge$ 0", + "default": "0 (sea level)", + "required": "No", + "variability": "constant" + }) +}} **runTitle=*string*** Run title for the simulation. Appears in report footers, export headers, and in the title lines to the INP, LOG, and ERR built-in reports (these appear by default in the primary report file; the ERR report also appears in the error message file, if one is created). -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "blank (no title", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "blank (no title", + "required": "No", + "variability": "constant" + }) +}} **runSerial=*int*** Run serial number for the simulation. Increments on each run in a session; appears in report footers. -<%= member_table( - units: "", - legal_range: "0 $\leq$ *x* $\leq$ 999", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\leq$ *x* $\leq$ 999", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} ## TOP Daylight Saving Time Items @@ -299,34 +374,43 @@ Daylight savings starts by default at 2:00 a.m. of the second Sunday in March. I Whether Daylight Savings Time is to be used for the current run. -<%= member_table( - units: "", - legal_range: "YES, NO", - default: "YES", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "YES, NO", + "default": "YES", + "required": "No", + "variability": "constant" + }) +}} **DTbegDay=*date*** Start day for daylight saving time (assuming DT=Yes) -<%= member_table( - units: "", - legal_range: "*date*", - default: "*second Sunday in March*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*date*", + "default": "*second Sunday in March*", + "required": "No", + "variability": "constant" + }) +}} **DTendDay=*date*** End day for daylight saving time (assuming DT=Yes) -<%= member_table( - units: "", - legal_range: "*date*", - default: "*first Sunday in November*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*date*", + "default": "*first Sunday in November*", + "required": "No", + "variability": "constant" + }) +}} ## TOP Model Control Items @@ -348,12 +432,15 @@ As noted, ventAvail is evaluated hourly, permitting flexible control strategy mo : ($hour >= 19 && $hour <= 23) ? WHOLEBUILDING : NONE -<%= member_table( - units: "", - legal_range: "*Choices above*", - default: "WHOLEBUILDING", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "*Choices above*", + "default": "WHOLEBUILDING", + "required": "No", + "variability": "hourly" + }) +}} **exShadeModel=*choice*** @@ -366,12 +453,15 @@ NONE, Disable advanced shading calculations END %> -<%= member_table( - units: "", - legal_range: "*Choices above*", - default: "PENUMBRA", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*Choices above*", + "default": "PENUMBRA", + "required": "No", + "variability": "constant" + }) +}} **slrInterpMeth=*choice*** @@ -384,56 +474,71 @@ TRNSYS END %> -<%= member_table( - units: "", - legal_range: "See table above", - default: "CSE", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "See table above", + "default": "CSE", + "required": "No", + "variability": "constant" + }) +}} **ANTolAbs=*float*** AirNet absolute convergence tolerance. Ideally, calculated zone air pressures should be such that the net air flow into each zone is 0 -- that is, there should be a perfect mass balance. The iterative AirNet solution techniques are deemed converged when netAirMassFlow < max( ANTolAbs, ANTolRel*totAirMassFlow). -<%= member_table( - units: "lbm/sec", - legal_range: "*x* $>$ 0", - default: "0.00125 (about 1 cfm)", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "lbm/sec", + "legal_range": "*x* $>$ 0", + "default": "0.00125 (about 1 cfm)", + "required": "No", + "variability": "constant" + }) +}} **ANTolRel=*float*** AirNet relative convergence tolerance. See AnTolAbs just above. -<%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "0.0001", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*x* $>$ 0", + "default": "0.0001", + "required": "No", + "variability": "constant" + }) +}} **ANPressWarn=*float*** AirNet pressure warning threshold. A warning message is issued when the absolute value of the AirNet-calculated zone pressure exceeds ANPressWarn. Note the default for ANPressWarn conservatively large. 10 lb/ft2 is about 500 pascals -- a pressure that is probably impossible in a building. The intent of this value is to alert the user to incorrect modeling inputs while avoiding excessive messages. -<%= member_table( - units: "lb/ft2", - legal_range: "x $\\gt$ 0", - default: "10", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "lb/ft2", + "legal_range": "x $\\gt$ 0", + "default": "10", + "required": "No", + "variability": "constant" + }) +}} **ANPressErr=*float*** AirNet pressure error threshold. The simulation terminates with a message if the absolute value of any AirNet-calculated zone pressure exceeds ANPressErr. Note the default value for ANPressErr is physically unrealistic. 30 lb/ft2 is about 1500 pascals -- a pressure that would never be possible in a building. The intent of this value is to prevent simulation crashes due to numerical errors in AirNet calculations. -<%= member_table( - units: "lb/ft2", - legal_range: "x $\\gt$ 0", - default: "30", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "lb/ft2", + "legal_range": "x $\\gt$ 0", + "default": "30", + "required": "No", + "variability": "constant" + }) +}} The ASHWAT complex fenestration model used when WINDOW wnModel=ASHWAT yields several heat transfer results that are accurate over local ranges of conditions. Several values control when these value are recalculated. If any of the specified values changes more than the associated threshold, a full ASHWAT calculation is triggered. Otherwise, prior results are used. ASHWAT calculations are computationally expensive and conditions often change only incrementally between time steps. @@ -442,34 +547,43 @@ The ASHWAT complex fenestration model used when WINDOW wnModel=ASHWAT yields sev ASHWAT temperature change threshold -- full calculation is triggered by a change of either indoor or outdoor environmental (combined air and radiant) temperature that exceeds AWTrigT. -<%= member_table( - units: "^o^F", - legal_range: "*x* $>$ 0", - default: "1", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "*x* $>$ 0", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} **AWTrigSlr=*float*** ASHWAT solar change threshold -- full calculation is triggered by a fractional change of incident solar radiation that exceeds AWTrigSlr. -<%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "0.05", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*x* $>$ 0", + "default": "0.05", + "required": "No", + "variability": "constant" + }) +}} **AWTrigH=*float*** ASHWAT convection coefficient change threshold -- full calculation is triggered by a fractional change of inside surface convection coefficient that exceeds AWTrigH. -<%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "0.1", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*x* $>$ 0", + "default": "0.1", + "required": "No", + "variability": "constant" + }) +}} ## TOP Weather Data Items @@ -498,12 +612,15 @@ Weather file path name for simulation. The file should be in the current directo Note: Backslash (\\) characters in path names must be doubled to work properly (e.g. "\\\\wthr\\\\mywthr.epw"). Forward slash (/) may be used in place of backslash without doubling. -<%= member_table( - units: "", - legal_range: "file name,path optional", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "file name,path optional", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **skyModel=*choice*** @@ -515,12 +632,15 @@ ANISOTROPIC, Hay anisotropic model END %> -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "ANISOTROPIC", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "ANISOTROPIC", + "required": "No", + "variability": "constant" + }) +}} **skyModelLW=*choice*** @@ -536,12 +656,15 @@ IRHORIZ, Derives tSky from horizonal infrared data from the weather file END %> -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "DEFAULT", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "DEFAULT", + "required": "No", + "variability": "constant" + }) +}} The reference temperature and humidity are used to calculate a humidity ratio assumed in air specific heat calculations. The small effect of changing humidity on the specific heat of air is generally ignored in the interests of speed, but the user can control the humidity whose specific heat is used through the refTemp and refRH inputs. @@ -549,35 +672,44 @@ The reference temperature and humidity are used to calculate a humidity ratio as Reference temperature (see above paragraph). -<%= member_table( - units: "^o^F", - legal_range: "*x* $\\ge$ 0", - default: "60^o^", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "*x* $\\ge$ 0", + "default": "60^o^", + "required": "No", + "variability": "constant" + }) +}} **refRH=*float*** Reference relative humidity (see above). -<%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "0.6", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "0.6", + "required": "No", + "variability": "constant" + }) +}} **grndRefl=*float*** Global ground reflectivity, used except where other value specified with sfGrndRefl or wnGrndRefl. This reflectivity is used in computing the reflected beam and diffuse radiation reaching the surface in question. It is also used to calculate the solar boundary conditions for the exterior grade surface in two-dimensional finite difference calculations for FOUNDATIONs. -<%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "0.2", - required: "No", - variability: "Monthly-Hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "0.2", + "required": "No", + "variability": "Monthly-Hourly" + }) +}} The following values modify weather file data, permitting varying the simulation without making up special weather files. For example, to simulate without the effects of wind, use windF = 0; to halve the effects of diffuse solar radiation, use radDiffF = 0.5. Note that the default values for windSpeedMin and windF result in modification of weather file wind values unless other values are specified. @@ -585,12 +717,15 @@ The following values modify weather file data, permitting varying the simulation Long-wave emittance of the exterior grade surface used in two-dimensional finite difference calculations for FOUNDATIONs. -<%= member_table( - units: "", - legal_range: "0.0 $\le$ x $\le$ 1.0", - default: "0.8", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0.0 $\le$ x $\le$ 1.0", + "default": "0.8", + "required": "No", + "variability": "constant" + }) +}} @@ -599,12 +734,15 @@ Long-wave emittance of the exterior grade surface used in two-dimensional finite Ground surface roughness. Used for convection and wind speed corrections in two-dimensional finite difference calculations for FOUNDATIONs. -<%= member_table( - units: "ft", - legal_range: "x $\\geq$ 0.0", - default: "0.1", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "x $\\geq$ 0.0", + "default": "0.1", + "required": "No", + "variability": "constant" + }) +}} @@ -612,23 +750,29 @@ Ground surface roughness. Used for convection and wind speed corrections in two- Minimum value for wind speed -<%= member_table( - units: "mph", - legal_range: "*x* $\\ge$ 0", - default: "0.5", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "mph", + "legal_range": "*x* $\\ge$ 0", + "default": "0.5", + "required": "No", + "variability": "constant" + }) +}} **windF=*float*** Wind Factor: multiplier for wind speeds read from weather file. windF is applied *after* windSpeedMin. Note that windF does *not* effect infiltration rates calculated by the Sherman-Grimsrud model (see e.g. ZONE.infELA). However, windF does modify AirNet flows (see IZXFER). -<%= member_table( - units: "", - legal_range: "*x* $\\ge$ 0", - default: "0.25", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*x* $\\ge$ 0", + "default": "0.25", + "required": "No", + "variability": "constant" + }) +}} **terrainClass=*int*** @@ -643,12 +787,15 @@ Specifies characteristics of ground terrain in the project region. END %> -<%= member_table( - units: "", - legal_range: "1 $\\leq$ *x* $\\leq$ 5", - default: "4", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "1 $\\leq$ *x* $\\leq$ 5", + "default": "4", + "required": "No", + "variability": "constant" + }) +}} @@ -718,12 +880,15 @@ Soil conductivity. Used in two-dimensional finite difference calculations for FO Soil specific heat. Used in two-dimensional finite difference calculations for FOUNDATIONs. -<%= member_table( - units: "Btu/lb-^o^F", - legal_range: "*x* $>$ 0", - default: "0.1", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "Btu/lb-^o^F", + "legal_range": "*x* $>$ 0", + "default": "0.1", + "required": "No", + "variability": "constant" + }) +}} @@ -731,12 +896,15 @@ Soil specific heat. Used in two-dimensional finite difference calculations for F Soil density. Used in two-dimensional finite difference calculations for FOUNDATIONs. -<%= member_table( - units: "lb/ft^3^", - legal_range: "*x* $>$ 0", - default: "115", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "lb/ft^3^", + "legal_range": "*x* $>$ 0", + "default": "115", + "required": "No", + "variability": "constant" + }) +}} @@ -744,12 +912,15 @@ Soil density. Used in two-dimensional finite difference calculations for FOUNDAT Far-field width. Distance from foundation to the lateral, zero-flux boundary condition. Used in two-dimensional finite difference calculations for FOUNDATIONs. -<%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "130", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $>$ 0", + "default": "130", + "required": "No", + "variability": "constant" + }) +}} **deepGrndCnd=*choice*** @@ -766,24 +937,30 @@ Deep-ground boundary condition type. Choices are WATERTABLE (i.e., a defined tem Deep-ground depth. Distance from exterior grade to the deep-ground boundary. Used in two-dimensional finite difference calculations for FOUNDATIONs. -<%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "130", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $>$ 0", + "default": "130", + "required": "No", + "variability": "constant" + }) +}} **deepGrndT=*float*** Deep-ground temperature. Used when deepGrndCnd=WATERTABLE. -<%= member_table( - units: "F", - legal_range: "*x* $>$ 0", - default: "Annual average drybulb temperature", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "F", + "legal_range": "*x* $>$ 0", + "default": "Annual average drybulb temperature", + "required": "No", + "variability": "hourly" + }) +}} @@ -843,12 +1020,15 @@ END Note: Backslash (\\) characters in path names must be doubled to work properly (e.g. "\\\\data\\\\mytdv.tdv"). Forward slash (/) may be used in place of backslash without doubling. -<%= member_table( - units: "", - legal_range: "file name, path optional", - default: "(no TDV file)", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "file name, path optional", + "default": "(no TDV file)", + "required": "No", + "variability": "constant" + }) +}} ## TOP Report Data Items @@ -858,78 +1038,99 @@ These items are used in page-formatted report output files. See REPORTFILE, Sect Report left header. Appears at the upper left of each report page unless page formatting (rfPageFmt) is OFF. If combined length of repHdrL and repHdrR is too large for the page width, one or both will be truncated. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **repHdrR=*string*** Report right header. Appears at the upper right of each report page unless page formatting (rfPageFmt) is OFF. If combined length of repHdrL and repHdrR is too large for the page width, one or both will be truncated. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **repLPP=*int*** Total lines per page to be assumed for reports. Number of lines used for text (including headers and footers) is repLPP - repTopM - repBotM. -<%= member_table( - units: "lines", - legal_range: "*x* $\\ge$ 50", - default: "66", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "lines", + "legal_range": "*x* $\\ge$ 50", + "default": "66", + "required": "No", + "variability": "constant" + }) +}} **repTopM=*int*** Number of lines to be skipped at the top of each report page (prior to header). -<%= member_table( - units: "lines", - legal_range: "0 $\\geq$ *x* $\\geq$ 12", - default: "3", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "lines", + "legal_range": "0 $\\geq$ *x* $\\geq$ 12", + "default": "3", + "required": "No", + "variability": "constant" + }) +}} **repBotM=*int*** Number of lines reserved at the bottom of each report page. repBotM determines the position of the footer on the page (blank lines after the footer are not actually written). -<%= member_table( - units: "lines", - legal_range: "0 $\\geq$ *x* $\\geq$ 12", - default: "3", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "lines", + "legal_range": "0 $\\geq$ *x* $\\geq$ 12", + "default": "3", + "required": "No", + "variability": "constant" + }) +}} **repCPL=*int*** Characters per line for report headers and footers, user defined reports, and error messages. CSE writes simple ASCII files and assumes a fixed (not proportional) spaced printer font. Many of the built-in reports now (July 1992) assume a line width of 132 columns. -<%= member_table( - units: "characters", - legal_range: "78 $\\leq$ *x* $\\leq$ 132", - default: "78", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "characters", + "legal_range": "78 $\\leq$ *x* $\\leq$ 132", + "default": "78", + "required": "No", + "variability": "constant" + }) +}} **repTestPfx=*string*** Report test prefix. Appears at beginning of report lines that are expected to differ from prior runs. This is useful for "hiding" lines from text comparison utilities in automated testing schemes. Note: the value specified with command line -x takes precedence over this input. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} ## TOP Autosizing @@ -937,45 +1138,57 @@ Report test prefix. Appears at beginning of report lines that are expected to di Controls invocation of autosizing phase prior to simulation. -<%= member_table( - units: "", - legal_range: "YES, NO", - default: "NO, unless AUTOSIZE commands in input", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "YES, NO", + "default": "NO, unless AUTOSIZE commands in input", + "required": "No", + "variability": "constant" + }) +}} **auszTol=*float*** Autosize tolerance. Sized capacity results are deemed final when successive design day calculations produce results within auszTol of the prior iteration. -<%= member_table( - units: "", - legal_range: "", - default: ".005", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": ".005", + "required": "No", + "variability": "constant" + }) +}} **heatDsTDbO=*float*** Heating outdoor dry bulb design temperature used for autosizing heating equipment. -<%= member_table( - units: "^o^F", - legal_range: "", - default: "*none*", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "hourly" + }) +}} **heatDsTWbO=*float*** Heating outdoor design dry bulb temperature used for autosizing heating equipment. -<%= member_table( - units: "^o^F", - legal_range: "*x* $\\ge$ 0", - default: "derived assuming RH=.7", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "*x* $\\ge$ 0", + "default": "derived assuming RH=.7", + "required": "No", + "variability": "hourly" + }) +}} CSE provides 3 mutually-exclusive methods for specifying cooling design conditions. Each resulting design day is simulated repeatedly until results (e.g. equipment capacities) converge to stable values. Multiple days are typically used to ensure the a range of temperatures and sun positions are considered. @@ -987,34 +1200,43 @@ CSE provides 3 mutually-exclusive methods for specifying cooling design conditio Specifies cooling design conditions for cooling autosizing. A comma-separated list of up to 12 DESCOND names can be provided. Each day will be simulated repeatedly using weather conditions generated from DESCOND values. -<%= member_table( - units: "", - legal_range: "*name of DESCOND*", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*name of DESCOND*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **coolDsDay=*list of up to 12 days*** Specifies cooling design days for cooling autosizing. Each day will be simulated repeatedly using weather file conditions for that day. -<%= member_table( - units: "dates", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "dates", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **coolDsMo=*list of up to 12 months*** Deprecated method for specifying design days for cooling autosizing. Design conditions are taken from ET1 weather file header, however, the limited availale ET1 files do not contain design condition information. -<%= member_table( - units: "months", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "months", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} ## TOP Debug Reporting @@ -1023,12 +1245,15 @@ Deprecated method for specifying design days for cooling autosizing. Design con Controls verbosity of screen remarks. Most possible remarks are generated during autosizing of CNE models. Little or no effect in CSE models. TODO: document options -<%= member_table( - units: "", - legal_range: "0 - 5", - default: "1", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 - 5", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} The following dbgPrintMask values provide bitwise control of addition of semi-formated internal results to the run report file. The values and format of debugging reports are modified as required for testing purposes. @@ -1036,45 +1261,57 @@ The following dbgPrintMask values provide bitwise control of addition of semi-fo Constant portion of debug reporting control. -<%= member_table( - units: "", - legal_range: "", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **dbgPrintMask=*int*** Hourly portion of debug reporting control (generally an expression that evaluates to non-0 only on days or hours of interest). -<%= member_table( - units: "", - legal_range: "", - default: "0", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "0", + "required": "No", + "variability": "hourly" + }) +}} **dbgFlag=*int*** Allows passing an input value to ad-hoc debugging code. No permanent use; no impact on results. -<%= member_table( - units: "", - legal_range: "", - default: "0", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "0", + "required": "No", + "variability": "subhourly" + }) +}} **doCoverage=*choice*** Enables expression code coverage reporting. Development aid. -<%= member_table( - units: "", - legal_range: "NO, YES", - default: "*NO*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "NO, YES", + "default": "*NO*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/window.md b/doc/src/docs/input-data/window.md index 1027530cc..4dce1b6d1 100644 --- a/doc/src/docs/input-data/window.md +++ b/doc/src/docs/input-data/window.md @@ -8,73 +8,85 @@ Windows may optionally have operable interior shading that reduces the overall s Name of window: follows the word "WINDOW" if given. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **wnHeight=*float*** Overall height of window (including frame). -<%= member_table( - units: "ft", - legal_range: "x $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "ft", + "legal_range": "x $>$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **wnWidth=*float*** Overall width of window (including frame). -<%= member_table( - units: "ft", - legal_range: "x $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "ft", + "legal_range": "x $>$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **wnArea=*float*** Overall area of window (including frame). -<%= member_table( - units: "ft^2^", - legal_range: "x $>$ 0", - default: "*wnHeight* \* *wnWidth*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "ft^2^", + "legal_range": "x $>$ 0", + "default": "*wnHeight* \* *wnWidth*", + "required": "No", + "variability": "constant" + }) +}} **wnMult=*float*** Area multiplier; can be used to represent multiple identical windows. -<%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "1", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} **wnModel=*choice*** Selects window model -<%= member_table( - units: "", - legal_range: "SHGC, ASHWAT", - default: "SHGC", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "SHGC, ASHWAT", + "default": "SHGC", + "required": "No", + "variability": "constant" + }) +}} **wnGt=*choice*** @@ -92,49 +104,57 @@ Where 0.85 is the sum of the interior (0.68) and exterior (0.17) design air film Approach 2. Enter wnU=U-factor and let the wnInH and wnExH default. Tnormally this approach systematically underestimates the window U-factor because it adds the wnExfilm resistance to 1/U-factor thereby double counting the exterior film resistance. This approach will also yield incorrect results for gnFrad internal gain since the high wnInH will put almost all the gain back in the space. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "x $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": "x $>$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **wnUNFRC=*float*** Fenestration system (including frame) U-factor evaluated at NFRC heating conditions. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "x $>$ 0", - default: "gtUNFRC", - required: "Required when *wnModel* = ASHWAT", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": "x $>$ 0", + "default": "gtUNFRC", + "required": "Required when *wnModel* = ASHWAT", + "variability": "constant" + }) +}} **wnExEpsLW=*float*** Window exterior long wave (thermal) emittance. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.84", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ *x* $\\le$ 1", + "default": "0.84", + "required": "No", + "variability": "constant" + }) +}} **wnInEpsLW=*float*** Window interior long wave (thermal) emittance. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.84", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ *x* $\\le$ 1", + "default": "0.84", + "required": "No", + "variability": "constant" + }) +}} **wnInH=*float*** @@ -148,25 +168,29 @@ Preferred Approach: Enter the appropriate value for each window, normally: The large default value of 10,000 represents a near-0 resistance, for the convenience of those who wish to include the interior surface film in wnU according to approach 2 above. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "x $>$ 0", - default: "10000", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": "x $>$ 0", + "default": "10000", + "required": "No", + "variability": "constant" + }) +}} **wnExH=*float*** Window exterior surface (air film) conductance. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "x $>$ 0", - default: "same as owning surface", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": "x $>$ 0", + "default": "same as owning surface", + "required": "No", + "variability": "constant" + }) +}} Several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on wnExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. @@ -186,205 +210,239 @@ END Selects the model used for exterior surface convection when wnModel = Forward\_Difference. -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "UNIFIED", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "UNIFIED", + "required": "No", + "variability": "constant" + }) +}} **wnExHcLChar=*float*** Characteristic length of surface, used in derivation of forced exterior convection coefficients in some models when outside face is exposed to ambient (i.e. to wind). -<%= member_table( - units: "ft", - legal_range: "x $>$ 0", - default: "10", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "ft", + "legal_range": "x $>$ 0", + "default": "10", + "required": "No", + "variability": "constant" + }) +}} **wnExHcMult=*float*** Exterior convection coefficient adjustment factor. When wnExHcModel=INPUT, hc=wnExHcMult. For other wnExHcModel choices, the model-derived hc is multiplied by wnExHcMult. -<%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "1", - required: "No", - variability: "subhourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\ge$ 0", + "default": "1", + "required": "No", + "variability": "subhourly" + }) +}} **wnInHcModel=*choice*** Selects the model used for the inside (zone) surface convection when wnModel = Forward\_Difference. -<%= member_table( - units: "", - legal_range: "*choices above (see wnExHcModel)*", - default: "UNIFIED", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above (see wnExHcModel)*", + "default": "UNIFIED", + "required": "No", + "variability": "constant" + }) +}} **wnInHcMult=*float*** Interior convection coefficient adjustment factor. When wnInHcModel=INPUT, hc=wnInHcMult. For other wnInHcModel choices, the model-derived hc is multiplied by wnInHcMult. -<%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "1", - required: "No", - variability: "subhourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\ge$ 0", + "default": "1", + "required": "No", + "variability": "subhourly" + }) +}} **wnSHGC=*float*** Rated Solar Heat Gain Coefficient (SHGC) for the window assembly. -<%= member_table( - units: "fraction", - legal_range: "0 < x < 1", - default: "gtSHGC", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 < x < 1", + "default": "gtSHGC", + "required": "No", + "variability": "constant" + }) +}} **wnFMult=*float*** Frame area multiplier = areaGlaze / areaAssembly -<%= member_table( - units: "fraction", - legal_range: "0 < x < 1", - default: "gtFMult or 1", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 < x < 1", + "default": "gtFMult or 1", + "required": "No", + "variability": "constant" + }) +}} **wnSMSO=*float*** SHGC multiplier with shades open. Overrides gtSMSO. -<%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "gtSMSO or 1", - required: "No", - variability: "Monthly - Hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "gtSMSO or 1", + "required": "No", + "variability": "Monthly - Hourly" + }) +}} **wnSMSC=*float*** SHGC multiplier with shades closed. Overrides gtSMSC -<%= member_table( - units: "fraction", - legal_range: "0 $\leq$ *x* $\leq$ 1", - default: "wnSMSO or gtSMSC", - required: "No", - variability: "Monthly - Hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 $\leq$ *x* $\leq$ 1", + "default": "wnSMSO or gtSMSC", + "required": "No", + "variability": "Monthly - Hourly" + }) +}} **wnNGlz=*int*** Number of glazings in the window (bare glass only, not including any interior or exterior shades). -<%= member_table( - units: "", - legal_range: "0 $<$ *x* $\leq$ 4", - default: "gtNGLZ", - required: "Required when *wnModel* = ASHWAT", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $<$ *x* $\leq$ 4", + "default": "gtNGLZ", + "required": "Required when *wnModel* = ASHWAT", + "variability": "constant" + }) +}} **wnExShd=*choice*** Exterior shading type (ASHWAT only). -<%= member_table( - units: "", - legal_range: "NONE, INSCRN", - default: "gtExShd", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "NONE, INSCRN", + "default": "gtExShd", + "required": "No", + "variability": "constant" + }) +}} **wnInShd=*choice*** Interior shade type (ASHWAT only). -<%= member_table( - units: "", - legal_range: "NONE, DRAPEMED", - default: "gtInShd", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "NONE, DRAPEMED", + "default": "gtInShd", + "required": "No", + "variability": "constant" + }) +}} **wnDirtLoss=*float*** Glazing dirt loss factor. -<%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **wnGrndRefl=*float*** Ground reflectivity for this window. -<%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "sfGrndRefl", - required: "No", - variability: "Monthly - Hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "sfGrndRefl", + "required": "No", + "variability": "Monthly - Hourly" + }) +}} **wnVfSkyDf=*float*** View factor from this window to sky for diffuse radiation. For the shading effects of an overhang, a wnVfSkyDf value smaller than the default would be used -<%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ x $\\leq$ 1", - default: "0.5 - 0.5 cos(tilt) = .5 for vertical surface", - required: "No", - variability: "Monthly - Hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 $\\leq$ x $\\leq$ 1", + "default": "0.5 - 0.5 cos(tilt) = .5 for vertical surface", + "required": "No", + "variability": "Monthly - Hourly" + }) +}} **wnVfGrndDf=*float*** View factor from this window to ground for diffuse radiation. For the shading effects of a fin(s), both wnVfSkyDf and wnVfGrndDf would be used. -<%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ x $\\leq$ 1", - default: "0.5 + 0.5 .5 for vertical surface", - required: "No", - variability: "Monthly - Hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 $\\leq$ x $\\leq$ 1", + "default": "0.5 + 0.5 .5 for vertical surface", + "required": "No", + "variability": "Monthly - Hourly" + }) +}} **endWINDOW** Optionally indicates the end of the window definition. Alternatively, the end of the window definition can be indicated by END or the declaration of another object. END or endWindow, if used, should follow any subobjects of the window (SHADEs and/or SGDISTs). -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/zone.md b/doc/src/docs/input-data/zone.md index d609c73b2..6d6f4fef1 100644 --- a/doc/src/docs/input-data/zone.md +++ b/doc/src/docs/input-data/zone.md @@ -8,13 +8,15 @@ ZONE constructs an object of class ZONE, which describes an area of the building Name of zone. Enter after the word ZONE; no "=" is used. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **znModel=*choice*** @@ -27,181 +29,211 @@ UZM, Unconditioned zone model. Identical to CZM except heating and cooling are n END %> -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "CNE", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "CNE", + "required": "No", + "variability": "constant" + }) +}} **znArea=*float*** Nominal zone floor area. -<%= member_table( - units: "ft^2^", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "ft^2^", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **znVol=*float*** Nominal zone volume. -<%= member_table( - units: "ft^3^", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "ft^3^", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **znAzm=*float*** Zone azimuth with respect to bldgAzm. All surface azimuths are relative to znAzm, so that the zone can be rotated by changing this member only. Values outside the range 0^o^ to 360^o^ are normalized to that range. -<%= member_table( - units: "degrees", - legal_range: "unrestricted", - default: "0", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "degrees", + "legal_range": "unrestricted", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **znFloorZ=*float*** Nominal zone floor height relative to arbitrary 0 level. Used re determination of vent heights -<%= member_table( - units: "ft", - legal_range: "unrestricted", - default: "0", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "ft", + "legal_range": "unrestricted", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **znCeilingHt=*float*** Nominal zone ceiling height relative to zone floor (typically 8 – 10 ft). -<%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "*znVol* / *znArea*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $>$ 0", + "default": "*znVol* / *znArea*", + "required": "No", + "variability": "constant" + }) +}} **znEaveZ=*float*** Nominal eave height above ground level. Used re calculation of local surface wind speed. This in turn influences outside convection coefficients in some surface models and wind-driven air leakage. -<%= member_table( - units: "ft", - legal_range: "x $>$ 0", - default: "*znFloorZ + infStories\*8*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "ft", + "legal_range": "x $>$ 0", + "default": "*znFloorZ + infStories\*8*", + "required": "No", + "variability": "constant" + }) +}} **znCAir=*float*** Zone "air" heat capacity: represents heat capacity of air, furniture, "light" walls, and everything in zone except surfaces having heat capacity (that is, non-QUICK surfaces). -<%= member_table( - units: "Btu/^o^F", - legal_range: "x $\\geq$ 0", - default: "3.5 \* *znArea*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "Btu/^o^F", + "legal_range": "x $\\geq$ 0", + "default": "3.5 \* *znArea*", + "required": "No", + "variability": "constant" + }) +}} **znHcAirX=*float*** Zone air exchange rate used in determination of interior surface convective coefficients. This item is generally used only for model testing. -<%= member_table( - units: "ACH", - legal_range: "x $>$ 0", - default: "as modeled", - required: "No", - variability: "subhourly") - %> +{{ + member_table({ + "units": "ACH", + "legal_range": "x $>$ 0", + "default": "as modeled", + "required": "No", + "variability": "subhourly" + }) +}} **znHcFrcF=*float*** Zone surface forced convection factor. Interior surface convective transfer is modeled as a combination of forced and natural convection. hcFrc = znHcFrcF * znHcAirX^.8. See CSE Engineering Documentation. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: ".2", - default: ".2", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": ".2", + "default": ".2", + "required": "No", + "variability": "hourly" + }) +}} **znHIRatio=*float*** Zone hygric inertia ratio. In zone moisture balance calculations, the effective dry-air mass = znHIRatio * (zone dry air mass). This enhancement can be used to represente the moisture storage capacity of zone surfaces and contents. -<%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "1", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} **znSC=*float*** Zone shade closure. Determines insolation through windows (see WINDOW members *wnSCSO* and *wnSCSC*) and solar gain distribution: see SGDIST members *sgFSO* and *sgFSC*. 0 represents shades open; 1 represents shades closed; intermediate values are allowed. An hourly variable CSE expression may be used to schedule shade closure as a function of weather, time of year, previous interval HVAC use or zone temperature, etc. -<%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "1 when cooling was used in *previous* hour, else 0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "1 when cooling was used in *previous* hour, else 0", + "required": "No", + "variability": "hourly" + }) +}} **znTH=*float*** Heating set point used (and required) when znModel=CZM and zone has no terminals. -<%= member_table( - units: "^o^F", - legal_range: "0 < znTH < znTC", - default: "*none*", - required: "Per above", - variability: "subhourly") - %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "0 < znTH < znTC", + "default": "*none*", + "required": "Per above", + "variability": "subhourly" + }) +}} **znTD=*float*** Desired set point (temperature maintained with ventilation if possible) for znModel=CZM. Must be specified when zone ventilation is active. -<%= member_table( - units: "^o^F", - legal_range: "x > 0; znTH < znTD < znTC", - default: "*none*", - required: "if venting", - variability: "subhourly") - %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "x > 0; znTH < znTD < znTC", + "default": "*none*", + "required": "if venting", + "variability": "subhourly" + }) +}} **znTC=*float*** Cooling set point used (and required) when znModel=CZM and zone has no terminals. -<%= member_table( - units: "^o^F", - legal_range: "0 < znTC > znTH", - default: "*none*", - required: "Per above", - variability: "subhourly") - %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "0 < znTC > znTH", + "default": "*none*", + "required": "Per above", + "variability": "subhourly" + }) +}} znModel = CZM zone heating and cooling is provided either via an RSYS HVAC system, by "magic" heat transfers specified by znQxxx items, or via TERMINAL (s). One of these must be defined. @@ -209,61 +241,71 @@ znModel = CZM zone heating and cooling is provided either via an RSYS HVAC syste Name of RSYS providing heating, cooling, and optional central fan integrated ventilation to this zone. -<%= member_table( - units: "", - legal_range: "*RSYS name*", - default: "(no RSYS)", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*RSYS name*", + "default": "(no RSYS)", + "required": "No", + "variability": "constant" + }) +}} **znQMxH=*float*** Heating capacity at current conditions -<%= member_table( - units: "Btuh", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "x $\\geq$ 0", + "default": "*none*", + "required": "No", + "variability": "hourly" + }) +}} **znQMxHRated=*float*** Rated heating capacity -<%= member_table( - units: "Btuh", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "x $\\geq$ 0", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **znQMxC=*float*** Cooling capacity at current conditions -<%= member_table( - units: "Btuh", - legal_range: "x $\\leq$ 0", - default: "*none*", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "x $\\leq$ 0", + "default": "*none*", + "required": "No", + "variability": "hourly" + }) +}} **znQMxCRated=*float*** Rated cooling capacity -<%= member_table( - units: "Btuh", - legal_range: "x $\\leq$ 0", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "x $\\leq$ 0", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} <% if comfort_model %> The following provide parameters for comfort calculations @@ -272,49 +314,57 @@ The following provide parameters for comfort calculations Occupant clothing resistance, used only when a comfort model is enabled. -<%= member_table( - units: "clo", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "No", - variability: "subhourly") - %> +{{ + member_table({ + "units": "clo", + "legal_range": "x $\\geq$ 0", + "default": "*none*", + "required": "No", + "variability": "subhourly" + }) +}} **znComfMet=*float*** Occupant metabolic rate, used only when a comfort model is enabled. -<%= member_table( - units: "met", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "met", + "legal_range": "x $\\geq$ 0", + "default": "*none*", + "required": "No", + "variability": "hourly" + }) +}} **znComfAirV=*float*** Nominal air velocity used for comfort model, used only when a comfort model is enabled. -<%= member_table( - units: "", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "No", - variability: "Hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\geq$ 0", + "default": "*none*", + "required": "No", + "variability": "Hourly" + }) +}} **znComfRh=*float*** Nominal zone relative humidity used for comfort model, used only when a comfort model is enabled. -<%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "*none*", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "*none*", + "required": "No", + "variability": "hourly" + }) +}} <% end %> @@ -326,25 +376,29 @@ The following control a simplified air change plus leakage area model. The Sherm Zone infiltration air changes per hour. -<%= member_table( - units: "1/hr", - legal_range: "x $\\geq$ 0", - default: "0.5", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "1/hr", + "legal_range": "x $\\geq$ 0", + "default": "0.5", + "required": "No", + "variability": "hourly" + }) +}} **infELA=*float*** Zone effective leakage area (ELA). -<%= member_table( - units: "in^2^", - legal_range: "x $\\geq$ 0", - default: "0.0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "in^2^", + "legal_range": "x $\\geq$ 0", + "default": "0.0", + "required": "No", + "variability": "hourly" + }) +}} **infShld=*int*** @@ -359,61 +413,71 @@ Zone local shielding class, used in derivation of local wind speed for ELA infil END %> -<%= member_table( - units: "", - legal_range: "1 $\\leq$ *x* $\\leq$ 5", - default: "3", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "1 $\\leq$ *x* $\\leq$ 5", + "default": "3", + "required": "No", + "variability": "constant" + }) +}} **infStories=*int*** Number of stories in zone, used in ELA model. -<%= member_table( - units: "", - legal_range: "1 $\\leq$ *x* $\\leq$ 3", - default: "1", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "1 $\\leq$ *x* $\\leq$ 3", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} **znWindFLkg=*float*** Wind speed modifier factor. The weather file wind speed is multiplied by this factor to yield a local wind speed for use in infiltration and convection models. -<%= member_table( - units: "", - legal_range: "x $\\geq$ 0", - default: "derived from znEaveZ and infShld", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\geq$ 0", + "default": "derived from znEaveZ and infShld", + "required": "No", + "variability": "constant" + }) +}} **znAFMtr=*afMtrName*** Name of an AFMETER object, if any, to which zone AirNet air flows are recorded. *ZnAFMtr* defines a pressure boundary for accounting purposes. Multiple zones having the same AFMETER are treated as a single volume -- interzone flows within that volume are not recorded. For example, to obtain "building total" flow data, a common AFMETER could be assigned to several conditioned zones but not to adjacent unconditioned zones such as attic spaces. -<%= member_table( - units: "", - legal_range: "*name of an AFMETER*", - default: "*not recorded*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*name of an AFMETER*", + "default": "*not recorded*", + "required": "No", + "variability": "constant" + }) +}} **znLoadMtr=*ldMtrName*** Name of a LOADMETER object, if any, to which zone heating and cooling loads are recorded. -<%= member_table( - units: "", - legal_range: "*name of a LOADMETER*", - default: "*not recorded*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*name of a LOADMETER*", + "default": "*not recorded*", + "required": "No", + "variability": "constant" + }) +}} ## ZONE Exhaust Fan @@ -425,13 +489,15 @@ Zone exhaust fan model implementation is incomplete as of July, 2011. The curren Exhaust fan on fraction. On/off control assumed, so electricity requirement is proportional to run time. -<%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ x $\\leq$ 1", - default: "1", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 $\\leq$ x $\\leq$ 1", + "default": "1", + "required": "No", + "variability": "hourly" + }) +}} Example: The following would run an exhaust fan 70% of the time between 8 AM and 5 PM: @@ -443,25 +509,29 @@ Example: The following would run an exhaust fan 70% of the time between 8 AM and Exhaust fan design flow; 0 or not given indicates no fan. -<%= member_table( - units: "cfm", - legal_range: "x $\\geq$ 0", - default: "0, no fan", - required: "If fan present", - variability: "constant") - %> +{{ + member_table({ + "units": "cfm", + "legal_range": "x $\\geq$ 0", + "default": "0, no fan", + "required": "If fan present", + "variability": "constant" + }) +}} **xfanPress=*float*** Exhaust fan external static pressure. -<%= member_table( - units: "inches", - legal_range: "0.05 $\\leq$ *x* $\\leq$ 1.0", - default: "0.3", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "inches", + "legal_range": "0.05 $\\leq$ *x* $\\leq$ 1.0", + "default": "0.3", + "required": "No", + "variability": "constant" + }) +}} Only one of xfanElecPwr, xfanEff, and xfanShaftBhp may be given: together with xfanVfDs and xfanPress, any one is sufficient for CSE to detemine the others and to compute the fan heat contribution to the air stream. @@ -469,61 +539,71 @@ Only one of xfanElecPwr, xfanEff, and xfanShaftBhp may be given: together with x Fan input power per unit air flow (at design flow and pressure). -<%= member_table( - units: "W/cfm", - legal_range: "x $>$ 0", - default: "derived from xfanEff", - required: "If xfanEff and xfanShaftBhp not present", - variability: "constant") - %> +{{ + member_table({ + "units": "W/cfm", + "legal_range": "x $>$ 0", + "default": "derived from xfanEff", + "required": "If xfanEff and xfanShaftBhp not present", + "variability": "constant" + }) +}} **xfanEff=*float*** Exhaust fan/motor/drive combined efficiency. -<%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ x $\\leq$ 1", - default: "0.08", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 $\\leq$ x $\\leq$ 1", + "default": "0.08", + "required": "No", + "variability": "constant" + }) +}} **xfanShaftBhp=*float*** Fan shaft power at design flow and pressure. -<%= member_table( - units: "BHP", - legal_range: "x $>$ 0", - default: "derived from xfanElecPwr and xfanVfDs", - required: "If xfanElecPwr not present", - variability: "constant") - %> +{{ + member_table({ + "units": "BHP", + "legal_range": "x $>$ 0", + "default": "derived from xfanElecPwr and xfanVfDs", + "required": "If xfanElecPwr not present", + "variability": "constant" + }) +}} **xfanMtr=*mtrName*** Name of METER object, if any, by which fan's energy use is recorded (under end use category "fan"). -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*not recorded*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*name of a METER*", + "default": "*not recorded*", + "required": "No", + "variability": "constant" + }) +}} **endZone** Indicates the end of the zone definition. Alternatively, the end of the zone definition can be indicated by the declaration of another object or by "END". If END or endZone is used, it should follow the definitions of the ZONE's subobjects such as GAINs, SURFACEs, TERMINALs, etc. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/extra/inverse.md b/doc/src/extra/inverse.md index 6fd39bc09..74082c801 100644 --- a/doc/src/extra/inverse.md +++ b/doc/src/extra/inverse.md @@ -4,65 +4,86 @@ Function inverter **ivFREQ=*Choice*** -<%= member_table( - units: "", - legal_range: "", - default: "**none**", - required: "No", - variability: "runly") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "**none**", + "required": "No", + "variability": "runly" + }) +}} **ivX=*float*** -<%= member_table( - units: "", - legal_range: "", - default: "**none**", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "**none**", + "required": "No", + "variability": "constant" + }) +}} **ivX0=*float*** -<%= member_table( - units: "", - legal_range: "", - default: "**none**", - required: "No", - variability: "runly") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "**none**", + "required": "No", + "variability": "runly" + }) +}} **ivY=*float*** -<%= member_table( - units: "", - legal_range: "", - default: "**none**", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "**none**", + "required": "No", + "variability": "constant" + }) +}} **ivY0=*float*** -<%= member_table( - units: "", - legal_range: "", - default: "**none**", - required: "No", - variability: "runly") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "**none**", + "required": "No", + "variability": "runly" + }) +}} **ivYTarg=*float*** -<%= member_table( - units: "", - legal_range: "", - default: "**none**", - required: "No", - variability: "runly") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "**none**", + "required": "No", + "variability": "runly" + }) +}} **endInverse** Optionally indicates the end of the inverse definition. -<%= member_table( - units: "", - legal_range: "", - default: "**none**", - required: "No", - variability: "") %> \ No newline at end of file +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "**none**", + "required": "No", + "variability": "" + }) +}} \ No newline at end of file diff --git a/doc/src/shared/dhwheater-doc.md b/doc/src/shared/dhwheater-doc.md index 0537717d6..187a31198 100644 --- a/doc/src/shared/dhwheater-doc.md +++ b/doc/src/shared/dhwheater-doc.md @@ -2,25 +2,29 @@ Optional name of water heater; give after the word “DHWHEATER” if desired. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **whMult=*integer*** Number of identical water heaters of this type. Any value $>1$ is equivalent to repeated entry of the same DHWHEATER. -<%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "1", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} **whType=*choice*** @@ -35,13 +39,15 @@ Type of water heater. This categorization is based on CEC and federal rating st END %> - <%= member_table( - units: "", - legal_range: "*Codes listed above*", - default: "SMALLSTORAGE", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*Codes listed above*", + "default": "SMALLSTORAGE", + "required": "No", + "variability": "constant" + }) +}} **whHeatSrc=*choice*** @@ -58,58 +64,71 @@ available for electric (air source heat pump and resistance) SMALLSTORAGE water END %> -<%= member_table( - units: "", - legal_range: "*Codes listed above*", - default: "FUEL", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*Codes listed above*", + "default": "FUEL", + "required": "No", + "variability": "constant" + }) +}} **whResType=*choice*** Resistance heater type, valid only if whHeatSrc is equal to RESISTANCEX, else ignored. These choices are supported by the detailed HPWH model. Except for Generic, all heater characteristics are set by HPWH based on whResType. -<%= member_table( - units: "", - legal_range: "Typical\nSwingTank", - default: "Typical", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "Typical\nSwingTank", + "default": "Typical", + "required": "No", + "variability": "constant" + }) +}} **whHeatingCap=*float*** Nominal heating capacity, available only for a limited HPWH types. -<%= member_table( - units: "Btuh", - legal_range: "x $>$ 0", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "x $>$ 0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **whVol=*float*** Storage tank volume. Must be omitted or 0 for instantaneous whTypes. Used by HPWH model (whHeatSrc=RESISTANCEX or whHeatSrc=ASHPX). Required when whHeatSrc=RESISTANCEX or whHeatSrc=ASHPX with whASHPType=GENERIC. For all other configurations, whVol is documentation-only. -<%= member_table( - units: "gal", - legal_range: "$\\ge$ 0.1 (caution: small values may cause runtime errors)", - default: "per whASHPType if HPWH else 50", - required: "For some HPWH configurations, see above", - variability: "constant") - %> +{{ + member_table({ + "units": "gal", + "legal_range": "$\\ge$ 0.1 (caution: small values may cause runtime errors)", + "default": "per whASHPType if HPWH else 50", + "required": "For some HPWH configurations, see above", + "variability": "constant" + }) +}} **whVolRunning=*float*** Running storage volume is the volume above aquastat. Requires the total volume based on aquastat position. Ecotope's HPWH tank and heater. -<%= member_table( - units: "gal", - legal_range: "x $>$ 0", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "gal", + "legal_range": "x $>$ 0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **whEF=*float*** @@ -129,13 +148,15 @@ below. Calculation methods are documented in RACM, Appendix B. END %> -<%= member_table( - units: "", - legal_range: "$>$ 0 *Caution: maximum not checked. Unrealistic values will cause runtime errors and/or invalid results*", - default: "*See above*", - required: "*See above*", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "$>$ 0 *Caution: maximum not checked. Unrealistic values will cause runtime errors and/or invalid results*", + "default": "*See above*", + "required": "*See above*", + "variability": "constant" + }) +}} **whLDEF=*float*** @@ -143,85 +164,99 @@ Load-dependent energy factor for DHWHEATERs with whType=SMALLSTORAGE and whHeatS or whHeatSrc=RESISTANCE. If not given, whLDEF is derived using a preliminary simulation activated via DHWSYS wsCalcMode=PRERUN. See RACM Appendix B. -<%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "Calculated via DHWSYS PreRun mechanism", - required: "When whType = SMALLSTORAGE and PreRun not used", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "Calculated via DHWSYS PreRun mechanism", + "required": "When whType = SMALLSTORAGE and PreRun not used", + "variability": "constant" + }) +}} **whUEF=*float*** Water heater Uniform Energy Factor efficiency rating, used when whType=INSTANTANEOUSUEF. -<%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "*none*", - required: "when whType= INSTANTANEOUSUEF", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\ge$ 0", + "default": "*none*", + "required": "when whType= INSTANTANEOUSUEF", + "variability": "constant" + }) +}} **whAnnualElec=*float*** Annual electricity use assumed in UEF rating derivation. Used when whType=INSTANTANEOUSUEF. -<%= member_table( - units: "kWh", - legal_range: "x $\\ge$ 0", - default: "*none*", - required: "when whType= INSTANTANEOUSUEF", - variability: "constant") - %> +{{ + member_table({ + "units": "kWh", + "legal_range": "x $\\ge$ 0", + "default": "*none*", + "required": "when whType= INSTANTANEOUSUEF", + "variability": "constant" + }) +}} **whAnnualFuel=*float*** Annual fuel use assumd in UEF rating derivation, used when whType=INSTANTANEOUSUEF. -<%= member_table( - units: "therms", - legal_range: "x $\\ge$ 0", - default: "*none*", - required: "when whType= INSTANTANEOUSUEF", - variability: "constant") - %> +{{ + member_table({ + "units": "therms", + "legal_range": "x $\\ge$ 0", + "default": "*none*", + "required": "when whType= INSTANTANEOUSUEF", + "variability": "constant" + }) +}} **whRatedFlow=*float*** Maximum flow rate assumed in UEF rating derivation. Used when whType=INSTANTANEOUSUEF. -<%= member_table( - units: "gpm", - legal_range: "x $>$ 0", - default: "*none*", - required: "when whType= INSTANTANEOUSUEF", - variability: "constant") - %> +{{ + member_table({ + "units": "gpm", + "legal_range": "x $>$ 0", + "default": "*none*", + "required": "when whType= INSTANTANEOUSUEF", + "variability": "constant" + }) +}} **whStbyElec=*float*** Instantaneous water heater standby power (electricity consumed when heater is not operating). Used when whType=INSTANTANEOUSUEF. -<%= member_table( - units: "W", - legal_range: "x $\\ge$ 0", - default: "4", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "W", + "legal_range": "x $\\ge$ 0", + "default": "4", + "required": "No", + "variability": "constant" + }) +}} **whLoadCFwdF=*float*** Instanteous water heater load carry forward factor -- approximate number of hours the heater is allowed to meet water heating demand that is unmet on a 1 minute basis, used when whType=INSTANTANEOUSUEF. -<%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "1", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\ge$ 0", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} **whZone=*znName*** @@ -229,13 +264,15 @@ Name of zone where water heater is located, used only in detailed HPWH models (w whZone and whTEx cannot both be specified. -<%= member_table( - units: "", - legal_range: "name of a ZONE", - default: "Not in a zone (heat losses discarded)", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of a ZONE", + "default": "Not in a zone (heat losses discarded)", + "required": "No", + "variability": "constant" + }) +}} **whTEx=*float*** @@ -243,13 +280,15 @@ Water heater surround temperature, used only in detailed HPWH models (whHeatSrc= whZone and whTEx cannot both be specified. -<%= member_table( - units: "^o^F", - legal_range: "x $\\ge$ 0", - default: "whZone air temperature if specified, else 70 ^o^F", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "x $\\ge$ 0", + "default": "whZone air temperature if specified, else 70 ^o^F", + "required": "No", + "variability": "hourly" + }) +}} **whASHPType=*choice*** @@ -369,13 +408,15 @@ Air source heat pump type, valid only if whHeatSrc=ASHPX. These choices are supp END %> -<%= member_table( - units: "", - legal_range: "*Codes listed above*", - default: "*none*", - required: "When whHeatSrc=ASHPX", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*Codes listed above*", + "default": "*none*", + "required": "When whHeatSrc=ASHPX", + "variability": "constant" + }) +}} **whASHPSrcZn=*znName*** @@ -383,13 +424,15 @@ Name of zone that serves as heat pump heat source used when whHeatSrc=ASHPX. Hea whASHPSrcZn and whASHPSrcT cannot both be specified. -<%= member_table( - units: "", - legal_range: "name of a ZONE", - default: "whZoneIf no zone is specified by input or default, heat extracted by ASHP has no effect.", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of a ZONE", + "default": "whZoneIf no zone is specified by input or default, heat extracted by ASHP has no effect.", + "required": "No", + "variability": "constant" + }) +}} **whASHPSrcT=*float*** @@ -412,192 +455,227 @@ The logic to determine the temperature of the heat pump source air is: To model a heat pump that uses outdoor air as its heat source, omit whASHPSrcZn and specify whASHPSrcT = $tDbO. -<%= member_table( - units: "^o^F", - legal_range: "x $\\ge$ 0", - default: "70 ^o^F (used only when whASHPSrcZn and whZone not specified)", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "x $\\ge$ 0", + "default": "70 ^o^F (used only when whASHPSrcZn and whZone not specified)", + "required": "No", + "variability": "hourly" + }) +}} **whASHPResUse=*float*** Specifies activation temperature difference for resistance heating, used only when whHeatSrc=ASHPX and whASHPType=GENERIC. Refer to HPWH engineering documentation for model details. -<%= member_table( - units: "^o^C", - legal_range: "x $\\ge$ 0", - default: "7.22", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "^o^C", + "legal_range": "x $\\ge$ 0", + "default": "7.22", + "required": "No", + "variability": "constant" + }) +}} **whResHtPwr=*float*** Specifies resistance upper element power, used only with whHeatSrc=RESISTANCEX. -<%= member_table( - units: "W", - legal_range: "x $\\ge$ 0", - default: "4500", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "W", + "legal_range": "x $\\ge$ 0", + "default": "4500", + "required": "No", + "variability": "constant" + }) +}} **whResHtPwr2=*float*** Specifies resistance lower element power, used only with whHeatSrc=RESISTANCEX. -<%= member_table( - units: "W", - legal_range: "x $\\ge$ 0", - default: "whResHtPwr", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "W", + "legal_range": "x $\\ge$ 0", + "default": "whResHtPwr", + "required": "No", + "variability": "constant" + }) +}} **whUA=*float*** HPWH-type total UA (not per tank) -<%= member_table( - units: "Btuh/F", - legal_range: "x $\\geq$ 0", - default: "HPWH default", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "Btuh/F", + "legal_range": "x $\\geq$ 0", + "default": "HPWH default", + "required": "No", + "variability": "constant" + }) +}} **whInsulR=*float*** Tank insulation resistance for heat pump water heater. -<%= member_table( - units: "hr-F/Btuh", - legal_range: "x $>$ 0", - default: "-1", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "hr-F/Btuh", + "legal_range": "x $>$ 0", + "default": "-1", + "required": "No", + "variability": "constant" + }) +}} **whInHtSupply=*float***\ **whInHtLoopRet=*float*** Fractional tank height of inlets for supply water and DHWLOOP return, used only with HPWH types (whHeatSrc=RESISTANCEX or whHeatSrc=ASHPX). 0 indicates the bottom of the water heater tank and 1 specifies the top. Inlet height influences tank layer mixing and can impact heat pump COP and/or heating activation frequency. -<%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ 1", - default: "HPWH default (0?) ", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ x $\\le$ 1", + "default": "HPWH default (0?) ", + "required": "No", + "variability": "constant" + }) +}} **whtankCount=*float*** Number of storage tanks per DHWHEATER, re built-up whType=Builtup, does *not* reflect wh_mult (wh_mult=2, wh_tankCount=3 -> 6 tanks). -<%= member_table( - units: "#", - legal_range: "x $\\geq$ 1", - default: "1", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "#", + "legal_range": "x $\\geq$ 1", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} **whEff=*float*** Water heating efficiency, used in modeling whType=LARGESTORAGE and whType=LARGEINSTANTANEOUS. -<%= member_table( - units: "", - legal_range: "0 $<$ whEff $\\leq$ 1", - default: ".82", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $<$ whEff $\\leq$ 1", + "default": ".82", + "required": "No", + "variability": "constant" + }) +}} **whSBL=*float*** Standby loss, used in modeling whType=LARGESTORAGE. -<%= member_table( - units: "Btuh", - legal_range: "x $\\ge$ 0", - default: "0", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "x $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **whPilotPwr=*float*** Pilot light consumption, included in fuel energy use of DHWHEATERs with whHeatSrc=FUEL. -<%= member_table( - units: "Btuh", - legal_range: "x $\\ge$ 0", - default: "0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "x $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "hourly" + }) +}} **whParElec=*float*** Parasitic electricity power, included in electrical energy use of all DHWHEATERs. -<%= member_table( - units: "W", - legal_range: "x $\\ge$ 0", - default: "0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "W", + "legal_range": "x $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "hourly" + }) +}} **whFAdjElec=*float***\ **whFAdjFuel=*float*** Water heater energy use modifiers. Multiplies calculated use of electricity (whFAdjElec) and fuel (whFAdjFuel). All components of energy use -- primary, backup, XBU (extra backup), and other auxiliary -- are modified before they are accumulated to whElecMtr and whFuelMtr. -<%= member_table( - units: "", - legal_range: "$\\ge$ 0", - default: "1", - required: "No", - variability: "subhourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "$\\ge$ 0", + "default": "1", + "required": "No", + "variability": "subhourly" + }) +}} **whElecMtr=*mtrName*** Name of METER object, if any, by which DHWHEATER electrical energy use is recorded (under end use DHW). -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*Parent DHWSYS wsElecMtr*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*name of a METER*", + "default": "*Parent DHWSYS wsElecMtr*", + "required": "No", + "variability": "constant" + }) +}} **whxBUEndUse=*choice*** Specifies the whElecMtr end use, if any, to which extra backup energy is accumulated. In some water heater types, extra backup energy is modeled to maintain output temperature at wsTUse. By default, extra backup energy is included in end use dhwBU. whxBUEndUse allows specification of an alternative end use to which extra backup energy is accumulated. -<%= member_table( - units: "", - legal_range: "*end use code* ", - default: "(extra backup accums to dhwBU)", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*end use code* ", + "default": "(extra backup accums to dhwBU)", + "required": "No", + "variability": "constant" + }) +}} **whFuelMtr =*mtrName*** Name of METER object, if any, by which DHWHEATER fuel energy use is recorded (under end use DHW). -<%= member_table( - units: "*name of a METER*", - legal_range: "*Parent DHWSYS wsFuelMtr*", - default: "", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "*name of a METER*", + "legal_range": "*Parent DHWSYS wsFuelMtr*", + "default": "", + "required": "No", + "variability": "constant" + }) +}} **whTankTInit =*comma-separated list of 12 floats*** @@ -607,25 +685,29 @@ whTankTInit is allowed only for HPWH-based types (whHeatSrc=ASHPX or whHeatSrc=R whTankTInit is intended for use in empirical validation studies where the initial tank state needs to match measured data. whTankTInit should not be generally used. In the absence of whTankTInit, layer temperatures are initialized to the water heater setpoint inherited from the parent DHWSYS. -<%= member_table( - units: "^o^F", - legal_range: "x $\\gt$ 0", - default: "", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "x $\\gt$ 0", + "default": "", + "required": "No", + "variability": "constant" + }) +}} **endDHWHEATER** Optionally indicates the end of the DHWHEATER definition. -<%= member_table( - units: "", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "No", - variability: "") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\geq$ 0", + "default": "*none*", + "required": "No", + "variability": "" + }) +}} **Related Probes:** From d8c749f4434e7aa2eefb6fb775ee7941afe60fe1 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 3 Mar 2025 11:37:08 -0700 Subject: [PATCH 015/117] Update syntax for tables missing one of the five member_table keys. --- doc/src/docs/input-data/airhandler.md | 14 ++++--- doc/src/docs/input-data/doas.md | 55 +++++++++++++++++--------- doc/src/docs/input-data/fndblock.md | 14 ++++--- doc/src/docs/input-data/foundation.md | 28 ++++++++----- doc/src/docs/input-data/izxfer.md | 13 ++++-- doc/src/docs/input-data/pvarray.md | 14 ++++--- doc/src/docs/input-data/surface.md | 42 +++++++++++++------- doc/src/docs/input-data/top-members.md | 14 ++++--- doc/src/main.py | 3 +- 9 files changed, 128 insertions(+), 69 deletions(-) diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index 455ba1b9c..ef3899e53 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -1800,11 +1800,15 @@ Heat exchanger flow fraction (of design flow) used for second set of effectivene Heat exchanger sensible effectiveness in heating mode at the design flow rate. Specifying input triggers modeling of heat recovery. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -required: "when modeling heat recovery", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": None, + "required": "when modeling heat recovery", + "variability": "constant" + }) +}} **oaHXSenEffHf2=_float_** diff --git a/doc/src/docs/input-data/doas.md b/doc/src/docs/input-data/doas.md index 176e99d62..e7bd82e5a 100644 --- a/doc/src/docs/input-data/doas.md +++ b/doc/src/docs/input-data/doas.md @@ -299,11 +299,15 @@ End use to which fan energy is recorded (in METER specified by oaExhFanMtr). Se Heating setpoint for tempering and/or heat exchanger bypass. -<%= member_table( - units: "^o^F", - default: "68", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": None, + "default": "68", + "required": "No", + "variability": "subhourly" + }) +}} **oaEIRH=*float*** @@ -337,11 +341,15 @@ Name of meter, if any, to record energy used by the heating coil. Cooling setpoint for tempering and/or heat exchanger bypass. -<%= member_table( - units: "^o^F", - default: "68", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": None, + "default": "68", + "required": "No", + "variability": "subhourly" + }) +}} **oaEIRC=*float*** @@ -434,11 +442,15 @@ Heat exchanger flow fraction (of design flow) used for second set of effectivene Heat exchanger sensible effectiveness in heating mode at the design flow rate. Specifying input triggers modeling of heat recovery. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1.0", - required: "when modeling heat recovery", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ *x* $\\le$ 1.0", + "default": None, + "required": "when modeling heat recovery", + "variability": "constant" + }) +}} **oaHXSenEffHf2=*float*** @@ -584,10 +596,15 @@ Name of meter, if any, to record energy used by auxiliary components of the heat Indicates the end of the DOAS definition. Alternatively, the end of the DOAS definition can be indicated by the declaration of another object or by "END". -<%= member_table( - default: "*N/A*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": None, + "legal_range": None, + "default": "*N/A*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/fndblock.md b/doc/src/docs/input-data/fndblock.md index 99d30b6b4..6e7f5029a 100644 --- a/doc/src/docs/input-data/fndblock.md +++ b/doc/src/docs/input-data/fndblock.md @@ -20,11 +20,15 @@ It does not matter which of the four corners of a block are used to define the t Name of MATERIAL of the foundation block. -<%= member_table( - legal_range: "Name of a *Material*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": None, + "legal_range": "Name of a *Material*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **fbX1Ref=*choice*** diff --git a/doc/src/docs/input-data/foundation.md b/doc/src/docs/input-data/foundation.md index ac1abf76d..4da116dd1 100644 --- a/doc/src/docs/input-data/foundation.md +++ b/doc/src/docs/input-data/foundation.md @@ -44,11 +44,15 @@ The following data members describe the dimensions and properties of the foundat Name of foundation; give after the word FOUNDATION. Required for reference from SURFACE objects. -<%= member_table( - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": None, + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **fdWlHtAbvGrd=*float*** @@ -83,11 +87,15 @@ Wall depth below slab. Name of CONSTRUCTION of the footing wall. Only required **IF** it is a slab foundation (i.e., no wall surfaces reference this FOUNDATION object). -<%= member_table( - legal_range: "Name of a *Construction*", - default: "*none*", - required: "if a slab foundation", - variability: "constant") %> +{{ + member_table({ + "units": None, + "legal_range": "Name of a *Construction*", + "default": "*none*", + "required": "if a slab foundation", + "variability": "constant" + }) +}} **endFoundation** diff --git a/doc/src/docs/input-data/izxfer.md b/doc/src/docs/input-data/izxfer.md index 7e72c3cc5..9e6af47bf 100644 --- a/doc/src/docs/input-data/izxfer.md +++ b/doc/src/docs/input-data/izxfer.md @@ -115,10 +115,15 @@ Name of secondary zone. Name of DOAS where air is supplied from (**izVfMin** > 0), or exhausting to (**izVfMin** < 0). -<%= member_table( - legal_range: "name of a DOAS", - required: "when izNVType = AIRNETDOAS", - variability: "constant") %> +{{ + member_table({ + "units": None, + "legal_range": "name of a DOAS", + "default": None, + "required": "when izNVType = AIRNETDOAS", + "variability": "constant" + }) +}} **izLinkedFlowMult=*float*** diff --git a/doc/src/docs/input-data/pvarray.md b/doc/src/docs/input-data/pvarray.md index 3bb0418d2..304c845fc 100644 --- a/doc/src/docs/input-data/pvarray.md +++ b/doc/src/docs/input-data/pvarray.md @@ -195,11 +195,15 @@ Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the Default value is 1.2, which is representative of PV systems with sub-array microinverters or DC power optimizers. For systems without sub-array power electronics, values are closer to 2.0. -<%= member_table( - legal_range: "*x* $\\geq$ 1.0", - default: "1.2", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": None, + "legal_range": "*x* $\\geq$ 1.0", + "default": "1.2", + "required": "No", + "variability": "constant" + }) +}} **pvMounting=*choice*** diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index 17617ca60..ffb24e3ef 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -100,11 +100,15 @@ KIVA, Uses a two-dimensional finite difference mo END %> -<%= member_table( - legal_range: "QUICK, DELAYED, DELAYED\_HOUR, DELAYED\_SUBOUR, AUTO, 2D_FND", - default: "AUTO", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": None, + "legal_range": "QUICK, DELAYED, DELAYED\_HOUR, DELAYED\_SUBOUR, AUTO, 2D_FND", + "default": "AUTO", + "required": "No", + "variability": "constant" + }) +}} In the following the part load ratio (plr) is the ratio of the actual sensible + latent load on the coil to the coil's capacity. The coil's capacity is ahccCaptRat, adjusted by the coil model for differences between entering air temperature, humidity, and flow rate and the coil rating conditions. The coil may run at less than capacity even at full fan flow, depending on the air temperature change needed, the moisture content of the entering air, and the relative values of between _sfanVfDs_ and _ahccVfR_. -<%= csv_table(< false) -full load, plr (part load ratio) = 1.0 +{{ csv_table("full load, plr (part load ratio) = 1.0 , Full-load power input is power output times _ahhcEirR._ compressor unloading region, 1.0 > plr $\\ge$ _ahhcMinUnldPlr_ , Power input is the full-load input times the value of the _pydxEirUl_ polynomial (below) for the current plr, i.e. pydxEirUl(plr). false loading region, _ahccMinUnldPlr_ > plr $\\ge$ _ahccMinFsldPlr_ , Power input in this region is constant at the value for the low end of the compressor unloading region, i.e. pydxEirUl(ahccMinUnldPlr). cycling region, _ahccMinFsldPlr_ > plr $\\ge$ 0 -, In this region the compressor runs at the low end of the false loading region for the necessary fraction of the time, and the power input is the false loading value correspondingly prorated, i.e. pydxEirUl(ahccMinUnldPlr) \* plr / ahccMinFsldPlr. -END -%> +, In this region the compressor runs at the low end of the false loading region for the necessary fraction of the time, and the power input is the false loading value correspondingly prorated, i.e. pydxEirUl(ahccMinUnldPlr) \* plr / ahccMinFsldPlr.") +}} The default values for the following three members are the DOE2 PTAC (Window air conditioner) values. @@ -1617,14 +1593,12 @@ Outside air introduced into the air hander supply air can be controlled on two l Minimum outside air flow control method choice, VOLUME or FRACTION. Both computations are based on the minimum outside air flow, _oaVfDsMn_; if the control method is FRACTION, the outside air flow is pro-rated when the air handler is supplying less than its design cfm. In both cases the computed minimum cfm is multiplied by a schedulable fraction, _oaMnFrac_, to let you vary the outside air or turn in off when none is desired. -<%= csv_table(< false) -VOLUME, Volume (cfm) of outside air is regulated: +{{ csv_table("VOLUME, Volume (cfm) of outside air is regulated: , min_oa_flow = oaMnFrac \* oaVfDsMn FRACTION, Fraction of outside air in supply air is regulated. The fraction is oaVfDsMn divided by sfanVfDs, the air handler supply fan design flow. The minimum cfm of outside air is thus computed as , min_oa_flow = oaMnFrac \* curr_flow \* oaVfDsMn / sfanVfDs -, where curr_flow is the current air handler cfm. -END -%> +, where curr_flow is the current air handler cfm.") +}} If the minimum outside air flow is greater than the total requested by the terminals served by the air handler, then 100% outside air at the latter flow is used. To insure minimum outside air cfm to the zones, use suitable terminal minimum flows (_tuVfMn_) as well as air handler minimum outside air specifications. @@ -1698,13 +1672,11 @@ Second, the economizer will operate even if the air handler is heating, resultin Type of economizer. Choice of: -<%= csv_table(< false) -NONE, No economizer; outside air flow is the minimum. +{{ csv_table("NONE, No economizer; outside air flow is the minimum. INTEGRATED, Coil and economizer operate independently. NONINTEGRATED, Coil does not run when economizer is using all outside air: simulates interlock in some equipment designed to prevent coil icing due to insufficient load, right? -TWO_STAGE, Economizer is disabled when coil cycles on. _NOT IMPLEMENTED_ as of July 1992. -END -%> +TWO_STAGE, Economizer is disabled when coil cycles on. _NOT IMPLEMENTED_ as of July 1992.") +}} **oaLimT=_float_ or _RA_** @@ -2028,15 +2000,13 @@ Appropriateness of use of these inputs when specifying a DX system without assoc Crankcase heater presence and control method. Choice of: -<%= csv_table(< false) -NONE, No crankcase heater present +{{ csv_table("NONE, No crankcase heater present CONSTANT, Crankcase heater input always _cchPMx_ (below). PTC, Proportional control based on oil temp when compressor does not run in subhour (see _cchTMx_, _cchMn_, and _cchDT_). If compressor runs at all in subhour, the oil is assumed to be hotter than _cchTMn_ and crankcase heater input is _cchPMn_. (PTC stands for 'Positive Temperature Coefficient' or 'Proportional Temperature Control'.) TSTAT, Control based on outdoor temperature, with optional differential, during subhours when compressor is off; crankcase heater does not operate if compressor runs at all in subhour. See _cchTOn_, _cchTOff_. CONSTANT_CLO -PTC_CLO, Same as corresponding choices above except zero crankcase heater input during fraction of time compressor is on ('Compressor Lock Out'). There is no TSTAT_CLO because under TSTAT the crankcase heater does not operate anyway when the compressor is on. -END -%> +PTC_CLO, Same as corresponding choices above except zero crankcase heater input during fraction of time compressor is on ('Compressor Lock Out'). There is no TSTAT_CLO because under TSTAT the crankcase heater does not operate anyway when the compressor is on.") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/battery.md b/doc/src/docs/input-data/battery.md index b431e3ead..aef3a5d2c 100644 --- a/doc/src/docs/input-data/battery.md +++ b/doc/src/docs/input-data/battery.md @@ -142,11 +142,9 @@ The maximum rate at which the BATTERY can be discharged in kilowatts (i.e., ener Selects charge/discharge control algorithm. btChgReq (next) specifies the desired battery charge or discharge rate. btControlAlg allows selection of alternative algorithms for deriving btChgReq. -<%= csv_table(< false) -DEFAULT, btChgReq is used as input or defaulted (see below) -TDVPEAKSAVE, btChgReq input (if any) is ignored. Instead, a California-specific algorithm is used that saves battery charge until peak TDV (Time Dependant Valuation) hours of the day, shifting energy generated on site (e.g. PV) to supply feed the grid during critical periods. The algorithm requires availability of hourly TDV data, see Top.tdvFName. -END -%> +{{ csv_table("DEFAULT, btChgReq is used as input or defaulted (see below) +TDVPEAKSAVE, btChgReq input (if any) is ignored. Instead, a California-specific algorithm is used that saves battery charge until peak TDV (Time Dependant Valuation) hours of the day, shifting energy generated on site (e.g. PV) to supply feed the grid during critical periods. The algorithm requires availability of hourly TDV data, see Top.tdvFName.") +}} Note btControlAlg has hourly variability, allowing dynamic algorithm selection. In California compliance applications, TDVPEAKSAVE is typically used only on days with high TDV peaks. diff --git a/doc/src/docs/input-data/boiler.md b/doc/src/docs/input-data/boiler.md index 6c1842a9a..19ea9eb2a 100644 --- a/doc/src/docs/input-data/boiler.md +++ b/doc/src/docs/input-data/boiler.md @@ -162,13 +162,11 @@ Meter to which pump electrical input energy is accumulated. If omitted, pump inp The following four members permit specification of auxiliary input power use associated with the boiler under the conditions indicated. -<%= csv_table(< false) -blrAuxOn=*float*, Auxiliary power used when boiler is running, in proportion to its subhour average part load ratio (plr). +{{ csv_table("blrAuxOn=*float*, Auxiliary power used when boiler is running, in proportion to its subhour average part load ratio (plr). blrAuxOff=*float*, Auxiliary power used when boiler is not running, in proportion to 1 - plr. blrAuxFullOff=*float*, Auxiliary power used only when boiler is off for entire subhour; not used if the boiler is on at all during the subhour. -blrAuxOnAtAll=*float*, Auxiliary power used in full value if boiler is on for any fraction of subhour. -END -%> +blrAuxOnAtAll=*float*, Auxiliary power used in full value if boiler is on for any fraction of subhour.") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/chiller.md b/doc/src/docs/input-data/chiller.md index bff85ed6e..6a041339e 100644 --- a/doc/src/docs/input-data/chiller.md +++ b/doc/src/docs/input-data/chiller.md @@ -130,17 +130,15 @@ Up to six *float* values may be entered, separated by commas; CSE will use zero The next three inputs permit specification of the CHILLER's part load energy input. In the following the part load ratio (plr) is defined as the actual load divided by the capacity at the current supply and condenser temperatures. The energy input is defined as follows for four different plr ranges: -<%= csv_table(< false) -full, loadplr (part load ratio) = 1.0 +{{ csv_table("full, loadplr (part load ratio) = 1.0 , Power input is full-load input, as described above. compressor unloading region, 1.0 > plr $\\ge$ *chMinUnldPlr* , Power input is the full-load input times the value of the *chPyEirUl* polynomial for the current plr, that is, *chPyEirUl*(plr). false loading region, *chMinUnldPlr* > plr > *chMinFsldPlr* , Power input in this region is constant at the value for the low end of the compressor unloading region, i.e. *chPyEirUl*(*chMinUnldPlr*). cycling region, *chMinFsldPlr* > plr $\\ge$ 0 - , In this region the chiller runs at the low end of the false loading region for the necessary fraction of the time, and the power input is the false loading value correspondingly prorated, i.e. *chPyEirUl*(*chMinUnldPlr*) plr / *chMinFsldPlr*. -END -%> + , In this region the chiller runs at the low end of the false loading region for the necessary fraction of the time, and the power input is the false loading value correspondingly prorated, i.e. *chPyEirUl*(*chMinUnldPlr*) plr / *chMinFsldPlr*.") +}} These plr regions are similar to those for a DX coil & compressor in an AIRHANDLER, Section 0. diff --git a/doc/src/docs/input-data/coolplant.md b/doc/src/docs/input-data/coolplant.md index 84c4e0629..f14f6114b 100644 --- a/doc/src/docs/input-data/coolplant.md +++ b/doc/src/docs/input-data/coolplant.md @@ -28,12 +28,10 @@ Name of COOLPLANT object, given immediately after the word COOLPLANT. This name Coolplant schedule: hourly variable choice of OFF, AVAIL, or ON. -<%= csv_table(< false) -OFF, COOLPLANT will not supply chilled water regardless of demand. All loads (CHW coils) should be scheduled off when the plant is off; an error will occur if a coil calls for chilled water when its plant is off. +{{ csv_table("OFF, COOLPLANT will not supply chilled water regardless of demand. All loads (CHW coils) should be scheduled off when the plant is off; an error will occur if a coil calls for chilled water when its plant is off. AVAIL, COOLPLANT will operate when one or more loads demand chilled water. -ON, COOLPLANT runs unconditionally. When no load wants chilled water, least powerful (first) stage runs anyway. -END -%> +ON, COOLPLANT runs unconditionally. When no load wants chilled water, least powerful (first) stage runs anyway.") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/dhwloopbranch.md b/doc/src/docs/input-data/dhwloopbranch.md index efcfe29fa..a6cdd05d4 100644 --- a/doc/src/docs/input-data/dhwloopbranch.md +++ b/doc/src/docs/input-data/dhwloopbranch.md @@ -104,15 +104,13 @@ Combined radiant/convective exterior surface conductance between insulation (or Specify exterior conditions. -<%= csv_table(< true) -Choice, Description +{{ csv_table("Choice, Description ADIABATIC, Adiabatic on other side AMBIENT, Ambient exterior SPECT, Specify temperature ADJZN, Adjacent zone -GROUND, Ground conditions -END -%> +GROUND, Ground conditions", True) +}} {{ member_table({ diff --git a/doc/src/docs/input-data/dhwloopseg.md b/doc/src/docs/input-data/dhwloopseg.md index fa12bfd25..02b6b1475 100644 --- a/doc/src/docs/input-data/dhwloopseg.md +++ b/doc/src/docs/input-data/dhwloopseg.md @@ -20,11 +20,9 @@ Optional name of segment; give after the word “DHWLOOPSEG” if desired. Specifies the type of segment. RETURN segments, if any, must follow SUPPLY segments. -<%= csv_table(< false) - SUPPLY, Indicates a supply segment (flow is sum of circulation and draw flow, child DHWLOOPBRANCHs permitted). - RETURN, Indicates a return segment (flow is only due to circulation, child DHWLOOPBRANCHs not allowed) -END -%> +{{ csv_table("SUPPLY, Indicates a supply segment (flow is sum of circulation and draw flow, child DHWLOOPBRANCHs permitted). + RETURN, Indicates a return segment (flow is only due to circulation, child DHWLOOPBRANCHs not allowed)") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index dc9c9a595..0c0aae8d5 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -35,11 +35,9 @@ Optional name of system; give after the word “DHWSYS” if desired. Enables preliminary simulation that derives values needed for simulation. -<%= csv_table(< false) - PRERUN, Calculate hot water heating load; at end of run, derive whLDEF for all child DHWHEATERs for which that value is required and defaulted (this emulates methods used in the T24DHW.DLL implementation of CEC DHW procedures). Also derived are average number of draws per day by end use (used in the wsDayWaste scheme). - SIMULATE, Perform full modeling calculations -END -%> +{{ csv_table("PRERUN, Calculate hot water heating load; at end of run, derive whLDEF for all child DHWHEATERs for which that value is required and defaulted (this emulates methods used in the T24DHW.DLL implementation of CEC DHW procedures). Also derived are average number of draws per day by end use (used in the wsDayWaste scheme). + SIMULATE, Perform full modeling calculations") +}} To use PRERUN efficiently, the recommended input file structure is: @@ -669,13 +667,11 @@ Excess size factor for domestic hot water design. wsFxDes is applied when wsHeat Selects alternative control schemes for HPWH-based DHWHEATERs. These allow shifting primary heater (compressor or resistance element) operation to times of day that have load-management advantages. -<%= csv_table(< true) -wsDRMethod, Description +{{ csv_table("wsDRMethod, Description NONE, None (default setpoint-based control) SCHEDULE, Demand response schedule (see wsDRSignal) -STATEOFCHARGE, State-of-charge (see wsTargetSOC) -END -%> +STATEOFCHARGE, State-of-charge (see wsTargetSOC)", True) +}} {{ member_table({ @@ -691,8 +687,7 @@ END When (and only when) wsDRMethod=SCHEDULE, wsDRSignal allows hourly specification of modified control schemes. Available signals are: -<%= csv_table(< true) -wsDRSignal, Description +{{ csv_table("wsDRSignal, Description ON, Normal operation following the water heater's internal control logic. TOO, Tops off the tank once by engaging the all the available heating sources (compressor and resistive elements) in the water heater to heat the tank to setpoint (regardless of the current condition). TOOLOR, Tops off the tank once and locks out the resistance elements (only the compressor is used to heat the tank to setpoint). @@ -702,9 +697,8 @@ TOTLOR, Tops of the tank on a timer and locks out the resistance elements (only TOTLOC, Tops of the tank on a timer and locks out the compressor (only the resistance elements are used to heat the tank to setpoint). LOC, Locks out the compressor from the water heater's normal internal control logic. LOR, Locks out the resistive elements from the water heater's normal internal control logic. -LOCLOR, Locks out the compressor and resistive elements from the water heater's normal internal control logic. -END -%> +LOCLOR, Locks out the compressor and resistive elements from the water heater's normal internal control logic.", True) +}} Scheduling functions can be used to construct control strategies of interest, for example: diff --git a/doc/src/docs/input-data/door.md b/doc/src/docs/input-data/door.md index db701a596..2f2779fb6 100644 --- a/doc/src/docs/input-data/door.md +++ b/doc/src/docs/input-data/door.md @@ -34,13 +34,11 @@ Overall area of door. Provides user control over how CSE models conduction for this door: -<%= csv_table(< false) - QUICK, Surface is modeled using a simple conductance. Heat capacity effects are ignored. Either drCon or drU (next) can be specified. +{{ csv_table("QUICK, Surface is modeled using a simple conductance. Heat capacity effects are ignored. Either drCon or drU (next) can be specified. DELAYED, DELAYED\_HOUR, DELAYED\_SUBOUR, Surface is modeled using a multi-layer finite difference technique which represents heat capacity effects. If the time constant of the door is too short to accurately simulate, a warning message is issued and the Quick model is used. drCon (next) must be specified -- the program cannot use the finite difference model if drU rather than drCon is specified. AUTO, Program selects Quick or appropriate Delayed automatically according to the time constant of the surface (if drU is specified, Quick is selected). - FD or FORWARD\_DIFFERENCE, Selects the forward difference model (used with short time steps and the CZM/UZM zone models) -END -%> + FD or FORWARD\_DIFFERENCE, Selects the forward difference model (used with short time steps and the CZM/UZM zone models)") +}} {{ member_table({ @@ -182,17 +180,15 @@ Door exterior surface (air film) conductance. Ignored if drModel = Forward\_Diff When drModel = Forward\_Difference, several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on drExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. -<%= csv_table(< true) - Model, Exposed to ambient, Exposed to zone +{{ csv_table("Model, Exposed to ambient, Exposed to zone UNIFIED, default CSE model, default CSE model INPUT, hc = drExHcMult, hc = drxxHcMult AKBARI, Akbari model, n/a WALTON, Walton model, n/a WINKELMANN, Winkelmann model, n/a MILLS, n/a, Mills model - ASHRAE, n/a, ASHRAE handbook values -END -%> + ASHRAE, n/a, ASHRAE handbook values", True) +}} **drExHcModel=*choice*** @@ -240,16 +236,14 @@ Exterior convection coefficient adjustment factor. When drExHcModel=INPUT, hc=d Exterior roughness factor. Typical roughness values: -<%= csv_table(< true) -Roughness Index, drExRf, Example +{{ csv_table("Roughness Index, drExRf, Example 1 (very rough), 2.17, Stucco 2 (rough), 1.67, Brick 3 (medium rough), 1.52, Concrete 4 (Medium smooth), 1.13, Clear pine 5 (Smooth), 1.11, Smooth plaster -6 (Very Smooth), 1, Glass -END -%> +6 (Very Smooth), 1, Glass", True) +}} {{ member_table({ diff --git a/doc/src/docs/input-data/exportcol.md b/doc/src/docs/input-data/exportcol.md index ba8068c66..eec38465c 100644 --- a/doc/src/docs/input-data/exportcol.md +++ b/doc/src/docs/input-data/exportcol.md @@ -94,11 +94,9 @@ Number of digits after decimal point. Specifies positioning of data within column: -<%= csv_table(< false) - Left, Left justified - Right, Right justified -END -%> +{{ csv_table("Left, Left justified + Right, Right justified") +}} **endExportCol** diff --git a/doc/src/docs/input-data/exportfile.md b/doc/src/docs/input-data/exportfile.md index 1a1e11d53..66244a4a7 100644 --- a/doc/src/docs/input-data/exportfile.md +++ b/doc/src/docs/input-data/exportfile.md @@ -38,12 +38,10 @@ path name of file to be written. If no path is specified, the file is written in What CSE should do if file *xfFileName* already exists: -<%= csv_table(< false) - OVERWRITE, Overwrite pre-existing file. +{{ csv_table("OVERWRITE, Overwrite pre-existing file. NEW, Issue error message if file exists. - APPEND, Append new output to present contents of existing file. -END -%> + APPEND, Append new output to present contents of existing file.") +}} If the specified file does not exist, it is created and *xfFileStat* has no effect. diff --git a/doc/src/docs/input-data/heatplant.md b/doc/src/docs/input-data/heatplant.md index 59548c924..00674ce7e 100644 --- a/doc/src/docs/input-data/heatplant.md +++ b/doc/src/docs/input-data/heatplant.md @@ -26,12 +26,10 @@ Name of HEATPLANT object, given immediately after the word HEATPLANT. This name Heat plant schedule: hourly variable choice of OFF, AVAIL, or ON. -<%= csv_table(< false) -OFF, HEATPLANT will not supply hot water regardless of demand. All loads (HW coils and heat exchangers) should be scheduled off when the plant is off; an error will occur if a coil calls for heat when its plant is off. +{{ csv_table("OFF, HEATPLANT will not supply hot water regardless of demand. All loads (HW coils and heat exchangers) should be scheduled off when the plant is off; an error will occur if a coil calls for heat when its plant is off. AVAIL, HEATPLANT will operate when one or more loads demand heat. -ON, HEATPLANT runs unconditionally. When no load wants heat, least powerful (first) stage runs. -END -%> +ON, HEATPLANT runs unconditionally. When no load wants heat, least powerful (first) stage runs.") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/holiday.md b/doc/src/docs/input-data/holiday.md index 5c5ebcc37..81727fbc5 100644 --- a/doc/src/docs/input-data/holiday.md +++ b/doc/src/docs/input-data/holiday.md @@ -155,8 +155,7 @@ Examples of valid HOLIDAY object specifications: As with reports, Holidays are automatically generated for a standard set of Holidays. The following are the default holidays automatically defined by CSE: -<%= csv_table(< false) - New Year's Day, \*January 1 +{{ csv_table("New Year's Day, \*January 1 M L King Day, \*January 15 President's Day, 3rd Monday in February Memorial Day, last Monday in May @@ -165,9 +164,8 @@ As with reports, Holidays are automatically generated for a standard set of Holi Columbus Day, 2nd Monday in October Veterans Day, \*November 11 Thanksgiving, 4th Thursday in November - Christmas, \*December 25 -END -%> + Christmas, \*December 25") +}} \* *observed on the following Monday if falls on a weekend, except as otherwise noted:* diff --git a/doc/src/docs/input-data/importfile.md b/doc/src/docs/input-data/importfile.md index 92a783044..1d96f6c31 100644 --- a/doc/src/docs/input-data/importfile.md +++ b/doc/src/docs/input-data/importfile.md @@ -5,15 +5,13 @@ IMPORTFILE allows specification of a file from which external data can be access Import files are text files containing an optional header and comma-separated data fields. With the header present, the structure of an import file matches that of an [EXPORT][export] file. This makes it convenient to import unmodified files EXPORTed from prior runs. The file structure is as follows (noting that the header in lines 1-4 should not be present when imHeader=NO) -- -<%= csv_table(< true) - Line, Contents, Notes +{{ csv_table("Line, Contents, Notes 1, *runTitle*, *runNumber*, read but not checked 2, *timestamp*, in quotes, read but not checked 3, *title*, *freq*, should match imTitle and imFreq (see below) 4, *colName1*, *colName2*, ..., comma separated column names optionally in quotes - 5 .., *val1*, *val2*, ..., comma separated values (string values optionally in quotes) -END -%> + 5 .., *val1*, *val2*, ..., comma separated values (string values optionally in quotes)", True) +}} Example import file imp1.csv diff --git a/doc/src/docs/input-data/izxfer.md b/doc/src/docs/input-data/izxfer.md index 9e6af47bf..bcdcece4b 100644 --- a/doc/src/docs/input-data/izxfer.md +++ b/doc/src/docs/input-data/izxfer.md @@ -25,8 +25,7 @@ Optional name of interzone transfer; give after the word "IZXFER" if desired. Choice specifying the type of ventilation or leakage model to be used. -<%= csv_table(< false) - NONE, No interzone ventilation +{{ csv_table("NONE, No interzone ventilation ONEWAY, Uncontrolled flow from izZn1 to izZn2 when izZn1 air temperature exceeds izZn2 air temperature (using ASHRAE high/low vent model). TWOWAY, Uncontrolled flow in either direction (using ASHRAE high/low vent model). AIRNETIZ, Single opening to another zone (using pressure balance AirNet model). Flow is driven by buoyancy. @@ -37,9 +36,8 @@ Choice specifying the type of ventilation or leakage model to be used. AIRNETEXTFLOW, Specified flow from exterior to zone (either direction). Behaves identically to AIRNETEXTFAN except no electricity is consumed and no fan heat is added to the air stream. AIRNETIZFLOW, Specified flow between two zones (either direction). Behaves identically to AIRNETIZFAN except no electricity is consumed and no fan heat is added to the air stream. AIRNETHERV, Heat or energy recovery ventilator. Supply and exhaust air are exchanged with the exterior with heat and/or moisture exchange between the air streams. Flow may or may not be balanced. - AIRNETDOAS, Air supplied from and/or exhausted to a centralized DOAS fans. -END -%> + AIRNETDOAS, Air supplied from and/or exhausted to a centralized DOAS fans.") +}} Note that optional inputs izTEx, izWEx, and izWindSpeed can override the outside conditions assumed for ivNVTypes that are connected to ambient (AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, and AIRNETHERV). @@ -59,17 +57,15 @@ Choice indicating air flow category used *only* for recording air flow results t Choices are: -<%= csv_table(< false) - InfilEx, Infiltration from ambient +{{ csv_table("InfilEx, Infiltration from ambient VentEx, Natural ventilation from ambient FanEx, Forced ventilation from ambient InfilIz, Interzone infiltration VentIz, Interzone natural ventilation FanIz, Interzone forced ventilation DuctLk, Duct leakage - HVAC, HVAC air -END -%> + HVAC, HVAC air") +}} Default values for izAFCat are generally adequate *except* that natural ventilation IZXFERs are by default categorized as infiltration. It is thus recommended that izAfCat be omitted except that ventilation IZXFERs (e.g. representing openable windows) should include izAfCat=VentEx (or VentIz). diff --git a/doc/src/docs/input-data/pvarray.md b/doc/src/docs/input-data/pvarray.md index 304c845fc..33b1ae5e5 100644 --- a/doc/src/docs/input-data/pvarray.md +++ b/doc/src/docs/input-data/pvarray.md @@ -64,14 +64,12 @@ The rated photovoltaic system DC capacity/size as indicated by the nameplate. Type of module to model. The module type determines the refraction index and temperature coefficient used in the simulation. Alternatively, the "Custom" module type may be used in conjunction with user-defined input for *pvCoverRefrInd* and *pvTempCoeff*. -<%= csv_table(< true) - **Module Type**, **pvCoverRefrInd**, **pvTempCoeff** +{{ csv_table("**Module Type**, **pvCoverRefrInd**, **pvTempCoeff** Standard, 1.3, -0.00206 Premium, 1.3, -0.00194 ThinFilm, 1.3, -0.00178 - Custom, User-defined, User-defined -END -%> + Custom, User-defined, User-defined", True) +}} {{ member_table({ @@ -279,8 +277,7 @@ AC inverter efficiency at rated DC power. Fraction of total DC energy lost. The total loss from a system is aggregated from several possible causes as illustrated below: -<%= csv_table(< true) - **Loss Type**, **Default Assumption** +{{ csv_table("**Loss Type**, **Default Assumption** Soiling, 0.02 *Shading*, *0 (handled explicitly)* Snow, 0 @@ -291,9 +288,8 @@ Fraction of total DC energy lost. The total loss from a system is aggregated fro Nameplate rating, 0.01 *Age*, *0.05 (estimated 0.5% degradation over 20 years)* Availability, 0.03 - **Total**, **0.14** -END -%> + **Total**, **0.14**", True) +}} *Italic* lines indicate differences from PVWatts assumptions. diff --git a/doc/src/docs/input-data/report.md b/doc/src/docs/input-data/report.md index 31e5fc794..abfb6f3a2 100644 --- a/doc/src/docs/input-data/report.md +++ b/doc/src/docs/input-data/report.md @@ -18,14 +18,12 @@ In addition to the headers and footers of individual reports, the report file ha **Default Reports:** CSE generates the following reports by default for each run, in the order shown. They are output by default to the "Primary" report file. They may be ALTERed or DELETEd as desired, using the object names shown. -<%= csv_table(< true) - rpName, rpType, Additional members +{{ csv_table("rpName, rpType, Additional members Err, ERR eb, ZEB, rpFreq=MONTH; rpZone=SUM; Log, LOG - Inp, INP -END -%> + Inp, INP", True) +}} Any reports specified by the user and not assigned to another file appear in the Primary report file between the default reports "eb" and "Log", in the order in which the REPORT objects are given in the input file. @@ -64,8 +62,7 @@ Name of report file to which current report will be written. If omitted, if REPO Choice indicating report type. Report types may be described at greater length, with examples, in Section 6. -<%= csv_table(< false) - ERR, Error and warning messages. If there are any such messages, they are also displayed on the screen *AND* written to a file with the same name as the input file and extension .ERR. Furthermore, \* \*many error messages are repeated in the INP report. +{{ csv_table("ERR, Error and warning messages. If there are any such messages, they are also displayed on the screen *AND* written to a file with the same name as the input file and extension .ERR. Furthermore, \* \*many error messages are repeated in the INP report. LOG, Run 'log'. As of July 1992, contains only CSE version number; should be enhanced or deleted.?? INP, Input echo: shows the portion of the input file used to specify this run. Does not repeat descriptions of objects left from prior runs in the same session when CLEAR is not used. Error and warning messages relating to specific lines of the input are repeated after or near the line to which they relate, prefixed with '?'. Lines not used due to a preprocessor \#if command (Section 4.4.4) with a false expression are prefixed with a '0' in the leftmost column; all preprocessor command lines are prefixed with a '\#' in that column. SUM, Run summary. As of July 1992, *NOT IMPLEMENTED*: generates no output and no error message. Should be defined and implemented, or else deleted??. @@ -75,9 +72,8 @@ Choice indicating report type. Report types may be described at greater length, MTR, Meter report. Requires *rpMeter*. DHWMTR, DHW meter report. Requires *rpDHWMeter* AFMTR, Air flow meter report. Requires *rpAFMeter* - UDT, User-defined table. Data items are specified with REPORTCOL commands (next section). Allows creating almost any desired report by using CSE expressions to specify numeric or string values to tabulate; 'Probes' may be used in the expressions to access CSE internal data. -END -%> + UDT, User-defined table. Data items are specified with REPORTCOL commands (next section). Allows creating almost any desired report by using CSE expressions to specify numeric or string values to tabulate; 'Probes' may be used in the expressions to access CSE internal data.") +}} {{ member_table({ @@ -95,15 +91,13 @@ The next three members specify how frequently values are reported and the start Report Frequency: specifies interval for generating rows of report data: -<%= csv_table(< false) - YEAR, at run completion +{{ csv_table("YEAR, at run completion MONTH, at end of each month (and at run completion if mid-month) DAY, at end of each day HOUR, at end of each hour HOURANDSUB, at end of each subhour and at end of hour - SUBHOUR, at end of each subhour -END -%> + SUBHOUR, at end of each subhour") +}} diff --git a/doc/src/docs/input-data/reportcol.md b/doc/src/docs/input-data/reportcol.md index 6ff451616..7fe9fad8b 100644 --- a/doc/src/docs/input-data/reportcol.md +++ b/doc/src/docs/input-data/reportcol.md @@ -106,11 +106,9 @@ Number of digits after decimal point. Specifies positioning of data within column: -<%= csv_table(< false) - Left, Left justified - Right, Right justified -END -%> +{{ csv_table("Left, Left justified + Right, Right justified") +}} **endReportCol** diff --git a/doc/src/docs/input-data/reportfile.md b/doc/src/docs/input-data/reportfile.md index 661895fe8..0230fee58 100644 --- a/doc/src/docs/input-data/reportfile.md +++ b/doc/src/docs/input-data/reportfile.md @@ -52,12 +52,10 @@ path name of file to be written. If no path is specified, the file is written in Choice indicating what CSE should do if the file specified by *rfFileName*already exists: -<%= csv_table(< false) - OVERWRITE, Overwrite pre-existing file. +{{ csv_table("OVERWRITE, Overwrite pre-existing file. NEW, Issue error message if file exists at beginning of session. If there are several runs in session using same file, output from runs after the first will append. - APPEND, Append new output to present contents of existing file. -END -%> + APPEND, Append new output to present contents of existing file.") +}} If the specified file does not exist, it is created and *rfFileStat* has no effect. @@ -75,11 +73,9 @@ If the specified file does not exist, it is created and *rfFileStat* has no effe Choice controlling page formatting. Page formatting consists of dividing the output into pages (with form feed characters), starting a new page before each report too long to fit on the current page, and putting headers and footers on each page. Page formatting makes attractive printed output but is a distraction when examining the output on the screen and may inappropriate if you are going to further process the output with another program. -<%= csv_table(< false) - Yes, Do page formatting in this report file. - No, Suppress page formatting. Output is continuous, uninterrupted by page headers and footers or large blank spaces. -END -%> +{{ csv_table("Yes, Do page formatting in this report file. + No, Suppress page formatting. Output is continuous, uninterrupted by page headers and footers or large blank spaces.") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/rsys.md b/doc/src/docs/input-data/rsys.md index 8d34077f1..bbf249980 100644 --- a/doc/src/docs/input-data/rsys.md +++ b/doc/src/docs/input-data/rsys.md @@ -20,8 +20,7 @@ Optional name of HVAC system; give after the word “RSYS” if desired. Type of system. -<%= csv_table(< true) -rsType, Description +{{ csv_table("rsType, Description ACFURNACE, Compressor-based cooling modeled per SEER and EER. Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. ACPMFURNACE, Compressor-based cooling modeled per PERFORMANCEMAP specified in rsPerfMapClg. Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. ACRESISTANCE, Compressor-based cooling and electric ('strip') heating. Cooling performance based on SEER and EER. Primary heating input energy is accumulated to end use HTG of meter rsElecMtr. @@ -41,9 +40,8 @@ ACPKGROOMRESISTANCE, Packaged room cooling and electric resistance heating. COMBINEDHEATDHW, Combined heating / DHW. Use rsCHDHWSYS to specify the DHWSYS that provides hot water to the coil in this RSYS. No cooling. ACCOMBINEDHEATDHW, Compressor-based cooling; COMBINEDHEATDHW heating. ACPMCOMBINEDHEATDHW, Compressor-based cooling modeled per PERFORMANCEMAP specified in rsPerfMapClg; COMBINEDHEATDHW heating. -FANCOIL, Coil-based heating and cooling. No primary (fuel-using) equipment is modeled. rsLoadMtr, rsHtgLoadMtr, and rsClgLoadMtr are typically used to record loads for linking to an external model. -END -%> +FANCOIL, Coil-based heating and cooling. No primary (fuel-using) equipment is modeled. rsLoadMtr, rsHtgLoadMtr, and rsClgLoadMtr are typically used to record loads for linking to an external model.", True) +}} {{ member_table({ @@ -73,13 +71,11 @@ Text description of system, included as documentation in debugging reports such Specifies systems heating/cooling availability during simulation. -<%= csv_table(< false) - OFF, System is off (neither heating nor cooling is available) +{{ csv_table("OFF, System is off (neither heating nor cooling is available) HEAT, System can heat (assuming rsType can heat) COOL, System can cool (assuming rsType can cool) - AUTO, System can either heat or cool (assuming rsType compatibility). First request by any zone served by this RSYS determines mode for the current time step. -END -%> + AUTO, System can either heat or cool (assuming rsType compatibility). First request by any zone served by this RSYS determines mode for the current time step.") +}} {{ member_table({ @@ -123,11 +119,9 @@ Specifies fan (blower) position relative to primary heating or cooling source (i Specifies type of motor driving the fan (blower). This is used in the derivation of the coil-only cooling capacity for the RSYS. -<%= csv_table(< false) - PSC, Permanent split capacitor - BPM, Brushless permanent magnet (aka ECM) -END -%> +{{ csv_table("PSC, Permanent split capacitor + BPM, Brushless permanent magnet (aka ECM)") +}} {{ member_table({ @@ -485,13 +479,11 @@ Specifies the cooling performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM, For rsType=ASHP, type of auxiliary heat. Auxiliary heating is used when heatpump capacity is insufficient to maintain zone temperature and during reverse-cycle defrost operation (if rsDefrostModel=REVCYCLEAUX). If rsTypeAuxH=Furnace, energy use for auxiliary heat is accumulated to end use HPBU of meter rsFuelMtr (if specified). If rsTypeAuxH=Resistance, energy use for auxiliary heat is accumulated to end use HPBU of meter rsElecMtr (if specified). -<%= csv_table(< true) -Choice, Description +{{ csv_table("Choice, Description NONE, No auxiliary heat RESISTANCE, Electric resistance (aka strip heat) -FURNACE, Fuel-fired -END -%> +FURNACE, Fuel-fired", True) +}} {{ member_table({ @@ -507,13 +499,11 @@ END For rsType=ASHP, type of auxiliary heating control. -<%= csv_table(< true) -Choice, Description +{{ csv_table("Choice, Description LOCKOUT, Compressor locked out if any auxiliary heating control CYCLE, Compressor runs continuously and auxiliary cycles -ALTERNATE, Alternates between compressor and auxiliary -END -%> +ALTERNATE, Alternates between compressor and auxiliary", True) +}} {{ member_table({ @@ -557,12 +547,10 @@ For rsType=ASHP, auxiliary heat annualized fuel utilization efficiency. Selects modeling options for ASHP outdoor coil defrosting when 17 ^o^F < TDbO < 45 ^o^F. In this temperature range, heating capacity and/or efficiency are typically reduced due to frost accumulation on the outdoor coil. -<%= csv_table(< false) - NONE, Defrost is not modeled. When 17 ^o^F < TDbO < 45 ^o^F, capacity and efficiency are determined by interpolation using unmodified 17 ^o^F and 47 ^o^F data. +{{ csv_table("NONE, Defrost is not modeled. When 17 ^o^F < TDbO < 45 ^o^F, capacity and efficiency are determined by interpolation using unmodified 17 ^o^F and 47 ^o^F data. REVCYCLE, Reverse compressor (cooling) operation. Net capacity and efficiency is derived from rsCap17/rsCOP17 and rsCap35/rsCOP35 using linear interpolation. Auxiliary heat is not modeled. - REVCYCLEAUX, Reverse compressor (cooling) operation with provision of sufficient auxiliary heat to make up the loss of heating capacity. Auxiliary heating is typically used to prevent cold air delivery to zones during the defrost cycle. -END -%> + REVCYCLEAUX, Reverse compressor (cooling) operation with provision of sufficient auxiliary heat to make up the loss of heating capacity. Auxiliary heating is typically used to prevent cold air delivery to zones during the defrost cycle.") +}} {{ member_table({ @@ -881,12 +869,10 @@ Cooling distribution system efficiency. If given, (1-rsDSEC) of RSYS cooling ou OAV cannot operate simultaneously with whole building ventilation (operable windows, whole house fans, etc.). Availability of ventilation modes is controlled on an hourly basis via [Top ventAvail][top-model-control-items]. -<%= csv_table(< false) -NONE, No CFI ventilation capabilities +{{ csv_table("NONE, No CFI ventilation capabilities FIXED, Fixed-flow CFI (aka SmartVent). The specified rsOAVVfDs is used whenever the RSYS operates in OAV mode. -VARIABLE, Variable-flow CFI (aka NightBreeze). Flow rate is determined at midnight based on prior day's average dry-bulb temperature according to a control algorithm defined by the NightBreeze vendor. -END -%> +VARIABLE, Variable-flow CFI (aka NightBreeze). Flow rate is determined at midnight based on prior day's average dry-bulb temperature according to a control algorithm defined by the NightBreeze vendor.") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/sgdist.md b/doc/src/docs/input-data/sgdist.md index 8f319294a..0c7d802d9 100644 --- a/doc/src/docs/input-data/sgdist.md +++ b/doc/src/docs/input-data/sgdist.md @@ -43,11 +43,9 @@ The specified surface must be modeled with the Delayed model. If gain is targete Designates the side of the surface to which the gain is to be targeted: -<%= csv_table(< false) -INTERIOR, Apply gain to interior of surface -EXTERIOR, Apply gain to exterior of surface -END -%> +{{ csv_table("INTERIOR, Apply gain to interior of surface +EXTERIOR, Apply gain to exterior of surface") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index ffb24e3ef..de64e66d5 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -20,12 +20,10 @@ Name of surface; give after the word SURFACE. Type of surface: -<%= csv_table(< false) -FLOOR, Surface defines part or all of the 'bottom' of the zone; it is horizontal with inside facing up. The outside of the surface is not adjacent to the current zone. +{{ csv_table("FLOOR, Surface defines part or all of the 'bottom' of the zone; it is horizontal with inside facing up. The outside of the surface is not adjacent to the current zone. WALL, Surface defines a 'side' of the zone; its outside is not adjacent to the current zone. -CEILING, Surface defines part or all of the 'top' of the zone with the inside facing down. The outside of the surface is not adjacent to the current zone. -END -%> +CEILING, Surface defines part or all of the 'top' of the zone with the inside facing down. The outside of the surface is not adjacent to the current zone.") +}} sfType is used extensively for default determination and input checking, but does not have any further internal effect. The Floor, Wall, and Ceiling choices identify surfaces that form boundaries between the zone and some other condition. @@ -91,14 +89,12 @@ Azimuth of surface with respect to znAzm. The azimuth used in simulating a surfa Provides user control over how CSE models conduction for this surface. -<%= csv_table(< false) -QUICK, Surface is modeled using a simple conductance. Heat capacity effects are ignored. Either sfCon or sfU (next) can be specified. +{{ csv_table("QUICK, Surface is modeled using a simple conductance. Heat capacity effects are ignored. Either sfCon or sfU (next) can be specified. DELAYED, DELAYED\_HOUR, DELAYED\_SUBHOUR, Surface is modeled using a multi-layer finite difference technique that represents heat capacity effects. If the time constant of the surface is too short to accurately simulate, a warning message is issued and the Quick model is used. The program **cannot** use the finite difference model if sfU rather than sfCon is specified. AUTO, Program selects Quick or the appropriate Delayed automatically according to the time constant of the surface (if sfU is specified, Quick is selected). FD (or FORWARD\_DIFFERENCE), Selects the forward difference model (used with short time steps and the CZM/UZM zone model). -KIVA, Uses a two-dimensional finite difference model to simulate heat flow through foundation surfaces. -END -%> +KIVA, Uses a two-dimensional finite difference model to simulate heat flow through foundation surfaces.") +}} {{ member_table({ @@ -161,14 +157,12 @@ Sublayer thickness adjustment factor for FORWARD\_DIFFERENCE conduction model us Specifies the thermal conditions assumed at surface exterior, and at exterior of any subobjects (windows or doors) belonging to current surface. The conditions accounted for are dry bulb temperature and incident solar radiation. -<%= csv_table(< false) -AMBIENT, Exterior surface is exposed to the 'weather' as read from the weather file. Solar gain is calculated using solar geometry, sfAzm, sfTilt, and sfExAbs. +{{ csv_table("AMBIENT, Exterior surface is exposed to the 'weather' as read from the weather file. Solar gain is calculated using solar geometry, sfAzm, sfTilt, and sfExAbs. SPECIFIEDT, Exterior surface is exposed to solar radiation as in AMBIENT, but the dry bulb temperature is calculated with a user specified function (sfExT). sfExAbs can be set to 0 to eliminate solar effects. ADJZN, Exterior surface is exposed to another zone, whose name is specified by sfAdjZn. Solar gain is 0 unless gain is targeted to the surface with SGDIST below. GROUND, The surface is in contact with the ground. Details of the two-dimensional foundation design are defined by sfFnd. Only floor and wall surfaces may use this option. -ADIABATIC, Exterior surface heat flow is 0. Thermal storage effects of delayed surfaces are modeled. -END -%> +ADIABATIC, Exterior surface heat flow is 0. Thermal storage effects of delayed surfaces are modeled.") +}} **sfExAbs=*float*** @@ -272,11 +266,9 @@ Ground reflectivity for this surface. Inside surface (air film) conductance. Ignored for sfModel = Forward\_Difference. Default depends on the surface type. -<%= csv_table(< false) -sfType = FLOOR or CEILING, 1.32 -other, 1.5 -END -%> +{{ csv_table("sfType = FLOOR or CEILING, 1.32 +other, 1.5") +}} {{ member_table({ @@ -292,13 +284,11 @@ END Outside combined surface (air film) conductance. Ignored for sfModel = Forward\_Difference. The default value is dependent upon the exterior conditions: -<%= csv_table(< false) -sfExCnd = AMBIENT, dflExH (Top-level member, described above) +{{ csv_table("sfExCnd = AMBIENT, dflExH (Top-level member, described above) sfExCnd = SPECIFIEDT, dflExH (described above) sfExCnd = ADJZN, 1.5 -sfExCnd = ADIABATIC, not applicable -END -%> +sfExCnd = ADIABATIC, not applicable") +}} {{ member_table({ @@ -312,8 +302,7 @@ END When sfModel = Forward\_Difference, several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on sfExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. -<%= csv_table(< true) -Model, Exposed to ambient, Exposed to zone +{{ csv_table("Model, Exposed to ambient, Exposed to zone UNIFIED, default CSE model, default CSE model INPUT, hc = sfExHcMult, hc = sfxxHcMult AKBARI, Akbari model, n/a @@ -322,9 +311,8 @@ WINKELMANN, Winkelmann model, n/a DOE2, DOE2 model, n/a MILLS, n/a, Mills model ASHRAE, n/a, ASHRAE handbook values -TARP, n/a, TARP model -END -%> +TARP, n/a, TARP model", True) +}} **sfExHcModel=*choice*** @@ -374,16 +362,14 @@ Exterior convection coefficient adjustment factor. When sfExHcModel=INPUT, hc=s Exterior surface roughness factor. Used only when surface is exposed to ambient (i.e. with wind exposure). Typical values: -<%= csv_table(< true) -Roughness Index, sfExRf, Example +{{ csv_table("Roughness Index, sfExRf, Example 1 (very rough), 2.17, Stucco 2 (rough), 1.67, Brick 3 (medium rough), 1.52, Concrete 4 (Medium smooth), 1.13, Clear pine 5 (Smooth), 1.11, Smooth plaster -6 (Very Smooth), 1, Glass -END -%> +6 (Very Smooth), 1, Glass", True) +}} {{ member_table({ diff --git a/doc/src/docs/input-data/terminal.md b/doc/src/docs/input-data/terminal.md index 452d5395a..4e89dc8bb 100644 --- a/doc/src/docs/input-data/terminal.md +++ b/doc/src/docs/input-data/terminal.md @@ -90,11 +90,9 @@ Setpoint priority: when there is more than one capability with the same setpoint **tuLhNeedsFlow=*choice*** -<%= csv_table(< false) - YES, local heat being modeled requires terminal air flow (e.g. reheat coil). Local heat is then disabled when there is zero air flow through the terminal (when simulated VAV damper set to 0 flow, or when air handler fan and terminal fan both off) - NO, no local heat or does not require air flow (e.g. baseboard heaters). -END -%> +{{ csv_table("YES, local heat being modeled requires terminal air flow (e.g. reheat coil). Local heat is then disabled when there is zero air flow through the terminal (when simulated VAV damper set to 0 flow, or when air handler fan and terminal fan both off) + NO, no local heat or does not require air flow (e.g. baseboard heaters).") +}} {{ member_table({ @@ -203,11 +201,9 @@ Sizing factor for autosized terminal air flows. Default value (1.1) specifies 1 Determines autosizing strategy for heating and cooling air flows. -<%= csv_table(< false) - SAME, tuVfMxH and tuVfMxC are set to the larger of the autosized values - DIFFERENT, tuVfMxH and tuVfMxC are autosized independently -END -%> +{{ csv_table("SAME, tuVfMxH and tuVfMxC are set to the larger of the autosized values + DIFFERENT, tuVfMxH and tuVfMxC are autosized independently") +}} {{ member_table({ @@ -331,11 +327,9 @@ These members are disallowed if terminal has no local heating capability, that i Local heating coil type: -<%= csv_table(< false) - ELECTRIC, Electric coil or heater, including separate heaters such as electric baseboards. 100% efficient; rated capacity always available. - HW, Hot water coil, using hot water from amHEATPLANT. Available capacity may be limited by HEATPLANT total capacity as well as by coil rated capacity. -END -%> +{{ csv_table("ELECTRIC, Electric coil or heater, including separate heaters such as electric baseboards. 100% efficient; rated capacity always available. + HW, Hot water coil, using hot water from amHEATPLANT. Available capacity may be limited by HEATPLANT total capacity as well as by coil rated capacity.") +}} {{ member_table({ @@ -413,12 +407,10 @@ Terminal fans are *NOT IMPLEMENTED* as of July 1992. Choice of: -<%= csv_table(< false) - NONE, No fan in this TERMINAL (default); input for other terminal fan members disallowed. +{{ csv_table("NONE, No fan in this TERMINAL (default); input for other terminal fan members disallowed. SERIES, Fan runs whenever scheduled ON (see tfanSched, next); if VAV cfm < terminal fan cfm (tfanVfDs), the additional flow comes from the return air. - PARALLEL, Fan runs when scheduled ON (see tfanSched) and terminal's simulated VAV cfm is less than tfanVfDs plus tuVfMn ?? plus tuVfMn??. Terminal fan cfm is added to VAV cfm from AIRHANDLER to get cfm to ZONE. -END -%> + PARALLEL, Fan runs when scheduled ON (see tfanSched) and terminal's simulated VAV cfm is less than tfanVfDs plus tuVfMn ?? plus tuVfMn??. Terminal fan cfm is added to VAV cfm from AIRHANDLER to get cfm to ZONE.") +}} {{ @@ -435,13 +427,11 @@ END Terminal fan schedule. May be scheduled with an hourly variable expression. -<%= csv_table(< false) - OFF, fan does not run +{{ csv_table("OFF, fan does not run ON, fan may run HEATING, fan may run when local heat is in use - VAV, fan may run when AIRHANDLER supply fan is on or when doing setback headting and ssCtrl is ZONE\_HEAT or BOTH (future). -END -%> + VAV, fan may run when AIRHANDLER supply fan is on or when doing setback headting and ssCtrl is ZONE\_HEAT or BOTH (future).") +}} A series fan (see tfanType) runs whenever on; a parallel fan runs only enough to keep terminal cfm at terminal minimum plus fan cfm; thus it may not run at all when the VAV flow from the AIRHANDLER is sufficient. diff --git a/doc/src/docs/input-data/top-members.md b/doc/src/docs/input-data/top-members.md index 0b1b88ce0..28d13b7b7 100644 --- a/doc/src/docs/input-data/top-members.md +++ b/doc/src/docs/input-data/top-members.md @@ -280,11 +280,9 @@ Allows the user to choose whether to calculate foundation conduction on hourly o Developmental zone humidity computation method choice for CNE models (no effect for CSE models). -<%= csv_table(< false) -ROB, Rob's backward difference method. Works well within limitations of backward difference approach. -PHIL, Phil's central difference method. Should be better if perfected*coma* but initialization at air handler startup is unresolved*coma and ringing has been observed. -END -%> +{{ csv_table("ROB, Rob's backward difference method. Works well within limitations of backward difference approach. +PHIL, Phil's central difference method. Should be better if perfected*coma* but initialization at air handler startup is unresolved*coma and ringing has been observed.") +}} {{ member_table({ @@ -418,13 +416,11 @@ End day for daylight saving time (assuming DT=Yes) Indicates availability of outdoor ventilation strategies. CSE cannot model simultaneously-operating alternative ventilation strategies. For example, an RSYS central fan integrated (CFI) OAV system is never modeled while whole house fan ventilation is available. ventAvail controls which ventilation mode, if any, is available for the current hour. Note that mode availability means that the strategy could operate but may not operate due to other control assumptions. -<%= csv_table(< true) -Choice, Ventilation Strategy Available +{{ csv_table("Choice, Ventilation Strategy Available NONE, None WHOLEBUILDING, IZXFER (window and whole-house fan) -RSYSOAV, RSYS central fan integrated (CFI) outside air ventilation (OAV) -END -%> +RSYSOAV, RSYS central fan integrated (CFI) outside air ventilation (OAV)", True) +}} As noted, ventAvail is evaluated hourly, permitting flexible control strategy modeling. The following example specifies that RSYSOAV (CFI) ventilation is available when the seven day moving average temperature is above 68 ^o^F, otherwise whole building ventilation is available between 7 and 11 PM, otherwise no ventilation. @@ -446,12 +442,10 @@ As noted, ventAvail is evaluated hourly, permitting flexible control strategy mo Specifies advanced exterior shading model used to evaluate shading of [PVARRAYs][pvarray] by [SHADEXs][shadex] or other PVARRAYs. Advanced shading is not implemented for building surfaces and this setting has no effect on walls or windows. -<%= csv_table(< true) -**Choice**, **Effect** +{{ csv_table("**Choice**, **Effect** PENUMBRA, Calculate shading using the Penumbra model -NONE, Disable advanced shading calculations -END -%> +NONE, Disable advanced shading calculations", True) +}} {{ member_table({ @@ -467,12 +461,10 @@ END Solar interpolation method. -<%= csv_table(< true) -Choice +{{ csv_table("Choice CSE -TRNSYS -END -%> +TRNSYS", True) +}} {{ member_table({ @@ -589,16 +581,14 @@ ASHWAT convection coefficient change threshold -- full calculation is triggered The following system variables (4.6.4) are determined from the weather file for each simulated hour: -<%= csv_table(< false) -\$radBeam, beam irradiance on tracking surface (integral for hour, Btu/ft^2^). +{{ csv_table("\$radBeam, beam irradiance on tracking surface (integral for hour, Btu/ft^2^). \$radDiff, diffuse irradiance on a horizontal surface (integral for hour, Btu/ft^2^). \$tDbO, dry bulb temp (^o^F). \$tWbO, wet bulb temp (^o^F). \$wO, humidity ratio \$windDirDeg, wind direction (degrees, NOT RADIANS; 0=N, 90=E). -\$windSpeed, wind speed (mph). -END -%> +\$windSpeed, wind speed (mph).") +}} The following are the terms determined from the weather file for internal use, and can be referenced with the probes shown. @@ -626,11 +616,9 @@ Note: Backslash (\\) characters in path names must be doubled to work properly ( Selects sky model used to determine relative amounts of direct and diffuse irradiance. -<%= csv_table(< false) -ISOTROPIC, traditional isotropic sky model -ANISOTROPIC, Hay anisotropic model -END -%> +{{ csv_table("ISOTROPIC, traditional isotropic sky model +ANISOTROPIC, Hay anisotropic model") +}} {{ member_table({ @@ -646,15 +634,13 @@ END Selects the model used to derive sky temperature used in long-wave (thermal) radiant heat exchange calculations for SURFACEs exposed to ambient conditions. See the RACM alorithms documentation for technical details. -<%= csv_table(< true) -**Choice**, **Description** +{{ csv_table("**Choice**, **Description** DEFAULT, Default: tSky from weather file if available else Berdahl-Martin BERDAHLMARTIN, Berdahl-Martin (tSky depends on dew point, cloud cover, and hour) DRYBULB, tSky = dry-bulb temperature (for testing) BLAST, Blast model (tSky depends on dry-bulb) -IRHORIZ, Derives tSky from horizonal infrared data from the weather file (available on some EPW files only). Caution: minimal error checking! Missing weather file IR values are not handled correctly. -END -%> +IRHORIZ, Derives tSky from horizonal infrared data from the weather file (available on some EPW files only). Caution: minimal error checking! Missing weather file IR values are not handled correctly.", True) +}} {{ member_table({ @@ -778,14 +764,12 @@ Wind Factor: multiplier for wind speeds read from weather file. windF is applied Specifies characteristics of ground terrain in the project region. -<%= csv_table(< false) -1, ocean or other body of water with at least 5 km unrestricted expanse +{{ csv_table("1, ocean or other body of water with at least 5 km unrestricted expanse 2, flat terrain with some isolated obstacles (buildings or trees well separated) 3, rural areas with low buildings, trees, etc. 4, urban, industrial, or forest areas -5, center of large city -END -%> +5, center of large city") +}} {{ member_table({ @@ -974,15 +958,13 @@ CSE supports an optional comma-separated (CSV) text file that provides hourly TD The format of a TDV file is the same as an [IMPORTFILE][importfile] with the proviso that the 4 line header is not optional and certain header items must have specified values. In the following table, non-italic items must be provided as shown (with optional quotes). -<%= csv_table(< true) -**Line** **Contents** **Notes** +{{ csv_table("**Line** **Contents** **Notes** 1, TDV Data (TDV/Btu), *runNumber*, *runNumber* is not checked 2, *timestamp* optionally in quotes accessible via @TOP.TDVFileTimeStamp 3, *title*, hour *title* (in quotes if it contains commas) accessible via @TOP.TDVFileTitle 4, tdvElec, tdvFuel comma separated column names (optionally in quotes)\ not checked -5 .., *valElec*,*valFuel* comma separated numerical values (8760 or 8784 rows) tdvElec is always in column 1, tdvFuel always in column 2 column names in row 4 do not determine order -END -%> +5 .., *valElec*,*valFuel* comma separated numerical values (8760 or 8784 rows) tdvElec is always in column 1, tdvFuel always in column 2 column names in row 4 do not determine order", True) +}} Example TDV file -- @@ -1005,8 +987,7 @@ Note: additional columns can be included and are ignored. The table below shows probes available for accessing TDV data in expressions. Except as noted, daily values are updated based on standard time, so they may be inaccurate by small amounts when daylight savings time is in effect. -<%= csv_table(< true) -**Probe**, **Variability**, **Description** +{{ csv_table("**Probe**, **Variability**, **Description** @Weather.tdvElec, Hour, current hour electricity TDV @Weather.tdvFuel, Hour, current hour fuel TDV @Weather.tdvElecPk, Day, current day peak electricity TDV (includes future hours). Updated at hour 23 during daylight savings. @@ -1016,9 +997,8 @@ The table below shows probes available for accessing TDV data in expressions. E @weather.tdvElecHrRank[], Day, hour ranking of TDVElec values. tdvElecHrRank[ 1] is the hour having the highest TDVElec, tdvElecHrRank[ 2] is the next highest, etc. The hour values are adjusted when dayight savings time is in effect, so they remain consistent with system variable $hour. @weatherFile.tdvFileTimeStamp, Constant, TDV file timestamp (line 2 of header) @weatherFile.tdvFileTitle, Constant, TDV file title (line 3 of header) -@Top.tdvFName, Constant, TDV file full path -END -%> +@Top.tdvFName, Constant, TDV file full path", True) +}} **TDVfName=*string*** diff --git a/doc/src/docs/input-data/window.md b/doc/src/docs/input-data/window.md index 4dce1b6d1..6aec0dd8d 100644 --- a/doc/src/docs/input-data/window.md +++ b/doc/src/docs/input-data/window.md @@ -194,17 +194,15 @@ Window exterior surface (air film) conductance. Several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on wnExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. -<%= csv_table(< true) -Model, Exposed to ambient, Exposed to zone +{{ csv_table("Model, Exposed to ambient, Exposed to zone UNIFIED, default CSE model, default CSE model INPUT , hc = wnExHcMult, hc = wnxxHcMult AKBARI , Akbari model, n/a WALTON , Walton model, n/a WINKELMANN, Winkelmann model, n/a MILLS , n/a , Mills model -ASHRAE , n/a , ASHRAE handbook values -END -%> +ASHRAE , n/a , ASHRAE handbook values", True) +}} **wnExHcModel=*choice*** diff --git a/doc/src/docs/input-data/zone.md b/doc/src/docs/input-data/zone.md index 6d6f4fef1..6ba0c40c9 100644 --- a/doc/src/docs/input-data/zone.md +++ b/doc/src/docs/input-data/zone.md @@ -22,12 +22,10 @@ Name of zone. Enter after the word ZONE; no "=" is used. Selects model for zone. -<%= csv_table(< false) -CNE, Older central difference model based on original CALPAS methods. Not fully supported and not suitable for current compliance applications. +{{ csv_table("CNE, Older central difference model based on original CALPAS methods. Not fully supported and not suitable for current compliance applications. CZM, Conditioned zone model. Forward-difference, short time step methods are used. -UZM, Unconditioned zone model. Identical to CZM except heating and cooling are not supported. Typically used for attics, garages, and other ancillary spaces. -END -%> +UZM, Unconditioned zone model. Identical to CZM except heating and cooling are not supported. Typically used for attics, garages, and other ancillary spaces.") +}} {{ member_table({ @@ -404,14 +402,12 @@ Zone effective leakage area (ELA). Zone local shielding class, used in derivation of local wind speed for ELA infiltration model, wind-driven AirNet leakage, and exterior surface coefficients. infShld values are -- -<%= csv_table(< false) - 1, no obstructions or local shielding +{{ csv_table("1, no obstructions or local shielding 2, light local shielding with few obstructions 3, moderate local shielding, some obstructions within two house heights 4, heavy shielding, obstructions around most of the perimeter - 5, very heavy shielding, large obstructions surrounding the perimeter within two house heights -END -%> + 5, very heavy shielding, large obstructions surrounding the perimeter within two house heights") +}} {{ member_table({ diff --git a/doc/src/main.py b/doc/src/main.py index d346ee748..8ff25190a 100644 --- a/doc/src/main.py +++ b/doc/src/main.py @@ -4,7 +4,7 @@ def define_env(env): """ @env.macro - def csv_table(csv, header=True): + def csv_table(csv, header=False): rows = [row.split(",") for row in csv.split("\n")] max_length = max(len(row) for row in rows) diff --git a/doc/src/shared/dhwheater-doc.md b/doc/src/shared/dhwheater-doc.md index 187a31198..4bb422538 100644 --- a/doc/src/shared/dhwheater-doc.md +++ b/doc/src/shared/dhwheater-doc.md @@ -30,14 +30,12 @@ Number of identical water heaters of this type. Any value $>1$ is equivalent to Type of water heater. This categorization is based on CEC and federal rating standards that change from time to time. -<%= csv_table(< false) - SMALLSTORAGE, A storage water heater having an energy factor (EF) rating. Generally, a gas-fired storage water heater with input of 75,000 Btuh or less, an oil-fired storage water heater with input of 105,000 Btuh or less, an electric storage water heater with input of 12 kW or less, or a heat pump water heater rated at 24 amps or less. +{{ csv_table("SMALLSTORAGE, A storage water heater having an energy factor (EF) rating. Generally, a gas-fired storage water heater with input of 75,000 Btuh or less, an oil-fired storage water heater with input of 105,000 Btuh or less, an electric storage water heater with input of 12 kW or less, or a heat pump water heater rated at 24 amps or less. LARGESTORAGE, Any storage water heater that is not SMALLSTORAGE. SMALLINSTANTANEOUS, A water heater that has an input rating of at least 4,000 Btuh per gallon of stored water. Small instantaneous water heaters include: gas instantaneous water heaters with an input of 200,000 Btu per hour or less, oil instantaneous water heaters with an input of 210,000 Btu per hour or less, and electric instantaneous water heaters with an input of 12 kW or less. LARGEINSTANTANEOUS, An instantaneous water heater that does not conform to the definition of SMALLINSTANTANEOUS, an indirect fuel-fired water heater, or a hot water supply boiler. - INSTANTANEOUSUEF, An instantaneous water heater having a UEF rating (as opposed to EF). -END -%> + INSTANTANEOUSUEF, An instantaneous water heater having a UEF rating (as opposed to EF).") +}} {{ member_table({ @@ -55,14 +53,12 @@ Heat source for water heater. CSE implements uses efficiency-based models for all whTypes (as documented in RACM, App. B). In addition, the detailed Ecotope HPWH model is available for electric (air source heat pump and resistance) SMALLSTORAGE water heaters. -<%= csv_table(< false) - RESISTANCE, Electric resistance heating element Deprecated for whType=SMALLSTORAGE (use RESISTANCEX) +{{ csv_table("RESISTANCE, Electric resistance heating element Deprecated for whType=SMALLSTORAGE (use RESISTANCEX) RESISTANCEX, Electric resistance heating element, detailed HPWH model ASHP, Air source heat pump, EF model Deprecated for whType=SMALLSTORAGE (use ASHPX) ASHPX, Air source heat pump, detailed HPWH model - FUEL, Fuel-fired burner -END -%> + FUEL, Fuel-fired burner") +}} {{ member_table({ @@ -137,16 +133,14 @@ Rated energy factor that specifies DHWHEATER efficiency under test conditions. by CSE to derive annual water heating efficiency and/or other characteristics as described below. Calculation methods are documented in RACM, Appendix B. -<%= csv_table(< true) - Configuration, whEF default, Use +{{ csv_table("Configuration, whEF default, Use whType=SMALLSTORAGE, whHeatSrc=RESISTANCE or FUEL, 0.82, Derivation of whLDEF whType=SMALLSTORAGE, whHeatSrc=ASHP, 0.82, Derivation of whLDEFnote inappropriate default (deprecated, use ASHPX) whType=SMALLSTORAGE, whHeatSrc=ASHPX, whASHPType=GENERIC, (req'd), Tank losses Overall efficiency whType=SMALLSTORAGE, whHeatSrc=RESISTANCEX, (req'd), Tank losses Note: maximum whEF=0.98. whType=SMALLINSTANTANEOUS, whHeatSrc=RESISTANCE or FUEL, 0.82, Annual efficiency = whEF*0.92 - Any other, (unused) -END -%> + Any other, (unused)", True) +}} {{ member_table({ From 91387fd567b4746817ed81cf5108d7efe5d46cec Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 3 Mar 2025 12:56:19 -0700 Subject: [PATCH 018/117] Remove inner quotations for csv_table string. --- doc/src/docs/input-data/dhwsys.md | 12 +- doc/src/shared/dhwheater-doc.md | 224 +++++++++++++++--------------- 2 files changed, 116 insertions(+), 120 deletions(-) diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index 0c0aae8d5..4db941516 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -429,13 +429,11 @@ Circulation loop volume flow rate for testing and validation. Branch model selection. -<%= csv_table(< true) -"wsBranchModel","Description" -"T24DHW","Model in appendix B of the Alternative Compliance Manual" -"DRAWWASTE","Draw duration increase per draw waste" -"DAYWASTE","draw duration increase per day waste" -END -%> +{{ csv_table("wsBranchModel,Description +T24DHW,Model in appendix B of the Alternative Compliance Manual +DRAWWASTE,Draw duration increase per draw waste +DAYWASTE,draw duration increase per day waste", True) +}} **wsDayWasteVol=*float*** diff --git a/doc/src/shared/dhwheater-doc.md b/doc/src/shared/dhwheater-doc.md index 4bb422538..41978e5eb 100644 --- a/doc/src/shared/dhwheater-doc.md +++ b/doc/src/shared/dhwheater-doc.md @@ -288,119 +288,117 @@ whZone and whTEx cannot both be specified. Air source heat pump type, valid only if whHeatSrc=ASHPX. These choices are supported by the detailed HPWH model. Except for Generic, all heater characteristics are set by HPWH based on whASHPType. -<%= csv_table(< true) -"Choice","Specified type" -"Generic","General generic (parameterized by wh_EF and wh_vol)" -"AOSmithPHPT60","60 gallon Voltex" -"AOSmithPHPT80","80 gallon Voltex" -"AOSmithHPTU50","50 gallon AOSmith HPTU" -"AOSmithHPTU66","66 gallon AOSmith HPTU" -"AOSmithHPTU80","80 gallon AOSmith HPTU" -"AOSmithHPTU80DR","80 gallon AOSmith HPTU (demand reduction variant)" -"AOSmithCAHP120","120 gallon AOSmith" -"Sanden40","Sanden 40 gallon CO2 external heat pump" -"Sanden80","Sanden 80 gallon CO2 external heat pump" -"Sanden120","Sanden 120 gallon CO2 external heat pump" -"SandenGS3","Sanden GS3 compressor CO2 external" -"GE2012","2012 era GeoSpring" -"GE2014","2014 80 gal GE model run in the efficiency mode" -"GE2014_80DR","2014 80 gal GE model run in the efficiency mode (demand reduction variant)" -"GE2014StdMode","2014 50 gal GE run in standard mode" -"GE2014StdMode80","2014 80 gal GE run in standard mode" -"RheemHB50","newish Rheem (2014 model?)" -"RheemHBDR2250","50 gallon, 2250 W resistance Rheem HB Duct Ready" -"RheemHBDR4550","50 gallon, 4500 W resistance Rheem HB Duct Ready" -"RheemHBDR2265","65 gallon, 2250 W resistance Rheem HB Duct Ready" -"RheemHBDR4565","65 gallon, 4500 W resistance Rheem HB Duct Ready" -"RheemHBDR2280","80 gallon, 2250 W resistance Rheem HB Duct Ready" -"RheemHBDR4580","80 gallon, 4500 W resistance Rheem HB Duct Ready" -"Rheem2020Prem40","40 gallon, Rheem 2020 Premium" -"Rheem2020Prem50","50 gallon, Rheem 2020 Premium" -"Rheem2020Prem65","65 gallon, Rheem 2020 Premium" -"Rheem2020Prem80","80 gallon, Rheem 2020 Premium" -"Rheem2020Build40","40 gallon, Rheem 2020 Builder" -"Rheem2020Build50","50 gallon, Rheem 2020 Builder" -"Rheem2020Build65","65 gallon, Rheem 2020 Builder" -"Rheem2020Build80","80 gallon, Rheem 2020 Builder" -"RheemPlugInShared40","40 gal Rheem plug-in 120V shared circuit (no resistance elements)" -"RheemPlugInShared50","50 gal Rheem plug-in 120V shared circuit (no resistance elements)" -"RheemPlugInShared65","65 gal Rheem plug-in 120V shared circuit (no resistance elements)" -"RheemPlugInShared80","80 gal Rheem plug-in 120V shared circuit (no resistance elements)" -"RheemPlugInDedicated40","40 gal Rheem plug-in 120V dedicated circuit (no resistance elements)" -"RheemPlugInDedicated50","50 gal Rheem plug-in 120V dedicated circuit (no resistance elements)" -"Stiebel220E","Stiebel Eltron (2014 model?)" -"AOSmithSHPT50","AOSmith add'l models (added 3-24-2017)" -"AOSmithSHPT66","AOSmith add'l models (added 3-24-2017)" -"AOSmithSHPT80","AOSmith add'l models (added 3-24-2017)" -"GenericTier1","Generic Tier 1" -"GenericTier2","Generic Tier 2" -"GenericTier3","Generic Tier 3" -"Generic","General generic (parameterized by EF and vol)" -"UEF2Generic","Experimental UEF=2" -"WorstCaseMedium","UEF2Generic alias (supports pre-existing test cases)" -"BasicIntegrated","Typical integrated HPWH" -"ResTank","Resistance heater (no compressor). Superceded by whHeatSrc=RESITANCEX" -"ResTankNoUA","Resistance heater (no compressor) with no tank losses. Superseded by whHeatSrc=RESISTANCEX." -"AOSmithHPTU80DR","80 gallon AOSmith HPTU with fixed backup setpoint (experimental for demand response testing)" -"AOSmithSHPT50","50 gal AOSmith SHPT" -"AOSmithSHPT66","66 gal AOSmith SHPT" -"AOSmithSHPT80","80 gal AOSmith SHPT" -"AOSmithHPTS40","40 gal AOSmith HPTS" -"AOSmithHPTS50","50 gal AOSmith HPTS" -"AOSmithHPTS66","66 gal AOSmith HPTS" -"AOSmithHPTS80","80 gal AOSmith HPTS" -"ColmacCxV5_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" -"ColmacCxA10_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" -"ColmacCxA15_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" -"ColmacCxA20_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" -"ColmacCxA25_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" -"ColmacCxA30_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" -"ColmacCxV5_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" -"ColmacCxA10_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" -"ColmacCxA15_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" -"ColmacCxA20_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" -"ColmacCxA25_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" -"ColmacCxA30_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" -"NyleC25A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" -"NyleC60A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" -"NyleC90A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" -"NyleC125A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" -"NyleC185A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" -"NyleC250A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" -"NyleC60A_CWP_SP","Nyle Cxx external SP HPWHs with cold weather package" -"NyleC90A_CWP_SP","Nyle Cxx external SP HPWHs with cold weather package" -"NyleC125A_CWP_SP","Nyle Cxx external SP HPWHs with cold weather package" -"NyleC185A_CWP_SP","Nyle Cxx external SP HPWHs with cold weather package" -"NyleC250A_CWP_SP","Nyle Cxx external SP HPWHs with cold weather package" -"NyleC60A_MP","Nyle Cxx external HPWHs (MP = multi-pass mode)" -"NyleC90A_MP","Nyle Cxx external HPWHs (MP = multi-pass mode)" -"NyleC125A_MP","Nyle Cxx external HPWHs (MP = multi-pass mode)" -"NyleC185A_MP","Nyle Cxx external HPWHs (MP = multi-pass mode)" -"NyleC250A_MP","Nyle Cxx external HPWHs (MP = multi-pass mode)" -"NyleC60A_CWP_MP","Nyle Cxx external MP HPWHs w/ cold weather package" -"NyleC90A_CWP_MP","Nyle Cxx external MP HPWHs w/ cold weather package" -"NyleC125A_CWP_MP","Nyle Cxx external MP HPWHs w/ cold weather package" -"NyleC185A_CWP_MP","Nyle Cxx external MP HPWHs w/ cold weather package" -"NyleC250A_CWP_MP","Nyle Cxx external MP HPWHs w/ cold weather package" -"Rheem_HPHD60HNU_MP","Rheem HPHD60 MP external MP HPWHs" -"Rheem_HPHD60VNU_MP","Rheem HPHD60 MP external MP HPWHs" -"Rheem_HPHD135HNU_MP","Rheem HPHD135 MP external MP HPWHs" -"Rheem_HPHD135VNU_MP","Rheem HPHD135 MP external MP HPWHs" -"Scalable_SP","single pass scalable type for autosized standard design" -"Scalable_MP","multipass scalable type for autosized standard design" -"AquaThermAire","Villara AquaThermAire HPWH" -"GenericUEF217","65-gal tank meeting Federal standard minimum requirement" -"AWHSTier4Generic40","Any 40-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements" -"AWHSTier4Generic50","Any 50-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements" -"AWHSTier4Generic65","Any 65-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements" -"AWHSTier4Generic80","Any 80-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements" -"BradfordWhiteAeroThermRE2H50","Bradford White 50-gal AeroTherm2023" -"BradfordWhiteAeroThermRE2H65","Bradford White 65-gal AeroTherm2023" -"BradfordWhiteAeroThermRE2H80","Bradford White 80-gal AeroTherm2023" -"LG_APHWC50","LG 50-gal integrated HPWH" -"LG_APHWC80","LG 580-gal integrated HPWH" -END -%> +{{ csv_table("Choice,Specified type +Generic,General generic (parameterized by wh_EF and wh_vol) +AOSmithPHPT60,60 gallon Voltex +AOSmithPHPT80,80 gallon Voltex +AOSmithHPTU50,50 gallon AOSmith HPTU +AOSmithHPTU66,66 gallon AOSmith HPTU +AOSmithHPTU80,80 gallon AOSmith HPTU +AOSmithHPTU80DR,80 gallon AOSmith HPTU (demand reduction variant) +AOSmithCAHP120,120 gallon AOSmith +Sanden40,Sanden 40 gallon CO2 external heat pump +Sanden80,Sanden 80 gallon CO2 external heat pump +Sanden120,Sanden 120 gallon CO2 external heat pump +SandenGS3,Sanden GS3 compressor CO2 external +GE2012,2012 era GeoSpring +GE2014,2014 80 gal GE model run in the efficiency mode +GE2014_80DR,2014 80 gal GE model run in the efficiency mode (demand reduction variant) +GE2014StdMode,2014 50 gal GE run in standard mode +GE2014StdMode80,2014 80 gal GE run in standard mode +RheemHB50,newish Rheem (2014 model?) +RheemHBDR2250,50 gallon, 2250 W resistance Rheem HB Duct Ready +RheemHBDR4550,50 gallon, 4500 W resistance Rheem HB Duct Ready +RheemHBDR2265,65 gallon, 2250 W resistance Rheem HB Duct Ready +RheemHBDR4565,65 gallon, 4500 W resistance Rheem HB Duct Ready +RheemHBDR2280,80 gallon, 2250 W resistance Rheem HB Duct Ready +RheemHBDR4580,80 gallon, 4500 W resistance Rheem HB Duct Ready +Rheem2020Prem40,40 gallon, Rheem 2020 Premium +Rheem2020Prem50,50 gallon, Rheem 2020 Premium +Rheem2020Prem65,65 gallon, Rheem 2020 Premium +Rheem2020Prem80,80 gallon, Rheem 2020 Premium +Rheem2020Build40,40 gallon, Rheem 2020 Builder +Rheem2020Build50,50 gallon, Rheem 2020 Builder +Rheem2020Build65,65 gallon, Rheem 2020 Builder +Rheem2020Build80,80 gallon, Rheem 2020 Builder +RheemPlugInShared40,40 gal Rheem plug-in 120V shared circuit (no resistance elements) +RheemPlugInShared50,50 gal Rheem plug-in 120V shared circuit (no resistance elements) +RheemPlugInShared65,65 gal Rheem plug-in 120V shared circuit (no resistance elements) +RheemPlugInShared80,80 gal Rheem plug-in 120V shared circuit (no resistance elements) +RheemPlugInDedicated40,40 gal Rheem plug-in 120V dedicated circuit (no resistance elements) +RheemPlugInDedicated50,50 gal Rheem plug-in 120V dedicated circuit (no resistance elements) +Stiebel220E,Stiebel Eltron (2014 model?) +AOSmithSHPT50,AOSmith add'l models (added 3-24-2017) +AOSmithSHPT66,AOSmith add'l models (added 3-24-2017) +AOSmithSHPT80,AOSmith add'l models (added 3-24-2017) +GenericTier1,Generic Tier 1 +GenericTier2,Generic Tier 2 +GenericTier3,Generic Tier 3 +Generic,General generic (parameterized by EF and vol) +UEF2Generic,Experimental UEF=2 +WorstCaseMedium,UEF2Generic alias (supports pre-existing test cases) +BasicIntegrated,Typical integrated HPWH +ResTank,Resistance heater (no compressor). Superceded by whHeatSrc=RESITANCEX +ResTankNoUA,Resistance heater (no compressor) with no tank losses. Superseded by whHeatSrc=RESISTANCEX. +AOSmithHPTU80DR,80 gallon AOSmith HPTU with fixed backup setpoint (experimental for demand response testing) +AOSmithSHPT50,50 gal AOSmith SHPT +AOSmithSHPT66,66 gal AOSmith SHPT +AOSmithSHPT80,80 gal AOSmith SHPT +AOSmithHPTS40,40 gal AOSmith HPTS +AOSmithHPTS50,50 gal AOSmith HPTS +AOSmithHPTS66,66 gal AOSmith HPTS +AOSmithHPTS80,80 gal AOSmith HPTS +ColmacCxV5_SP,Colmac CxA-xx modular external HPWHs (single pass mode) +ColmacCxA10_SP,Colmac CxA-xx modular external HPWHs (single pass mode) +ColmacCxA15_SP,Colmac CxA-xx modular external HPWHs (single pass mode) +ColmacCxA20_SP,Colmac CxA-xx modular external HPWHs (single pass mode) +ColmacCxA25_SP,Colmac CxA-xx modular external HPWHs (single pass mode) +ColmacCxA30_SP,Colmac CxA-xx modular external HPWHs (single pass mode) +ColmacCxV5_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) +ColmacCxA10_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) +ColmacCxA15_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) +ColmacCxA20_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) +ColmacCxA25_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) +ColmacCxA30_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) +NyleC25A_SP,Nyle Cxx external HPWHs (SP = single pass mode) +NyleC60A_SP,Nyle Cxx external HPWHs (SP = single pass mode) +NyleC90A_SP,Nyle Cxx external HPWHs (SP = single pass mode) +NyleC125A_SP,Nyle Cxx external HPWHs (SP = single pass mode) +NyleC185A_SP,Nyle Cxx external HPWHs (SP = single pass mode) +NyleC250A_SP,Nyle Cxx external HPWHs (SP = single pass mode) +NyleC60A_CWP_SP,Nyle Cxx external SP HPWHs with cold weather package +NyleC90A_CWP_SP,Nyle Cxx external SP HPWHs with cold weather package +NyleC125A_CWP_SP,Nyle Cxx external SP HPWHs with cold weather package +NyleC185A_CWP_SP,Nyle Cxx external SP HPWHs with cold weather package +NyleC250A_CWP_SP,Nyle Cxx external SP HPWHs with cold weather package +NyleC60A_MP,Nyle Cxx external HPWHs (MP = multi-pass mode) +NyleC90A_MP,Nyle Cxx external HPWHs (MP = multi-pass mode) +NyleC125A_MP,Nyle Cxx external HPWHs (MP = multi-pass mode) +NyleC185A_MP,Nyle Cxx external HPWHs (MP = multi-pass mode) +NyleC250A_MP,Nyle Cxx external HPWHs (MP = multi-pass mode) +NyleC60A_CWP_MP,Nyle Cxx external MP HPWHs w/ cold weather package +NyleC90A_CWP_MP,Nyle Cxx external MP HPWHs w/ cold weather package +NyleC125A_CWP_MP,Nyle Cxx external MP HPWHs w/ cold weather package +NyleC185A_CWP_MP,Nyle Cxx external MP HPWHs w/ cold weather package +NyleC250A_CWP_MP,Nyle Cxx external MP HPWHs w/ cold weather package +Rheem_HPHD60HNU_MP,Rheem HPHD60 MP external MP HPWHs +Rheem_HPHD60VNU_MP,Rheem HPHD60 MP external MP HPWHs +Rheem_HPHD135HNU_MP,Rheem HPHD135 MP external MP HPWHs +Rheem_HPHD135VNU_MP,Rheem HPHD135 MP external MP HPWHs +Scalable_SP,single pass scalable type for autosized standard design +Scalable_MP,multipass scalable type for autosized standard design +AquaThermAire,Villara AquaThermAire HPWH +GenericUEF217,65-gal tank meeting Federal standard minimum requirement +AWHSTier4Generic40,Any 40-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements +AWHSTier4Generic50,Any 50-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements +AWHSTier4Generic65,Any 65-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements +AWHSTier4Generic80,Any 80-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements +BradfordWhiteAeroThermRE2H50,Bradford White 50-gal AeroTherm2023 +BradfordWhiteAeroThermRE2H65,Bradford White 65-gal AeroTherm2023 +BradfordWhiteAeroThermRE2H80,Bradford White 80-gal AeroTherm2023 +LG_APHWC50,LG 50-gal integrated HPWH +LG_APHWC80,LG 580-gal integrated HPWH", True) +}} {{ member_table({ From f78c21de7d93f09cb598e073957907bc26009816 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 3 Mar 2025 12:58:22 -0700 Subject: [PATCH 019/117] Avoid adding sort buttons for tables with only two rows. --- doc/src/docs/assets/javascript/extra_js.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/src/docs/assets/javascript/extra_js.js b/doc/src/docs/assets/javascript/extra_js.js index fb6b2c6d1..06577d0cb 100644 --- a/doc/src/docs/assets/javascript/extra_js.js +++ b/doc/src/docs/assets/javascript/extra_js.js @@ -1,6 +1,11 @@ document$.subscribe(function () { var tables = document.querySelectorAll("article table:not([class])"); tables.forEach(function (table) { + // The only way to have only two rows is to have either: + // - a header with one row (no need for sorting) + // - no header with two rows (again, no need for soring, since header is hidden) + if (table.querySelectorAll('tr').length === 2) return; + new Tablesort(table); }); }); From bd1f46039c940f26e754adf790bac70de12a5726 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 3 Mar 2025 12:59:28 -0700 Subject: [PATCH 020/117] Add degree symbol for member tables with unit of F (should be degF). --- doc/src/docs/input-data/dhwsys.md | 2 +- doc/src/docs/input-data/top-members.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index 4db941516..6e143efab 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -402,7 +402,7 @@ Circulation loop return temperature for testing and validation. {{ member_table({ - "units": "F", + "units": "^o^F", "legal_range": "x $\\geq$ 0", "default": "0.0", "required": "No", diff --git a/doc/src/docs/input-data/top-members.md b/doc/src/docs/input-data/top-members.md index 28d13b7b7..a0d590761 100644 --- a/doc/src/docs/input-data/top-members.md +++ b/doc/src/docs/input-data/top-members.md @@ -942,7 +942,7 @@ Deep-ground temperature. Used when deepGrndCnd=WATERTABLE. {{ member_table({ - "units": "F", + "units": "^o^F", "legal_range": "*x* $>$ 0", "default": "Annual average drybulb temperature", "required": "No", From fbe973fd46af11a21f5669faf020dd67f13ff3c2 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 3 Mar 2025 13:56:28 -0700 Subject: [PATCH 021/117] Use csv_table instead of importing from a file. --- doc/src/docs/input-data/index.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/src/docs/input-data/index.md b/doc/src/docs/input-data/index.md index 9e4e21ade..1a5907556 100644 --- a/doc/src/docs/input-data/index.md +++ b/doc/src/docs/input-data/index.md @@ -32,4 +32,9 @@ Each member's description continues with a table of the form: where the column headers have the following meaning: -<%= csv_table_from_file("input-data--member-table-definition.csv", row_header: false) %> +{{ csv_table("**Units**,units of measure (lb., ft, Btu, etc.) where applicable +**Legal Range**,limits of valid range for numeric inputs; valid choices for *choice* members, etc. +**Default**,value assumed if member not given; applicable only if not required +**Required**,YES if you must give this member +**Variability**,how often the given expression can change: hourly, daily, etc. See sections on [expressions][expressions-overview], [statements][member-statements], and [variation frequencies][variation-frequencies-revisited]") +}} From cb15bbe931ffa401e88602c2d6afa0c335604447 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 3 Mar 2025 14:08:43 -0700 Subject: [PATCH 022/117] Add support for csv_table_from_file. --- .../assets/tables/input-data--member-table.csv | 2 -- doc/src/docs/input-data/index.md | 2 ++ doc/src/main.py | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) delete mode 100644 doc/src/docs/assets/tables/input-data--member-table.csv diff --git a/doc/src/docs/assets/tables/input-data--member-table.csv b/doc/src/docs/assets/tables/input-data--member-table.csv deleted file mode 100644 index 4c7038865..000000000 --- a/doc/src/docs/assets/tables/input-data--member-table.csv +++ /dev/null @@ -1,2 +0,0 @@ -units,legal_range,default,required,variability -"ft^2^","x > 0","wnHeight \\\* wnWidth","No","constant" \ No newline at end of file diff --git a/doc/src/docs/input-data/index.md b/doc/src/docs/input-data/index.md index 1a5907556..769995741 100644 --- a/doc/src/docs/input-data/index.md +++ b/doc/src/docs/input-data/index.md @@ -38,3 +38,5 @@ where the column headers have the following meaning: **Required**,YES if you must give this member **Variability**,how often the given expression can change: hourly, daily, etc. See sections on [expressions][expressions-overview], [statements][member-statements], and [variation frequencies][variation-frequencies-revisited]") }} + + diff --git a/doc/src/main.py b/doc/src/main.py index 8ff25190a..20d7ed6b9 100644 --- a/doc/src/main.py +++ b/doc/src/main.py @@ -1,3 +1,6 @@ +import os, sys + + def define_env(env): """ This is the hook for the variables, macros and filters. @@ -33,6 +36,21 @@ def csv_table(csv, header=False): # print(table) return table + @env.macro + def csv_table_from_file(file_path, header=False): + full_path = os.path.join(os.path.dirname(__file__), file_path) + csv_content = "" + + try: + with open(full_path, "r") as file: + csv_content = file.read() + except FileNotFoundError: + print(f"Error: File not found at path: {file_path}") + except Exception as e: + print(f"An error occurred: {e}") + + return csv_table(csv_content, header) + @env.macro def member_table(args): fallback = "—" From 01e78fb54d37df8b3517ce397b69a47bb9cbfd80 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 3 Mar 2025 14:14:53 -0700 Subject: [PATCH 023/117] Refactor main.py to use pathlib.Path instead of os.path. --- doc/src/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/main.py b/doc/src/main.py index 20d7ed6b9..ac186cbb6 100644 --- a/doc/src/main.py +++ b/doc/src/main.py @@ -1,4 +1,4 @@ -import os, sys +from pathlib import Path def define_env(env): @@ -38,7 +38,7 @@ def csv_table(csv, header=False): @env.macro def csv_table_from_file(file_path, header=False): - full_path = os.path.join(os.path.dirname(__file__), file_path) + full_path = Path(__file__).parent.resolve().joinpath(file_path) csv_content = "" try: From 36d70f0cc246b9476148b3b878183fb3d17d3609 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 3 Mar 2025 14:41:19 -0700 Subject: [PATCH 024/117] Remove backslashes that trigger deprecation warnings (address two of five: "\$" and "\ "). --- doc/src/docs/input-data/top-members.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/doc/src/docs/input-data/top-members.md b/doc/src/docs/input-data/top-members.md index a0d590761..cebf1dee9 100644 --- a/doc/src/docs/input-data/top-members.md +++ b/doc/src/docs/input-data/top-members.md @@ -57,7 +57,7 @@ Note that "warm-up" days (see wuDays) occur before the start day specified by be {{ member_table({ "units": "", - "legal_range": "SUN,\\ MON,\\ TUE,\\ WED,\\ THU,\\ FRI,\\ SAT", + "legal_range": "SUN, MON, TUE, WED, THU, FRI, SAT", "default": "THU", "required": "No", "variability": "constant" @@ -581,13 +581,13 @@ ASHWAT convection coefficient change threshold -- full calculation is triggered The following system variables (4.6.4) are determined from the weather file for each simulated hour: -{{ csv_table("\$radBeam, beam irradiance on tracking surface (integral for hour, Btu/ft^2^). -\$radDiff, diffuse irradiance on a horizontal surface (integral for hour, Btu/ft^2^). -\$tDbO, dry bulb temp (^o^F). -\$tWbO, wet bulb temp (^o^F). -\$wO, humidity ratio -\$windDirDeg, wind direction (degrees, NOT RADIANS; 0=N, 90=E). -\$windSpeed, wind speed (mph).") +{{ csv_table("$radBeam, beam irradiance on tracking surface (integral for hour, Btu/ft^2^). +$radDiff, diffuse irradiance on a horizontal surface (integral for hour, Btu/ft^2^). +$tDbO, dry bulb temp (^o^F). +$tWbO, wet bulb temp (^o^F). +$wO, humidity ratio +$windDirDeg, wind direction (degrees, NOT RADIANS; 0=N, 90=E). +$windSpeed, wind speed (mph).") }} The following are the terms determined from the weather file for internal use, and can be referenced with the probes shown. @@ -962,7 +962,7 @@ The format of a TDV file is the same as an [IMPORTFILE][importfile] with the pro 1, TDV Data (TDV/Btu), *runNumber*, *runNumber* is not checked 2, *timestamp* optionally in quotes accessible via @TOP.TDVFileTimeStamp 3, *title*, hour *title* (in quotes if it contains commas) accessible via @TOP.TDVFileTitle -4, tdvElec, tdvFuel comma separated column names (optionally in quotes)\ not checked +4, tdvElec, tdvFuel comma separated column names (optionally in quotes) not checked 5 .., *valElec*,*valFuel* comma separated numerical values (8760 or 8784 rows) tdvElec is always in column 1, tdvFuel always in column 2 column names in row 4 do not determine order", True) }} From db37d660880b837cd308ce5821951e032111e17b Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 3 Mar 2025 16:00:58 -0700 Subject: [PATCH 025/117] Update dependencies. --- doc/pyproject.toml | 6 +- doc/uv.lock | 278 +++++---------------------------------------- 2 files changed, 31 insertions(+), 253 deletions(-) diff --git a/doc/pyproject.toml b/doc/pyproject.toml index 046a59194..74afeab4e 100644 --- a/doc/pyproject.toml +++ b/doc/pyproject.toml @@ -9,14 +9,16 @@ keywords = ["cse", "energy-modeling", "simulation", "documentation"] requires-python = ">=3.12" dependencies = [ "mkdocs-material", - "mkdocs-table-reader-plugin", "mkdocs-autorefs>=1.3.1", "mkdocs-macros-plugin>=1.3.7", ] [tool.uv] -dev-dependencies = ["pytest >= 7.1.3", "doit", "pylint", "black"] +dev-dependencies = [ + "doit", + "ruff>=0.9.9", +] [tool.mypy] disallow_incomplete_defs = true diff --git a/doc/uv.lock b/doc/uv.lock index 25b1c998b..7b21e84ab 100644 --- a/doc/uv.lock +++ b/doc/uv.lock @@ -1,15 +1,6 @@ version = 1 requires-python = ">=3.12" -[[package]] -name = "astroid" -version = "3.3.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/80/c5/5c83c48bbf547f3dd8b587529db7cf5a265a3368b33e85e76af8ff6061d3/astroid-3.3.8.tar.gz", hash = "sha256:a88c7994f914a4ea8572fac479459f4955eeccc877be3f2d959a33273b0cf40b", size = 398196 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/28/0bc8a17d6cd4cc3c79ae41b7105a2b9a327c110e5ddd37a8a27b29a5c8a2/astroid-3.3.8-py3-none-any.whl", hash = "sha256:187ccc0c248bfbba564826c26f070494f7bc964fd286b6d9fff4420e55de828c", size = 275153 }, -] - [[package]] name = "babel" version = "2.17.0" @@ -19,30 +10,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, ] -[[package]] -name = "black" -version = "25.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "mypy-extensions" }, - { name = "packaging" }, - { name = "pathspec" }, - { name = "platformdirs" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988 }, - { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985 }, - { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816 }, - { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860 }, - { url = "https://files.pythonhosted.org/packages/98/87/0edf98916640efa5d0696e1abb0a8357b52e69e82322628f25bf14d263d1/black-25.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8f0b18a02996a836cc9c9c78e5babec10930862827b1b724ddfe98ccf2f2fe4f", size = 1650673 }, - { url = "https://files.pythonhosted.org/packages/52/e5/f7bf17207cf87fa6e9b676576749c6b6ed0d70f179a3d812c997870291c3/black-25.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:afebb7098bfbc70037a053b91ae8437c3857482d3a690fefc03e9ff7aa9a5fd3", size = 1453190 }, - { url = "https://files.pythonhosted.org/packages/e3/ee/adda3d46d4a9120772fae6de454c8495603c37c4c3b9c60f25b1ab6401fe/black-25.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:030b9759066a4ee5e5aca28c3c77f9c64789cdd4de8ac1df642c40b708be6171", size = 1782926 }, - { url = "https://files.pythonhosted.org/packages/cc/64/94eb5f45dcb997d2082f097a3944cfc7fe87e071907f677e80788a2d7b7a/black-25.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:a22f402b410566e2d1c950708c77ebf5ebd5d0d88a6a2e87c86d9fb48afa0d18", size = 1442613 }, - { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646 }, -] - [[package]] name = "certifi" version = "2025.1.31" @@ -125,15 +92,12 @@ dependencies = [ { name = "mkdocs-autorefs" }, { name = "mkdocs-macros-plugin" }, { name = "mkdocs-material" }, - { name = "mkdocs-table-reader-plugin" }, ] [package.dev-dependencies] dev = [ - { name = "black" }, { name = "doit" }, - { name = "pylint" }, - { name = "pytest" }, + { name = "ruff" }, ] [package.metadata] @@ -141,24 +105,12 @@ requires-dist = [ { name = "mkdocs-autorefs", specifier = ">=1.3.1" }, { name = "mkdocs-macros-plugin", specifier = ">=1.3.7" }, { name = "mkdocs-material" }, - { name = "mkdocs-table-reader-plugin" }, ] [package.metadata.requires-dev] dev = [ - { name = "black" }, { name = "doit" }, - { name = "pylint" }, - { name = "pytest", specifier = ">=7.1.3" }, -] - -[[package]] -name = "dill" -version = "0.3.9" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/70/43/86fe3f9e130c4137b0f1b50784dd70a5087b911fe07fa81e53e0c4c47fea/dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c", size = 187000 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/46/d1/e73b6ad76f0b1fb7f23c35c6d95dbc506a9c8804f43dda8cb5b0fa6331fd/dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a", size = 119418 }, + { name = "ruff", specifier = ">=0.9.9" }, ] [[package]] @@ -216,24 +168,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/79/9d/0fb148dc4d6fa4a7dd1d8378168d9b4cd8d4560a6fbf6f0121c5fc34eb68/importlib_metadata-8.6.1-py3-none-any.whl", hash = "sha256:02a89390c1e15fdfdc0d7c6b25cb3e62650d0494005c97d6f148bf5b9787525e", size = 26971 }, ] -[[package]] -name = "iniconfig" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, -] - -[[package]] -name = "isort" -version = "6.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1c/28/b382d1656ac0ee4cef4bf579b13f9c6c813bff8a5cb5996669592c8c75fa/isort-6.0.0.tar.gz", hash = "sha256:75d9d8a1438a9432a7d7b54f2d3b45cad9a4a0fdba43617d9873379704a8bdf1", size = 828356 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c7/d6017f09ae5b1206fbe531f7af3b6dac1f67aedcbd2e79f3b386c27955d6/isort-6.0.0-py3-none-any.whl", hash = "sha256:567954102bb47bb12e0fae62606570faacddd441e45683968c8d1734fb1af892", size = 94053 }, -] - [[package]] name = "jinja2" version = "3.1.5" @@ -293,15 +227,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, ] -[[package]] -name = "mccabe" -version = "0.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e7/ff/0ffefdcac38932a54d2b5eed4e0ba8a408f215002cd178ad1df0f2806ff8/mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325", size = 9658 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e", size = 7350 }, -] - [[package]] name = "mergedeep" version = "1.3.4" @@ -414,68 +339,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, ] -[[package]] -name = "mkdocs-table-reader-plugin" -version = "3.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mkdocs" }, - { name = "pandas" }, - { name = "pyyaml" }, - { name = "tabulate" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a1/1b/ca35e4b51a1814924153f7c8afa5a9c2f961688a9c275fa9f4afe7f5083a/mkdocs_table_reader_plugin-3.1.0.tar.gz", hash = "sha256:eb15688ee8c0cd1a842f506f18973b87be22bd7baa5e2e551089de6b7f9ec25b", size = 12510 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/6f/dcc966874f74f8580b99d2ffecbdc85dfd00c4a5039fedbee4ddd7fc8c7f/mkdocs_table_reader_plugin-3.1.0-py3-none-any.whl", hash = "sha256:50a1302661c14d96b90ba0434ae96110441e0c653ce23559e3c6911fe79e7bd2", size = 10564 }, -] - -[[package]] -name = "mypy-extensions" -version = "1.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, -] - -[[package]] -name = "numpy" -version = "2.2.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/d0/c12ddfd3a02274be06ffc71f3efc6d0e457b0409c4481596881e748cb264/numpy-2.2.2.tar.gz", hash = "sha256:ed6906f61834d687738d25988ae117683705636936cc605be0bb208b23df4d8f", size = 20233295 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/e6/847d15770ab7a01e807bdfcd4ead5bdae57c0092b7dc83878171b6af97bb/numpy-2.2.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ac9bea18d6d58a995fac1b2cb4488e17eceeac413af014b1dd26170b766d8467", size = 20912636 }, - { url = "https://files.pythonhosted.org/packages/d1/af/f83580891577b13bd7e261416120e036d0d8fb508c8a43a73e38928b794b/numpy-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23ae9f0c2d889b7b2d88a3791f6c09e2ef827c2446f1c4a3e3e76328ee4afd9a", size = 14098403 }, - { url = "https://files.pythonhosted.org/packages/2b/86/d019fb60a9d0f1d4cf04b014fe88a9135090adfadcc31c1fadbb071d7fa7/numpy-2.2.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3074634ea4d6df66be04f6728ee1d173cfded75d002c75fac79503a880bf3825", size = 5128938 }, - { url = "https://files.pythonhosted.org/packages/7a/1b/50985edb6f1ec495a1c36452e860476f5b7ecdc3fc59ea89ccad3c4926c5/numpy-2.2.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8ec0636d3f7d68520afc6ac2dc4b8341ddb725039de042faf0e311599f54eb37", size = 6661937 }, - { url = "https://files.pythonhosted.org/packages/f4/1b/17efd94cad1b9d605c3f8907fb06bcffc4ce4d1d14d46b95316cccccf2b9/numpy-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ffbb1acd69fdf8e89dd60ef6182ca90a743620957afb7066385a7bbe88dc748", size = 14049518 }, - { url = "https://files.pythonhosted.org/packages/5b/73/65d2f0b698df1731e851e3295eb29a5ab8aa06f763f7e4188647a809578d/numpy-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0349b025e15ea9d05c3d63f9657707a4e1d471128a3b1d876c095f328f8ff7f0", size = 16099146 }, - { url = "https://files.pythonhosted.org/packages/d5/69/308f55c0e19d4b5057b5df286c5433822e3c8039ede06d4051d96f1c2c4e/numpy-2.2.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:463247edcee4a5537841d5350bc87fe8e92d7dd0e8c71c995d2c6eecb8208278", size = 15246336 }, - { url = "https://files.pythonhosted.org/packages/f0/d8/d8d333ad0d8518d077a21aeea7b7c826eff766a2b1ce1194dea95ca0bacf/numpy-2.2.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9dd47ff0cb2a656ad69c38da850df3454da88ee9a6fde0ba79acceee0e79daba", size = 17863507 }, - { url = "https://files.pythonhosted.org/packages/82/6e/0b84ad3103ffc16d6673e63b5acbe7901b2af96c2837174c6318c98e27ab/numpy-2.2.2-cp312-cp312-win32.whl", hash = "sha256:4525b88c11906d5ab1b0ec1f290996c0020dd318af8b49acaa46f198b1ffc283", size = 6276491 }, - { url = "https://files.pythonhosted.org/packages/fc/84/7f801a42a67b9772a883223a0a1e12069a14626c81a732bd70aac57aebc1/numpy-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:5acea83b801e98541619af398cc0109ff48016955cc0818f478ee9ef1c5c3dcb", size = 12616372 }, - { url = "https://files.pythonhosted.org/packages/e1/fe/df5624001f4f5c3e0b78e9017bfab7fdc18a8d3b3d3161da3d64924dd659/numpy-2.2.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b208cfd4f5fe34e1535c08983a1a6803fdbc7a1e86cf13dd0c61de0b51a0aadc", size = 20899188 }, - { url = "https://files.pythonhosted.org/packages/a9/80/d349c3b5ed66bd3cb0214be60c27e32b90a506946857b866838adbe84040/numpy-2.2.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d0bbe7dd86dca64854f4b6ce2ea5c60b51e36dfd597300057cf473d3615f2369", size = 14113972 }, - { url = "https://files.pythonhosted.org/packages/9d/50/949ec9cbb28c4b751edfa64503f0913cbfa8d795b4a251e7980f13a8a655/numpy-2.2.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:22ea3bb552ade325530e72a0c557cdf2dea8914d3a5e1fecf58fa5dbcc6f43cd", size = 5114294 }, - { url = "https://files.pythonhosted.org/packages/8d/f3/399c15629d5a0c68ef2aa7621d430b2be22034f01dd7f3c65a9c9666c445/numpy-2.2.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:128c41c085cab8a85dc29e66ed88c05613dccf6bc28b3866cd16050a2f5448be", size = 6648426 }, - { url = "https://files.pythonhosted.org/packages/2c/03/c72474c13772e30e1bc2e558cdffd9123c7872b731263d5648b5c49dd459/numpy-2.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:250c16b277e3b809ac20d1f590716597481061b514223c7badb7a0f9993c7f84", size = 14045990 }, - { url = "https://files.pythonhosted.org/packages/83/9c/96a9ab62274ffafb023f8ee08c88d3d31ee74ca58869f859db6845494fa6/numpy-2.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0c8854b09bc4de7b041148d8550d3bd712b5c21ff6a8ed308085f190235d7ff", size = 16096614 }, - { url = "https://files.pythonhosted.org/packages/d5/34/cd0a735534c29bec7093544b3a509febc9b0df77718a9b41ffb0809c9f46/numpy-2.2.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b6fb9c32a91ec32a689ec6410def76443e3c750e7cfc3fb2206b985ffb2b85f0", size = 15242123 }, - { url = "https://files.pythonhosted.org/packages/5e/6d/541717a554a8f56fa75e91886d9b79ade2e595918690eb5d0d3dbd3accb9/numpy-2.2.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:57b4012e04cc12b78590a334907e01b3a85efb2107df2b8733ff1ed05fce71de", size = 17859160 }, - { url = "https://files.pythonhosted.org/packages/b9/a5/fbf1f2b54adab31510728edd06a05c1b30839f37cf8c9747cb85831aaf1b/numpy-2.2.2-cp313-cp313-win32.whl", hash = "sha256:4dbd80e453bd34bd003b16bd802fac70ad76bd463f81f0c518d1245b1c55e3d9", size = 6273337 }, - { url = "https://files.pythonhosted.org/packages/56/e5/01106b9291ef1d680f82bc47d0c5b5e26dfed15b0754928e8f856c82c881/numpy-2.2.2-cp313-cp313-win_amd64.whl", hash = "sha256:5a8c863ceacae696aff37d1fd636121f1a512117652e5dfb86031c8d84836369", size = 12609010 }, - { url = "https://files.pythonhosted.org/packages/9f/30/f23d9876de0f08dceb707c4dcf7f8dd7588266745029debb12a3cdd40be6/numpy-2.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b3482cb7b3325faa5f6bc179649406058253d91ceda359c104dac0ad320e1391", size = 20924451 }, - { url = "https://files.pythonhosted.org/packages/6a/ec/6ea85b2da9d5dfa1dbb4cb3c76587fc8ddcae580cb1262303ab21c0926c4/numpy-2.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9491100aba630910489c1d0158034e1c9a6546f0b1340f716d522dc103788e39", size = 14122390 }, - { url = "https://files.pythonhosted.org/packages/68/05/bfbdf490414a7dbaf65b10c78bc243f312c4553234b6d91c94eb7c4b53c2/numpy-2.2.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:41184c416143defa34cc8eb9d070b0a5ba4f13a0fa96a709e20584638254b317", size = 5156590 }, - { url = "https://files.pythonhosted.org/packages/f7/ec/fe2e91b2642b9d6544518388a441bcd65c904cea38d9ff998e2e8ebf808e/numpy-2.2.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:7dca87ca328f5ea7dafc907c5ec100d187911f94825f8700caac0b3f4c384b49", size = 6671958 }, - { url = "https://files.pythonhosted.org/packages/b1/6f/6531a78e182f194d33ee17e59d67d03d0d5a1ce7f6be7343787828d1bd4a/numpy-2.2.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bc61b307655d1a7f9f4b043628b9f2b721e80839914ede634e3d485913e1fb2", size = 14019950 }, - { url = "https://files.pythonhosted.org/packages/e1/fb/13c58591d0b6294a08cc40fcc6b9552d239d773d520858ae27f39997f2ae/numpy-2.2.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fad446ad0bc886855ddf5909cbf8cb5d0faa637aaa6277fb4b19ade134ab3c7", size = 16079759 }, - { url = "https://files.pythonhosted.org/packages/2c/f2/f2f8edd62abb4b289f65a7f6d1f3650273af00b91b7267a2431be7f1aec6/numpy-2.2.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:149d1113ac15005652e8d0d3f6fd599360e1a708a4f98e43c9c77834a28238cb", size = 15226139 }, - { url = "https://files.pythonhosted.org/packages/aa/29/14a177f1a90b8ad8a592ca32124ac06af5eff32889874e53a308f850290f/numpy-2.2.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:106397dbbb1896f99e044efc90360d098b3335060375c26aa89c0d8a97c5f648", size = 17856316 }, - { url = "https://files.pythonhosted.org/packages/95/03/242ae8d7b97f4e0e4ab8dd51231465fb23ed5e802680d629149722e3faf1/numpy-2.2.2-cp313-cp313t-win32.whl", hash = "sha256:0eec19f8af947a61e968d5429f0bd92fec46d92b0008d0a6685b40d6adf8a4f4", size = 6329134 }, - { url = "https://files.pythonhosted.org/packages/80/94/cd9e9b04012c015cb6320ab3bf43bc615e248dddfeb163728e800a5d96f0/numpy-2.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:97b974d3ba0fb4612b77ed35d7627490e8e3dff56ab41454d9e8b23448940576", size = 12696208 }, -] - [[package]] name = "packaging" version = "24.2" @@ -494,40 +357,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, ] -[[package]] -name = "pandas" -version = "2.2.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, - { name = "python-dateutil" }, - { name = "pytz" }, - { name = "tzdata" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9c/d6/9f8431bacc2e19dca897724cd097b1bb224a6ad5433784a44b587c7c13af/pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667", size = 4399213 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/17/a3/fb2734118db0af37ea7433f57f722c0a56687e14b14690edff0cdb4b7e58/pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9", size = 12529893 }, - { url = "https://files.pythonhosted.org/packages/e1/0c/ad295fd74bfac85358fd579e271cded3ac969de81f62dd0142c426b9da91/pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4", size = 11363475 }, - { url = "https://files.pythonhosted.org/packages/c6/2a/4bba3f03f7d07207481fed47f5b35f556c7441acddc368ec43d6643c5777/pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3", size = 15188645 }, - { url = "https://files.pythonhosted.org/packages/38/f8/d8fddee9ed0d0c0f4a2132c1dfcf0e3e53265055da8df952a53e7eaf178c/pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319", size = 12739445 }, - { url = "https://files.pythonhosted.org/packages/20/e8/45a05d9c39d2cea61ab175dbe6a2de1d05b679e8de2011da4ee190d7e748/pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8", size = 16359235 }, - { url = "https://files.pythonhosted.org/packages/1d/99/617d07a6a5e429ff90c90da64d428516605a1ec7d7bea494235e1c3882de/pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a", size = 14056756 }, - { url = "https://files.pythonhosted.org/packages/29/d4/1244ab8edf173a10fd601f7e13b9566c1b525c4f365d6bee918e68381889/pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13", size = 11504248 }, - { url = "https://files.pythonhosted.org/packages/64/22/3b8f4e0ed70644e85cfdcd57454686b9057c6c38d2f74fe4b8bc2527214a/pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015", size = 12477643 }, - { url = "https://files.pythonhosted.org/packages/e4/93/b3f5d1838500e22c8d793625da672f3eec046b1a99257666c94446969282/pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28", size = 11281573 }, - { url = "https://files.pythonhosted.org/packages/f5/94/6c79b07f0e5aab1dcfa35a75f4817f5c4f677931d4234afcd75f0e6a66ca/pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0", size = 15196085 }, - { url = "https://files.pythonhosted.org/packages/e8/31/aa8da88ca0eadbabd0a639788a6da13bb2ff6edbbb9f29aa786450a30a91/pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24", size = 12711809 }, - { url = "https://files.pythonhosted.org/packages/ee/7c/c6dbdb0cb2a4344cacfb8de1c5808ca885b2e4dcfde8008266608f9372af/pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659", size = 16356316 }, - { url = "https://files.pythonhosted.org/packages/57/b7/8b757e7d92023b832869fa8881a992696a0bfe2e26f72c9ae9f255988d42/pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb", size = 14022055 }, - { url = "https://files.pythonhosted.org/packages/3b/bc/4b18e2b8c002572c5a441a64826252ce5da2aa738855747247a971988043/pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d", size = 11481175 }, - { url = "https://files.pythonhosted.org/packages/76/a3/a5d88146815e972d40d19247b2c162e88213ef51c7c25993942c39dbf41d/pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468", size = 12615650 }, - { url = "https://files.pythonhosted.org/packages/9c/8c/f0fd18f6140ddafc0c24122c8a964e48294acc579d47def376fef12bcb4a/pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18", size = 11290177 }, - { url = "https://files.pythonhosted.org/packages/ed/f9/e995754eab9c0f14c6777401f7eece0943840b7a9fc932221c19d1abee9f/pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2", size = 14651526 }, - { url = "https://files.pythonhosted.org/packages/25/b0/98d6ae2e1abac4f35230aa756005e8654649d305df9a28b16b9ae4353bff/pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4", size = 11871013 }, - { url = "https://files.pythonhosted.org/packages/cc/57/0f72a10f9db6a4628744c8e8f0df4e6e21de01212c7c981d31e50ffc8328/pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d", size = 15711620 }, - { url = "https://files.pythonhosted.org/packages/ab/5f/b38085618b950b79d2d9164a711c52b10aefc0ae6833b96f626b7021b2ed/pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a", size = 13098436 }, -] - [[package]] name = "pathspec" version = "0.12.1" @@ -546,15 +375,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 }, ] -[[package]] -name = "pluggy" -version = "1.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, -] - [[package]] name = "pygments" version = "2.19.1" @@ -564,24 +384,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, ] -[[package]] -name = "pylint" -version = "3.3.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "astroid" }, - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "dill" }, - { name = "isort" }, - { name = "mccabe" }, - { name = "platformdirs" }, - { name = "tomlkit" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ab/b9/50be49afc91469f832c4bf12318ab4abe56ee9aa3700a89aad5359ad195f/pylint-3.3.4.tar.gz", hash = "sha256:74ae7a38b177e69a9b525d0794bd8183820bfa7eb68cc1bee6e8ed22a42be4ce", size = 1518905 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/8b/eef15df5f4e7aa393de31feb96ca9a3d6639669bd59d589d0685d5ef4e62/pylint-3.3.4-py3-none-any.whl", hash = "sha256:289e6a1eb27b453b08436478391a48cd53bb0efb824873f949e709350f3de018", size = 522280 }, -] - [[package]] name = "pymdown-extensions" version = "10.14.3" @@ -595,21 +397,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/eb/f5/b9e2a42aa8f9e34d52d66de87941ecd236570c7ed2e87775ed23bbe4e224/pymdown_extensions-10.14.3-py3-none-any.whl", hash = "sha256:05e0bee73d64b9c71a4ae17c72abc2f700e8bc8403755a00580b49a4e9f189e9", size = 264467 }, ] -[[package]] -name = "pytest" -version = "8.3.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "iniconfig" }, - { name = "packaging" }, - { name = "pluggy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", size = 1445919 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", size = 343083 }, -] - [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -622,15 +409,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, ] -[[package]] -name = "pytz" -version = "2025.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5f/57/df1c9157c8d5a05117e455d66fd7cf6dbc46974f832b1058ed4856785d8a/pytz-2025.1.tar.gz", hash = "sha256:c2db42be2a2518b28e65f9207c4d05e6ff547d1efa4086469ef855e4ab70178e", size = 319617 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/38/ac33370d784287baa1c3d538978b5e2ea064d4c1b93ffbd12826c190dd10/pytz-2025.1-py2.py3-none-any.whl", hash = "sha256:89dd22dca55b46eac6eda23b2d72721bf1bdfef212645d81513ef5d03038de57", size = 507930 }, -] - [[package]] name = "pyyaml" version = "6.0.2" @@ -722,6 +500,31 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, ] +[[package]] +name = "ruff" +version = "0.9.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/c3/418441a8170e8d53d05c0b9dad69760dbc7b8a12c10dbe6db1e1205d2377/ruff-0.9.9.tar.gz", hash = "sha256:0062ed13f22173e85f8f7056f9a24016e692efeea8704d1a5e8011b8aa850933", size = 3717448 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/c3/2c4afa9ba467555d074b146d9aed0633a56ccdb900839fb008295d037b89/ruff-0.9.9-py3-none-linux_armv6l.whl", hash = "sha256:628abb5ea10345e53dff55b167595a159d3e174d6720bf19761f5e467e68d367", size = 10027252 }, + { url = "https://files.pythonhosted.org/packages/33/d1/439e58487cf9eac26378332e25e7d5ade4b800ce1eec7dc2cfc9b0d7ca96/ruff-0.9.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b6cd1428e834b35d7493354723543b28cc11dc14d1ce19b685f6e68e07c05ec7", size = 10840721 }, + { url = "https://files.pythonhosted.org/packages/50/44/fead822c38281ba0122f1b76b460488a175a9bd48b130650a6fb6dbcbcf9/ruff-0.9.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5ee162652869120ad260670706f3cd36cd3f32b0c651f02b6da142652c54941d", size = 10161439 }, + { url = "https://files.pythonhosted.org/packages/11/ae/d404a2ab8e61ddf6342e09cc6b7f7846cce6b243e45c2007dbe0ca928a5d/ruff-0.9.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3aa0f6b75082c9be1ec5a1db78c6d4b02e2375c3068438241dc19c7c306cc61a", size = 10336264 }, + { url = "https://files.pythonhosted.org/packages/6a/4e/7c268aa7d84cd709fb6f046b8972313142cffb40dfff1d2515c5e6288d54/ruff-0.9.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:584cc66e89fb5f80f84b05133dd677a17cdd86901d6479712c96597a3f28e7fe", size = 9908774 }, + { url = "https://files.pythonhosted.org/packages/cc/26/c618a878367ef1b76270fd027ca93692657d3f6122b84ba48911ef5f2edc/ruff-0.9.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf3369325761a35aba75cd5c55ba1b5eb17d772f12ab168fbfac54be85cf18c", size = 11428127 }, + { url = "https://files.pythonhosted.org/packages/d7/9a/c5588a93d9bfed29f565baf193fe802fa676a0c837938137ea6cf0576d8c/ruff-0.9.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:3403a53a32a90ce929aa2f758542aca9234befa133e29f4933dcef28a24317be", size = 12133187 }, + { url = "https://files.pythonhosted.org/packages/3e/ff/e7980a7704a60905ed7e156a8d73f604c846d9bd87deda9cabfa6cba073a/ruff-0.9.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:18454e7fa4e4d72cffe28a37cf6a73cb2594f81ec9f4eca31a0aaa9ccdfb1590", size = 11602937 }, + { url = "https://files.pythonhosted.org/packages/24/78/3690444ad9e3cab5c11abe56554c35f005b51d1d118b429765249095269f/ruff-0.9.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fadfe2c88724c9617339f62319ed40dcdadadf2888d5afb88bf3adee7b35bfb", size = 13771698 }, + { url = "https://files.pythonhosted.org/packages/6e/bf/e477c2faf86abe3988e0b5fd22a7f3520e820b2ee335131aca2e16120038/ruff-0.9.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6df104d08c442a1aabcfd254279b8cc1e2cbf41a605aa3e26610ba1ec4acf0b0", size = 11249026 }, + { url = "https://files.pythonhosted.org/packages/f7/82/cdaffd59e5a8cb5b14c408c73d7a555a577cf6645faaf83e52fe99521715/ruff-0.9.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d7c62939daf5b2a15af48abbd23bea1efdd38c312d6e7c4cedf5a24e03207e17", size = 10220432 }, + { url = "https://files.pythonhosted.org/packages/fe/a4/2507d0026225efa5d4412b6e294dfe54725a78652a5c7e29e6bd0fc492f3/ruff-0.9.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:9494ba82a37a4b81b6a798076e4a3251c13243fc37967e998efe4cce58c8a8d1", size = 9874602 }, + { url = "https://files.pythonhosted.org/packages/d5/be/f3aab1813846b476c4bcffe052d232244979c3cd99d751c17afb530ca8e4/ruff-0.9.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:4efd7a96ed6d36ef011ae798bf794c5501a514be369296c672dab7921087fa57", size = 10851212 }, + { url = "https://files.pythonhosted.org/packages/8b/45/8e5fd559bea0d2f57c4e12bf197a2fade2fac465aa518284f157dfbca92b/ruff-0.9.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:ab90a7944c5a1296f3ecb08d1cbf8c2da34c7e68114b1271a431a3ad30cb660e", size = 11327490 }, + { url = "https://files.pythonhosted.org/packages/42/55/e6c90f13880aeef327746052907e7e930681f26a164fe130ddac28b08269/ruff-0.9.9-py3-none-win32.whl", hash = "sha256:6b4c376d929c25ecd6d87e182a230fa4377b8e5125a4ff52d506ee8c087153c1", size = 10227912 }, + { url = "https://files.pythonhosted.org/packages/35/b2/da925693cb82a1208aa34966c0f36cb222baca94e729dd22a587bc22d0f3/ruff-0.9.9-py3-none-win_amd64.whl", hash = "sha256:837982ea24091d4c1700ddb2f63b7070e5baec508e43b01de013dc7eff974ff1", size = 11355632 }, + { url = "https://files.pythonhosted.org/packages/31/d8/de873d1c1b020d668d8ec9855d390764cb90cf8f6486c0983da52be8b7b7/ruff-0.9.9-py3-none-win_arm64.whl", hash = "sha256:3ac78f127517209fe6d96ab00f3ba97cafe38718b23b1db3e96d8b2d39e37ddf", size = 10435860 }, +] + [[package]] name = "six" version = "1.17.0" @@ -743,15 +546,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/07/6d/58de58c521e7fb79bceb4da90d55250070bb4adfa3c870b82519a561c79d/super_collections-0.5.3-py3-none-any.whl", hash = "sha256:907d35b25dc4070910e8254bf2f5c928348af1cf8a1f1e8259e06c666e902cff", size = 8436 }, ] -[[package]] -name = "tabulate" -version = "0.9.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252 }, -] - [[package]] name = "termcolor" version = "2.5.0" @@ -761,24 +555,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7f/be/df630c387a0a054815d60be6a97eb4e8f17385d5d6fe660e1c02750062b4/termcolor-2.5.0-py3-none-any.whl", hash = "sha256:37b17b5fc1e604945c2642c872a3764b5d547a48009871aea3edd3afa180afb8", size = 7755 }, ] -[[package]] -name = "tomlkit" -version = "0.13.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b1/09/a439bec5888f00a54b8b9f05fa94d7f901d6735ef4e55dcec9bc37b5d8fa/tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79", size = 192885 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/b6/a447b5e4ec71e13871be01ba81f5dfc9d0af7e473da256ff46bc0e24026f/tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde", size = 37955 }, -] - -[[package]] -name = "tzdata" -version = "2025.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/0f/fa4723f22942480be4ca9527bbde8d43f6c3f2fe8412f00e7f5f6746bc8b/tzdata-2025.1.tar.gz", hash = "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694", size = 194950 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/dd/84f10e23edd882c6f968c21c2434fe67bd4a528967067515feca9e611e5e/tzdata-2025.1-py2.py3-none-any.whl", hash = "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639", size = 346762 }, -] - [[package]] name = "urllib3" version = "2.3.0" From 2fed8f7f5a8a51ac2230e17e18ea78212fc3837b Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 3 Mar 2025 16:01:42 -0700 Subject: [PATCH 026/117] Remove table-reader from mkdocs plugins. --- doc/src/mkdocs.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/src/mkdocs.yml b/doc/src/mkdocs.yml index 8054b4d68..ab247efbd 100644 --- a/doc/src/mkdocs.yml +++ b/doc/src/mkdocs.yml @@ -95,7 +95,6 @@ plugins: - macros: include_dir: shared - search - - table-reader markdown_extensions: - admonition - attr_list From 6d4a1ec0505803f5509e2938bb00c39c73f2bd09 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 4 Mar 2025 13:37:08 -0700 Subject: [PATCH 027/117] Remove unused f prefix. --- doc/src/main.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/doc/src/main.py b/doc/src/main.py index ac186cbb6..c75d23c77 100644 --- a/doc/src/main.py +++ b/doc/src/main.py @@ -22,7 +22,7 @@ def csv_table(csv, header=False): + " | ".join(header_row) + " |\n" + "| " - + " | ".join(f"------" for c in header_row) + + " | ".join("------" for _ in header_row) + " |\n" + ( "\n".join( @@ -69,10 +69,7 @@ def member_table(args): ) + " |\n" + "| " - + " | ".join( - f"------" - for c in ["Units", "Legal Range", "Default", "Required", "Variability"] - ) + + " | ".join("------" for _ in 5 * [""]) + " |\n" + "| " + " | ".join( From 3ad0801463c162143756bfc80d91975545843bdd Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 29 Apr 2025 15:59:22 -0600 Subject: [PATCH 028/117] Delete probe-1 junk file. --- doc/src/docs/probe-definitions/probe-1.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 doc/src/docs/probe-definitions/probe-1.md diff --git a/doc/src/docs/probe-definitions/probe-1.md b/doc/src/docs/probe-definitions/probe-1.md deleted file mode 100644 index e69de29bb..000000000 From 09b065f54fcb7c28dba4f1ee26bb8a769ae71334 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 29 Apr 2025 16:00:08 -0600 Subject: [PATCH 029/117] Add probe definition MD files, other than index.md to gitignore. We may decide to revert this in the future, depending on how/when we build the docs for deployment to gh-pages. --- doc/.gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/.gitignore b/doc/.gitignore index 13e7223c2..028663101 100644 --- a/doc/.gitignore +++ b/doc/.gitignore @@ -9,5 +9,9 @@ config.yaml __pycache__/ dist/ +**/probe-definitions/*.md +!**/probe-definitions/index.md + + From 9088778e6dc32dbd4e7bceb53a49a86b1d58d327 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 29 Apr 2025 16:04:09 -0600 Subject: [PATCH 030/117] Add awesome nav to plugins to extract nav properties from mkdocs.yml. --- doc/pyproject.toml | 1 + doc/src/docs/.nav.yml | 9 ++++ doc/src/docs/input-data/.nav.yml | 60 +++++++++++++++++++++ doc/src/docs/probe-definitions/.nav.yml | 4 ++ doc/src/mkdocs.yml | 69 +------------------------ 5 files changed, 75 insertions(+), 68 deletions(-) create mode 100644 doc/src/docs/.nav.yml create mode 100644 doc/src/docs/input-data/.nav.yml create mode 100644 doc/src/docs/probe-definitions/.nav.yml diff --git a/doc/pyproject.toml b/doc/pyproject.toml index 74afeab4e..a0a95eb1a 100644 --- a/doc/pyproject.toml +++ b/doc/pyproject.toml @@ -11,6 +11,7 @@ dependencies = [ "mkdocs-material", "mkdocs-autorefs>=1.3.1", "mkdocs-macros-plugin>=1.3.7", + "mkdocs-awesome-nav>=3.1.1", ] diff --git a/doc/src/docs/.nav.yml b/doc/src/docs/.nav.yml new file mode 100644 index 000000000..a68dc36ed --- /dev/null +++ b/doc/src/docs/.nav.yml @@ -0,0 +1,9 @@ +nav: +- introduction.md +- simple-tests.md +- operation.md +- input-structure.md +- input-data +- output-reports.md +- probe-definitions +not_in_nav: index.md diff --git a/doc/src/docs/input-data/.nav.yml b/doc/src/docs/input-data/.nav.yml new file mode 100644 index 000000000..b8da25d59 --- /dev/null +++ b/doc/src/docs/input-data/.nav.yml @@ -0,0 +1,60 @@ +title: Input Data +nav: + - index.md + - TOP Members: top-members.md + - HOLIDAY: holiday.md + - DESCOND: descond.md + - MATERIAL: material.md + - CONSTRUCTION: construction.md + - FOUNDATION: foundation.md + - FNDBLOCK: fndblock.md + - LAYER: layer.md + - GLAZETYPE: glazetype.md + - METER: meter.md + - DHWMETER: dhwmeter.md + - AFMETER: afmeter.md + - LOADMETER: loadmeter.md + - ZONE: zone.md + - GAIN: gain.md + - SURFACE: surface.md + - WINDOW: window.md + - SHADE: shade.md + - SGDIST: sgdist.md + - DOOR: door.md + - PERIMETER: perimeter.md + - TERMINAL: terminal.md + - IZXFER: izxfer.md + - DOAS: doas.md + - RSYS: rsys.md + - DUCTSEG: ductseg.md + - PERFORMANCEMAP: performancemap.md + - DHWDAYUSE: dhwdayuse.md + - DHWUSE: dhwuse.md + - DHWSYS: dhwsys.md + - DHWHEATER: dhwheater.md + - DHWLOOPHEATER: dhwloopheater.md + - DHWHEATREC: dhwheatrec.md + - DHWTANK: dhwtank.md + - DHWPUMP: dhwpump.md + - DHWLOOP: dhwloop.md + - DHWLOOPPUMP: dhwlooppump.md + - DHWLOOPSEG: dhwloopseg.md + - DHWLOOPBRANCH: dhwloopbranch.md + - DHWSOLARSYS: dhwsolarsys.md + - DHWSOLARCOLLECTOR: dhwsolarcollector.md + - PVARRAY: pvarray.md + - SHADEX: shadex.md + - BATTERY: battery.md + - AIRHANDLER: airhandler.md + - HEATPLANT: heatplant.md + - BOILER: boiler.md + - COOLPLANT: coolplant.md + - CHILLER: chiller.md + - TOWERPLANT: towerplant.md + - REPORTFILE: reportfile.md + - REPORT: report.md + - REPORTCOL: reportcol.md + - EXPORTFILE: exportfile.md + - EXPORT: export.md + - EXPORTCOL: exportcol.md + - IMPORTFILE: importfile.md \ No newline at end of file diff --git a/doc/src/docs/probe-definitions/.nav.yml b/doc/src/docs/probe-definitions/.nav.yml new file mode 100644 index 000000000..2ef67479d --- /dev/null +++ b/doc/src/docs/probe-definitions/.nav.yml @@ -0,0 +1,4 @@ +title: Probe Definitions +nav: + - index.md + - '*.md' \ No newline at end of file diff --git a/doc/src/mkdocs.yml b/doc/src/mkdocs.yml index ab247efbd..58f66897b 100644 --- a/doc/src/mkdocs.yml +++ b/doc/src/mkdocs.yml @@ -21,80 +21,13 @@ theme: # accent: blue repo_name: cse repo_url: https://github.com/cse-sim/cse -not_in_nav: index.md -nav: - - Introduction: introduction.md - - Operation: operation.md - - Input Structure: input-structure.md - - Input Data: - - input-data/index.md - - TOP Members: input-data/top-members.md - - HOLIDAY: input-data/holiday.md - - DESCOND: input-data/descond.md - - MATERIAL: input-data/material.md - - CONSTRUCTION: input-data/construction.md - - FOUNDATION: input-data/foundation.md - - FNDBLOCK: input-data/fndblock.md - - LAYER: input-data/layer.md - - GLAZETYPE: input-data/glazetype.md - - METER: input-data/meter.md - - DHWMETER: input-data/dhwmeter.md - - AFMETER: input-data/afmeter.md - - LOADMETER: input-data/loadmeter.md - - ZONE: input-data/zone.md - - GAIN: input-data/gain.md - - SURFACE: input-data/surface.md - - WINDOW: input-data/window.md - - SHADE: input-data/shade.md - - SGDIST: input-data/sgdist.md - - DOOR: input-data/door.md - - PERIMETER: input-data/perimeter.md - - TERMINAL: input-data/terminal.md - - IZXFER: input-data/izxfer.md - - DOAS: input-data/doas.md - - RSYS: input-data/rsys.md - - DUCTSEG: input-data/ductseg.md - - PERFORMANCEMAP: input-data/performancemap.md - - DHWDAYUSE: input-data/dhwdayuse.md - - DHWUSE: input-data/dhwuse.md - - DHWSYS: input-data/dhwsys.md - - DHWHEATER: input-data/dhwheater.md - - DHWLOOPHEATER: input-data/dhwloopheater.md - - DHWHEATREC: input-data/dhwheatrec.md - - DHWTANK: input-data/dhwtank.md - - DHWPUMP: input-data/dhwpump.md - - DHWLOOP: input-data/dhwloop.md - - DHWLOOPPUMP: input-data/dhwlooppump.md - - DHWLOOPSEG: input-data/dhwloopseg.md - - DHWLOOPBRANCH: input-data/dhwloopbranch.md - - DHWSOLARSYS: input-data/dhwsolarsys.md - - DHWSOLARCOLLECTOR: input-data/dhwsolarcollector.md - - PVARRAY: input-data/pvarray.md - - SHADEX: input-data/shadex.md - - BATTERY: input-data/battery.md - - AIRHANDLER: input-data/airhandler.md - - HEATPLANT: input-data/heatplant.md - - BOILER: input-data/boiler.md - - COOLPLANT: input-data/coolplant.md - - CHILLER: input-data/chiller.md - - TOWERPLANT: input-data/towerplant.md - - REPORTFILE: input-data/reportfile.md - - REPORT: input-data/report.md - - REPORTCOL: input-data/reportcol.md - - EXPORTFILE: input-data/exportfile.md - - EXPORT: input-data/export.md - - EXPORTCOL: input-data/exportcol.md - - IMPORTFILE: input-data/importfile.md - - Output Reports: output-reports.md - - Probe Definitions: - - probe-definitions/index.md - - Probe 1: probe-definitions/probe-1.md plugins: - autorefs: resolve_closest: true - macros: include_dir: shared - search + - awesome-nav markdown_extensions: - admonition - attr_list From 4b4790d59e6be19ef7ce21f89c4c8f90f40c4b6f Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Thu, 1 May 2025 11:44:35 -0600 Subject: [PATCH 031/117] Update bold headers to use actual md heading notation. Find: \n\*\*(\w+)\*\*\n Replace: \n### $1\n --- doc/src/docs/input-data/afmeter.md | 4 ++-- doc/src/docs/input-data/airhandler.md | 4 ++-- doc/src/docs/input-data/battery.md | 4 ++-- doc/src/docs/input-data/boiler.md | 4 ++-- doc/src/docs/input-data/chiller.md | 4 ++-- doc/src/docs/input-data/construction.md | 4 ++-- doc/src/docs/input-data/coolplant.md | 4 ++-- doc/src/docs/input-data/descond.md | 4 ++-- doc/src/docs/input-data/dhwdayuse.md | 4 ++-- doc/src/docs/input-data/dhwheatrec.md | 4 ++-- doc/src/docs/input-data/dhwloop.md | 4 ++-- doc/src/docs/input-data/dhwloopbranch.md | 4 ++-- doc/src/docs/input-data/dhwlooppump.md | 4 ++-- doc/src/docs/input-data/dhwloopseg.md | 4 ++-- doc/src/docs/input-data/dhwmeter.md | 4 ++-- doc/src/docs/input-data/dhwpump.md | 4 ++-- doc/src/docs/input-data/dhwsolarcollector.md | 4 ++-- doc/src/docs/input-data/dhwsolarsys.md | 4 ++-- doc/src/docs/input-data/dhwsys.md | 4 ++-- doc/src/docs/input-data/dhwtank.md | 4 ++-- doc/src/docs/input-data/dhwuse.md | 4 ++-- doc/src/docs/input-data/doas.md | 4 ++-- doc/src/docs/input-data/door.md | 4 ++-- doc/src/docs/input-data/ductseg.md | 4 ++-- doc/src/docs/input-data/export.md | 4 ++-- doc/src/docs/input-data/exportcol.md | 4 ++-- doc/src/docs/input-data/exportfile.md | 4 ++-- doc/src/docs/input-data/fndblock.md | 2 +- doc/src/docs/input-data/foundation.md | 4 ++-- doc/src/docs/input-data/gain.md | 4 ++-- doc/src/docs/input-data/glazetype.md | 4 ++-- doc/src/docs/input-data/heatplant.md | 4 ++-- doc/src/docs/input-data/holiday.md | 4 ++-- doc/src/docs/input-data/importfile.md | 4 ++-- doc/src/docs/input-data/izxfer.md | 4 ++-- doc/src/docs/input-data/layer.md | 4 ++-- doc/src/docs/input-data/loadmeter.md | 4 ++-- doc/src/docs/input-data/material.md | 4 ++-- doc/src/docs/input-data/meter.md | 4 ++-- doc/src/docs/input-data/performancemap.md | 10 +++++----- doc/src/docs/input-data/perimeter.md | 4 ++-- doc/src/docs/input-data/pvarray.md | 4 ++-- doc/src/docs/input-data/report.md | 4 ++-- doc/src/docs/input-data/reportcol.md | 4 ++-- doc/src/docs/input-data/reportfile.md | 4 ++-- doc/src/docs/input-data/rsys.md | 4 ++-- doc/src/docs/input-data/sgdist.md | 4 ++-- doc/src/docs/input-data/shade.md | 4 ++-- doc/src/docs/input-data/shadex.md | 4 ++-- doc/src/docs/input-data/surface.md | 4 ++-- doc/src/docs/input-data/terminal.md | 4 ++-- doc/src/docs/input-data/top-members.md | 2 +- doc/src/docs/input-data/towerplant.md | 4 ++-- doc/src/docs/input-data/window.md | 4 ++-- doc/src/docs/input-data/zone.md | 4 ++-- doc/src/extra/dhwsolartank.md | 2 +- doc/src/extra/inverse.md | 2 +- doc/src/shared/dhwheater-doc.md | 2 +- 58 files changed, 114 insertions(+), 114 deletions(-) diff --git a/doc/src/docs/input-data/afmeter.md b/doc/src/docs/input-data/afmeter.md index 7ff5377cd..07b8c5701 100644 --- a/doc/src/docs/input-data/afmeter.md +++ b/doc/src/docs/input-data/afmeter.md @@ -11,7 +11,7 @@ Note that *only* AirNet flows are recorded. AFMETER results can be REPORTed using rpType=AFMTR (or EXPORTed using exType=AFMTR). See [Air Flow Meter Report][air-flow-meter-report]. -**afMtrName** +### afMtrName Name of meter: required for assigning air flows to the AFMETER. @@ -25,7 +25,7 @@ Name of meter: required for assigning air flows to the AFMETER. }) }} -**endAFMeter** +### endAFMeter Indicates the end of the meter definition. Alternatively, the end of the meter definition can be indicated by the declaration of another object or by END. diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index e784de9e6..09901cea3 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -14,7 +14,7 @@ AIRHANDLER is designed primarily to model a central system that supplies hot or 3. The AIRHANDLER can supply hot air, cold air, or shut off according to the requirements of a single zone. This variation is invoked by giving _ahTsSp_ = ZN or ZN2, both described further below. -**ahName** +### ahName Name of air handler: give after the word AIRHANDLER. Required for reference in TERMINALs. @@ -2108,7 +2108,7 @@ METER to record crankcase heater energy use, category "Aux"; not recorded if not }) }} -**endAirHandler** +### endAirHandler Indicates the end of the air handler definition. Alternatively, the end of the air handler definition can be indicated by the declaration of another object. diff --git a/doc/src/docs/input-data/battery.md b/doc/src/docs/input-data/battery.md index aef3a5d2c..fcee47bd5 100644 --- a/doc/src/docs/input-data/battery.md +++ b/doc/src/docs/input-data/battery.md @@ -4,7 +4,7 @@ BATTERY describes input data for a model of an energy-storage system which is no The modeler can set limits and constraints on capacities and flows and the associated efficiencies for this model. -**btName** +### btName Name of the battery system. Given after the word BATTERY. @@ -184,7 +184,7 @@ The sign conventions here are tricky. min(@BATTERY[ 1].loadSeen, 0) produces a Former yes/no choice that currently has no effect. Deprecated, will be removed in a future version. -**endBATTERY** +### endBATTERY Optionally indicates the end of the BATTERY definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/boiler.md b/doc/src/docs/input-data/boiler.md index 19ea9eb2a..25eab0572 100644 --- a/doc/src/docs/input-data/boiler.md +++ b/doc/src/docs/input-data/boiler.md @@ -4,7 +4,7 @@ BOILERs are subObjects of HEATPLANTs (preceding Section 5.20). BOILERs supply he Each boiler has a pump. The pump operates whenever the boiler is in use; the pump generates heat in the water, which is added to the boiler's output. The pump heat is independent of load -- the model assumes a bypass valve keeps the water flow constant when the loads are using less than full flow -- except that the heat is assumed never to exceed the load. -**boilerName** +### boilerName Name of BOILER object, given immediately after the word BOILER. The name is used to refer to the boiler in heat plant stage commands. @@ -292,7 +292,7 @@ MTR for "auxOnAtall" }) }} -**endBoiler** +### endBoiler Optionally indicates the end of the boiler definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/chiller.md b/doc/src/docs/input-data/chiller.md index 6a041339e..2d5658d94 100644 --- a/doc/src/docs/input-data/chiller.md +++ b/doc/src/docs/input-data/chiller.md @@ -4,7 +4,7 @@ CHILLERs are subobjects of COOLPLANTs (Section 5.21). CHILLERs supply coldness, Each chiller has primary and secondary pumps that operate when the chiller is on. The pumps add heat to the primary and secondary loop water respectively; this heat is considered in the modeling of the loop's water temperature. -**chillerName** +### chillerName Name of CHILLER object, given immediately after the word CHILLER. This name is used to refer to the chiller in *cpStage* commands. @@ -426,7 +426,7 @@ The following four allow specification of meters to record chiller auxiliary ene }) }} -**endChiller** +### endChiller Optionally indicates the end of the CHILLER definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/construction.md b/doc/src/docs/input-data/construction.md index e1a2e2ed8..f54fe8989 100644 --- a/doc/src/docs/input-data/construction.md +++ b/doc/src/docs/input-data/construction.md @@ -2,7 +2,7 @@ CONSTRUCTION constructs an object of class CONSTRUCTION that represents a light weight or massive ceiling, wall, floor, or mass assembly (mass assemblies cannot, obviously, be lightweight). Once defined, CONSTRUCTIONs can be referenced from SURFACEs (below). A defined CONSTRUCTION need not be referenced. Each CONSTRUCTION is optionally followed by LAYERs, which define the constituent LAYERs of the construction. -**conName** +### conName Name of construction. Required for reference from SURFACE and DOOR objects, below. @@ -30,7 +30,7 @@ U-value for the construction (NOT including surface (air film) conductances; see }) }} -**endConstruction** +### endConstruction Optional to indicates the end of the CONSTRUCTION. Alternatively, the end of the CONSTRUCTION definition can be indicated by "END" or by beginning another object If END or endConstruction is used, it should follow the construction's LAYER subobjects, if any. diff --git a/doc/src/docs/input-data/coolplant.md b/doc/src/docs/input-data/coolplant.md index f14f6114b..1359578dd 100644 --- a/doc/src/docs/input-data/coolplant.md +++ b/doc/src/docs/input-data/coolplant.md @@ -10,7 +10,7 @@ The CHILLERs in the COOLPLANT can be grouped into *STAGES* of increasing capacit For each COOLPLANT, primary loop piping loss is modeled, as a heat gain equal to a constant fraction of the CHILLER capacity of the COOLPLANT's most powerful stage. This heat gain is added to the load whenever the plant is operating; as modeled, the heat gain is independent of load, weather, which stage is operating, or any other variables. No secondary loop piping loss is modeled. -**coolplantName** +### coolplantName Name of COOLPLANT object, given immediately after the word COOLPLANT. This name is used to refer to the coolPlant in *ahhcCoolplant* commands. @@ -109,7 +109,7 @@ A comma must be entered between chiller names and after the word ALL\_BUT. }) }} -**endCoolplant** +### endCoolplant Optionally indicates the end of the COOLPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/descond.md b/doc/src/docs/input-data/descond.md index 215a86071..c0f8e80ef 100644 --- a/doc/src/docs/input-data/descond.md +++ b/doc/src/docs/input-data/descond.md @@ -2,7 +2,7 @@ Specifies conditions for a cooling design day. When referenced in TOP coolDsCond (see [TOP Autosizing][top-autosizing]), DESCOND members are used to generate a 24 hour design day used during cooling autosizing. Note that coolDsCond can reference more than one DESCOND, allowing multiple design conditions to be used for autosizing. For example, both summer and fall days could be specified to ensure a range of sun angles are considered. Any DESCONDs that are not referenced in coolDsCond have no effect. -**desCondName** +### desCondName Object name, given after “DESCOND”. Required for referencing from Top coolDsCond. @@ -140,7 +140,7 @@ Solar noon direct beam and diffuse horizontal irradiance. Cannot be given if dcT }) }} -**endDesCond** +### endDesCond Optionally indicates the end of the descond definition. diff --git a/doc/src/docs/input-data/dhwdayuse.md b/doc/src/docs/input-data/dhwdayuse.md index 38c01f8e2..4da532d3c 100644 --- a/doc/src/docs/input-data/dhwdayuse.md +++ b/doc/src/docs/input-data/dhwdayuse.md @@ -48,7 +48,7 @@ Some DHWUSE configurations involve mixing to specified wuTemp. Hot and cold wat When more than one DHWSYS references the same DHWDAYUSE, DHWUSEs are allocated to DHWSYSs in wuEventID rotation. This procedure divides the water heating load approximately equally while retaining the peak demand of individual events. When detailed information is available about which loads are served by specific systems, separate DHWDAYUSEs should be given. -**dhwDayUseName** +### dhwDayUseName Object name, given after “DHWDAYUSE”. Required for referencing from DHWSYS. @@ -76,7 +76,7 @@ Scale factor applied to all draws in this DHWDAYUSE. }) }} -**endDHWDAYUSE** +### endDHWDAYUSE Indicates the end of the DHWDAYUSE definition. endDHWDAYUSE should follow all child DHWUSEs. Alternatively, the end of the meter definition can be indicated by the declaration of another object or by END. diff --git a/doc/src/docs/input-data/dhwheatrec.md b/doc/src/docs/input-data/dhwheatrec.md index 5d8df65c6..6dd218c3d 100644 --- a/doc/src/docs/input-data/dhwheatrec.md +++ b/doc/src/docs/input-data/dhwheatrec.md @@ -2,7 +2,7 @@ DHWHEATREC constructs an object representing one or more heat recovery devices in a DHWSYS. Drain water heat recovered by the device increases parent DHWSYS wsInlet temperature and/or fixture cold water feed temperature. This reduces water heating energy consumption. -**wrName** +### wrName Optional name of device; give after the word “DHWHEATREC” if desired. @@ -143,7 +143,7 @@ Drain-side inlet water temperature during warmup. During the warmup portion of }) }} -**endDHWHEATREC** +### endDHWHEATREC Optionally indicates the end of the DHWHEATREC definition. diff --git a/doc/src/docs/input-data/dhwloop.md b/doc/src/docs/input-data/dhwloop.md index 06ccf2cc0..eed95ef02 100644 --- a/doc/src/docs/input-data/dhwloop.md +++ b/doc/src/docs/input-data/dhwloop.md @@ -2,7 +2,7 @@ DHWLOOP constructs one or more objects representing a domestic hot water circulation loop. The actual pipe runs in the DHWLOOP are specified by any number of DHWLOOPSEGs (see below). Circulation pumps are specified by DHWLOOPPUMPs (also below). -**wlName** +### wlName Optional name of loop; give after the word “DHWLOOP” if desired. @@ -128,7 +128,7 @@ Name of METER object, if any, to which DHWLOOP electrical energy use is recorded }) }} -**endDHWLoop** +### endDHWLoop Optionally indicates the end of the DHWLOOP definition. diff --git a/doc/src/docs/input-data/dhwloopbranch.md b/doc/src/docs/input-data/dhwloopbranch.md index a6cdd05d4..c40683da9 100644 --- a/doc/src/docs/input-data/dhwloopbranch.md +++ b/doc/src/docs/input-data/dhwloopbranch.md @@ -2,7 +2,7 @@ DHWLOOPBRANCH constructs one or more objects representing a branch pipe from the preceding DHWLOOPSEG. A DHWLOOPSEG can have any number of DHWLOOPBRANCHs to represent pipe runs with differing sizes, insulation, or surrounding conditions. -**wbName** +### wbName Optional name of segment; give after the word “DHWLOOPBRANCH” if desired. @@ -206,7 +206,7 @@ Number of times during the hour when the branch volume is discarded. }) }} -**endDHWLOOPBRANCH** +### endDHWLOOPBRANCH Optionally indicates the end of the DHWLOOPBRANCH definition. diff --git a/doc/src/docs/input-data/dhwlooppump.md b/doc/src/docs/input-data/dhwlooppump.md index 46d5572d4..29d7a6c00 100644 --- a/doc/src/docs/input-data/dhwlooppump.md +++ b/doc/src/docs/input-data/dhwlooppump.md @@ -2,7 +2,7 @@ DHWLOOPPUMP constructs an object representing a pump serving part a DHWLOOP. The model is identical to DHWPUMP *except* that that the electricity use calculation reflects wlRunF of the parent DHWLOOP. -**wlpName** +### wlpName Optional name of pump; give after the word “DHWLOOPPUMP” if desired. @@ -72,7 +72,7 @@ Name of METER object, if any, to which DHWLOOPPUMP electrical energy use is reco }) }} -**endDHWLOOPPUMP** +### endDHWLOOPPUMP Optionally indicates the end of the DHWPUMP definition. diff --git a/doc/src/docs/input-data/dhwloopseg.md b/doc/src/docs/input-data/dhwloopseg.md index 02b6b1475..586526c6c 100644 --- a/doc/src/docs/input-data/dhwloopseg.md +++ b/doc/src/docs/input-data/dhwloopseg.md @@ -2,7 +2,7 @@ DHWLOOPSEG constructs one or more objects representing a segment of the preceeding DHWLOOP. A DHWLOOP can have any number of DHWLOOPSEGs to represent the segments of the loop with possibly differing sizes, insulation, or surrounding conditions. -**wgName** +### wgName Optional name of segment; give after the word “DHWLOOPSEG” if desired. @@ -132,7 +132,7 @@ Fraction of hour when no draw occurs. }) }} -**endDHWLoopSeg** +### endDHWLoopSeg Optionally indicates the end of the DHWLOOPSEG definition. diff --git a/doc/src/docs/input-data/dhwmeter.md b/doc/src/docs/input-data/dhwmeter.md index 734ad5f2b..e0e4cba52 100644 --- a/doc/src/docs/input-data/dhwmeter.md +++ b/doc/src/docs/input-data/dhwmeter.md @@ -15,7 +15,7 @@ DHWMETERs account for water use in the following pre-defined end uses. The abbr [DHWSYS][dhwsys] items wsWHhwMtr and wsFXhwMtr specify the DHWMETER(s) to which water consumption is accumulated. -**dhwMtrName** +### dhwMtrName Name of meter: required for assigning water uses to the DHWMETER. @@ -29,7 +29,7 @@ Name of meter: required for assigning water uses to the DHWMETER. }) }} -**endDhwMeter** +### endDhwMeter **Related Probes:** diff --git a/doc/src/docs/input-data/dhwpump.md b/doc/src/docs/input-data/dhwpump.md index c6ece9357..7d988eb28 100644 --- a/doc/src/docs/input-data/dhwpump.md +++ b/doc/src/docs/input-data/dhwpump.md @@ -2,7 +2,7 @@ DHWPUMP constructs an object representing a domestic hot water circulation pump (or more than one if identical). -**wpName** +### wpName Optional name of pump; give after the word “DHWPUMP” if desired. @@ -58,7 +58,7 @@ Name of METER object, if any, to which DHWPUMP electrical energy use is recorded }) }} -**endDHWPump** +### endDHWPump Optionally indicates the end of the DHWPUMP definition. diff --git a/doc/src/docs/input-data/dhwsolarcollector.md b/doc/src/docs/input-data/dhwsolarcollector.md index 15bb852cf..5b167d1df 100644 --- a/doc/src/docs/input-data/dhwsolarcollector.md +++ b/doc/src/docs/input-data/dhwsolarcollector.md @@ -18,7 +18,7 @@ Collector area. }) }} -**scMult** +### scMult Number of identical collectors, default 1 @@ -254,7 +254,7 @@ Temperature difference between the tank and collector outlet where pump turns of }) }} -**endDHWSOLARCOLLECTOR** +### endDHWSOLARCOLLECTOR Optionally indicates the end of the DHWSOLARCOLLECTOR definition. diff --git a/doc/src/docs/input-data/dhwsolarsys.md b/doc/src/docs/input-data/dhwsolarsys.md index 0eac29752..f4e76acd9 100644 --- a/doc/src/docs/input-data/dhwsolarsys.md +++ b/doc/src/docs/input-data/dhwsolarsys.md @@ -52,7 +52,7 @@ Density for the collector fluid. }) }} -**swEndUse** +### swEndUse End use of pump energy; defaults to "DHW". @@ -164,7 +164,7 @@ Surrounding temperature. }) }} -**endDHWSOLARSYS** +### endDHWSOLARSYS Optionally indicates the end of the DHWSOLARSYS definition. diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index 6e143efab..70622c58b 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -17,7 +17,7 @@ The parent-child structure of DHWSYS components is determined by input order. Fo Minimal modeling is included for physically realistic controls. For example, if several DHWHEATERs are included in a DHWSYS, an equal fraction of the required hot water is assumed to be produced by each heater, even if they are different types or sizes. Thus a DHWSYS is in some ways a collection of components as opposed to an explicitly connected system. This approach avoids requiring detailed input that would impose impractical user burden, especially in compliance applications. -**dhwsysName** +### dhwsysName Optional name of system; give after the word “DHWSYS” if desired. @@ -937,7 +937,7 @@ Name of DHWMETER object, if any, to which mixed hot water use (at fixture) quant }) }} -**endDHWSys** +### endDHWSys Optionally indicates the end of the DHWSYS definition. diff --git a/doc/src/docs/input-data/dhwtank.md b/doc/src/docs/input-data/dhwtank.md index 5e4b542fd..50436a0ce 100644 --- a/doc/src/docs/input-data/dhwtank.md +++ b/doc/src/docs/input-data/dhwtank.md @@ -2,7 +2,7 @@ DHWTANK constructs an object representing one or more unfired water storage tanks in a DHWSYS. DHWTANK heat losses contribute to the water heating load. -**wtName** +### wtName Optional name of tank; give after the word “DHWTANK” if desired. @@ -132,7 +132,7 @@ Additional tank heat loss. To duplicate CEC 2016 procedures, this value should b }) }} -**endDHWTank** +### endDHWTank Optionally indicates the end of the DHWTANK definition. diff --git a/doc/src/docs/input-data/dhwuse.md b/doc/src/docs/input-data/dhwuse.md index 61f072451..fb6ae3a3d 100644 --- a/doc/src/docs/input-data/dhwuse.md +++ b/doc/src/docs/input-data/dhwuse.md @@ -2,7 +2,7 @@ Defines a single hot water draw as part of a DHWDAYUSE. See discussion and examples under DHWDAYUSE. As noted there, most DHWUSE values have hourly variability, allowing flexible representation. -**wuName** +### wuName Optional name; give after the word “DHWUSE” if desired. @@ -137,7 +137,7 @@ User-defined identifier that associates multiple DHWUSEs with a single event or }) }} -**endDHWUSE** +### endDHWUSE Optionally indicates the end of the DHWUSE definition. diff --git a/doc/src/docs/input-data/doas.md b/doc/src/docs/input-data/doas.md index e7bd82e5a..519868ef4 100644 --- a/doc/src/docs/input-data/doas.md +++ b/doc/src/docs/input-data/doas.md @@ -3,7 +3,7 @@ DOAS (Dedicated Outdoor Air System) provides centralized supply and/or exhuast ventilation air to IZXFER objects with the **izNVType** = AIRNETDOAS. The supply air may be preconditioned using heat recovery and/or tempering coils. -**oaName** +### oaName Name of DOAS. @@ -592,7 +592,7 @@ Name of meter, if any, to record energy used by auxiliary components of the heat }) }} -**endDOAS** +### endDOAS Indicates the end of the DOAS definition. Alternatively, the end of the DOAS definition can be indicated by the declaration of another object or by "END". diff --git a/doc/src/docs/input-data/door.md b/doc/src/docs/input-data/door.md index 2f2779fb6..98d3c3c4f 100644 --- a/doc/src/docs/input-data/door.md +++ b/doc/src/docs/input-data/door.md @@ -2,7 +2,7 @@ DOOR constructs a subobject belonging to the current SURFACE. The azimuth, tilt, ground reflectivity and exterior conditions associated with the door are the same as those of the owning surface, although the exterior surface conductance and the exterior absorptivity can be altered. -**drName** +### drName Name of door. @@ -283,7 +283,7 @@ Interior convection coefficient adjustment factor. When drInHcModel=INPUT, hc=d }) }} -**endDoor** +### endDoor Indicates the end of the door definition. Alternatively, the end of the door definition can be indicated by the declaration of another object or by END. diff --git a/doc/src/docs/input-data/ductseg.md b/doc/src/docs/input-data/ductseg.md index 938ea3c9c..e42cd7a06 100644 --- a/doc/src/docs/input-data/ductseg.md +++ b/doc/src/docs/input-data/ductseg.md @@ -2,7 +2,7 @@ DUCTSEG defines a duct segment. Each RSYS has at most one return duct segment and at most one supply duct segment. That is, DUCTSEG input may be completely omitted to eliminate duct losses. -**dsName** +### dsName Optional name of duct segment; give after the word “DUCTSEG” if desired. @@ -260,7 +260,7 @@ Outside (exposed) surface convection coefficient. }) }} -**endDuctSeg** +### endDuctSeg Optionally indicates the end of the DUCTSEG definition. diff --git a/doc/src/docs/input-data/export.md b/doc/src/docs/input-data/export.md index 7799b1009..17f85eeaa 100644 --- a/doc/src/docs/input-data/export.md +++ b/doc/src/docs/input-data/export.md @@ -10,7 +10,7 @@ Depending on your application, if you specify multiple exports, you may need to Input for EXPORTs is similar to input for REPORTs; refer to the REPORT description in Section 5.25 for further discussion of the members shown here. -**exName** +### exName Name of export. Give after the word EXPORT. @@ -258,7 +258,7 @@ Use NO to suppress the blank line otherwise output as an export "footer". (Expor }) }} -**endExport** +### endExport Optionally indicates the end of the export definition. Alternatively, the end of the export definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/exportcol.md b/doc/src/docs/input-data/exportcol.md index eec38465c..d333f4634 100644 --- a/doc/src/docs/input-data/exportcol.md +++ b/doc/src/docs/input-data/exportcol.md @@ -6,7 +6,7 @@ Use as many EXPORTCOLs as there are values to be shown in each row of the user-d EXPORTCOL members are similar to the corresponding REPORTCOL members. See Section 5.265.1.5 for further discussion. -**colName** +### colName Name of EXPORTCOL. @@ -98,7 +98,7 @@ Specifies positioning of data within column: Right, Right justified") }} -**endExportCol** +### endExportCol Optionally indicates the end of the EXPORTCOL. Alternatively, the end of the definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/exportfile.md b/doc/src/docs/input-data/exportfile.md index 66244a4a7..3c888a1e1 100644 --- a/doc/src/docs/input-data/exportfile.md +++ b/doc/src/docs/input-data/exportfile.md @@ -6,7 +6,7 @@ EXPORTs contain the same information as reports, but formatted for reading by ot Input for EXPORTFILEs and EXPORTs is similar to that for REPORTFILEs and REPORTs, except that there is no page formatting. Refer to their preceding descriptions (Sections 5.24 and 5.25) for more additional discussion. -**xfName** +### xfName Name of EXPORTFILE object. @@ -55,7 +55,7 @@ If the specified file does not exist, it is created and *xfFileStat* has no effe }) }} -**endExportFile** +### endExportFile Optionally indicates the end of the export file definition. Alternatively, the end of the Export file definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/fndblock.md b/doc/src/docs/input-data/fndblock.md index 6e7f5029a..452e69296 100644 --- a/doc/src/docs/input-data/fndblock.md +++ b/doc/src/docs/input-data/fndblock.md @@ -168,7 +168,7 @@ The Z position of the second corner of the block relative to *fbZ2Ref*. }) }} -**endFndBlock** +### endFndBlock Indicates the end of the foundation block definition. Alternatively, the end of the foundation block definition can be indicated by the declaration of another object or by END. diff --git a/doc/src/docs/input-data/foundation.md b/doc/src/docs/input-data/foundation.md index 4da116dd1..a715c6c3a 100644 --- a/doc/src/docs/input-data/foundation.md +++ b/doc/src/docs/input-data/foundation.md @@ -40,7 +40,7 @@ The following data members describe the dimensions and properties of the foundat Other components of the foundation design (e.g., interior/exterior insulation) as well as other variations in thermal properties within the ground are defined using FNDBLOCK (foundation block) objects. Any number of FNDBLOCKs can appear after the definition of a FOUNDATION to be properly associated. -**fdName** +### fdName Name of foundation; give after the word FOUNDATION. Required for reference from SURFACE objects. @@ -97,7 +97,7 @@ Name of CONSTRUCTION of the footing wall. Only required **IF** it is a slab foun }) }} -**endFoundation** +### endFoundation Indicates the end of the foundation definition. Alternatively, the end of the foundation definition can be indicated by the declaration of another object or by END. diff --git a/doc/src/docs/input-data/gain.md b/doc/src/docs/input-data/gain.md index 042510571..d6c2642fb 100644 --- a/doc/src/docs/input-data/gain.md +++ b/doc/src/docs/input-data/gain.md @@ -15,7 +15,7 @@ In the CNE zone mode, the radiant internal gain is distributed to the surfaces i Radiant internal gains are included in the IgnS (Sensible Internal Gain) column in the zone energy balance reports. (They could easily be shown in a separate IgnR column if desired.) Any energy transfer shows two places in the ZEB report, with opposite signs, so that the result is zero -- otherwise it wouldn't be an energy balance. The rest of the reporting story for radiant internal gains turns out to be complex. The specified value of the radiant gain (gnPower \* gnFrZn \* gnFrRad) shows in the IgnS column. To the extent that the gain heats the zone, it also shows negatively in the Masses column, because the zone CAir is lumped with the other masses. To the extent that the gain heats massive surfaces, it also shows negatively in the masses column. To the extent that the gain conducts through windows and quick-model surfaces, it shows negatively in the Conduction column. If the gain conducts through a quick-model surface to another zone, it shows negatively in the Izone (Interzone) column, positively in the Izone column of the receiving zone, and negatively in the receiving zone's Masses or Cond column. -**gnName** +### gnName Name of gain; follows the word GAIN if given. @@ -236,7 +236,7 @@ Name of the DHWSYS end use consumption that modulates gnPower. See DHWMETER for }) }} -**endGain** +### endGain Optional to indicate the end of the GAIN definition. Alternatively, the end of the gain definition can be indicated by END or by the declaration of another object. diff --git a/doc/src/docs/input-data/glazetype.md b/doc/src/docs/input-data/glazetype.md index 5aaa30490..2e1303226 100644 --- a/doc/src/docs/input-data/glazetype.md +++ b/doc/src/docs/input-data/glazetype.md @@ -2,7 +2,7 @@ GLAZETYPE constructs an object of class GLAZETYPE that represents a glazing type for use in WINDOWs. -**gtName** +### gtName Name of glazetype. Required for reference from WINDOW objects, below. @@ -226,7 +226,7 @@ Glazing dirt loss factor. }) }} -**endGlazeType** +### endGlazeType Optional to indicates the end of the Glazetype. Alternatively, the end of the GLAZETYPE definition can be indicated by "END" or by beginning another object diff --git a/doc/src/docs/input-data/heatplant.md b/doc/src/docs/input-data/heatplant.md index 00674ce7e..f2b73e531 100644 --- a/doc/src/docs/input-data/heatplant.md +++ b/doc/src/docs/input-data/heatplant.md @@ -8,7 +8,7 @@ The BOILERs in the HEATPLANT can be grouped into *STAGES* of increasing capacity For each HEATPLANT, piping loss is modeled, as a constant fraction of the BOILER capacity of the heatPlant's most powerful stage. This heat loss is added to the load whenever the plant is operating; as modeled, the heat loss is independent of load, weather, or any other variables. -**heatplantName** +### heatplantName Name of HEATPLANT object, given immediately after the word HEATPLANT. This name is used to refer to the heatPlant in *tuhcHeatplant* and *ahhcHeatplant* commands. @@ -77,7 +77,7 @@ A comma must be entered between boiler names and after the word ALL\_BUT. }) }} -**endHeatplant** +### endHeatplant Optionally indicates the end of the HEATPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/holiday.md b/doc/src/docs/input-data/holiday.md index 81727fbc5..ef21ab80d 100644 --- a/doc/src/docs/input-data/holiday.md +++ b/doc/src/docs/input-data/holiday.md @@ -7,7 +7,7 @@ Examples and the list of default holidays are given after the member description -**hdName** +### hdName Name of holiday: must follow the word HOLIDAY. @@ -109,7 +109,7 @@ Day of the week that the holiday is observed. }) }} -**endHoliday** +### endHoliday Indicates the end of the holiday definition. Alternatively, the end of the holiday definition can be indicated by "END" or simply by beginning another object. diff --git a/doc/src/docs/input-data/importfile.md b/doc/src/docs/input-data/importfile.md index 1d96f6c31..8b70ce73b 100644 --- a/doc/src/docs/input-data/importfile.md +++ b/doc/src/docs/input-data/importfile.md @@ -51,7 +51,7 @@ Notes -**imName** +### imName Name of IMPORTFILE object (for reference from Import()). @@ -136,7 +136,7 @@ Adds the possibility to output the file as a binary option. }) }} -**endImportFile** +### endImportFile Optionally indicates the end of the import file definition. Alternatively, the end of the import file definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/izxfer.md b/doc/src/docs/input-data/izxfer.md index bcdcece4b..02cdbae0a 100644 --- a/doc/src/docs/input-data/izxfer.md +++ b/doc/src/docs/input-data/izxfer.md @@ -7,7 +7,7 @@ The AIRNET types are used in a multi-cell pressure balancing model that finds zo Note that fan-driven types assume pressure-independent flow. That is, the specified flow is included in the zone pressure balance but the modeled fan flow does not change with zone pressure. The assumption is that in realistic configurations, zone pressure will generally be close to ambient pressure. Unbalanced fan ventilation in a zone without relief area will result in runtime termination due to excessively high or low pressure. -**izName** +### izName Optional name of interzone transfer; give after the word "IZXFER" if desired. @@ -592,7 +592,7 @@ End use to which fan energy is recorded (in METER specified by izFanMtr). See M }) }} -**endIZXFER** +### endIZXFER Optionally indicates the end of the interzone transfer definition. diff --git a/doc/src/docs/input-data/layer.md b/doc/src/docs/input-data/layer.md index abaac896e..6e60abd0b 100644 --- a/doc/src/docs/input-data/layer.md +++ b/doc/src/docs/input-data/layer.md @@ -6,7 +6,7 @@ The layers should be specified in inside to outside order. -**shName** +### shName Name of shade; follows the word "SHADE" if given. @@ -201,7 +201,7 @@ Vertical distance from bottom of window to bottom of right fin. }) }} -**endShade** +### endShade Optional to indicate the end of the SHADE definition. Alternatively, the end of the shade definition can be indicated by END or the declaration of another object. diff --git a/doc/src/docs/input-data/shadex.md b/doc/src/docs/input-data/shadex.md index acfbc6cd0..46f7a6a96 100644 --- a/doc/src/docs/input-data/shadex.md +++ b/doc/src/docs/input-data/shadex.md @@ -2,7 +2,7 @@ SHADEX describes an object that shades other building surfaces using an advanced shading model. Advanced shading calculations are provided only for [PVARRAYs][pvarray]. Advanced shading must be enabled via [Top exShadeModel][top-model-control-items]. -**sxName** +### sxName Name of photovoltaic array. Give after the word SHADEX. @@ -52,7 +52,7 @@ For example, to specify a rectangular shade "tree" that is 10 x 40 ft, facing so }) }} -**endSHADEX** +### endSHADEX Optionally indicates the end of the SHADEX definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index de64e66d5..453b8b5b1 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -2,7 +2,7 @@ Surface constructs a ZONE subobject of class SURFACE that represents a surrounding or interior surface of the zone. Internally, SURFACE generates a QUICK surface (U-value only), a DELAYED (massive) surface (using the finite-difference mass model), interzone QUICK surface, or interzone DELAYED surface, as appropriate for the specified construction and exterior conditions. -**sfName** +### sfName Name of surface; give after the word SURFACE. @@ -524,7 +524,7 @@ Resistance overall construction resistance. TODO: full documentation. }) }} -**endSURFACE** +### endSURFACE Optional to indicates the end of the surface definition. Alternatively, the end of the surface definition can be indicated by END, or by beginning another SURFACE or other object definition. If used, should follow the definitions of the SURFACE's subobjects -- DOORs, WINDOWs, SHADEs, SGDISTs, etc. diff --git a/doc/src/docs/input-data/terminal.md b/doc/src/docs/input-data/terminal.md index 4e89dc8bb..a286acc56 100644 --- a/doc/src/docs/input-data/terminal.md +++ b/doc/src/docs/input-data/terminal.md @@ -10,7 +10,7 @@ Hourly variable expressions may be used as desired to schedule setpoints and flo ![Insert Figure Title](../assets/images/image1.png) -**tuName** +### tuName Optional name of terminal; follows the word "TERMINAL" if given. @@ -540,7 +540,7 @@ Name of meter, if any, which is to record energy used by this terminal fan. The }) }} -**endTerminal** +### endTerminal Optional to indicates the end of terminal definition. Alternatively, the end of the door definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/top-members.md b/doc/src/docs/input-data/top-members.md index cebf1dee9..eb6a2c8d6 100644 --- a/doc/src/docs/input-data/top-members.md +++ b/doc/src/docs/input-data/top-members.md @@ -716,7 +716,7 @@ Long-wave emittance of the exterior grade surface used in two-dimensional finite -**grndRf** +### grndRf Ground surface roughness. Used for convection and wind speed corrections in two-dimensional finite difference calculations for FOUNDATIONs. diff --git a/doc/src/docs/input-data/towerplant.md b/doc/src/docs/input-data/towerplant.md index 31f552377..766339baf 100644 --- a/doc/src/docs/input-data/towerplant.md +++ b/doc/src/docs/input-data/towerplant.md @@ -10,7 +10,7 @@ All the towers in a TOWERPLANT are identical, except that under LEAD staging, th There is no provision for scheduling a TOWERPLANT: it operates whenever the heat rejection pump in one or more of its associated CHILLERs or HPLOOP heat exchangers operates. However, the setpoint for the water leaving the TOWERPLANT is hourly schedulable. -**towerplantName** +### towerplantName Name of TOWERPLANT object, given immediately after the word TOWERPLANT to begin the object's input. The name is used to refer to the TOWERPLANT in COOLPLANTs and HPLOOPs. @@ -295,7 +295,7 @@ Temperature of makeup water from mains, used to replace water lost by blowdown, ----------- ----------------- ------------- -------------- ----------------- ^o^F *x* > 0 60 No constant -**endTowerplant** +### endTowerplant Optionally indicates the end of the TOWERPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/window.md b/doc/src/docs/input-data/window.md index 6aec0dd8d..11afb14c4 100644 --- a/doc/src/docs/input-data/window.md +++ b/doc/src/docs/input-data/window.md @@ -4,7 +4,7 @@ WINDOW defines a subobject belonging to the current SURFACE that represents one Windows may optionally have operable interior shading that reduces the overall shading coefficient when closed. -**wnName** +### wnName Name of window: follows the word "WINDOW" if given. @@ -428,7 +428,7 @@ View factor from this window to ground for diffuse radiation. For the shading ef }) }} -**endWINDOW** +### endWINDOW Optionally indicates the end of the window definition. Alternatively, the end of the window definition can be indicated by END or the declaration of another object. END or endWindow, if used, should follow any subobjects of the window (SHADEs and/or SGDISTs). diff --git a/doc/src/docs/input-data/zone.md b/doc/src/docs/input-data/zone.md index 6ba0c40c9..75a1f8e2d 100644 --- a/doc/src/docs/input-data/zone.md +++ b/doc/src/docs/input-data/zone.md @@ -4,7 +4,7 @@ ZONE constructs an object of class ZONE, which describes an area of the building ## ZONE General Members -**znName** +### znName Name of zone. Enter after the word ZONE; no "=" is used. @@ -587,7 +587,7 @@ Name of METER object, if any, by which fan's energy use is recorded (under end u }) }} -**endZone** +### endZone Indicates the end of the zone definition. Alternatively, the end of the zone definition can be indicated by the declaration of another object or by "END". If END or endZone is used, it should follow the definitions of the ZONE's subobjects such as GAINs, SURFACEs, TERMINALs, etc. diff --git a/doc/src/extra/dhwsolartank.md b/doc/src/extra/dhwsolartank.md index 0a7543905..c30f7e40a 100644 --- a/doc/src/extra/dhwsolartank.md +++ b/doc/src/extra/dhwsolartank.md @@ -6,6 +6,6 @@ Outlet of this tank is the inlet to all system tanks. Drain water heat recovery preheats water coming into this tank. -**stName** +### stName **endDHWSOLARTANK** \ No newline at end of file diff --git a/doc/src/extra/inverse.md b/doc/src/extra/inverse.md index 74082c801..f5319aa4c 100644 --- a/doc/src/extra/inverse.md +++ b/doc/src/extra/inverse.md @@ -74,7 +74,7 @@ Function inverter }) }} -**endInverse** +### endInverse Optionally indicates the end of the inverse definition. diff --git a/doc/src/shared/dhwheater-doc.md b/doc/src/shared/dhwheater-doc.md index 41978e5eb..974e427db 100644 --- a/doc/src/shared/dhwheater-doc.md +++ b/doc/src/shared/dhwheater-doc.md @@ -687,7 +687,7 @@ whTankTInit is intended for use in empirical validation studies where the initia }) }} -**endDHWHEATER** +### endDHWHEATER Optionally indicates the end of the DHWHEATER definition. From f8aa6dc3b83835c1a650e8627a32ce4412ec4ddc Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Fri, 2 May 2025 14:32:35 -0600 Subject: [PATCH 032/117] Update bold headers to use actual md heading notation. Find: \n\*\*(\w+)=(\w+)\*\*\n Replace: \n### $1\n\nType: $2\n --- doc/src/docs/input-data/airhandler.md | 456 +++++++++++++++++++------- 1 file changed, 342 insertions(+), 114 deletions(-) diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index 09901cea3..f72663ee4 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -28,7 +28,9 @@ Name of air handler: give after the word AIRHANDLER. Required for reference in T }) }} -**ahSched=_choice_** +### ahSched + +Type: _choice_ Air handler schedule; OFF or ON, hourly schedulable by using CSE expression. @@ -51,7 +53,9 @@ The following might be used to run an air handler between 8 AM and 5 PM: }) }} -**ahFxVfFan=_float_** +### ahFxVfFan + +Type: _float_ Fan flow rate multiplier for autosized fan(s). The default value (1.1) specifies 10% oversizing. @@ -117,7 +121,9 @@ Single zone constant volume, fan cycling system that heats or cools per zo extra para to permit page break after frame --> -**ahFanCycles=_choice_** +### ahFanCycles + +Type: _choice_ Determines whether the fan cycles with the zone thermostat. @@ -135,7 +141,9 @@ NO, Normal CSE behavior for simulating VAV systems with continuously running (or }) }} -**ahTsMn=_float_** +### ahTsMn + +Type: _float_ Minimum supply temperature. Also used as cooling supply temperature setpoint value under _ahTsSp_ = ZN. @@ -161,7 +169,9 @@ Minimum supply temperature. Also used as cooling supply temperature setpoint val }) }} -**ahTsMx=_float_** +### ahTsMx + +Type: _float_ Maximum supply temperature. Also used as heating supply temperature setpoint value under _ahTsSp_ = ZN. @@ -192,7 +202,9 @@ A comma must be entered between zone names and after the word ALL_BUT. }) }} -**ahTsDsC=_float_** +### ahTsDsC + +Type: _float_ Cooling design supply temperature, for sizing coil vs fan. @@ -206,7 +218,9 @@ Cooling design supply temperature, for sizing coil vs fan. }) }} -**ahTsDsH=_float_** +### ahTsDsH + +Type: _float_ Heating design supply temperature, for sizing coil vs fan. @@ -238,11 +252,15 @@ Terminal monitored to determine whether to heat or cool under ZN and ZN2 supply _AhTsRaMn_ and _ahTsRaMx_ are used when _ahTsSp_ is RA. -**ahTsRaMn=_float_** +### ahTsRaMn + +Type: _float_ Return air temperature at which the supply temperature setpoint is at the _maximum_ supply temperature, _ahTsMx_. -**ahTsRaMx=_float_** +### ahTsRaMx + +Type: _float_ Return air temperature at which the supply temperature setpoint is at the _minimum_ supply temperature, _ahTsMn_. @@ -264,7 +282,9 @@ If return air moves outside the range _ahTsRaMn_ to _ahTsRaMx_, the supply tempe All AIRHANDLERs have supply fans. -**sfanType=_choice_** +### sfanType + +Type: _choice_ Supply fan type/position. A BLOWTHRU fan is located in the air path before the coils; a DRAWTHRU fan is after the coils. @@ -278,7 +298,9 @@ Supply fan type/position. A BLOWTHRU fan is located in the air path before the c }) }} -**sfanVfDs=_float_** +### sfanVfDs + +Type: _float_ Design or rated (volumetric) air flow at rated pressure. Many fans will actually blow a larger volume of air at reduced pressure: see sfanVfMxF (next). @@ -292,7 +314,9 @@ Design or rated (volumetric) air flow at rated pressure. Many fans will actually }) }} -**sfanVfMxF=_float_** +### sfanVfMxF + +Type: _float_ Overrun factor: maximum factor by which fan will exceed rated flow (at reduced pressure, not explicitly modeled). CSE delivers flows demanded by terminals until total flow at supply fan reaches sfanVfDs \* sfanVsMxF, then reduces maximum flows to terminals, keeping them in proportion to terminal design flows, to keep total flow at that value. @@ -326,7 +350,9 @@ Prior text: At most, one of the next two items may be given: in combination with New possible text (after addition of sfanElecPwr): Only one of sfanElecPwr, sfanEff, and sfanShaftBhp may be given: together with sfanVfDs and xfanPress, any one is sufficient for CSE to determine the others and to compute the fan heat contribution to the air stream. -**sfanElecPwr=_float_** +### sfanElecPwr + +Type: _float_ Fan input power per unit air flow (at design flow and pressure). @@ -340,7 +366,9 @@ Fan input power per unit air flow (at design flow and pressure). }) }} -**sfanEff=_float_** +### sfanEff + +Type: _float_ Fan efficiency at design flow and pressure, as a fraction. @@ -354,7 +382,9 @@ Fan efficiency at design flow and pressure, as a fraction. }) }} -**sfanShaftBhp=_float_** +### sfanShaftBhp + +Type: _float_ Fan shaft brake horsepower at design flow and pressure. @@ -393,7 +423,9 @@ If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coeffici }) }} -**sfanMotEff=_float_** +### sfanMotEff + +Type: _float_ Motor/drive efficiency. @@ -407,7 +439,9 @@ Motor/drive efficiency. }) }} -**sfanMotPos=_choice_** +### sfanMotPos + +Type: _choice_ Motor/drive position: determines disposition of fan motor heat (input energy in excess of work done by fan; the work done by the fan is the "fan heat", always added to air flow). @@ -416,7 +450,9 @@ IN_RETURN, add fan motor heat to the return air flow. EXTERNAL, discard fan motor heat") }} -**sfanMtr=_mtrName_** +### sfanMtr + +Type: _mtrName_ Name of meter, if any, to record energy used by supply fan. End use category used is "Fan". @@ -434,7 +470,9 @@ Name of meter, if any, to record energy used by supply fan. End use category use A return/relief fan is optional. Its presence is established by setting _rfanType_ to a value other than NONE. For additional information on the return/relief fan members, refer to the description of the corresponding supply fan member above. -**rfanType=_choice_** +### rfanType + +Type: _choice_ relief fan type/position. @@ -453,7 +491,9 @@ NONE, no return/relief fan in this AIRHANDLER.") }) }} -**rfanVfDs=_float_** +### rfanVfDs + +Type: _float_ design or rated (volumetric) air flow. @@ -467,7 +507,9 @@ design or rated (volumetric) air flow. }) }} -**rfanVfMxF=_float_** +### rfanVfMxF + +Type: _float_ factor by which fan will exceed design flow (at reduced pressure). @@ -481,7 +523,9 @@ factor by which fan will exceed design flow (at reduced pressure). }) }} -**rfanPress=_float_** +### rfanPress + +Type: _float_ design or rated pressure. @@ -497,7 +541,9 @@ design or rated pressure. _At most, one of the next three?? items may be defined: ??_ rework re rfanElecPwr -**rfanElecPwr=_float_** +### rfanElecPwr + +Type: _float_ Fan input power per unit air flow (at design flow and pressure). @@ -511,7 +557,9 @@ Fan input power per unit air flow (at design flow and pressure). }) }} -**rfanEff=_float_** +### rfanEff + +Type: _float_ Fan efficiency at design flow and pressure. @@ -525,7 +573,9 @@ Fan efficiency at design flow and pressure. }) }} -**rfanShaftBhp=_float_** +### rfanShaftBhp + +Type: _float_ Fan shaft brake horsepower at design flow and pressure. @@ -564,7 +614,9 @@ If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coeffici }) }} -**rfanMotEff=_float_** +### rfanMotEff + +Type: _float_ Motor/drive efficiency. @@ -578,7 +630,9 @@ Motor/drive efficiency. }) }} -**rfanMotPos=_choice_** +### rfanMotPos + +Type: _choice_ Motor/drive position. @@ -592,7 +646,9 @@ Motor/drive position. }) }} -**rfanMtr=_mtrName_** +### rfanMtr + +Type: _mtrName_ Name of meter, if any, to record power consumption of this return fan. May be same or different from meter used for other fans and coils in this and other air handlers. "Fan" end use category is used. @@ -626,7 +682,9 @@ The next four members apply to all heat coil types, except as noted. To specify that an AIRHANDLER has a heating coil and thus heating capability, give an _ahhcType_ other than NONE. -**ahhcType=_choice_** +### ahhcType + +Type: _choice_ Coil type choice: @@ -648,7 +706,9 @@ NONE, AIRHANDLER has no heat coil, thus no heating capability.") }) }} -**ahhcSched=_choice_** +### ahhcSched + +Type: _choice_ Heat coil schedule; choice of AVAIL or OFF, hourly variable. Use an appropriate ahhcSched expression if heat coil is to operate only at certain times of the day or year or only under certain weather conditions, etc. @@ -666,7 +726,9 @@ OFF, coil will not operate, no matter how cold supply air is. A HW coil sh }) }} -**ahhcCapTRat=_float_** +### ahhcCapTRat + +Type: _float_ Total heating (output) capacity. For an ELECTRIC, AHP, GAS, or OIL coil, this capacity is always available. For an HW heating coil, when the total heat being requested from the coil's HEATPLANT would overload the HEATPLANT, the capacity of all HW coils connected to the plant (in TERMINALs as well as AIRHANDLERs) is reduced proportionately until the requested total heat is within the HEATPLANT's capacity. For AHP, this value represents the AHRI rated capacity at 47 ^o^F outdoor temperature. @@ -680,7 +742,9 @@ Total heating (output) capacity. For an ELECTRIC, AHP, GAS, or OIL coil, this ca }) }} -**ahhcFxCap=_float_** +### ahhcFxCap + +Type: _float_ Capacity sizing multiplier for autoSized heating coils. The default value (1.1) specifies 10% oversizing. @@ -694,7 +758,9 @@ Capacity sizing multiplier for autoSized heating coils. The default value (1.1) }) }} -**ahhcMtr=_mtrName_** +### ahhcMtr + +Type: _mtrName_ Name of meter to accumulate energy use by this heat coil. The input energy used by the coil is accumulated in the end use category "Htg"; for a heat pump, the energy used by the supplemental resistance heaters (regular and defrost) is accumulated under the category "hp". Not allowed when\*ahhcType\* is HW, as an HW coil's energy comes from its HEATPLANT, and the HEATPLANT's BOILERs accumulate input energy to meters. @@ -728,7 +794,9 @@ The following inputs are used only for furnaces (_ahhcType_ = GAS or OIL). One of the next two items, but not both, **must** be given for furnaces: -**ahhcEirR=_float_** +### ahhcEirR + +Type: _float_ Rated energy input ratio (input energy/output energy) at full power. @@ -742,7 +810,9 @@ Rated energy input ratio (input energy/output energy) at full power. }) }} -**ahhcEffR=_float_** +### ahhcEffR + +Type: _float_ Rated efficiency (output energy/input energy; 1/ahhcEirR) at full power @@ -780,7 +850,9 @@ Note that the value of this polynomial adjusts the energy input, not the energy }) }} -**ahhcStackEffect=_float_** +### ahhcStackEffect + +Type: _float_ Fraction of unused furnace capacity that must be used to make up for additional infiltration caused by stack effect of a hot flue when the (indoor) furnace is NOT running, only in subhours when furnace runs PART of the subhour, per DOE2 model. @@ -815,7 +887,9 @@ The divisor "`/ (10*68*sqrt(200))`" is to make the value 0.1 when tDbO is 0, tha The following heat coil input members, beginning with _ahp-_, are used when modeling the heating function of an air source heat pump with the air handler heat coil, that is, when _ahhcType_= AHP is given. Also, see the "AIRHANDLER Crankcase Heater" section with regard to specifying the heat pump's crankcase heater. -**ahpCap17=_float_** +### ahpCap17 + +Type: _float_ AHRI steady state (continuous operation) rated capacity at 70 degrees F indoor (return) air temp, and 17 degrees F outdoor temp, respectively. These values reflect no cycling, frost, or defrost degradation. To help you find input errors, the program issues an error message if ahpCap17 >= ahhcCapTRat. @@ -829,7 +903,9 @@ AHRI steady state (continuous operation) rated capacity at 70 degrees F indoor ( }) }} -**ahpCapRat1747=_float_** +### ahpCapRat1747 + +Type: _float_ The ratio of AHRI steady state (continuous operation) rated capacities at 17 and 47 degrees F outdoor temp. This is used to determine _ahpCap35_ when _ahhcCapTRat_ is AUTOSIZEd. @@ -843,7 +919,9 @@ The ratio of AHRI steady state (continuous operation) rated capacities at 17 and }) }} -**ahpCapRat9547=_float_** +### ahpCapRat9547 + +Type: _float_ Ratio of ahccCapTRat to ahhcCapTRat. This ratio is used for defaulting of AUTOSIZEd heat pump heating and cooling capacities such that they have consistent values as is required given that a heat pump is a single device. If not given, ahpCapRat9547 is determined during calculations using the relationship ahccCapTRat = 0.98 \* ahhcCapTRat + 180 (derived via correlation of capacities of a set of real units). @@ -857,7 +935,9 @@ Ratio of ahccCapTRat to ahhcCapTRat. This ratio is used for defaulting of AUTOSI }) }} -**ahpCap35=_float_** +### ahpCap35 + +Type: _float_ AHRI steady state (continuous operation) rated capacity at 35 F outdoor temp, reflecting frost buildup and defrost degradation but no cycling. Unlikely to be available for input; if not given, will be defaulted to _ahpFd35Df_ (next description) times a value determined by linear interpolation between the given _ahpCap17_ and _ahhcCapTRat_ values. If _ahpCap35_ is given, CSE will issue an error message if it is greater than value determined by linear interpolation between _ahpCap17_ and _ahhcCapTRat_. @@ -871,7 +951,9 @@ AHRI steady state (continuous operation) rated capacity at 35 F outdoor temp, re }) }} -**ahpFd35Df=_float_** +### ahpFd35Df + +Type: _float_ Default frost/defrost degradation factor at 35 F: reduction of output at unchanged input, due to defrosting and due to frost on outdoor coil. Used in determining default value for _ahpCap35_ (preceding description); not used if _ahpCap35_ is given. @@ -885,7 +967,9 @@ Default frost/defrost degradation factor at 35 F: reduction of output at unchang }) }} -**ahpCapIa=_float_** +### ahpCapIa + +Type: _float_ Capacity correction factor for indoor (return) air temperature, expressed as a fraction reduction in capacity per degree above 70F. @@ -899,7 +983,9 @@ Capacity correction factor for indoor (return) air temperature, expressed as a f }) }} -**ahpCapSupH=_float_** +### ahpCapSupH + +Type: _float_ Output capacity of the supplemental reheat coil used when heat pump alone cannot meet the load or to offset the defrost cooling load. Energy consumed by this heater is accumulated in category "HPBU" of ahhcMeter (whereas energy consumption of the heat pump compressor is accumulated under category "Htg"). @@ -913,7 +999,9 @@ Output capacity of the supplemental reheat coil used when heat pump alone cannot }) }} -**ahpEffSupH=_float_** +### ahpEffSupH + +Type: _float_ Efficiency of the supplemental reheat coil. Use values other than the default for gas supplemental heaters. @@ -927,7 +1015,9 @@ Efficiency of the supplemental reheat coil. Use values other than the default fo }) }} -**ahpSupHMtr=_mtrName_** +### ahpSupHMtr + +Type: _mtrName_ Specifies a meter for recording supplemental heater energy use. End use category "HPBU" is used. @@ -943,11 +1033,17 @@ Specifies a meter for recording supplemental heater energy use. End use category The next seven inputs specify frost buildup and defrosting and their effect on capacity. -**ahpTFrMn=_float_** +### ahpTFrMn + +Type: _float_ + +### ahpTFrMx -**ahpTFrMx=_float_** +Type: _float_ -**ahpTFrPk=_float_** +### ahpTFrPk + +Type: _float_ Lowest, highest, and peak temperatures for frost buildup and defrost effects. Capacity reduction due to frost and defrosting consists of a component due to frost buildup on the outdoor coil, plus a component due to lost heating during the time the heat pump is doing reverse cycle defrosting (heating the outdoor coil to melt off the frost, which cools the indoor coil). The effects of Frost Buildup and of time spent defrosting are computed for different temperature ranges as follows: @@ -975,9 +1071,13 @@ An error will occur unless _ahpTFrMn_ < _ahpTFrPk_ < _ahpTFrMx_ and _ahpTF }) }} -**ahpDfrFMn=_float_** +### ahpDfrFMn + +Type: _float_ + +### ahpDfrFMx -**ahpDfrFMx=_float_** +Type: _float_ Minimum and maximum fraction of time spent in reverse cycle defrost cooling. @@ -1005,7 +1105,9 @@ The program will issue an error message if _ahpDfrFMx_ $\le$ _ahpDfrFMn_. }) }} -**ahpDfrCap=_float_** +### ahpDfrCap + +Type: _float_ Cooling capacity (to air handler supply air) during defrosting. Program separately computes the lost heating capacity during defrosting, but effects of switchover transient should be included in _ahpDfrCap_. @@ -1019,9 +1121,13 @@ Cooling capacity (to air handler supply air) during defrosting. Program separate }) }} -**ahpTOff=_float_** +### ahpTOff + +Type: _float_ -**ahpTOn=_float_** +### ahpTOn + +Type: _float_ Heat pump low temperature cutout setpoints. Heat pump is disabled (only the supplemental resistance heater operates) when outdoor temperature falls below _ahpTOff_, and is re-enabled when temperature rises above _ahpTOn_. Different values may be given to simulate thermostat differential. _ahpTOff_ must be $\le$ _ahpTOn_; equal values are accepted. @@ -1037,9 +1143,13 @@ Heat pump low temperature cutout setpoints. Heat pump is disabled (only the supp The next four inputs specify the heating power input for an air source heat pump: -**ahpCOP47=_float_** +### ahpCOP47 + +Type: _float_ -**ahpCOP17=_float_** +### ahpCOP17 + +Type: _float_ Steady state (full power, no cycling) coeffient of performance for compressor and crankcase heater at 70 degrees F indoor (return) air temp and 47 and 17 degrees F outdoor temp, respectively. @@ -1053,7 +1163,9 @@ Steady state (full power, no cycling) coeffient of performance for compressor an }) }} -**ahpInIa=_float_** +### ahpInIa + +Type: _float_ Indoor (return) air temp power input correction factor: fraction increase in steady-state input per degree above 70 F, or decrease below 70F. @@ -1067,7 +1179,9 @@ Indoor (return) air temp power input correction factor: fraction increase in ste }) }} -**ahpCd=_float_** +### ahpCd + +Type: _float_ AHRI cycling degradation coefficient: ratio of fraction drop in system coefficient of performance (COP) to fraction drop in capacity when cycling, from steady-state values, in AHRI 47 F cycling performance tests. A value of .25 means that if the heat pump is cycled to drop its output to 20% of full capacity (i.e. by the fraction .8), its COP will drop by .8 \* .25 = .2. Here COP includes all energy inputs: compressor, crankcase heater, defrost operation, etc. @@ -1083,7 +1197,9 @@ AHRI cycling degradation coefficient: ratio of fraction drop in system coefficie The following four air handler heat coil members allow specification of auxiliary input power consumption associated with the heat coil (or furnace) under the indicated conditions. The single description box applies to all four. -**ahhcAux=_float_** +### ahhcAux + +Type: _float_ Auxiliary energy used by the heating coil. @@ -1097,7 +1213,9 @@ Auxiliary energy used by the heating coil. }) }} -**ahhcAuxMtr=_mtrName_** +### ahhcAuxMtr + +Type: _mtrName_ Specifies a meter for recording auxiliary energy use. End use category "Aux" is used. @@ -1155,7 +1273,9 @@ OFF, Cooling coil will not operate no matter how hot the supply air is. To avoid }) }} -**ahccCapTRat=_float_** +### ahccCapTRat + +Type: _float_ Total rated capacity of coil: sum of its "sensible" (heat-removing) and "latent" (moisture removing) capacities. Not used with CHW coils, for which capacity is implicitly specified by water flow (ahccGpmDs*) and transfer unit (*ahccNtuoDs\* and _ahccNtuiDs_) inputs, described below. @@ -1171,7 +1291,9 @@ For coil specification conditions (a.k.a. rating conditions or design conditions }) }} -**ahccCapSRat=_float_** +### ahccCapSRat + +Type: _float_ Sensible (heat-removing) rated capacity of cooling coil. Not used with CHW coils. @@ -1185,7 +1307,9 @@ Sensible (heat-removing) rated capacity of cooling coil. Not used with CHW coils }) }} -**ahccSHRRat=_float_** +### ahccSHRRat + +Type: _float_ Rated sensible heat ratio (_ahccCapSRat_/_ahccCapTRat_) for cooling coil. Default based on correlation to _ahccVfRperTon_. Not used with CHW coils. @@ -1199,7 +1323,9 @@ Rated sensible heat ratio (_ahccCapSRat_/_ahccCapTRat_) for cooling coil. Defaul }) }} -**ahccFxCap=_float_** +### ahccFxCap + +Type: _float_ Capacity sizing multiplier for autoSized cooling coils. The default value (1.1) specifies 10% oversizing. @@ -1213,7 +1339,9 @@ Capacity sizing multiplier for autoSized cooling coils. The default value (1.1) }) }} -**ahccMtr=_mtrName_** +### ahccMtr + +Type: _mtrName_ Name of meter, if any, to record energy use of air handler cool coil. End use category "Clg" is used. Not used with CHW coils, because the input energy use for a CHW coil is recorded by the COOLPLANT's CHILLERs. @@ -1229,7 +1357,9 @@ Name of meter, if any, to record energy use of air handler cool coil. End use ca The following six members are used with DX cooling coils. -**ahccMinTEvap=_float_** +### ahccMinTEvap + +Type: _float_ Minimum (effective surface) temperature of coil (evaporator). Represents refrigerant setpoint, or cutout to prevent freezing. Coil model will reduce output to keep simulated coil from getting colder than this, even though it lets supply air get warmer than setpoint. Should default be 35?? @@ -1243,7 +1373,9 @@ Minimum (effective surface) temperature of coil (evaporator). Represents refrige }) }} -**ahccK1=_float_** +### ahccK1 + +Type: _float_ Exponent in power relationship expressing coil effectiveness as a function of relative air flow. Used as K1 in the relationship ntu = ntuR \* relCfmk1, which says that the "number of transfer units" (on the coil outside or air side) varies with the relative air flow raised to the K1 power. Used with CHW as well as DX coils; for a CHW coil, ntuR in the formula is _ahccNtuoDs_. @@ -1257,7 +1389,9 @@ Exponent in power relationship expressing coil effectiveness as a function of re }) }} -**ahccBypass=_float_** +### ahccBypass + +Type: _float_ Fraction of air flow which does NOT flow through DX cooling coil, for better humidity control. Running less of the air through the coil lets the coil run colder, resulting in greater moisture removal right??. @@ -1285,7 +1419,9 @@ cycling region, _ahccMinFsldPlr_ > plr $\\ge$ 0 The default values for the following three members are the DOE2 PTAC (Window air conditioner) values. -**ahccEirR=_float_** +### ahccEirR + +Type: _float_ DX compressor energy input ratio (EIR) at full load under rated conditions; defined as the full-load electric energy input divided by the rated capacity, both in Btuh; same as the reciprocal of the Coefficient Of Performance (COP). Polynomials given below are used by CSE to adjust the energy input for part load and for off rated flow and temperature conditions. The default value includes outdoor (condenser) fan energy, but not indoor (air handler supply) fan energy. @@ -1299,7 +1435,9 @@ DX compressor energy input ratio (EIR) at full load under rated conditions; defi }) }} -**ahccMinUnldPlr=_float_** +### ahccMinUnldPlr + +Type: _float_ Compressor part load ratio (total current load/current capacity) at/above which "Compressor unloading" is used and pydxEirUl (below) is used to adjust the full-load power input to get the current part load power input. @@ -1313,7 +1451,9 @@ Compressor part load ratio (total current load/current capacity) at/above which }) }} -**ahccMinFsldPlr=_float_** +### ahccMinFsldPlr + +Type: _float_ "False Loading" is used between this compressor part load ratio and the plr where unloading is activated (_ahccMinUnldPlr_). In this region, input remains at _pydxEirUl_(*ahccMinUnldPlr).*For plr's less than _ahccMinFsldPlr_, cycling is used, and the power input goes to 0 in a straight line. @@ -1381,7 +1521,9 @@ Coefficients of cubic polynomial function of relative flow (entering air cfm/_ah }) }} -**pydxCaptFLim=_float_** +### pydxCaptFLim + +Type: _float_ Upper limit for value of pydxCaptF. @@ -1427,7 +1569,9 @@ This polynomial adjusts the full load energy input to part load, not the ratio o The following four members are used only with CHW coils. In addition, _ahccK1,_ described above, is used. -**ahccCoolplant=_name_** +### ahccCoolplant + +Type: _name_ name of COOLPLANT supporting CHW coil. COOLPLANTs contain CHILLERs, and are described in Section 5.21. @@ -1441,7 +1585,9 @@ name of COOLPLANT supporting CHW coil. COOLPLANTs contain CHILLERs, and are desc }) }} -**ahccGpmDs=_float_** +### ahccGpmDs + +Type: _float_ Design (i.e. maximum) water flow through CHW coil. @@ -1455,7 +1601,9 @@ Design (i.e. maximum) water flow through CHW coil. }) }} -**ahccNtuoDs=_float_** +### ahccNtuoDs + +Type: _float_ CHW coil outside number of transfer units at design air flow (ahccVfR*, below). See*ahccK1\* above with regard to transfer units at other air flows. @@ -1469,7 +1617,9 @@ CHW coil outside number of transfer units at design air flow (ahccVfR*, below). }) }} -**ahccNtuiDs=_float_** +### ahccNtuiDs + +Type: _float_ CHW coil inside number of transfer units at design water flow (ahccGpmDs, above). @@ -1485,7 +1635,9 @@ CHW coil inside number of transfer units at design water flow (ahccGpmDs, above) The following four members let you give the specification conditions for the cooling coil: the rating conditions, design conditions, or other test conditions under which the coil's performance is known. The defaults are AHRI (Air-Conditioning and Refrigeration Institute) standard rating conditions. -**ahccDsTDbEn=_float_** +### ahccDsTDbEn + +Type: _float_ Design (rating) entering air dry bulb temperature, used with DX and CHW cooling coils. With CHW coils, this input is used only as the temperature at which to convert _ahccVfR_ from volume to mass. @@ -1499,7 +1651,9 @@ Design (rating) entering air dry bulb temperature, used with DX and CHW cooling }) }} -**ahccDsTWbEn=_float_** +### ahccDsTWbEn + +Type: _float_ Design (rating) entering air wet bulb temperature, for CHW coils. @@ -1513,7 +1667,9 @@ Design (rating) entering air wet bulb temperature, for CHW coils. }) }} -**ahccDsTDbCnd=_float_** +### ahccDsTDbCnd + +Type: _float_ Design (rating) condenser temperature (outdoor air temperature) for DX coils. @@ -1527,7 +1683,9 @@ Design (rating) condenser temperature (outdoor air temperature) for DX coils. }) }} -**ahccVfR=_float_** +### ahccVfR + +Type: _float_ Design (rating) (volumetric) air flow rate for DX or CHW cooling coil. The AHRI specification for this test condition for CHW coils is "450 cfm/ton or less", right?? @@ -1543,7 +1701,9 @@ Design (rating) (volumetric) air flow rate for DX or CHW cooling coil. The AHRI The following four members permit specification of auxiliary input power use associated with the cooling coil under the conditions indicated. -**ahccVfRperTon=_float_** +### ahccVfRperTon + +Type: _float_ Design default _ahccVfR_ per ton (12000 Btuh) of _ahhcCapTRat_. @@ -1557,7 +1717,9 @@ Design default _ahccVfR_ per ton (12000 Btuh) of _ahhcCapTRat_. }) }} -**ahccAux=_float_** +### ahccAux + +Type: _float_ Auxiliary energy used by the cooling coil. @@ -1571,7 +1733,9 @@ Auxiliary energy used by the cooling coil. }) }} -**ahccAuxMtr=_mtrName_** +### ahccAuxMtr + +Type: _mtrName_ Specifies a meter for recording auxiliary energy use. End use category "Aux" is used. @@ -1589,7 +1753,9 @@ Specifies a meter for recording auxiliary energy use. End use category "Aux" is Outside air introduced into the air hander supply air can be controlled on two levels. First, a *minimum*fraction or volume of outside air may be specified. By default, a minimum volume of .15 cfm per square foot of zone area is used. Second, an _economizer_ may be specified. The simulated economizer increases the outside air above the minimum when the outside air is cooler or has lower enthalpy than the return air, in order to reduce cooling coil energy usage. By default, there is no economizer. -**oaMnCtrl=_choice_** +### oaMnCtrl + +Type: _choice_ Minimum outside air flow control method choice, VOLUME or FRACTION. Both computations are based on the minimum outside air flow, _oaVfDsMn_; if the control method is FRACTION, the outside air flow is pro-rated when the air handler is supplying less than its design cfm. In both cases the computed minimum cfm is multiplied by a schedulable fraction, _oaMnFrac_, to let you vary the outside air or turn in off when none is desired. @@ -1612,7 +1778,9 @@ If the minimum outside air flow is greater than the total requested by the termi }) }} -**oaVfDsMn=_float_** +### oaVfDsMn + +Type: _float_ Design minimum outside air flow. If _oaMnCtrl_ is FRACTION, then this is the minimum outside air flow at full air handler flow. See formulas in _oaMnCtrl_ description, just above. @@ -1626,7 +1794,9 @@ Design minimum outside air flow. If _oaMnCtrl_ is FRACTION, then this is the min }) }} -**oaMnFrac=_float_** +### oaMnFrac + +Type: _float_ Fraction of minimum outside air to use this hour, normally 1.0. Use a CSE expression that evaluates to 0 for hours you wish to disable the minimum outside air flow, for example to suppress ventilation during the night or during warm-up hours. Intermediate values may be used for intermediate outside air minima. See formulas in _oaMnCtrl_ description, above. @@ -1642,7 +1812,9 @@ Fraction of minimum outside air to use this hour, normally 1.0. Use a CSE expres CAUTION: the minimum outside air flow only applies when the supply fan is running; it won't assure meeting minimum ventilation requirements when used with ahFanCycles = YES (constant volume, fan cycling). -**oaZoneLeak=_float_** +### oaZoneLeak + +Type: _float_ For the purposes of airnet zone pressure modeling ONLY, _oaZoneLeak_ specifies the fraction of supply air that is assumed to leak from zone(s) (as opposed to returning to the airhandler via the return duct). For example, if the supply air volume is 500 cfm and _oaZoneLeak_ is 0.4, the values passed to airnet are 500 cfm inflow and 300 cfm outflow. The 200 cfm difference is distributed to other zone leaks according to their pressure/flow characteristics. @@ -1668,7 +1840,9 @@ Second, the economizer will operate even if the air handler is heating, resultin (ahEcoType includes the functionality of the Taylor coil_interlock variable??) --> -**oaEcoType=_choice_** +### oaEcoType + +Type: _choice_ Type of economizer. Choice of: @@ -1708,7 +1882,9 @@ Economizer outside air enthalpy high limit. The economizer is disabled (outside _oaOaLeak_ and _oaRaLeak_ specify leakages in the economizer dampers, when present. The leaks are constant-cfm flows, expressed as fractions of the maximum possible flow. Thus, when the current flow is less than the maximum possible, the range of operation of the economizer is reduced. When the two damper leakages add up to more than the current air handler flow, outside and return air are used in the ratio of the two leakages and the economizer, if enabled, is ineffective. -**oaOaLeak=_float_** +### oaOaLeak + +Type: _float_ Outside air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. If an economizer is present, _oaOaLeak_ is a fraction of the supply fan design cfm, _sfanVfDs_. Otherwise, _oaOaLeak_ is a fraction of the design minimum outside air flow _oaVfDsMn_. @@ -1722,7 +1898,9 @@ Outside air damper leakage to mixed air. Puts a minimum on return air flow and t }) }} -**oaRaLeak=_float_** +### oaRaLeak + +Type: _float_ Return air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. Expressed as a fraction of the supply fan design cfm, _sfanVfDs_. Not used when no economizer is being modeled. @@ -1740,7 +1918,9 @@ Return air damper leakage to mixed air. Puts a minimum on return air flow and th The following data members are used to describe a heat exchanger for recovering heat from exhaust air. Heat recovery added to the model when a value for _oaHXSenEffHDs_ is provided. -**oaHXVfDs=_float_** +### oaHXVfDs + +Type: _float_ Heat exchanger design or rated flow. @@ -1754,7 +1934,9 @@ Heat exchanger design or rated flow. }) }} -**oaHXf2=_float_** +### oaHXf2 + +Type: _float_ Heat exchanger flow fraction (of design flow) used for second set of effectivenesses. @@ -1768,7 +1950,9 @@ Heat exchanger flow fraction (of design flow) used for second set of effectivene }) }} -**oaHXSenEffHDs=_float_** +### oaHXSenEffHDs + +Type: _float_ Heat exchanger sensible effectiveness in heating mode at the design flow rate. Specifying input triggers modeling of heat recovery. @@ -1782,7 +1966,9 @@ Heat exchanger sensible effectiveness in heating mode at the design flow rate. S }) }} -**oaHXSenEffHf2=_float_** +### oaHXSenEffHf2 + +Type: _float_ Heat exchanger sensible effectiveness in heating mode at the second flow rate (**oaHXf2**). @@ -1796,7 +1982,9 @@ Heat exchanger sensible effectiveness in heating mode at the second flow rate (* }) }} -**oaHXLatEffHDs=_float_** +### oaHXLatEffHDs + +Type: _float_ Heat exchanger latent effectiveness in heating mode at the design flow rate. @@ -1810,7 +1998,9 @@ Heat exchanger latent effectiveness in heating mode at the design flow rate. }) }} -**oaHXLatEffHf2=_float_** +### oaHXLatEffHf2 + +Type: _float_ Heat exchanger latent effectiveness in heating mode at the second flow rate (**oaHXf2**). @@ -1824,7 +2014,9 @@ Heat exchanger latent effectiveness in heating mode at the second flow rate (**o }) }} -**oaHXSenEffCDs=_float_** +### oaHXSenEffCDs + +Type: _float_ Heat exchanger sensible effectiveness in cooling mode at the design flow rate. @@ -1838,7 +2030,9 @@ Heat exchanger sensible effectiveness in cooling mode at the design flow rate. }) }} -**oaHXSenEffCf2=_float_** +### oaHXSenEffCf2 + +Type: _float_ Heat exchanger sensible effectiveness in cooling mode at the second flow rate (**oaHXf2**). @@ -1852,7 +2046,9 @@ Heat exchanger sensible effectiveness in cooling mode at the second flow rate (* }) }} -**oaHXLatEffCDs=_float_** +### oaHXLatEffCDs + +Type: _float_ Heat exchanger latent effectiveness in cooling mode at the design flow rate. @@ -1866,7 +2062,9 @@ Heat exchanger latent effectiveness in cooling mode at the design flow rate. }) }} -**oaHXLatEffCf2=_float_** +### oaHXLatEffCf2 + +Type: _float_ Heat exchanger latent effectiveness in cooling mode at the second flow rate (**oaHXf2**). @@ -1880,7 +2078,9 @@ Heat exchanger latent effectiveness in cooling mode at the second flow rate (**o }) }} -**oaHXBypass=_choice_** +### oaHXBypass + +Type: _choice_ Yes/No choice for enabling heat exchanger bypass. If selected, the outdoor air will bypass the heat exchanger when otherwise the heat exchanger would require more heating or cooling energy to meet the respective setpoints. @@ -1894,7 +2094,9 @@ Yes/No choice for enabling heat exchanger bypass. If selected, the outdoor air w }) }} -**oaHXAuxPwr=_float_** +### oaHXAuxPwr + +Type: _float_ Auxiliary power required to operate the heat recovery device (e.g., wheel motor, contorls). @@ -1908,7 +2110,9 @@ Auxiliary power required to operate the heat recovery device (e.g., wheel motor, }) }} -**oaHXAuxMtr=_mtrName_** +### oaHXAuxMtr + +Type: _mtrName_ Name of meter, if any, to record energy used by auxiliary components of the heat recovery system. @@ -1928,7 +2132,9 @@ _AhSOLeak_ and _ahRoLeak_ express air leaks in the common supply and return duct If unequal leaks are specified, at present (July 1992) CSE will use the average of the two specifications for both leaks, as the modeled supply and return flows must be equal. A future version may allow unequal flows, making up the difference in exfiltration or infiltration to the zones. -**ahSOLeak=_float_** +### ahSOLeak + +Type: _float_ Supply duct leakage to outdoors, expressed as a fraction of supply fan design flow (_sfanVfDs_). Use 0 if the duct is indoors. A constant-cfm leak is modeled, as the pressure is constant when the fan is on. @@ -1942,7 +2148,9 @@ Supply duct leakage to outdoors, expressed as a fraction of supply fan design fl }) }} -**ahROLeak=_float_** +### ahROLeak + +Type: _float_ Return duct leakage FROM outdoors, expressed as a fraction of _sfanVfDs_. Use 0 if the duct is indoors. @@ -1958,7 +2166,9 @@ Return duct leakage FROM outdoors, expressed as a fraction of _sfanVfDs_. Use 0 _AhSOLoss_ and _ahROLoss_ represent conductive losses from the common supply and return ducts to the outdoors. For an individual zone's conductive duct loss, see TERMINAL member _tuSRLoss_. Losses here are expressed as a fraction of the temperature difference which is lost. For example, if the supply air temperature is 120, the outdoor temperature is 60, and the pertinent loss is .1, the effect of the loss as modeled will be to reduce the supply air temperature by 6 degrees ( .1 \* (120 - 60) ) to 114 degrees. CSE currently models these losses a constant _TEMPERATURE LOSSes_ regardless of cfm. -**ahSOLoss=_float_** +### ahSOLoss + +Type: _float_ Supply duct loss/gain to the outdoors. @@ -1972,7 +2182,9 @@ Supply duct loss/gain to the outdoors. }) }} -**ahROLoss=_float_** +### ahROLoss + +Type: _float_ Return duct heat loss/gain to the outdoors. @@ -1996,7 +2208,9 @@ When modeling an air source heat pump (ahhcType = AHP), these variables should b Appropriateness of use of these inputs when specifying a DX system without associated heat pump heating is not clear to me (Rob) as of 10-23-92; on the one hand, the DX compressor probably has a crankcase heater; on the other hand, the rest of the DX model is supposed to be complete in itself, and adding a crankcase heater here might produce excessive energy input; on the third hand, the DX model does not include any energy input when the compressor is idle; ... . -**cchCM=_choice_** +### cchCM + +Type: _choice_ Crankcase heater presence and control method. Choice of: @@ -2018,7 +2232,9 @@ PTC_CLO, Same as corresponding choices above except zero crankcase heater input }) }} -**cchPMx=_float_** +### cchPMx + +Type: _float_ Crankcase resistance heater input power; maximum power if _cchCM_ is PTC or PTC_CLO. @@ -2032,7 +2248,9 @@ Crankcase resistance heater input power; maximum power if _cchCM_ is PTC or PTC_ }) }} -**cchPMn=_float_** +### cchPMn + +Type: _float_ Crankcase heater minimum input power if _cchCM_ is PTC or PTC_CLO, disallowed for other _cchCM's_. > 0. @@ -2046,9 +2264,13 @@ Crankcase heater minimum input power if _cchCM_ is PTC or PTC_CLO, disallowed fo }) }} -**cchTMx=_float_** +### cchTMx + +Type: _float_ + +### cchTMn -**cchTMn=_float_** +Type: _float_ For _cchCM_ = PTC or PTC_CLO, the low temperature (max power) and high temperature (min power) setpoints. In subhours when the compressor does not run, crankcase heater input is _cchPMx_ when oil temperature is at or below _cchTMx_, _cchPMn_ when oil temp is at or above _cchTMn_, and varies linearly (proportionally) in between. _cchTMn_ must be $\ge$ _cchTMx_. See _cchDT_ (next). @@ -2064,7 +2286,9 @@ For _cchCM_ = PTC or PTC_CLO, the low temperature (max power) and high temperatu }) }} -**cchDT=_float_** +### cchDT + +Type: _float_ For _cchCM_ = PTC or PTC_CLO, how much warmer than the outdoor temp CSE assumes the crankcase oil to be in subhours when the compressor does not run. If the compressor runs at all in the subhour, the oil is assumed to be warmer than _cchTMn_. @@ -2078,9 +2302,13 @@ For _cchCM_ = PTC or PTC_CLO, how much warmer than the outdoor temp CSE assumes }) }} -**cchTOn=_float_** +### cchTOn + +Type: _float_ + +### cchTOff -**cchTOff=_float_** +Type: _float_ For _cchCM_ = TSTAT, in subhours when compressor does not run, the crankcase heater turn-on and turn-off outdoor temperatures, respectively. Unequal values may be given to simulate thermostat differential. When the compressor runs at all in a subhour, the crankcase heater is off for the entire subhour. From 4e8399f8f06675ff934e44f38438b0d360063931 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Sat, 3 May 2025 15:11:40 -0600 Subject: [PATCH 033/117] Update bold headers to use actual md heading notation. Find: \n\*\*(\w+)=\*(\w+)\*\*\*[\s]*\n Replace: \n### $1\n\nType: *$2*\n\n --- doc/src/docs/input-data/battery.md | 44 ++- doc/src/docs/input-data/boiler.md | 60 +++- doc/src/docs/input-data/chiller.md | 96 ++++-- doc/src/docs/input-data/construction.md | 4 +- doc/src/docs/input-data/coolplant.md | 16 +- doc/src/docs/input-data/descond.md | 32 +- doc/src/docs/input-data/dhwdayuse.md | 4 +- doc/src/docs/input-data/dhwheatrec.md | 32 +- doc/src/docs/input-data/dhwloop.md | 32 +- doc/src/docs/input-data/dhwloopbranch.md | 52 +++- doc/src/docs/input-data/dhwlooppump.md | 16 +- doc/src/docs/input-data/dhwloopseg.md | 32 +- doc/src/docs/input-data/dhwpump.md | 12 +- doc/src/docs/input-data/dhwsolarcollector.md | 68 +++-- doc/src/docs/input-data/dhwsolarsys.md | 44 ++- doc/src/docs/input-data/dhwsys.md | 220 ++++++++++---- doc/src/docs/input-data/dhwtank.md | 32 +- doc/src/docs/input-data/dhwuse.md | 32 +- doc/src/docs/input-data/doas.md | 148 ++++++--- doc/src/docs/input-data/door.md | 68 +++-- doc/src/docs/input-data/ductseg.md | 68 +++-- doc/src/docs/input-data/export.md | 60 +++- doc/src/docs/input-data/exportcol.md | 24 +- doc/src/docs/input-data/exportfile.md | 8 +- doc/src/docs/input-data/fndblock.md | 36 ++- doc/src/docs/input-data/foundation.md | 12 +- doc/src/docs/input-data/gain.md | 52 +++- doc/src/docs/input-data/glazetype.md | 52 +++- doc/src/docs/input-data/heatplant.md | 8 +- doc/src/docs/input-data/holiday.md | 12 +- doc/src/docs/input-data/importfile.md | 20 +- doc/src/docs/input-data/izxfer.md | 140 ++++++--- doc/src/docs/input-data/layer.md | 16 +- doc/src/docs/input-data/material.md | 28 +- doc/src/docs/input-data/meter.md | 8 +- doc/src/docs/input-data/performancemap.md | 12 +- doc/src/docs/input-data/perimeter.md | 8 +- doc/src/docs/input-data/pvarray.md | 64 +++- doc/src/docs/input-data/report.md | 68 +++-- doc/src/docs/input-data/reportcol.md | 28 +- doc/src/docs/input-data/reportfile.md | 12 +- doc/src/docs/input-data/rsys.md | 240 +++++++++++---- doc/src/docs/input-data/sgdist.md | 16 +- doc/src/docs/input-data/shade.md | 52 +++- doc/src/docs/input-data/shadex.md | 4 +- doc/src/docs/input-data/surface.md | 128 ++++++-- doc/src/docs/input-data/terminal.md | 116 +++++-- doc/src/docs/input-data/top-members.md | 300 ++++++++++++++----- doc/src/docs/input-data/towerplant.md | 96 ++++-- doc/src/docs/input-data/window.md | 112 +++++-- doc/src/docs/input-data/zone.md | 152 +++++++--- doc/src/extra/inverse.md | 24 +- doc/src/shared/dhwheater-doc.md | 136 ++++++--- 53 files changed, 2367 insertions(+), 789 deletions(-) diff --git a/doc/src/docs/input-data/battery.md b/doc/src/docs/input-data/battery.md index fcee47bd5..99c5b4f08 100644 --- a/doc/src/docs/input-data/battery.md +++ b/doc/src/docs/input-data/battery.md @@ -18,7 +18,9 @@ Name of the battery system. Given after the word BATTERY. }) }} -**btMeter=*choice*** +### btMeter + +Type: *choice* Name of a METER to which the BATTERY's charge/discharge energy flows are recorded. Battery energy flows are accumulated to meter end use "BT". Battery energy flows are seen from the standpoint of a "load" on the electric grid, so charges to the BATTERY system are positive values while discharges from the BATTERY system are negative values. @@ -34,7 +36,9 @@ Note btMeter also determines the source for the probe value *loadSeen*. See dis }) }} -**btChgEff=*float*** +### btChgEff + +Type: *float* The charging efficiency of storing electricity into the BATTERY system. A value of 1.0 means that no energy is lost and 100% of charge energy enters and is stored in the battery. @@ -48,7 +52,9 @@ The charging efficiency of storing electricity into the BATTERY system. A value }) }} -**btDschgEff=*float*** +### btDschgEff + +Type: *float* The discharge efficiency for when the BATTERY system is discharging power. A value of 1.0 means that no energy is lost and 100% of discharge energy leaves the system. @@ -62,7 +68,9 @@ The discharge efficiency for when the BATTERY system is discharging power. A val }) }} -**btMaxCap=*float*** +### btMaxCap + +Type: *float* This is the maximum amount of energy that can be stored in the BATTERY system in kilowatt-hours. Once the BATTERY has reached its maximum capacity, no additional energy will be stored. @@ -76,7 +84,9 @@ This is the maximum amount of energy that can be stored in the BATTERY system in }) }} -**btInitSOE=*float*** +### btInitSOE + +Type: *float* The initial state of energy of the BATTERY system as a fraction of the total capacity. If `btInitSOE` is specified, the battery state-of-energy at the beginning of the actual simulation will be set to the amount specified, regardless of whether there was a warm-up period or not. If `btInitSOE` is NOT specififed, it will default to 1.0 (i.e., 100%) at the beginning of the warmup period (if any). @@ -90,7 +100,9 @@ The initial state of energy of the BATTERY system as a fraction of the total cap }) }} -**btInitCycles=*int*** +### btInitCycles + +Type: *int* The number of cycles on the battery at the beginning of the run. @@ -110,7 +122,9 @@ Note: a more robust life model will need not only cycle counts but cycles by dep }) }} -**btMaxChgPwr=*float*** +### btMaxChgPwr + +Type: *float* The maximum rate at which the BATTERY can be charged in kilowatts (i.e., energy flowing *into* the BATTERY). @@ -124,7 +138,9 @@ The maximum rate at which the BATTERY can be charged in kilowatts (i.e., energy }) }} -**btMaxDschgPwr=*float*** +### btMaxDschgPwr + +Type: *float* The maximum rate at which the BATTERY can be discharged in kilowatts (i.e., energy flowing *out of* the BATTERY). @@ -138,7 +154,9 @@ The maximum rate at which the BATTERY can be discharged in kilowatts (i.e., ener }) }} -**btControlAlg=*choice*** +### btControlAlg + +Type: *choice* Selects charge/discharge control algorithm. btChgReq (next) specifies the desired battery charge or discharge rate. btControlAlg allows selection of alternative algorithms for deriving btChgReq. @@ -158,7 +176,9 @@ Note btControlAlg has hourly variability, allowing dynamic algorithm selection. }) }} -**btChgReq=*float*** +### btChgReq + +Type: *float* The power request to charge (or discharge if negative) the battery. If omitted, the default strategy is used (attempt to satisfy all loads and absorb all available excess power). btChgReq and the default strategy requested power are literally *requests*: that is, more power will not be delivered than is available; more power will not be absorbed than capacity exits to store; and the battery's power limits will be respected. @@ -180,7 +200,9 @@ The sign conventions here are tricky. min(@BATTERY[ 1].loadSeen, 0) produces a }) }} -**btUseUsrChg=*choice*** +### btUseUsrChg + +Type: *choice* Former yes/no choice that currently has no effect. Deprecated, will be removed in a future version. diff --git a/doc/src/docs/input-data/boiler.md b/doc/src/docs/input-data/boiler.md index 25eab0572..5b58770b3 100644 --- a/doc/src/docs/input-data/boiler.md +++ b/doc/src/docs/input-data/boiler.md @@ -18,7 +18,9 @@ Name of BOILER object, given immediately after the word BOILER. The name is used }) }} -**blrCap=*float*** +### blrCap + +Type: *float* Heat output capacity of this BOILER. @@ -32,7 +34,9 @@ Heat output capacity of this BOILER. }) }} -**blrEffR=*float*** +### blrEffR + +Type: *float* Boiler efficiency at steady-state full load, as a fraction. 1.0 may be specified to model a 100% efficient boiler. @@ -46,7 +50,9 @@ Boiler efficiency at steady-state full load, as a fraction. 1.0 may be specified }) }} -**blrEirR=*float*** +### blrEirR + +Type: *float* Boiler Energy Input Ratio: alternate method of specifying efficiency. @@ -88,7 +94,9 @@ Meter to which Boiler's input energy is accumulated; if omitted, input energy is }) }} -**blrpGpm=*float*** +### blrpGpm + +Type: *float* Boiler pump flow in gallons per minute: amount of water pumped from this boiler through the hot water loop supplying the HEATPLANT's loads (HW coils and heat exchangers) whenever boiler is operating. @@ -102,7 +110,9 @@ Boiler pump flow in gallons per minute: amount of water pumped from this boiler }) }} -**blrpHdloss=*float*** +### blrpHdloss + +Type: *float* Boiler pump head loss (pressure). 0 may be specified to eliminate pump heat and pump energy input. @@ -118,7 +128,9 @@ Boiler pump head loss (pressure). 0 may be specified to eliminate pump heat and \* may be temporary value for 10-31-92 version; prior value of 35 may be restored. -**blrpMotEff=*float*** +### blrpMotEff + +Type: *float* Boiler pump motor efficiency. @@ -132,7 +144,9 @@ Boiler pump motor efficiency. }) }} -**blrpHydEff=*float*** +### blrpHydEff + +Type: *float* Boiler pump hydraulic efficiency @@ -180,7 +194,9 @@ blrAuxOnAtAll=*float*, Auxiliary power used in full value if boiler is on The following four allow specification of meters to record boiler auxiliary energy use through blrAuxOn, blrAuxOff, blrFullOff, and blrAuxOnAtAll, respectively. End use category "Aux" is used. -**blrAuxOn=*float*** +### blrAuxOn + +Type: *float* Additional input energy used in proportion to part load ratio when coil on, as for induced draft fan, hourly variable for unforeseen applications. @@ -194,7 +210,9 @@ Additional input energy used in proportion to part load ratio when coil on, as f }) }} -**blrAuxOnMtr=*mtrName*** +### blrAuxOnMtr + +Type: *mtrName* Meter to which to charge *auxOn*. @@ -208,7 +226,9 @@ Meter to which to charge *auxOn*. }) }} -**blrAuxOff=*float*** +### blrAuxOff + +Type: *float* Additional input energy when off for part or all of subhour. @@ -222,7 +242,9 @@ Additional input energy when off for part or all of subhour. }) }} -**blrAuxOffMtr=*mtrName*** +### blrAuxOffMtr + +Type: *mtrName* Meter to which to charge *auxOff*. @@ -236,7 +258,9 @@ Meter to which to charge *auxOff*. }) }} -**blrAuxFullOff=*float*** +### blrAuxFullOff + +Type: *float* Additional input energy when off for an entire subhour. @@ -250,7 +274,9 @@ Additional input energy when off for an entire subhour. }) }} -**blrAuxFullOffMtr=*mtrName*** +### blrAuxFullOffMtr + +Type: *mtrName* Meter to which to charge *blrAuxFullOff*. @@ -264,7 +290,9 @@ Meter to which to charge *blrAuxFullOff*. }) }} -**blrAuxOnAtall=*float*** +### blrAuxOnAtall + +Type: *float* Additional input energy used in coil on for any part of subhour, for unforeseen uses. @@ -278,7 +306,9 @@ Additional input energy used in coil on for any part of subhour, for unforeseen }) }} -**blrAuxOnAtAllMtr=*mtrName*** +### blrAuxOnAtAllMtr + +Type: *mtrName* MTR for "auxOnAtall" diff --git a/doc/src/docs/input-data/chiller.md b/doc/src/docs/input-data/chiller.md index 2d5658d94..47c4651ec 100644 --- a/doc/src/docs/input-data/chiller.md +++ b/doc/src/docs/input-data/chiller.md @@ -20,7 +20,9 @@ Name of CHILLER object, given immediately after the word CHILLER. This name is u The next four inputs allow specification of the CHILLER's capacity (amount of heat it can remove from the primary loop water) and how this capacity varies with the supply (leaving) temperature of the primary loop water and the entering temperature of the condenser (secondary loop) water. The chiller capacity at any supply and condenser temperatures is *chCapDs* times the value of *chPyCapT* at those temperatures. -**chCapDs=*float*** +### chCapDs + +Type: *float* Chiller design capacity, that is, the capacity at *chTsDs* and *chTcndDs* (next). @@ -34,7 +36,9 @@ Chiller design capacity, that is, the capacity at *chTsDs* and *chTcndDs* (next) }) }} -**chTsDs=*float*** +### chTsDs + +Type: *float* Design supply temperature: temperature of primary water leaving chiller at which capacity is *chCapDs*. @@ -48,7 +52,9 @@ Design supply temperature: temperature of primary water leaving chiller at which }) }} -**chTcndDs=*float*** +### chTcndDs + +Type: *float* Design condenser temperature: temperature of secondary water entering chiller condenser at which capacity is *chCapDs*. @@ -82,7 +88,9 @@ Up to six *float* values may be entered, separated by commas; CSE will use zero The next three inputs allow specification of the CHILLER's full-load energy input and how it varies with supply and condenser temperature. Only one of *chCop* and *chEirDs* should be given. The full-load energy input at any supply and condenser temperatures is the chiller's capacity at these temperatures, times *chEirDs* (or 1/*chCop*), times the value of *chPyEirT* at these temperatures. -**chCop=*float*** +### chCop + +Type: *float* Chiller full-load COP (Coefficient Of Performance) at *chTsDs*and *chTcndDs*. This is the output energy divided by the electrical input energy (in the same units) and reflects both motor and compressor efficiency. @@ -96,7 +104,9 @@ Chiller full-load COP (Coefficient Of Performance) at *chTsDs*and *chTcndDs*. Th }) }} -**chEirDs=*float*** +### chEirDs + +Type: *float* Alternate input for COP: Full-load Energy Input Ratio (electrical input energy divided by output energy) at design temperatures; the reciprocal of *chCop*. @@ -160,7 +170,9 @@ Up to four *float* values may be entered, separated by commas; CSE will use zero }) }} -**chMinUnldPlr=*float*** +### chMinUnldPlr + +Type: *float* Minimum compressor unloading part load ratio (plr); maximum false loading plr. See description above. @@ -174,7 +186,9 @@ Minimum compressor unloading part load ratio (plr); maximum false loading plr. S }) }} -**chMinFsldPlr=*float*** +### chMinFsldPlr + +Type: *float* Minimum compressor false loading part load ratio (plr); maximum cycling plr. See description above. @@ -188,7 +202,9 @@ Minimum compressor false loading part load ratio (plr); maximum cycling plr. See }) }} -**chMotEff=*float*** +### chMotEff + +Type: *float* Fraction of CHILLER compressor motor input power which goes to the condenser. For an open-frame motor and compressor, where the motor's waste heat goes to the air, enter the motor's efficiency: a fraction around .8 or .9. For a hermetic compressor, where the motor's waste heat goes to the refrigerant and thence to the condenser, use 1.0. @@ -202,7 +218,9 @@ Fraction of CHILLER compressor motor input power which goes to the condenser. Fo }) }} -**chMtr=*name*** +### chMtr + +Type: *name* Name of METER to which to accumulate CHILLER's electrical input energy. Category "Clg" is used. Note that two additional commands, *chppMtr* and *chcpMtr*, are used to specify meters for recording chiller pump input energy. @@ -218,7 +236,9 @@ Name of METER to which to accumulate CHILLER's electrical input energy. Category The next six inputs specify this CHILLER's *PRIMARY PUMP*, which pumps chilled water from the chiller through the CHW coils connected to the chiller's COOLPLANT. -**chppGpm=*float*** +### chppGpm + +Type: *float* Chiller primary pump flow in gallons per minute: amount of water pumped from this chiller through the primary loop supplying the COOLPLANT's loads (CHW coils) whenever chiller is operating. Any excess flow over that demanded by coils is assumed to go through a bypass valve. If coil flows exceed *chppGpm*, CSE assumes the pressure drops and the pump "overruns" to deliver the extra flow with the same energy input. The default is one gallon per minute for each 5000 Btuh of chiller design capacity. @@ -232,7 +252,9 @@ Chiller primary pump flow in gallons per minute: amount of water pumped from thi }) }} -**chppHdloss=*float*** +### chppHdloss + +Type: *float* Chiller primary pump head loss (pressure). 0 may be specified to eliminate pump heat and pump energy input. @@ -248,7 +270,9 @@ Chiller primary pump head loss (pressure). 0 may be specified to eliminate pump \* May be temporary default for 10-31-92 version; prior value (65) may be restored. -**chppMotEff=*float*** +### chppMotEff + +Type: *float* Chiller primary pump motor efficiency. @@ -262,7 +286,9 @@ Chiller primary pump motor efficiency. }) }} -**chppHydEff=*float*** +### chppHydEff + +Type: *float* Chiller primary pump hydraulic efficiency @@ -276,7 +302,9 @@ Chiller primary pump hydraulic efficiency }) }} -**chppOvrunF=*float*** +### chppOvrunF + +Type: *float* Chiller primary pump maximum overrun: factor by which flow demanded by coils can exceed *chppGpm*. The primary flow is not simulated in detail; *chppOvrun* is currently used only to issue an error message if the sum of the design flows of the coils connected to a COOLPLANT exceeds the sum of the products of *chppGpm* and *chppOvrun* for the chiller's in the plants most powerful stage. @@ -306,7 +334,9 @@ Meter to which primary pump electrical input energy is accumulated. If omitted, The next five inputs specify this CHILLER's *CONDENSER PUMP*, also known as the *SECONDARY PUMP* or the *HEAT REJECTION PUMP*. This pump pumps water from the chiller's condenser through the cooling towers in the COOLPLANT's TOWERPLANT. -**chcpGpm=*float*** +### chcpGpm + +Type: *float* Chiller condenser pump flow in gallons per minute: amount of water pumped from this chiller through the cooling towers when chiller is operating. @@ -320,7 +350,9 @@ Chiller condenser pump flow in gallons per minute: amount of water pumped from t }) }} -**chcpHdloss=*float*** +### chcpHdloss + +Type: *float* Chiller condenser pump head loss (pressure). 0 may be specified to eliminate pump heat and pump energy input. @@ -336,7 +368,9 @@ Chiller condenser pump head loss (pressure). 0 may be specified to eliminate pum \* May be temporary default for 10-31-92 version; prior value (45) may be restored. -**chcpMotEff=*float*** +### chcpMotEff + +Type: *float* Chiller condenser pump motor efficiency. @@ -350,7 +384,9 @@ Chiller condenser pump motor efficiency. }) }} -**chcpHydEff=*float*** +### chcpHydEff + +Type: *float* Chiller condenser pump hydraulic efficiency @@ -380,19 +416,27 @@ Meter to which condenser pump electrical input energy is accumulated. If omitted The following four members permit specification of auxiliary input power use associated with the chiller under the conditions indicated. -**chAuxOn=*float*** +### chAuxOn + +Type: *float* Auxiliary power used when chiller is running, in proportion to its subhour average part load ratio (plr). -**chAuxOff=*float*** +### chAuxOff + +Type: *float* Auxiliary power used when chiller is not running, in proportion to 1 - plr. -**chAuxFullOff=*float*** +### chAuxFullOff + +Type: *float* Auxiliary power used only when chiller is off for entire subhour; not used if the chiller is on at all during the subhour. -**chAuxOnAtAll=*float*** +### chAuxOnAtAll + +Type: *float* Auxiliary power used in full value if chiller is on for any fraction of subhour. @@ -408,11 +452,15 @@ Auxiliary power used in full value if chiller is on for any fraction of subhour. The following four allow specification of meters to record chiller auxiliary energy use through chAuxOn, chAuxOff, chFullOff, and chAuxOnAtAll, respectively. End use category "Aux" is used. -**chAuxOnMtr=*mtrName*** +### chAuxOnMtr + +Type: *mtrName* **chAuxOffMtr=*mtrName*** -**chAuxFullOffMtr=*mtrName*** +### chAuxFullOffMtr + +Type: *mtrName* **chAuxOnAtAllMtr=*mtrName*** diff --git a/doc/src/docs/input-data/construction.md b/doc/src/docs/input-data/construction.md index f54fe8989..9d7f02893 100644 --- a/doc/src/docs/input-data/construction.md +++ b/doc/src/docs/input-data/construction.md @@ -16,7 +16,9 @@ Name of construction. Required for reference from SURFACE and DOOR objects, belo }) }} -**conU=*float*** +### conU + +Type: *float* U-value for the construction (NOT including surface (air film) conductances; see SURFACE statements). If omitted, one or more LAYERs must immediately follow to specify the LAYERs that make up the construction. If specified, no LAYERs can follow. diff --git a/doc/src/docs/input-data/coolplant.md b/doc/src/docs/input-data/coolplant.md index 1359578dd..498d09896 100644 --- a/doc/src/docs/input-data/coolplant.md +++ b/doc/src/docs/input-data/coolplant.md @@ -24,7 +24,9 @@ Name of COOLPLANT object, given immediately after the word COOLPLANT. This name }) }} -**cpSched=*choice*** +### cpSched + +Type: *choice* Coolplant schedule: hourly variable choice of OFF, AVAIL, or ON. @@ -43,7 +45,9 @@ ON, COOLPLANT runs unconditionally. When no load wants chilled water, }) }} -**cpTsSp=*float*** +### cpTsSp + +Type: *float* Coolplant primary loop supply temperature setpoint: setpoint temperature for chilled water supplied to coils. @@ -57,7 +61,9 @@ Coolplant primary loop supply temperature setpoint: setpoint temperature for chi }) }} -**cpPipeLossF=*float*** +### cpPipeLossF + +Type: *float* Coolplant pipe loss: heat assumed gained from primary loop piping connecting chillers to loads whenever the COOLPLANT is operating, expressed as a fraction of the chiller capacity of the plant's most powerful stage. @@ -71,7 +77,9 @@ Coolplant pipe loss: heat assumed gained from primary loop piping connecting chi }) }} -**cpTowerplant=*name*** +### cpTowerplant + +Type: *name* TOWERPLANT that cools the condenser water for the chillers in this COOLPLANT. diff --git a/doc/src/docs/input-data/descond.md b/doc/src/docs/input-data/descond.md index c0f8e80ef..dad57efd1 100644 --- a/doc/src/docs/input-data/descond.md +++ b/doc/src/docs/input-data/descond.md @@ -16,7 +16,9 @@ Object name, given after “DESCOND”. Required for referencing from Top coolD }) }} -**dcDay=*date*** +### dcDay + +Type: *date* Calendar date for this design cooling condition. @@ -30,7 +32,9 @@ Calendar date for this design cooling condition. }) }} -**dcDB=*float*** +### dcDB + +Type: *float* Design dry-bulb temperature (maxiumum temperature on design day). @@ -45,7 +49,9 @@ Design dry-bulb temperature (maxiumum temperature on design day). }} -**dcMCDBR=*float*** +### dcMCDBR + +Type: *float* Coincident daily dry-bulb range. @@ -59,7 +65,9 @@ Coincident daily dry-bulb range. }) }} -**dcMCWB=*float*** +### dcMCWB + +Type: *float* Coincident wet-bulb design temperature. @@ -73,7 +81,9 @@ Coincident wet-bulb design temperature. }) }} -**dcMCWBR=*float*** +### dcMCWBR + +Type: *float* Coincident daily wet-bulb range. @@ -87,7 +97,9 @@ Coincident daily wet-bulb range. }) }} -**dcWindSpeed=*float*** +### dcWindSpeed + +Type: *float* Wind speed for design conditions. @@ -110,7 +122,9 @@ At most one of these methods can be used within a given DESCOND. If all solar-r **dcTauB=*float*** \ -**dcTauD=*float*** +### dcTauD + +Type: *float* ASHRAE clear sky model beam and diffuse pseudo optical depths. These values are available by month for many locations in ASHRAE design weather data. Cannot be given if dcEbnSlrNoon and dcEdhSlrNoon are specified. @@ -126,7 +140,9 @@ ASHRAE clear sky model beam and diffuse pseudo optical depths. These values are **dcEbnSlrNoon=*float*** \ -**dcEdhSlrNoon=*float*** +### dcEdhSlrNoon + +Type: *float* Solar noon direct beam and diffuse horizontal irradiance. Cannot be given if dcTauB and dcTauD are specified. diff --git a/doc/src/docs/input-data/dhwdayuse.md b/doc/src/docs/input-data/dhwdayuse.md index 4da532d3c..a6a743c50 100644 --- a/doc/src/docs/input-data/dhwdayuse.md +++ b/doc/src/docs/input-data/dhwdayuse.md @@ -62,7 +62,9 @@ Object name, given after “DHWDAYUSE”. Required for referencing from DHWSYS. }) }} -**wduMult=*float*** +### wduMult + +Type: *float* Scale factor applied to all draws in this DHWDAYUSE. diff --git a/doc/src/docs/input-data/dhwheatrec.md b/doc/src/docs/input-data/dhwheatrec.md index 6dd218c3d..9ec18ece6 100644 --- a/doc/src/docs/input-data/dhwheatrec.md +++ b/doc/src/docs/input-data/dhwheatrec.md @@ -16,7 +16,9 @@ Optional name of device; give after the word “DHWHEATREC” if desired. }) }} -**wrMult=*integer*** +### wrMult + +Type: *integer* Number of identical heat recovery devices of this type. Any value >1 is equivalent to repeated entry of the same DHWHEATREC. @@ -30,7 +32,9 @@ Number of identical heat recovery devices of this type. Any value >1 is equivale }) }} -**wrHWEndUse=*choice*** +### wrHWEndUse + +Type: *choice* Hot water end use to which this DHWHEATREC is applied: one of Shower, Bath, CWashr, DWashr, or Faucet. Selects DHWUSE draws for heat recovery calculations. Currently, only Shower is supported. @@ -45,7 +49,9 @@ Hot water end use to which this DHWHEATREC is applied: one of Shower, Bath, CWas }) }} -**wrCountFXDrain=*integer*** +### wrCountFXDrain + +Type: *integer* Number of fixtures (of type wrHWEndUse) whose drain lines pass through this heat recovery device. wrCountFXDrain=0 causes this DHWHEATREC to have no effect (that is, equivalent to omitting the DHWHEATREC command). @@ -59,7 +65,9 @@ Hot water end use to which this DHWHEATREC is applied: one of Shower, Bath, CWas }) }} -**wrCountFXCold=*integer*** +### wrCountFXCold + +Type: *integer* Number of fixtures (of type wrHWEndUse) with cold water supply connected to the DHWHEATREC potable-side outlet and thus use tempered water to mix with hot water. @@ -73,7 +81,9 @@ Hot water end use to which this DHWHEATREC is applied: one of Shower, Bath, CWas }) }} -**wrFeedsWH=*choice*** +### wrFeedsWH + +Type: *choice* Specifies whether the potable-side outlet of the DHWHEATREC is connected to the DHWHEATER(s) inlet. @@ -87,7 +97,9 @@ Specifies whether the potable-side outlet of the DHWHEATREC is connected to the }) }} -**wrType=*choice*** +### wrType + +Type: *choice* Specifies the type of heat recovery device: Vertical, Horizontal, or SetEF. Horizontal and Vertical derive effectiveness from wrCSARatedEF, flow rates, and water temperatures. As of Feb. 2019, the same correlation is used for both Horizontal and Vertical, so these choices have no effect on results. Choice SetEF uses wrCSARatedEF without modification as the effectiveness (note hourly variability). @@ -115,7 +127,9 @@ Specifies the heat recovery effectiveness, generally determined using CSA B55.2 }) }} -**wrTDInDiff=*float*** +### wrTDInDiff + +Type: *float* Temperature drop between the fixture drain and DHWHEATREC drain-side inlet. The drain-side inlet temperature is thus DHWUSE wuTemp - wrTDInDiff. @@ -129,7 +143,9 @@ Temperature drop between the fixture drain and DHWHEATREC drain-side inlet. The }) }} -**wrTDInWarmup=*float*** +### wrTDInWarmup + +Type: *float* Drain-side inlet water temperature during warmup. During the warmup portion of a draw (if any), the drain-side inlet temperature will initially be lower than that based on DHWUSE wuTemp. wrTDInWarmup allows input of user estimates for this temperature. Note wrTDInWarmup is *not* adjusted by wrTDInDiff. diff --git a/doc/src/docs/input-data/dhwloop.md b/doc/src/docs/input-data/dhwloop.md index eed95ef02..c54340560 100644 --- a/doc/src/docs/input-data/dhwloop.md +++ b/doc/src/docs/input-data/dhwloop.md @@ -16,7 +16,9 @@ Optional name of loop; give after the word “DHWLOOP” if desired. }) }} -**wlMult=*integer*** +### wlMult + +Type: *integer* Number of identical loops of this type. Any value $>1$ is equivalent to repeated entry of the same DHWLOOP (and all child objects). @@ -30,7 +32,9 @@ Number of identical loops of this type. Any value $>1$ is equivalent to repeated }) }} -**wlFlow=*float*** +### wlFlow + +Type: *float* Loop flow rate (when operating). @@ -44,7 +48,9 @@ Loop flow rate (when operating). }) }} -**wlTIn1=*float*** +### wlTIn1 + +Type: *float* Inlet temperature of first DHWLOOPSEG. @@ -58,7 +64,9 @@ Inlet temperature of first DHWLOOPSEG. }) }} -**wlRunF=*float*** +### wlRunF + +Type: *float* Fraction of hour that loop circulation operates. @@ -72,7 +80,9 @@ Fraction of hour that loop circulation operates. }) }} -**wlFUA=*float*** +### wlFUA + +Type: *float* DHWLOOPSEG pipe heat loss adjustment factor. DHWLOOPSEG UA is derived (from wgSize, wgLength, wgInsulK, wgInsulThk, and wgExH) and multiplied by wlFUA. Note: does not apply to child DHWLOOPBRANCHs (see wbFUA). @@ -86,7 +96,9 @@ DHWLOOPSEG pipe heat loss adjustment factor. DHWLOOPSEG UA is derived (from wgS }) }} -**wlLossMakeupPwr=*float*** +### wlLossMakeupPwr + +Type: *float* Specifies electrical power available to make up losses from DHWLOOPSEGs (loss from DHWLOOPBRANCHs is not included). Separate loss makeup is typically used in multi-unit HPWH systems to avoid inefficiencies associated with high condenser temperatures. Loss-makeup energy is calculated hourly and is the smaller of loop losses and wlLossMakeupPwr. The resulting electricity use (including the effect of wlLossMakeupEff) is accumulated to the METER specified by wlElecMtr (end use dhwMFL). No other effect, such as heat gain to surroundings, is modeled. @@ -100,7 +112,9 @@ Specifies electrical power available to make up losses from DHWLOOPSEGs (loss fr }) }} -**wlLossMakeupEff=*float*** +### wlLossMakeupEff + +Type: *float* Specifies the efficiency of loss makeup heating if any. No effect when wlLossMakeupPwr is 0. @@ -114,7 +128,9 @@ Specifies the efficiency of loss makeup heating if any. No effect when wlLossMa }) }} -**wlElecMtr=*mtrName*** +### wlElecMtr + +Type: *mtrName* Name of METER object, if any, to which DHWLOOP electrical energy use is recorded (under end use dhwMFL). diff --git a/doc/src/docs/input-data/dhwloopbranch.md b/doc/src/docs/input-data/dhwloopbranch.md index c40683da9..909d1bdb2 100644 --- a/doc/src/docs/input-data/dhwloopbranch.md +++ b/doc/src/docs/input-data/dhwloopbranch.md @@ -16,7 +16,9 @@ Optional name of segment; give after the word “DHWLOOPBRANCH” if desired. }) }} -**wbMult=*float*** +### wbMult + +Type: *float* Specifies the number of identical DHWLOOPBRANCHs. Note may be non-integer. @@ -30,7 +32,9 @@ Specifies the number of identical DHWLOOPBRANCHs. Note may be non-integer. }) }} -**wbLength=*float*** +### wbLength + +Type: *float* Length of branch. @@ -44,7 +48,9 @@ Length of branch. }) }} -**wbSize=*float*** +### wbSize + +Type: *float* Nominal size of pipe. CSE assumes the pipe outside diameter = size + 0.125 in. @@ -58,7 +64,9 @@ Nominal size of pipe. CSE assumes the pipe outside diameter = size + 0.125 in. }) }} -**wbInsulK=*float*** +### wbInsulK + +Type: *float* Pipe insulation conductivity @@ -72,7 +80,9 @@ Pipe insulation conductivity }) }} -**wbInsulThk=*float*** +### wbInsulThk + +Type: *float* Pipe insulation thickness @@ -86,7 +96,9 @@ Pipe insulation thickness }) }} -**wbExH=*float*** +### wbExH + +Type: *float* Combined radiant/convective exterior surface conductance between insulation (or pipe if no insulation) and surround. @@ -100,7 +112,9 @@ Combined radiant/convective exterior surface conductance between insulation (or }) }} -**wbExCnd=*choice*** +### wbExCnd + +Type: *choice* Specify exterior conditions. @@ -122,7 +136,9 @@ GROUND, Ground conditions", True) }) }} -**wbAdjZn=*float*** +### wbAdjZn + +Type: *float* Boundary conditions for adjacent zones. @@ -136,7 +152,9 @@ Boundary conditions for adjacent zones. }) }} -**wbExTX=*float*** +### wbExTX + +Type: *float* External boundary conditions. @@ -150,7 +168,9 @@ External boundary conditions. }) }} -**wbFUA=*float*** +### wbFUA + +Type: *float* Adjustment factor applied to branch UA. UA is derived (from wbSize, wbLength, wbInsulK, wbInsulThk, and wbExH) and then multiplied by wbFUA. Used to represent e.g. imperfect insulation. Note that parent DHWLOOP wlFUA does not apply to DHWLOOPBRANCH (only DHWLOOPSEG) @@ -164,7 +184,9 @@ Adjustment factor applied to branch UA. UA is derived (from wbSize, wbLength, w }) }} -**wbExT=*float*** +### wbExT + +Type: *float* Surrounding equivalent temperature. @@ -178,7 +200,9 @@ Surrounding equivalent temperature. }) }} -**wbFlow=*float*** +### wbFlow + +Type: *float* Branch flow rate assumed during draw. @@ -192,7 +216,9 @@ Branch flow rate assumed during draw. }) }} -**wbFWaste=*float*** +### wbFWaste + +Type: *float* Number of times during the hour when the branch volume is discarded. diff --git a/doc/src/docs/input-data/dhwlooppump.md b/doc/src/docs/input-data/dhwlooppump.md index 29d7a6c00..6061e7b84 100644 --- a/doc/src/docs/input-data/dhwlooppump.md +++ b/doc/src/docs/input-data/dhwlooppump.md @@ -16,7 +16,9 @@ Optional name of pump; give after the word “DHWLOOPPUMP” if desired. }) }} -**wlpMult=*integer*** +### wlpMult + +Type: *integer* Number of identical pumps of this type. Any value $>1$ is equivalent to repeated entry of the same DHWPUMP. @@ -30,7 +32,9 @@ Number of identical pumps of this type. Any value $>1$ is equivalent to repeated }) }} -**wlpPwr=*float*** +### wlpPwr + +Type: *float* Pump power. @@ -44,7 +48,9 @@ Pump power. }) }} -**wlpLiqHeatF=*float*** +### wlpLiqHeatF + +Type: *float* Fraction of pump power that heats circulating liquid. The remainder is discarded. @@ -58,7 +64,9 @@ Fraction of pump power that heats circulating liquid. The remainder is discarde }) }} -**wlpElecMtr=*mtrName*** +### wlpElecMtr + +Type: *mtrName* Name of METER object, if any, to which DHWLOOPPUMP electrical energy use is recorded (under end use dhwMFL). diff --git a/doc/src/docs/input-data/dhwloopseg.md b/doc/src/docs/input-data/dhwloopseg.md index 586526c6c..e26bd053d 100644 --- a/doc/src/docs/input-data/dhwloopseg.md +++ b/doc/src/docs/input-data/dhwloopseg.md @@ -16,7 +16,9 @@ Optional name of segment; give after the word “DHWLOOPSEG” if desired. }) }} -**wgTy=*choice*** +### wgTy + +Type: *choice* Specifies the type of segment. RETURN segments, if any, must follow SUPPLY segments. @@ -34,7 +36,9 @@ Specifies the type of segment. RETURN segments, if any, must follow SUPPLY segm }) }} -**wgLength=*float*** +### wgLength + +Type: *float* Length of segment. @@ -48,7 +52,9 @@ Length of segment. }) }} -**wgSize=*float*** +### wgSize + +Type: *float* Nominal size of pipe. CSE assumes the pipe outside diameter = size + 0.125 in. @@ -62,7 +68,9 @@ Nominal size of pipe. CSE assumes the pipe outside diameter = size + 0.125 in. }) }} -**wgInsulK=*float*** +### wgInsulK + +Type: *float* Pipe insulation conductivity @@ -76,7 +84,9 @@ Pipe insulation conductivity }) }} -**wgInsulThk=*float*** +### wgInsulThk + +Type: *float* Pipe insulation thickness @@ -90,7 +100,9 @@ Pipe insulation thickness }) }} -**wgExH=*float*** +### wgExH + +Type: *float* Combined radiant/convective exterior surface conductance between insulation (or pipe if no insulation) and surround. @@ -104,7 +116,9 @@ Combined radiant/convective exterior surface conductance between insulation (or }) }} -**wgExT=*float*** +### wgExT + +Type: *float* Surrounding equivalent temperature. @@ -118,7 +132,9 @@ Surrounding equivalent temperature. }) }} -**wgFNoDraw=*float*** +### wgFNoDraw + +Type: *float* Fraction of hour when no draw occurs. diff --git a/doc/src/docs/input-data/dhwpump.md b/doc/src/docs/input-data/dhwpump.md index 7d988eb28..02dee5f57 100644 --- a/doc/src/docs/input-data/dhwpump.md +++ b/doc/src/docs/input-data/dhwpump.md @@ -16,7 +16,9 @@ Optional name of pump; give after the word “DHWPUMP” if desired. }) }} -**wpMult=*integer*** +### wpMult + +Type: *integer* Number of identical pumps of this type. Any value $>1$ is equivalent to repeated entry of the same DHWPUMP. @@ -30,7 +32,9 @@ Number of identical pumps of this type. Any value $>1$ is equivalent to repeated }) }} -**wpPwr=*float*** +### wpPwr + +Type: *float* Pump power. @@ -44,7 +48,9 @@ Pump power. }) }} -**wpElecMtr=*mtrName*** +### wpElecMtr + +Type: *mtrName* Name of METER object, if any, to which DHWPUMP electrical energy use is recorded (under end use DHW). diff --git a/doc/src/docs/input-data/dhwsolarcollector.md b/doc/src/docs/input-data/dhwsolarcollector.md index 5b167d1df..dac7fcd61 100644 --- a/doc/src/docs/input-data/dhwsolarcollector.md +++ b/doc/src/docs/input-data/dhwsolarcollector.md @@ -4,7 +4,9 @@ Solar Collector Array. May be multiple collectors on the same DHWSOLARSYS system Uses SRCC Ratings. -**scArea=*float*** +### scArea + +Type: *float* Collector area. @@ -32,7 +34,9 @@ Number of identical collectors, default 1 }) }} -**scTilt=*float*** +### scTilt + +Type: *float* Array tilt. @@ -46,7 +50,9 @@ Array tilt. }) }} -**scAzm=*float*** +### scAzm + +Type: *float* Array azimuth. @@ -60,7 +66,9 @@ Array azimuth. }) }} -**scFRUL=*float*** +### scFRUL + +Type: *float* Fit slope @@ -74,7 +82,9 @@ Fit slope }) }} -**scFRTA=*float*** +### scFRTA + +Type: *float* Fit y-intercept @@ -88,7 +98,9 @@ Fit y-intercept }) }} -**scTestMassFlow=*flaot*** +### scTestMassFlow + +Type: *flaot* Mass flow rate for collector loop SRCC rating. @@ -102,7 +114,9 @@ Mass flow rate for collector loop SRCC rating. }) }} -**scKta60=*float*** +### scKta60 + +Type: *float* Incident angle modifier at 60 degree, from SRCC rating. @@ -116,7 +130,9 @@ Incident angle modifier at 60 degree, from SRCC rating. }) }} -**scOprMassFlow=*float*** +### scOprMassFlow + +Type: *float* Collector loop operating mass flow rate. @@ -130,7 +146,9 @@ Collector loop operating mass flow rate. }) }} -**scPipingLength=*float*** +### scPipingLength + +Type: *float* Collector piping length. @@ -144,7 +162,9 @@ Collector piping length. }) }} -**scPipingInsulK=*float*** +### scPipingInsulK + +Type: *float* Collector piping insulation conductivity. @@ -158,7 +178,9 @@ Collector piping insulation conductivity. }) }} -**scPipingInsulThk=*float*** +### scPipingInsulThk + +Type: *float* Collector piping insulation thickness. @@ -172,7 +194,9 @@ Collector piping insulation thickness. }) }} -**scPipingExH=*float*** +### scPipingExH + +Type: *float* Collector piping heat transfer coefficient. @@ -186,7 +210,9 @@ Collector piping heat transfer coefficient. }) }} -**scPipingExT=*float*** +### scPipingExT + +Type: *float* Collector piping surround temperature. @@ -200,7 +226,9 @@ Collector piping surround temperature. }) }} -**scPumpPwr=*float*** +### scPumpPwr + +Type: *float* {{ member_table({ @@ -212,7 +240,9 @@ Collector piping surround temperature. }) }} -**scPumpLiqHeatF=*float*** +### scPumpLiqHeatF + +Type: *float* Fraction of scPumpPwr added to liquid stream, the remainder is discarded. @@ -226,7 +256,9 @@ Fraction of scPumpPwr added to liquid stream, the remainder is discarded. }) }} -**scPumpOnDeltaT=*float*** +### scPumpOnDeltaT + +Type: *float* Temperature difference between the tank and collector outlet where pump turns on @@ -240,7 +272,9 @@ Temperature difference between the tank and collector outlet where pump turns on }) }} -**scPumpOffDeltaT=*float*** +### scPumpOffDeltaT + +Type: *float* Temperature difference between the tank and collector outlet where pump turns off diff --git a/doc/src/docs/input-data/dhwsolarsys.md b/doc/src/docs/input-data/dhwsolarsys.md index f4e76acd9..d72768c79 100644 --- a/doc/src/docs/input-data/dhwsolarsys.md +++ b/doc/src/docs/input-data/dhwsolarsys.md @@ -10,7 +10,9 @@ May have any number of solar collectors, but only one tank. May have no tank for direct system? What if system has multiple primary tanks? -**swElecMtr=*mtrName*** +### swElecMtr + +Type: *mtrName* Name of METER object, if any, to which DHWSOLARSYS electrical energy use is recorded (under end use ???). @@ -24,7 +26,9 @@ Name of METER object, if any, to which DHWSOLARSYS electrical energy use is reco }) }} -**swSCFluidSpHt=*float*** +### swSCFluidSpHt + +Type: *float* Specific heat for the collector fluid. @@ -38,7 +42,9 @@ Specific heat for the collector fluid. }) }} -**swSCFluidDens=*float*** +### swSCFluidDens + +Type: *float* Density for the collector fluid. @@ -56,7 +62,9 @@ Density for the collector fluid. End use of pump energy; defaults to "DHW". -**swParElec=*float*** +### swParElec + +Type: *float* {{ member_table({ @@ -68,7 +76,9 @@ End use of pump energy; defaults to "DHW". }) }} -**swTankHXEff=*float*** +### swTankHXEff + +Type: *float* Tank heat exchanger effectiveness. @@ -82,7 +92,9 @@ Tank heat exchanger effectiveness. }) }} -**swTankTHxLimit=*float*** +### swTankTHxLimit + +Type: *float* Temperature limit for the tank collector. @@ -96,7 +108,9 @@ Temperature limit for the tank collector. }) }} -**swTankUA=*float*** +### swTankUA + +Type: *float* Heat transfer coefficient for the tank multiplied by area. @@ -110,7 +124,9 @@ Heat transfer coefficient for the tank multiplied by area. }) }} -**swTankVol=*float*** +### swTankVol + +Type: *float* {{ member_table({ @@ -122,7 +138,9 @@ Heat transfer coefficient for the tank multiplied by area. }) }} -**swTankInsulR=*float*** +### swTankInsulR + +Type: *float* Total tank insulation resistance, built-in plus exterior wrap. @@ -136,7 +154,9 @@ Total tank insulation resistance, built-in plus exterior wrap. }) }} -**swTankZone=*znName*** +### swTankZone + +Type: *znName* Pointer to tank zone location, use sw_tankTEx if NULL @@ -150,7 +170,9 @@ Pointer to tank zone location, use sw_tankTEx if NULL }) }} -**swTankTEx=*float*** +### swTankTEx + +Type: *float* Surrounding temperature. diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index 70622c58b..6271fada8 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -31,7 +31,9 @@ Optional name of system; give after the word “DHWSYS” if desired. }) }} -**wsCalcMode=*choice*** +### wsCalcMode + +Type: *choice* Enables preliminary simulation that derives values needed for simulation. @@ -60,7 +62,9 @@ This order avoids duplicate time-consuming simulation of the full building model }) }} -**wsCentralDHWSYS=*dhwsysName*** +### wsCentralDHWSYS + +Type: *dhwsysName* Name of the central DHWSYS that serves this DHWSYS, allowing representation of multiple units having distinct distribution configurations and/or water use patterns but served by a central DHWSYS. The child DHWSYS(s) may not include DHWHEATERs -- they are "loads only" systems. wsCentralDHWSYS and wsLoadShareDHWSYS cannot both be given. @@ -74,7 +78,9 @@ This order avoids duplicate time-consuming simulation of the full building model }) }} -**wsLoadShareDHWSYS=*dhwsysName*** +### wsLoadShareDHWSYS + +Type: *dhwsysName* Name of a DHWSYS that serves the same loads as this DHWSYS, allowing representation of multiple water heating systems within a unit. If given, wsUse and wsDayUse are not allowed, hot water requirements are derived from the referenced DHWSYS. wsCentralDHWSYS and wsLoadShareDHWSYS cannot both be given. @@ -93,7 +99,9 @@ This order avoids duplicate time-consuming simulation of the full building model }) }} -**wsMult=*float*** +### wsMult + +Type: *float* Number of identical systems of this type (including all child objects). Any value $> 1$ is equivalent to repeated entry of the same DHWSYS. A value of 0 is equivalent to omitting the DHWSYS. Non-integral values scale all results; this may be useful in parameterized models, for example. @@ -111,7 +119,9 @@ Number of identical systems of this type (including all child objects). Any valu **wsShowerCount=*integer***\ **wsBathCount=*integer***\ **wsCWashrCount=*integer***\ -**wsDWashrCount=*integer*** +### wsDWashrCount + +Type: *integer* Specifies the count of fixtures served by this DHWSYS that can accommodate draws of each end use (see DHWUSE). These counts are used for distributing draws in shared load configurations (multiple DHWSYSs serving the same loads, see wsLoadShareDHWSYS above). @@ -129,7 +139,9 @@ Unless this DHWSYS is part of a shared-load group or includes DHWHEATREC(s), the }) }} -**wsTInlet=*float*** +### wsTInlet + +Type: *float* Specifies cold (mains) water temperature supplying this DHWSYS. DHWHEATER supply water temperature wsTInlet adjusted (increased) by any DHWHEATREC recovered heat and application of wsSSF (approximating solar preheating). @@ -143,7 +155,9 @@ Specifies cold (mains) water temperature supplying this DHWSYS. DHWHEATER suppl }) }} -**wsTInletTest=*float*** +### wsTInletTest + +Type: *float* Overides at the substep interval the cold (mains) water temperature supplying this DHWSYS. @@ -159,7 +173,9 @@ CAUTION: wsTInletTest is intended for testing and model validation studies and s }) }} -**wsTInletDes=*float*** +### wsTInletDes + +Type: *float* Cold water inlet design temperature for sizing. @@ -173,7 +189,9 @@ Cold water inlet design temperature for sizing. }) }} -**wsUse=*float*** +### wsUse + +Type: *float* Hourly hot water use (at the point of use). See further info under wsDayUse. @@ -187,7 +205,9 @@ Hourly hot water use (at the point of use). See further info under wsDayUse. }) }} -**wsUseTest=*float*** +### wsUseTest + +Type: *float* Additional substep hot water use added to draw(s) specfied by wsHWUse and wsDayUse. @@ -203,7 +223,9 @@ CAUTION: wsUseTest is intended for testing and model validation studies and shou }) }} -**wsDayUse=*dhwdayuseName*** +### wsDayUse + +Type: *dhwdayuseName* Name of DHWDAYUSE object that specifies a detailed schedule of mixed water use at points of hot water use (that is, "at the tap"). The mixed water amounts are used to derive hot water requirements based on specified mixing fractions or mixed water temperature (see DHWDAYUSE and DHWUSE). @@ -228,7 +250,9 @@ CAUTION: wsUseTest is intended for testing and model validation studies and shou }) }} -**wsFaucetDrawDurF=*float*** +### wsFaucetDrawDurF + +Type: *float* Water heater draw duration factor for faucets. Defined as the ratio of the actual draw duration (including time waiting for hot water to arrive at the fixture) to the nominal draw duration (as though hot water was instantly available). @@ -242,7 +266,9 @@ Water heater draw duration factor for faucets. Defined as the ratio of the actua }) }} -**wsShowerDrawDurF=*float*** +### wsShowerDrawDurF + +Type: *float* Water heater draw duration factor for showers. Defined as the ratio of the actual draw duration (including time waiting for hot water to arrive at the fixture) to the nominal draw duration (as though hot water was instantly available). @@ -256,7 +282,9 @@ Water heater draw duration factor for showers. Defined as the ratio of the actua }) }} -**wsBathDrawDurF=*float*** +### wsBathDrawDurF + +Type: *float* Water heater draw duration factor for baths. Defined as the ratio of the actual draw duration (including time waiting for hot water to arrive at the fixture) to the nominal draw duration (as though hot water was instantly available). @@ -270,7 +298,9 @@ Water heater draw duration factor for baths. Defined as the ratio of the actual }) }} -**wsCWashrDrawDurF=*float*** +### wsCWashrDrawDurF + +Type: *float* Water heater draw duration factor for clothes washers. Defined as the ratio of the actual draw duration (including time waiting for hot water to arrive at the fixture) to the nominal draw duration (as though hot water was instantly available). @@ -284,7 +314,9 @@ Water heater draw duration factor for clothes washers. Defined as the ratio of t }) }} -**wsDWashrDurF=*float*** +### wsDWashrDurF + +Type: *float* Water heater draw duration factor for dishwashers. Defined as the ratio of the actual draw duration (including time waiting for hot water to arrive at the fixture) to the nominal draw duration (as though hot water was instantly available). @@ -298,7 +330,9 @@ Water heater draw duration factor for dishwashers. Defined as the ratio of the a }) }} -**wsUnkDrawDurF=*float*** +### wsUnkDrawDurF + +Type: *float* Water heater draw duration factor for unknown end use. Defined as the ratio of the actual draw duration (including time waiting for hot water to arrive at the fixture) to the nominal draw duration (as though hot water was instantly available). @@ -312,7 +346,9 @@ Water heater draw duration factor for unknown end use. Defined as the ratio of t }) }} -**wsFaucetDrawWaste=*float*** +### wsFaucetDrawWaste + +Type: *float* Draw water waste for faucets. Specifies additional draw volume per DHWUSE event (at fixture, by end use). This can be used to account for water discarded during warmup or otherwise adjust the draw volume. Because the values are at the fixture, the impact on hot water demand additionally depends on DHWUSE parameters. The value is applied by lengthening (or shortening) the draw duration. @@ -326,7 +362,9 @@ Draw water waste for faucets. Specifies additional draw volume per DHWUSE event }) }} -**wsShowerDrawWaste=*float*** +### wsShowerDrawWaste + +Type: *float* Draw water waste for showers. Specifies additional draw volume per DHWUSE event (at fixture, by end use). This can be used to account for water discarded during warmup or otherwise adjust the draw volume. Because the values are at the fixture, the impact on hot water demand additionally depends on DHWUSE parameters. The value is applied by lengthening (or shortening) the draw duration. @@ -340,7 +378,9 @@ Draw water waste for showers. Specifies additional draw volume per DHWUSE event }) }} -**wsBathDrawWaste=*float*** +### wsBathDrawWaste + +Type: *float* Draw water waste for baths. Specifies additional draw volume per DHWUSE event (at fixture, by end use). This can be used to account for water discarded during warmup or otherwise adjust the draw volume. Because the values are at the fixture, the impact on hot water demand additionally depends on DHWUSE parameters. The value is applied by lengthening (or shortening) the draw duration. @@ -354,7 +394,9 @@ Draw water waste for baths. Specifies additional draw volume per DHWUSE event (a }) }} -**wsCWashrDrawWaste=*float*** +### wsCWashrDrawWaste + +Type: *float* Draw water waste for clothes washers. Specifies additional draw volume per DHWUSE event (at fixture, by end use). This can be used to account for water discarded during warmup or otherwise adjust the draw volume. Because the values are at the fixture, the impact on hot water demand additionally depends on DHWUSE parameters. The value is applied by lengthening (or shortening) the draw duration. @@ -368,7 +410,9 @@ Draw water waste for clothes washers. Specifies additional draw volume per DHWUS }) }} -**wsDWashrDrawWaste=*float*** +### wsDWashrDrawWaste + +Type: *float* Draw water waste for dishwashers. Specifies additional draw volume per DHWUSE event (at fixture, by end use). This can be used to account for water discarded during warmup or otherwise adjust the draw volume. Because the values are at the fixture, the impact on hot water demand additionally depends on DHWUSE parameters. The value is applied by lengthening (or shortening) the draw duration. @@ -382,7 +426,9 @@ Draw water waste for dishwashers. Specifies additional draw volume per DHWUSE ev }) }} -**wsUnkDrawWaste=*float*** +### wsUnkDrawWaste + +Type: *float* Draw water waste for unknown end use. Specifies additional draw volume per DHWUSE event (at fixture, by end use). This can be used to account for water discarded during warmup or otherwise adjust the draw volume. Because the values are at the fixture, the impact on hot water demand additionally depends on DHWUSE parameters. The value is applied by lengthening (or shortening) the draw duration. @@ -396,7 +442,9 @@ Draw water waste for unknown end use. Specifies additional draw volume per DHWUS }) }} -**wsTRLTest=*float*** +### wsTRLTest + +Type: *float* Circulation loop return temperature for testing and validation. @@ -410,7 +458,9 @@ Circulation loop return temperature for testing and validation. }) }} -**wsVolRLTest=*float*** +### wsVolRLTest + +Type: *float* Circulation loop volume flow rate for testing and validation. @@ -425,7 +475,9 @@ Circulation loop volume flow rate for testing and validation. }} -**wsBranchModel=*choice*** +### wsBranchModel + +Type: *choice* Branch model selection. @@ -435,7 +487,9 @@ DRAWWASTE,Draw duration increase per draw waste DAYWASTE,draw duration increase per day waste", True) }} -**wsDayWasteVol=*float*** +### wsDayWasteVol + +Type: *float* Average amount of waste per day. @@ -449,7 +503,9 @@ Average amount of waste per day. }) }} -**wsDayWasteBranchVolF=*float*** +### wsDayWasteBranchVolF + +Type: *float* Day waste scaling factor. @@ -463,7 +519,9 @@ Day waste scaling factor. }) }} -**wsFaucetDayWasteF=*float*** +### wsFaucetDayWasteF + +Type: *float* Relative faucet water draw for day of waste scheme. @@ -477,7 +535,9 @@ Relative faucet water draw for day of waste scheme. }) }} -**wsShowerDayWasteF=*float*** +### wsShowerDayWasteF + +Type: *float* Relative shower water draw for day of waste scheme. @@ -491,7 +551,9 @@ Relative shower water draw for day of waste scheme. }) }} -**wsBathDayWasteF=*float*** +### wsBathDayWasteF + +Type: *float* Relative bath water draw for day of waste scheme. @@ -505,7 +567,9 @@ Relative bath water draw for day of waste scheme. }) }} -**wsCWashrDayWasteF=*float*** +### wsCWashrDayWasteF + +Type: *float* Relative clothes washer water draw for day of waste scheme. @@ -519,7 +583,9 @@ Relative clothes washer water draw for day of waste scheme. }) }} -**wsDWashrDayWasteF=*float*** +### wsDWashrDayWasteF + +Type: *float* Relative dish washer water draw for day of waste scheme. @@ -533,7 +599,9 @@ Relative dish washer water draw for day of waste scheme. }) }} -**wsUnkDayWasteF=*float*** +### wsUnkDayWasteF + +Type: *float* Unknown relative water draw for day of waste scheme. @@ -547,7 +615,9 @@ Unknown relative water draw for day of waste scheme. }) }} -**wsTUse=*float*** +### wsTUse + +Type: *float* Hot water delivery temperature (at output of water heater(s) and at point of use). Delivered water is mixed down to wsTUSe (with cold water) or heated to wsTUse (with extra electric resistance backup, see DHWHEATER whXBUEndUse). Note that draws defined via DHWDAYUSE / DHWUSE can specify mixing to a lower temperature. @@ -561,7 +631,9 @@ Hot water delivery temperature (at output of water heater(s) and at point of use }) }} -**wsTUseTest=*float*** +### wsTUseTest + +Type: *float* Overides at the substep interval the hot water delivery temperature. @@ -577,7 +649,9 @@ CAUTION: wsTUseTest is intended for testing and model validation studies and sho }) }} -**wsTSetPoint=*float*** +### wsTSetPoint + +Type: *float* Specifies the hot water setpoint temperature for all child DHWHEATERs. Used only for HPWH-based DHWHEATERs (HPWH models tank temperatures and heating controls), otherwise has no effect. wsTSetpoint can be modified hourly to achieve load-shifting effects. @@ -591,7 +665,9 @@ CAUTION: wsTUseTest is intended for testing and model validation studies and sho }) }} -**wsTSetPointLH=*float*** +### wsTSetPointLH + +Type: *float* Specifies the hot water set point temperature for all child DHWLOOPHEATERs. Used only for HPWH-based DHWHLOOPEATERs (HPWH explicitly models tank temperatures and heating controls), otherwise has no effect. @@ -605,7 +681,9 @@ CAUTION: wsTUseTest is intended for testing and model validation studies and sho }) }} -**wsTSetpointDes=*float*** +### wsTSetpointDes + +Type: *float* Specifies the design (sizing) set point temperature. @@ -619,7 +697,9 @@ Specifies the design (sizing) set point temperature. }) }} -**wsVolRunningDes=*float*** +### wsVolRunningDes + +Type: *float* Running volume for design. Active volume (above aquastat) equals to a full tank volume, defaults from EcoSizer at end of prerun if not input. No direct use, must be passed to DHWHEATER via ALTER. @@ -633,7 +713,9 @@ Running volume for design. Active volume (above aquastat) equals to a full tank }) }} -**wsASHPTSrcDes=*float*** +### wsASHPTSrcDes + +Type: *float* Design (sizing) source air temperature for HPWH DHWHEATERs. @@ -647,7 +729,9 @@ Design (sizing) source air temperature for HPWH DHWHEATERs. }) }} -**wsFxDes=*float*** +### wsFxDes + +Type: *float* Excess size factor for domestic hot water design. wsFxDes is applied when wsHeatingCapDes and/or wsVolRunningDes are defaulted from EcoSizer at the end of the prerun. There is no effect if those values are input. @@ -661,7 +745,9 @@ Excess size factor for domestic hot water design. wsFxDes is applied when wsHeat }) }} -**wsDRMethod=*choice*** +### wsDRMethod + +Type: *choice* Selects alternative control schemes for HPWH-based DHWHEATERs. These allow shifting primary heater (compressor or resistance element) operation to times of day that have load-management advantages. @@ -681,7 +767,9 @@ STATEOFCHARGE, State-of-charge (see wsTargetSOC)", True) }) }} -**wsDRSignal=*choice*** +### wsDRSignal + +Type: *choice* When (and only when) wsDRMethod=SCHEDULE, wsDRSignal allows hourly specification of modified control schemes. Available signals are: @@ -720,7 +808,9 @@ Note also that wsTSetpoint can be also be modified hourly to achieve load-shifti }) }} -**wsTargetSOC=*float*** +### wsTargetSOC + +Type: *float* When (and only when) wsDRMethod=STATEOFCHARGE, wsTargetSOC specifies the target fraction of maximum tank heat content. The tank is deemed fully charged when its entire contents is at wsTSetpoint and 0 charged at 110 ^o^F. Schedules are used to indicate anticipated heat requirements. The STATEOFCHARGE method can be used in combined heat / DHW systems (see RSYS rsType=COMBINEDHEATDHW) when there is excess capacity during summer months, as shown in the following: @@ -747,7 +837,9 @@ wsTargetSOC = select( }) }} -**wsSDLM=*float*** +### wsSDLM + +Type: *float* Specifies the standard distribution loss multiplier. See App B Eqn 4. To duplicate CEC 2019 methods, this value should be set according to the value derived with App B Eqn 5. @@ -761,7 +853,9 @@ Specifies the standard distribution loss multiplier. See App B Eqn 4. To duplica }) }} -**wsDSM=*float*** +### wsDSM + +Type: *float* Distribution system multiplier. See RACM App B Eqn 4. To duplicate CEC 2016 methods, wsDSM should be set to the appropriate value from App B Table B-2. Note the NCF (non-compliance factor) included in App B Eqn 4 is *not* a CSE input and thus must be applied externally to wsDSM. @@ -775,7 +869,9 @@ Distribution system multiplier. See RACM App B Eqn 4. To duplicate CEC 2016 meth }) }} -**wsWF=*float*** +### wsWF + +Type: *float* Waste factor. See RACM App B Eqn 1. wsWF is applied to hot water draws. The default value (1) reflects the inclusion of waste in draw amounts. App B specifies wsWF=0.9 when the system has a within-unit pumped loop that reduces waste due to immediate availability of hot water at fixtures. @@ -789,7 +885,9 @@ Waste factor. See RACM App B Eqn 1. wsWF is applied to hot water draws. The def }) }} -**wsSSF=*float*** +### wsSSF + +Type: *float* NOTE: Deprecated. Use wsSolarSys instead. @@ -810,7 +908,9 @@ where tInletAdj is the source cold water temperature *including any DHWHEATREC t }) }} -**wsSolarSys=*dhwSolarSys*** +### wsSolarSys + +Type: *dhwSolarSys* Name of DHWSOLARSYS object, if any, that supplies pre-heated water to this DHWSYS. @@ -824,7 +924,9 @@ Name of DHWSOLARSYS object, if any, that supplies pre-heated water to this DHWSY }) }} -**wsParElec=*float*** +### wsParElec + +Type: *float* Specifies electrical parasitic power to represent recirculation pumps or other system-level electrical devices. Calculated energy use is accumulated to the METER specified by wsElecMtr (end use DHW). No other effect, such as heat gain to surroundings, is modeled. @@ -838,7 +940,9 @@ Specifies electrical parasitic power to represent recirculation pumps or other s }) }} -**wsDrawMaxDur=*integer*** +### wsDrawMaxDur + +Type: *integer* Maximum draw duration for the sizing window. @@ -852,7 +956,9 @@ Maximum draw duration for the sizing window. }) }} -**wsLoadMaxDur=*integer*** +### wsLoadMaxDur + +Type: *integer* Maximum load duration for the sizing window. @@ -866,7 +972,9 @@ Maximum load duration for the sizing window. }) }} -**wsElecMtr=*mtrName*** +### wsElecMtr + +Type: *mtrName* Name of METER object, if any, to which DHWSYS electrical energy use is recorded (under end use DHW). In addition, wsElecMtr provides the default whElectMtr selection for all DHWHEATERs and DHWPUMPs in this DHWSYS. @@ -894,7 +1002,9 @@ Name of METER object, if any, to which DHWSYS fuel energy use is recorded (under }) }} -**wsWHhwMtr=*dhwmtrName*** +### wsWHhwMtr + +Type: *dhwmtrName* Name of DHWMETER object, if any, to which hot water quantities (at water heater) are recorded by hot water end use. diff --git a/doc/src/docs/input-data/dhwtank.md b/doc/src/docs/input-data/dhwtank.md index 50436a0ce..603084461 100644 --- a/doc/src/docs/input-data/dhwtank.md +++ b/doc/src/docs/input-data/dhwtank.md @@ -16,7 +16,9 @@ Optional name of tank; give after the word “DHWTANK” if desired. }) }} -**wtMult=*integer*** +### wtMult + +Type: *integer* Number of identical tanks of this type. Any value $>1$ is equivalent to repeated entry of the same DHWTANK. @@ -34,7 +36,9 @@ Tank heat loss is calculated hourly (note that default heat loss is 0) -- $$\text{qLoss} = \text{wtMult} \cdot (\text{wtUA} \cdot (\text{wtTTank} - \text{wtTEx}) + \text{wtXLoss})$$ -**wtUA=*float*** +### wtUA + +Type: *float* Tank heat loss coefficient. @@ -48,7 +52,9 @@ Tank heat loss coefficient. }) }} -**wtVol=*float*** +### wtVol + +Type: *float* Specifies tank volume. @@ -62,7 +68,9 @@ Specifies tank volume. }) }} -**wtInsulR=*float*** +### wtInsulR + +Type: *float* Specifies total tank insulation resistance. The input value should represent the total resistance from the water to the surroundings, including both built-in insulation and additional exterior wrap insulation. @@ -76,7 +84,9 @@ Specifies total tank insulation resistance. The input value should represent the }) }} -**wtZone=*znName*** +### wtZone + +Type: *znName* Zone location of DHWTANK regarding tank loss. The value of zero only valid if wtTEx is being used. Half of the heat losses go to zone air and the other goes to half radiant. @@ -90,7 +100,9 @@ Zone location of DHWTANK regarding tank loss. The value of zero only valid if wt }) }} -**wtTEx=*float*** +### wtTEx + +Type: *float* Tank surround temperature. @@ -104,7 +116,9 @@ Tank surround temperature. }) }} -**wtTTank=*float*** +### wtTTank + +Type: *float* Tank average water temperature. @@ -118,7 +132,9 @@ Tank average water temperature. }) }} -**wtXLoss=*float*** +### wtXLoss + +Type: *float* Additional tank heat loss. To duplicate CEC 2016 procedures, this value should be used to specify the fitting loss of 61.4 Btuh. diff --git a/doc/src/docs/input-data/dhwuse.md b/doc/src/docs/input-data/dhwuse.md index fb6ae3a3d..d3c2617e3 100644 --- a/doc/src/docs/input-data/dhwuse.md +++ b/doc/src/docs/input-data/dhwuse.md @@ -16,7 +16,9 @@ Optional name; give after the word “DHWUSE” if desired. }) }} -**wuStart=*float*** +### wuStart + +Type: *float* The starting time of the hot water draw. @@ -30,7 +32,9 @@ The starting time of the hot water draw. }) }} -**wuDuration=*float*** +### wuDuration + +Type: *float* Draw duration. wuDuration = 0 is equivalent to omitting the DHWUSE. Durations that extend beyond midnight are included in the current day. @@ -45,7 +49,9 @@ Durations that extend beyond midnight are included in the current day. }) }} -**wuFlow=*float*** +### wuFlow + +Type: *float* Draw flow rate at the point of use (in other words, the mixed-water flow rate). wuFlow = 0 is equivalent to omitting the DHWUSE. There is no enforced upper limit on wuFlow, however, unrealistically large values can cause runtime errors. @@ -59,7 +65,9 @@ Draw flow rate at the point of use (in other words, the mixed-water flow rate). }) }} -**wuHotF=*float*** +### wuHotF + +Type: *float* Fraction of draw that is hot water. Cannot be specified with wuTemp or wuHeatRecEF. @@ -73,7 +81,9 @@ Fraction of draw that is hot water. Cannot be specified with wuTemp or wuHeatRe }) }} -**wuTemp=*float*** +### wuTemp + +Type: *float* Mixed-water use temperature at the fixture. Cannot be specified when wuHotF is given. @@ -87,7 +97,9 @@ Mixed-water use temperature at the fixture. Cannot be specified when wuHotF is g }) }} -**wuHeatRecEF=*float*** +### wuHeatRecEF + +Type: *float* Heat recovery effectiveness, allows simple modeling of heat recovery devices such as drain water heat exchangers. @@ -105,7 +117,9 @@ If 0, detailed heat recovery modeling *may* apply, see [DHWHEATREC][dhwheatrec]. }) }} -**wuHWEndUse=*choice*** +### wuHWEndUse + +Type: *choice* Hot-water end use: one of Shower, Bath, CWashr, DWashr, or Faucet. wuHWEndUse has the following functions -- @@ -123,7 +137,9 @@ Hot-water end use: one of Shower, Bath, CWashr, DWashr, or Faucet. wuHWEndUse h }) }} -**wuEventID=*integer*** +### wuEventID + +Type: *integer* User-defined identifier that associates multiple DHWUSEs with a single event or activity. For example, a dishwasher uses water at several discrete times during a 90 minute cycle and all DHWUSEs would be assigned the same wuEventID. All DHWUSEs having the same wuEventID should have the same wuHWEndUse. diff --git a/doc/src/docs/input-data/doas.md b/doc/src/docs/input-data/doas.md index 519868ef4..1cd8d93d8 100644 --- a/doc/src/docs/input-data/doas.md +++ b/doc/src/docs/input-data/doas.md @@ -9,7 +9,9 @@ Name of DOAS. ## DOAS Supply Fan Data Members -**oaSupFanVfDs=*float*** +### oaSupFanVfDs + +Type: *float* Supply fan design or rated flow at rated pressure. @@ -23,7 +25,9 @@ Supply fan design or rated flow at rated pressure. }) }} -**oaSupFanPress=*float*** +### oaSupFanPress + +Type: *float* Design or rated fan pressure. @@ -39,7 +43,9 @@ Design or rated fan pressure. Only one of oaSupFanElecPwr, oaSupFanEff, and oaSupFanShaftBhp may be given. -**oaSupFanElecPwr=*float*** +### oaSupFanElecPwr + +Type: *float* Fan input power per unit air flow (at design flow and pressure). @@ -53,7 +59,9 @@ Fan input power per unit air flow (at design flow and pressure). }) }} -**oaSupFanEff=*float*** +### oaSupFanEff + +Type: *float* Fan efficiency at design flow and pressure, as a fraction. @@ -67,7 +75,9 @@ Fan efficiency at design flow and pressure, as a fraction. }) }} -**oaSupFanShaftBhp=*float*** +### oaSupFanShaftBhp + +Type: *float* Fan shaft brake horsepower at design flow and pressure. @@ -106,7 +116,9 @@ If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coeffici }) }} -**oaSupFanMtr=*mtrName*** +### oaSupFanMtr + +Type: *mtrName* Name of meter, if any, to record energy used by supply fan. End use category used is specified by oaSupFanEndUse (next). @@ -120,7 +132,9 @@ Name of meter, if any, to record energy used by supply fan. End use category use }) }} -**oaSupFanEndUse=*choice*** +### oaSupFanEndUse + +Type: *choice* End use to which fan energy is recorded (in METER specified by oaSupFanMtr). See METER for available end use choices. @@ -134,7 +148,9 @@ End use to which fan energy is recorded (in METER specified by oaSupFanMtr). Se }) }} -**oaTEx=*float*** +### oaTEx + +Type: *float* Alternative supply fan source air dry bulb temperature. If given, oaTEx overrides the outdoor dry-bulb temperature read from the weather file or derived from design conditions. @@ -150,7 +166,9 @@ Caution: oaTEx is not checked for reasonableness. }) }} -**oaWEx=*float*** +### oaWEx + +Type: *float* Alternative supply fan source air air humidity ratio. If given, oaWEx overrides the outdoor humidity ratio derived from weather file data or design conditions. @@ -168,7 +186,9 @@ Caution: oaWEx is not checked against saturation -- there is no verification tha ## DOAS Exhaust Fan Data Members -**oaExhFanVfDs=*float*** +### oaExhFanVfDs + +Type: *float* Exhaust fan design or rated flow at rated pressure. @@ -182,7 +202,9 @@ Exhaust fan design or rated flow at rated pressure. }) }} -**oaExhFanPress=*float*** +### oaExhFanPress + +Type: *float* Design or rated fan pressure. @@ -198,7 +220,9 @@ Design or rated fan pressure. Only one of oaExhFanElecPwr, oaExhFanEff, and oaExhFanShaftBhp may be given. -**oaExhFanElecPwr=*float*** +### oaExhFanElecPwr + +Type: *float* Fan input power per unit air flow (at design flow and pressure). @@ -212,7 +236,9 @@ Fan input power per unit air flow (at design flow and pressure). }) }} -**oaExhFanEff=*float*** +### oaExhFanEff + +Type: *float* Fan efficiency at design flow and pressure, as a fraction. @@ -226,7 +252,9 @@ Fan efficiency at design flow and pressure, as a fraction. }) }} -**oaExhFanShaftBhp=*float*** +### oaExhFanShaftBhp + +Type: *float* Fan shaft brake horsepower at design flow and pressure. @@ -265,7 +293,9 @@ If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coeffici }) }} -**oaExhFanMtr=*mtrName*** +### oaExhFanMtr + +Type: *mtrName* Name of meter, if any, to record energy used by exhaust fan. End use category used is specified by oaExhFanEndUse (next). @@ -279,7 +309,9 @@ Name of meter, if any, to record energy used by exhaust fan. End use category us }) }} -**oaExhFanEndUse=*choice*** +### oaExhFanEndUse + +Type: *choice* End use to which fan energy is recorded (in METER specified by oaExhFanMtr). See METER for available end use choices. @@ -295,7 +327,9 @@ End use to which fan energy is recorded (in METER specified by oaExhFanMtr). Se ## DOAS Tempering Coils Data Members -**oaSupTH=*float*** +### oaSupTH + +Type: *float* Heating setpoint for tempering and/or heat exchanger bypass. @@ -309,7 +343,9 @@ Heating setpoint for tempering and/or heat exchanger bypass. }) }} -**oaEIRH=*float*** +### oaEIRH + +Type: *float* Energy Input Ratio of the heating coil. This is the inverse of the coil efficiency or COP. A value of zero indicates that the coil does not use energy (e.g., hot water coils). Specifying input triggers the modeling of a heating coil. @@ -323,7 +359,9 @@ Energy Input Ratio of the heating coil. This is the inverse of the coil efficien }) }} -**oaCoilHMtr=*mtrName*** +### oaCoilHMtr + +Type: *mtrName* Name of meter, if any, to record energy used by the heating coil. @@ -337,7 +375,9 @@ Name of meter, if any, to record energy used by the heating coil. }) }} -**oaSupTC=*float*** +### oaSupTC + +Type: *float* Cooling setpoint for tempering and/or heat exchanger bypass. @@ -351,7 +391,9 @@ Cooling setpoint for tempering and/or heat exchanger bypass. }) }} -**oaEIRC=*float*** +### oaEIRC + +Type: *float* Energy Input Ratio of the cooling coil. This is the inverse of the coil efficiency or COP. A value of zero indicates that the coil does not use energy (e.g., chilled water coils). Specifying input triggers the modeling of a cooling coil. @@ -365,7 +407,9 @@ Energy Input Ratio of the cooling coil. This is the inverse of the coil efficien }) }} -**oaSHRtarget=*float*** +### oaSHRtarget + +Type: *float* Sensible Heat Ratio of the cooling coil. If the required sensible capacity of the coil and the entered SHR do not produce a valid psychrometric state, the SHR is adjusted and reported through the SHR probe. @@ -379,7 +423,9 @@ Sensible Heat Ratio of the cooling coil. If the required sensible capacity of th }) }} -**oaCoilCMtr=*mtrName*** +### oaCoilCMtr + +Type: *mtrName* Name of meter, if any, to record energy used by the cooling coil. @@ -393,7 +439,9 @@ Name of meter, if any, to record energy used by the cooling coil. }) }} -**oaLoadMtr=*ldMtrName*** +### oaLoadMtr + +Type: *ldMtrName* Name of load meter, if any, to record load met by the heating coil or cooling coil. @@ -410,7 +458,9 @@ Name of load meter, if any, to record load met by the heating coil or cooling co ## DOAS Heat Recovery Data Members -**oaHXVfDs=*float*** +### oaHXVfDs + +Type: *float* Heat exchanger design or rated flow. @@ -424,7 +474,9 @@ Heat exchanger design or rated flow. }) }} -**oaHXf2=*float*** +### oaHXf2 + +Type: *float* Heat exchanger flow fraction (of design flow) used for second set of effectivenesses. @@ -438,7 +490,9 @@ Heat exchanger flow fraction (of design flow) used for second set of effectivene }) }} -**oaHXSenEffHDs=*float*** +### oaHXSenEffHDs + +Type: *float* Heat exchanger sensible effectiveness in heating mode at the design flow rate. Specifying input triggers modeling of heat recovery. @@ -452,7 +506,9 @@ Heat exchanger sensible effectiveness in heating mode at the design flow rate. S }) }} -**oaHXSenEffHf2=*float*** +### oaHXSenEffHf2 + +Type: *float* Heat exchanger sensible effectiveness in heating mode at the second flow rate (**oaHXf2**). @@ -466,7 +522,9 @@ Heat exchanger sensible effectiveness in heating mode at the second flow rate (* }) }} -**oaHXLatEffHDs=*float*** +### oaHXLatEffHDs + +Type: *float* Heat exchanger latent effectiveness in heating mode at the design flow rate. @@ -480,7 +538,9 @@ Heat exchanger latent effectiveness in heating mode at the design flow rate. }) }} -**oaHXLatEffHf2=*float*** +### oaHXLatEffHf2 + +Type: *float* Heat exchanger latent effectiveness in heating mode at the second flow rate (**oaHXf2**). @@ -494,7 +554,9 @@ Heat exchanger latent effectiveness in heating mode at the second flow rate (**o }) }} -**oaHXSenEffCDs=*float*** +### oaHXSenEffCDs + +Type: *float* Heat exchanger sensible effectiveness in cooling mode at the design flow rate. @@ -508,7 +570,9 @@ Heat exchanger sensible effectiveness in cooling mode at the design flow rate. }) }} -**oaHXSenEffCf2=*float*** +### oaHXSenEffCf2 + +Type: *float* Heat exchanger sensible effectiveness in cooling mode at the second flow rate (**oaHXf2**). @@ -522,7 +586,9 @@ Heat exchanger sensible effectiveness in cooling mode at the second flow rate (* }) }} -**oaHXLatEffCDs=*float*** +### oaHXLatEffCDs + +Type: *float* Heat exchanger latent effectiveness in cooling mode at the design flow rate. @@ -536,7 +602,9 @@ Heat exchanger latent effectiveness in cooling mode at the design flow rate. }) }} -**oaHXLatEffCf2=*float*** +### oaHXLatEffCf2 + +Type: *float* Heat exchanger latent effectiveness in cooling mode at the second flow rate (**oaHXf2**). @@ -550,7 +618,9 @@ Heat exchanger latent effectiveness in cooling mode at the second flow rate (**o }) }} -**oaHXBypass=*choice*** +### oaHXBypass + +Type: *choice* Yes/No choice for enabling heat exchanger bypass. If selected, the outdoor air will bypass the heat exchanger when otherwise the heat exchanger would require more heating or cooling energy to meet the respective setpoints. @@ -564,7 +634,9 @@ Yes/No choice for enabling heat exchanger bypass. If selected, the outdoor air w }) }} -**oaHXAuxPwr=*float*** +### oaHXAuxPwr + +Type: *float* Auxiliary power required to operate the heat recovery device (e.g., wheel motor, contorls). @@ -578,7 +650,9 @@ Auxiliary power required to operate the heat recovery device (e.g., wheel motor, }) }} -**oaHXAuxMtr=*mtrName*** +### oaHXAuxMtr + +Type: *mtrName* Name of meter, if any, to record energy used by auxiliary components of the heat recovery system. diff --git a/doc/src/docs/input-data/door.md b/doc/src/docs/input-data/door.md index 98d3c3c4f..ba92aed14 100644 --- a/doc/src/docs/input-data/door.md +++ b/doc/src/docs/input-data/door.md @@ -16,7 +16,9 @@ Name of door. }) }} -**drArea=*float*** +### drArea + +Type: *float* Overall area of door. @@ -30,7 +32,9 @@ Overall area of door. }) }} -**drModel=*choice*** +### drModel + +Type: *choice* Provides user control over how CSE models conduction for this door: @@ -52,7 +56,9 @@ Provides user control over how CSE models conduction for this door: Either drU or drCon must be specified, but not both. -**drU=*float*** +### drU + +Type: *float* Door U-value, NOT including surface (air film) conductances. Allows direct entry of U-value, without defining a CONSTRUCTION, when no heat capacity effects are to be modeled. @@ -66,7 +72,9 @@ Door U-value, NOT including surface (air film) conductances. Allows direct entry }) }} -**drCon=*conName*** +### drCon + +Type: *conName* Name of construction for door. @@ -80,7 +88,9 @@ Name of construction for door. }) }} -**drLThkF=*float*** +### drLThkF + +Type: *float* Sublayer thickness adjustment factor for FORWARD\_DIFFERENCE conduction model used with drCon surfaces. Material layers in the construction are divided into sublayers as needed for numerical stability. drLThkF allows adjustment of the thickness criterion used for subdivision. A value of 0 prevents subdivision; the default value (0.5) uses layers with conservative thickness equal to half of an estimated safe value. Fewer (thicker) sublayers improves runtime at the expense of accurate representation of rapid changes. @@ -94,7 +104,9 @@ Sublayer thickness adjustment factor for FORWARD\_DIFFERENCE conduction model us }) }} -**drExAbs=*float*** +### drExAbs + +Type: *float* Door exterior solar absorptivity. Applicable only if sfExCnd of owning surface is AMBIENT or SPECIFIEDT. @@ -108,7 +120,9 @@ Door exterior solar absorptivity. Applicable only if sfExCnd of owning surface i }) }} -**drInAbs=*float*** +### drInAbs + +Type: *float* Door interior solar absorptivity. @@ -122,7 +136,9 @@ Door interior solar absorptivity. }) }} -**drExEpsLW=*float*** +### drExEpsLW + +Type: *float* Door exterior long wave (thermal) emittance. @@ -136,7 +152,9 @@ Door exterior long wave (thermal) emittance. }) }} -**drInEpsLW=*float*** +### drInEpsLW + +Type: *float* Door interior long wave (thermal) emittance. @@ -150,7 +168,9 @@ Door interior long wave (thermal) emittance. }) }} -**drInH=*float*** +### drInH + +Type: *float* Door interior surface (air film) conductance. Ignored if drModel = Forward\_Difference @@ -164,7 +184,9 @@ Door interior surface (air film) conductance. Ignored if drModel = Forward\_Diff }) }} -**drExH=*float*** +### drExH + +Type: *float* Door exterior surface (air film) conductance. Ignored if drModel = Forward\_Difference @@ -190,7 +212,9 @@ Door exterior surface (air film) conductance. Ignored if drModel = Forward\_Diff ASHRAE, n/a, ASHRAE handbook values", True) }} -**drExHcModel=*choice*** +### drExHcModel + +Type: *choice* Selects the model used for exterior surface convection when drModel = Forward\_Difference. @@ -204,7 +228,9 @@ Selects the model used for exterior surface convection when drModel = Forward\_D }) }} -**drExHcLChar=*float*** +### drExHcLChar + +Type: *float* Characteristic length of surface, used in derivation of forced exterior convection coefficients in some models when outside face is exposed to ambient (i.e. to wind). @@ -218,7 +244,9 @@ Characteristic length of surface, used in derivation of forced exterior convecti }) }} -**drExHcMult=*float*** +### drExHcMult + +Type: *float* Exterior convection coefficient adjustment factor. When drExHcModel=INPUT, hc=drExHcMult. For other drExHcModel choices, the model-derived hc is multiplied by drExHcMult. @@ -232,7 +260,9 @@ Exterior convection coefficient adjustment factor. When drExHcModel=INPUT, hc=d }) }} -**drExRf=*float*** +### drExRf + +Type: *float* Exterior roughness factor. Typical roughness values: @@ -255,7 +285,9 @@ Exterior roughness factor. Typical roughness values: }) }} -**drInHcModel=*choice*** +### drInHcModel + +Type: *choice* Selects the model used for the inside (zone) surface convection when drModel = Forward\_Difference. @@ -269,7 +301,9 @@ Selects the model used for the inside (zone) surface convection when drModel = F }) }} -**drInHcMult=*float*** +### drInHcMult + +Type: *float* Interior convection coefficient adjustment factor. When drInHcModel=INPUT, hc=drInHcMult. For other drInHcModel choices, the model-derived hc is multiplied by drInHcMult. diff --git a/doc/src/docs/input-data/ductseg.md b/doc/src/docs/input-data/ductseg.md index e42cd7a06..0c52f0374 100644 --- a/doc/src/docs/input-data/ductseg.md +++ b/doc/src/docs/input-data/ductseg.md @@ -16,7 +16,9 @@ Optional name of duct segment; give after the word “DUCTSEG” if desired. }) }} -**dsTy=*choice*** +### dsTy + +Type: *choice* Duct segment type. @@ -35,7 +37,9 @@ The surface area of a DUCTSEG depends on its shape. 0 surface area is legal (lea - dsExArea specified: Flat. Interior and exterior areas are assumed to be equal (duct surfaces are flat and corner effects are neglected). - dsExArea *not* specified: Round. Any two of dsInArea, dsDiameter, and dsLength must be given. Insulation thickness is derived from dsInsulR and dsInsulMat and this thickness is used to calculate the exterior surface area. Overall inside-to-outside conductance is also calculated including suitable adjustment for curvature. -**dsBranchLen=*float*** +### dsBranchLen + +Type: *float* Average branch length. @@ -49,7 +53,9 @@ Average branch length. }) }} -**dsBranchCount=*integer*** +### dsBranchCount + +Type: *integer* Number of branches. @@ -63,7 +69,9 @@ Number of branches. }) }} -**dsBranchCFA=*float*** +### dsBranchCFA + +Type: *float* Floor area served per branch @@ -77,7 +85,9 @@ Floor area served per branch }) }} -**dsAirVelDs=*float*** +### dsAirVelDs + +Type: *float* Specified air velocity design. @@ -91,7 +101,9 @@ Specified air velocity design. }) }} -**dsExArea=*float*** +### dsExArea + +Type: *float* Duct segment surface area at outside face of insulation for flat duct shape, see above. @@ -105,7 +117,9 @@ Duct segment surface area at outside face of insulation for flat duct shape, see }) }} -**dsInArea=*float*** +### dsInArea + +Type: *float* Duct segment inside surface area (at duct wall, duct wall thickness assumed negligible) for round shaped duct. @@ -120,7 +134,9 @@ Duct segment inside surface area (at duct wall, duct wall thickness assumed negl }} -**dsDiameter=*float*** +### dsDiameter + +Type: *float* Duct segment round duct diameter (duct wall thickness assumed negligible) @@ -134,7 +150,9 @@ Duct segment round duct diameter (duct wall thickness assumed negligible) }) }} -**dsLength=*float*** +### dsLength + +Type: *float* Duct segment length. @@ -148,7 +166,9 @@ Duct segment length. }) }} -**dsExCnd=*choice*** +### dsExCnd + +Type: *choice* Conditions surrounding duct segment. @@ -162,7 +182,9 @@ Conditions surrounding duct segment. }) }} -**dsAdjZn=*znName*** +### dsAdjZn + +Type: *znName* Name of zone surrounding duct segment; used only when dsExCon is ADJZN. Can be the same as a zone served by the RSYS owning the duct segment. @@ -176,7 +198,9 @@ Name of zone surrounding duct segment; used only when dsExCon is ADJZN. Can be t }) }} -**dsEpsLW=*float*** +### dsEpsLW + +Type: *float* Exposed (i.e. insulation) outside surface exterior long wave (thermal) emittance. @@ -190,7 +214,9 @@ Exposed (i.e. insulation) outside surface exterior long wave (thermal) emittance }) }} -**dsExT=*float*** +### dsExT + +Type: *float* Air dry-bulb temperature surrounding duct segment. @@ -204,7 +230,9 @@ Air dry-bulb temperature surrounding duct segment. Wall depth below slab. @@ -83,7 +87,9 @@ Wall depth below slab. }) }} -**fdFtCon=*conName*** +### fdFtCon + +Type: *conName* Name of CONSTRUCTION of the footing wall. Only required **IF** it is a slab foundation (i.e., no wall surfaces reference this FOUNDATION object). diff --git a/doc/src/docs/input-data/gain.md b/doc/src/docs/input-data/gain.md index d6c2642fb..9ff6a3450 100644 --- a/doc/src/docs/input-data/gain.md +++ b/doc/src/docs/input-data/gain.md @@ -29,7 +29,9 @@ Name of gain; follows the word GAIN if given. }) }} -**gnZone=*znName*** +### gnZone + +Type: *znName* Name of ZONE to which heat gains are added. Omitted when GAIN is given as a ZONE subobject. If a TOP subobject (i.e., not a ZONE subobject) and znZone is omitted, heat gains are discarded but energy use is still recorded to gnMeter. This feature can be used to represent energy uses that our outside of conditioned zones (e.g. exterior lighting). @@ -43,7 +45,9 @@ Name of ZONE to which heat gains are added. Omitted when GAIN is given as a ZON }) }} -**gnPower=*float*** +### gnPower + +Type: *float* Rate of heat addition/energy use. Negative gnPower values may be used to represent heat removal/energy generation. Expressions containing functions are commonly used with this member to schedule the gain power on a daily and/or hourly basis. Refer to the functions section in Section 4 for details and examples. @@ -59,7 +63,9 @@ All gains, including electrical, are specified in Btuh units unless associated w }) }} -**gnMeter=*choice*** +### gnMeter + +Type: *choice* Name of meter by which this GAIN's gnPower is recorded. If omitted, gain is assigned to no meter and energy use is not accounted in CSE simulation reports; thus, gnMeter should only be omitted for "free" energy sources. @@ -73,7 +79,9 @@ Name of meter by which this GAIN's gnPower is recorded. If omitted, gain is assi }) }} -**gnEndUse=*choice*** +### gnEndUse + +Type: *choice* Meter end use to which the GAIN's energy use should be accumulated. @@ -91,7 +99,9 @@ Meter end use to which the GAIN's energy use should be accumulated. The gnFrZn, gnFrPl, and gnFrRtn members allow you to allocate the gain among the zone, the zone's plenum, and the zone's return air flow. Values that total to more than 1.0 constitute an error. If they total less than 1, the unallocated portion of the gain is recorded by the meter (if specified) but not transferred into the building. By default, all of the gain not directed to the return or plenum goes to the zone. -**gnFrZn=*float*** +### gnFrZn + +Type: *float* Fraction of gain going to zone. gnFrLat (below) gives portion of this gain that is latent, if any; the remainder is sensible. @@ -121,7 +131,9 @@ Fraction of gain going to zone. gnFrLat (below) gives portion of this gain that <% end %> -**gnFrPl=*float*** +### gnFrPl + +Type: *float* Fraction of gain going to plenum. @@ -136,7 +148,9 @@ Fraction of gain going to plenum. }} -**gnFrRtn=*float*** +### gnFrRtn + +Type: *float* Fraction of gain going to return. @@ -150,7 +164,9 @@ Fraction of gain going to return. }) }} -**gnFrRad=*float*** +### gnFrRad + +Type: *float* Fraction of total gain going to zone (gnFrZn) that is radiant rather than convective or latent. @@ -164,7 +180,9 @@ Fraction of total gain going to zone (gnFrZn) that is radiant rather than convec }) }} -**gnFrLat=*float*** +### gnFrLat + +Type: *float* Fraction of total gain going to zone (gnFrZn) that is latent heat (moisture addition). @@ -178,7 +196,9 @@ Fraction of total gain going to zone (gnFrZn) that is latent heat (moisture addi }) }} -**gnDlFrPow=*float*** +### gnDlFrPow + +Type: *float* Hourly power reduction factor, typically used to modify lighting power to account for daylighting. @@ -194,7 +214,9 @@ daylighting. }} -**gnCtrlDHWSYS=*dhwsysName*** +### gnCtrlDHWSYS + +Type: *dhwsysName* Name of a DHWSYS whose water use modulates gnPower. For example, electricity use of water-using appliances (e.g. dishwasher or clothes washer) can be modeled based on water use, ensuring that the uses are synchronized. When this feature is used, gnPower should be specified in Btuh/gal. @@ -208,7 +230,9 @@ Name of a DHWSYS whose water use modulates gnPower. For example, electricity us }) }} -**gnCtrlDHWMETER=*dhwMtrName*** +### gnCtrlDHWMETER + +Type: *dhwMtrName* Allows gains to track water usage such as dishwashers, clothes washers, etc. @@ -222,7 +246,9 @@ Allows gains to track water usage such as dishwashers, clothes washers, etc. }) }} -**gnCtrlDHWEndUse=*dhwEndUseName*** +### gnCtrlDHWEndUse + +Type: *dhwEndUseName* Name of the DHWSYS end use consumption that modulates gnPower. See DHWMETER for DHW end use definitions. diff --git a/doc/src/docs/input-data/glazetype.md b/doc/src/docs/input-data/glazetype.md index 2e1303226..a44213aab 100644 --- a/doc/src/docs/input-data/glazetype.md +++ b/doc/src/docs/input-data/glazetype.md @@ -16,7 +16,9 @@ Name of glazetype. Required for reference from WINDOW objects, below. }) }} -**gtModel=*choice*** +### gtModel + +Type: *choice* Selects model to be used for WINDOWs based on this GLAZETYPE. @@ -30,7 +32,9 @@ Selects model to be used for WINDOWs based on this GLAZETYPE. }) }} -**gtU=*float*** +### gtU + +Type: *float* Glazing conductance (U-factor without surface films, therefore not actually a U-factor but a C-factor). Used as wnU default; an error message will be issued if the U value is not given in the window (wnU) nor in the glazeType (gtU). Preferred Approach: To use accurately with standard winter rated U-factor from ASHRAE or NFRC enter as: @@ -50,7 +54,9 @@ Approach 2. Enter gtU=U-factor and let the wnInH and wnExH default. This approac }) }} -**gtUNFRC=*float*** +### gtUNFRC + +Type: *float* Fenestration system (including frame) U-factor evaluated at NFRC heating conditions. For ASHWAT windows, a value for the NFRC U-factor is required, set via gtUNFRC or wnUNFRC. @@ -64,7 +70,9 @@ Fenestration system (including frame) U-factor evaluated at NFRC heating conditi }) }} -**gtSHGC=*float*** +### gtSHGC + +Type: *float* Glazing Solar Heat Gain Coefficient: fraction of normal beam insolation which gets through glass to space inside. We recommend using this to represent the glass normal transmissivity characteristic only, before shading and framing effects @@ -78,7 +86,9 @@ Glazing Solar Heat Gain Coefficient: fraction of normal beam insolation which ge }) }} -**gtSMSO=*float*** +### gtSMSO + +Type: *float* SHGC multiplier with shades open. May be overriden in the specific window input. @@ -92,7 +102,9 @@ SHGC multiplier with shades open. May be overriden in the specific window input. }) }} -**gtSMSC=*float*** +### gtSMSC + +Type: *float* SHGC multiplier with shades closed. May be overriden in the specific window input. @@ -106,7 +118,9 @@ SHGC multiplier with shades closed. May be overriden in the specific window inpu }) }} -**gtFMult=*float*** +### gtFMult + +Type: *float* Framing multiplier used if none given in window, for example .9 if frame and mullions reduce the solar gain by 10%. Default of 1.0 implies frame/mullion effects allowed for in gtSHGC's or always specified in Windows. @@ -142,7 +156,9 @@ Four float values separated by commas. Coefficients for incidence angle SHGC mul }) }} -**gtDMSHGC=*float*** +### gtDMSHGC + +Type: *float* SHGC diffuse multiplier, applied to gtSHGC to determine transmissivity for diffuse radiation. @@ -156,7 +172,9 @@ SHGC diffuse multiplier, applied to gtSHGC to determine transmissivity for diffu }) }} -**gtDMRBSol=*float*** +### gtDMRBSol + +Type: *float* SHGC diffuse multiplier, applied to qtSHGC to determine transmissivity for diffuse radiation reflected back out the window. Misnamed as a reflectance. Assume equal to DMSHGC if no other data available. @@ -170,7 +188,9 @@ SHGC diffuse multiplier, applied to qtSHGC to determine transmissivity for diffu }) }} -**gtNGlz=*int*** +### gtNGlz + +Type: *int* Number of glazings in the Glazetype (bare glass only, not including any interior or exterior shades). @@ -184,7 +204,9 @@ Number of glazings in the Glazetype (bare glass only, not including any interior }) }} -**gtExShd=*choice*** +### gtExShd + +Type: *choice* Exterior shading type (ASHWAT only). @@ -198,7 +220,9 @@ Exterior shading type (ASHWAT only). }) }} -**gtInShd=*choice*** +### gtInShd + +Type: *choice* Interior shade type (ASHWAT only). @@ -212,7 +236,9 @@ Interior shade type (ASHWAT only). }) }} -**gtDirtLoss=*float*** +### gtDirtLoss + +Type: *float* Glazing dirt loss factor. diff --git a/doc/src/docs/input-data/heatplant.md b/doc/src/docs/input-data/heatplant.md index f2b73e531..299bc5458 100644 --- a/doc/src/docs/input-data/heatplant.md +++ b/doc/src/docs/input-data/heatplant.md @@ -22,7 +22,9 @@ Name of HEATPLANT object, given immediately after the word HEATPLANT. This name }) }} -**hpSched=*choice*** +### hpSched + +Type: *choice* Heat plant schedule: hourly variable choice of OFF, AVAIL, or ON. @@ -41,7 +43,9 @@ ON, HEATPLANT runs unconditionally. When no load wants heat, least po }) }} -**hpPipeLossF=*float*** +### hpPipeLossF + +Type: *float* Heat plant pipe loss: heat assumed lost from piping connecting boilers to loads whenever the HEATPLANT is operating, expressed as a fraction of the boiler capacity of the plant's most powerful stage. diff --git a/doc/src/docs/input-data/holiday.md b/doc/src/docs/input-data/holiday.md index ef21ab80d..cb7493ca1 100644 --- a/doc/src/docs/input-data/holiday.md +++ b/doc/src/docs/input-data/holiday.md @@ -51,7 +51,9 @@ The date that a holiday will be observed. Allowed only if hdDateTrue given and h }) }} -**hdOnMonday=*choice*** +### hdOnMonday + +Type: *choice* If YES, holiday is observed on the following Monday if the true date falls on a weekend. Allowed only if hdDateTrue given and hdDateObs not given. @@ -67,7 +69,9 @@ Note: there is no provision to celebrate a holiday that falls on a Saturday on * }) }} -**hdCase=*choice*** +### hdCase + +Type: *choice* Week of the month that the holiday is observed. hdCase, hdMon, and hdDow may be given only if hdDateTrue, hdDateObs, and hdOnMonday are not given. @@ -81,7 +85,9 @@ Week of the month that the holiday is observed. hdCase, hdMon, and hdDow may be }) }} -**hdMon=*choice*** +### hdMon + +Type: *choice* Month that the holiday is observed. diff --git a/doc/src/docs/input-data/importfile.md b/doc/src/docs/input-data/importfile.md index 8b70ce73b..b24708213 100644 --- a/doc/src/docs/input-data/importfile.md +++ b/doc/src/docs/input-data/importfile.md @@ -65,7 +65,9 @@ Name of IMPORTFILE object (for reference from Import()). }) }} -**imFileName=*string*** +### imFileName + +Type: *string* Gives path name of file to be read. If directory is specified, CSE first looks for the file the current directory and searches include paths specified by the -I command line parameter (if any). @@ -79,7 +81,9 @@ Gives path name of file to be read. If directory is specified, CSE first looks f }) }} -**imTitle=*string*** +### imTitle + +Type: *string* Title expected to be found on line 3 of the import file. A warning is issued if a non-blank imTitle does not match the import file title. @@ -93,7 +97,9 @@ Title expected to be found on line 3 of the import file. A warning is issued if }) }} -**imFreq=*choice*** +### imFreq + +Type: *choice* Specifies the interval at which CSE reads from the import file. Data is read at the beginning of the indicated interval and buffered in memory for access in expressions via import() or importStr(). @@ -107,7 +113,9 @@ Specifies the interval at which CSE reads from the import file. Data is read at }) }} -**imHeader=*choice*** +### imHeader + +Type: *choice* Indicates whether the import file include a 4 line header, as described above. If NO, the import file should contain only comma-separated data rows and data items can be referenced only by 1-based column number. @@ -122,7 +130,9 @@ should contain only comma-separated data rows and data items can be referenced o }) }} -**imBinary=*choice*** +### imBinary + +Type: *choice* Adds the possibility to output the file as a binary option. diff --git a/doc/src/docs/input-data/izxfer.md b/doc/src/docs/input-data/izxfer.md index 02cdbae0a..7d380c390 100644 --- a/doc/src/docs/input-data/izxfer.md +++ b/doc/src/docs/input-data/izxfer.md @@ -21,7 +21,9 @@ Optional name of interzone transfer; give after the word "IZXFER" if desired. }) }} -**izNVType=*choice*** +### izNVType + +Type: *choice* Choice specifying the type of ventilation or leakage model to be used. @@ -51,7 +53,9 @@ Note that optional inputs izTEx, izWEx, and izWindSpeed can override the outside }) }} -**izAFCat=*choice*** +### izAFCat + +Type: *choice* Choice indicating air flow category used *only* for recording air flow results to an AFMETER. izAFCat has no effect for non-AIRNET IZXFERs. izAFCat is not used unless the associated ZONE(s) specify znAFMtr. @@ -79,7 +83,9 @@ Default values for izAFCat are generally adequate *except* that natural ventilat }) }} -**izZn1=*znName*** +### izZn1 + +Type: *znName* Name of primary zone. Flow rates $>$ 0 are into the primary zone. @@ -93,7 +99,9 @@ Name of primary zone. Flow rates $>$ 0 are into the primary zone. }) }} -**izZn2=*znName*** +### izZn2 + +Type: *znName* Name of secondary zone. @@ -107,7 +115,9 @@ Name of secondary zone. }) }} -**izDOAS=*oaName*** +### izDOAS + +Type: *oaName* Name of DOAS where air is supplied from (**izVfMin** > 0), or exhausting to (**izVfMin** < 0). @@ -121,7 +131,9 @@ Name of DOAS where air is supplied from (**izVfMin** > 0), or exhausting to (**i }) }} -**izLinkedFlowMult=*float*** +### izLinkedFlowMult + +Type: *float* Specifies a multiplier applied to air flow to/from any associated DOAS. This supports use of a single modeled zone to represent multiple actual zones while preserving the total DOAS air flow and energy consumption. @@ -142,7 +154,9 @@ Note izLinkedFlowMult has no effect on the air flow to or from the zone specifie Give izHConst for a conductive transfer between zones. Give izNVType other than NONE and the following variables for a convective (air) transfer between the zones or between a zone and outdoors. Both may be given if desired. Not known to work properly as of July 2011 -**izHConst=*float*** +### izHConst + +Type: *float* Conductance between zones. @@ -156,7 +170,9 @@ Conductance between zones. }) }} -**izALo=*float*** +### izALo + +Type: *float* Area of low or only vent (typically VentOff) @@ -170,7 +186,9 @@ Area of low or only vent (typically VentOff) }) }} -**izAHi=*float*** +### izAHi + +Type: *float* Additional vent area (high vent or VentOn). If used in AIRNET, izAHi > izALo typically but this is not required. @@ -184,7 +202,9 @@ Additional vent area (high vent or VentOn). If used in AIRNET, izAHi > izALo }) }} -**izTEx=*float*** +### izTEx + +Type: *float* Alternative exterior air dry bulb temperature for this vent. Allowed only with izNVTypes that use outdoor air (AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, and AIRNETHERV). If given, izTEx overrides the outdoor dry-bulb temperature read from the weather file or derived from design conditions. @@ -206,7 +226,9 @@ This will allow Z1's pressure to be realistic without inducing thermal loads tha }) }} -**izWEx=*float*** +### izWEx + +Type: *float* Alternative exterior air humidity ratio seen by this vent. Allowed only with izNVTypes that use outdoor air (AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, and AIRNETHERV). If given, izWEx overrides the outdoor humidity ratio derived from weather file data or design conditions. @@ -224,7 +246,9 @@ See izTEx example just above. }) }} -**izWindSpeed=*float*** +### izWindSpeed + +Type: *float* Alternative windspeed seen by this vent. Allowed only with izNVTypes that use outdoor air (AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, and AIRNETHERV). If given, izWindSpeed overrides the windspeed read from the weather file or derived from design conditions. @@ -242,7 +266,9 @@ Note that izCpr must be non-0 for izWindSpeed to have any effect. }) }} -**izL1=*float*** +### izL1 + +Type: *float* Length or width of AIRNETHORIZ opening. @@ -256,7 +282,9 @@ Length or width of AIRNETHORIZ opening. }) }} -**izL2=*float*** +### izL2 + +Type: *float* Width or length of AIRNETHORIZ opening. @@ -270,7 +298,9 @@ Width or length of AIRNETHORIZ opening. }) }} -**izStairAngle=*float*** +### izStairAngle + +Type: *float* Stairway angle for AIRNETHORIZ opening. Use 90 for an open hole. Note that 0 prevents flow. @@ -284,7 +314,9 @@ Stairway angle for AIRNETHORIZ opening. Use 90 for an open hole. Note that 0 pre }) }} -**izHD=*float*** +### izHD + +Type: *float* Vent center-to-center height difference (for TWOWAY) or vent height above nominal 0 level (for AirNet types) @@ -298,7 +330,9 @@ Vent center-to-center height difference (for TWOWAY) or vent height above nomina }) }} -**izNVEff=*float*** +### izNVEff + +Type: *float* Vent discharge coefficient. @@ -312,7 +346,9 @@ Vent discharge coefficient. }) }} -**izfanVfDs=*float*** +### izfanVfDs + +Type: *float* Fan design or rated flow at rated pressure. For AIRNETHERV, this is the net air flow into the zone, gross flow at the fan is derived using izEATR (see below). @@ -326,7 +362,9 @@ Fan design or rated flow at rated pressure. For AIRNETHERV, this is the net air }) }} -**izCpr=*float*** +### izCpr + +Type: *float* Wind pressure coefficient (for AIRNETEXT). @@ -340,7 +378,9 @@ Wind pressure coefficient (for AIRNETEXT). }) }} -**izExp=*float*** +### izExp + +Type: *float* Opening exponent (for AIRNETEXT). @@ -354,7 +394,9 @@ Opening exponent (for AIRNETEXT). }) }} -**izVfMin=*float*** +### izVfMin + +Type: *float* Minimum volume flow rate (VentOff mode). @@ -368,7 +410,9 @@ Minimum volume flow rate (VentOff mode). }) }} -**izVfMax=*float*** +### izVfMax + +Type: *float* Maximum volume flow rate (VentOn mode) @@ -382,7 +426,9 @@ Maximum volume flow rate (VentOn mode) }) }} -**izASEF=*float*** +### izASEF + +Type: *float* Apparent sensible effectiveness for AIRNETHERV ventilator. ASEF is a commonly-reported HERV rating and is calculated as (supplyT - sourceT) / (returnT - sourceT). This formulation includes fan heat (in supplyT), hence the term "apparent". Ignored if izSRE is given. CSE does not HRV exhaust-side condensation, so this model is approximate. @@ -396,7 +442,9 @@ Apparent sensible effectiveness for AIRNETHERV ventilator. ASEF is a commonly-r }) }} -**izSRE=*float*** +### izSRE + +Type: *float* Sensible recovery efficiency (SRE) for AIRNETHERV ventilator. Used as the sensible effectiveness in calculation of the supply air temperature. Note that values of SRE greater than approximately 0.6 imply exhaust-side condensation under HVI rating conditions. CSE does not adjust for these effects. High values of izSRE will produce unrealistic results under mild outdoor conditions and/or dry indoor conditions. @@ -410,7 +458,9 @@ Sensible recovery efficiency (SRE) for AIRNETHERV ventilator. Used as the sensi }) }} -**izASRE=*float*** +### izASRE + +Type: *float* Adjusted sensible recovery efficiency (ASRE) for AIRNETHERV ventilator. The difference izASRE - izSRE is used to calculate fan heat added to the supply air stream. See izSRE notes. No effect when izSRE is 0. @@ -424,7 +474,9 @@ Adjusted sensible recovery efficiency (ASRE) for AIRNETHERV ventilator. The dif }) }} -**izEATR=*float*** +### izEATR + +Type: *float* Exhaust air transfer ratio for AIRNETHERV ventilator. NetFlow = (1 - EATR)*(grossFlow). @@ -438,7 +490,9 @@ Exhaust air transfer ratio for AIRNETHERV ventilator. NetFlow = (1 - EATR)*(gro }) }} -**izLEF=*float*** +### izLEF + +Type: *float* Latent heat recovery effectiveness for AIRNETHERV ventilator. The default value (0) results in sensible-only heat recovery. @@ -452,7 +506,9 @@ Latent heat recovery effectiveness for AIRNETHERV ventilator. The default value }) }} -**izRVFanHeatF=*float*** +### izRVFanHeatF + +Type: *float* Fraction of fan heat added to supply air stream for AIRNETHERV ventilator. Used only when when izSRE is 0 (that is, when izASEF specifies the sensible effectiveness). @@ -466,7 +522,9 @@ Fraction of fan heat added to supply air stream for AIRNETHERV ventilator. Used }) }} -**izVfExhRat=*float*** +### izVfExhRat + +Type: *float* Exhaust volume flow ratio for AIRNETHERV ventilator = (exhaust flow) / (supply flow). Any value other than 1 indicates unbalanced flow that effects the zone pressure. @@ -481,7 +539,9 @@ value other than 1 indicates unbalanced flow that effects the zone pressure. }) }} -**izfanPress=*float*** +### izfanPress + +Type: *float* Design or rated fan pressure. @@ -497,7 +557,9 @@ Design or rated fan pressure. Only one of izfanElecPwr, izfanEff, and izfanShaftBhp may be given: together with izfanVfDs and izfanPress, any one is sufficient for CSE to determine the others and to compute the fan heat contribution to the air stream. -**izfanElecPwr=*float*** +### izfanElecPwr + +Type: *float* Fan input power per unit air flow (at design flow and pressure). @@ -511,7 +573,9 @@ Fan input power per unit air flow (at design flow and pressure). }) }} -**izfanEff=*float*** +### izfanEff + +Type: *float* Fan efficiency at design flow and pressure, as a fraction. @@ -525,7 +589,9 @@ Fan efficiency at design flow and pressure, as a fraction. }) }} -**izfanShaftBhp=*float*** +### izfanShaftBhp + +Type: *float* Fan shaft brake horsepower at design flow and pressure. @@ -564,7 +630,9 @@ If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coeffici }) }} -**izFanMtr=*mtrName*** +### izFanMtr + +Type: *mtrName* Name of meter, if any, to record energy used by supply fan. End use category used is specified by izFanEndUse (next). @@ -578,7 +646,9 @@ Name of meter, if any, to record energy used by supply fan. End use category use }) }} -**izFanEndUse=*choice*** +### izFanEndUse + +Type: *choice* End use to which fan energy is recorded (in METER specified by izFanMtr). See METER for available end use choices. diff --git a/doc/src/docs/input-data/layer.md b/doc/src/docs/input-data/layer.md index 6e60abd0b..db0443dfa 100644 --- a/doc/src/docs/input-data/layer.md +++ b/doc/src/docs/input-data/layer.md @@ -20,7 +20,9 @@ Name of layer (follows "LAYER"). Required only if the LAYER is later referenced }) }} -**lrMat=*matName*** +### lrMat + +Type: *matName* Name of primary MATERIAL in layer. @@ -34,7 +36,9 @@ Name of primary MATERIAL in layer. }) }} -**lrThk=*float*** +### lrThk + +Type: *float* Thickness of layer. @@ -48,7 +52,9 @@ Thickness of layer. }) }} -**lrFrmMat=*matName*** +### lrFrmMat + +Type: *matName* Name of framing MATERIAL in layer, if any. At most one layer with lrFrmMat is allowed per CONSTRUCTION. See caution above regarding framed-layer model. @@ -62,7 +68,9 @@ Name of framing MATERIAL in layer, if any. At most one layer with lrFrmMat is al }) }} -**lrFrmFrac=*float*** +### lrFrmFrac + +Type: *float* Fraction of layer that is framing. Must be specified if frmMat is specified. See caution above regarding framed-layer model. diff --git a/doc/src/docs/input-data/material.md b/doc/src/docs/input-data/material.md index c4375b32d..ae940ae82 100644 --- a/doc/src/docs/input-data/material.md +++ b/doc/src/docs/input-data/material.md @@ -16,7 +16,9 @@ Name of material being defined; follows the word "MATERIAL". }) }} -**matThk=*float*** +### matThk + +Type: *float* Thickness of material. If specified, matThk indicates the discreet thickness of a component as used in construction assemblies. If omitted, matThk indicates that the material can be used in any thickness; the thickness is then specified in each LAYER using the material (see below). @@ -30,7 +32,9 @@ Thickness of material. If specified, matThk indicates the discreet thickness of }) }} -**matCond=*float*** +### matCond + +Type: *float* Conductivity of material. Note that conductivity is *always* stated for a 1 foot thickness, even when matThk is specified; if the conductance is known for a specific thickness, an expression can be used to derive matCond. @@ -44,7 +48,9 @@ Conductivity of material. Note that conductivity is *always* stated for a 1 foot }) }} -**matCondT=*float*** +### matCondT + +Type: *float* Temperature at which matCond is rated. See matCondCT (next). @@ -58,7 +64,9 @@ Temperature at which matCond is rated. See matCondCT (next). }) }} -**matCondCT=*float*** +### matCondCT + +Type: *float* Coefficient for temperature adjustment of matCond in the forward difference surface conduction model. Each hour (not subhour), the conductivity of layers using this material are adjusted as followslrCond = matCond \* (1 + matCondCT\*(T~layer~ – matCondT)) @@ -74,7 +82,9 @@ Coefficient for temperature adjustment of matCond in the forward difference surf Note: A typical value of matCondCT for fiberglass batt insulation is 0.00418 F^-1^ -**matSpHt=*float*** +### matSpHt + +Type: *float* Specific heat of material. @@ -88,7 +98,9 @@ Specific heat of material. }) }} -**matDens=*float*** +### matDens + +Type: *float* Density of material. @@ -102,7 +114,9 @@ Density of material. }) }} -**matRNom=*float*** +### matRNom + +Type: *float* Nominal R-value per foot of material. Appropriate for insulation materials only and *used for documentation only*. If specified, the current material is taken to have a nominal R-value that contributes to the reported nominal R-value for a construction. As with matCond, matRNom is *always* stated for a 1 foot thickness, even when matThk is specified; if the nominal R-value is known for a specific thickness, an expression can be used to derive matRNom. diff --git a/doc/src/docs/input-data/meter.md b/doc/src/docs/input-data/meter.md index 44252a45e..18a8d75a7 100644 --- a/doc/src/docs/input-data/meter.md +++ b/doc/src/docs/input-data/meter.md @@ -41,7 +41,9 @@ Name of meter: required for assigning energy uses to the meter elsewhere. }) }} -**mtrDemandRate=*float*** +### mtrDemandRate + +Type: *float* DmdCost per Btu of demand, for a month. @@ -55,7 +57,9 @@ DmdCost per Btu of demand, for a month. }) }} -**mtrRate=*float*** +### mtrRate + +Type: *float* Cost of energy use per Btu. diff --git a/doc/src/docs/input-data/performancemap.md b/doc/src/docs/input-data/performancemap.md index 07d83ffeb..63aa81c35 100644 --- a/doc/src/docs/input-data/performancemap.md +++ b/doc/src/docs/input-data/performancemap.md @@ -79,7 +79,9 @@ Name of grid axis; optionally given after the word "PMGRIDAXIS". Used in error }) }} -**pmGXType=*string*** +### pmGXType + +Type: *string* Documents the dimension of the axis, for example "OutdoorDBT", "Speed", or "AirFlow". @@ -107,7 +109,9 @@ Documents the dimension of the axis, for example "OutdoorDBT", "Speed", or "AirF }) }} -**pmGXRefValue=*float*** +### pmGXRefValue + +Type: *float* Defines the reference or nominal value of this PMGRIDAXIS. For example, when defining temperature points for a typical air conditioner, pmGXRefValue=95 might be used, since AC capacity is rated at 95 F. @@ -153,7 +157,9 @@ Name of lookup data; optionally given after the word "PMLOOKUPDATA". Used in er }) }} -**pmLUType=*string*** +### pmLUType + +Type: *string* Documents the current lookup value, e.g. "COP" or "CapacityRatio". diff --git a/doc/src/docs/input-data/perimeter.md b/doc/src/docs/input-data/perimeter.md index 204461859..3e2b95b3d 100644 --- a/doc/src/docs/input-data/perimeter.md +++ b/doc/src/docs/input-data/perimeter.md @@ -16,7 +16,9 @@ Optional name of perimeter. }) }} -**prLen=*float*** +### prLen + +Type: *float* Length of exposed perimeter. @@ -30,7 +32,9 @@ Length of exposed perimeter. }) }} -**prF2=*float*** +### prF2 + +Type: *float* Perimeter conduction per unit length. diff --git a/doc/src/docs/input-data/pvarray.md b/doc/src/docs/input-data/pvarray.md index ea44c372f..07499b4c6 100644 --- a/doc/src/docs/input-data/pvarray.md +++ b/doc/src/docs/input-data/pvarray.md @@ -16,7 +16,9 @@ Name of photovoltaic array. Give after the word PVARRAY. }) }} -**pvElecMtr=*choice*** +### pvElecMtr + +Type: *choice* Name of meter by which this PVARRAY's AC power out is recorded. Generated power is expressed as a negative value. @@ -30,7 +32,9 @@ Name of meter by which this PVARRAY's AC power out is recorded. Generated power }) }} -**pvEndUse=*choice*** +### pvEndUse + +Type: *choice* Meter end use to which the PVARRAY's generated energy should be accumulated. @@ -46,7 +50,9 @@ Meter end use to which the PVARRAY's generated energy should be accumulated. }) }} -**pvDCSysSize=*float*** +### pvDCSysSize + +Type: *float* The rated photovoltaic system DC capacity/size as indicated by the nameplate. @@ -60,7 +66,9 @@ The rated photovoltaic system DC capacity/size as indicated by the nameplate. }) }} -**pvModuleType=*choice*** +### pvModuleType + +Type: *choice* Type of module to model. The module type determines the refraction index and temperature coefficient used in the simulation. Alternatively, the "Custom" module type may be used in conjunction with user-defined input for *pvCoverRefrInd* and *pvTempCoeff*. @@ -81,7 +89,9 @@ Type of module to model. The module type determines the refraction index and tem }) }} -**pvCoverRefrInd=*float*** +### pvCoverRefrInd + +Type: *float* The refraction index for the coating applied to the module cover. A value of 1.0 represents refraction through air. Coatings have higher refraction indexes that capture more solar at lower angles of incidence. @@ -95,7 +105,9 @@ The refraction index for the coating applied to the module cover. A value of 1.0 }) }} -**pvTempCoeff=*float*** +### pvTempCoeff + +Type: *float* The temperature coefficient how the efficiency of the module varies with the cell temperature. Values are typically negative. @@ -109,7 +121,9 @@ The temperature coefficient how the efficiency of the module varies with the cel }) }} -**pvArrayType=*choice*** +### pvArrayType + +Type: *choice* The type of array describes mounting and tracking options. Roof mounted arrays have a higher installed nominal operating cell temperature (INOCT) of 120 ^o^F compared to the default of 113 ^o^F. Array self-shading is not currently calculated for adjacent rows of modules within an array. @@ -123,7 +137,9 @@ The type of array describes mounting and tracking options. Roof mounted arrays h }) }} -**pvTilt=*float*** +### pvTilt + +Type: *float* The tilt of the photovoltaic array from horizontal. Values outside the range 0 to 360 are first normalized to that range. For one-axis tracking, defines the tilt of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. @@ -147,7 +163,9 @@ The following figures illustrate the use of both pvTilt and pvAzm for various co ![One-axis tracker, horizontal aligned East/West (less common)](../assets/images/pv_horiz_tracker_east.png) -**pvAzm=*float*** +### pvAzm + +Type: *float* Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the range 0^o^ $\leq$ *x* $<$ 360^o^ is given, it is normalized to that range. For one-axis tracking, defines the azimuth of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. @@ -183,7 +201,9 @@ Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the }) }} -**pvSIF=*float*** +### pvSIF + +Type: *float* Shading Impact Factor (SIF) of the array used to represent the disproportionate impact on array output of partially shaded modules at the sub-array level. This impact is applied to the effective beam irradiance on the array: @@ -204,7 +224,9 @@ Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the }} -**pvMounting=*choice*** +### pvMounting + +Type: *choice* Specified mounting location of this PVARRAY. pvMounting=Site indicates the array position is not altered by building rotation via [TOP bldgAzm][top-general-data-items], while PVARRAYs with pvMounting=Building are assumed to rotate with the building. @@ -218,7 +240,9 @@ Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the }) }} -**pvGrndRefl=*float*** +### pvGrndRefl + +Type: *float* Ground reflectance used for calculating reflected solar incidence on the array. @@ -233,7 +257,9 @@ Ground reflectance used for calculating reflected solar incidence on the array. }} -**pvDCtoACRatio=*float*** +### pvDCtoACRatio + +Type: *float* DC-to-AC ratio used to intentionally undersize the AC inverter. This is used to increase energy production in the beginning and end of the day despite the possibility of clipping peak sun hours. @@ -259,7 +287,9 @@ DC-to-AC ratio used to intentionally undersize the AC inverter. This is used to }) }} -**pvInverterEff=*float*** +### pvInverterEff + +Type: *float* AC inverter efficiency at rated DC power. @@ -273,7 +303,9 @@ AC inverter efficiency at rated DC power. }) }} -**pvSysLosses=*float*** +### pvSysLosses + +Type: *float* Fraction of total DC energy lost. The total loss from a system is aggregated from several possible causes as illustrated below: diff --git a/doc/src/docs/input-data/report.md b/doc/src/docs/input-data/report.md index 1fd6827f0..065d67296 100644 --- a/doc/src/docs/input-data/report.md +++ b/doc/src/docs/input-data/report.md @@ -44,7 +44,9 @@ Name of report. Give after the word REPORT. }) }} -**rpReportfile=*rfname*** +### rpReportfile + +Type: *rfname* Name of report file to which current report will be written. If omitted, if REPORT is within a REPORTFILE object, report will be written to that report file, or else to REPORTFILE "Primary", which (as described in previous section) is automatically supplied and by default uses the file name of the input file with the extension .REP. @@ -58,7 +60,9 @@ Name of report file to which current report will be written. If omitted, if REPO }) }} -**rpType=*choice*** +### rpType + +Type: *choice* Choice indicating report type. Report types may be described at greater length, with examples, in Section 6. @@ -87,7 +91,9 @@ Choice indicating report type. Report types may be described at greater length, The next three members specify how frequently values are reported and the start and end dates for the REPORT. They are not allowed with *rpTypes* ERR, LOG, INP, SUM, and ZDD, which involve no time-varying data. -**rpFreq=*choice*** +### rpFreq + +Type: *choice* Report Frequency: specifies interval for generating rows of report data: @@ -115,7 +121,9 @@ We recommend using HOURly and more frequent reports sparingly, to report on only }) }} -**rpDayBeg=*date*** +### rpDayBeg + +Type: *date* Initial day of period to be reported. Reports for which *rpFreq* = YEAR do not allow specification of *rpDayBeg* and *rpDayEnd*; for MONTH reports, these members default to include all months in the run; for DAY and shorter-interval reports, *rpDayBeg* is required and *rpDayEnd* defaults to *rpDayBeg*. @@ -129,7 +137,9 @@ Initial day of period to be reported. Reports for which *rpFreq* = YEAR do not a }) }} -**rpDayEnd=*date*** +### rpDayEnd + +Type: *date* Final day of period to be reported, except for YEAR reports. @@ -143,7 +153,9 @@ Final day of period to be reported, except for YEAR reports. }) }} -**rpZone=*znName*** +### rpZone + +Type: *znName* Name of ZONE for which a ZEB, ZST, or ZDD report is being requested. For *rpType* ZEB or ZST, you may use *rpZone*=SUM to obtain a report showing only the sum of the data for all zones, or *rpZone*=ALL to obtain a report showing, for each time interval, a row of data for each zone plus a sum-of-zones row. @@ -157,7 +169,9 @@ Name of ZONE for which a ZEB, ZST, or ZDD report is being requested. For *rpType }) }} -**rpMeter=*mtrName*** +### rpMeter + +Type: *mtrName* Specifies meter(s) to be reported, for *rpType*=MTR. @@ -171,7 +185,9 @@ Specifies meter(s) to be reported, for *rpType*=MTR. }) }} -**rpDHWMeter=*dhwMtrName*** +### rpDHWMeter + +Type: *dhwMtrName* Specifies DHW meter(s) to be reported, for *rpType*=DHWMTR. @@ -185,7 +201,9 @@ Specifies DHW meter(s) to be reported, for *rpType*=DHWMTR. }) }} -**rpAFMeter=*afMtrName*** +### rpAFMeter + +Type: *afMtrName* Specifies air flow meter(s) to be reported, for *rpType*=AFMTR. @@ -199,7 +217,9 @@ Specifies air flow meter(s) to be reported, for *rpType*=AFMTR. }) }} -**rpAh=*ahName*** +### rpAh + +Type: *ahName* Specifies air handler(s) to be reported, for *rpType*=AH, AHSIZE, or AHLOAD. @@ -213,7 +233,9 @@ Specifies air handler(s) to be reported, for *rpType*=AH, AHSIZE, or AHLOAD. }) }} -**rpTu=*tuName*** +### rpTu + +Type: *tuName* Specifies air handler(s) to be reported, for *rpType*=TUSIZE or TULOAD. @@ -227,7 +249,9 @@ Specifies air handler(s) to be reported, for *rpType*=TUSIZE or TULOAD. }) }} -**rpBtuSf=*float*** +### rpBtuSf + +Type: *float* Scale factor to be used when reporting energy values. Internally, all energy values are represented in Btu. This member allows scaling to more convenient units for output. *rpBtuSf* is not shown in the output, so if you change it, be sure the readers of the report know the energy units being used. *rpBtuSf* is not applied in UDT reports, but column values can be scaled as needed with expressions. @@ -241,7 +265,9 @@ Scale factor to be used when reporting energy values. Internally, all energy val }) }} -**rpCond=*expression*** +### rpCond + +Type: *expression* Conditional reporting flag. If given, report rows are printed only when value of expression is non-0. Permits selective reporting according to any condition that can be expressed as a CSE expression. Such conditional reporting can be used to shorten output and make it easy to find data of interest when you are only interested in the information under exceptional conditions, such as excessive zone temperature. Allowed with *rpTypes* ZEB, ZST, MTR, AH, and UDT. @@ -255,7 +281,9 @@ Conditional reporting flag. If given, report rows are printed only when value of }) }} -**rpCPL=*int*** +### rpCPL + +Type: *int* Characters per line for a UDT (user-defined report). If widths specified in REPORTCOLs add up to more than this, a message occurs; if they total substantially less, additional whitespace is inserted between columns to make the report more readable. If rpCPL = -1, the report width determined based on required space with a single space between columns. rpCPL=0 uses the Top level *repCPL*. rpCPL is not allowed if *rpType* is not UDT. @@ -269,7 +297,9 @@ Characters per line for a UDT (user-defined report). If widths specified in REPO }) }} -**rpTitle=*string*** +### rpTitle + +Type: *string* Title for use in report header of User-Defined report. Disallowed if *rpType* is not UDT. @@ -283,7 +313,9 @@ Title for use in report header of User-Defined report. Disallowed if *rpType* is }) }} -**rpHeader=*choice*** +### rpHeader + +Type: *choice* Use NO to suppress the report header which gives the report type, zone, meter, or air handler being reported, time interval, column headings, etc. One reason to do this might be if you are putting only a single report in a report file and intend to later embed the report in a document or process it with some other program (but for the latter, see also EXPORT, below). @@ -301,7 +333,9 @@ See REPORTFILE member *rfPageFmt*, above, to control report *FILE* page headers }) }} -**rpFooter=*choice*** +### rpFooter + +Type: *choice* Use NO to suppress the report footers. The report footer is usually a row which sums hourly data for the day, daily data for the month, or monthly data for the year. For a report with *rpZone, rpMeter,*or *rpAh* = ALL, the footer row shows sums for all zones, meters, or air handlers. Sometimes the footer is merely a blank line. diff --git a/doc/src/docs/input-data/reportcol.md b/doc/src/docs/input-data/reportcol.md index fced15609..e3f716be3 100644 --- a/doc/src/docs/input-data/reportcol.md +++ b/doc/src/docs/input-data/reportcol.md @@ -18,7 +18,9 @@ Name of REPORTCOL. }) }} -**colReport=*rpName*** +### colReport + +Type: *rpName* Name of report to which current report column belongs. If REPORTCOL is given within a REPORT object, then *colReport* defaults to that report. @@ -32,7 +34,9 @@ Name of report to which current report column belongs. If REPORTCOL is given wit }) }} -**colVal=*expression*** +### colVal + +Type: *expression* Value to show in this column of report. @@ -46,7 +50,9 @@ Value to show in this column of report. }) }} -**colHead=*string*** +### colHead + +Type: *string* Text used for column head. @@ -60,7 +66,9 @@ Text used for column head. }) }} -**colGap=*int*** +### colGap + +Type: *int* Space between (to left of) column, in character positions. Allows you to space columns unequally, to emphasize relations among columns or to improve readability. If the total of the *colGaps* and *colWids* in the report's REPORTCOLs is substantially less than the REPORT's *rpCPL* (characters per line, see REPORT), CSE will insert additional spaces between columns. To suppress these spaces, use a smaller *rpCPL* or use *rpCPL* = -1. @@ -74,7 +82,9 @@ Space between (to left of) column, in character positions. Allows you to space c }) }} -**colWid=*int*** +### colWid + +Type: *int* Column width. @@ -88,7 +98,9 @@ Column width. }) }} -**colDec=*int*** +### colDec + +Type: *int* Number of digits after decimal point. @@ -102,7 +114,9 @@ Number of digits after decimal point. }) }} -**colJust=*choice*** +### colJust + +Type: *choice* Specifies positioning of data within column: diff --git a/doc/src/docs/input-data/reportfile.md b/doc/src/docs/input-data/reportfile.md index d01cb95fc..206e52217 100644 --- a/doc/src/docs/input-data/reportfile.md +++ b/doc/src/docs/input-data/reportfile.md @@ -34,7 +34,9 @@ Name of REPORTFILE object, given immediately after the word REPORTFILE. Note tha }) }} -**rfFileName=*path*** +### rfFileName + +Type: *path* path name of file to be written. If no path is specified, the file is written in the current directory. The default extension is .REP. @@ -48,7 +50,9 @@ path name of file to be written. If no path is specified, the file is written in }) }} -**rfFileStat=*choice*** +### rfFileStat + +Type: *choice* Choice indicating what CSE should do if the file specified by *rfFileName*already exists: @@ -69,7 +73,9 @@ If the specified file does not exist, it is created and *rfFileStat* has no effe }) }} -**rfPageFmt=*Choice*** +### rfPageFmt + +Type: *Choice* Choice controlling page formatting. Page formatting consists of dividing the output into pages (with form feed characters), starting a new page before each report too long to fit on the current page, and putting headers and footers on each page. Page formatting makes attractive printed output but is a distraction when examining the output on the screen and may inappropriate if you are going to further process the output with another program. diff --git a/doc/src/docs/input-data/rsys.md b/doc/src/docs/input-data/rsys.md index 5ae5f7fa7..d25c43f34 100644 --- a/doc/src/docs/input-data/rsys.md +++ b/doc/src/docs/input-data/rsys.md @@ -16,7 +16,9 @@ Optional name of HVAC system; give after the word “RSYS” if desired. }) }} -**rsType=*choice*** +### rsType + +Type: *choice* Type of system. @@ -53,7 +55,9 @@ FANCOIL, Coil-based heating and cooling. No primary (fuel-using) equipment is m }) }} -**rsDesc=*string*** +### rsDesc + +Type: *string* Text description of system, included as documentation in debugging reports such as those triggered by rsGeneratePerfMap=YES @@ -67,7 +71,9 @@ Text description of system, included as documentation in debugging reports such }) }} -**rsModeCtrl=*choice*** +### rsModeCtrl + +Type: *choice* Specifies systems heating/cooling availability during simulation. @@ -87,7 +93,9 @@ Specifies systems heating/cooling availability during simulation. }) }} -**rsGeneratePerfMap=*choice*** +### rsGeneratePerfMap + +Type: *choice* Generate performance map(s) for this RSYS. Comma-separated text is written to file PM\_[rsName].csv. This is a debugging capability that is not necessarily maintained. The format of the generated csv text file may change and is unrelated to the PERFORMANCEMAP input scheme used via *rsPerfMapHtg* and *rsPerfMapClg*. @@ -101,7 +109,9 @@ Generate performance map(s) for this RSYS. Comma-separated text is written to fi }) }} -**rsFanTy=*choice*** +### rsFanTy + +Type: *choice* Specifies fan (blower) position relative to primary heating or cooling source (i.e. heat exchanger or heat pump coil for heating and AC coil for cooling). The blower position determines where fan heat is added to the RSYS air stream and thus influences the coil entering air temperature. @@ -115,7 +125,9 @@ Specifies fan (blower) position relative to primary heating or cooling source (i }) }} -**rsFanMotTy=*choice*** +### rsFanMotTy + +Type: *choice* Specifies type of motor driving the fan (blower). This is used in the derivation of the coil-only cooling capacity for the RSYS. @@ -133,11 +145,15 @@ Specifies type of motor driving the fan (blower). This is used in the derivation }) }} -**rsAdjForFanHt=*choice*** +### rsAdjForFanHt + +Type: *choice* Fan heat adjustment with two options Yes or no. Yes: fanHtRtd derived from rsFanTy and removed from capacity and input values. No: no rated fan heat adjustments. -**rsElecMtr=*mtrName*** +### rsElecMtr + +Type: *mtrName* Name of METER object, if any, by which system’s electrical energy use is recorded (under appropriate end uses). @@ -205,7 +221,9 @@ rsSrcSideLoadMtr should not specify the same LOADMETER as rsHtgSrcSideLoadMtr or }) }} -**rsCHDHWSYS=*dhwsysName*** +### rsCHDHWSYS + +Type: *dhwsysName* DHWSYS hot water source for this RSYS, required when rsType is COMBINEDHEATDHW or ACCOMBINEDHEATDHW. The specified DHWSYS must include a DHWHEATER of whType=ASHPX or RESISTANCEX. @@ -219,7 +237,9 @@ DHWSYS hot water source for this RSYS, required when rsType is COMBINEDHEATDHW o }) }} -**rsAFUE=*float*** +### rsAFUE + +Type: *float* Heating Annual Fuel Utilization Efficiency (AFUE). @@ -233,7 +253,9 @@ Heating Annual Fuel Utilization Efficiency (AFUE). }) }} -**rsCapH=*float*** +### rsCapH + +Type: *float* Heating capacity, used when rsType is ACFURNACE, ACRESISTANCE, FURNACE, WSHP or RESISTANCE. @@ -249,7 +271,9 @@ If rsType=WSHP, rsCapH is at source fluid temperature = 68 ^o^F. }) }} -**rsTdDesH=*float*** +### rsTdDesH + +Type: *float* Nominal heating temperature rise (across system, not at zone) used during autosizing (when capacity is not yet known) and to derive heating air flow rate from heating capacity. @@ -263,7 +287,9 @@ Nominal heating temperature rise (across system, not at zone) used during autosi }) }} -**rsFxCapH=*float*** +### rsFxCapH + +Type: *float* Heating autosizing capacity factor. If AUTOSIZEd, rsCapH or rsCap47 is set to rsFxCapH $\times$ (peak design-day load). Peak design-day load is the heating capacity that holds zone temperature at the thermostat set point during the *last substep* of all hours of all design days. @@ -277,7 +303,9 @@ Heating autosizing capacity factor. If AUTOSIZEd, rsCapH or rsCap47 is set to rs }) }} -**rsFanPwrH=*float*** +### rsFanPwrH + +Type: *float* Heating operating fan power. For most rsTypes, heating air flow is calculated from heating capacity and rsTdDesH. The default value of rsFanPwrH is .365 W/cfm except 0.273 W/cfm is used when rsType=COMBINEDHEATDHW and rsType=ACCOMBINEDHEATDHW. @@ -291,7 +319,9 @@ Heating operating fan power. For most rsTypes, heating air flow is calculated fr }) }} -**rsHSPF=*float*** +### rsHSPF + +Type: *float* For rsType=ASHP, Heating Seasonal Performance Factor (HSPF). @@ -305,7 +335,9 @@ For rsType=ASHP, Heating Seasonal Performance Factor (HSPF). }) }} -**rsCap47=*float*** +### rsCap47 + +Type: *float* For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 47 ^o^F. @@ -321,7 +353,9 @@ If rsType=ASHP and both rsCapC and rsCap47 are autosized, both are set to the la }) }} -**rsCap35=*float*** +### rsCap35 + +Type: *float* For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 35 ^o^F. rsCap35 typically reflects reduced capacity due to reverse (cooling) heat pump operation for defrost. @@ -335,7 +369,9 @@ For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 35 ^o^ }) }} -**rsCap17=*float*** +### rsCap17 + +Type: *float* For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 17 ^o^F. @@ -349,7 +385,9 @@ For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 17 ^o^ }) }} -**rsCOP95=*float*** +### rsCOP95 + +Type: *float* For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 95 ^o^F. @@ -363,7 +401,9 @@ For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb te }) }} -**rsCOP47=*float*** +### rsCOP47 + +Type: *float* For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 47 ^o^F. For rsType=WSHP, rated heating coefficient of performance at source fluid temperature = 68 ^o^F. @@ -377,7 +417,9 @@ For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb te }) }} -**rsCOP35=*float*** +### rsCOP35 + +Type: *float* For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 35 ^o^F. @@ -391,7 +433,9 @@ For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb te }) }} -**rsCOP17=*float*** +### rsCOP17 + +Type: *float* For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 17 ^o^F. @@ -405,7 +449,9 @@ For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb te }) }} -**rsCapRat1747=*float*** +### rsCapRat1747 + +Type: *float* Ratio of rsCAP17 over rsCAP47. @@ -419,7 +465,9 @@ Ratio of rsCAP17 over rsCAP47. }) }} -**rsCapRat9547=*float*** +### rsCapRat9547 + +Type: *float* Ratio of rsCAP95 to rsCAP47. This ratio is used for inter-defaulting rsCap47 and rsCapC such that they have consistent values as is required given that a heat pump is a single device. If not given, rsCapRat9547 is determined during calculations using the relationship cap95 = 0.98 * cap47 + 180 (derived via correlation of capacities of a set of real units). @@ -433,7 +481,9 @@ Ratio of rsCAP95 to rsCAP47. This ratio is used for inter-defaulting rsCap47 an }) }} -**rsCapRatCH=*float*** +### rsCapRatCH + +Type: *float* For WSHP only: ratio of rsCapC to rsCapH. Used to derive capacity during autosizing or when only one capacity is specified. @@ -447,7 +497,9 @@ For WSHP only: ratio of rsCapC to rsCapH. Used to derive capacity during autosi }) }} -**rsPerfMapHtg=*performanceMapName*** +### rsPerfMapHtg + +Type: *performanceMapName* Specifies the heating performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM. The PERFORMANCEMAP must have grid variables outdoor drybulb and compressor speed (in that order) and lookup values of net capacity ratios and COP. See example in PERFORMANCEMAP. @@ -461,7 +513,9 @@ Specifies the heating performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM. }) }} -**rsPerfMapClg=*performanceMapName*** +### rsPerfMapClg + +Type: *performanceMapName* Specifies the cooling performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM, ACPM, ACPMFURNACE, ACPMRESISTANCE, or ACPMCOMBINEDHEATDHW. The PERFORMANCEMAP must have grid variables outdoor drybulb and compressor speed (in that order) and lookup values of net capacity ratios and COP. See example in PERFORMANCEMAP. @@ -475,7 +529,9 @@ Specifies the cooling performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM, }) }} -**rsTypeAuxH=*choice*** +### rsTypeAuxH + +Type: *choice* For rsType=ASHP, type of auxiliary heat. Auxiliary heating is used when heatpump capacity is insufficient to maintain zone temperature and during reverse-cycle defrost operation (if rsDefrostModel=REVCYCLEAUX). If rsTypeAuxH=Furnace, energy use for auxiliary heat is accumulated to end use HPBU of meter rsFuelMtr (if specified). If rsTypeAuxH=Resistance, energy use for auxiliary heat is accumulated to end use HPBU of meter rsElecMtr (if specified). @@ -495,7 +551,9 @@ FURNACE, Fuel-fired", True) }) }} -**rsCtrlAuxH=*choice*** +### rsCtrlAuxH + +Type: *choice* For rsType=ASHP, type of auxiliary heating control. @@ -515,7 +573,9 @@ ALTERNATE, Alternates between compressor and auxiliary", True) }) }} -**rsCapAuxH=*float*** +### rsCapAuxH + +Type: *float* For rsType=ASHP, auxiliary heating capacity. If AUTOSIZEd, rsCapAuxH is set to the peak heating load evaluated at the heating design temperature (Top.heatDsTDbO). @@ -529,7 +589,9 @@ For rsType=ASHP, auxiliary heating capacity. If AUTOSIZEd, rsCapAuxH is set to t }) }} -**rsAFUEAuxH=*float*** +### rsAFUEAuxH + +Type: *float* For rsType=ASHP, auxiliary heat annualized fuel utilization efficiency. @@ -543,7 +605,9 @@ For rsType=ASHP, auxiliary heat annualized fuel utilization efficiency. }) }} -**rsDefrostModel=*choice*** +### rsDefrostModel + +Type: *choice* Selects modeling options for ASHP outdoor coil defrosting when 17 ^o^F < TDbO < 45 ^o^F. In this temperature range, heating capacity and/or efficiency are typically reduced due to frost accumulation on the outdoor coil. @@ -562,7 +626,9 @@ For rsType=ASHP, auxiliary heat annualized fuel utilization efficiency. }) }} -**rsSHRtarget=*float*** +### rsSHRtarget + +Type: *float* Nominal target for sensible heat ratio (for fancoil). @@ -576,7 +642,9 @@ Nominal target for sensible heat ratio (for fancoil). }) }} -**rsFxCapAuxH=*float*** +### rsFxCapAuxH + +Type: *float* Auxiliary heating autosizing capacity factor. If AUTOSIZEd, rsCapAuxH is set to rsFxCapAuxH $\times$ (peak design-day load). Peak design-day load is the heating capacity that holds zone temperature at the thermostat set point during the *last substep* of all hours of all design days. @@ -590,7 +658,9 @@ Nominal target for sensible heat ratio (for fancoil). }) }} -**rsSEER=*float*** +### rsSEER + +Type: *float* Cooling rated Seasonal Energy Efficiency Ratio (SEER). @@ -604,7 +674,9 @@ Cooling rated Seasonal Energy Efficiency Ratio (SEER). }) }} -**rsEER=*float*** +### rsEER + +Type: *float* Cooling Energy Efficiency Ratio (EER) at standard AHRI rating conditions (outdoor drybulb of 95 ^o^F and entering air at 80 ^o^F drybulb and 67 ^o^F wetbulb). For rsType=WSHP, rated EER at fluid source temperature = 86 ^o^F. @@ -618,7 +690,9 @@ Cooling Energy Efficiency Ratio (EER) at standard AHRI rating conditions (outdoo }) }} -**rsCapC=*float*** +### rsCapC + +Type: *float* Net cooling capacity at standard rating conditions (outdoor drybulb temperature = 95 ^o^F for air source or fluid source temperature = 86 ^o^F for water source). @@ -636,7 +710,9 @@ If rsType=WSHP and both rsCapC and rsCapH are autosized, both are set to the lar }) }} -**rsTdDesC=*float*** +### rsTdDesC + +Type: *float* Nominal cooling temperature fall (across system, not zone) used during autosizing (when capacity is not yet known). @@ -650,7 +726,9 @@ Nominal cooling temperature fall (across system, not zone) used during autosizin }) }} -**rsFxCapC=*float*** +### rsFxCapC + +Type: *float* Cooling autosizing capacity factor. rsCapC is set to rsFxCapC $\times$ (peak design-day load). Peak design-day load is the cooling capacity that holds zone temperature at the thermostat set point during the *last substep* of all hours of all design days. @@ -664,7 +742,9 @@ Cooling autosizing capacity factor. rsCapC is set to rsFxCapC $\times$ (peak des }) }} -**rsFChg=*float*** +### rsFChg + +Type: *float* Cooling compressor capacity factor. The gross cooling capacity is adjusted by the factor rsFChg as specified by California Title 24 procedures. @@ -679,7 +759,9 @@ Cooling compressor capacity factor. The gross cooling capacity is adjusted by t }) }} -**rsVFPerTon=*float*** +### rsVFPerTon + +Type: *float* Standard air volumetric flow rate per nominal ton of cooling capacity. @@ -693,7 +775,9 @@ Standard air volumetric flow rate per nominal ton of cooling capacity. }) }} -**rsFanPwrC=*float*** +### rsFanPwrC + +Type: *float* Cooling fan power. @@ -707,7 +791,9 @@ Cooling fan power. }) }} -**rsASHPLockOutT=*float*** +### rsASHPLockOutT + +Type: *float* Source air dry-bulb temperature below which the air source heat pump compressor does not operate. @@ -721,7 +807,9 @@ Cooling fan power. }) }} -**rsCdH=*float*** +### rsCdH + +Type: *float* Heating cyclic degradation coefficient, valid only for compressor-based heating (heat pumps). @@ -735,7 +823,9 @@ Cooling fan power. }) }} -**rsCdC=*float*** +### rsCdC + +Type: *float* Cooling cyclic degradation coefficient, valid for configurations having compressor-based cooling. @@ -749,7 +839,9 @@ Cooling cyclic degradation coefficient, valid for configurations having compress }) }} -**rsFEffH=*float*** +### rsFEffH + +Type: *float* Heating efficiency factor. At each time step, the heating efficiency is multiplied by rsFEffH. @@ -763,7 +855,9 @@ Heating efficiency factor. At each time step, the heating efficiency is multipl }) }} -**rsFEffAuxHBackup=*float*** +### rsFEffAuxHBackup + +Type: *float* Backup auxiliary heating efficiency factor. At each time step, the backup heating efficiency is multiplied by rsFEffAuxHBackup. Backup auxiliary heating is typically provided by electric resistance "strip heat" but may be provided by a furnace (see rsTypeAuxH). If rsTypeAuxH is not "none", backup heat operates when air source heat pump compressor capacity is insufficient to meet heating load. See also rsFEffAuxHDefrost. @@ -777,7 +871,9 @@ Backup auxiliary heating efficiency factor. At each time step, the backup heati }) }} -**rsFEffAuxHDefrost=*float*** +### rsFEffAuxHDefrost + +Type: *float* Defrost auxiliary heating efficiency factor. At each time step, the defrost auxiliary heating efficiency is multiplied by rsFEffAuxHDefrost. Defrost auxiliary heating is typically provided by electric resistance "strip heat" but may be provided by a furnace (see rsTypeAuxH). If rsDefrostModel=REVCYCLEAUX, defrost auxiliary heat operates during air source heat pump defrost mode. Since defrost and backup heating are generally provided by the same equipment, rsFEffAuxHDefrost and rsFEffAuxHBackup are usually set to the same value, but separate inputs are available for special cases. @@ -791,7 +887,9 @@ Defrost auxiliary heating efficiency factor. At each time step, the defrost aux }) }} -**rsFEffC=*float*** +### rsFEffC + +Type: *float* Cooling efficiency factor. At each time step, the cooling efficiency is multiplied by rsEffC. @@ -805,7 +903,9 @@ Cooling efficiency factor. At each time step, the cooling efficiency is multipl }) }} -**rsCapNomH=*float*** +### rsCapNomH + +Type: *float* Heating nominal capacity. Provides type-independent probe source for RSYS heating capacity. Daily variability is specified to support value changes during AUTOSIZEing. Values set via input are typically constant. @@ -819,7 +919,9 @@ Heating nominal capacity. Provides type-independent probe source for RSYS heati }) }} -**rsCapNomC=*float*** +### rsCapNomC + +Type: *float* Cooling nominal capacity. Provides type-independent probe source for RSYS cooling capacity. Daily variability is specified to support value changes during AUTOSIZEing. Values set via input are typically constant. @@ -833,7 +935,9 @@ Cooling nominal capacity. Provides type-independent probe source for RSYS cooli }) }} -**rsDSEH=*float*** +### rsDSEH + +Type: *float* Heating distribution system efficiency. If given, (1-rsDSEH) of RSYS heating output is discarded. Cannot be combined with more detailed DUCTSEG model. @@ -848,7 +952,9 @@ Heating distribution system efficiency. If given, (1-rsDSEH) of RSYS heating ou }) }} -**rsDSEC=*float*** +### rsDSEC + +Type: *float* Cooling distribution system efficiency. If given, (1-rsDSEC) of RSYS cooling output is discarded. Cannot be combined with more detailed DUCTSEG model. @@ -927,7 +1033,9 @@ VARIABLE, Variable-flow CFI (aka NightBreeze). Flow rate is determined at midn }) }} -**rsOAVTDbInlet=*float*** +### rsOAVTDbInlet + +Type: *float* OAV inlet (source) air temperature. Supply air temperature at the zone is generally higher due to fan heat. Duct losses, if any, also alter the supply air temperature. @@ -941,7 +1049,9 @@ OAV inlet (source) air temperature. Supply air temperature at the zone is gener }) }} -**rsOAVTdiff=*float*** +### rsOAVTdiff + +Type: *float* OAV temperature differential. When operating in OAV mode, the zone set point temperature is max( znTD, inletT+rsOAVTdiff). Small values can result in inadvertent zone heating, due to fan heat. @@ -955,7 +1065,9 @@ OAV inlet (source) air temperature. Supply air temperature at the zone is gener }) }} -**rsOAVReliefZn=*znName*** +### rsOAVReliefZn + +Type: *znName* Name of zone to which relief air is directed during RSYS OAV operation, typically an attic zone. Relief air flow is included in the target zone's pressure and thermal balance. @@ -969,7 +1081,9 @@ Name of zone to which relief air is directed during RSYS OAV operation, typicall }) }} -**rsParElec=*float*** +### rsParElec + +Type: *float* Parasitic electrical power. rsParElec is unconditionally accumulated to end use AUX of rsElecMtr (if specified) and has no other effect. @@ -983,7 +1097,9 @@ Parasitic electrical power. rsParElec is unconditionally accumulated to end use }) }} -**rsParFuel=*float*** +### rsParFuel + +Type: *float* Parasitic fuel use. rsParFuel is unconditionally accumulated to end use AUX of sFuelMtr (if specified) and has no other effect. @@ -997,7 +1113,9 @@ Parasitic fuel use. rsParFuel is unconditionally accumulated to end use AUX of }) }} -**rsRhIn=*float*** +### rsRhIn + +Type: *float* Entering air relative humidity (for model testing). @@ -1011,7 +1129,9 @@ Entering air relative humidity (for model testing). }) }} -**rsTdbOut=*float*** +### rsTdbOut + +Type: *float* Air dry-bulb temperature at the outdoor portion of this system. diff --git a/doc/src/docs/input-data/sgdist.md b/doc/src/docs/input-data/sgdist.md index 4ab8e4f70..4e00e11cd 100644 --- a/doc/src/docs/input-data/sgdist.md +++ b/doc/src/docs/input-data/sgdist.md @@ -18,7 +18,9 @@ Name of solar gain distribution (follows "SGDIST" if given). }) }} -**sgSurf=*sfName*** +### sgSurf + +Type: *sfName* Name of surface to which gain is targeted. @@ -39,7 +41,9 @@ The specified surface must be modeled with the Delayed model. If gain is targete }) }} -**sgSide=*choice*** +### sgSide + +Type: *choice* Designates the side of the surface to which the gain is to be targeted: @@ -61,7 +65,9 @@ EXTERIOR, Apply gain to exterior of surface") ??This can produce some strange arrangements; verify that energy balance can be properly defined in all cases. --> -**sgFSO=*float*** +### sgFSO + +Type: *float* Fraction of solar gain directed to specified surface when the owning window's interior shading is in the open position (when the window's zone's shade closure (znSC) is 0). @@ -75,7 +81,9 @@ Fraction of solar gain directed to specified surface when the owning window's in }) }} -**sgFSC=*float*** +### sgFSC + +Type: *float* Fraction of solar gain directed to specified surface when the owning window's interior shading is in the closed position. If the zone's shades are partly closed (znSC between 0 and 1), a proportional fraction between sgFSO and sgFSC is used. diff --git a/doc/src/docs/input-data/shade.md b/doc/src/docs/input-data/shade.md index 38aed5a18..f4953be0f 100644 --- a/doc/src/docs/input-data/shade.md +++ b/doc/src/docs/input-data/shade.md @@ -19,7 +19,9 @@ Name of shade; follows the word "SHADE" if given. }) }} -**ohDepth=*float*** +### ohDepth + +Type: *float* Depth of overhang (from plane of window to outside edge of overhang). A zero value indicates no overhang. @@ -33,7 +35,9 @@ Depth of overhang (from plane of window to outside edge of overhang). A zero val }) }} -**ohDistUp=*float*** +### ohDistUp + +Type: *float* Distance from top of window to bottom of overhang. @@ -47,7 +51,9 @@ Distance from top of window to bottom of overhang. }) }} -**ohExL=*float*** +### ohExL + +Type: *float* Distance from left edge of window (as viewed from the outside) to the left end of the overhang. @@ -61,7 +67,9 @@ Distance from left edge of window (as viewed from the outside) to the left end o }) }} -**ohExR=*float*** +### ohExR + +Type: *float* Distance from right edge of window (as viewed from the outside) to the right end of the overhang. @@ -75,7 +83,9 @@ Distance from right edge of window (as viewed from the outside) to the right end }) }} -**ohFlap=*float*** +### ohFlap + +Type: *float* Height of flap hanging down from outer edge of overhang. @@ -89,7 +99,9 @@ Height of flap hanging down from outer edge of overhang. }) }} -**lfDepth=*float*** +### lfDepth + +Type: *float* Depth of left fin from plane of window. A zero value indicates no fin. @@ -103,7 +115,9 @@ Depth of left fin from plane of window. A zero value indicates no fin. }) }} -**lfTopUp=*float*** +### lfTopUp + +Type: *float* Vertical distance from top of window to top of left fin. @@ -117,7 +131,9 @@ Vertical distance from top of window to top of left fin. }) }} -**lfDistL=*float*** +### lfDistL + +Type: *float* Distance from left edge of window to left fin. @@ -131,7 +147,9 @@ Distance from left edge of window to left fin. }) }} -**lfBotUp=*float*** +### lfBotUp + +Type: *float* Vertical distance from bottom of window to bottom of left fin. @@ -145,7 +163,9 @@ Vertical distance from bottom of window to bottom of left fin. }) }} -**rfDepth=*float*** +### rfDepth + +Type: *float* Depth of right fin from plane of window. A 0 value indicates no fin. @@ -159,7 +179,9 @@ Depth of right fin from plane of window. A 0 value indicates no fin. }) }} -**rfTopUp=*float*** +### rfTopUp + +Type: *float* Vertical distance from top of window to top of right fin. @@ -173,7 +195,9 @@ Vertical distance from top of window to top of right fin. }) }} -**rfDistR=*float*** +### rfDistR + +Type: *float* Distance from right edge of window to right fin. @@ -187,7 +211,9 @@ Distance from right edge of window to right fin. }) }} -**rfBotUp=*float*** +### rfBotUp + +Type: *float* Vertical distance from bottom of window to bottom of right fin. diff --git a/doc/src/docs/input-data/shadex.md b/doc/src/docs/input-data/shadex.md index 46f7a6a96..f19f7b2ef 100644 --- a/doc/src/docs/input-data/shadex.md +++ b/doc/src/docs/input-data/shadex.md @@ -16,7 +16,9 @@ Name of photovoltaic array. Give after the word SHADEX. }) }} -**sxMounting=*choice*** +### sxMounting + +Type: *choice* Specifies the mounting location of the shade. sxMounting=Site indicates the SHADEX position is fixed and is not modified if the building is rotated. The position of SHADEXs with sxMounting=Building are modified to include the effect of building rotation specified via [Top bldgAz][top-general-data-items] diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index 453b8b5b1..751bccaa5 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -16,7 +16,9 @@ Name of surface; give after the word SURFACE. }) }} -**sfType=*choice*** +### sfType + +Type: *choice* Type of surface: @@ -37,7 +39,9 @@ sfType is used extensively for default determination and input checking, but doe }) }} -**sfArea=*float*** +### sfArea + +Type: *float* Gross area of surface. (CSE computes the net area for simulation by subtracting the areas of any windows and doors in the surface.). @@ -51,7 +55,9 @@ Gross area of surface. (CSE computes the net area for simulation by subtracting }) }} -**sfTilt=*float*** +### sfTilt + +Type: *float* Surface tilt from horizontal. Values outside the range 0 to 360 are first normalized to that range. The default and allowed range depend on sfType, as follows: @@ -71,7 +77,9 @@ Surface tilt from horizontal. Values outside the range 0 to 360 are first normal }) }} -**sfAzm=*float*** +### sfAzm + +Type: *float* Azimuth of surface with respect to znAzm. The azimuth used in simulating a surface is bldgAzm + znAzm + sfAzm; the surface is rotated if any of those are changed. Values outside the range 0 to 360 are normalized to that range. Required for non-horizontal surfaces. @@ -85,7 +93,9 @@ Azimuth of surface with respect to znAzm. The azimuth used in simulating a surfa }) }} -**sfModel=*choice*** +### sfModel + +Type: *choice* Provides user control over how CSE models conduction for this surface. @@ -111,7 +121,9 @@ TODO: better sfModel desciptions --> Either sfU or sfCon must be specified, but not both. -**sfU=*float*** +### sfU + +Type: *float* Surface U-value (NOT including surface (air film) conductances). For surfaces for which no heat capacity is to be modeled, allows direct entry of U-value without defining a CONSTRUCTION. @@ -125,7 +137,9 @@ Surface U-value (NOT including surface (air film) conductances). For surfaces fo }) }} -**sfCon=*conName*** +### sfCon + +Type: *conName* Name of CONSTRUCTION of the surface. @@ -139,7 +153,9 @@ Name of CONSTRUCTION of the surface. }) }} -**sfLThkF=*float*** +### sfLThkF + +Type: *float* Sublayer thickness adjustment factor for FORWARD\_DIFFERENCE conduction model used with sfCon surfaces. Material layers in the construction are divided into sublayers as needed for numerical stability. sfLThkF allows adjustment of the thickness criterion used for subdivision. A value of 0 prevents subdivision; the default value (0.5) uses layers with conservative thickness equal to half of an estimated safe value. Fewer (thicker) sublayers improves runtime at the expense of accurate representation of rapid changes. @@ -153,7 +169,9 @@ Sublayer thickness adjustment factor for FORWARD\_DIFFERENCE conduction model us }) }} -**sfExCnd=*choice*** +### sfExCnd + +Type: *choice* Specifies the thermal conditions assumed at surface exterior, and at exterior of any subobjects (windows or doors) belonging to current surface. The conditions accounted for are dry bulb temperature and incident solar radiation. @@ -164,7 +182,9 @@ GROUND, The surface is in contact with the ground. Details of the two-di ADIABATIC, Exterior surface heat flow is 0. Thermal storage effects of delayed surfaces are modeled.") }} -**sfExAbs=*float*** +### sfExAbs + +Type: *float* Surface exterior absorptivity. @@ -178,7 +198,9 @@ Surface exterior absorptivity. }) }} -**sfInAbs=*float*** +### sfInAbs + +Type: *float* Surface interior solar absorptivity. @@ -192,7 +214,9 @@ Surface interior solar absorptivity. }) }} -**sfExEpsLW=*float*** +### sfExEpsLW + +Type: *float* Surface exterior long wave (thermal) emittance. @@ -206,7 +230,9 @@ Surface exterior long wave (thermal) emittance. }) }} -**sfInEpsLW=*float*** +### sfInEpsLW + +Type: *float* Surface interior long wave (thermal) emittance. @@ -220,7 +246,9 @@ Surface interior long wave (thermal) emittance. }) }} -**sfExT=*float*** +### sfExT + +Type: *float* Exterior air temperature. @@ -234,7 +262,9 @@ Exterior air temperature. }) }} -**sfAdjZn=*znName*** +### sfAdjZn + +Type: *znName* Name of adjacent zone; used only when sfExCnd is ADJZN. Can be the same as the current zone. @@ -248,7 +278,9 @@ Name of adjacent zone; used only when sfExCnd is ADJZN. Can be the same as the c }) }} -**sfGrndRefl=*float*** +### sfGrndRefl + +Type: *float* Ground reflectivity for this surface. @@ -262,7 +294,9 @@ Ground reflectivity for this surface. }) }} -**sfInH=*float*** +### sfInH + +Type: *float* Inside surface (air film) conductance. Ignored for sfModel = Forward\_Difference. Default depends on the surface type. @@ -280,7 +314,9 @@ other, 1.5") }) }} -**sfExH=*float*** +### sfExH + +Type: *float* Outside combined surface (air film) conductance. Ignored for sfModel = Forward\_Difference. The default value is dependent upon the exterior conditions: @@ -314,7 +350,9 @@ ASHRAE, n/a, ASHRAE handbook values TARP, n/a, TARP model", True) }} -**sfExHcModel=*choice*** +### sfExHcModel + +Type: *choice* @@ -330,7 +368,9 @@ Selects the model used for exterior surface convection when sfModel = Forward\_D }) }} -**sfExHcLChar=*float*** +### sfExHcLChar + +Type: *float* Characteristic length of surface, used in derivation of forced exterior convection coefficients in some models when outside surface is exposed to ambient. See sfExHcModel. @@ -344,7 +384,9 @@ Characteristic length of surface, used in derivation of forced exterior convecti }) }} -**sfExHcMult=*float*** +### sfExHcMult + +Type: *float* Exterior convection coefficient adjustment factor. When sfExHcModel=INPUT, hc=sfExHcMult. For other sfExHcModel choices, the model-derived hc is multiplied by sfExHcMult. @@ -358,7 +400,9 @@ Exterior convection coefficient adjustment factor. When sfExHcModel=INPUT, hc=s }) }} -**sfExRf=*float*** +### sfExRf + +Type: *float* Exterior surface roughness factor. Used only when surface is exposed to ambient (i.e. with wind exposure). Typical values: @@ -381,7 +425,9 @@ Exterior surface roughness factor. Used only when surface is exposed to ambient }) }} -**sfInHcModel=*choice*** +### sfInHcModel + +Type: *choice* @@ -413,7 +459,9 @@ Exterior surface roughness factor. Used only when surface is exposed to ambient The items below give values associated with CSE's model for below grade surfaces (sfExCnd=GROUND). See CSE Engineering Documentation for technical details. -**sfFnd=*fdName*** +### sfFnd + +Type: *fdName* Name of FOUNDATION applied to ground-contact Floor SURFACEs; used only for Floor SURFACEs when sfExCnd is GROUND. @@ -427,7 +475,9 @@ Name of FOUNDATION applied to ground-contact Floor SURFACEs; used only for Floor }) }} -**sfFndFloor=*sfName*** +### sfFndFloor + +Type: *sfName* Name of adjacent ground-contact Floor SURFACE; used only for Wall SURFACEs when sfExCnd is GROUND. @@ -441,7 +491,9 @@ Name of adjacent ground-contact Floor SURFACE; used only for Wall SURFACEs when }) }} -**sfHeight=*float*** +### sfHeight + +Type: *float* Needed for foundation wall height, otherwise ignored. Maybe combine with sfDepthBG? @@ -455,7 +507,9 @@ Needed for foundation wall height, otherwise ignored. Maybe combine with sfDepth }) }} -**sfExpPerim=*float*** +### sfExpPerim + +Type: *float* Exposed perimeter of foundation floors. @@ -470,7 +524,9 @@ Exposed perimeter of foundation floors. }} -**sfDepthBG=*float*** +### sfDepthBG + +Type: *float* *Note: sfDepthBG is used as part of the simple ground model, which is no longer supported. Use sfHeight with sfFnd instead.* @@ -488,15 +544,21 @@ Depth below grade of surface. For walls, sfDepthBG is measured to the lower edg *Note: The following data members are part of the simple ground model, which is no longer supported. Use sfFnd instead.* -**sfExCTGrnd=*float*** +### sfExCTGrnd + +Type: *float* **sfExCTaDbAvg07=*float*** -**sfExCTaDbAvg14=*float*** +### sfExCTaDbAvg14 + +Type: *float* **sfExCTaDbAvg31=*float*** -**sfExCTaDbAvgYr=*float*** +### sfExCTaDbAvgYr + +Type: *float* Conductances from outside face of surface to the weather file ground temperature and the moving average outdoor dry-bulb temperatures for 7, 14, 31, and 365 days. @@ -510,7 +572,9 @@ Conductances from outside face of surface to the weather file ground temperature }) }} -**sfExRConGrnd=*float*** +### sfExRConGrnd + +Type: *float* Resistance overall construction resistance. TODO: full documentation. diff --git a/doc/src/docs/input-data/terminal.md b/doc/src/docs/input-data/terminal.md index a286acc56..b2c6355fe 100644 --- a/doc/src/docs/input-data/terminal.md +++ b/doc/src/docs/input-data/terminal.md @@ -30,7 +30,9 @@ These commands establish the TERMINAL's local heating capability and determine w *Either tuTLh or tuQMnLh must be given to establish the TERMINAL's local heat capability:* -**tuTLh=*float*** +### tuTLh + +Type: *float* Local heating thermostat setpoint. Hourly expression may be used to schedule as desired. Giving this implies *set temperature* local heat from this terminal; omitting implies no local heat or, if tuQMnLh is given, set output local heat. @@ -44,7 +46,9 @@ Local heating thermostat setpoint. Hourly expression may be used to schedule as }) }} -**tuQMnLh=*float*** +### tuQMnLh + +Type: *float* Minimum local heat output or set local heat output. If tuTLh is given, this is the minimum output, used when the thermostat is not calling for (local) heat. If tuTLh is not given, giving tuQMnLh implies *set output* local heat and specifies the set output level. An hourly expression may be used to schedule as desired. @@ -60,7 +64,9 @@ Minimum local heat output or set local heat output. If tuTLh is given, this is t The next three items are allowed only for thermostat controlled local heating (tuTLh given): -**tuQMxLh=*float*** +### tuQMxLh + +Type: *float* Maximum desired power, used when thermostat is calling for heat continuously, subject to coil capacity, and to HEATPLANT limitations where pertinent (see *tuhcCaptRat* description). If *tuQMxLh* is less than minimum power (tuQMnLh), the latter is used, effectively disabling setpoint control. @@ -74,7 +80,9 @@ Maximum desired power, used when thermostat is calling for heat continuously, su }) }} -**tuPriLh=*int*** +### tuPriLh + +Type: *int* Setpoint priority: when there is more than one capability with the same setpoint, that with the highest priority (lowest value) is used first. The defaults for tuPriLh (100) and tuPriH (1) cause maximum air heat to be used before local heat, if both are present and the setpoints are the same. Two or more equal setpoints with equal priorities in the ZONE cause an error, even if in different TERMINALs. @@ -88,7 +96,9 @@ Setpoint priority: when there is more than one capability with the same setpoint }) }} -**tuLhNeedsFlow=*choice*** +### tuLhNeedsFlow + +Type: *choice* {{ csv_table("YES, local heat being modeled requires terminal air flow (e.g. reheat coil). Local heat is then disabled when there is zero air flow through the terminal (when simulated VAV damper set to 0 flow, or when air handler fan and terminal fan both off) NO, no local heat or does not require air flow (e.g. baseboard heaters).") @@ -117,7 +127,9 @@ Note: To autosize air flows for a constant volume terminal, use the following AUTOSIZE tuVfMn tuVfMxHC = SAME -**tuAh=*ahName*** +### tuAh + +Type: *ahName* Name of air handler supplying this terminal. @@ -136,7 +148,9 @@ If both of the following (tuTH and tuTC) are specified, be careful not to accide Giving neither tuTH nor tuTC implies that the terminal has no *set temperature* air capability; it will then have *set output* air capability if tuVfMn is given. -**tuTH=*float*** +### tuTH + +Type: *float* Air heating thermostat set point; implies *set temperature* air capability. May be scheduled as desired with an hourly expression; to disable set temperature operation at certain times (as when air handler is scheduled to supply cold air), schedule a low temperature such as 1. @@ -150,7 +164,9 @@ Air heating thermostat set point; implies *set temperature* air capability. May }) }} -**tuTC=*float*** +### tuTC + +Type: *float* Air cooling thermostat set point; implies *set temperature* air capability. May be scheduled as desired; to disable at certain times, schedule an extreme temperature such as 199. @@ -164,7 +180,9 @@ Air cooling thermostat set point; implies *set temperature* air capability. May }) }} -**tuVfDs=*float*** +### tuVfDs + +Type: *float* Design air flow rate. ("Vf" in member names stands for "Volumetric Flow", to emphasize that flow is specified by volume at actual air temperature (cfm), not by mass (lb/hr), nor heat capacity (Btuh/F), etc.) @@ -183,7 +201,9 @@ CSE will default tuVfDs to the largest of tuVfMn, tuVfMxH, and tuVfMxC unless a }} -**tuFxVfHC=*float*** +### tuFxVfHC + +Type: *float* Sizing factor for autosized terminal air flows. Default value (1.1) specifies 10% oversizing. @@ -197,7 +217,9 @@ Sizing factor for autosized terminal air flows. Default value (1.1) specifies 1 }) }} -**tuVfMxHC=*choice*** +### tuVfMxHC + +Type: *choice* Determines autosizing strategy for heating and cooling air flows. @@ -215,7 +237,9 @@ Determines autosizing strategy for heating and cooling air flows. }) }} -**tuVfMn=*float*** +### tuVfMn + +Type: *float* Minimum terminal air flow rate or set output air flow rate. An hourly expression may be used to schedule the minimum or set output flow as desired. @@ -233,7 +257,9 @@ If either setpoint (tuTH or tuTC) is given, tuVfMn is the cfm used when the ther }) }} -**tuVfMxH=*float*** +### tuVfMxH + +Type: *float* Maximum heating air flow rate, subject to air handler limitations. This terminal flow is used when the thermostat is calling for heat continuously. Hourly schedulable. If not greater than tuVfMn, the latter flow is used, thus disabling thermostat control. @@ -247,7 +273,9 @@ Maximum heating air flow rate, subject to air handler limitations. This terminal }) }} -**tuVfMxC=*float*** +### tuVfMxC + +Type: *float* Maximum cooling air flow rate, before air handler limitations, used when the thermostat is calling for cooling continuously. tuVfMn overrides if larger. @@ -261,7 +289,9 @@ Maximum cooling air flow rate, before air handler limitations, used when the the }) }} -**tuPriC=*int*** +### tuPriC + +Type: *int* Cool setpoint priority. The lowest numbered priority is used first when there are equal setpoints in a zone; equal heat or cool setpoints with equal priority in same ZONE (even if on different TERMINALs) constitute an error. @@ -275,7 +305,9 @@ Cool setpoint priority. The lowest numbered priority is used first when there ar }) }} -**tuPriH=*int*** +### tuPriH + +Type: *int* Heat setpoint priority. Lowest numbered priority is used first when there are equal setpoints in a zone. Default for tuPriLh is larger, so that by default local heat is not used unless maximum air heat is insufficient, when both local heat and air heat are present in zone and have same setpoint. @@ -289,7 +321,9 @@ Heat setpoint priority. Lowest numbered priority is used first when there are eq }) }} -**tuSRLeak=*float*** +### tuSRLeak + +Type: *float* Leakage of supply air to return, increasing supply volume and return temperature. Note that this is a fraction of current cfm, whereas air handler leak (before VAV dampers) is a fraction of *maximum* cfm. TfanOffLeak is added to this if terminal has a fan that is not running (future, 7-92). @@ -303,7 +337,9 @@ Leakage of supply air to return, increasing supply volume and return temperature }) }} -**tuSRLoss=*float*** +### tuSRLoss + +Type: *float* Supply air to return plenum heat loss as a fraction of supply air to return air temperature difference. Not allowed if return is ducted (no plenum). @@ -323,7 +359,9 @@ Supply air to return plenum heat loss as a fraction of supply air to return air These members are disallowed if terminal has no local heating capability, that is, if neither tuTLh nor tuQMnLh is given. -**tuhcType=*choice*** +### tuhcType + +Type: *choice* Local heating coil type: @@ -341,7 +379,9 @@ Local heating coil type: }) }} -**tuhcCaptRat=*float*** +### tuhcCaptRat + +Type: *float* Rated capacity of the heating coil. The coil will never supply more heat than its capacity, even if tuQMxLh and/or tuQMnLh is greater. For an ELECTRIC coil, the capacity is always the rated capacity. For an HW coil, the capacity is the rated capacity when the HEATPLANT can supply it; when the total heat demanded from the HEATPLANT by all the HW coils in TERMINALs and AIRHANDLERs exceeds the HEATPLANT's capacity, CSE reduces the capacities of all HW coils proportionately until the plant is not overloaded. @@ -355,7 +395,9 @@ Rated capacity of the heating coil. The coil will never supply more heat than it }) }} -**tuhcFxCap=*float*** +### tuhcFxCap + +Type: *float* Capacity factor for autosized terminal heating coil. Default value (1.1) specifies 10% oversizing. @@ -369,7 +411,9 @@ Capacity factor for autosized terminal heating coil. Default value (1.1) specif }) }} -**tuhcMtr=*mtrName*** +### tuhcMtr + +Type: *mtrName* Name of meter, if any, which accumulates input energy for this coil. End use category used is "Htg". Not allowed when tuhcType is HW, as the energy for an HW coil comes through a HEATPLANT; the input energy is accumulated to a meter by the HEATPLANT. @@ -403,7 +447,9 @@ Presence of a terminal fan is indicated by specifying a tfanType value other tha Terminal fans are *NOT IMPLEMENTED* as of July 1992. -**tfanType=*choice*** +### tfanType + +Type: *choice* Choice of: @@ -423,7 +469,9 @@ Choice of: }) }} -**tfanSched=*choice*** +### tfanSched + +Type: *choice* Terminal fan schedule. May be scheduled with an hourly variable expression. @@ -445,7 +493,9 @@ A series fan (see tfanType) runs whenever on; a parallel fan runs only enough to }) }} -**tfanOffLeak=*float*** +### tfanOffLeak + +Type: *float* Backdraft leakage when terminal fan off., as a fraction of tfanVfDs. @@ -459,7 +509,9 @@ Backdraft leakage when terminal fan off., as a fraction of tfanVfDs. }) }} -**tfanVfDs=*float*** +### tfanVfDs + +Type: *float* Terminal fan design flow rate. To specify .x times zone or terminal cfm, use a CSE expression. @@ -473,7 +525,9 @@ Terminal fan design flow rate. To specify .x times zone or terminal cfm, use a C }) }} -**tfanPress=*float*** +### tfanPress + +Type: *float* Terminal fan external static pressure. @@ -487,7 +541,9 @@ Terminal fan external static pressure. }) }} -**tfanEff=*float*** +### tfanEff + +Type: *float* Terminal fan/motor/drive combined efficiency. @@ -526,7 +582,9 @@ If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coeffici }) }} -**tfanMtr=*mtrName*** +### tfanMtr + +Type: *mtrName* Name of meter, if any, which is to record energy used by this terminal fan. The "fans" category is used. diff --git a/doc/src/docs/input-data/top-members.md b/doc/src/docs/input-data/top-members.md index eb6a2c8d6..1fdaa7fd1 100644 --- a/doc/src/docs/input-data/top-members.md +++ b/doc/src/docs/input-data/top-members.md @@ -4,7 +4,9 @@ The top-level data items (TOP members) control the simulation process or contain ## TOP General Data Items -**doMainSim=*choice*** +### doMainSim + +Type: *choice* Specifies whether the simulation is performed when a Run command is encountered. See also doAutoSize. @@ -18,7 +20,9 @@ Specifies whether the simulation is performed when a Run command is encountered. }) }} -**begDay=*date*** +### begDay + +Type: *date* Date specifying the beginning day of the simulation performed when a Run command is encountered. See further discussion under endDay (next). @@ -32,7 +36,9 @@ Date specifying the beginning day of the simulation performed when a Run command }) }} -**endDay=*date*** +### endDay + +Type: *date* Date specifying the ending day of the simulation performed when a Run command is encountered. @@ -48,7 +54,9 @@ The program simulates 365 days at most. If begDay and endDay are the same, 1 day }) }} -**jan1DoW=*choice*** +### jan1DoW + +Type: *choice* Day of week on which January 1 falls. jan1DoW is used in the calculation of the day of the week. @@ -76,7 +84,9 @@ Note that "warm-up" days (see wuDays) occur before the start day specified by be }) }} -**wuDays=*int*** +### wuDays + +Type: *int* Number of "warm-up" days used to initialize the simulator. Simulator initialization is required because thermal mass temperatures are set to arbitrary values at the beginning of the simulation. Actual mass temperatures must be established through simulation of a few days before thermal loads are accumulated. Heavier buildings require more warm-up; the default values are adequate for conventional construction. @@ -90,7 +100,9 @@ Number of "warm-up" days used to initialize the simulator. Simulator initializat }) }} -**nSubSteps=*int*** +### nSubSteps + +Type: *int* Number of subhour steps used per hour in the simulation. 4 is the time-honored value for models using CNE zones. A value of 30 is typically for CSE zone models. @@ -104,7 +116,9 @@ Number of subhour steps used per hour in the simulation. 4 is the time-honored v }) }} -**nSubhrTicks=*int*** +### nSubhrTicks + +Type: *int* Number of subhour ticks used per *nSubSteps* for DHWSYS simulation. @@ -120,7 +134,9 @@ Number of subhour ticks used per *nSubSteps* for DHWSYS simulation. }) }} -**tol=*float*** +### tol + +Type: *float* Endtest convergence tolerance for internal iteration in CNE models (no effect for CSE models) Small values for the tolerance cause more accurate simulations but slower performance. The user may wish to use a high number during the initial design process (to quicken the runs) and then lower the tolerance for the final design (for better accuracy). Values other than .001 have not been explored. @@ -134,7 +150,9 @@ Endtest convergence tolerance for internal iteration in CNE models (no effect fo }) }} -**humTolF=*float*** +### humTolF + +Type: *float* Specifies the convergence tolerance for humidity calculations in CNE models (no effect in for CSE models), relative to the tolerance for temperature calculations. A value of .0001 says that a humidity difference of .0001 is about as significant as a temperature difference of one degree. Note that this is multiplied internally by "tol"; to make an overall change in tolerances, change "tol" only. @@ -148,7 +166,9 @@ Specifies the convergence tolerance for humidity calculations in CNE models (no }) }} -**ebTolMon=*float*** +### ebTolMon + +Type: *float* Monthly energy balance error tolerance for internal consistency checks. Smaller values are used for testing the internal consistency of the simulator; values somewhat larger than the default may be used to avoid error messages when it is desired to continue working despite a moderate degree of internal inconsistency. @@ -162,7 +182,9 @@ Monthly energy balance error tolerance for internal consistency checks. Smaller }) }} -**ebTolDay=*float*** +### ebTolDay + +Type: *float* Daily energy balance error tolerance. @@ -176,7 +198,9 @@ Daily energy balance error tolerance. }) }} -**ebTolHour=*float*** +### ebTolHour + +Type: *float* Hourly energy balance error tolerance. @@ -190,7 +214,9 @@ Hourly energy balance error tolerance. }) }} -**ebTolSubhr=*float*** +### ebTolSubhr + +Type: *float* Sub-hourly energy balance error tolerance. @@ -204,7 +230,9 @@ Sub-hourly energy balance error tolerance. }) }} -**unMetTzTol=*float*** +### unMetTzTol + +Type: *float* Zone temperature unmet load tolerance. At the end of each subhour, if a conditioned zone temperature is more than unMetTzTol below the current heating setpoint or more than unMetTzTol above the current cooling setpoint, "unmet load" time is accumulated. @@ -218,7 +246,9 @@ Zone temperature unmet load tolerance. At the end of each subhour, if a conditi }) }} -**unMetTzTolWarnHrs=*float*** +### unMetTzTolWarnHrs + +Type: *float* Unmet load warning threshold. A warning message is issued for each zone having more than unMetTzTolWarnHrs unmet heating or cooling loads. @@ -232,7 +262,9 @@ Unmet load warning threshold. A warning message is issued for each zone having }) }} -**grndMinDim=*float*** +### grndMinDim + +Type: *float* The minimum cell dimension used in the two-dimensional finite difference calculations for FOUNDATIONs. @@ -246,7 +278,9 @@ The minimum cell dimension used in the two-dimensional finite difference calcula }) }} -**grndMaxGrthCoeff=*float*** +### grndMaxGrthCoeff + +Type: *float* The maximum ratio of growth between neighboring cells in the direction away from the near-field area of interest. Used in the two-dimensional finite difference calculations for FOUNDATIONs. @@ -260,7 +294,9 @@ The maximum ratio of growth between neighboring cells in the direction away from }) }} -**grndTimeStep=*choice*** +### grndTimeStep + +Type: *choice* Allows the user to choose whether to calculate foundation conduction on hourly or subhourly intervals. Hourly intervals require less overall computation time, but with less accuracy. @@ -276,7 +312,9 @@ Allows the user to choose whether to calculate foundation conduction on hourly o -**humMeth=*choice*** +### humMeth + +Type: *choice* Developmental zone humidity computation method choice for CNE models (no effect for CSE models). @@ -294,7 +332,9 @@ PHIL, Phil's central difference method. Should be better if perfected*co }) }} -**dflExH=*float*** +### dflExH + +Type: *float* Default exterior surface (air film) conductance used for opaque and glazed surfaces exposed to ambient conditions in the absence of explicit specification. @@ -308,7 +348,9 @@ Default exterior surface (air film) conductance used for opaque and glazed surfa }) }} -**bldgAzm=*float*** +### bldgAzm + +Type: *float* Reference compass azimuth (0 = north, 90 = east, etc.). All zone orientations (and therefore surface orientations) are relative to this value, so the entire building can be rotated by changing bldgAzm only. If a value outside the range 0^o^ $\leq$ *x* $<$ 360^o^ is given, it is normalized to that range. @@ -322,7 +364,9 @@ Reference compass azimuth (0 = north, 90 = east, etc.). All zone orientations (a }) }} -**elevation=*float*** +### elevation + +Type: *float* Elevation of the building site. Used internally for the computation of barometric pressure and air density of the location. @@ -336,7 +380,9 @@ Elevation of the building site. Used internally for the computation of barometri }) }} -**runTitle=*string*** +### runTitle + +Type: *string* Run title for the simulation. Appears in report footers, export headers, and in the title lines to the INP, LOG, and ERR built-in reports (these appear by default in the primary report file; the ERR report also appears in the error message file, if one is created). @@ -350,7 +396,9 @@ Run title for the simulation. Appears in report footers, export headers, and in }) }} -**runSerial=*int*** +### runSerial + +Type: *int* Run serial number for the simulation. Increments on each run in a session; appears in report footers. @@ -368,7 +416,9 @@ Run serial number for the simulation. Increments on each run in a session; appea Daylight savings starts by default at 2:00 a.m. of the second Sunday in March. Internally, hour 3 (2:00-3:00 a.m.) is skipped and reports for this day show only 23 hours. Daylight savings ends by default at 2:00 a.m. of the first Sunday of November; for this day 25 hours are shown on reports. CSE fetches weather data using standard time but uses daylight savings time to calculate variable expressions (and thus all schedules). -**DT=*choice*** +### DT + +Type: *choice* Whether Daylight Savings Time is to be used for the current run. @@ -382,7 +432,9 @@ Whether Daylight Savings Time is to be used for the current run. }) }} -**DTbegDay=*date*** +### DTbegDay + +Type: *date* Start day for daylight saving time (assuming DT=Yes) @@ -396,7 +448,9 @@ Start day for daylight saving time (assuming DT=Yes) }) }} -**DTendDay=*date*** +### DTendDay + +Type: *date* End day for daylight saving time (assuming DT=Yes) @@ -412,7 +466,9 @@ End day for daylight saving time (assuming DT=Yes) ## TOP Model Control Items -**ventAvail=*choice*** +### ventAvail + +Type: *choice* Indicates availability of outdoor ventilation strategies. CSE cannot model simultaneously-operating alternative ventilation strategies. For example, an RSYS central fan integrated (CFI) OAV system is never modeled while whole house fan ventilation is available. ventAvail controls which ventilation mode, if any, is available for the current hour. Note that mode availability means that the strategy could operate but may not operate due to other control assumptions. @@ -438,7 +494,9 @@ As noted, ventAvail is evaluated hourly, permitting flexible control strategy mo }) }} -**exShadeModel=*choice*** +### exShadeModel + +Type: *choice* Specifies advanced exterior shading model used to evaluate shading of [PVARRAYs][pvarray] by [SHADEXs][shadex] or other PVARRAYs. Advanced shading is not implemented for building surfaces and this setting has no effect on walls or windows. @@ -457,7 +515,9 @@ NONE, Disable advanced shading calculations", True) }) }} -**slrInterpMeth=*choice*** +### slrInterpMeth + +Type: *choice* Solar interpolation method. @@ -476,7 +536,9 @@ TRNSYS", True) }) }} -**ANTolAbs=*float*** +### ANTolAbs + +Type: *float* AirNet absolute convergence tolerance. Ideally, calculated zone air pressures should be such that the net air flow into each zone is 0 -- that is, there should be a perfect mass balance. The iterative AirNet solution techniques are deemed converged when netAirMassFlow < max( ANTolAbs, ANTolRel*totAirMassFlow). @@ -490,7 +552,9 @@ AirNet absolute convergence tolerance. Ideally, calculated zone air pressures sh }) }} -**ANTolRel=*float*** +### ANTolRel + +Type: *float* AirNet relative convergence tolerance. See AnTolAbs just above. @@ -504,7 +568,9 @@ AirNet relative convergence tolerance. See AnTolAbs just above. }) }} -**ANPressWarn=*float*** +### ANPressWarn + +Type: *float* AirNet pressure warning threshold. A warning message is issued when the absolute value of the AirNet-calculated zone pressure exceeds ANPressWarn. Note the default for ANPressWarn conservatively large. 10 lb/ft2 is about 500 pascals -- a pressure that is probably impossible in a building. The intent of this value is to alert the user to incorrect modeling inputs while avoiding excessive messages. @@ -518,7 +584,9 @@ AirNet pressure warning threshold. A warning message is issued when the absolute }) }} -**ANPressErr=*float*** +### ANPressErr + +Type: *float* AirNet pressure error threshold. The simulation terminates with a message if the absolute value of any AirNet-calculated zone pressure exceeds ANPressErr. Note the default value for ANPressErr is physically unrealistic. 30 lb/ft2 is about 1500 pascals -- a pressure that would never be possible in a building. The intent of this value is to prevent simulation crashes due to numerical errors in AirNet calculations. @@ -535,7 +603,9 @@ AirNet pressure error threshold. The simulation terminates with a message if th The ASHWAT complex fenestration model used when WINDOW wnModel=ASHWAT yields several heat transfer results that are accurate over local ranges of conditions. Several values control when these value are recalculated. If any of the specified values changes more than the associated threshold, a full ASHWAT calculation is triggered. Otherwise, prior results are used. ASHWAT calculations are computationally expensive and conditions often change only incrementally between time steps. -**AWTrigT=*float*** +### AWTrigT + +Type: *float* ASHWAT temperature change threshold -- full calculation is triggered by a change of either indoor or outdoor environmental (combined air and radiant) temperature that exceeds AWTrigT. @@ -549,7 +619,9 @@ ASHWAT temperature change threshold -- full calculation is triggered by a change }) }} -**AWTrigSlr=*float*** +### AWTrigSlr + +Type: *float* ASHWAT solar change threshold -- full calculation is triggered by a fractional change of incident solar radiation that exceeds AWTrigSlr. @@ -563,7 +635,9 @@ ASHWAT solar change threshold -- full calculation is triggered by a fractional c }) }} -**AWTrigH=*float*** +### AWTrigH + +Type: *float* ASHWAT convection coefficient change threshold -- full calculation is triggered by a fractional change of inside surface convection coefficient that exceeds AWTrigH. @@ -596,7 +670,9 @@ The following are the terms determined from the weather file for internal use, a @Top.windSpeedSquaredWind speed squared (mph2). -**wfName=*string*** +### wfName + +Type: *string* Weather file path name for simulation. The file should be in the current directory, in the directory CSE.EXE was read from, or in a directory on the operating system PATH. Weather file formats supported are CSW, EPW, and ET1. Only full-year weather files are supported. @@ -612,7 +688,9 @@ Note: Backslash (\\) characters in path names must be doubled to work properly ( }) }} -**skyModel=*choice*** +### skyModel + +Type: *choice* Selects sky model used to determine relative amounts of direct and diffuse irradiance. @@ -630,7 +708,9 @@ ANISOTROPIC, Hay anisotropic model") }) }} -**skyModelLW=*choice*** +### skyModelLW + +Type: *choice* Selects the model used to derive sky temperature used in long-wave (thermal) radiant heat exchange calculations for SURFACEs exposed to ambient conditions. See the RACM alorithms documentation for technical details. @@ -654,7 +734,9 @@ IRHORIZ, Derives tSky from horizonal infrared data from the weather file The reference temperature and humidity are used to calculate a humidity ratio assumed in air specific heat calculations. The small effect of changing humidity on the specific heat of air is generally ignored in the interests of speed, but the user can control the humidity whose specific heat is used through the refTemp and refRH inputs. -**refTemp=*float*** +### refTemp + +Type: *float* Reference temperature (see above paragraph). @@ -668,7 +750,9 @@ Reference temperature (see above paragraph). }) }} -**refRH=*float*** +### refRH + +Type: *float* Reference relative humidity (see above). @@ -682,7 +766,9 @@ Reference relative humidity (see above). }) }} -**grndRefl=*float*** +### grndRefl + +Type: *float* Global ground reflectivity, used except where other value specified with sfGrndRefl or wnGrndRefl. This reflectivity is used in computing the reflected beam and diffuse radiation reaching the surface in question. It is also used to calculate the solar boundary conditions for the exterior grade surface in two-dimensional finite difference calculations for FOUNDATIONs. @@ -699,7 +785,9 @@ Global ground reflectivity, used except where other value specified with sfGrndR The following values modify weather file data, permitting varying the simulation without making up special weather files. For example, to simulate without the effects of wind, use windF = 0; to halve the effects of diffuse solar radiation, use radDiffF = 0.5. Note that the default values for windSpeedMin and windF result in modification of weather file wind values unless other values are specified. -**grndEmit=*float*** +### grndEmit + +Type: *float* Long-wave emittance of the exterior grade surface used in two-dimensional finite difference calculations for FOUNDATIONs. @@ -732,7 +820,9 @@ Ground surface roughness. Used for convection and wind speed corrections in two- -**windSpeedMin=*float*** +### windSpeedMin + +Type: *float* Minimum value for wind speed @@ -746,7 +836,9 @@ Minimum value for wind speed }) }} -**windF=*float*** +### windF + +Type: *float* Wind Factor: multiplier for wind speeds read from weather file. windF is applied *after* windSpeedMin. Note that windF does *not* effect infiltration rates calculated by the Sherman-Grimsrud model (see e.g. ZONE.infELA). However, windF does modify AirNet flows (see IZXFER). @@ -760,7 +852,9 @@ Wind Factor: multiplier for wind speeds read from weather file. windF is applied }) }} -**terrainClass=*int*** +### terrainClass + +Type: *int* Specifies characteristics of ground terrain in the project region. @@ -784,7 +878,9 @@ Specifies characteristics of ground terrain in the project region. -**radBeamF=*float*** +### radBeamF + +Type: *float* Multiplier for direct normal (beam) irradiance @@ -798,7 +894,9 @@ Multiplier for direct normal (beam) irradiance }) }} -**radDiffF=*float*** +### radDiffF + +Type: *float* Multiplier for diffuse horizonal irradiance. @@ -812,7 +910,9 @@ Multiplier for diffuse horizonal irradiance. }) }} -**hConvMod=*choice*** +### hConvMod + +Type: *choice* Enable/disable convection convective coefficient pressure modification factor. @@ -828,7 +928,9 @@ $$0.24 + 0.76 \cdot P_{Location}/P_{SeaLevel}$$ }) }} -**soilDiff=*float*** +### soilDiff + +Type: *float* *Note: soilDiff is used as part of the simple ground model, which is no longer supported. Use soilCond, soilSpHt, and SoilDens instead.* @@ -844,7 +946,9 @@ Soil diffusivity, used in derivation of ground temperature. CSE calculates a gr }) }} -**soilCond=*float*** +### soilCond + +Type: *float* Soil conductivity. Used in two-dimensional finite difference calculations for FOUNDATIONs. @@ -860,7 +964,9 @@ Soil conductivity. Used in two-dimensional finite difference calculations for FO -**soilSpHt=*float*** +### soilSpHt + +Type: *float* Soil specific heat. Used in two-dimensional finite difference calculations for FOUNDATIONs. @@ -876,7 +982,9 @@ Soil specific heat. Used in two-dimensional finite difference calculations for F -**soilDens=*float*** +### soilDens + +Type: *float* Soil density. Used in two-dimensional finite difference calculations for FOUNDATIONs. @@ -892,7 +1000,9 @@ Soil density. Used in two-dimensional finite difference calculations for FOUNDAT -**farFieldWidth=*float*** +### farFieldWidth + +Type: *float* Far-field width. Distance from foundation to the lateral, zero-flux boundary condition. Used in two-dimensional finite difference calculations for FOUNDATIONs. @@ -907,7 +1017,9 @@ Far-field width. Distance from foundation to the lateral, zero-flux boundary con }} -**deepGrndCnd=*choice*** +### deepGrndCnd + +Type: *choice* Deep-ground boundary condition type. Choices are WATERTABLE (i.e., a defined temperature) or ZEROFLUX. @@ -921,7 +1033,9 @@ Deep-ground boundary condition type. Choices are WATERTABLE (i.e., a defined tem }) }} -**deepGrndDepth=*float*** +### deepGrndDepth + +Type: *float* Deep-ground depth. Distance from exterior grade to the deep-ground boundary. Used in two-dimensional finite difference calculations for FOUNDATIONs. @@ -936,7 +1050,9 @@ Deep-ground depth. Distance from exterior grade to the deep-ground boundary. Use }} -**deepGrndT=*float*** +### deepGrndT + +Type: *float* Deep-ground temperature. Used when deepGrndCnd=WATERTABLE. @@ -1000,7 +1116,9 @@ The table below shows probes available for accessing TDV data in expressions. E @Top.tdvFName, Constant, TDV file full path", True) }} -**TDVfName=*string*** +### TDVfName + +Type: *string* Note: Backslash (\\) characters in path names must be doubled to work properly (e.g. "\\\\data\\\\mytdv.tdv"). Forward slash (/) may be used in place of backslash without doubling. @@ -1018,7 +1136,9 @@ Note: Backslash (\\) characters in path names must be doubled to work properly ( These items are used in page-formatted report output files. See REPORTFILE, Section 5.245.21, and REPORT, Section 5.25. -**repHdrL=*string*** +### repHdrL + +Type: *string* Report left header. Appears at the upper left of each report page unless page formatting (rfPageFmt) is OFF. If combined length of repHdrL and repHdrR is too large for the page width, one or both will be truncated. @@ -1032,7 +1152,9 @@ Report left header. Appears at the upper left of each report page unless page fo }) }} -**repHdrR=*string*** +### repHdrR + +Type: *string* Report right header. Appears at the upper right of each report page unless page formatting (rfPageFmt) is OFF. If combined length of repHdrL and repHdrR is too large for the page width, one or both will be truncated. @@ -1046,7 +1168,9 @@ Report right header. Appears at the upper right of each report page unless page }) }} -**repLPP=*int*** +### repLPP + +Type: *int* Total lines per page to be assumed for reports. Number of lines used for text (including headers and footers) is repLPP - repTopM - repBotM. @@ -1060,7 +1184,9 @@ Total lines per page to be assumed for reports. Number of lines used for text (i }) }} -**repTopM=*int*** +### repTopM + +Type: *int* Number of lines to be skipped at the top of each report page (prior to header). @@ -1074,7 +1200,9 @@ Number of lines to be skipped at the top of each report page (prior to header). }) }} -**repBotM=*int*** +### repBotM + +Type: *int* Number of lines reserved at the bottom of each report page. repBotM determines the position of the footer on the page (blank lines after the footer are not actually written). @@ -1088,7 +1216,9 @@ Number of lines reserved at the bottom of each report page. repBotM determines t }) }} -**repCPL=*int*** +### repCPL + +Type: *int* Characters per line for report headers and footers, user defined reports, and error messages. CSE writes simple ASCII files and assumes a fixed (not proportional) spaced printer font. Many of the built-in reports now (July 1992) assume a line width of 132 columns. @@ -1102,7 +1232,9 @@ Characters per line for report headers and footers, user defined reports, and er }) }} -**repTestPfx=*string*** +### repTestPfx + +Type: *string* Report test prefix. Appears at beginning of report lines that are expected to differ from prior runs. This is useful for "hiding" lines from text comparison utilities in automated testing schemes. Note: the value specified with command line -x takes precedence over this input. @@ -1118,7 +1250,9 @@ Report test prefix. Appears at beginning of report lines that are expected to di ## TOP Autosizing -**doAutoSize=*choice*** +### doAutoSize + +Type: *choice* Controls invocation of autosizing phase prior to simulation. @@ -1132,7 +1266,9 @@ Controls invocation of autosizing phase prior to simulation. }) }} -**auszTol=*float*** +### auszTol + +Type: *float* Autosize tolerance. Sized capacity results are deemed final when successive design day calculations produce results within auszTol of the prior iteration. @@ -1146,7 +1282,9 @@ Autosize tolerance. Sized capacity results are deemed final when successive des }) }} -**heatDsTDbO=*float*** +### heatDsTDbO + +Type: *float* Heating outdoor dry bulb design temperature used for autosizing heating equipment. @@ -1160,7 +1298,9 @@ Heating outdoor dry bulb design temperature used for autosizing heating equipmen }) }} -**heatDsTWbO=*float*** +### heatDsTWbO + +Type: *float* Heating outdoor design dry bulb temperature used for autosizing heating equipment. @@ -1225,7 +1365,9 @@ Deprecated method for specifying design days for cooling autosizing. Design con ## TOP Debug Reporting -**verbose=*int*** +### verbose + +Type: *int* Controls verbosity of screen remarks. Most possible remarks are generated during autosizing of CNE models. Little or no effect in CSE models. TODO: document options @@ -1241,7 +1383,9 @@ Controls verbosity of screen remarks. Most possible remarks are generated during The following dbgPrintMask values provide bitwise control of addition of semi-formated internal results to the run report file. The values and format of debugging reports are modified as required for testing purposes. -**dbgPrintMaskC=*int*** +### dbgPrintMaskC + +Type: *int* Constant portion of debug reporting control. @@ -1255,7 +1399,9 @@ Constant portion of debug reporting control. }) }} -**dbgPrintMask=*int*** +### dbgPrintMask + +Type: *int* Hourly portion of debug reporting control (generally an expression that evaluates to non-0 only on days or hours of interest). @@ -1269,7 +1415,9 @@ Hourly portion of debug reporting control (generally an expression that evaluate }) }} -**dbgFlag=*int*** +### dbgFlag + +Type: *int* Allows passing an input value to ad-hoc debugging code. No permanent use; no impact on results. @@ -1283,7 +1431,9 @@ Allows passing an input value to ad-hoc debugging code. No permanent use; no im }) }} -**doCoverage=*choice*** +### doCoverage + +Type: *choice* Enables expression code coverage reporting. Development aid. diff --git a/doc/src/docs/input-data/towerplant.md b/doc/src/docs/input-data/towerplant.md index 766339baf..ef0698ea0 100644 --- a/doc/src/docs/input-data/towerplant.md +++ b/doc/src/docs/input-data/towerplant.md @@ -18,7 +18,9 @@ Name of TOWERPLANT object, given immediately after the word TOWERPLANT to begin ----------- ----------------- ------------- -------------- ----------------- *63 characters* Yes constant -**tpTsSp=*float*** +### tpTsSp + +Type: *float* Setpoint temperature for water leaving towers. @@ -34,7 +36,9 @@ METER object by which TOWERPLANT's fan input energy is to be recorded, in catego ----------- ------------------- ------------- -------------- ----------------- *name of a METER* *none* No constant -**tpStg=*choice*** +### tpStg + +Type: *choice* How tower fans are staged to meet the load: @@ -53,7 +57,9 @@ Whenever the heat rejection pump in a CHILLER or HPLOOP heat exchanger is on, th ----------- ----------------- ------------- -------------- ----------------- TOGETHER, LEAD TOGETHER No constant -**ctN=*integer*** +### ctN + +Type: *integer* Number of towers in the TOWERPLANT. @@ -61,7 +67,9 @@ Number of towers in the TOWERPLANT. ----------- ----------------- ------------- -------------- ----------------- *x* > 0 1 No constant -**ctType=*choice*** +### ctType + +Type: *choice* Cooling tower fan control type: ONESPEED, TWOSPEED, or VARIABLE. This applies to all towers under TOGETHER staging. For LEAD staging, *ctType* applies only to the lead tower; additional towers have ONESPEED fans. @@ -69,7 +77,9 @@ Cooling tower fan control type: ONESPEED, TWOSPEED, or VARIABLE. This applies to ----------- ------------------------------ ------------- -------------- ----------------- ONESPEED, TWOSPEED, VARIABLE ONESPEED No constant -**ctLoSpd=*float*** +### ctLoSpd + +Type: *float* Low speed for TWOSPEED fan, as a fraction of full speed cfm. @@ -83,7 +93,9 @@ The rest of the input variables apply to each tower in the group; the towers are The following two inputs permit computation of the tower fan electrical energy consumption: -**ctShaftBhp=*float*** +### ctShaftBhp + +Type: *float* Shaft brake horsepower of each tower fan motor. @@ -93,7 +105,9 @@ The default value is the sum of the rejected (condenser) heats (including pump h ----------- --------------- ----------------------------- ----------- ----------------- Bhp *x* > 0 (sum of loads)/290000/*cTn* No constant -**ctMotEff=*float*** +### ctMotEff + +Type: *float* Motor (and drive, if any) efficiency for tower fans. @@ -143,7 +157,9 @@ For VARIABLE speed fan, four *float* values for coefficients of cubic fan power The next six items specify the tower performance under one set of conditions, the "design conditions". The conditions should be chosen to be representative of full load operating conditions. -**ctCapDs=*float*** +### ctCapDs + +Type: *float* Design capacity: amount of heat extracted from water under design conditions by one tower. @@ -153,7 +169,9 @@ The default value is the sum of the rejected (condenser) heats (including pump h ----------- ----------------- ---------------------- -------------- ----------------- Btuh *x* $\neq$ 0 (sum of loads)/*ctN* No constant -**ctVfDs=*float*** +### ctVfDs + +Type: *float* Design air flow, per tower; also the fan full-speed cfm specification. @@ -163,7 +181,9 @@ The default value is the sum of the loads (computed as for *ctCapDs*, just above ----------- ----------------- ------------------------- -------------- ----------------- cfm *x* > 0 (sum of loads)/51/*ctN* No constant -**ctGpmDs=*float*** +### ctGpmDs + +Type: *float* Design water flow, per tower. @@ -173,7 +193,9 @@ The default is the sum of the flows of the connected heat rejection pumps, using ----------- ----------------- ---------------------- -------------- ----------------- gpm *x* > 0 (sum of pumps)/*ctN* No constant -**ctTDbODs=*float*** +### ctTDbODs + +Type: *float* Design outdoor drybulb temperature (needed to convert *ctVfDs* from cfm to lb/hr). @@ -181,7 +203,9 @@ Design outdoor drybulb temperature (needed to convert *ctVfDs* from cfm to lb/hr ----------- ----------------- ------------- -------------- ----------------- ^o^F *x* > 0 93.5 No constant -**ctTWbODs=*float*** +### ctTWbODs + +Type: *float* Design outdoor wetbulb temperature. @@ -189,7 +213,9 @@ Design outdoor wetbulb temperature. ----------- ----------------- ------------- -------------- ----------------- ^o^F *x* > 0 78 No constant -**ctTwoDs=*float*** +### ctTwoDs + +Type: *float* Design leaving water temperature. @@ -199,7 +225,9 @@ Design leaving water temperature. The following six items allow optional specification of tower performance under another set of conditions, the "off design" conditions. If given, they allow CSE to compute the tower's relation between flows and heat transfer; in this case, *ctK* (below) may not be given. -**ctCapOd=*float*** +### ctCapOd + +Type: *float* Off-design capacity, per tower. @@ -207,7 +235,9 @@ Off-design capacity, per tower. ----------- ----------------- ---------------------- -------------- ----------------- Btuh *x* $\neq$ 0 (sum of loads)/*ctN* No constant -**ctVfOd=*float*** +### ctVfOd + +Type: *float* Off-design air flow, per tower. Must differ from design air flow; thus *ctVfDs* and *ctVfOd* cannot both be defaulted if off-design conditions are being given. The off-design air and water flows must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. @@ -215,7 +245,9 @@ Off-design air flow, per tower. Must differ from design air flow; thus *ctVfDs* ----------- --------------------------------- ------------------------- -------------- ----------------- cfm *x* > 0; *x* $\neq$ *ctVfDs* (sum of loads)/51/*ctN* No constant -**ctGpmOd=*float*** +### ctGpmOd + +Type: *float* Off-design water flow, per tower. Must differ from design water flow; thus, both cannot be defaulted if off-design conditions are being given. Value must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. @@ -223,7 +255,9 @@ Off-design water flow, per tower. Must differ from design water flow; thus, both ----------- ---------------------------------- ---------------------- -------------- ----------------- gpm *x* > 0; *x* $\neq$ *ctGpmDs* (sum of pumps)/*ctN* No constant -**ctTDbOOd=*float*** +### ctTDbOOd + +Type: *float* Off-design outdoor drybulb temperature. @@ -231,7 +265,9 @@ Off-design outdoor drybulb temperature. ----------- ----------------- ------------- -------------- ----------------- ^o^F *x* > 0 93.5 No constant -**ctTWbOOd=*float*** +### ctTWbOOd + +Type: *float* Off-design outdoor wetbulb temperature. @@ -239,7 +275,9 @@ Off-design outdoor wetbulb temperature. ----------- ----------------- ------------- -------------- ----------------- ^o^F *x* > 0 78 No constant -**ctTwoOd=*float*** +### ctTwoOd + +Type: *float* Off-design leaving water temperature. @@ -249,7 +287,9 @@ Off-design leaving water temperature. The following item allows explicit specification of the relationship between flows and heat transfer, when the preceding "off design" inputs are not given. If omitted, it will be computed from the "off design" inputs if given, else the default value of 0.4 will be used. -**ctK=*float*** +### ctK + +Type: *float* Optional. Exponent in the formula @@ -261,7 +301,9 @@ where ntuA is the number of transfer units on the air side, mwi and ma are the w ----------- ------------------- ---------------------------------------- -------------- ----------------- 0 < *x* < 1 *from "Od" members if given, else* 0.4 No constant -**ctStkFlFr=*float*** +### ctStkFlFr + +Type: *float* Fraction of air flow which occurs when tower fan is off, due to stack effect (convection). Cooling due to this air flow occurs in all towers whenever the water flow is on, and may, by itself, cool the water below the setpoint *tpTsSp*. Additional flow, when fan is on, is proportional to fan speed. @@ -271,7 +313,9 @@ Fraction of air flow which occurs when tower fan is off, due to stack effect (co The following items allow CSE to compute the effect of makeup water on the leaving water temperature. -**ctBldn=*float*** +### ctBldn + +Type: *float* Blowdown rate: fraction of inflowing water that is bled from the sump down the drain, to reduce the buildup of impurities that don't evaporate. @@ -279,7 +323,9 @@ Blowdown rate: fraction of inflowing water that is bled from the sump down the d ----------- --------------------- ------------- -------------- ----------------- 0 $\le$ *x* $\le$ 1 .01 No constant -**ctDrft=*float*** +### ctDrft + +Type: *float* Drift rate: fraction of inflowing water that is blown out of tower as droplets without evaporating. @@ -287,7 +333,9 @@ Drift rate: fraction of inflowing water that is blown out of tower as droplets w ----------- --------------------- ------------- -------------- ----------------- 0 $\le$ *x* $\le$ 1 0 No constant -**ctTWm=*float*** +### ctTWm + +Type: *float* Temperature of makeup water from mains, used to replace water lost by blowdown, drift, and evaporation. Blowdown and drift are given by the preceding two inputs; evaporation is computed. diff --git a/doc/src/docs/input-data/window.md b/doc/src/docs/input-data/window.md index 11afb14c4..04d79b9be 100644 --- a/doc/src/docs/input-data/window.md +++ b/doc/src/docs/input-data/window.md @@ -18,7 +18,9 @@ Name of window: follows the word "WINDOW" if given. }) }} -**wnHeight=*float*** +### wnHeight + +Type: *float* Overall height of window (including frame). @@ -32,7 +34,9 @@ Overall height of window (including frame). }) }} -**wnWidth=*float*** +### wnWidth + +Type: *float* Overall width of window (including frame). @@ -46,7 +50,9 @@ Overall width of window (including frame). }) }} -**wnArea=*float*** +### wnArea + +Type: *float* Overall area of window (including frame). @@ -60,7 +66,9 @@ Overall area of window (including frame). }) }} -**wnMult=*float*** +### wnMult + +Type: *float* Area multiplier; can be used to represent multiple identical windows. @@ -74,7 +82,9 @@ Area multiplier; can be used to represent multiple identical windows. }) }} -**wnModel=*choice*** +### wnModel + +Type: *choice* Selects window model @@ -88,11 +98,15 @@ Selects window model }) }} -**wnGt=*choice*** +### wnGt + +Type: *choice* GLAZETYPE for window. Provides many defaults for window properties as cited below. -**wnU=*float*** +### wnU + +Type: *float* Window conductance (U-factor without surface films, therefore not actually a U-factor but a C-factor). @@ -114,7 +128,9 @@ Approach 2. Enter wnU=U-factor and let the wnInH and wnExH default. Tnormally th }) }} -**wnUNFRC=*float*** +### wnUNFRC + +Type: *float* Fenestration system (including frame) U-factor evaluated at NFRC heating conditions. @@ -128,7 +144,9 @@ Fenestration system (including frame) U-factor evaluated at NFRC heating conditi }) }} -**wnExEpsLW=*float*** +### wnExEpsLW + +Type: *float* Window exterior long wave (thermal) emittance. @@ -142,7 +160,9 @@ Window exterior long wave (thermal) emittance. }) }} -**wnInEpsLW=*float*** +### wnInEpsLW + +Type: *float* Window interior long wave (thermal) emittance. @@ -156,7 +176,9 @@ Window interior long wave (thermal) emittance. }) }} -**wnInH=*float*** +### wnInH + +Type: *float* Window interior surface (air film) conductance. @@ -178,7 +200,9 @@ The large default value of 10,000 represents a near-0 resistance, for the conven }) }} -**wnExH=*float*** +### wnExH + +Type: *float* Window exterior surface (air film) conductance. @@ -204,7 +228,9 @@ MILLS , n/a , Mills model ASHRAE , n/a , ASHRAE handbook values", True) }} -**wnExHcModel=*choice*** +### wnExHcModel + +Type: *choice* Selects the model used for exterior surface convection when wnModel = Forward\_Difference. @@ -218,7 +244,9 @@ Selects the model used for exterior surface convection when wnModel = Forward\_D }) }} -**wnExHcLChar=*float*** +### wnExHcLChar + +Type: *float* Characteristic length of surface, used in derivation of forced exterior convection coefficients in some models when outside face is exposed to ambient (i.e. to wind). @@ -232,7 +260,9 @@ Characteristic length of surface, used in derivation of forced exterior convecti }) }} -**wnExHcMult=*float*** +### wnExHcMult + +Type: *float* Exterior convection coefficient adjustment factor. When wnExHcModel=INPUT, hc=wnExHcMult. For other wnExHcModel choices, the model-derived hc is multiplied by wnExHcMult. @@ -246,7 +276,9 @@ Exterior convection coefficient adjustment factor. When wnExHcModel=INPUT, hc=w }) }} -**wnInHcModel=*choice*** +### wnInHcModel + +Type: *choice* Selects the model used for the inside (zone) surface convection when wnModel = Forward\_Difference. @@ -260,7 +292,9 @@ Selects the model used for the inside (zone) surface convection when wnModel = F }) }} -**wnInHcMult=*float*** +### wnInHcMult + +Type: *float* Interior convection coefficient adjustment factor. When wnInHcModel=INPUT, hc=wnInHcMult. For other wnInHcModel choices, the model-derived hc is multiplied by wnInHcMult. @@ -274,7 +308,9 @@ Interior convection coefficient adjustment factor. When wnInHcModel=INPUT, hc=w }) }} -**wnSHGC=*float*** +### wnSHGC + +Type: *float* Rated Solar Heat Gain Coefficient (SHGC) for the window assembly. @@ -288,7 +324,9 @@ Rated Solar Heat Gain Coefficient (SHGC) for the window assembly. }) }} -**wnFMult=*float*** +### wnFMult + +Type: *float* Frame area multiplier = areaGlaze / areaAssembly @@ -302,7 +340,9 @@ Frame area multiplier = areaGlaze / areaAssembly }) }} -**wnSMSO=*float*** +### wnSMSO + +Type: *float* SHGC multiplier with shades open. Overrides gtSMSO. @@ -316,7 +356,9 @@ SHGC multiplier with shades open. Overrides gtSMSO. }) }} -**wnSMSC=*float*** +### wnSMSC + +Type: *float* SHGC multiplier with shades closed. Overrides gtSMSC @@ -330,7 +372,9 @@ SHGC multiplier with shades closed. Overrides gtSMSC }) }} -**wnNGlz=*int*** +### wnNGlz + +Type: *int* Number of glazings in the window (bare glass only, not including any interior or exterior shades). @@ -344,7 +388,9 @@ Number of glazings in the window (bare glass only, not including any interior or }) }} -**wnExShd=*choice*** +### wnExShd + +Type: *choice* Exterior shading type (ASHWAT only). @@ -358,7 +404,9 @@ Exterior shading type (ASHWAT only). }) }} -**wnInShd=*choice*** +### wnInShd + +Type: *choice* Interior shade type (ASHWAT only). @@ -372,7 +420,9 @@ Interior shade type (ASHWAT only). }) }} -**wnDirtLoss=*float*** +### wnDirtLoss + +Type: *float* Glazing dirt loss factor. @@ -386,7 +436,9 @@ Glazing dirt loss factor. }) }} -**wnGrndRefl=*float*** +### wnGrndRefl + +Type: *float* Ground reflectivity for this window. @@ -400,7 +452,9 @@ Ground reflectivity for this window. }) }} -**wnVfSkyDf=*float*** +### wnVfSkyDf + +Type: *float* View factor from this window to sky for diffuse radiation. For the shading effects of an overhang, a wnVfSkyDf value smaller than the default would be used @@ -414,7 +468,9 @@ View factor from this window to sky for diffuse radiation. For the shading effec }) }} -**wnVfGrndDf=*float*** +### wnVfGrndDf + +Type: *float* View factor from this window to ground for diffuse radiation. For the shading effects of a fin(s), both wnVfSkyDf and wnVfGrndDf would be used. diff --git a/doc/src/docs/input-data/zone.md b/doc/src/docs/input-data/zone.md index 75a1f8e2d..09e01d33f 100644 --- a/doc/src/docs/input-data/zone.md +++ b/doc/src/docs/input-data/zone.md @@ -18,7 +18,9 @@ Name of zone. Enter after the word ZONE; no "=" is used. }) }} -**znModel=*choice*** +### znModel + +Type: *choice* Selects model for zone. @@ -37,7 +39,9 @@ UZM, Unconditioned zone model. Identical to CZM except heating and cooling are n }) }} -**znArea=*float*** +### znArea + +Type: *float* Nominal zone floor area. @@ -51,7 +55,9 @@ Nominal zone floor area. }) }} -**znVol=*float*** +### znVol + +Type: *float* Nominal zone volume. @@ -65,7 +71,9 @@ Nominal zone volume. }) }} -**znAzm=*float*** +### znAzm + +Type: *float* Zone azimuth with respect to bldgAzm. All surface azimuths are relative to znAzm, so that the zone can be rotated by changing this member only. Values outside the range 0^o^ to 360^o^ are normalized to that range. @@ -79,7 +87,9 @@ Zone azimuth with respect to bldgAzm. All surface azimuths are relative to znAzm }) }} -**znFloorZ=*float*** +### znFloorZ + +Type: *float* Nominal zone floor height relative to arbitrary 0 level. Used re determination of vent heights @@ -93,7 +103,9 @@ Nominal zone floor height relative to arbitrary 0 level. Used re determination o }) }} -**znCeilingHt=*float*** +### znCeilingHt + +Type: *float* Nominal zone ceiling height relative to zone floor (typically 8 – 10 ft). @@ -107,7 +119,9 @@ Nominal zone ceiling height relative to zone floor (typically 8 – 10 ft). }) }} -**znEaveZ=*float*** +### znEaveZ + +Type: *float* Nominal eave height above ground level. Used re calculation of local surface wind speed. This in turn influences outside convection coefficients in some surface models and wind-driven air leakage. @@ -121,7 +135,9 @@ Nominal eave height above ground level. Used re calculation of local surface win }) }} -**znCAir=*float*** +### znCAir + +Type: *float* Zone "air" heat capacity: represents heat capacity of air, furniture, "light" walls, and everything in zone except surfaces having heat capacity (that is, non-QUICK surfaces). @@ -135,7 +151,9 @@ Zone "air" heat capacity: represents heat capacity of air, furniture, "light" wa }) }} -**znHcAirX=*float*** +### znHcAirX + +Type: *float* Zone air exchange rate used in determination of interior surface convective coefficients. This item is generally used only for model testing. @@ -149,7 +167,9 @@ Zone air exchange rate used in determination of interior surface convective coef }) }} -**znHcFrcF=*float*** +### znHcFrcF + +Type: *float* Zone surface forced convection factor. Interior surface convective transfer is modeled as a combination of forced and natural convection. hcFrc = znHcFrcF * znHcAirX^.8. See CSE Engineering Documentation. @@ -163,7 +183,9 @@ Zone surface forced convection factor. Interior surface convective transfer is }) }} -**znHIRatio=*float*** +### znHIRatio + +Type: *float* Zone hygric inertia ratio. In zone moisture balance calculations, the effective dry-air mass = znHIRatio * (zone dry air mass). This enhancement can be used to represente the moisture storage capacity of zone surfaces and contents. @@ -177,7 +199,9 @@ Zone hygric inertia ratio. In zone moisture balance calculations, the effective }) }} -**znSC=*float*** +### znSC + +Type: *float* Zone shade closure. Determines insolation through windows (see WINDOW members *wnSCSO* and *wnSCSC*) and solar gain distribution: see SGDIST members *sgFSO* and *sgFSC*. 0 represents shades open; 1 represents shades closed; intermediate values are allowed. An hourly variable CSE expression may be used to schedule shade closure as a function of weather, time of year, previous interval HVAC use or zone temperature, etc. @@ -191,7 +215,9 @@ Zone shade closure. Determines insolation through windows (see WINDOW members *w }) }} -**znTH=*float*** +### znTH + +Type: *float* Heating set point used (and required) when znModel=CZM and zone has no terminals. @@ -205,7 +231,9 @@ Heating set point used (and required) when znModel=CZM and zone has no terminals }) }} -**znTD=*float*** +### znTD + +Type: *float* Desired set point (temperature maintained with ventilation if possible) for znModel=CZM. Must be specified when zone ventilation is active. @@ -219,7 +247,9 @@ Desired set point (temperature maintained with ventilation if possible) for znMo }) }} -**znTC=*float*** +### znTC + +Type: *float* Cooling set point used (and required) when znModel=CZM and zone has no terminals. @@ -235,7 +265,9 @@ Cooling set point used (and required) when znModel=CZM and zone has no terminals znModel = CZM zone heating and cooling is provided either via an RSYS HVAC system, by "magic" heat transfers specified by znQxxx items, or via TERMINAL (s). One of these must be defined. -**znRSys=*rsysName*** +### znRSys + +Type: *rsysName* Name of RSYS providing heating, cooling, and optional central fan integrated ventilation to this zone. @@ -249,7 +281,9 @@ Name of RSYS providing heating, cooling, and optional central fan integrated ven }) }} -**znQMxH=*float*** +### znQMxH + +Type: *float* Heating capacity at current conditions @@ -263,7 +297,9 @@ Heating capacity at current conditions }) }} -**znQMxHRated=*float*** +### znQMxHRated + +Type: *float* Rated heating capacity @@ -277,7 +313,9 @@ Rated heating capacity }) }} -**znQMxC=*float*** +### znQMxC + +Type: *float* Cooling capacity at current conditions @@ -291,7 +329,9 @@ Cooling capacity at current conditions }) }} -**znQMxCRated=*float*** +### znQMxCRated + +Type: *float* Rated cooling capacity @@ -308,7 +348,9 @@ Rated cooling capacity <% if comfort_model %> The following provide parameters for comfort calculations -**znComfClo=*float*** +### znComfClo + +Type: *float* Occupant clothing resistance, used only when a comfort model is enabled. @@ -322,7 +364,9 @@ Occupant clothing resistance, used only when a comfort model is enabled. }) }} -**znComfMet=*float*** +### znComfMet + +Type: *float* Occupant metabolic rate, used only when a comfort model is enabled. @@ -336,7 +380,9 @@ Occupant metabolic rate, used only when a comfort model is enabled. }) }} -**znComfAirV=*float*** +### znComfAirV + +Type: *float* Nominal air velocity used for comfort model, used only when a comfort model is enabled. @@ -350,7 +396,9 @@ Nominal air velocity used for comfort model, used only when a comfort model is e }) }} -**znComfRh=*float*** +### znComfRh + +Type: *float* Nominal zone relative humidity used for comfort model, used only when a comfort model is enabled. @@ -370,7 +418,9 @@ Nominal zone relative humidity used for comfort model, used only when a comfort The following control a simplified air change plus leakage area model. The Sherman-Grimsrud model is used to derive air flow rate from leakage area and this rate is added to the air changes specified with infAC. Note that TOP.windF does *not* modify calculated infiltration rates, since the Sherman-Grimsrud model uses its own modifiers. See also AirNet models available via IZXFER. -**infAC=*float*** +### infAC + +Type: *float* Zone infiltration air changes per hour. @@ -384,7 +434,9 @@ Zone infiltration air changes per hour. }) }} -**infELA=*float*** +### infELA + +Type: *float* Zone effective leakage area (ELA). @@ -398,7 +450,9 @@ Zone effective leakage area (ELA). }) }} -**infShld=*int*** +### infShld + +Type: *int* Zone local shielding class, used in derivation of local wind speed for ELA infiltration model, wind-driven AirNet leakage, and exterior surface coefficients. infShld values are -- @@ -419,7 +473,9 @@ Zone local shielding class, used in derivation of local wind speed for ELA infil }) }} -**infStories=*int*** +### infStories + +Type: *int* Number of stories in zone, used in ELA model. @@ -433,7 +489,9 @@ Number of stories in zone, used in ELA model. }) }} -**znWindFLkg=*float*** +### znWindFLkg + +Type: *float* Wind speed modifier factor. The weather file wind speed is multiplied by this factor to yield a local wind speed for use in infiltration and convection models. @@ -447,7 +505,9 @@ Wind speed modifier factor. The weather file wind speed is multiplied by this f }) }} -**znAFMtr=*afMtrName*** +### znAFMtr + +Type: *afMtrName* Name of an AFMETER object, if any, to which zone AirNet air flows are recorded. *ZnAFMtr* defines a pressure boundary for accounting purposes. Multiple zones having the same AFMETER are treated as a single volume -- interzone flows within that volume are not recorded. For example, to obtain "building total" flow data, a common AFMETER could be assigned to several conditioned zones but not to adjacent unconditioned zones such as attic spaces. @@ -461,7 +521,9 @@ Name of an AFMETER object, if any, to which zone AirNet air flows are recorded. }) }} -**znLoadMtr=*ldMtrName*** +### znLoadMtr + +Type: *ldMtrName* Name of a LOADMETER object, if any, to which zone heating and cooling loads are recorded. @@ -481,7 +543,9 @@ Presence of an exhaust fan in a zone is indicated by specifying a non-zero desig Zone exhaust fan model implementation is incomplete as of July, 2011. The current code calculates energy use but does not account for the effects of air transfer on room heat balance. IZXFER provides a more complete implementation. -**xfanFOn=*float*** +### xfanFOn + +Type: *float* Exhaust fan on fraction. On/off control assumed, so electricity requirement is proportional to run time. @@ -501,7 +565,9 @@ Example: The following would run an exhaust fan 70% of the time between 8 AM and default, 0 ); -**xfanVfDs=*float*** +### xfanVfDs + +Type: *float* Exhaust fan design flow; 0 or not given indicates no fan. @@ -515,7 +581,9 @@ Exhaust fan design flow; 0 or not given indicates no fan. }) }} -**xfanPress=*float*** +### xfanPress + +Type: *float* Exhaust fan external static pressure. @@ -531,7 +599,9 @@ Exhaust fan external static pressure. Only one of xfanElecPwr, xfanEff, and xfanShaftBhp may be given: together with xfanVfDs and xfanPress, any one is sufficient for CSE to detemine the others and to compute the fan heat contribution to the air stream. -**xfanElecPwr=*float*** +### xfanElecPwr + +Type: *float* Fan input power per unit air flow (at design flow and pressure). @@ -545,7 +615,9 @@ Fan input power per unit air flow (at design flow and pressure). }) }} -**xfanEff=*float*** +### xfanEff + +Type: *float* Exhaust fan/motor/drive combined efficiency. @@ -559,7 +631,9 @@ Exhaust fan/motor/drive combined efficiency. }) }} -**xfanShaftBhp=*float*** +### xfanShaftBhp + +Type: *float* Fan shaft power at design flow and pressure. @@ -573,7 +647,9 @@ Fan shaft power at design flow and pressure. }) }} -**xfanMtr=*mtrName*** +### xfanMtr + +Type: *mtrName* Name of METER object, if any, by which fan's energy use is recorded (under end use category "fan"). diff --git a/doc/src/extra/inverse.md b/doc/src/extra/inverse.md index f5319aa4c..b67fb3217 100644 --- a/doc/src/extra/inverse.md +++ b/doc/src/extra/inverse.md @@ -2,7 +2,9 @@ Function inverter -**ivFREQ=*Choice*** +### ivFREQ + +Type: *Choice* {{ member_table({ @@ -14,7 +16,9 @@ Function inverter }) }} -**ivX=*float*** +### ivX + +Type: *float* {{ member_table({ @@ -26,7 +30,9 @@ Function inverter }) }} -**ivX0=*float*** +### ivX0 + +Type: *float* {{ member_table({ @@ -38,7 +44,9 @@ Function inverter }) }} -**ivY=*float*** +### ivY + +Type: *float* {{ member_table({ @@ -50,7 +58,9 @@ Function inverter }) }} -**ivY0=*float*** +### ivY0 + +Type: *float* {{ member_table({ @@ -62,7 +72,9 @@ Function inverter }) }} -**ivYTarg=*float*** +### ivYTarg + +Type: *float* {{ member_table({ diff --git a/doc/src/shared/dhwheater-doc.md b/doc/src/shared/dhwheater-doc.md index 974e427db..2340aca11 100644 --- a/doc/src/shared/dhwheater-doc.md +++ b/doc/src/shared/dhwheater-doc.md @@ -12,7 +12,9 @@ Optional name of water heater; give after the word “DHWHEATER” if desired. }) }} -**whMult=*integer*** +### whMult + +Type: *integer* Number of identical water heaters of this type. Any value $>1$ is equivalent to repeated entry of the same DHWHEATER. @@ -26,7 +28,9 @@ Number of identical water heaters of this type. Any value $>1$ is equivalent to }) }} -**whType=*choice*** +### whType + +Type: *choice* Type of water heater. This categorization is based on CEC and federal rating standards that change from time to time. @@ -47,7 +51,9 @@ Type of water heater. This categorization is based on CEC and federal rating st }) }} -**whHeatSrc=*choice*** +### whHeatSrc + +Type: *choice* Heat source for water heater. CSE implements uses efficiency-based models for all whTypes (as documented in RACM, App. B). In addition, the detailed Ecotope HPWH model is @@ -70,7 +76,9 @@ available for electric (air source heat pump and resistance) SMALLSTORAGE water }) }} -**whResType=*choice*** +### whResType + +Type: *choice* Resistance heater type, valid only if whHeatSrc is equal to RESISTANCEX, else ignored. These choices are supported by the detailed HPWH model. Except for Generic, all heater characteristics are set by HPWH based on whResType. @@ -84,7 +92,9 @@ Resistance heater type, valid only if whHeatSrc is equal to RESISTANCEX, else ig }) }} -**whHeatingCap=*float*** +### whHeatingCap + +Type: *float* Nominal heating capacity, available only for a limited HPWH types. @@ -98,7 +108,9 @@ Nominal heating capacity, available only for a limited HPWH types. }) }} -**whVol=*float*** +### whVol + +Type: *float* Storage tank volume. Must be omitted or 0 for instantaneous whTypes. Used by HPWH model (whHeatSrc=RESISTANCEX or whHeatSrc=ASHPX). Required when whHeatSrc=RESISTANCEX or whHeatSrc=ASHPX with whASHPType=GENERIC. For all other configurations, whVol is documentation-only. @@ -112,7 +124,9 @@ Storage tank volume. Must be omitted or 0 for instantaneous whTypes. Used by HP }) }} -**whVolRunning=*float*** +### whVolRunning + +Type: *float* Running storage volume is the volume above aquastat. Requires the total volume based on aquastat position. Ecotope's HPWH tank and heater. @@ -127,7 +141,9 @@ Running storage volume is the volume above aquastat. Requires the total volume b }} -**whEF=*float*** +### whEF + +Type: *float* Rated energy factor that specifies DHWHEATER efficiency under test conditions. Used by CSE to derive annual water heating efficiency and/or other characteristics as described @@ -152,7 +168,9 @@ below. Calculation methods are documented in RACM, Appendix B. }) }} -**whLDEF=*float*** +### whLDEF + +Type: *float* Load-dependent energy factor for DHWHEATERs with whType=SMALLSTORAGE and whHeatSrc=FUEL or whHeatSrc=RESISTANCE. If not given, whLDEF is derived using a preliminary simulation @@ -168,7 +186,9 @@ activated via DHWSYS wsCalcMode=PRERUN. See RACM Appendix B. }) }} -**whUEF=*float*** +### whUEF + +Type: *float* Water heater Uniform Energy Factor efficiency rating, used when whType=INSTANTANEOUSUEF. @@ -182,7 +202,9 @@ Water heater Uniform Energy Factor efficiency rating, used when whType=INSTANTAN }) }} -**whAnnualElec=*float*** +### whAnnualElec + +Type: *float* Annual electricity use assumed in UEF rating derivation. Used when whType=INSTANTANEOUSUEF. @@ -196,7 +218,9 @@ Annual electricity use assumed in UEF rating derivation. Used when whType=INSTA }) }} -**whAnnualFuel=*float*** +### whAnnualFuel + +Type: *float* Annual fuel use assumd in UEF rating derivation, used when whType=INSTANTANEOUSUEF. @@ -210,7 +234,9 @@ Annual fuel use assumd in UEF rating derivation, used when whType=INSTANTANEOUSU }) }} -**whRatedFlow=*float*** +### whRatedFlow + +Type: *float* Maximum flow rate assumed in UEF rating derivation. Used when whType=INSTANTANEOUSUEF. @@ -224,7 +250,9 @@ Maximum flow rate assumed in UEF rating derivation. Used when whType=INSTANTANE }) }} -**whStbyElec=*float*** +### whStbyElec + +Type: *float* Instantaneous water heater standby power (electricity consumed when heater is not operating). Used when whType=INSTANTANEOUSUEF. @@ -238,7 +266,9 @@ Instantaneous water heater standby power (electricity consumed when heater is no }) }} -**whLoadCFwdF=*float*** +### whLoadCFwdF + +Type: *float* Instanteous water heater load carry forward factor -- approximate number of hours the heater is allowed to meet water heating demand that is unmet on a 1 minute basis, used when whType=INSTANTANEOUSUEF. @@ -252,7 +282,9 @@ Instanteous water heater load carry forward factor -- approximate number of hour }) }} -**whZone=*znName*** +### whZone + +Type: *znName* Name of zone where water heater is located, used only in detailed HPWH models (whHeatSrc=ASHPX or whHeatSrc=RESISTANCEX), otherwise no effect. Zone conditions are used for tank heat loss calculations. Heat losses from the DHWHEATER are included in the zone heat balance. whZone also provides the default for whASHPSrcZn (see below). @@ -268,7 +300,9 @@ whZone and whTEx cannot both be specified. }) }} -**whTEx=*float*** +### whTEx + +Type: *float* Water heater surround temperature, used only in detailed HPWH models (whHeatSrc=ASHPX or whHeatSrc=RESISTANCEX), otherwise no effect. When whTEx is specified, tank heat losses are calculated using whTEx and modify tank water temperatures, but the lost heat has no external effect. @@ -284,7 +318,9 @@ whZone and whTEx cannot both be specified. }) }} -**whASHPType=*choice*** +### whASHPType + +Type: *choice* Air source heat pump type, valid only if whHeatSrc=ASHPX. These choices are supported by the detailed HPWH model. Except for Generic, all heater characteristics are set by HPWH based on whASHPType. @@ -410,7 +446,9 @@ LG_APHWC80,LG 580-gal integrated HPWH", True) }) }} -**whASHPSrcZn=*znName*** +### whASHPSrcZn + +Type: *znName* Name of zone that serves as heat pump heat source used when whHeatSrc=ASHPX. Heat removed from the zone is added to the heated water and is included in zone heat balance (that is, heat pump operation cools the zone). @@ -426,7 +464,9 @@ whASHPSrcZn and whASHPSrcT cannot both be specified. }) }} -**whASHPSrcT=*float*** +### whASHPSrcT + +Type: *float* Heat pump source air temperature used when whHeatSrc=ASHPX. Heat removed from this source is added to the heated water but has no other effect. @@ -457,7 +497,9 @@ To model a heat pump that uses outdoor air as its heat source, omit whASHPSrcZn }) }} -**whASHPResUse=*float*** +### whASHPResUse + +Type: *float* Specifies activation temperature difference for resistance heating, used only when whHeatSrc=ASHPX and whASHPType=GENERIC. Refer to HPWH engineering documentation for model details. @@ -471,7 +513,9 @@ To model a heat pump that uses outdoor air as its heat source, omit whASHPSrcZn }) }} -**whResHtPwr=*float*** +### whResHtPwr + +Type: *float* Specifies resistance upper element power, used only with whHeatSrc=RESISTANCEX. @@ -485,7 +529,9 @@ To model a heat pump that uses outdoor air as its heat source, omit whASHPSrcZn }) }} -**whResHtPwr2=*float*** +### whResHtPwr2 + +Type: *float* Specifies resistance lower element power, used only with whHeatSrc=RESISTANCEX. @@ -499,7 +545,9 @@ To model a heat pump that uses outdoor air as its heat source, omit whASHPSrcZn }) }} -**whUA=*float*** +### whUA + +Type: *float* HPWH-type total UA (not per tank) @@ -513,7 +561,9 @@ HPWH-type total UA (not per tank) }) }} -**whInsulR=*float*** +### whInsulR + +Type: *float* Tank insulation resistance for heat pump water heater. @@ -528,7 +578,9 @@ Tank insulation resistance for heat pump water heater. }} **whInHtSupply=*float***\ -**whInHtLoopRet=*float*** +### whInHtLoopRet + +Type: *float* Fractional tank height of inlets for supply water and DHWLOOP return, used only with HPWH types (whHeatSrc=RESISTANCEX or whHeatSrc=ASHPX). 0 indicates the bottom of the water heater tank and 1 specifies the top. Inlet height influences tank layer mixing and can impact heat pump COP and/or heating activation frequency. @@ -542,7 +594,9 @@ Tank insulation resistance for heat pump water heater. }) }} -**whtankCount=*float*** +### whtankCount + +Type: *float* Number of storage tanks per DHWHEATER, re built-up whType=Builtup, does *not* reflect wh_mult (wh_mult=2, wh_tankCount=3 -> 6 tanks). @@ -556,7 +610,9 @@ Number of storage tanks per DHWHEATER, re built-up whType=Builtup, does *not* re }) }} -**whEff=*float*** +### whEff + +Type: *float* Water heating efficiency, used in modeling whType=LARGESTORAGE and whType=LARGEINSTANTANEOUS. @@ -570,7 +626,9 @@ Water heating efficiency, used in modeling whType=LARGESTORAGE and whType=LARGEI }) }} -**whSBL=*float*** +### whSBL + +Type: *float* Standby loss, used in modeling whType=LARGESTORAGE. @@ -584,7 +642,9 @@ Standby loss, used in modeling whType=LARGESTORAGE. }) }} -**whPilotPwr=*float*** +### whPilotPwr + +Type: *float* Pilot light consumption, included in fuel energy use of DHWHEATERs with whHeatSrc=FUEL. @@ -598,7 +658,9 @@ Pilot light consumption, included in fuel energy use of DHWHEATERs with whHeatSr }) }} -**whParElec=*float*** +### whParElec + +Type: *float* Parasitic electricity power, included in electrical energy use of all DHWHEATERs. @@ -613,7 +675,9 @@ Parasitic electricity power, included in electrical energy use of all DHWHEATERs }} **whFAdjElec=*float***\ -**whFAdjFuel=*float*** +### whFAdjFuel + +Type: *float* Water heater energy use modifiers. Multiplies calculated use of electricity (whFAdjElec) and fuel (whFAdjFuel). All components of energy use -- primary, backup, XBU (extra backup), and other auxiliary -- are modified before they are accumulated to whElecMtr and whFuelMtr. @@ -627,7 +691,9 @@ Water heater energy use modifiers. Multiplies calculated use of electricity (wh }) }} -**whElecMtr=*mtrName*** +### whElecMtr + +Type: *mtrName* Name of METER object, if any, by which DHWHEATER electrical energy use is recorded (under end use DHW). @@ -641,7 +707,9 @@ Name of METER object, if any, by which DHWHEATER electrical energy use is record }) }} -**whxBUEndUse=*choice*** +### whxBUEndUse + +Type: *choice* Specifies the whElecMtr end use, if any, to which extra backup energy is accumulated. In some water heater types, extra backup energy is modeled to maintain output temperature at wsTUse. By default, extra backup energy is included in end use dhwBU. whxBUEndUse allows specification of an alternative end use to which extra backup energy is accumulated. From 7fe8cbb3c8381abe2a377508b478a09257207e99 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Sat, 3 May 2025 15:48:51 -0600 Subject: [PATCH 034/117] Update bold headers to use actual md heading notation. Find: \n\*\*(\w+)\*=(\w+)\*\*\*[\s]*\n Replace: \n### $1\n\nType: *$2*\n\n --- doc/src/docs/input-data/airhandler.md | 12 +++++++++--- doc/src/docs/input-data/holiday.md | 12 +++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index f72663ee4..376ebbde2 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -332,7 +332,9 @@ We recommend giving 1.0 to eliminate overrun in constant volume modeling. }) }} -**sfanPress*=float*** +### sfanPress + +Type: *float* Design or rated pressure. The work done by the fan is computed as the product of this pressure and the current flow, except that the flow is limited to sfanVfDs. That is, in overrun (see _sfanVfMxF_) it is assumed that large VAV terminal damper openings allow the pressure to drop in proportion to the flow over rated. This work is added to the air as heat at the fan, and is termed "fan heat". Setting sfanPress to zero will eliminate simulated fan heat for theoretical simulation of a coil only. @@ -1235,7 +1237,9 @@ A cooling coil is an optional device that remove heat and humidity from the air The following five members are used for all cool coil types except as noted. Presence of a cool coil in the AIRHANDLER is indicated by giving an _ahccType value_ other than NONE. -**ahccType*=choice*** +### ahccType + +Type: *choice* Cool coil type choice: @@ -1255,7 +1259,9 @@ NONE, AIRHANDLER has no cooling coil and no cooling capability.") }) }} -**ahccSched*=choice*** +### ahccSched + +Type: *choice* Cooling coil schedule choice, hourly variable. Use a suitable CSE expression for ahccSched if cooling coil is to operate only at certain times, only in hot weather, etc. diff --git a/doc/src/docs/input-data/holiday.md b/doc/src/docs/input-data/holiday.md index cb7493ca1..a44165ee7 100644 --- a/doc/src/docs/input-data/holiday.md +++ b/doc/src/docs/input-data/holiday.md @@ -23,7 +23,9 @@ Name of holiday: must follow the word HOLIDAY. ", "", text) + + for line in text.splitlines(): + match = heading_re.match(line) + if not match: + continue + + heading = match.group(2).strip() + if heading in AUTOREF_CONFIG["exclude_headings"]: + continue + + slug = slugify(heading) + text_to_slug[heading] = slug + slug_levels[slug] = len(match.group(1)) + +# Sort and compile all headings found by walking docs *.md files. +escaped = sorted((re.escape(text) for text in text_to_slug), key=len, reverse=True) +combined_pattern = re.compile( + rf""" + (?=3.12" +resolution-markers = [ + "python_full_version >= '3.13'", + "python_full_version < '3.13'", +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, +] [[package]] name = "babel" @@ -10,6 +23,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, ] +[[package]] +name = "bracex" +version = "2.5.post1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/6c/57418c4404cd22fe6275b8301ca2b46a8cdaa8157938017a9ae0b3edf363/bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6", size = 26641 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/02/8db98cdc1a58e0abd6716d5e63244658e6e63513c65f469f34b6f1053fd0/bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6", size = 11558 }, +] + [[package]] name = "certifi" version = "2025.1.31" @@ -90,8 +112,11 @@ version = "0.1.0" source = { virtual = "." } dependencies = [ { name = "mkdocs-autorefs" }, + { name = "mkdocs-awesome-nav" }, { name = "mkdocs-macros-plugin" }, { name = "mkdocs-material" }, + { name = "python-slugify" }, + { name = "pyyaml" }, ] [package.dev-dependencies] @@ -103,8 +128,11 @@ dev = [ [package.metadata] requires-dist = [ { name = "mkdocs-autorefs", specifier = ">=1.3.1" }, + { name = "mkdocs-awesome-nav", specifier = ">=3.1.1" }, { name = "mkdocs-macros-plugin", specifier = ">=1.3.7" }, { name = "mkdocs-material" }, + { name = "python-slugify", specifier = ">=8.0.4" }, + { name = "pyyaml", specifier = ">=6.0.2" }, ] [package.metadata.requires-dev] @@ -274,6 +302,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/db/19/f20edc082c1de2987dbaf30fcc514ed7a908d465a15aba7cba595c3b245a/mkdocs_autorefs-1.3.1-py3-none-any.whl", hash = "sha256:18c504ae4d3ee7f344369bb26cb31d4105569ee252aab7d75ec2734c2c8b0474", size = 2837887 }, ] +[[package]] +name = "mkdocs-awesome-nav" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mkdocs" }, + { name = "natsort" }, + { name = "pydantic" }, + { name = "wcmatch" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2d/e0/b2185370a35ecc042f648beec27a6d1a5d15d2ad46255d68201d2ba9cc38/mkdocs_awesome_nav-3.1.1.tar.gz", hash = "sha256:0665ab290a3c22b49e07151e3aca82d5d28a42aecf6e940bf295546565d156b5", size = 8656 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/03/84bdfc698c5307259b269c5c20b8d62c7f2f36667f0a10d4d311dc604546/mkdocs_awesome_nav-3.1.1-py3-none-any.whl", hash = "sha256:50eafd8042274feff2b995ecaa50c55c07807ff33210a064877f6f1aa8d6ee40", size = 12356 }, +] + [[package]] name = "mkdocs-get-deps" version = "0.2.0" @@ -339,6 +382,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, ] +[[package]] +name = "natsort" +version = "8.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e2/a9/a0c57aee75f77794adaf35322f8b6404cbd0f89ad45c87197a937764b7d0/natsort-8.4.0.tar.gz", hash = "sha256:45312c4a0e5507593da193dedd04abb1469253b601ecaf63445ad80f0a1ea581", size = 76575 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/82/7a9d0550484a62c6da82858ee9419f3dd1ccc9aa1c26a1e43da3ecd20b0d/natsort-8.4.0-py3-none-any.whl", hash = "sha256:4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c", size = 38268 }, +] + [[package]] name = "packaging" version = "24.2" @@ -375,6 +427,63 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 }, ] +[[package]] +name = "pydantic" +version = "2.11.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/10/2e/ca897f093ee6c5f3b0bee123ee4465c50e75431c3d5b6a3b44a47134e891/pydantic-2.11.3.tar.gz", hash = "sha256:7471657138c16adad9322fe3070c0116dd6c3ad8d649300e3cbdfe91f4db4ec3", size = 785513 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/1d/407b29780a289868ed696d1616f4aad49d6388e5a77f567dcd2629dcd7b8/pydantic-2.11.3-py3-none-any.whl", hash = "sha256:a082753436a07f9ba1289c6ffa01cd93db3548776088aa917cc43b63f68fa60f", size = 443591 }, +] + +[[package]] +name = "pydantic-core" +version = "2.33.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/17/19/ed6a078a5287aea7922de6841ef4c06157931622c89c2a47940837b5eecd/pydantic_core-2.33.1.tar.gz", hash = "sha256:bcc9c6fdb0ced789245b02b7d6603e17d1563064ddcfc36f046b61c0c05dd9df", size = 434395 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/ce/3cb22b07c29938f97ff5f5bb27521f95e2ebec399b882392deb68d6c440e/pydantic_core-2.33.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1293d7febb995e9d3ec3ea09caf1a26214eec45b0f29f6074abb004723fc1de8", size = 2026640 }, + { url = "https://files.pythonhosted.org/packages/19/78/f381d643b12378fee782a72126ec5d793081ef03791c28a0fd542a5bee64/pydantic_core-2.33.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:99b56acd433386c8f20be5c4000786d1e7ca0523c8eefc995d14d79c7a081498", size = 1852649 }, + { url = "https://files.pythonhosted.org/packages/9d/2b/98a37b80b15aac9eb2c6cfc6dbd35e5058a352891c5cce3a8472d77665a6/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35a5ec3fa8c2fe6c53e1b2ccc2454398f95d5393ab398478f53e1afbbeb4d939", size = 1892472 }, + { url = "https://files.pythonhosted.org/packages/4e/d4/3c59514e0f55a161004792b9ff3039da52448f43f5834f905abef9db6e4a/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b172f7b9d2f3abc0efd12e3386f7e48b576ef309544ac3a63e5e9cdd2e24585d", size = 1977509 }, + { url = "https://files.pythonhosted.org/packages/a9/b6/c2c7946ef70576f79a25db59a576bce088bdc5952d1b93c9789b091df716/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9097b9f17f91eea659b9ec58148c0747ec354a42f7389b9d50701610d86f812e", size = 2128702 }, + { url = "https://files.pythonhosted.org/packages/88/fe/65a880f81e3f2a974312b61f82a03d85528f89a010ce21ad92f109d94deb/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc77ec5b7e2118b152b0d886c7514a4653bcb58c6b1d760134a9fab915f777b3", size = 2679428 }, + { url = "https://files.pythonhosted.org/packages/6f/ff/4459e4146afd0462fb483bb98aa2436d69c484737feaceba1341615fb0ac/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3d15245b08fa4a84cefc6c9222e6f37c98111c8679fbd94aa145f9a0ae23d", size = 2008753 }, + { url = "https://files.pythonhosted.org/packages/7c/76/1c42e384e8d78452ededac8b583fe2550c84abfef83a0552e0e7478ccbc3/pydantic_core-2.33.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef99779001d7ac2e2461d8ab55d3373fe7315caefdbecd8ced75304ae5a6fc6b", size = 2114849 }, + { url = "https://files.pythonhosted.org/packages/00/72/7d0cf05095c15f7ffe0eb78914b166d591c0eed72f294da68378da205101/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fc6bf8869e193855e8d91d91f6bf59699a5cdfaa47a404e278e776dd7f168b39", size = 2069541 }, + { url = "https://files.pythonhosted.org/packages/b3/69/94a514066bb7d8be499aa764926937409d2389c09be0b5107a970286ef81/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:b1caa0bc2741b043db7823843e1bde8aaa58a55a58fda06083b0569f8b45693a", size = 2239225 }, + { url = "https://files.pythonhosted.org/packages/84/b0/e390071eadb44b41f4f54c3cef64d8bf5f9612c92686c9299eaa09e267e2/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ec259f62538e8bf364903a7d0d0239447059f9434b284f5536e8402b7dd198db", size = 2248373 }, + { url = "https://files.pythonhosted.org/packages/d6/b2/288b3579ffc07e92af66e2f1a11be3b056fe1214aab314748461f21a31c3/pydantic_core-2.33.1-cp312-cp312-win32.whl", hash = "sha256:e14f369c98a7c15772b9da98987f58e2b509a93235582838bd0d1d8c08b68fda", size = 1907034 }, + { url = "https://files.pythonhosted.org/packages/02/28/58442ad1c22b5b6742b992ba9518420235adced665513868f99a1c2638a5/pydantic_core-2.33.1-cp312-cp312-win_amd64.whl", hash = "sha256:1c607801d85e2e123357b3893f82c97a42856192997b95b4d8325deb1cd0c5f4", size = 1956848 }, + { url = "https://files.pythonhosted.org/packages/a1/eb/f54809b51c7e2a1d9f439f158b8dd94359321abcc98767e16fc48ae5a77e/pydantic_core-2.33.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d13f0276806ee722e70a1c93da19748594f19ac4299c7e41237fc791d1861ea", size = 1903986 }, + { url = "https://files.pythonhosted.org/packages/7a/24/eed3466a4308d79155f1cdd5c7432c80ddcc4530ba8623b79d5ced021641/pydantic_core-2.33.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70af6a21237b53d1fe7b9325b20e65cbf2f0a848cf77bed492b029139701e66a", size = 2033551 }, + { url = "https://files.pythonhosted.org/packages/ab/14/df54b1a0bc9b6ded9b758b73139d2c11b4e8eb43e8ab9c5847c0a2913ada/pydantic_core-2.33.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:282b3fe1bbbe5ae35224a0dbd05aed9ccabccd241e8e6b60370484234b456266", size = 1852785 }, + { url = "https://files.pythonhosted.org/packages/fa/96/e275f15ff3d34bb04b0125d9bc8848bf69f25d784d92a63676112451bfb9/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b315e596282bbb5822d0c7ee9d255595bd7506d1cb20c2911a4da0b970187d3", size = 1897758 }, + { url = "https://files.pythonhosted.org/packages/b7/d8/96bc536e975b69e3a924b507d2a19aedbf50b24e08c80fb00e35f9baaed8/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1dfae24cf9921875ca0ca6a8ecb4bb2f13c855794ed0d468d6abbec6e6dcd44a", size = 1986109 }, + { url = "https://files.pythonhosted.org/packages/90/72/ab58e43ce7e900b88cb571ed057b2fcd0e95b708a2e0bed475b10130393e/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6dd8ecfde08d8bfadaea669e83c63939af76f4cf5538a72597016edfa3fad516", size = 2129159 }, + { url = "https://files.pythonhosted.org/packages/dc/3f/52d85781406886c6870ac995ec0ba7ccc028b530b0798c9080531b409fdb/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f593494876eae852dc98c43c6f260f45abdbfeec9e4324e31a481d948214764", size = 2680222 }, + { url = "https://files.pythonhosted.org/packages/f4/56/6e2ef42f363a0eec0fd92f74a91e0ac48cd2e49b695aac1509ad81eee86a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:948b73114f47fd7016088e5186d13faf5e1b2fe83f5e320e371f035557fd264d", size = 2006980 }, + { url = "https://files.pythonhosted.org/packages/4c/c0/604536c4379cc78359f9ee0aa319f4aedf6b652ec2854953f5a14fc38c5a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e11f3864eb516af21b01e25fac915a82e9ddad3bb0fb9e95a246067398b435a4", size = 2120840 }, + { url = "https://files.pythonhosted.org/packages/1f/46/9eb764814f508f0edfb291a0f75d10854d78113fa13900ce13729aaec3ae/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:549150be302428b56fdad0c23c2741dcdb5572413776826c965619a25d9c6bde", size = 2072518 }, + { url = "https://files.pythonhosted.org/packages/42/e3/fb6b2a732b82d1666fa6bf53e3627867ea3131c5f39f98ce92141e3e3dc1/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:495bc156026efafd9ef2d82372bd38afce78ddd82bf28ef5276c469e57c0c83e", size = 2248025 }, + { url = "https://files.pythonhosted.org/packages/5c/9d/fbe8fe9d1aa4dac88723f10a921bc7418bd3378a567cb5e21193a3c48b43/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ec79de2a8680b1a67a07490bddf9636d5c2fab609ba8c57597e855fa5fa4dacd", size = 2254991 }, + { url = "https://files.pythonhosted.org/packages/aa/99/07e2237b8a66438d9b26482332cda99a9acccb58d284af7bc7c946a42fd3/pydantic_core-2.33.1-cp313-cp313-win32.whl", hash = "sha256:ee12a7be1742f81b8a65b36c6921022301d466b82d80315d215c4c691724986f", size = 1915262 }, + { url = "https://files.pythonhosted.org/packages/8a/f4/e457a7849beeed1e5defbcf5051c6f7b3c91a0624dd31543a64fc9adcf52/pydantic_core-2.33.1-cp313-cp313-win_amd64.whl", hash = "sha256:ede9b407e39949d2afc46385ce6bd6e11588660c26f80576c11c958e6647bc40", size = 1956626 }, + { url = "https://files.pythonhosted.org/packages/20/d0/e8d567a7cff7b04e017ae164d98011f1e1894269fe8e90ea187a3cbfb562/pydantic_core-2.33.1-cp313-cp313-win_arm64.whl", hash = "sha256:aa687a23d4b7871a00e03ca96a09cad0f28f443690d300500603bd0adba4b523", size = 1909590 }, + { url = "https://files.pythonhosted.org/packages/ef/fd/24ea4302d7a527d672c5be06e17df16aabfb4e9fdc6e0b345c21580f3d2a/pydantic_core-2.33.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:401d7b76e1000d0dd5538e6381d28febdcacb097c8d340dde7d7fc6e13e9f95d", size = 1812963 }, + { url = "https://files.pythonhosted.org/packages/5f/95/4fbc2ecdeb5c1c53f1175a32d870250194eb2fdf6291b795ab08c8646d5d/pydantic_core-2.33.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aeb055a42d734c0255c9e489ac67e75397d59c6fbe60d155851e9782f276a9c", size = 1986896 }, + { url = "https://files.pythonhosted.org/packages/71/ae/fe31e7f4a62431222d8f65a3bd02e3fa7e6026d154a00818e6d30520ea77/pydantic_core-2.33.1-cp313-cp313t-win_amd64.whl", hash = "sha256:338ea9b73e6e109f15ab439e62cb3b78aa752c7fd9536794112e14bee02c8d18", size = 1931810 }, +] + [[package]] name = "pygments" version = "2.19.1" @@ -409,6 +518,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, ] +[[package]] +name = "python-slugify" +version = "8.0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "text-unidecode" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051 }, +] + [[package]] name = "pyyaml" version = "6.0.2" @@ -555,6 +676,36 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7f/be/df630c387a0a054815d60be6a97eb4e8f17385d5d6fe660e1c02750062b4/termcolor-2.5.0-py3-none-any.whl", hash = "sha256:37b17b5fc1e604945c2642c872a3764b5d547a48009871aea3edd3afa180afb8", size = 7755 }, ] +[[package]] +name = "text-unidecode" +version = "1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154 }, +] + +[[package]] +name = "typing-extensions" +version = "4.13.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125 }, +] + [[package]] name = "urllib3" version = "2.3.0" @@ -588,6 +739,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, ] +[[package]] +name = "wcmatch" +version = "10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "bracex" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/41/ab/b3a52228538ccb983653c446c1656eddf1d5303b9cb8b9aef6a91299f862/wcmatch-10.0.tar.gz", hash = "sha256:e72f0de09bba6a04e0de70937b0cf06e55f36f37b3deb422dfaf854b867b840a", size = 115578 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/df/4ee467ab39cc1de4b852c212c1ed3becfec2e486a51ac1ce0091f85f38d7/wcmatch-10.0-py3-none-any.whl", hash = "sha256:0dd927072d03c0a6527a20d2e6ad5ba8d0380e60870c383bc533b71744df7b7a", size = 39347 }, +] + [[package]] name = "zipp" version = "3.21.0" From 27d39a7be8952ddcf3c07c9e3157b9ebd0df8c09 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 5 May 2025 15:41:02 -0600 Subject: [PATCH 036/117] Rest all markdown, since Prettier reformatted MD in a way that broke multiline table syntax. --- doc/src/docs/input-data/afmeter.md | 40 +- doc/src/docs/input-data/airhandler.md | 2447 +++++++----------- doc/src/docs/input-data/battery.md | 250 +- doc/src/docs/input-data/boiler.md | 391 ++- doc/src/docs/input-data/chiller.md | 515 ++-- doc/src/docs/input-data/construction.md | 58 +- doc/src/docs/input-data/coolplant.md | 135 +- doc/src/docs/input-data/descond.md | 189 +- doc/src/docs/input-data/dhwdayuse.md | 58 +- doc/src/docs/input-data/dhwheater.md | 2 +- doc/src/docs/input-data/dhwheatrec.md | 201 +- doc/src/docs/input-data/dhwloop.md | 188 +- doc/src/docs/input-data/dhwloopbranch.md | 303 +-- doc/src/docs/input-data/dhwloopheater.md | 2 +- doc/src/docs/input-data/dhwlooppump.md | 118 +- doc/src/docs/input-data/dhwloopseg.md | 206 +- doc/src/docs/input-data/dhwmeter.md | 23 +- doc/src/docs/input-data/dhwpump.md | 98 +- doc/src/docs/input-data/dhwsolarcollector.md | 358 +-- doc/src/docs/input-data/dhwsolarsys.md | 236 +- doc/src/docs/input-data/dhwsys.md | 1176 ++++----- doc/src/docs/input-data/dhwtank.md | 197 +- doc/src/docs/input-data/dhwuse.md | 200 +- doc/src/docs/input-data/doas.md | 749 ++---- doc/src/docs/input-data/door.md | 407 ++- doc/src/docs/input-data/ductseg.md | 376 ++- doc/src/docs/input-data/export.md | 351 +-- doc/src/docs/input-data/exportcol.md | 150 +- doc/src/docs/input-data/exportfile.md | 86 +- doc/src/docs/input-data/fndblock.md | 192 +- doc/src/docs/input-data/foundation.md | 94 +- doc/src/docs/input-data/gain.md | 314 +-- doc/src/docs/input-data/glazetype.md | 314 +-- doc/src/docs/input-data/heatplant.md | 97 +- doc/src/docs/input-data/holiday.md | 166 +- doc/src/docs/input-data/importfile.md | 145 +- doc/src/docs/input-data/index.md | 41 +- doc/src/docs/input-data/izxfer.md | 730 ++---- doc/src/docs/input-data/layer.md | 97 +- doc/src/docs/input-data/loadmeter.md | 66 +- doc/src/docs/input-data/material.md | 169 +- doc/src/docs/input-data/meter.md | 106 +- doc/src/docs/input-data/performancemap.md | 195 +- doc/src/docs/input-data/perimeter.md | 76 +- doc/src/docs/input-data/pvarray.md | 388 ++- doc/src/docs/input-data/report.md | 385 ++- doc/src/docs/input-data/reportcol.md | 162 +- doc/src/docs/input-data/reportfile.md | 109 +- doc/src/docs/input-data/rsys.md | 1328 ++++------ doc/src/docs/input-data/sgdist.md | 120 +- doc/src/docs/input-data/shade.md | 283 +- doc/src/docs/input-data/shadex.md | 76 +- doc/src/docs/input-data/surface.md | 675 ++--- doc/src/docs/input-data/terminal.md | 667 ++--- doc/src/docs/input-data/top-members.md | 1609 +++++------- doc/src/docs/input-data/towerplant.md | 102 +- doc/src/docs/input-data/window.md | 592 ++--- doc/src/docs/input-data/zone.md | 816 +++--- doc/src/docs/input-structure.md | 1091 ++++---- doc/src/docs/introduction.md | 16 +- doc/src/docs/operation.md | 47 +- doc/src/docs/output-reports.md | 275 +- doc/src/extra/dhwsolartank.md | 2 +- doc/src/extra/inverse.md | 155 +- doc/src/shared/dhwheater-doc.md | 994 +++---- 65 files changed, 8832 insertions(+), 13372 deletions(-) diff --git a/doc/src/docs/input-data/afmeter.md b/doc/src/docs/input-data/afmeter.md index 07b8c5701..d9097731a 100644 --- a/doc/src/docs/input-data/afmeter.md +++ b/doc/src/docs/input-data/afmeter.md @@ -8,37 +8,33 @@ If any AFMETERs are defined, an additional AFMETER "sum_of_AFMETERs" is automati Note that *only* AirNet flows are recorded. -AFMETER results can be REPORTed using rpType=AFMTR (or EXPORTed using exType=AFMTR). See [Air Flow Meter Report][air-flow-meter-report]. +AFMETER results can be REPORTed using rpType=AFMTR (or EXPORTed using exType=AFMTR). See [Air Flow Meter Report](#air-flow-meter-report). -### afMtrName +**afMtrName** Name of meter: required for assigning air flows to the AFMETER. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "Yes", + variability: "constant") +%> -### endAFMeter +**endAFMeter** Indicates the end of the meter definition. Alternatively, the end of the meter definition can be indicated by the declaration of another object or by END. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") +%> **Related Probes:** -- @[afmeter][p_afmeter] +- @[afmeter](#p_afmeter) diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index 376ebbde2..e49ea685f 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -2,7 +2,7 @@ AIRHANDLER defines a central air handling system, containing a fan or fans, optional heating and cooling coils, and optional outside air intake and exhaust. AIRHANDLERs are subobjects of TOP, and deliver air to one or more ZONEs through TERMINAL(s). AIRHANDLER objects can be used to model fan ventilation and forced air heating and cooling. Dual duct systems are modeled with two AIRHANDLERs (one for hot air and one for cool air) and two TERMINALs in each zone. Figure 2 shows…. \[need a sentence that explains the figure.\] -![Insert Figure Title](../assets/images/image1.png) +![Insert Figure Title](media/image1.png) AIRHANDLER is designed primarily to model a central system that supplies hot or cold air at a centrally determined temperature (the "Supply Temperature Setpoint") to Variable Air Volume (VAV) terminals in the zones. Some additional variations are also supported: @@ -14,60 +14,51 @@ AIRHANDLER is designed primarily to model a central system that supplies hot or 3. The AIRHANDLER can supply hot air, cold air, or shut off according to the requirements of a single zone. This variation is invoked by giving _ahTsSp_ = ZN or ZN2, both described further below. -### ahName +**ahName** Name of air handler: give after the word AIRHANDLER. Required for reference in TERMINALs. -{{ - member_table({ - "units": "", - "legal_range": "_63 characters_", - "default": "", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "_63 characters_", +default: "", +required: "Yes", +variability: "constant") +%> -### ahSched - -Type: _choice_ +**ahSched=_choice_** Air handler schedule; OFF or ON, hourly schedulable by using CSE expression. -{{ csv_table("OFF, supply fan off; air handler not operating. Old date? Note: (future) Taylor setback/setup control in effect, when implemented. -ON, supply fan runs, at varying volume according to TERMINAL demand (except if _ahFanCycles_ = YES, fan cycles on and off at full volume).") -}} +<%= csv_table(< false) +OFF, supply fan off; air handler not operating. Old date? Note: (future) Taylor setback/setup control in effect, when implemented. +ON, supply fan runs, at varying volume according to TERMINAL demand (except if _ahFanCycles_ = YES, fan cycles on and off at full volume). +END +%> The following might be used to run an air handler between 8 AM and 5 PM: ahSched = select( (\$hour > 8 && \$hour <= 5), ON, default, OFF ); -{{ - member_table({ - "units": "", - "legal_range": "ON/OFF", - "default": "ON", - "required": "No", - "variability": "hourly" - }) -}} - -### ahFxVfFan +<%= member_table( +units: "", +legal_range: "ON/OFF", +default: "ON", +required: "No", +variability: "hourly") +%> -Type: _float_ +**ahFxVfFan=_float_** Fan flow rate multiplier for autosized fan(s). The default value (1.1) specifies 10% oversizing. -{{ - member_table({ - "units": "", - "legal_range": "x $\\ge$ 0", - "default": "1.1", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "x $\\ge$ 0", +default: "1.1", +required: "No", +variability: "constant") %> ## AIRHANDLER Supply Air Temperature Controller @@ -75,7 +66,8 @@ Fan flow rate multiplier for autosized fan(s). The default value (1.1) specifies Supply temperature setpoint numeric value OR\* choice of control method (WZ, CZ, RA, ZN, or ZN2): -{{ csv_table("_float_, A numeric value specifies the supply temperature setpoint. An expression can be used to make dependent on time, weather, etc. +<%= csv_table(< false) +_float_, A numeric value specifies the supply temperature setpoint. An expression can be used to make dependent on time, weather, etc. WZ, Warmest Zone: for cooling, sets the supply temperature setpoint each sub??hour so that the control zone (see*ahWzCzns*) requiring the coolest supply temperature can meet its load with its VAV damper 90% of the way from its minimum opening to its maximum, that is, at a flow of: _tuVfMn_ + .9(_tuVfMxC_ - \* tuVfMn\*). CZ, Coolest Zone: analogous to WZ, but for heating RA, Supply temperature setpoint value is controlled by return air temperature (this cannot be done with a CSE expression without lagging a subhour). See _ahTsRaMn_ and _ahTsRaMx_. @@ -83,8 +75,9 @@ ZN, Causes air handler to switch between heating, OFF, and cooling a , Supply temperature setpoint value when _ahFanCycles_ = YES is taken from _ahTsMn_ for cooling, from _ahTsMx_ for heating (actual temperatures expected to be limited by coil capacity since fan is running at full flow). When _ahFanCycles_ = NO, the setpoint is determined to allow meeting the load, as for WZ and CZ. , When the zone is calling for neither heat nor cold, the air handler shuts down, including stopping its fan(s), regardless of the _ahFanCycles_ value. ZN2, Causes air handler to switch between heating, cooling, and FAN ONLY operation as required by the load of a single zone. To model a constant volume system where the fan runs continuously, use ZN2 and set the terminal minimum flow (_tuVfMn_) equal to the maximum (_tuVfMxC_ and/or _tuVfMxH_). -, When _ahTsSp_ is ZN2, the supply temperature setpoint is determined to allow meeting the load, as for WZ and CZ, described above.") -}} +, When _ahTsSp_ is ZN2, the supply temperature setpoint is determined to allow meeting the load, as for WZ and CZ, described above. +END +%> Only when _ahTsSp_ is ZN or ZN2 does AIRHANDLER switches between heating and cooling supply temperatures according to demand. In other cases, there is but a single setpoint value or control method (RA, CZ, or WZ); if you want the control method or numeric value to change according to time of day or year, outside temperature, etc., your CSE input must contain an appropriate conditional expression for _ahTsSp_. @@ -92,28 +85,28 @@ Unless _ahTsSp_ is ZN or ZN2, the AIRHANDLER does not know whether it is heating Giving _ahTsSp_ is disallowed for an air handler with no economizer, no heat coil and no cooling coil. Such an AIRHANDLER object is valid as a ventilator; its supply temperature is not controlled. but rather determined by the outside temperature and/or the return air temperature. -{{ - member_table({ - "units": "^o^F", - "legal_range": "_number_, RA\*, WZ, CZ, ZN\*\*, ZN2\*\*,", - "default": "0", - "required": "Yes, if coil(s) or economizer present", - "variability": "hourly" - }) -}} +<%= member_table( +units: "^o^F", +legal_range: "_number_, RA\*, WZ, CZ, ZN\*\*, ZN2\*\*,", +default: "0", +required: "Yes, if coil(s) or economizer present", +variability: "hourly") +%> \* ahTsRaMn, ahTsRaMx, ahTsMn, and ahTsMx are _required_ input for this choice. \*\* only a single ZONE may be used with these choices. -{{ csv_table("**To Model**, **Use**, **Comments** +<%= csv_table(< true) +**To Model**, **Use**, **Comments** VAV heating _OR_ cooling system, _ahTsSp_ = _numeric expression, _ WZ, CZ, or RA, CSE models this most directly VAV system that both heats and cools (single duct), Use a conditional expression to change _ahTsSp_ between heating and cooling values on the basis of outdoor temperature, date, or some other condition., Also use expressions to disable the unwanted coil and change each zone's setpoints according to same as _ahTsSp_. For example, when heating, use _ahccSched_ = OFF and _tuTC _= 999; and when cooling, use _ahhcSched_ = OFF and _tuTH_ = -99. Dual duct heating cooling system, Use two AIRHANDLERs Single zone VAV system that heats or cools per zone thermostat, _ahTsSp_ = ZN2, Supply fan runs, at flow _tuVfMn_, even when neither heating nor cooling. Supply temp setpoint determined as for CZ or WZ. Single zone constant volume system that heats or cools per zone thermostat, e.g. PSZ., _ahTsSp_ = _ZN2_; _tuVfMn_ = _tuVfMxH_ = _tuVfMxC_, Supply fan circulates air even if neither heating nor cooling. Supply temp setpoint determined as for CZ or WZ. All _tuVf_'s same forces constant volume. -Single zone constant volume, fan cycling system that heats or cools per zone thermostat, e.g. PTAC, RESYS, or furnace., _ahTsSp_= ZN; _ahTsMx_ = heat supply temp setpoint; _ahTsMn_ = cool supply temp setpoint; _tuVfMn_= 0; tuVfMxH = tuVfMxC normally; _sfanVfDs_ >= max( _tuVfMxH, tuVfMxC)_ to minimize confusion about flow modeled., _AhFanCycles_ defaults to YES. Supply fan off when not heating or cooling. Flow when fan on is _tuVfMxH_ or _tuVfMxC_ as applicable (or _sfanVfDs \* sfanVfMxF_ if smaller).", True) -}} +Single zone constant volume, fan cycling system that heats or cools per zone thermostat, e.g. PTAC, RESYS, or furnace., _ahTsSp_= ZN; _ahTsMx_ = heat supply temp setpoint; _ahTsMn_ = cool supply temp setpoint; _tuVfMn_= 0; tuVfMxH = tuVfMxC normally; _sfanVfDs_ >= max( _tuVfMxH, tuVfMxC)_ to minimize confusion about flow modeled., _AhFanCycles_ defaults to YES. Supply fan off when not heating or cooling. Flow when fan on is _tuVfMxH_ or _tuVfMxC_ as applicable (or _sfanVfDs \* sfanVfMxF_ if smaller). +END +%> : Using AIRHANDLER to Model Various Systems @@ -121,57 +114,46 @@ Single zone constant volume, fan cycling system that heats or cools per zo extra para to permit page break after frame --> -### ahFanCycles - -Type: _choice_ +**ahFanCycles=_choice_** Determines whether the fan cycles with the zone thermostat. -{{ csv_table("YES, Supply fan runs only for fraction of the subhour that the zone requests heating or cooling. When running, supply fan runs at full flow (i.e. constant volume), as determined by the more limiting of the air handler and terminal specifications. Use with a single zone only. Not allowed with _ahTsSp_ = ZN2. -NO, Normal CSE behavior for simulating VAV systems with continuously running (or scheduled), variable flow supply fans. (For constant volume, fan always on modeling, use NO, and make _tuVfMn_ equal to _tuVfMxH/C_.)") -}} - -{{ - member_table({ - "units": "", - "legal_range": "YES, NO", - "default": "YES when _ahTsSp_=ZN, NO otherwise", - "required": "No", - "variability": "hourly" - }) -}} +<%= csv_table(< false) +YES, Supply fan runs only for fraction of the subhour that the zone requests heating or cooling. When running, supply fan runs at full flow (i.e. constant volume), as determined by the more limiting of the air handler and terminal specifications. Use with a single zone only. Not allowed with _ahTsSp_ = ZN2. +NO, Normal CSE behavior for simulating VAV systems with continuously running (or scheduled), variable flow supply fans. (For constant volume, fan always on modeling, use NO, and make _tuVfMn_ equal to _tuVfMxH/C_.) +END +%> -### ahTsMn +<%= member_table( +units: "", +legal_range: "YES, NO", +default: "YES when _ahTsSp_=ZN, NO otherwise", +required: "No", +variability: "hourly") +%> -Type: _float_ +**ahTsMn=_float_** Minimum supply temperature. Also used as cooling supply temperature setpoint value under _ahTsSp_ = ZN. -{{ - member_table({ - "units": "^o^F", - "legal_range": "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", - "default": "0^o^F", - "required": "Only for _ahTsSp_=RA", - "variability": "hourly" - }) -}} +<%= member_table( +units: "^o^F", +legal_range: "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", +default: "0^o^F", +required: "Only for _ahTsSp_=RA", +variability: "hourly") +%> -{{ - member_table({ - "units": "^o^F", - "legal_range": "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", - "default": "999^o^ F", - "required": "Only for _asTsSp_=RA; recommend giving for _ahTsSp_=ZN", - "variability": "hourly" - }) -}} +<%= member_table( +units: "^o^F", +legal_range: "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", +default: "999^o^ F", +required: "Only for _asTsSp_=RA; recommend giving for _ahTsSp_=ZN", +variability: "hourly") %> -### ahTsMx - -Type: _float_ +**ahTsMx=_float_** Maximum supply temperature. Also used as heating supply temperature setpoint value under _ahTsSp_ = ZN. @@ -183,84 +165,66 @@ Maximum supply temperature. Also used as heating supply temperature setpoint val Specify zones monitored to determine supply temperature setpoint value (control zones), under _ahTsSp_=WZ and CZ respectively. -{{ csv_table("_zone names_, A list of zone names, with commas between them. Up to 15 names may be given. +<%= csv_table(< false) +_zone names_, A list of zone names, with commas between them. Up to 15 names may be given. ALL_BUT, May be followed by a a comma and list of up to 14 zone names; all zones on air handler other than these are the control zones. -ALL, Indicates that all zones with terminals connected to the air handler are control zones.") -}} +ALL, Indicates that all zones with terminals connected to the air handler are control zones. +END +%> A comma must be entered between zone names and after the word ALL_BUT. -{{ - member_table({ - "units": "", - "legal_range": "_name(s) of ZONEs_ ALL ALL_BUT _zone Name(s)_", - "default": "ALL", - "required": "No", - "variability": "hourly" - }) -}} - -### ahTsDsC +<%= member_table( +units: "", +legal_range: "_name(s) of ZONEs_ ALL ALL_BUT _zone Name(s)_", +default: "ALL", +required: "No", +variability: "hourly") %> -Type: _float_ +**ahTsDsC=_float_** Cooling design supply temperature, for sizing coil vs fan. -{{ - member_table({ - "units": "^o^F", - "legal_range": "x $>$ 0", - "default": "_ahTsMn_", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( +units: "^o^F", +legal_range: "x $>$ 0", +default: "_ahTsMn_", +required: "No", +variability: "hourly") %> -### ahTsDsH - -Type: _float_ +**ahTsDsH=_float_** Heating design supply temperature, for sizing coil vs fan. -{{ - member_table({ - "units": "^o^F", - "legal_range": "x $>$ 0", - "default": "_ahTsMx_", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( +units: "^o^F", +legal_range: "x $>$ 0", +default: "_ahTsMx_", +required: "No", +variability: "hourly") %> **ahCtu=_terminal name_** Terminal monitored to determine whether to heat or cool under ZN and ZN2 supply temperature setpoint control. Development aid feature; believe there is no need to give this since ahTsSp = ZN or ZN2 should only be used with one zone. -{{ - member_table({ - "units": "", - "legal_range": "name of a TERMINAL", - "default": "AIRHANDLER's TERMINAL, if only one", - "required": "If _ahTsSp_ = ZN with more than 1 TERMINAL", - "variability": "hourly" - }) -}} +<%= member_table( +units: "", +legal_range: "name of a TERMINAL", +default: "AIRHANDLER's TERMINAL, if only one", +required: "If _ahTsSp_ = ZN with more than 1 TERMINAL", +variability: "hourly") %> _AhTsRaMn_ and _ahTsRaMx_ are used when _ahTsSp_ is RA. -### ahTsRaMn - -Type: _float_ +**ahTsRaMn=_float_** Return air temperature at which the supply temperature setpoint is at the _maximum_ supply temperature, _ahTsMx_. -### ahTsRaMx - -Type: _float_ +**ahTsRaMx=_float_** Return air temperature at which the supply temperature setpoint is at the _minimum_ supply temperature, _ahTsMn_. @@ -268,137 +232,99 @@ When the return air temperature is between *ahTsRaMn*and _ahTsRaMx_, the supply If return air moves outside the range _ahTsRaMn_ to _ahTsRaMx_, the supply temperature setpoint does not change further. -{{ - member_table({ - "units": "^o^F", - "legal_range": "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", - "default": "_none_", - "required": " Only for _ahTsSp_=RA", - "variability": "hourly" - }) -}} +<%= member_table( +units: "^o^F", +legal_range: "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", +default: "_none_", +required: " Only for _ahTsSp_=RA", +variability: "hourly") %> ## AIRHANDLER Supply fan All AIRHANDLERs have supply fans. -### sfanType - -Type: _choice_ +**sfanType=_choice_** Supply fan type/position. A BLOWTHRU fan is located in the air path before the coils; a DRAWTHRU fan is after the coils. -{{ - member_table({ - "units": "", - "legal_range": "DRAWTHRU, BLOWTHRU", - "default": "DRAWTHRU", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "DRAWTHRU, BLOWTHRU", +default: "DRAWTHRU", +required: "No", +variability: "constant") %> -### sfanVfDs - -Type: _float_ +**sfanVfDs=_float_** Design or rated (volumetric) air flow at rated pressure. Many fans will actually blow a larger volume of air at reduced pressure: see sfanVfMxF (next). -{{ - member_table({ - "units": "cfm", - "legal_range": "_AUTOSIZE_ or _x_ $\\ge$ 0", - "default": "_none_", - "required": "Yes", - "variability": "constant" - }) -}} - -### sfanVfMxF +<%= member_table( +units: "cfm", +legal_range: "_AUTOSIZE_ or _x_ $\\ge$ 0", +default: "_none_", +required: "Yes", +variability: "constant") %> -Type: _float_ +**sfanVfMxF=_float_** Overrun factor: maximum factor by which fan will exceed rated flow (at reduced pressure, not explicitly modeled). CSE delivers flows demanded by terminals until total flow at supply fan reaches sfanVfDs \* sfanVsMxF, then reduces maximum flows to terminals, keeping them in proportion to terminal design flows, to keep total flow at that value. We recommend giving 1.0 to eliminate overrun in constant volume modeling. -{{ - member_table({ - "units": "", - "legal_range": "_x_ $\\ge$ 1.0", - "default": "1.3", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "_x_ $\\ge$ 1.0", +default: "1.3", +required: "No", +variability: "constant") %> -### sfanPress - -Type: *float* +**sfanPress*=float*** Design or rated pressure. The work done by the fan is computed as the product of this pressure and the current flow, except that the flow is limited to sfanVfDs. That is, in overrun (see _sfanVfMxF_) it is assumed that large VAV terminal damper openings allow the pressure to drop in proportion to the flow over rated. This work is added to the air as heat at the fan, and is termed "fan heat". Setting sfanPress to zero will eliminate simulated fan heat for theoretical simulation of a coil only. -{{ - member_table({ - "units": "inches H~2~O", - "legal_range": "_x_ $\\gt$ 0", - "default": "3", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "inches H~2~O", +legal_range: "_x_ $\\gt$ 0", +default: "3", +required: "No", +variability: "constant") %> Prior text: At most, one of the next two items may be given: in combination with sfanVfDs and sfanPress, either is sufficient to compute the other. SfanCurvePy is then used to compute the mechanical power at the fan shaft at partial loads; sfanMotEff allows determining the electrical input from the shaft power. New possible text (after addition of sfanElecPwr): Only one of sfanElecPwr, sfanEff, and sfanShaftBhp may be given: together with sfanVfDs and xfanPress, any one is sufficient for CSE to determine the others and to compute the fan heat contribution to the air stream. -### sfanElecPwr - -Type: _float_ +**sfanElecPwr=_float_** Fan input power per unit air flow (at design flow and pressure). -{{ - member_table({ - "units": "W/cfm", - "legal_range": "_x_ $\\gt$ 0", - "default": "derived from sfanEff and sfanShaftBhp", - "required": "If sfanEff and sfanShaftBhp not present", - "variability": "constant" - }) -}} - -### sfanEff +<%= member_table( +units: "W/cfm", +legal_range: "_x_ $\\gt$ 0", +default: "derived from sfanEff and sfanShaftBhp", +required: "If sfanEff and sfanShaftBhp not present", +variability: "constant") %> -Type: _float_ +**sfanEff=_float_** Fan efficiency at design flow and pressure, as a fraction. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "derived from _sfanShaftBhp_ if given, else 0.65", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "derived from _sfanShaftBhp_ if given, else 0.65", +required: "No", +variability: "constant") %> -### sfanShaftBhp - -Type: _float_ +**sfanShaftBhp=_float_** Fan shaft brake horsepower at design flow and pressure. -{{ - member_table({ - "units": "bhp", - "legal_range": "_x_ $\\gt$ 0", - "default": "derived from _sfanEff_.", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "bhp", +legal_range: "_x_ $\\gt$ 0", +default: "derived from _sfanEff_.", +required: "No", +variability: "constant") %> **sfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** @@ -415,181 +341,135 @@ where: If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "_0, 1, 0, 0, 0 (linear)_", - "required": "No", - "variability": "constant" - }) -}} - -### sfanMotEff +<%= member_table( +units: "", +legal_range: "", +default: "_0, 1, 0, 0, 0 (linear)_", +required: "No", +variability: "constant") %> -Type: _float_ +**sfanMotEff=_float_** Motor/drive efficiency. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "0.9", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.9", +required: "No", +variability: "constant") %> -### sfanMotPos - -Type: _choice_ +**sfanMotPos=_choice_** Motor/drive position: determines disposition of fan motor heat (input energy in excess of work done by fan; the work done by the fan is the "fan heat", always added to air flow). -{{ csv_table("IN_FLOW, add fan motor heat to supply air at the fan position. +<%= csv_table(< false) +IN_FLOW, add fan motor heat to supply air at the fan position. IN_RETURN, add fan motor heat to the return air flow. -EXTERNAL, discard fan motor heat") -}} - -### sfanMtr +EXTERNAL, discard fan motor heat +END +%> -Type: _mtrName_ +**sfanMtr=_mtrName_** Name of meter, if any, to record energy used by supply fan. End use category used is "Fan". -{{ - member_table({ - "units": "", - "legal_range": "_name of a METER_", - "default": "_not recorded_", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "_name of a METER_", +default: "_not recorded_", +required: "No", +variability: "constant") %> ## AIRHANDLER Return/Relief fan A return/relief fan is optional. Its presence is established by setting _rfanType_ to a value other than NONE. For additional information on the return/relief fan members, refer to the description of the corresponding supply fan member above. -### rfanType - -Type: _choice_ +**rfanType=_choice_** relief fan type/position. -{{ csv_table("RETURN, fan is at air handler; all return air passes through it. +<%= csv_table(< false) +RETURN, fan is at air handler; all return air passes through it. RELIEF, fan is in exhaust path. Air being exhausted to the outdoors passes through fan; return air being recirculated does not pass through it. -NONE, no return/relief fan in this AIRHANDLER.") -}} - -{{ - member_table({ - "units": "", - "legal_range": "NONE, RETURN, RELIEF", - "default": "NONE", - "required": "Yes, if fan present", - "variability": "constant" - }) -}} +NONE, no return/relief fan in this AIRHANDLER. +END +%> -### rfanVfDs +<%= member_table( +units: "", +legal_range: "NONE, RETURN, RELIEF", +default: "NONE", +required: "Yes, if fan present", +variability: "constant") %> -Type: _float_ +**rfanVfDs=_float_** design or rated (volumetric) air flow. -{{ - member_table({ - "units": "cfm", - "legal_range": "_AUTOSIZE_ or _x_ $\\gt$ 0", - "default": "_sfanVfDs - oaVfDsMn_", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "cfm", +legal_range: "_AUTOSIZE_ or _x_ $\\gt$ 0", +default: "_sfanVfDs - oaVfDsMn_", +required: "No", +variability: "constant") %> -### rfanVfMxF - -Type: _float_ +**rfanVfMxF=_float_** factor by which fan will exceed design flow (at reduced pressure). -{{ - member_table({ - "units": "", - "legal_range": "_x_ $\\ge$ 1.0", - "default": "1.3", - "required": "No", - "variability": "constant" - }) -}} - -### rfanPress +<%= member_table( +units: "", +legal_range: "_x_ $\\ge$ 1.0", +default: "1.3", +required: "No", +variability: "constant") %> -Type: _float_ +**rfanPress=_float_** design or rated pressure. -{{ - member_table({ - "units": "inches H~2~O", - "legal_range": "_x_ $\\gt$ 0", - "default": "0.75", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "inches H~2~O", +legal_range: "_x_ $\\gt$ 0", +default: "0.75", +required: "No", +variability: "constant") %> _At most, one of the next three?? items may be defined: ??_ rework re rfanElecPwr -### rfanElecPwr - -Type: _float_ +**rfanElecPwr=_float_** Fan input power per unit air flow (at design flow and pressure). -{{ - member_table({ - "units": "W/cfm", - "legal_range": "_x_ $>$ 0", - "default": "derived from rfanEff and rfanShaftBhp", - "required": "If rfanEff and rfanShaftBhp not present", - "variability": "constant" - }) -}} - -### rfanEff +<%= member_table( +units: "W/cfm", +legal_range: "_x_ $>$ 0", +default: "derived from rfanEff and rfanShaftBhp", +required: "If rfanEff and rfanShaftBhp not present", +variability: "constant") %> -Type: _float_ +**rfanEff=_float_** Fan efficiency at design flow and pressure. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "derived from _rfanShaftBhp_ if given, else 0.65", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "derived from _rfanShaftBhp_ if given, else 0.65", +required: "No", +variability: "constant") %> -### rfanShaftBhp - -Type: _float_ +**rfanShaftBhp=_float_** Fan shaft brake horsepower at design flow and pressure. -{{ - member_table({ - "units": "bhp", - "legal_range": "_x_ $\\gt$ 0", - "default": "derived from _rfanEff_", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "bhp", +legal_range: "_x_ $\\gt$ 0", +default: "derived from _rfanEff_", +required: "No", +variability: "constant") %> **rfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** @@ -606,63 +486,45 @@ where: If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "_0, 1, 0, 0, 0 (linear)_", - "required": "No", - "variability": "constant" - }) -}} - -### rfanMotEff +<%= member_table( +units: "", +legal_range: "", +default: "_0, 1, 0, 0, 0 (linear)_", +required: "No", +variability: "constant") %> -Type: _float_ +**rfanMotEff=_float_** Motor/drive efficiency. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "0.9", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.9", +required: "No", +variability: "constant") %> -### rfanMotPos - -Type: _choice_ +**rfanMotPos=_choice_** Motor/drive position. -{{ - member_table({ - "units": "", - "legal_range": "IN_FLOW, EXTERNAL", - "default": "IN_FLOW", - "required": "No", - "variability": "constant" - }) -}} - -### rfanMtr +<%= member_table( +units: "", +legal_range: "IN_FLOW, EXTERNAL", +default: "IN_FLOW", +required: "No", +variability: "constant") %> -Type: _mtrName_ +**rfanMtr=_mtrName_** Name of meter, if any, to record power consumption of this return fan. May be same or different from meter used for other fans and coils in this and other air handlers. "Fan" end use category is used. -{{ - member_table({ - "units": "", - "legal_range": "_name of a METER_", - "default": "_not recorded_", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "_name of a METER_", +default: "_not recorded_", +required: "No", +variability: "constant") %> ## AIRHANDLER Heating coil/Modeling Furnaces @@ -684,97 +546,76 @@ The next four members apply to all heat coil types, except as noted. To specify that an AIRHANDLER has a heating coil and thus heating capability, give an _ahhcType_ other than NONE. -### ahhcType - -Type: _choice_ +**ahhcType=_choice_** Coil type choice: -{{ csv_table("ELECTRIC, electric resistance heat: 100% efficient, can deliver its full rated capacity at any temperature and flow. +<%= csv_table(< false) +ELECTRIC, electric resistance heat: 100% efficient, can deliver its full rated capacity at any temperature and flow. HW, hot water coil, supplied by a HEATPLANT object. GAS or OIL, 'coil' type that models heating portion of a forced hot air furnace. Furnace 'coil' model uses inputs for full-load efficiency and part-load power input; model must be completed with appropriate auxiliaries, _ahTsSp_, etc. See notes above. , GAS and OIL are the same here -- the differences between gas- and oil-fired furnaces is in the auxiliaries (pilot vs. draft fan, etc.), which you specify separately. AHP, heating function of an air source heat pump. -NONE, AIRHANDLER has no heat coil, thus no heating capability.") -}} +NONE, AIRHANDLER has no heat coil, thus no heating capability. +END +%> -{{ - member_table({ - "units": "", - "legal_range": "ELECTRIC, HW, GAS OIL, AHP, NONE", - "default": "NONE", - "required": "Yes, if coil is present", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "ELECTRIC, HW, GAS OIL, AHP, NONE", +default: "NONE", +required: "Yes, if coil is present", +variability: "constant") %> -### ahhcSched - -Type: _choice_ +**ahhcSched=_choice_** Heat coil schedule; choice of AVAIL or OFF, hourly variable. Use an appropriate ahhcSched expression if heat coil is to operate only at certain times of the day or year or only under certain weather conditions, etc. -{{ csv_table("AVAIL, heat coil available: will operate as necessary to heat supply air to supply temperature setpoint, up to the coil's capacity. -OFF, coil will not operate, no matter how cold supply air is. A HW coil should be scheduled off whenever its HEATPLANT is scheduled off (_hpSched_) to insure against error messages.") -}} - -{{ - member_table({ - "units": "", - "legal_range": "AVAIL, OFF", - "default": "AVAIL", - "required": "No", - "variability": "hourly" - }) -}} +<%= csv_table(< false) +AVAIL, heat coil available: will operate as necessary to heat supply air to supply temperature setpoint, up to the coil's capacity. +OFF, coil will not operate, no matter how cold supply air is. A HW coil should be scheduled off whenever its HEATPLANT is scheduled off (_hpSched_) to insure against error messages. +END +%> -### ahhcCapTRat +<%= member_table( +units: "", +legal_range: "AVAIL, OFF", +default: "AVAIL", +required: "No", +variability: "hourly") %> -Type: _float_ +**ahhcCapTRat=_float_** Total heating (output) capacity. For an ELECTRIC, AHP, GAS, or OIL coil, this capacity is always available. For an HW heating coil, when the total heat being requested from the coil's HEATPLANT would overload the HEATPLANT, the capacity of all HW coils connected to the plant (in TERMINALs as well as AIRHANDLERs) is reduced proportionately until the requested total heat is within the HEATPLANT's capacity. For AHP, this value represents the AHRI rated capacity at 47 ^o^F outdoor temperature. -{{ - member_table({ - "units": "Btuh", - "legal_range": "_AUTOSIZE_ or _x_ $\\ge$ 0", - "default": "_none_", - "required": "Yes, if coil present", - "variability": "hourly" - }) -}} +<%= member_table( +units: "Btuh", +legal_range: "_AUTOSIZE_ or _x_ $\\ge$ 0", +default: "_none_", +required: "Yes, if coil present", +variability: "hourly") %> -### ahhcFxCap - -Type: _float_ +**ahhcFxCap=_float_** Capacity sizing multiplier for autoSized heating coils. The default value (1.1) specifies 10% oversizing. -{{ - member_table({ - "units": "", - "legal_range": "x $>$ 0", - "default": "1.1", - "required": "No", - "variability": "constant" - }) -}} - -### ahhcMtr +<%= member_table( +units: "", +legal_range: "x $>$ 0", +default: "1.1", +required: "No", +variability: "constant") %> -Type: _mtrName_ +**ahhcMtr=_mtrName_** Name of meter to accumulate energy use by this heat coil. The input energy used by the coil is accumulated in the end use category "Htg"; for a heat pump, the energy used by the supplemental resistance heaters (regular and defrost) is accumulated under the category "hp". Not allowed when\*ahhcType\* is HW, as an HW coil's energy comes from its HEATPLANT, and the HEATPLANT's BOILERs accumulate input energy to meters. -{{ - member_table({ - "units": "", - "legal_range": "_name of a METER_", - "default": "_not recorded_", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "_name of a METER_", +default: "_not recorded_", +required: "No", +variability: "constant") %> The following input is used only when _ahhcType_ is HW: @@ -782,51 +623,38 @@ The following input is used only when _ahhcType_ is HW: Name of HEATPLANT supporting hot water coil. -{{ - member_table({ - "units": "", - "legal_range": "_name of a HEATPLANT_", - "default": "_none_", - "required": "if _ahhcType_ is HW", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "_name of a HEATPLANT_", +default: "_none_", +required: "if _ahhcType_ is HW", +variability: "constant") %> The following inputs are used only for furnaces (_ahhcType_ = GAS or OIL). One of the next two items, but not both, **must** be given for furnaces: -### ahhcEirR - -Type: _float_ +**ahhcEirR=_float_** Rated energy input ratio (input energy/output energy) at full power. -{{ - member_table({ - "units": "", - "legal_range": "_x_ $\\ge$ 1", - "default": "_none_", - "required": "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", - "variability": "hourly" - }) -}} - -### ahhcEffR +<%= member_table( +units: "", +legal_range: "_x_ $\\ge$ 1", +default: "_none_", +required: "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", +variability: "hourly") %> -Type: _float_ +**ahhcEffR=_float_** Rated efficiency (output energy/input energy; 1/ahhcEirR) at full power -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "_none_", - "required": "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", - "variability": "hourly" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "_none_", +required: "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", +variability: "hourly") %> **ahhcPyEi=$k_0$, $k_1$, $k_2$, $k_3$** @@ -842,19 +670,14 @@ $$\text{pyEi}(\text{plrAv}) = 0.01861 + 1.094209 \cdot \textbf{plrAv} - 0.112819 Note that the value of this polynomial adjusts the energy input, not the energy input ratio, for part load operation. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "0.01861, 1.094209, -0.112819, 0.0.", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "", +default: "0.01861, 1.094209, -0.112819, 0.0.", +required: "No", +variability: "constant") %> -### ahhcStackEffect - -Type: _float_ +**ahhcStackEffect=_float_** Fraction of unused furnace capacity that must be used to make up for additional infiltration caused by stack effect of a hot flue when the (indoor) furnace is NOT running, only in subhours when furnace runs PART of the subhour, per DOE2 model. @@ -877,175 +700,121 @@ The factor "`sqrt(200.-@Top.tDbO)`" represents the volume of infiltrated air tha The divisor "`/ (10*68*sqrt(200))`" is to make the value 0.1 when tDbO is 0, that is, to make the stack effect loss use 10% of unused load when it is 0 degrees out. The actual modeling engineer must know enough about his building to be able to estimate the additional infiltration load at some temperature. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "0", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0", +required: "No", +variability: "hourly") %> The following heat coil input members, beginning with _ahp-_, are used when modeling the heating function of an air source heat pump with the air handler heat coil, that is, when _ahhcType_= AHP is given. Also, see the "AIRHANDLER Crankcase Heater" section with regard to specifying the heat pump's crankcase heater. -### ahpCap17 - -Type: _float_ +**ahpCap17=_float_** AHRI steady state (continuous operation) rated capacity at 70 degrees F indoor (return) air temp, and 17 degrees F outdoor temp, respectively. These values reflect no cycling, frost, or defrost degradation. To help you find input errors, the program issues an error message if ahpCap17 >= ahhcCapTRat. -{{ - member_table({ - "units": "Btuh", - "legal_range": "_x_ $\\gt$ 0", - "default": "_none_", - "required": "Yes, for AHP coil", - "variability": "constant" - }) -}} +<%= member_table( +units: "Btuh", +legal_range: "_x_ $\\gt$ 0", +default: "_none_", +required: "Yes, for AHP coil", +variability: "constant") %> -### ahpCapRat1747 - -Type: _float_ +**ahpCapRat1747=_float_** The ratio of AHRI steady state (continuous operation) rated capacities at 17 and 47 degrees F outdoor temp. This is used to determine _ahpCap35_ when _ahhcCapTRat_ is AUTOSIZEd. -{{ - member_table({ - "units": "", - "legal_range": "_x_ $\\gt$ 0", - "default": "0.6184", - "required": "No", - "variability": "constant" - }) -}} - -### ahpCapRat9547 +<%= member_table( +units: "", +legal_range: "_x_ $\\gt$ 0", +default: "0.6184", +required: "No", +variability: "constant") %> -Type: _float_ +**ahpCapRat9547=_float_** Ratio of ahccCapTRat to ahhcCapTRat. This ratio is used for defaulting of AUTOSIZEd heat pump heating and cooling capacities such that they have consistent values as is required given that a heat pump is a single device. If not given, ahpCapRat9547 is determined during calculations using the relationship ahccCapTRat = 0.98 \* ahhcCapTRat + 180 (derived via correlation of capacities of a set of real units). -{{ - member_table({ - "units": "", - "legal_range": "x $>$ 0", - "default": "See above", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "x $>$ 0", +default: "See above", +required: "No", +variability: "constant") %> -### ahpCap35 - -Type: _float_ +**ahpCap35=_float_** AHRI steady state (continuous operation) rated capacity at 35 F outdoor temp, reflecting frost buildup and defrost degradation but no cycling. Unlikely to be available for input; if not given, will be defaulted to _ahpFd35Df_ (next description) times a value determined by linear interpolation between the given _ahpCap17_ and _ahhcCapTRat_ values. If _ahpCap35_ is given, CSE will issue an error message if it is greater than value determined by linear interpolation between _ahpCap17_ and _ahhcCapTRat_. -{{ - member_table({ - "units": "Btuh", - "legal_range": "_x_ $\\gt$ 0", - "default": "from ahpFd35Df", - "required": "No", - "variability": "constant" - }) -}} - -### ahpFd35Df +<%= member_table( +units: "Btuh", +legal_range: "_x_ $\\gt$ 0", +default: "from ahpFd35Df", +required: "No", +variability: "constant") %> -Type: _float_ +**ahpFd35Df=_float_** Default frost/defrost degradation factor at 35 F: reduction of output at unchanged input, due to defrosting and due to frost on outdoor coil. Used in determining default value for _ahpCap35_ (preceding description); not used if _ahpCap35_ is given. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "0.85", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.85", +required: "No", +variability: "constant") %> -### ahpCapIa - -Type: _float_ +**ahpCapIa=_float_** Capacity correction factor for indoor (return) air temperature, expressed as a fraction reduction in capacity per degree above 70F. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "0.004", - "required": "No", - "variability": "constant" - }) -}} - -### ahpCapSupH +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.004", +required: "No", +variability: "constant") %> -Type: _float_ +**ahpCapSupH=_float_** Output capacity of the supplemental reheat coil used when heat pump alone cannot meet the load or to offset the defrost cooling load. Energy consumed by this heater is accumulated in category "HPBU" of ahhcMeter (whereas energy consumption of the heat pump compressor is accumulated under category "Htg"). -{{ - member_table({ - "units": "Btu/hr", - "legal_range": "_x_ $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} - -### ahpEffSupH +<%= member_table( +units: "Btu/hr", +legal_range: "_x_ $\\ge$ 0", +default: "0", +required: "No", +variability: "constant") %> -Type: _float_ +**ahpEffSupH=_float_** Efficiency of the supplemental reheat coil. Use values other than the default for gas supplemental heaters. -{{ - member_table({ - "units": "", - "legal_range": "_x_ $\\gt$ 0", - "default": "1.0", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( +units: "", +legal_range: "_x_ $\\gt$ 0", +default: "1.0", +required: "No", +variability: "hourly") %> -### ahpSupHMtr - -Type: _mtrName_ +**ahpSupHMtr=_mtrName_** Specifies a meter for recording supplemental heater energy use. End use category "HPBU" is used. -{{ - member_table({ - "units": "", - "legal_range": "_name of a METER_", - "default": "_not recorded_", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "_name of a METER_", +default: "_not recorded_", +required: "No", +variability: "constant") %> The next seven inputs specify frost buildup and defrosting and their effect on capacity. -### ahpTFrMn - -Type: _float_ - -### ahpTFrMx - -Type: _float_ +**ahpTFrMn=_float_** -### ahpTFrPk +**ahpTFrMx=_float_** -Type: _float_ +**ahpTFrPk=_float_** Lowest, highest, and peak temperatures for frost buildup and defrost effects. Capacity reduction due to frost and defrosting consists of a component due to frost buildup on the outdoor coil, plus a component due to lost heating during the time the heat pump is doing reverse cycle defrosting (heating the outdoor coil to melt off the frost, which cools the indoor coil). The effects of Frost Buildup and of time spent defrosting are computed for different temperature ranges as follows: @@ -1063,23 +832,16 @@ In other words, the curve of capacity loss due to frost buildup follows straight An error will occur unless _ahpTFrMn_ < _ahpTFrPk_ < _ahpTFrMx_ and _ahpTFrMn_ < 35 < *ahpTFrMx*. -{{ - member_table({ - "units": "^o^F", - "legal_range": "_x_ $\\gt$ 0", - "default": "_ahpTFrMn_: 17, _ahpTFrMx_: 47, _ahpTFrPk_: 42", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "^o^F", +legal_range: "_x_ $\\gt$ 0", +default: "_ahpTFrMn_: 17, _ahpTFrMx_: 47, _ahpTFrPk_: 42", +required: "No", +variability: "constant") %> -### ahpDfrFMn +**ahpDfrFMn=_float_** -Type: _float_ - -### ahpDfrFMx - -Type: _float_ +**ahpDfrFMx=_float_** Minimum and maximum fraction of time spent in reverse cycle defrost cooling. @@ -1097,139 +859,97 @@ During the fraction of the time spent defrosting, the heat pump's input remains The program will issue an error message if _ahpDfrFMx_ $\le$ _ahpDfrFMn_. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "_ahpDfrFMn_: .0222, (2 minutes/90 minutes), _ahpDfrFMx_:.0889, (8 minutes / 90 minutes)", - "required": "No", - "variability": "constant" - }) -}} - -### ahpDfrCap +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "_ahpDfrFMn_: .0222, (2 minutes/90 minutes), _ahpDfrFMx_:.0889, (8 minutes / 90 minutes)", +required: "No", +variability: "constant") %> -Type: _float_ +**ahpDfrCap=_float_** Cooling capacity (to air handler supply air) during defrosting. Program separately computes the lost heating capacity during defrosting, but effects of switchover transient should be included in _ahpDfrCap_. -{{ - member_table({ - "units": "Btuh", - "legal_range": "_x_ $\\neq$ 0", - "default": "2 $\\cdot$ _ahpCap17_", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "Btuh", +legal_range: "_x_ $\\neq$ 0", +default: "2 $\\cdot$ _ahpCap17_", +required: "No", +variability: "constant") %> -### ahpTOff +**ahpTOff=_float_** -Type: _float_ - -### ahpTOn - -Type: _float_ +**ahpTOn=_float_** Heat pump low temperature cutout setpoints. Heat pump is disabled (only the supplemental resistance heater operates) when outdoor temperature falls below _ahpTOff_, and is re-enabled when temperature rises above _ahpTOn_. Different values may be given to simulate thermostat differential. _ahpTOff_ must be $\le$ _ahpTOn_; equal values are accepted. -{{ - member_table({ - "units": "^o^F", - "legal_range": "", - "default": "_ahpTOff_: 5, _ahpTOn_: 12", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "^o^F", +legal_range: "", +default: "_ahpTOff_: 5, _ahpTOn_: 12", +required: "No", +variability: "constant") %> The next four inputs specify the heating power input for an air source heat pump: -### ahpCOP47 - -Type: _float_ - -### ahpCOP17 +**ahpCOP47=_float_** -Type: _float_ +**ahpCOP17=_float_** Steady state (full power, no cycling) coeffient of performance for compressor and crankcase heater at 70 degrees F indoor (return) air temp and 47 and 17 degrees F outdoor temp, respectively. -{{ - member_table({ - "units": "kW", - "legal_range": "_x_ $\\gt$ 0", - "default": "_none_", - "required": "Yes, for AHP coil", - "variability": "constant" - }) -}} +<%= member_table( +units: "kW", +legal_range: "_x_ $\\gt$ 0", +default: "_none_", +required: "Yes, for AHP coil", +variability: "constant") %> -### ahpInIa - -Type: _float_ +**ahpInIa=_float_** Indoor (return) air temp power input correction factor: fraction increase in steady-state input per degree above 70 F, or decrease below 70F. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "0.004", - "required": "No", - "variability": "constant" - }) -}} - -### ahpCd +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.004", +required: "No", +variability: "constant") %> -Type: _float_ +**ahpCd=_float_** AHRI cycling degradation coefficient: ratio of fraction drop in system coefficient of performance (COP) to fraction drop in capacity when cycling, from steady-state values, in AHRI 47 F cycling performance tests. A value of .25 means that if the heat pump is cycled to drop its output to 20% of full capacity (i.e. by the fraction .8), its COP will drop by .8 \* .25 = .2. Here COP includes all energy inputs: compressor, crankcase heater, defrost operation, etc. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "0.25", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.25", +required: "No", +variability: "constant") %> The following four air handler heat coil members allow specification of auxiliary input power consumption associated with the heat coil (or furnace) under the indicated conditions. The single description box applies to all four. -### ahhcAux - -Type: _float_ +**ahhcAux=_float_** Auxiliary energy used by the heating coil. -{{ - member_table({ - "units": "Btu/hr", - "legal_range": "_x_ $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( +units: "Btu/hr", +legal_range: "_x_ $\\ge$ 0", +default: "0", +required: "No", +variability: "hourly") %> -### ahhcAuxMtr - -Type: _mtrName_ +**ahhcAuxMtr=_mtrName_** Specifies a meter for recording auxiliary energy use. End use category "Aux" is used. -{{ - member_table({ - "units": "", - "legal_range": "_name of a METER_", - "default": "_not recorded_", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "_name of a METER_", +default: "_not recorded_", +required: "No", +variability: "constant") %> ## AIRHANDLER Cooling coil @@ -1237,241 +957,182 @@ A cooling coil is an optional device that remove heat and humidity from the air The following five members are used for all cool coil types except as noted. Presence of a cool coil in the AIRHANDLER is indicated by giving an _ahccType value_ other than NONE. -### ahccType - -Type: *choice* +**ahccType*=choice*** Cool coil type choice: -{{ csv_table("ELECTRIC, Testing artifice: removes heat at 100% efficiency up to rated capacity at any flow and temperature; removes no humidity. Use in research runs to isolate effects of coil models from other parts of the CSE program. +<%= csv_table(< false) +ELECTRIC, Testing artifice: removes heat at 100% efficiency up to rated capacity at any flow and temperature; removes no humidity. Use in research runs to isolate effects of coil models from other parts of the CSE program. CHW, CHilled Water coil, using a cold water from a COOLPLANT. DX, Direct Expansion coil, with dedicated compressor and condenser modeled integrally. -NONE, AIRHANDLER has no cooling coil and no cooling capability.") -}} +NONE, AIRHANDLER has no cooling coil and no cooling capability. +END +%> -{{ - member_table({ - "units": "", - "legal_range": "ELECTRIC, DX, CHW, NONE", - "default": "NONE", - "required": "Yes, if coil present", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "ELECTRIC, DX, CHW, NONE", +default: "NONE", +required: "Yes, if coil present", +variability: "constant") %> -### ahccSched - -Type: *choice* +**ahccSched*=choice*** Cooling coil schedule choice, hourly variable. Use a suitable CSE expression for ahccSched if cooling coil is to operate only at certain times, only in hot weather, etc. -{{ csv_table("AVAIL, Cooling coil will operate as necessary (within its capacity) to cool the supply air to the supply temperature setpoint. -OFF, Cooling coil will not operate no matter how hot the supply air is. To avoid error messages, a CHW coil should be scheduled OFF whenever its COOLPLANT is scheduled OFF.") -}} - -{{ - member_table({ - "units": "", - "legal_range": "AVAIL, OFF", - "default": "AVAIL", - "required": "No", - "variability": "constant" - }) -}} +<%= csv_table(< false) +AVAIL, Cooling coil will operate as necessary (within its capacity) to cool the supply air to the supply temperature setpoint. +OFF, Cooling coil will not operate no matter how hot the supply air is. To avoid error messages, a CHW coil should be scheduled OFF whenever its COOLPLANT is scheduled OFF. +END +%> -### ahccCapTRat +<%= member_table( +units: "", +legal_range: "AVAIL, OFF", +default: "AVAIL", +required: "No", +variability: "constant") %> -Type: _float_ +**ahccCapTRat=_float_** Total rated capacity of coil: sum of its "sensible" (heat-removing) and "latent" (moisture removing) capacities. Not used with CHW coils, for which capacity is implicitly specified by water flow (ahccGpmDs*) and transfer unit (*ahccNtuoDs\* and _ahccNtuiDs_) inputs, described below. For coil specification conditions (a.k.a. rating conditions or design conditions), see _ahccDsTDbEn_, _ahccDsTWbEn_, *ahccDsTDbCnd*and *ahccVfR*below (see index). -{{ - member_table({ - "units": "Btuh", - "legal_range": "_AUTOSIZE_ or _x_ $>$ 0", - "default": "_none_", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( +units: "Btuh", +legal_range: "_AUTOSIZE_ or _x_ $>$ 0", +default: "_none_", +required: "Yes", +variability: "constant") %> -### ahccCapSRat - -Type: _float_ +**ahccCapSRat=_float_** Sensible (heat-removing) rated capacity of cooling coil. Not used with CHW coils. -{{ - member_table({ - "units": "Btuh", - "legal_range": "_x_ $>$ 0", - "default": "_none_", - "required": "Yes", - "variability": "constant" - }) -}} - -### ahccSHRRat +<%= member_table( +units: "Btuh", +legal_range: "_x_ $>$ 0", +default: "_none_", +required: "Yes", +variability: "constant") %> -Type: _float_ +**ahccSHRRat=_float_** Rated sensible heat ratio (_ahccCapSRat_/_ahccCapTRat_) for cooling coil. Default based on correlation to _ahccVfRperTon_. Not used with CHW coils. -{{ - member_table({ - "units": "", - "legal_range": "x $>$ 0", - "default": "based on _ahccVfRperTon_", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "x $>$ 0", +default: "based on _ahccVfRperTon_", +required: "No", +variability: "constant") %> -### ahccFxCap - -Type: _float_ +**ahccFxCap=_float_** Capacity sizing multiplier for autoSized cooling coils. The default value (1.1) specifies 10% oversizing. -{{ - member_table({ - "units": "", - "legal_range": "x $>$ 0", - "default": "1.1", - "required": "No", - "variability": "constant" - }) -}} - -### ahccMtr +<%= member_table( +units: "", +legal_range: "x $>$ 0", +default: "1.1", +required: "No", +variability: "constant") %> -Type: _mtrName_ +**ahccMtr=_mtrName_** Name of meter, if any, to record energy use of air handler cool coil. End use category "Clg" is used. Not used with CHW coils, because the input energy use for a CHW coil is recorded by the COOLPLANT's CHILLERs. -{{ - member_table({ - "units": "", - "legal_range": "_name of a METER_", - "default": "_not recorded_", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "_name of a METER_", +default: "_not recorded_", +required: "No", +variability: "constant") %> The following six members are used with DX cooling coils. -### ahccMinTEvap - -Type: _float_ +**ahccMinTEvap=_float_** Minimum (effective surface) temperature of coil (evaporator). Represents refrigerant setpoint, or cutout to prevent freezing. Coil model will reduce output to keep simulated coil from getting colder than this, even though it lets supply air get warmer than setpoint. Should default be 35?? -{{ - member_table({ - "units": "^o^F", - "legal_range": "_x_ $>$ 0", - "default": "40^o^F", - "required": "No", - "variability": "constant" - }) -}} - -### ahccK1 +<%= member_table( +units: "^o^F", +legal_range: "_x_ $>$ 0", +default: "40^o^F", +required: "No", +variability: "constant") %> -Type: _float_ +**ahccK1=_float_** Exponent in power relationship expressing coil effectiveness as a function of relative air flow. Used as K1 in the relationship ntu = ntuR \* relCfmk1, which says that the "number of transfer units" (on the coil outside or air side) varies with the relative air flow raised to the K1 power. Used with CHW as well as DX coils; for a CHW coil, ntuR in the formula is _ahccNtuoDs_. -{{ - member_table({ - "units": "", - "legal_range": "_x_ $<$ 0", - "default": "-0.4", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "_x_ $<$ 0", +default: "-0.4", +required: "No", +variability: "constant") %> -### ahccBypass - -Type: _float_ +**ahccBypass=_float_** Fraction of air flow which does NOT flow through DX cooling coil, for better humidity control. Running less of the air through the coil lets the coil run colder, resulting in greater moisture removal right??. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\lt$ _x_ $\\le$ 1", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\lt$ _x_ $\\le$ 1", +default: "0", +required: "No", +variability: "constant") %> The next three members are used in determining the energy input to a DX coil under various load conditions. The input is derived from the full load energy input ratio for four segments of the part load curve. In the following the part load ratio (plr) is the ratio of the actual sensible + latent load on the coil to the coil's capacity. The coil's capacity is ahccCaptRat, adjusted by the coil model for differences between entering air temperature, humidity, and flow rate and the coil rating conditions. The coil may run at less than capacity even at full fan flow, depending on the air temperature change needed, the moisture content of the entering air, and the relative values of between _sfanVfDs_ and _ahccVfR_. -{{ csv_table("full load, plr (part load ratio) = 1.0 +<%= csv_table(< false) +full load, plr (part load ratio) = 1.0 , Full-load power input is power output times _ahhcEirR._ compressor unloading region, 1.0 > plr $\\ge$ _ahhcMinUnldPlr_ , Power input is the full-load input times the value of the _pydxEirUl_ polynomial (below) for the current plr, i.e. pydxEirUl(plr). false loading region, _ahccMinUnldPlr_ > plr $\\ge$ _ahccMinFsldPlr_ , Power input in this region is constant at the value for the low end of the compressor unloading region, i.e. pydxEirUl(ahccMinUnldPlr). cycling region, _ahccMinFsldPlr_ > plr $\\ge$ 0 -, In this region the compressor runs at the low end of the false loading region for the necessary fraction of the time, and the power input is the false loading value correspondingly prorated, i.e. pydxEirUl(ahccMinUnldPlr) \* plr / ahccMinFsldPlr.") -}} +, In this region the compressor runs at the low end of the false loading region for the necessary fraction of the time, and the power input is the false loading value correspondingly prorated, i.e. pydxEirUl(ahccMinUnldPlr) \* plr / ahccMinFsldPlr. +END +%> The default values for the following three members are the DOE2 PTAC (Window air conditioner) values. -### ahccEirR - -Type: _float_ +**ahccEirR=_float_** DX compressor energy input ratio (EIR) at full load under rated conditions; defined as the full-load electric energy input divided by the rated capacity, both in Btuh; same as the reciprocal of the Coefficient Of Performance (COP). Polynomials given below are used by CSE to adjust the energy input for part load and for off rated flow and temperature conditions. The default value includes outdoor (condenser) fan energy, but not indoor (air handler supply) fan energy. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "0.438", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "", +default: "0.438", +required: "No", +variability: "constant") %> -### ahccMinUnldPlr - -Type: _float_ +**ahccMinUnldPlr=_float_** Compressor part load ratio (total current load/current capacity) at/above which "Compressor unloading" is used and pydxEirUl (below) is used to adjust the full-load power input to get the current part load power input. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "1 (no unloading)", - "required": "No", - "variability": "constant" - }) -}} - -### ahccMinFsldPlr +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "1 (no unloading)", +required: "No", +variability: "constant") %> -Type: _float_ +**ahccMinFsldPlr=_float_** "False Loading" is used between this compressor part load ratio and the plr where unloading is activated (_ahccMinUnldPlr_). In this region, input remains at _pydxEirUl_(*ahccMinUnldPlr).*For plr's less than _ahccMinFsldPlr_, cycling is used, and the power input goes to 0 in a straight line. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ _ahccMinUnldPlr_", - "default": "_ahccMinUnldPlr_ (no false loading)", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ _ahccMinUnldPlr_", +default: "_ahccMinUnldPlr_ (no false loading)", +required: "No", +variability: "constant") %> The following four inputs specify polynomials to approximate functions giving DX coil capacity and power (energy) input as functions of entering temperatures, relative (to ahccVfR) flow, and relative load (plr). In each case several _float_ values may be given, for use as coefficients of the polynomial. The values are ordered from constant to coefficient of highest power. If fewer than the maximum number of values are given, zeroes are used for the trailing (high order) coefficients. @@ -1503,59 +1164,45 @@ The default values for the polynomial coefficients are the DOE2 PTAC values. Coefficients of biquadratic polynomial function of entering air wetbulb and condenser temperatures whose value is used to adjust _ahccCaptRat_ for the actual entering air temperatures. The condenser temperature is the outdoor drybulb, but not less than 70. See discussion in preceding paragraphs. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "1.1839345, -0.0081087, 0.00021104, -0.0061425, 0.00000161, -0.0000030", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "", +default: "1.1839345, -0.0081087, 0.00021104, -0.0061425, 0.00000161, -0.0000030", +required: "No", +variability: "constant") %> **pydxCaptF=a=a, b, c, d** Coefficients of cubic polynomial function of relative flow (entering air cfm/_ahccVfR_) whose value is used to adjust _ahccCaptRat_ for the actual flow. See discussion in preceding paragraphs. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "0.8, 0.2, 0.0, 0.0", - "required": "No", - "variability": "constant" - }) -}} - -### pydxCaptFLim +<%= member_table( +units: "", +legal_range: "", +default: "0.8, 0.2, 0.0, 0.0", +required: "No", +variability: "constant") %> -Type: _float_ +**pydxCaptFLim=_float_** Upper limit for value of pydxCaptF. -{{ - member_table({ - "units": "", - "legal_range": "x $>$ 0", - "default": "1.05", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "x $>$ 0", +default: "1.05", +required: "No", +variability: "constant") %> **pydxEirT=_a, b, c, d, e, f_** Coefficients of biquadratic polynomial function of entering air wetbulb and condenser temperatures whose value is used to adjust _ahccEirR_ for the actual entering air temperatures. The condenser temperature is the outdoor air drybulb, but not less than 70. If the entering air wetbulb is less than 60, 60 is used, in this function only. See discussion in preceding paragraphs. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "-0.6550461, 0.03889096, -0.0001925, 0.00130464, 0.00013517, -0.0002247", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "", +default: "-0.6550461, 0.03889096, -0.0001925, 0.00130464, 0.00013517, -0.0002247", +required: "No", +variability: "constant") %> **pydxEirUl=_a, b, c, d_** @@ -1563,278 +1210,202 @@ Coefficients of cubic polynomial function of part load ratio used to adjust ener This polynomial adjusts the full load energy input to part load, not the ratio of input to output, despite the "Eir" in its name. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "0.125, 0.875, 0.0, 0.0", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "", +default: "0.125, 0.875, 0.0, 0.0", +required: "No", +variability: "constant") %> The following four members are used only with CHW coils. In addition, _ahccK1,_ described above, is used. -### ahccCoolplant - -Type: _name_ +**ahccCoolplant=_name_** name of COOLPLANT supporting CHW coil. COOLPLANTs contain CHILLERs, and are described in Section 5.21. -{{ - member_table({ - "units": "", - "legal_range": "_name of a COOLPLANT_", - "default": "_none_", - "required": "for CHW coil", - "variability": "constant" - }) -}} - -### ahccGpmDs +<%= member_table( +units: "", +legal_range: "_name of a COOLPLANT_", +default: "_none_", +required: "for CHW coil", +variability: "constant") %> -Type: _float_ +**ahccGpmDs=_float_** Design (i.e. maximum) water flow through CHW coil. -{{ - member_table({ - "units": "gpm", - "legal_range": "_x_ $\\ge$ 0", - "default": "_none_", - "required": "Yes, for CHW coil", - "variability": "constant" - }) -}} +<%= member_table( +units: "gpm", +legal_range: "_x_ $\\ge$ 0", +default: "_none_", +required: "Yes, for CHW coil", +variability: "constant") %> -### ahccNtuoDs - -Type: _float_ +**ahccNtuoDs=_float_** CHW coil outside number of transfer units at design air flow (ahccVfR*, below). See*ahccK1\* above with regard to transfer units at other air flows. -{{ - member_table({ - "units": "", - "legal_range": "_x_ $\\gt$ 0", - "default": "2", - "required": "No", - "variability": "constant" - }) -}} - -### ahccNtuiDs +<%= member_table( +units: "", +legal_range: "_x_ $\\gt$ 0", +default: "2", +required: "No", +variability: "constant") %> -Type: _float_ +**ahccNtuiDs=_float_** CHW coil inside number of transfer units at design water flow (ahccGpmDs, above). -{{ - member_table({ - "units": "", - "legal_range": "_x_ $\\gt$ 0", - "default": "2", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "_x_ $\\gt$ 0", +default: "2", +required: "No", +variability: "constant") %> The following four members let you give the specification conditions for the cooling coil: the rating conditions, design conditions, or other test conditions under which the coil's performance is known. The defaults are AHRI (Air-Conditioning and Refrigeration Institute) standard rating conditions. -### ahccDsTDbEn - -Type: _float_ +**ahccDsTDbEn=_float_** Design (rating) entering air dry bulb temperature, used with DX and CHW cooling coils. With CHW coils, this input is used only as the temperature at which to convert _ahccVfR_ from volume to mass. -{{ - member_table({ - "units": "^o^F", - "legal_range": "_x_ $\\gt$ 0", - "default": "80^o^F (AHRI)", - "required": "No", - "variability": "constant" - }) -}} - -### ahccDsTWbEn +<%= member_table( +units: "^o^F", +legal_range: "_x_ $\\gt$ 0", +default: "80^o^F (AHRI)", +required: "No", +variability: "constant") %> -Type: _float_ +**ahccDsTWbEn=_float_** Design (rating) entering air wet bulb temperature, for CHW coils. -{{ - member_table({ - "units": "^o^F", - "legal_range": "_x_ $\\gt$ 0", - "default": "67^o^F (AHRI)", - "required": "No", - "variability": "constant" - }) -}} - -### ahccDsTDbCnd +<%= member_table( +units: "^o^F", +legal_range: "_x_ $\\gt$ 0", +default: "67^o^F (AHRI)", +required: "No", +variability: "constant") %> -Type: _float_ +**ahccDsTDbCnd=_float_** Design (rating) condenser temperature (outdoor air temperature) for DX coils. -{{ - member_table({ - "units": "^o^F", - "legal_range": "_x_ $\\gt$ 0", - "default": "95^o^F (AHRI)", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "^o^F", +legal_range: "_x_ $\\gt$ 0", +default: "95^o^F (AHRI)", +required: "No", +variability: "constant") %> -### ahccVfR - -Type: _float_ +**ahccVfR=_float_** Design (rating) (volumetric) air flow rate for DX or CHW cooling coil. The AHRI specification for this test condition for CHW coils is "450 cfm/ton or less", right?? -{{ - member_table({ - "units": "cfm", - "legal_range": "_x_ $\\gt$ 0", - "default": "DX coil: _ahccVfRperTon_ CHW coil: _sfanVfDs_", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "cfm", +legal_range: "_x_ $\\gt$ 0", +default: "DX coil: _ahccVfRperTon_ CHW coil: _sfanVfDs_", +required: "No", +variability: "constant") %> The following four members permit specification of auxiliary input power use associated with the cooling coil under the conditions indicated. -### ahccVfRperTon - -Type: _float_ +**ahccVfRperTon=_float_** Design default _ahccVfR_ per ton (12000 Btuh) of _ahhcCapTRat_. -{{ - member_table({ - "units": "", - "legal_range": "x $>$ 0", - "default": "400.0", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "x $>$ 0", +default: "400.0", +required: "No", +variability: "constant") %> -### ahccAux - -Type: _float_ +**ahccAux=_float_** Auxiliary energy used by the cooling coil. -{{ - member_table({ - "units": "Btu/hr", - "legal_range": "_x_ $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "hourly" - }) -}} - -### ahccAuxMtr +<%= member_table( +units: "Btu/hr", +legal_range: "_x_ $\\ge$ 0", +default: "0", +required: "No", +variability: "hourly") %> -Type: _mtrName_ +**ahccAuxMtr=_mtrName_** Specifies a meter for recording auxiliary energy use. End use category "Aux" is used. -{{ - member_table({ - "units": "", - "legal_range": "_name of a METER_", - "default": "_not recorded_", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "_name of a METER_", +default: "_not recorded_", +required: "No", +variability: "constant") %> ## AIRHANDLER Outside Air Outside air introduced into the air hander supply air can be controlled on two levels. First, a *minimum*fraction or volume of outside air may be specified. By default, a minimum volume of .15 cfm per square foot of zone area is used. Second, an _economizer_ may be specified. The simulated economizer increases the outside air above the minimum when the outside air is cooler or has lower enthalpy than the return air, in order to reduce cooling coil energy usage. By default, there is no economizer. -### oaMnCtrl - -Type: _choice_ +**oaMnCtrl=_choice_** Minimum outside air flow control method choice, VOLUME or FRACTION. Both computations are based on the minimum outside air flow, _oaVfDsMn_; if the control method is FRACTION, the outside air flow is pro-rated when the air handler is supplying less than its design cfm. In both cases the computed minimum cfm is multiplied by a schedulable fraction, _oaMnFrac_, to let you vary the outside air or turn in off when none is desired. -{{ csv_table("VOLUME, Volume (cfm) of outside air is regulated: +<%= csv_table(< false) +VOLUME, Volume (cfm) of outside air is regulated: , min_oa_flow = oaMnFrac \* oaVfDsMn FRACTION, Fraction of outside air in supply air is regulated. The fraction is oaVfDsMn divided by sfanVfDs, the air handler supply fan design flow. The minimum cfm of outside air is thus computed as , min_oa_flow = oaMnFrac \* curr_flow \* oaVfDsMn / sfanVfDs -, where curr_flow is the current air handler cfm.") -}} +, where curr_flow is the current air handler cfm. +END +%> If the minimum outside air flow is greater than the total requested by the terminals served by the air handler, then 100% outside air at the latter flow is used. To insure minimum outside air cfm to the zones, use suitable terminal minimum flows (_tuVfMn_) as well as air handler minimum outside air specifications. -{{ - member_table({ - "units": "", - "legal_range": "VOLUME, FRACTION", - "default": "VOLUME", - "required": "No", - "variability": "constant" - }) -}} - -### oaVfDsMn +<%= member_table( +units: "", +legal_range: "VOLUME, FRACTION", +default: "VOLUME", +required: "No", +variability: "constant") %> -Type: _float_ +**oaVfDsMn=_float_** Design minimum outside air flow. If _oaMnCtrl_ is FRACTION, then this is the minimum outside air flow at full air handler flow. See formulas in _oaMnCtrl_ description, just above. -{{ - member_table({ - "units": "cfm", - "legal_range": "_x_ $\\ge$ 0", - "default": "0.15 times total area of zones served", - "required": "No", - "variability": "constant" - }) -}} - -### oaMnFrac +<%= member_table( +units: "cfm", +legal_range: "_x_ $\\ge$ 0", +default: "0.15 times total area of zones served", +required: "No", +variability: "constant") %> -Type: _float_ +**oaMnFrac=_float_** Fraction of minimum outside air to use this hour, normally 1.0. Use a CSE expression that evaluates to 0 for hours you wish to disable the minimum outside air flow, for example to suppress ventilation during the night or during warm-up hours. Intermediate values may be used for intermediate outside air minima. See formulas in _oaMnCtrl_ description, above. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "1.0", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "1.0", +required: "No", +variability: "hourly") %> CAUTION: the minimum outside air flow only applies when the supply fan is running; it won't assure meeting minimum ventilation requirements when used with ahFanCycles = YES (constant volume, fan cycling). -### oaZoneLeak - -Type: _float_ +**oaZoneLeak=_float_** For the purposes of airnet zone pressure modeling ONLY, _oaZoneLeak_ specifies the fraction of supply air that is assumed to leak from zone(s) (as opposed to returning to the airhandler via the return duct). For example, if the supply air volume is 500 cfm and _oaZoneLeak_ is 0.4, the values passed to airnet are 500 cfm inflow and 300 cfm outflow. The 200 cfm difference is distributed to other zone leaks according to their pressure/flow characteristics. The default assumption is that airhandlers with return or relief fans provide balanced zone flows while half the supply flow leaks from zones served by supply-fan-only airhandlers. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "no return/relief fan: 0.5 else 0", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "no return/relief fan: 0.5 else 0", +required: "No", +variability: "hourly") %> If an _oaEcoType_ choice other than NONE is given, an economizer will be simulated. The economizer will be enabled when the outside temperature is below oaLimT _AND_ the outside air enthalpy is below oaLimE. When enabled, the economizer adjusts the economizer dampers to increase the outside air mixed with the return air until the mixture is cooler than the air handler supply temperature setpoint, if possible, or to maximum outside air if the outside air is not cool enough. @@ -1846,291 +1417,209 @@ Second, the economizer will operate even if the air handler is heating, resultin (ahEcoType includes the functionality of the Taylor coil_interlock variable??) --> -### oaEcoType - -Type: _choice_ +**oaEcoType=_choice_** Type of economizer. Choice of: -{{ csv_table("NONE, No economizer; outside air flow is the minimum. +<%= csv_table(< false) +NONE, No economizer; outside air flow is the minimum. INTEGRATED, Coil and economizer operate independently. NONINTEGRATED, Coil does not run when economizer is using all outside air: simulates interlock in some equipment designed to prevent coil icing due to insufficient load, right? -TWO_STAGE, Economizer is disabled when coil cycles on. _NOT IMPLEMENTED_ as of July 1992.") -}} +TWO_STAGE, Economizer is disabled when coil cycles on. _NOT IMPLEMENTED_ as of July 1992. +END +%> **oaLimT=_float_ or _RA_** Economizer outside air temperature high limit. The economizer is disabled (outside air flow is reduced to a minimum) when the outside air temperature is greater than _oaLimT_. A number may be entered, or "RA" to specify the current Return Air temperature. _OaLimT_ may be scheduled to a low value, for example -99, if desired to disable the economizer at certain times. -{{ - member_table({ - "units": "^o^F", - "legal_range": "_number_ or RA", - "default": "RA (return air temperature)", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( +units: "^o^F", +legal_range: "_number_ or RA", +default: "RA (return air temperature)", +required: "No", +variability: "hourly") %> **oaLimE=_float_ or _RA_** Economizer outside air enthalpy high limit. The economizer is disabled (outside air flow is reduced to a minimum) when the outside air enthalpy is greater than _oaLimE_. A number may be entered, or "RA" to specify the current Return Air enthalpy. _OaLimE_ may be scheduled to a low value, for example -99, if desired to disable the economizer at certain times. -{{ - member_table({ - "units": "Btu/^o^F", - "legal_range": "_number_ or RA", - "default": "999 (enthalpy limit disabled)", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( +units: "Btu/^o^F", +legal_range: "_number_ or RA", +default: "999 (enthalpy limit disabled)", +required: "No", +variability: "hourly") %> _oaOaLeak_ and _oaRaLeak_ specify leakages in the economizer dampers, when present. The leaks are constant-cfm flows, expressed as fractions of the maximum possible flow. Thus, when the current flow is less than the maximum possible, the range of operation of the economizer is reduced. When the two damper leakages add up to more than the current air handler flow, outside and return air are used in the ratio of the two leakages and the economizer, if enabled, is ineffective. -### oaOaLeak - -Type: _float_ +**oaOaLeak=_float_** Outside air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. If an economizer is present, _oaOaLeak_ is a fraction of the supply fan design cfm, _sfanVfDs_. Otherwise, _oaOaLeak_ is a fraction of the design minimum outside air flow _oaVfDsMn_. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", - "default": "0.1", - "required": "No", - "variability": "constant" - }) -}} - -### oaRaLeak +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", +default: "0.1", +required: "No", +variability: "constant") %> -Type: _float_ +**oaRaLeak=_float_** Return air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. Expressed as a fraction of the supply fan design cfm, _sfanVfDs_. Not used when no economizer is being modeled. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", - "default": "0.1", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", +default: "0.1", +required: "No", +variability: "constant") %> ## AIRHANDLER Heat Recovery The following data members are used to describe a heat exchanger for recovering heat from exhaust air. Heat recovery added to the model when a value for _oaHXSenEffHDs_ is provided. -### oaHXVfDs - -Type: _float_ +**oaHXVfDs=_float_** Heat exchanger design or rated flow. -{{ - member_table({ - "units": "cfm", - "legal_range": "_x_ $\\gt$ 0", - "default": "_oaVfDsMn_", - "required": "No", - "variability": "constant" - }) -}} - -### oaHXf2 +<%= member_table( +units: "cfm", +legal_range: "_x_ $\\gt$ 0", +default: "_oaVfDsMn_", +required: "No", +variability: "constant") %> -Type: _float_ +**oaHXf2=_float_** Heat exchanger flow fraction (of design flow) used for second set of effectivenesses. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\lt$ _x_ $\\lt$ 1.0", - "default": "0.75", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\lt$ _x_ $\\lt$ 1.0", +default: "0.75", +required: "No", +variability: "constant") %> -### oaHXSenEffHDs - -Type: _float_ +**oaHXSenEffHDs=_float_** Heat exchanger sensible effectiveness in heating mode at the design flow rate. Specifying input triggers modeling of heat recovery. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", - "default": None, - "required": "when modeling heat recovery", - "variability": "constant" - }) -}} - -### oaHXSenEffHf2 +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", +required: "when modeling heat recovery", +variability: "constant") %> -Type: _float_ +**oaHXSenEffHf2=_float_** Heat exchanger sensible effectiveness in heating mode at the second flow rate (**oaHXf2**). -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", +default: "0", +required: "No", +variability: "constant") %> -### oaHXLatEffHDs - -Type: _float_ +**oaHXLatEffHDs=_float_** Heat exchanger latent effectiveness in heating mode at the design flow rate. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} - -### oaHXLatEffHf2 +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", +default: "0", +required: "No", +variability: "constant") %> -Type: _float_ +**oaHXLatEffHf2=_float_** Heat exchanger latent effectiveness in heating mode at the second flow rate (**oaHXf2**). -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", +default: "0", +required: "No", +variability: "constant") %> -### oaHXSenEffCDs - -Type: _float_ +**oaHXSenEffCDs=_float_** Heat exchanger sensible effectiveness in cooling mode at the design flow rate. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} - -### oaHXSenEffCf2 +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", +default: "0", +required: "No", +variability: "constant") %> -Type: _float_ +**oaHXSenEffCf2=_float_** Heat exchanger sensible effectiveness in cooling mode at the second flow rate (**oaHXf2**). -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", +default: "0", +required: "No", +variability: "constant") %> -### oaHXLatEffCDs - -Type: _float_ +**oaHXLatEffCDs=_float_** Heat exchanger latent effectiveness in cooling mode at the design flow rate. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} - -### oaHXLatEffCf2 +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", +default: "0", +required: "No", +variability: "constant") %> -Type: _float_ +**oaHXLatEffCf2=_float_** Heat exchanger latent effectiveness in cooling mode at the second flow rate (**oaHXf2**). -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} - -### oaHXBypass +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1.0", +default: "0", +required: "No", +variability: "constant") %> -Type: _choice_ +**oaHXBypass=_choice_** Yes/No choice for enabling heat exchanger bypass. If selected, the outdoor air will bypass the heat exchanger when otherwise the heat exchanger would require more heating or cooling energy to meet the respective setpoints. -{{ - member_table({ - "units": "", - "legal_range": "NO, YES", - "default": "NO", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "NO, YES", +default: "NO", +required: "No", +variability: "constant") %> -### oaHXAuxPwr - -Type: _float_ +**oaHXAuxPwr=_float_** Auxiliary power required to operate the heat recovery device (e.g., wheel motor, contorls). -{{ - member_table({ - "units": "W", - "legal_range": "_x_ $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "subhourly" - }) -}} - -### oaHXAuxMtr +<%= member_table( +units: "W", +legal_range: "_x_ $\\ge$ 0", +default: "0", +required: "No", +variability: "subhourly") %> -Type: _mtrName_ +**oaHXAuxMtr=_mtrName_** Name of meter, if any, to record energy used by auxiliary components of the heat recovery system. -{{ - member_table({ - "units": "", - "legal_range": "_name of a METER_", - "default": "_not recorded_", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "_name of a METER_", +default: "_not recorded_", +required: "No", +variability: "constant") %> ## AIRHANDLER Leaks and Losses @@ -2138,71 +1627,51 @@ _AhSOLeak_ and _ahRoLeak_ express air leaks in the common supply and return duct If unequal leaks are specified, at present (July 1992) CSE will use the average of the two specifications for both leaks, as the modeled supply and return flows must be equal. A future version may allow unequal flows, making up the difference in exfiltration or infiltration to the zones. -### ahSOLeak - -Type: _float_ +**ahSOLeak=_float_** Supply duct leakage to outdoors, expressed as a fraction of supply fan design flow (_sfanVfDs_). Use 0 if the duct is indoors. A constant-cfm leak is modeled, as the pressure is constant when the fan is on. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "0.01", - "required": "No", - "variability": "constant" - }) -}} - -### ahROLeak +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.01", +required: "No", +variability: "constant") %> -Type: _float_ +**ahROLeak=_float_** Return duct leakage FROM outdoors, expressed as a fraction of _sfanVfDs_. Use 0 if the duct is indoors. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "0.01", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.01", +required: "No", +variability: "constant") %> _AhSOLoss_ and _ahROLoss_ represent conductive losses from the common supply and return ducts to the outdoors. For an individual zone's conductive duct loss, see TERMINAL member _tuSRLoss_. Losses here are expressed as a fraction of the temperature difference which is lost. For example, if the supply air temperature is 120, the outdoor temperature is 60, and the pertinent loss is .1, the effect of the loss as modeled will be to reduce the supply air temperature by 6 degrees ( .1 \* (120 - 60) ) to 114 degrees. CSE currently models these losses a constant _TEMPERATURE LOSSes_ regardless of cfm. -### ahSOLoss - -Type: _float_ +**ahSOLoss=_float_** Supply duct loss/gain to the outdoors. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "0.1", - "required": "No", - "variability": "constant" - }) -}} - -### ahROLoss +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.1", +required: "No", +variability: "constant") %> -Type: _float_ +**ahROLoss=_float_** Return duct heat loss/gain to the outdoors. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", - "default": "0.1", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "0 $\\le$ _x_ $\\le$ 1", +default: "0.1", +required: "No", +variability: "constant") %> ## AIRHANDLER Crankcase Heater @@ -2214,149 +1683,111 @@ When modeling an air source heat pump (ahhcType = AHP), these variables should b Appropriateness of use of these inputs when specifying a DX system without associated heat pump heating is not clear to me (Rob) as of 10-23-92; on the one hand, the DX compressor probably has a crankcase heater; on the other hand, the rest of the DX model is supposed to be complete in itself, and adding a crankcase heater here might produce excessive energy input; on the third hand, the DX model does not include any energy input when the compressor is idle; ... . -### cchCM - -Type: _choice_ +**cchCM=_choice_** Crankcase heater presence and control method. Choice of: -{{ csv_table("NONE, No crankcase heater present +<%= csv_table(< false) +NONE, No crankcase heater present CONSTANT, Crankcase heater input always _cchPMx_ (below). PTC, Proportional control based on oil temp when compressor does not run in subhour (see _cchTMx_, _cchMn_, and _cchDT_). If compressor runs at all in subhour, the oil is assumed to be hotter than _cchTMn_ and crankcase heater input is _cchPMn_. (PTC stands for 'Positive Temperature Coefficient' or 'Proportional Temperature Control'.) TSTAT, Control based on outdoor temperature, with optional differential, during subhours when compressor is off; crankcase heater does not operate if compressor runs at all in subhour. See _cchTOn_, _cchTOff_. CONSTANT_CLO -PTC_CLO, Same as corresponding choices above except zero crankcase heater input during fraction of time compressor is on ('Compressor Lock Out'). There is no TSTAT_CLO because under TSTAT the crankcase heater does not operate anyway when the compressor is on.") -}} +PTC_CLO, Same as corresponding choices above except zero crankcase heater input during fraction of time compressor is on ('Compressor Lock Out'). There is no TSTAT_CLO because under TSTAT the crankcase heater does not operate anyway when the compressor is on. +END +%> -{{ - member_table({ - "units": "", - "legal_range": "CONSTANT CONSTANT_CLO PTC PTC_CLO TSTAT NONE", - "default": "PTC_CLO if _ahhcType_ is AHP else NONE ", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "CONSTANT CONSTANT_CLO PTC PTC_CLO TSTAT NONE", +default: "PTC_CLO if _ahhcType_ is AHP else NONE ", +required: "No", +variability: "constant") %> -### cchPMx - -Type: _float_ +**cchPMx=_float_** Crankcase resistance heater input power; maximum power if _cchCM_ is PTC or PTC_CLO. -{{ - member_table({ - "units": "kW", - "legal_range": "_x_ $\\gt$ 0", - "default": ".4 kW", - "required": "No", - "variability": "constant" - }) -}} - -### cchPMn +<%= member_table( +units: "kW", +legal_range: "_x_ $\\gt$ 0", +default: ".4 kW", +required: "No", +variability: "constant") %> -Type: _float_ +**cchPMn=_float_** Crankcase heater minimum input power if _cchCM_ is PTC or PTC_CLO, disallowed for other _cchCM's_. > 0. -{{ - member_table({ - "units": "kW", - "legal_range": "_x_ $\\gt$ 0", - "default": ".04 kW", - "required": "No", - "variability": "constant" - }) -}} - -### cchTMx - -Type: _float_ +<%= member_table( +units: "kW", +legal_range: "_x_ $\\gt$ 0", +default: ".04 kW", +required: "No", +variability: "constant") %> -### cchTMn +**cchTMx=_float_** -Type: _float_ +**cchTMn=_float_** For _cchCM_ = PTC or PTC_CLO, the low temperature (max power) and high temperature (min power) setpoints. In subhours when the compressor does not run, crankcase heater input is _cchPMx_ when oil temperature is at or below _cchTMx_, _cchPMn_ when oil temp is at or above _cchTMn_, and varies linearly (proportionally) in between. _cchTMn_ must be $\ge$ _cchTMx_. See _cchDT_ (next). (Note that actual thermostat setpoints probably cannot be used for _cchTMx_ and _cchTMn_ inputs, because the model assumes the difference between the oil temperature and the outdoor temperature is constant (_cchDT_) regardless of the heater power. -{{ - member_table({ - "units": "^o^F", - "legal_range": "", - "default": "_cchTMn_: 0; _cchTMx_: 150", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "^o^F", +legal_range: "", +default: "_cchTMn_: 0; _cchTMx_: 150", +required: "No", +variability: "constant") %> -### cchDT - -Type: _float_ +**cchDT=_float_** For _cchCM_ = PTC or PTC_CLO, how much warmer than the outdoor temp CSE assumes the crankcase oil to be in subhours when the compressor does not run. If the compressor runs at all in the subhour, the oil is assumed to be warmer than _cchTMn_. -{{ - member_table({ - "units": "^o^F", - "legal_range": "", - "default": "20^o^F", - "required": "No", - "variability": "constant" - }) -}} - -### cchTOn - -Type: _float_ +<%= member_table( +units: "^o^F", +legal_range: "", +default: "20^o^F", +required: "No", +variability: "constant") %> -### cchTOff +**cchTOn=_float_** -Type: _float_ +**cchTOff=_float_** For _cchCM_ = TSTAT, in subhours when compressor does not run, the crankcase heater turn-on and turn-off outdoor temperatures, respectively. Unequal values may be given to simulate thermostat differential. When the compressor runs at all in a subhour, the crankcase heater is off for the entire subhour. -{{ - member_table({ - "units": "^o^F", - "legal_range": "_cchTOff_ $\\ge$ _cchTOn_", - "default": "_cchTOn_: 72^o^F; _chcTOff_: _chcTOn_", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "^o^F", +legal_range: "_cchTOff_ $\\ge$ _cchTOn_", +default: "_cchTOn_: 72^o^F; _chcTOff_: _chcTOn_", +required: "No", +variability: "constant") %> **cchMtr=_name of a METER_** METER to record crankcase heater energy use, category "Aux"; not recorded if not given. -{{ - member_table({ - "units": "", - "legal_range": "_name of a METER_", - "default": "_not recorded_", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "_name of a METER_", +default: "_not recorded_", +required: "No", +variability: "constant") %> -### endAirHandler +**endAirHandler** Indicates the end of the air handler definition. Alternatively, the end of the air handler definition can be indicated by the declaration of another object. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "_none_", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( +units: "", +legal_range: "", +default: "_none_", +required: "No", +variability: "constant") %> **Related Probes:** -- @[airHandler][p_airhandler] -- @[ahRes][p_ahres] (accumulated results) +- @[airHandler](#p_airhandler) +- @[ahRes](#p_ahres) (accumulated results) diff --git a/doc/src/docs/input-data/battery.md b/doc/src/docs/input-data/battery.md index 99c5b4f08..8377f5130 100644 --- a/doc/src/docs/input-data/battery.md +++ b/doc/src/docs/input-data/battery.md @@ -4,105 +4,81 @@ BATTERY describes input data for a model of an energy-storage system which is no The modeler can set limits and constraints on capacities and flows and the associated efficiencies for this model. -### btName +**btName** Name of the battery system. Given after the word BATTERY. -{{ - member_table({ - "units": "", - "legal_range": "63 characters*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "63 characters*", + default: "*none*", + required: "No", + variability: "constant") + %> -### btMeter - -Type: *choice* +**btMeter=*choice*** Name of a METER to which the BATTERY's charge/discharge energy flows are recorded. Battery energy flows are accumulated to meter end use "BT". Battery energy flows are seen from the standpoint of a "load" on the electric grid, so charges to the BATTERY system are positive values while discharges from the BATTERY system are negative values. Note btMeter also determines the source for the probe value *loadSeen*. See discussion and example under btChgReq (below). -{{ - member_table({ - "units": "", - "legal_range": "meter name ", - "default": "*none* ", - "required": "No", - "variability": "constant" - }) -}} - -### btChgEff +<%= member_table( + units: "", + legal_range: "meter name ", + default: "*none* ", + required: "No", + variability: "constant") + %> -Type: *float* +**btChgEff=*float*** The charging efficiency of storing electricity into the BATTERY system. A value of 1.0 means that no energy is lost and 100% of charge energy enters and is stored in the battery. -{{ - member_table({ - "units": "", - "legal_range": "0 < x $\\le$ 1", - "default": "0.975", - "required": "No", - "variability": "hourly" - }) -}} - -### btDschgEff +<%= member_table( + units: "", + legal_range: "0 < x $\\le$ 1", + default: "0.975", + required: "No", + variability: "hourly") + %> -Type: *float* +**btDschgEff=*float*** The discharge efficiency for when the BATTERY system is discharging power. A value of 1.0 means that no energy is lost and 100% of discharge energy leaves the system. -{{ - member_table({ - "units": "", - "legal_range": "0 < x $\\le$ 1", - "default": "0.975", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "", + legal_range: "0 < x $\\le$ 1", + default: "0.975", + required: "No", + variability: "hourly") + %> -### btMaxCap - -Type: *float* +**btMaxCap=*float*** This is the maximum amount of energy that can be stored in the BATTERY system in kilowatt-hours. Once the BATTERY has reached its maximum capacity, no additional energy will be stored. -{{ - member_table({ - "units": "kWh", - "legal_range": "x $\\ge$ 0", - "default": "16", - "required": "No", - "variability": "constant" - }) -}} - -### btInitSOE +<%= member_table( + units: "kWh", + legal_range: "x $\\ge$ 0", + default: "16", + required: "No", + variability: "constant") + %> -Type: *float* +**btInitSOE=*float*** The initial state of energy of the BATTERY system as a fraction of the total capacity. If `btInitSOE` is specified, the battery state-of-energy at the beginning of the actual simulation will be set to the amount specified, regardless of whether there was a warm-up period or not. If `btInitSOE` is NOT specififed, it will default to 1.0 (i.e., 100%) at the beginning of the warmup period (if any). -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ x $\\le$ 0", - "default": "1.0", - "required": "No", - "variability": "constant" - }) -}} - -### btInitCycles +<%= member_table( + units: "", + legal_range: "0 $\\le$ x $\\le$ 0", + default: "1.0", + required: "No", + variability: "constant") + %> -Type: *int* +**btInitCycles=*int*** The number of cycles on the battery at the beginning of the run. @@ -112,73 +88,59 @@ Note: a more robust life model will need not only cycle counts but cycles by dep <% end %> -{{ - member_table({ - "units": "number of cycles", - "legal_range": "x $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "runly" - }) -}} +<%= member_table( + units: "number of cycles", + legal_range: "x $\\ge$ 0", + default: "0", + required: "No", + variability: "runly") + %> -### btMaxChgPwr - -Type: *float* +**btMaxChgPwr=*float*** The maximum rate at which the BATTERY can be charged in kilowatts (i.e., energy flowing *into* the BATTERY). -{{ - member_table({ - "units": "kW", - "legal_range": "x $\\ge$ 0", - "default": "4", - "required": "No", - "variability": "hourly" - }) -}} - -### btMaxDschgPwr +<%= member_table( + units: "kW", + legal_range: "x $\\ge$ 0", + default: "4", + required: "No", + variability: "hourly") + %> -Type: *float* +**btMaxDschgPwr=*float*** The maximum rate at which the BATTERY can be discharged in kilowatts (i.e., energy flowing *out of* the BATTERY). -{{ - member_table({ - "units": "kW", - "legal_range": "x $\\ge$ 0", - "default": "4", - "required": "No", - "variability": "hourly" - }) -}} - -### btControlAlg +<%= member_table( + units: "kW", + legal_range: "x $\\ge$ 0", + default: "4", + required: "No", + variability: "hourly") + %> -Type: *choice* +**btControlAlg=*choice*** Selects charge/discharge control algorithm. btChgReq (next) specifies the desired battery charge or discharge rate. btControlAlg allows selection of alternative algorithms for deriving btChgReq. -{{ csv_table("DEFAULT, btChgReq is used as input or defaulted (see below) -TDVPEAKSAVE, btChgReq input (if any) is ignored. Instead, a California-specific algorithm is used that saves battery charge until peak TDV (Time Dependant Valuation) hours of the day, shifting energy generated on site (e.g. PV) to supply feed the grid during critical periods. The algorithm requires availability of hourly TDV data, see Top.tdvFName.") -}} +<%= csv_table(< false) +DEFAULT, btChgReq is used as input or defaulted (see below) +TDVPEAKSAVE, btChgReq input (if any) is ignored. Instead, a California-specific algorithm is used that saves battery charge until peak TDV (Time Dependant Valuation) hours of the day, shifting energy generated on site (e.g. PV) to supply feed the grid during critical periods. The algorithm requires availability of hourly TDV data, see Top.tdvFName. +END +%> Note btControlAlg has hourly variability, allowing dynamic algorithm selection. In California compliance applications, TDVPEAKSAVE is typically used only on days with high TDV peaks. -{{ - member_table({ - "units": "", - "legal_range": "DEFAULT or TDVPEAKSAVE", - "default": "DEFAULT", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "", + legal_range: "DEFAULT or TDVPEAKSAVE", + default: "DEFAULT", + required: "No", + variability: "hourly") + %> -### btChgReq - -Type: *float* +**btChgReq=*float*** The power request to charge (or discharge if negative) the battery. If omitted, the default strategy is used (attempt to satisfy all loads and absorb all available excess power). btChgReq and the default strategy requested power are literally *requests*: that is, more power will not be delivered than is available; more power will not be absorbed than capacity exits to store; and the battery's power limits will be respected. @@ -190,35 +152,29 @@ btChgReq can be set by an expression to allow complex energy management/dispatch The sign conventions here are tricky. min(@BATTERY[ 1].loadSeen, 0) produces a value <=0 that is the negative of the amount of surplus energy available. A positive btChgReq value requests charging, hence "-" (minus sign) in front of the min(). Conversely, max( @BATTERY[ 1].loadSeen, 0) results in a value >= 0 indicating the net energy needed by the building. To request discharge, btChgReq must be negative, so "-" is also needed in the discharge expression. (The @BATTERY[1] references mean "this battery", assuming there is only one battery being modelled. In multi-battery situations, the current BATTERY's index or name must be included within the "[ ]".) -{{ - member_table({ - "units": "kW", - "legal_range": "", - "default": "btMeter net load", - "required": "No", - "variability": "hourly" - }) -}} - -### btUseUsrChg +<%= member_table( + units: "kW", + legal_range: "", + default: "btMeter net load", + required: "No", + variability: "hourly") + %> -Type: *choice* +**btUseUsrChg=*choice*** Former yes/no choice that currently has no effect. Deprecated, will be removed in a future version. -### endBATTERY +**endBATTERY** Optionally indicates the end of the BATTERY definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none* ", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none* ", + required: "No", + variability: "constant") + %> -{{ - member_table({ - "units": "^o^F", - "legal_range": "*unrestricted*", - "default": "*none*", - "required": "Required if *sfExCnd* = SPECIFIEDT", - "variability": "hourly" - }) -}} +<%= member_table( + units: "^o^F", + legal_range: "*unrestricted*", + default: "*none*", + required: "Required if *sfExCnd* = SPECIFIEDT", + variability: "hourly") + %> -### dsInsulR - -Type: *float* +**dsInsulR=*float*** Insulation thermal resistance *not including* surface conductances. dsInsulR and dsInsulMat are used to calculate insulation thickness (see below). Duct insulation is modeled as a pure conductance (no mass). -{{ - member_table({ - "units": "ft^2^-^o^F-hr / Btu", - "legal_range": "x $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} - -### dsInsulMat +<%= member_table( + units: "ft^2^-^o^F-hr / Btu", + legal_range: "x $\\ge$ 0", + default: "0", + required: "No", + variability: "constant") + %> -Type: *matName* +**dsInsulMat=*matName*** Name of insulation MATERIAL. The conductivity of this material at 70 ^o^F is combined with dsInsulR to derive the duct insulation thickness. If omitted, a typical fiberglass material is assumed having conductivity of 0.025 Btu/hr-ft^2^-F at 70 ^o^F and a conductivity coefficient of .00418 1/F (see MATERIAL). In addition, insulation conductivity is adjusted during the simulation in response its average temperature. As noted with dsInsulR, duct insulation is modeled as pure conductance -- MATERIAL matDens and matSpHt are ignored. -{{ - member_table({ - "units": "", - "legal_range": "name of a *MATERIAL*", - "default": "fiberglass", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "name of a *MATERIAL*", + default: "fiberglass", + required: "No", + variability: "constant") + %> -### dsLeakF - -Type: *float* +**dsLeakF=*float*** Duct leakage. Return duct leakage is modeled as if it all occurs at the segment inlet. Supply duct leakage is modeled as if it all occurs at the outlet. -{{ - member_table({ - "units": "", - "legal_range": "0 $<$ x $\\le$ 1", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} - -### dsExH +<%= member_table( + units: "", + legal_range: "0 $<$ x $\\le$ 1", + default: "*none*", + required: "No", + variability: "constant") + %> -Type: *float* +**dsExH=*float*** Outside (exposed) surface convection coefficient. -{{ - member_table({ - "units": "Btuh/ft^2^-^o^F", - "legal_range": "x $\\ge$ 0", - "default": ".54", - "required": "No", - "variability": "subhourly" - }) -}} +<%= member_table( + units: "Btuh/ft^2^-^o^F", + legal_range: "x $\\ge$ 0", + default: ".54", + required: "No", + variability: "subhourly") + %> -### endDuctSeg +**endDuctSeg** Optionally indicates the end of the DUCTSEG definition. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[ductSeg][p_ductseg] -- @[izXfer][p_izxfer] (generated as "\-DLkI" for supply or "\-DLkO" for return) +- @[ductSeg](#p_ductseg) +- @[izXfer](#p_izxfer) (generated as "\-DLkI" for supply or "\-DLkO" for return) diff --git a/doc/src/docs/input-data/export.md b/doc/src/docs/input-data/export.md index e1528715b..9b44854c3 100644 --- a/doc/src/docs/input-data/export.md +++ b/doc/src/docs/input-data/export.md @@ -10,245 +10,185 @@ Depending on your application, if you specify multiple exports, you may need to Input for EXPORTs is similar to input for REPORTs; refer to the REPORT description in Section 5.25 for further discussion of the members shown here. -### exName +**exName** Name of export. Give after the word EXPORT. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") + %> -### exExportfile - -Type: *fname* +**exExportfile=*fname*** Name of export file to which current export will be written. If omitted, if EXPORT is within an EXPORTFILE object, report will be written to that export file, or else to the automatically-supplied EXPORTFILE "Primary", which by default uses the name of the input file with the extension .csv. -{{ - member_table({ - "units": "", - "legal_range": "name of an *EXPORTFILE*", - "default": "current *EXPORTFILE*, if any, else 'Primary'", - "required": "No", - "variability": "constant" - }) -}} - -### exType +<%= member_table( + units: "", + legal_range: "name of an *EXPORTFILE*", + default: "current *EXPORTFILE*, if any, else 'Primary'", + required: "No", + variability: "constant") + %> -Type: *choice* +**exType=*choice*** Choice indicating export type. See descriptions in Section 5.22, REPORT. While not actually disallowed, use of *exType* = ERR, LOG, INP, or ZDD is unexpected. -{{ - member_table({ - "units": "", - "legal_range": "ZEB, ZST, MTR, DHWMTR, AH, UDT, or SUM", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "ZEB, ZST, MTR, DHWMTR, AH, UDT, or SUM", + default: "*none*", + required: "Yes", + variability: "constant") + %> -### exFreq - -Type: *choice* +**exFreq=*choice*** Export Frequency: specifies interval for generating rows of export data: -{{ - member_table({ - "units": "", - "legal_range": "YEAR, MONTH, DAY, HOUR, HOURANDSUB, SUBHOUR", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} - -### exDayBeg +<%= member_table( + units: "", + legal_range: "YEAR, MONTH, DAY, HOUR, HOURANDSUB, SUBHOUR", + default: "*none*", + required: "Yes", + variability: "constant") + %> -Type: *date* +**exDayBeg=*date*** Initial day of export. Exports for which *exFreq* = YEAR do not allow specification of *exDayBeg* and *exDayEnd*; for MONTH exports, these members are optional and default to include the entire run; for DAY and shorter-interval exports, *exDayBeg* is required and *exDayEnd* defaults to *exDayBeg*. -{{ - member_table({ - "units": "", - "legal_range": "*date*", - "default": "first day of simulation if *exFreq* = MONTH", - "required": "Required for *exTypes* ZEB, ZST, MTR, AH, and UDT if *exFreq* is DAY, HOUR, HOURANDSUB, or SUBHOUR", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*date*", + default: "first day of simulation if *exFreq* = MONTH", + required: "Required for *exTypes* ZEB, ZST, MTR, AH, and UDT if *exFreq* is DAY, HOUR, HOURANDSUB, or SUBHOUR", + variability: "constant") + %> -### exDayEnd - -Type: *date* +**exDayEnd=*date*** Final day of export period, except for YEAR exports. -{{ - member_table({ - "units": "", - "legal_range": "*date*", - "default": "last day of simulation if *exFreq*= MONTH, else *exDayBeg*", - "required": "No", - "variability": "constant" - }) -}} - -### exZone +<%= member_table( + units: "", + legal_range: "*date*", + default: "last day of simulation if *exFreq*= MONTH, else *exDayBeg*", + required: "No", + variability: "constant") + %> -Type: *znName* +**exZone=*znName*** Name of ZONE for which a ZEB, ZST, or ZDD export is being requested; ALL and SUM are also allowed except with *exType* = ZST. -{{ - member_table({ - "units": "", - "legal_range": "name of a *ZONE*, ALL, SUM", - "default": "*none*", - "required": "Required for *exTypes* ZDD, ZEB, and ZST.", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "name of a *ZONE*, ALL, SUM", + default: "*none*", + required: "Required for *exTypes* ZDD, ZEB, and ZST.", + variability: "constant") + %> -### exMeter - -Type: *mtrName* +**exMeter=*mtrName*** Specifies meter(s) whose data is to be exported, for *exType*=MTR. -{{ - member_table({ - "units": "", - "legal_range": "name of a *METER*, ALL, SUM", - "default": "*none*", - "required": "for *exType*=MTR", - "variability": "constant" - }) -}} - -### exTu +<%= member_table( + units: "", + legal_range: "name of a *METER*, ALL, SUM", + default: "*none*", + required: "for *exType*=MTR", + variability: "constant") + %> -Type: *tuName* +**exTu=*tuName*** Specifies air handler(s) to be reported, for *rpType*=TUSIZE or TULOAD. -{{ - member_table({ - "units": "", - "legal_range": "name of a TERMINAL, ALL, SUM", - "default": "", - "required": "Required for *rpType*", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "name of a TERMINAL, ALL, SUM", + default: "", + required: "Required for *rpType*", + variability: "constant") %> -### exDHWMeter - -Type: *dhwMtrName* +**exDHWMeter=*dhwMtrName*** Specifies DHW meter(s) whose data is to be exported, for *exType*=DHWMTR. -{{ - member_table({ - "units": "", - "legal_range": "name of a *DHWMETER*, ALL, SUM", - "default": "*none*", - "required": "for *exType*=DHWMTR", - "variability": "constant" - }) -}} - -### exAFMeter +<%= member_table( + units: "", + legal_range: "name of a *DHWMETER*, ALL, SUM", + default: "*none*", + required: "for *exType*=DHWMTR", + variability: "constant") + %> -Type: *afMtrName* +**exAFMeter=*afMtrName*** Air flow meter report. -{{ - member_table({ - "units": "", - "legal_range": "*Name of AFMETER*", - "default": "0", - "required": "No", - "variability": "runly" - }) -}} +<%= member_table( + units: "", + legal_range: "*Name of AFMETER*", + default: "0", + required: "No", + variability: "runly") %> **exAh=ah*Name*** Specifies air handler(s) to be exported, for *exType*=AH. -{{ - member_table({ - "units": "", - "legal_range": "name of an *AIRHANDLER*, ALL, SUM", - "default": "*none*", - "required": "for *exType*=AH", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "name of an *AIRHANDLER*, ALL, SUM", + default: "*none*", + required: "for *exType*=AH", + variability: "constant") + %> -### exBtuSf - -Type: *float* +**exBtuSf=*float*** Scale factor used for exported energy values. -{{ - member_table({ - "units": "", - "legal_range": "*any multiple of ten*", - "default": "1,000,000: energy exported in MBtu.", - "required": "No", - "variability": "constant" - }) -}} - -### exCond +<%= member_table( + units: "", + legal_range: "*any multiple of ten*", + default: "1,000,000: energy exported in MBtu.", + required: "No", + variability: "constant") + %> -Type: *expression* +**exCond=*expression*** Conditional exporting flag. If given, export rows are generated only when value of expression is non-0. Allowed with *exTypes* ZEB, ZST, MTR, AH, and UDT. -{{ - member_table({ - "units": "", - "legal_range": "*any numeric expression*", - "default": "1 (exporting enabled)", - "required": "No", - "variability": "subhour /end of interval" - }) -}} +<%= member_table( + units: "", + legal_range: "*any numeric expression*", + default: "1 (exporting enabled)", + required: "No", + variability: "subhour /end of interval") + %> -### exTitle - -Type: *string* +**exTitle=*string*** Title for use in export header of User-Defined export. Disallowed if *exType* is not UDT. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "User-defined Export", - "required": "No", - "variability": "constant" - }) -}} - -### exHeader +<%= member_table( + units: "", + legal_range: "", + default: "User-defined Export", + required: "No", + variability: "constant") + %> -Type: *choice* +**exHeader=*choice*** Use NO to suppress the export header which gives the export type, zone, meter, or air handler being exported, time interval, column headings, etc. You might do this if the export is to be subsequently imported to a program that is confused by the header information. Alternatively, one may use COLUMNSONLY to print only the column headings. This can be useful when plotting CSV data in a spreadsheet tool or [DView](https://beopt.nrel.gov/downloadDView). @@ -262,46 +202,37 @@ The *specific* month, day, etc. is NOT shown in the export header (as it is show The field names may be used by a program reading the export to identify the data in the rows which follow; if the program does this, it will not require modification when fields are added to or rearranged in the export in a future version of CSE. -{{ - member_table({ - "units": "", - "legal_range": "YES, YESIFNEW, NO, COLUMNSONLY, COLUMNSONLYIFNEW", - "default": "YES", - "required": "No", - "variability": "constant" - }) -}} - -### exFooter +<%= member_table( + units: "", + legal_range: "YES, YESIFNEW, NO, COLUMNSONLY, COLUMNSONLYIFNEW", + default: "YES", + required: "No", + variability: "constant") %> -Type: *choice* +**exFooter=*choice*** Use NO to suppress the blank line otherwise output as an export "footer". (Exports do not receive the total lines that most reports receive as footers.) -{{ - member_table({ - "units": "", - "legal_range": "YES, NO", - "default": "YES", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "YES, NO", + default: "YES", + required: "No", + variability: "constant") + %> -### endExport +**endExport** Optionally indicates the end of the export definition. Alternatively, the end of the export definition can be indicated by END or by beginning another object. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[export][p_export] +- @[export](#p_export) diff --git a/doc/src/docs/input-data/exportcol.md b/doc/src/docs/input-data/exportcol.md index 90be50cc9..d9a6e0e34 100644 --- a/doc/src/docs/input-data/exportcol.md +++ b/doc/src/docs/input-data/exportcol.md @@ -6,124 +6,100 @@ Use as many EXPORTCOLs as there are values to be shown in each row of the user-d EXPORTCOL members are similar to the corresponding REPORTCOL members. See Section 5.265.1.5 for further discussion. -### colName +**colName** Name of EXPORTCOL. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") + %> -### colExport - -Type: *exName* +**colExport=*exName*** Name of export to which this column belongs. If the EXPORTCOL is given within an EXPORT object, then *colExport* defaults to that export. -{{ - member_table({ - "units": "", - "legal_range": "name of an *EXPORT*", - "default": "*current export, if any*", - "required": "Unless in an *EXPORT*", - "variability": "constant" - }) -}} - -### colVal +<%= member_table( + units: "", + legal_range: "name of an *EXPORT*", + default: "*current export, if any*", + required: "Unless in an *EXPORT*", + variability: "constant") + %> -Type: *expression* +**colVal=*expression*** Value to show in this position in each row of export. -{{ - member_table({ - "units": "", - "legal_range": "*any numeric or string expression*", - "default": "*none*", - "required": "Yes", - "variability": "subhour /end interval" - }) -}} - -### colHead +<%= member_table( + units: "", + legal_range: "*any numeric or string expression*", + default: "*none*", + required: "Yes", + variability: "subhour /end interval") + %> -Type: *string* +**colHead=*string*** Text used for field name in export header. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*colName* or blank", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*colName* or blank", + required: "No", + variability: "constant") + %> -### colWid - -Type: *int* +**colWid=*int*** Maximum width. Leading and trailing spaces and non-significant zeroes are removed from export data to save file space. Specifying a *colWid* less than the default may reduce the maximum number of significant digits output. -{{ - member_table({ - "units": "", - "legal_range": "x $\\ge$ 0", - "default": "13", - "required": "No", - "variability": "constant" - }) -}} - -### colDec +<%= member_table( + units: "", + legal_range: "x $\\ge$ 0", + default: "13", + required: "No", + variability: "constant") + %> -Type: *int* +**colDec=*int*** Number of digits after decimal point. -{{ - member_table({ - "units": "", - "legal_range": "x $\\ge$ 0", - "default": "*flexible format*", - "required": "No", - "variability": "constant" - }) -}} - -### colJust +<%= member_table( + units: "", + legal_range: "x $\\ge$ 0", + default: "*flexible format*", + required: "No", + variability: "constant") + %> -Type: *choice* +**colJust=*choice*** Specifies positioning of data within column: -{{ csv_table("Left, Left justified - Right, Right justified") -}} +<%= csv_table(< false) + Left, Left justified + Right, Right justified +END +%> -### endExportCol +**endExportCol** Optionally indicates the end of the EXPORTCOL. Alternatively, the end of the definition can be indicated by END or by beginning another object. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[exportCol][p_exportcol] +- @[exportCol](#p_exportcol) diff --git a/doc/src/docs/input-data/exportfile.md b/doc/src/docs/input-data/exportfile.md index 1fd3baf59..4fc9c54af 100644 --- a/doc/src/docs/input-data/exportfile.md +++ b/doc/src/docs/input-data/exportfile.md @@ -6,73 +6,63 @@ EXPORTs contain the same information as reports, but formatted for reading by ot Input for EXPORTFILEs and EXPORTs is similar to that for REPORTFILEs and REPORTs, except that there is no page formatting. Refer to their preceding descriptions (Sections 5.24 and 5.25) for more additional discussion. -### xfName +**xfName** Name of EXPORTFILE object. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") + %> -### xfFileName - -Type: *string* +**xfFileName=*string*** path name of file to be written. If no path is specified, the file is written in the current directory. If no extension is specified, .csv is used. -{{ - member_table({ - "units": "", - "legal_range": "*file name, path and extension optional*", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} - -### xfFileStat +<%= member_table( + units: "", + legal_range: "*file name, path and extension optional*", + default: "*none*", + required: "Yes", + variability: "constant") + %> -Type: *choice* +**xfFileStat=*choice*** What CSE should do if file *xfFileName* already exists: -{{ csv_table("OVERWRITE, Overwrite pre-existing file. +<%= csv_table(< false) + OVERWRITE, Overwrite pre-existing file. NEW, Issue error message if file exists. - APPEND, Append new output to present contents of existing file.") -}} + APPEND, Append new output to present contents of existing file. +END +%> If the specified file does not exist, it is created and *xfFileStat* has no effect. -{{ - member_table({ - "units": "", - "legal_range": "OVERWRITE, NEW, APPEND", - "default": "OVERWRITE", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "OVERWRITE, NEW, APPEND", + default: "OVERWRITE", + required: "No", + variability: "constant") + %> -### endExportFile +**endExportFile** Optionally indicates the end of the export file definition. Alternatively, the end of the Export file definition can be indicated by END or by beginning another object. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[exportFile][p_exportfile] +- @[exportFile](#p_exportfile) diff --git a/doc/src/docs/input-data/fndblock.md b/doc/src/docs/input-data/fndblock.md index 87ab69968..33dbfc92a 100644 --- a/doc/src/docs/input-data/fndblock.md +++ b/doc/src/docs/input-data/fndblock.md @@ -4,37 +4,29 @@ Foundation blocks are materials within the two-dimensional domain beyond those d Options for X and Z references are illustrated in the figure below. -![Foundation block references](../assets/images/fd_refs.png) +![Foundation block references](media/fd_refs.png) The default reference is WALLINT, WALLTOP. An example of defining a block for interior wall insulation is shown below. Here the two points defining the block (P1 and P2) are both shown relative to their reference points (Ref1 and Ref2, respectively). -![Foundation block example](../assets/images/fd_block.png) +![Foundation block example](media/fd_block.png) Note: X and Z point values of zero imply that a point is the same as the reference point. The default for X and Z point values is zero since points will often align with one or both of the reference values. It does not matter which of the four corners of a block are used to define the two points as long as they are opposite corners. -### fbMat - -Type: *matName* +**fbMat=*matName*** Name of MATERIAL of the foundation block. -{{ - member_table({ - "units": None, - "legal_range": "Name of a *Material*", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} - -### fbX1Ref +<%= member_table( + legal_range: "Name of a *Material*", + default: "*none*", + required: "Yes", + variability: "constant") %> -Type: *choice* +**fbX1Ref=*choice*** Relative X origin for *fbX1* point. Options are: @@ -44,19 +36,14 @@ Relative X origin for *fbX1* point. Options are: - WALLEXT - FARFIELD -{{ - member_table({ - "units": "", - "legal_range": "*choices above*", - "default": "WALLINT", - "required": "No", - "variability": "constant" - }) -}} - -### fbZ1Ref +<%= member_table( + units: "", + legal_range: "*choices above*", + default: "WALLINT", + required: "No", + variability: "constant") %> -Type: *choice* +**fbZ1Ref=*choice*** Relative Z origin for *fbZ1* point. Options are: @@ -67,51 +54,36 @@ Relative Z origin for *fbZ1* point. Options are: - WALLBOTTOM - DEEPGROUND -{{ - member_table({ - "units": "", - "legal_range": "*choices above*", - "default": "WALLTOP", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*choices above*", + default: "WALLTOP", + required: "No", + variability: "constant") %> -### fbX1 - -Type: *float* +**fbX1=*float*** The X position of the first corner of the block relative to *fbX1Ref*. -{{ - member_table({ - "units": "ft", - "legal_range": "", - "default": "0.0", - "required": "No", - "variability": "constant" - }) -}} - -### fbZ1 +<%= member_table( + units: "ft", + legal_range: "", + default: "0.0", + required: "No", + variability: "constant") %> -Type: *float* +**fbZ1=*float*** The Z position of the first corner of the block relative to *fbZ1Ref*. -{{ - member_table({ - "units": "ft", - "legal_range": "", - "default": "0.0", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "ft", + legal_range: "", + default: "0.0", + required: "No", + variability: "constant") %> -### fbX2Ref - -Type: *choice* +**fbX2Ref=*choice*** Relative X origin for *fbX2* point. Options are: @@ -121,19 +93,14 @@ Relative X origin for *fbX2* point. Options are: - WALLEXT - FARFIELD -{{ - member_table({ - "units": "", - "legal_range": "*choices above*", - "default": "WALLINT", - "required": "No", - "variability": "constant" - }) -}} - -### fbZ2Ref +<%= member_table( + units: "", + legal_range: "*choices above*", + default: "WALLINT", + required: "No", + variability: "constant") %> -Type: *choice* +**fbZ2Ref=*choice*** Relative Z origin for *fbZ2* point. Options are: @@ -144,58 +111,43 @@ Relative Z origin for *fbZ2* point. Options are: - WALLBOTTOM - DEEPGROUND -{{ - member_table({ - "units": "", - "legal_range": "*choices above*", - "default": "WALLTOP", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*choices above*", + default: "WALLTOP", + required: "No", + variability: "constant") %> -### fbX2 - -Type: *float* +**fbX2=*float*** The X position of the second corner of the block relative to *fbX2Ref*. -{{ - member_table({ - "units": "ft", - "legal_range": "", - "default": "0.0", - "required": "No", - "variability": "constant" - }) -}} - -### fbZ2 +<%= member_table( + units: "ft", + legal_range: "", + default: "0.0", + required: "No", + variability: "constant") %> -Type: *float* +**fbZ2=*float*** The Z position of the second corner of the block relative to *fbZ2Ref*. -{{ - member_table({ - "units": "ft", - "legal_range": "", - "default": "0.0", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "ft", + legal_range: "", + default: "0.0", + required: "No", + variability: "constant") %> -### endFndBlock +**endFndBlock** Indicates the end of the foundation block definition. Alternatively, the end of the foundation block definition can be indicated by the declaration of another object or by END. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> diff --git a/doc/src/docs/input-data/foundation.md b/doc/src/docs/input-data/foundation.md index cc4f36ed1..4ed486ef3 100644 --- a/doc/src/docs/input-data/foundation.md +++ b/doc/src/docs/input-data/foundation.md @@ -2,7 +2,7 @@ Foundation describes the two-dimensional relationship between ground-contact SURFACEs (i.e., **sfExCnd** = GROUND) and the surrounding ground. A FOUNDATION is referenced by Floor SURFACEs (see **sfFnd**). FOUNDATIONs are used to describe the two-dimensional features of foundation designs that cannot be captured by the typical one-dimensional constructions. Dimensions from the one-dimensional CONSTRUCTIONs associated with ground-contact floors and walls will automatically be interpreted into the two-dimensional context. -![Two-dimensional context](../assets/images/fd_context.png) +![Two-dimensional context](media/fd_context.png) Any wall SURFACEs in contact with the ground must refer to a Floor SURFACE object (see **sfFndFloor**) to indicate which floor shares the same ground domain as a boundary condition (and establish the two-dimensional context for the basis of the ground calculations). @@ -36,83 +36,61 @@ Some properties applying to all FOUNDATIONs are defined at the TOP level: The following data members describe the dimensions and properties of the foundation wall. For below-grade walls, the CONSTRUCTION (and corresponding width) of the foundation wall is defined by the Wall SURFACEs referencing the FOUNDATION object. For on-grade floors, the CONSTRUCTION of the foundation wall must be defined using **fdFtCon**. The actual height of the foundation wall (from the top of the wall to the top of the slab) is defined by the corresponding SURFACE objects. -![Foundation wall dimensions](../assets/images/fd_dims.png) +![Foundation wall dimensions](media/fd_dims.png) Other components of the foundation design (e.g., interior/exterior insulation) as well as other variations in thermal properties within the ground are defined using FNDBLOCK (foundation block) objects. Any number of FNDBLOCKs can appear after the definition of a FOUNDATION to be properly associated. -### fdName +**fdName** Name of foundation; give after the word FOUNDATION. Required for reference from SURFACE objects. -{{ - member_table({ - "units": None, - "legal_range": "*63 characters*", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( + legal_range: "*63 characters*", + default: "*none*", + required: "Yes", + variability: "constant") %> -### fdWlHtAbvGrd - -Type: *float* +**fdWlHtAbvGrd=*float*** Wall height above grade. -{{ - member_table({ - "units": "ft", - "legal_range": "x $\\geq$ 0", - "default": "0.0", - "required": "No", - "variability": "constant" - }) -}} - -### fdWlDpBlwSlb +<%= member_table( + units: "ft", + legal_range: "x $\\geq$ 0", + default: "0.0", + required: "No", + variability: "constant") %> -Type: *float* +**fdWlDpBlwSlb=*float*** Wall depth below slab. -{{ - member_table({ - "units": "ft", - "legal_range": "x $\\geq$ 0", - "default": "0.0", - "required": "No", - "variability": "constant" - }) -}} - -### fdFtCon +<%= member_table( + units: "ft", + legal_range: "x $\\geq$ 0", + default: "0.0", + required: "No", + variability: "constant") %> -Type: *conName* +**fdFtCon=*conName*** Name of CONSTRUCTION of the footing wall. Only required **IF** it is a slab foundation (i.e., no wall surfaces reference this FOUNDATION object). -{{ - member_table({ - "units": None, - "legal_range": "Name of a *Construction*", - "default": "*none*", - "required": "if a slab foundation", - "variability": "constant" - }) -}} +<%= member_table( + legal_range: "Name of a *Construction*", + default: "*none*", + required: "if a slab foundation", + variability: "constant") %> -### endFoundation +**endFoundation** Indicates the end of the foundation definition. Alternatively, the end of the foundation definition can be indicated by the declaration of another object or by END. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> diff --git a/doc/src/docs/input-data/gain.md b/doc/src/docs/input-data/gain.md index 9ff6a3450..34fa426f8 100644 --- a/doc/src/docs/input-data/gain.md +++ b/doc/src/docs/input-data/gain.md @@ -15,267 +15,207 @@ In the CNE zone mode, the radiant internal gain is distributed to the surfaces i Radiant internal gains are included in the IgnS (Sensible Internal Gain) column in the zone energy balance reports. (They could easily be shown in a separate IgnR column if desired.) Any energy transfer shows two places in the ZEB report, with opposite signs, so that the result is zero -- otherwise it wouldn't be an energy balance. The rest of the reporting story for radiant internal gains turns out to be complex. The specified value of the radiant gain (gnPower \* gnFrZn \* gnFrRad) shows in the IgnS column. To the extent that the gain heats the zone, it also shows negatively in the Masses column, because the zone CAir is lumped with the other masses. To the extent that the gain heats massive surfaces, it also shows negatively in the masses column. To the extent that the gain conducts through windows and quick-model surfaces, it shows negatively in the Conduction column. If the gain conducts through a quick-model surface to another zone, it shows negatively in the Izone (Interzone) column, positively in the Izone column of the receiving zone, and negatively in the receiving zone's Masses or Cond column. -### gnName +**gnName** Name of gain; follows the word GAIN if given. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") + %> -### gnZone - -Type: *znName* +**gnZone=*znName*** Name of ZONE to which heat gains are added. Omitted when GAIN is given as a ZONE subobject. If a TOP subobject (i.e., not a ZONE subobject) and znZone is omitted, heat gains are discarded but energy use is still recorded to gnMeter. This feature can be used to represent energy uses that our outside of conditioned zones (e.g. exterior lighting). -{{ - member_table({ - "units": "", - "legal_range": "*name of ZONE*", - "default": "*parent zone if any*", - "required": "No", - "variability": "constant" - }) -}} - -### gnPower +<%= member_table( + units: "", + legal_range: "*name of ZONE*", + default: "*parent zone if any*", + required: "No", + variability: "constant") + %> -Type: *float* +**gnPower=*float*** Rate of heat addition/energy use. Negative gnPower values may be used to represent heat removal/energy generation. Expressions containing functions are commonly used with this member to schedule the gain power on a daily and/or hourly basis. Refer to the functions section in Section 4 for details and examples. All gains, including electrical, are specified in Btuh units unless associated with DHW use (see gnCtrlDHWSYS), in which case gnPower is specified in Btuh/gal. Note that meter reporting of internal gain is in MBtu (millions of Btu) by default. -{{ - member_table({ - "units": "Btuh", - "legal_range": "*no restrictions*", - "default": "*none*", - "required": "Yes", - "variability": "hourly" - }) -}} +<%= member_table( + units: "Btuh", + legal_range: "*no restrictions*", + default: "*none*", + required: "Yes", + variability: "hourly") + %> -### gnMeter - -Type: *choice* +**gnMeter=*choice*** Name of meter by which this GAIN's gnPower is recorded. If omitted, gain is assigned to no meter and energy use is not accounted in CSE simulation reports; thus, gnMeter should only be omitted for "free" energy sources. -{{ - member_table({ - "units": "", - "legal_range": "*name of METER*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} - -### gnEndUse +<%= member_table( + units: "", + legal_range: "*name of METER*", + default: "*none*", + required: "No", + variability: "constant") + %> -Type: *choice* +**gnEndUse=*choice*** Meter end use to which the GAIN's energy use should be accumulated. -{% include 'enduses.md' %} +<%= insert_file("doc/src/enduses.md") %> -{{ - member_table({ - "units": "", - "legal_range": "*Codes listed above*", - "default": "*none*", - "required": "Required if gnMeter is given", - "variability": "constant" - }) -}} -The gnFrZn, gnFrPl, and gnFrRtn members allow you to allocate the gain among the zone, the zone's plenum, and the zone's return air flow. Values that total to more than 1.0 constitute an error. If they total less than 1, the unallocated portion of the gain is recorded by the meter (if specified) but not transferred into the building. By default, all of the gain not directed to the return or plenum goes to the zone. +<%= member_table( + units: "", + legal_range: "*Codes listed above*", + default: "*none*", + required: "Required if gnMeter is given", + variability: "constant") + %> -### gnFrZn +The gnFrZn, gnFrPl, and gnFrRtn members allow you to allocate the gain among the zone, the zone's plenum, and the zone's return air flow. Values that total to more than 1.0 constitute an error. If they total less than 1, the unallocated portion of the gain is recorded by the meter (if specified) but not transferred into the building. By default, all of the gain not directed to the return or plenum goes to the zone. -Type: *float* +**gnFrZn=*float*** Fraction of gain going to zone. gnFrLat (below) gives portion of this gain that is latent, if any; the remainder is sensible. <% if not_yet_implemented %> -{{ - member_table({ - "units": "", - "legal_range": "gnFrZn + gnFrPl + gnFrRtn $\leq$ 1", - "default": "*1 - gnFrPl - gnFrRtn*", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "", + legal_range: "gnFrZn + gnFrPl + gnFrRtn $\leq$ 1", + default: "*1 - gnFrPl - gnFrRtn*", + required: "No", + variability: "hourly") + %> <% else %> -{{ - member_table({ - "units": "", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", - "default": "1.", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "1.", + required: "No", + variability: "hourly") + %> <% end %> -### gnFrPl - -Type: *float* +**gnFrPl=*float*** Fraction of gain going to plenum. -{{ - member_table({ - "units": "", - "legal_range": "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", - "default": "0.", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "", + legal_range: "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", + default: "0.", + required: "No", + variability: "hourly") %> -### gnFrRtn - -Type: *float* +**gnFrRtn=*float*** Fraction of gain going to return. -{{ - member_table({ - "units": "", - "legal_range": "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", - "default": "0.", - "required": "No", - "variability": "hourly" - }) -}} - -### gnFrRad +<%= member_table( + units: "", + legal_range: "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", + default: "0.", + required: "No", + variability: "hourly") %> -Type: *float* +**gnFrRad=*float*** Fraction of total gain going to zone (gnFrZn) that is radiant rather than convective or latent. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", - "default": "0.0", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "0.0", + required: "No", + variability: "hourly") + %> -### gnFrLat - -Type: *float* +**gnFrLat=*float*** Fraction of total gain going to zone (gnFrZn) that is latent heat (moisture addition). -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", - "default": "0.0", - "required": "No", - "variability": "hourly" - }) -}} - -### gnDlFrPow +<%= member_table( + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "0.0", + required: "No", + variability: "hourly") + %> -Type: *float* +**gnDlFrPow=*float*** Hourly power reduction factor, typically used to modify lighting power to account for daylighting. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", - "default": "1.0", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "1.0", + required: "No", + variability: "hourly") + %> -### gnCtrlDHWSYS - -Type: *dhwsysName* +**gnCtrlDHWSYS=*dhwsysName*** Name of a DHWSYS whose water use modulates gnPower. For example, electricity use of water-using appliances (e.g. dishwasher or clothes washer) can be modeled based on water use, ensuring that the uses are synchronized. When this feature is used, gnPower should be specified in Btuh/gal. -{{ - member_table({ - "units": "", - "legal_range": "*name of a DHWSYS*", - "default": "no DHWSYS/GAIN linkage", - "required": "No", - "variability": "constant" - }) -}} - -### gnCtrlDHWMETER +<%= member_table( + units: "", + legal_range: "*name of a DHWSYS*", + default: "no DHWSYS/GAIN linkage", + required: "No", + variability: "constant") + %> -Type: *dhwMtrName* +**gnCtrlDHWMETER=*dhwMtrName*** Allows gains to track water usage such as dishwashers, clothes washers, etc. -{{ - member_table({ - "units": "", - "legal_range": "*name of DHWMETER*", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} - -### gnCtrlDHWEndUse +<%= member_table( + units: "", + legal_range: "*name of DHWMETER*", + default: "0", + required: "No", + variability: "constant") %> -Type: *dhwEndUseName* +**gnCtrlDHWEndUse=*dhwEndUseName*** Name of the DHWSYS end use consumption that modulates gnPower. See DHWMETER for DHW end use definitions. -{{ - member_table({ - "units": "", - "legal_range": "DHW end use", - "default": "Total", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "DHW end use", + default: "Total", + required: "No", + variability: "constant") + %> -### endGain +**endGain** Optional to indicate the end of the GAIN definition. Alternatively, the end of the gain definition can be indicated by END or by the declaration of another object. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[gain][p_gain] +- @[gain](#p_gain) diff --git a/doc/src/docs/input-data/glazetype.md b/doc/src/docs/input-data/glazetype.md index a44213aab..a85632bc4 100644 --- a/doc/src/docs/input-data/glazetype.md +++ b/doc/src/docs/input-data/glazetype.md @@ -2,39 +2,31 @@ GLAZETYPE constructs an object of class GLAZETYPE that represents a glazing type for use in WINDOWs. -### gtName +**gtName** Name of glazetype. Required for reference from WINDOW objects, below. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "Yes", + variability: "constant") + %> -### gtModel - -Type: *choice* +**gtModel=*choice*** Selects model to be used for WINDOWs based on this GLAZETYPE. -{{ - member_table({ - "units": "", - "legal_range": "SHGC, ASHWAT", - "default": "SHGC", - "required": "No", - "variability": "constant" - }) -}} - -### gtU +<%= member_table( + units: "", + legal_range: "SHGC, ASHWAT", + default: "SHGC", + required: "No", + variability: "constant") + %> -Type: *float* +**gtU=*float*** Glazing conductance (U-factor without surface films, therefore not actually a U-factor but a C-factor). Used as wnU default; an error message will be issued if the U value is not given in the window (wnU) nor in the glazeType (gtU). Preferred Approach: To use accurately with standard winter rated U-factor from ASHRAE or NFRC enter as: @@ -44,95 +36,73 @@ Where 0.85 is the sum of the interior (0.68) and exterior (0.17) design air film Approach 2. Enter gtU=U-factor and let the wnInH and wnExH default. This approach systematically underestimates the window U-factor because it adds the wnExfilm resistance to 1/U-factor thereby double counting the exterior film resistance. This approach will also yield incorrect results for gnFrad internal gain since the high wnInH will put almost all the gain back in the space. -{{ - member_table({ - "units": "Btuh/ft^2^-^o^F", - "legal_range": "*x* $>$ 0", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "Btuh/ft^2^-^o^F", + legal_range: "*x* $>$ 0", + default: "*none*", + required: "No", + variability: "constant") + %> -### gtUNFRC - -Type: *float* +**gtUNFRC=*float*** Fenestration system (including frame) U-factor evaluated at NFRC heating conditions. For ASHWAT windows, a value for the NFRC U-factor is required, set via gtUNFRC or wnUNFRC. -{{ - member_table({ - "units": "Btuh/ft^2^-^o^F", - "legal_range": "*x* $>$ 0", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} - -### gtSHGC +<%= member_table( + units: "Btuh/ft^2^-^o^F", + legal_range: "*x* $>$ 0", + default: "*none*", + required: "No", + variability: "constant") + %> -Type: *float* +**gtSHGC=*float*** Glazing Solar Heat Gain Coefficient: fraction of normal beam insolation which gets through glass to space inside. We recommend using this to represent the glass normal transmissivity characteristic only, before shading and framing effects -{{ - member_table({ - "units": "fraction", - "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( + units: "fraction", + legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", + default: "*none*", + required: "Yes", + variability: "constant") + %> -### gtSMSO - -Type: *float* +**gtSMSO=*float*** SHGC multiplier with shades open. May be overriden in the specific window input. -{{ - member_table({ - "units": "fraction", - "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", - "default": "1.0", - "required": "No", - "variability": "Monthly - Hourly" - }) -}} - -### gtSMSC +<%= member_table( + units: "fraction", + legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", + default: "1.0", + required: "No", + variability: "Monthly - Hourly") + %> -Type: *float* +**gtSMSC=*float*** SHGC multiplier with shades closed. May be overriden in the specific window input. -{{ - member_table({ - "units": "fraction", - "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", - "default": "gtSMSO (no shades)", - "required": "No", - "variability": "Monthly - Hourly" - }) -}} - -### gtFMult +<%= member_table( + units: "fraction", + legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", + default: "gtSMSO (no shades)", + required: "No", + variability: "Monthly - Hourly") + %> -Type: *float* +**gtFMult=*float*** Framing multiplier used if none given in window, for example .9 if frame and mullions reduce the solar gain by 10%. Default of 1.0 implies frame/mullion effects allowed for in gtSHGC's or always specified in Windows. -{{ - member_table({ - "units": "fraction", - "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", - "default": "gtSHGCO", - "required": "No", - "variability": "Monthly - Hourly" - }) -}} +<%= member_table( + units: "fraction", + legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", + default: "gtSHGCO", + required: "No", + variability: "Monthly - Hourly") + %> **gtPySHGC =*float*** @@ -146,126 +116,98 @@ Four float values separated by commas. Coefficients for incidence angle SHGC mul     beamXmisvty = gtSHGCO \* angMult (shades open) -{{ - member_table({ - "units": "float", - "legal_range": "*any*", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( + units: "float", + legal_range: "*any*", + default: "*none*", + required: "Yes", + variability: "constant") + %> -### gtDMSHGC - -Type: *float* +**gtDMSHGC=*float*** SHGC diffuse multiplier, applied to gtSHGC to determine transmissivity for diffuse radiation. -{{ - member_table({ - "units": "fraction", - "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} - -### gtDMRBSol +<%= member_table( + units: "fraction", + legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", + default: "*none*", + required: "Yes", + variability: "constant") + %> -Type: *float* +**gtDMRBSol=*float*** SHGC diffuse multiplier, applied to qtSHGC to determine transmissivity for diffuse radiation reflected back out the window. Misnamed as a reflectance. Assume equal to DMSHGC if no other data available. -{{ - member_table({ - "units": "fraction", - "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} - -### gtNGlz +<%= member_table( + units: "fraction", + legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", + default: "*none*", + required: "Yes", + variability: "constant") + %> -Type: *int* +**gtNGlz=*int*** Number of glazings in the Glazetype (bare glass only, not including any interior or exterior shades). -{{ - member_table({ - "units": "", - "legal_range": "*0* $<$ *x* $\\leq$ *4*", - "default": "2", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*0* $<$ *x* $\\leq$ *4*", + default: "2", + required: "No", + variability: "constant") + %> -### gtExShd - -Type: *choice* +**gtExShd=*choice*** Exterior shading type (ASHWAT only). -{{ - member_table({ - "units": "", - "legal_range": "NONE INSCRN", - "default": "NONE", - "required": "No", - "variability": "constant" - }) -}} - -### gtInShd +<%= member_table( + units: "", + legal_range: "NONE INSCRN", + default: "NONE", + required: "No", + variability: "constant") + %> -Type: *choice* +**gtInShd=*choice*** Interior shade type (ASHWAT only). -{{ - member_table({ - "units": "", - "legal_range": "NONE DRAPEMED", - "default": "NONE", - "required": "No", - "variability": "constant" - }) -}} - -### gtDirtLoss +<%= member_table( + units: "", + legal_range: "NONE DRAPEMED", + default: "NONE", + required: "No", + variability: "constant") + %> -Type: *float* +**gtDirtLoss=*float*** Glazing dirt loss factor. -{{ - member_table({ - "units": "fraction", - "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "fraction", + legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", + default: "0", + required: "No", + variability: "constant") + %> -### endGlazeType +**endGlazeType** Optional to indicates the end of the Glazetype. Alternatively, the end of the GLAZETYPE definition can be indicated by "END" or by beginning another object -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[glazeType][p_glazetype] +- @[glazeType](#p_glazetype) diff --git a/doc/src/docs/input-data/heatplant.md b/doc/src/docs/input-data/heatplant.md index 299bc5458..4108a7376 100644 --- a/doc/src/docs/input-data/heatplant.md +++ b/doc/src/docs/input-data/heatplant.md @@ -8,56 +8,45 @@ The BOILERs in the HEATPLANT can be grouped into *STAGES* of increasing capacity For each HEATPLANT, piping loss is modeled, as a constant fraction of the BOILER capacity of the heatPlant's most powerful stage. This heat loss is added to the load whenever the plant is operating; as modeled, the heat loss is independent of load, weather, or any other variables. -### heatplantName +**heatplantName** Name of HEATPLANT object, given immediately after the word HEATPLANT. This name is used to refer to the heatPlant in *tuhcHeatplant* and *ahhcHeatplant* commands. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "Yes", + variability: "constant") %> -### hpSched - -Type: *choice* +**hpSched=*choice*** Heat plant schedule: hourly variable choice of OFF, AVAIL, or ON. -{{ csv_table("OFF, HEATPLANT will not supply hot water regardless of demand. All loads (HW coils and heat exchangers) should be scheduled off when the plant is off; an error will occur if a coil calls for heat when its plant is off. +<%= csv_table(< false) +OFF, HEATPLANT will not supply hot water regardless of demand. All loads (HW coils and heat exchangers) should be scheduled off when the plant is off; an error will occur if a coil calls for heat when its plant is off. AVAIL, HEATPLANT will operate when one or more loads demand heat. -ON, HEATPLANT runs unconditionally. When no load wants heat, least powerful (first) stage runs.") -}} - -{{ - member_table({ - "units": "", - "legal_range": "OFF, AVAIL, or ON", - "default": "AVAIL", - "required": "No", - "variability": "hourly" - }) -}} +ON, HEATPLANT runs unconditionally. When no load wants heat, least powerful (first) stage runs. +END +%> -### hpPipeLossF +<%= member_table( + units: "", + legal_range: "OFF, AVAIL, or ON", + default: "AVAIL", + required: "No", + variability: "hourly") %> -Type: *float* +**hpPipeLossF=*float*** Heat plant pipe loss: heat assumed lost from piping connecting boilers to loads whenever the HEATPLANT is operating, expressed as a fraction of the boiler capacity of the plant's most powerful stage. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", - "default": "0.01", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "0.01", + required: "No", + variability: "constant") %> **hpStage1=boilerName, boilerName, boilerName, ...** @@ -71,30 +60,24 @@ If none of *hpStage1* through *hpStage7* are given, CSE supplies a single defaul A comma must be entered between boiler names and after the word ALL\_BUT. -{{ - member_table({ - "units": "", - "legal_range": "1 to 7 names;ALL\_BUT and 1 to 6 names;ALL", - "default": "*hpStage1* = ALL", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "1 to 7 names;ALL\_BUT and 1 to 6 names;ALL", + default: "*hpStage1* = ALL", + required: "No", + variability: "constant") %> -### endHeatplant +**endHeatplant** Optionally indicates the end of the HEATPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[heatPlant][p_heatplant] +- @[heatPlant](#p_heatplant) diff --git a/doc/src/docs/input-data/holiday.md b/doc/src/docs/input-data/holiday.md index a44165ee7..bcac9d04a 100644 --- a/doc/src/docs/input-data/holiday.md +++ b/doc/src/docs/input-data/holiday.md @@ -7,133 +7,105 @@ Examples and the list of default holidays are given after the member description -### hdName +**hdName** Name of holiday: must follow the word HOLIDAY. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "Yes", + variability: "constant") + %> A holiday may be specified by date or via a rule such as "Fourth Thursday in November". To specify by date, give hdDateTrue, and also hdDateObs or hdOnMonday if desired. To specify by rule, give all three of hdCase, hdMon, and hdDow. -### hdDateTrue - -Type: *date* +**hdDateTrue*=date*** The true date of a holiday, even if not celebrated on that day. -{{ - member_table({ - "units": "", - "legal_range": "*date*", - "default": "*blank*", - "required": "No", - "variability": "constant" - }) -}} - -### hdDateObs +<%= member_table( + units: "", + legal_range: "*date*", + default: "*blank*", + required: "No", + variability: "constant") + %> -Type: *date* +**hdDateObs*=date*** The date that a holiday will be observed. Allowed only if hdDateTrue given and hdOnMonday not given. -{{ - member_table({ - "units": "", - "legal_range": "*date*", - "default": "*hdDateTrue*", - "required": "No", - "variability": "constant" - }) -}} - -### hdOnMonday +<%= member_table( + units: "", + legal_range: "*date*", + default: "*hdDateTrue*", + required: "No", + variability: "constant") + %> -Type: *choice* +**hdOnMonday=*choice*** If YES, holiday is observed on the following Monday if the true date falls on a weekend. Allowed only if hdDateTrue given and hdDateObs not given. Note: there is no provision to celebrate a holiday that falls on a Saturday on *Friday* (as July 4 was celebrated in 1992). -{{ - member_table({ - "units": "", - "legal_range": "YES/NO", - "default": "YES", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "YES/NO", + default: "YES", + required: "No", + variability: "constant") + %> -### hdCase - -Type: *choice* +**hdCase=*choice*** Week of the month that the holiday is observed. hdCase, hdMon, and hdDow may be given only if hdDateTrue, hdDateObs, and hdOnMonday are not given. -{{ - member_table({ - "units": "", - "legal_range": "FIRST SECOND THIRD FOURTH LAST", - "default": "FIRST", - "required": "No", - "variability": "constant" - }) -}} - -### hdMon +<%= member_table( + units: "", + legal_range: "FIRST SECOND THIRD FOURTH LAST", + default: "FIRST", + required: "No", + variability: "constant") + %> -Type: *choice* +**hdMon=*choice*** Month that the holiday is observed. -{{ - member_table({ - "units": "", - "legal_range": "JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC", - "default": "*none*", - "required": "required if hdCase given", - "variability": "constant" - }) -}} - -### hdDow +<%= member_table( + units: "", + legal_range: "JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC", + default: "*none*", + required: "required if hdCase given", + variability: "constant") + %> -Type: *choice* +**hdDow*=choice*** Day of the week that the holiday is observed. -{{ - member_table({ - "units": "", - "legal_range": "SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY", - "default": "MONDAY", - "required": "required if hdCase given", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY", + default: "MONDAY", + required: "required if hdCase given", + variability: "constant") + %> -### endHoliday +**endHoliday** Indicates the end of the holiday definition. Alternatively, the end of the holiday definition can be indicated by "END" or simply by beginning another object. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "", - "required": "*none*", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "", + required: "*none*", + variability: "constant") + %> Examples of valid HOLIDAY object specifications: @@ -167,7 +139,8 @@ Examples of valid HOLIDAY object specifications: As with reports, Holidays are automatically generated for a standard set of Holidays. The following are the default holidays automatically defined by CSE: -{{ csv_table("New Year's Day, \*January 1 +<%= csv_table(< false) + New Year's Day, \*January 1 M L King Day, \*January 15 President's Day, 3rd Monday in February Memorial Day, last Monday in May @@ -176,8 +149,9 @@ As with reports, Holidays are automatically generated for a standard set of Holi Columbus Day, 2nd Monday in October Veterans Day, \*November 11 Thanksgiving, 4th Thursday in November - Christmas, \*December 25") -}} + Christmas, \*December 25 +END +%> \* *observed on the following Monday if falls on a weekend, except as otherwise noted:* @@ -193,4 +167,4 @@ Note that the name must be spelled *exactly* as listed above. **Related Probes:** -- @[holiday][p_holiday] +- @[holiday](#p_holiday) diff --git a/doc/src/docs/input-data/importfile.md b/doc/src/docs/input-data/importfile.md index b24708213..15005a9dd 100644 --- a/doc/src/docs/input-data/importfile.md +++ b/doc/src/docs/input-data/importfile.md @@ -1,17 +1,19 @@ # IMPORTFILE -IMPORTFILE allows specification of a file from which external data can be accessed using the [import()][import] and [importStr()][importstr] functions. This allows external values to be referenced in expressions. Any number of IMPORTFILEs can be defined and any number of import()/importStr() references can be made to a give IMPORTFILE. +IMPORTFILE allows specification of a file from which external data can be accessed using the [import()](#import) and [importStr()](#importstr) functions. This allows external values to be referenced in expressions. Any number of IMPORTFILEs can be defined and any number of import()/importStr() references can be made to a give IMPORTFILE. Import files are text files containing an optional header and comma-separated data fields. With -the header present, the structure of an import file matches that of an [EXPORT][export] file. This makes it convenient to import unmodified files EXPORTed from prior runs. The file structure is as follows (noting that the header in lines 1-4 should not be present when imHeader=NO) -- +the header present, the structure of an import file matches that of an [EXPORT](#export) file. This makes it convenient to import unmodified files EXPORTed from prior runs. The file structure is as follows (noting that the header in lines 1-4 should not be present when imHeader=NO) -- -{{ csv_table("Line, Contents, Notes +<%= csv_table(< true) + Line, Contents, Notes 1, *runTitle*, *runNumber*, read but not checked 2, *timestamp*, in quotes, read but not checked 3, *title*, *freq*, should match imTitle and imFreq (see below) 4, *colName1*, *colName2*, ..., comma separated column names optionally in quotes - 5 .., *val1*, *val2*, ..., comma separated values (string values optionally in quotes)", True) -}} + 5 .., *val1*, *val2*, ..., comma separated values (string values optionally in quotes) +END +%> Example import file imp1.csv @@ -51,116 +53,85 @@ Notes -### imName +**imName** Name of IMPORTFILE object (for reference from Import()). -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") %> -### imFileName - -Type: *string* +**imFileName=*string*** Gives path name of file to be read. If directory is specified, CSE first looks for the file the current directory and searches include paths specified by the -I command line parameter (if any). -{{ - member_table({ - "units": "", - "legal_range": "*file name, path optional*", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} - -### imTitle +<%= member_table( + units: "", + legal_range: "*file name, path optional*", + default: "*none*", + required: "Yes", + variability: "constant") %> -Type: *string* +**imTitle=*string*** Title expected to be found on line 3 of the import file. A warning is issued if a non-blank imTitle does not match the import file title. -{{ - member_table({ - "units": "", - "legal_range": "Text string", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} - -### imFreq +<%= member_table( + units: "", + legal_range: "Text string", + default: "*none*", + required: "No", + variability: "constant") %> -Type: *choice* +**imFreq=*choice*** Specifies the interval at which CSE reads from the import file. Data is read at the beginning of the indicated interval and buffered in memory for access in expressions via import() or importStr(). -{{ - member_table({ - "units": "", - "legal_range": "YEAR, MONTH, DAY, HOUR, or SUBHOUR", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "YEAR, MONTH, DAY, HOUR, or SUBHOUR", + default: "*none*", + required: "Yes", + variability: "constant") %> -### imHeader - -Type: *choice* +**imHeader=*choice*** Indicates whether the import file include a 4 line header, as described above. If NO, the import file should contain only comma-separated data rows and data items can be referenced only by 1-based column number. -{{ - member_table({ - "units": "", - "legal_range": "YES NO", - "default": "YES", - "required": "No", - "variability": "constant" - }) -}} - -### imBinary +<%= member_table( + units: "", + legal_range: "YES NO", + default: "YES", + required: "No", + variability: "constant") %> -Type: *choice* +**imBinary=*choice*** Adds the possibility to output the file as a binary option. -{{ - member_table({ - "units": "", - "legal_range": "YES NO", - "default": "No", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "YES NO", + default: "No", + required: "No", + variability: "constant") %> -### endImportFile +**endImportFile** Optionally indicates the end of the import file definition. Alternatively, the end of the import file definition can be indicated by END or by beginning another object. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[importFile][p_importfile] -- @[impFileFldNames][p_impfilefldnames] +- @[importFile](#p_importfile) +- @[impFileFldNames](#p_impfilefldnames) diff --git a/doc/src/docs/input-data/index.md b/doc/src/docs/input-data/index.md index 769995741..9df80f987 100644 --- a/doc/src/docs/input-data/index.md +++ b/doc/src/docs/input-data/index.md @@ -1,42 +1,33 @@ # Input Data -This section describes the input for each CSE class (object type). For each object you wish to define, the usual input consists of the class name, your name for the particular object (usually), and zero or more member value statements of the form _name=expression_. The name of each subsection of this section is a class name (HOLIDAY, MATERIAL, CONSTRUCTION, etc.). The object name, if given, follows the class name; it is the first thing in each description (hdName, matName, conName, etc.). Exception: no statement is used to create or begin the predefined top-level object "Top" (of class TOP); its members are given without introduction. +This section describes the input for each CSE class (object type). For each object you wish to define, the usual input consists of the class name, your name for the particular object (usually), and zero or more member value statements of the form *name=expression*. The name of each subsection of this section is a class name (HOLIDAY, MATERIAL, CONSTRUCTION, etc.). The object name, if given, follows the class name; it is the first thing in each description (hdName, matName, conName, etc.). Exception: no statement is used to create or begin the predefined top-level object "Top" (of class TOP); its members are given without introduction. -After the object name, each member's description is introduced with a line of the form _name=type_. _Type_ indicates the appropriate expression type for the value: +After the object name, each member's description is introduced with a line of the form *name=type*. *Type* indicates the appropriate expression type for the value: -- _float_ +- *float* -- _int_ +- *int* -- _string_ +- *string* -- \_\_\_\__name_ (object name for specified type of object) +- \_\_\_\_*name* (object name for specified type of object) -- _choice_ +- *choice* -- _date_ +- *date* -These types discussed in the section on [expression types][expression-types]. +These types discussed in the section on [expression types](#expression-types). Each member's description continues with a table of the form: -{{ - member_table({ - "units": "ft^2^", - "legal_range": "x > 0", - "default": "wnHeight \\\* wnWidth", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "ft^2^", + legal_range: "x > 0", + default: "wnHeight \\\* wnWidth", + required: "No", + variability: "constant") %> where the column headers have the following meaning: -{{ csv_table("**Units**,units of measure (lb., ft, Btu, etc.) where applicable -**Legal Range**,limits of valid range for numeric inputs; valid choices for *choice* members, etc. -**Default**,value assumed if member not given; applicable only if not required -**Required**,YES if you must give this member -**Variability**,how often the given expression can change: hourly, daily, etc. See sections on [expressions][expressions-overview], [statements][member-statements], and [variation frequencies][variation-frequencies-revisited]") -}} +<%= csv_table_from_file("input-data--member-table-definition.csv", row_header: false) %> - diff --git a/doc/src/docs/input-data/izxfer.md b/doc/src/docs/input-data/izxfer.md index 7d380c390..99bb52b21 100644 --- a/doc/src/docs/input-data/izxfer.md +++ b/doc/src/docs/input-data/izxfer.md @@ -7,27 +7,23 @@ The AIRNET types are used in a multi-cell pressure balancing model that finds zo Note that fan-driven types assume pressure-independent flow. That is, the specified flow is included in the zone pressure balance but the modeled fan flow does not change with zone pressure. The assumption is that in realistic configurations, zone pressure will generally be close to ambient pressure. Unbalanced fan ventilation in a zone without relief area will result in runtime termination due to excessively high or low pressure. -### izName +**izName** Optional name of interzone transfer; give after the word "IZXFER" if desired. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") %> -### izNVType - -Type: *choice* +**izNVType=*choice*** Choice specifying the type of ventilation or leakage model to be used. -{{ csv_table("NONE, No interzone ventilation +<%= csv_table(< false) + NONE, No interzone ventilation ONEWAY, Uncontrolled flow from izZn1 to izZn2 when izZn1 air temperature exceeds izZn2 air temperature (using ASHRAE high/low vent model). TWOWAY, Uncontrolled flow in either direction (using ASHRAE high/low vent model). AIRNETIZ, Single opening to another zone (using pressure balance AirNet model). Flow is driven by buoyancy. @@ -38,102 +34,78 @@ Choice specifying the type of ventilation or leakage model to be used. AIRNETEXTFLOW, Specified flow from exterior to zone (either direction). Behaves identically to AIRNETEXTFAN except no electricity is consumed and no fan heat is added to the air stream. AIRNETIZFLOW, Specified flow between two zones (either direction). Behaves identically to AIRNETIZFAN except no electricity is consumed and no fan heat is added to the air stream. AIRNETHERV, Heat or energy recovery ventilator. Supply and exhaust air are exchanged with the exterior with heat and/or moisture exchange between the air streams. Flow may or may not be balanced. - AIRNETDOAS, Air supplied from and/or exhausted to a centralized DOAS fans.") -}} + AIRNETDOAS, Air supplied from and/or exhausted to a centralized DOAS fans. +END +%> Note that optional inputs izTEx, izWEx, and izWindSpeed can override the outside conditions assumed for ivNVTypes that are connected to ambient (AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, and AIRNETHERV). -{{ - member_table({ - "units": "", - "legal_range": "*choices above*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} - -### izAFCat +<%= member_table( + units: "", + legal_range: "*choices above*", + default: "*none*", + required: "No", + variability: "constant") %> -Type: *choice* +**izAFCat=*choice*** Choice indicating air flow category used *only* for recording air flow results to an AFMETER. izAFCat has no effect for non-AIRNET IZXFERs. izAFCat is not used unless the associated ZONE(s) specify znAFMtr. Choices are: -{{ csv_table("InfilEx, Infiltration from ambient +<%= csv_table(< false) + InfilEx, Infiltration from ambient VentEx, Natural ventilation from ambient FanEx, Forced ventilation from ambient InfilIz, Interzone infiltration VentIz, Interzone natural ventilation FanIz, Interzone forced ventilation DuctLk, Duct leakage - HVAC, HVAC air") -}} + HVAC, HVAC air +END +%> Default values for izAFCat are generally adequate *except* that natural ventilation IZXFERs are by default categorized as infiltration. It is thus recommended that izAfCat be omitted except that ventilation IZXFERs (e.g. representing openable windows) should include izAfCat=VentEx (or VentIz). -{{ - member_table({ - "units": "", - "legal_range": "*choices above*", - "default": "derived from IZXFER characteristics", - "required": "No", - "variability": "constant" - }) -}} - -### izZn1 +<%= member_table( + units: "", + legal_range: "*choices above*", + default: "derived from IZXFER characteristics", + required: "No", + variability: "constant") %> -Type: *znName* +**izZn1=*znName*** Name of primary zone. Flow rates $>$ 0 are into the primary zone. -{{ - member_table({ - "units": "", - "legal_range": "name of a ZONE", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "name of a ZONE", + default: "*none*", + required: "Yes", + variability: "constant") %> -### izZn2 - -Type: *znName* +**izZn2=*znName*** Name of secondary zone. -{{ - member_table({ - "units": "", - "legal_range": "name of a ZONE", - "default": "*none*", - "required": "required unless constant izNVType = AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, or AIRNETHERV", - "variability": "constant" - }) -}} - -### izDOAS +<%= member_table( + units: "", + legal_range: "name of a ZONE", + default: "*none*", + required: "required unless constant izNVType = AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, or AIRNETHERV", + variability: "constant") %> -Type: *oaName* +**izDOAS=*oaName*** Name of DOAS where air is supplied from (**izVfMin** > 0), or exhausting to (**izVfMin** < 0). -{{ - member_table({ - "units": None, - "legal_range": "name of a DOAS", - "default": None, - "required": "when izNVType = AIRNETDOAS", - "variability": "constant" - }) -}} +<%= member_table( + legal_range: "name of a DOAS", + required: "when izNVType = AIRNETDOAS", + variability: "constant") %> -### izLinkedFlowMult - -Type: *float* +**izLinkedFlowMult=*float*** Specifies a multiplier applied to air flow to/from any associated DOAS. This supports use of a single modeled zone to represent multiple actual zones while preserving the total DOAS air flow and energy consumption. @@ -141,70 +113,50 @@ For example, consider a DOAS-linked IZXFER with izVfMin = 100 and izLinkedFlowMu Note izLinkedFlowMult has no effect on the air flow to or from the zone specified by izZn1. -{{ - member_table({ - "units": "--", - "legal_range": "*x* $\\gt$ 0", - "default": "1", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "--", + legal_range: "*x* $\\gt$ 0", + default: "1", + required: "No", + variability: "constant") %> Give izHConst for a conductive transfer between zones. Give izNVType other than NONE and the following variables for a convective (air) transfer between the zones or between a zone and outdoors. Both may be given if desired. Not known to work properly as of July 2011 -### izHConst - -Type: *float* +**izHConst=*float*** Conductance between zones. -{{ - member_table({ - "units": "Btu/^o^F", - "legal_range": "*x* $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "Btu/^o^F", + legal_range: "*x* $\\ge$ 0", + default: "0", + required: "No", + variability: "hourly") %> -### izALo - -Type: *float* +**izALo=*float*** Area of low or only vent (typically VentOff) -{{ - member_table({ - "units": "ft^2^", - "legal_range": "*x* $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "hourly" - }) -}} - -### izAHi +<%= member_table( + units: "ft^2^", + legal_range: "*x* $\\ge$ 0", + default: "0", + required: "No", + variability: "hourly") %> -Type: *float* +**izAHi=*float*** Additional vent area (high vent or VentOn). If used in AIRNET, izAHi > izALo typically but this is not required. -{{ - member_table({ - "units": "ft^2^", - "legal_range": "*x* $\\ge$ 0", - "default": "izALo", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "ft^2^", + legal_range: "*x* $\\ge$ 0", + default: "izALo", + required: "No", + variability: "hourly") %> -### izTEx - -Type: *float* +**izTEx=*float*** Alternative exterior air dry bulb temperature for this vent. Allowed only with izNVTypes that use outdoor air (AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, and AIRNETHERV). If given, izTEx overrides the outdoor dry-bulb temperature read from the weather file or derived from design conditions. @@ -216,19 +168,14 @@ One use of izTEx is in representation of leaks in surfaces adjacent to zones not This will allow Z1's pressure to be realistic without inducing thermal loads that would occur if the leak source had outdoor conditions. -{{ - member_table({ - "units": "^o^F", - "legal_range": "", - "default": "Outdoor dry-bulb", - "required": "No", - "variability": "subhourly" - }) -}} - -### izWEx +<%= member_table( + units: "^o^F", + legal_range: "", + default: "Outdoor dry-bulb", + required: "No", + variability: "subhourly") %> -Type: *float* +**izWEx=*float*** Alternative exterior air humidity ratio seen by this vent. Allowed only with izNVTypes that use outdoor air (AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, and AIRNETHERV). If given, izWEx overrides the outdoor humidity ratio derived from weather file data or design conditions. @@ -236,19 +183,14 @@ Caution: izWEx is not checked against saturation -- there is no verification tha See izTEx example just above. -{{ - member_table({ - "units": "", - "legal_range": "$\\gt$ 0", - "default": "Outdoor humidity ratio", - "required": "No", - "variability": "subhourly" - }) -}} - -### izWindSpeed +<%= member_table( + units: "", + legal_range: "$\\gt$ 0", + default: "Outdoor humidity ratio", + required: "No", + variability: "subhourly") %> -Type: *float* +**izWindSpeed=*float*** Alternative windspeed seen by this vent. Allowed only with izNVTypes that use outdoor air (AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, and AIRNETHERV). If given, izWindSpeed overrides the windspeed read from the weather file or derived from design conditions. @@ -256,354 +198,246 @@ No adjustments such as TOP windF or ZONE znWindFLkg are applied to izWindSpeed w Note that izCpr must be non-0 for izWindSpeed to have any effect. -{{ - member_table({ - "units": "mph", - "legal_range": "$\\ge$ 0", - "default": "Zone adjusted windspeed", - "required": "No", - "variability": "subhourly" - }) -}} +<%= member_table( + units: "mph", + legal_range: "$\\ge$ 0", + default: "Zone adjusted windspeed", + required: "No", + variability: "subhourly") %> -### izL1 - -Type: *float* +**izL1=*float*** Length or width of AIRNETHORIZ opening. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $>$ 0", - "default": "*none*", - "required": "if izNVType = AIRNETHORIZ", - "variability": "constant" - }) -}} - -### izL2 +<%= member_table( + units: "ft", + legal_range: "*x* $>$ 0", + default: "*none*", + required: "if izNVType = AIRNETHORIZ", + variability: "constant") %> -Type: *float* +**izL2=*float*** Width or length of AIRNETHORIZ opening. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $>$ 0", - "default": "*none*", - "required": "if izNVType = AIRNETHORIZ", - "variability": "constant" - }) -}} +<%= member_table( + units: "ft", + legal_range: "*x* $>$ 0", + default: "*none*", + required: "if izNVType = AIRNETHORIZ", + variability: "constant") %> -### izStairAngle - -Type: *float* +**izStairAngle=*float*** Stairway angle for AIRNETHORIZ opening. Use 90 for an open hole. Note that 0 prevents flow. -{{ - member_table({ - "units": "^o^ degrees", - "legal_range": "*x* $>$ 0", - "default": "34", - "required": "No", - "variability": "constant" - }) -}} - -### izHD +<%= member_table( + units: "^o^ degrees", + legal_range: "*x* $>$ 0", + default: "34", + required: "No", + variability: "constant") %> -Type: *float* +**izHD=*float*** Vent center-to-center height difference (for TWOWAY) or vent height above nominal 0 level (for AirNet types) -{{ - member_table({ - "units": "ft", - "legal_range": "", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "ft", + legal_range: "", + default: "0", + required: "No", + variability: "constant") %> -### izNVEff - -Type: *float* +**izNVEff=*float*** Vent discharge coefficient. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", - "default": "0.8", - "required": "No", - "variability": "constant" - }) -}} - -### izfanVfDs +<%= member_table( + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "0.8", + required: "No", + variability: "constant") %> -Type: *float* +**izfanVfDs=*float*** Fan design or rated flow at rated pressure. For AIRNETHERV, this is the net air flow into the zone, gross flow at the fan is derived using izEATR (see below). -{{ - member_table({ - "units": "cfm", - "legal_range": "*x* $\\ge$ 0", - "default": "0 (no fan)", - "required": "If fan present", - "variability": "constant" - }) -}} +<%= member_table( + units: "cfm", + legal_range: "*x* $\\ge$ 0", + default: "0 (no fan)", + required: "If fan present", + variability: "constant") %> -### izCpr - -Type: *float* +**izCpr=*float*** Wind pressure coefficient (for AIRNETEXT). -{{ - member_table({ - "units": "", - "legal_range": "*x* $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} - -### izExp +<%= member_table( + units: "", + legal_range: "*x* $\\ge$ 0", + default: "0", + required: "No", + variability: "constant") %> -Type: *float* +**izExp=*float*** Opening exponent (for AIRNETEXT). -{{ - member_table({ - "units": "", - "legal_range": "*x* $>$ 0", - "default": "0.5", - "required": "No", - "variability": "constant" - }) -}} - -### izVfMin +<%= member_table( + units: "", + legal_range: "*x* $>$ 0", + default: "0.5", + required: "No", + variability: "constant") %> -Type: *float* +**izVfMin=*float*** Minimum volume flow rate (VentOff mode). -{{ - member_table({ - "units": "cfm", - "legal_range": "*x* $\\ge$ 0", - "default": "izfanVfDs", - "required": "No", - "variability": "subhourly" - }) -}} +<%= member_table( + units: "cfm", + legal_range: "*x* $\\ge$ 0", + default: "izfanVfDs", + required: "No", + variability: "subhourly") %> -### izVfMax - -Type: *float* +**izVfMax=*float*** Maximum volume flow rate (VentOn mode) -{{ - member_table({ - "units": "cfm", - "legal_range": "*x* $\\ge$ 0", - "default": "izVfMin", - "required": "No", - "variability": "subhourly" - }) -}} - -### izASEF +<%= member_table( + units: "cfm", + legal_range: "*x* $\\ge$ 0", + default: "izVfMin", + required: "No", + variability: "subhourly") %> -Type: *float* +**izASEF=*float*** Apparent sensible effectiveness for AIRNETHERV ventilator. ASEF is a commonly-reported HERV rating and is calculated as (supplyT - sourceT) / (returnT - sourceT). This formulation includes fan heat (in supplyT), hence the term "apparent". Ignored if izSRE is given. CSE does not HRV exhaust-side condensation, so this model is approximate. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ x $\\le$ 1", - "default": "0", - "required": "No", - "variability": "subhourly" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $\\le$ x $\\le$ 1", + default: "0", + required: "No", + variability: "subhourly") %> -### izSRE - -Type: *float* +**izSRE=*float*** Sensible recovery efficiency (SRE) for AIRNETHERV ventilator. Used as the sensible effectiveness in calculation of the supply air temperature. Note that values of SRE greater than approximately 0.6 imply exhaust-side condensation under HVI rating conditions. CSE does not adjust for these effects. High values of izSRE will produce unrealistic results under mild outdoor conditions and/or dry indoor conditions. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ x $\\le$ 1", - "default": "0", - "required": "No", - "variability": "subhourly" - }) -}} - -### izASRE +<%= member_table( + units: "", + legal_range: "0 $\\le$ x $\\le$ 1", + default: "0", + required: "No", + variability: "subhourly") %> -Type: *float* +**izASRE=*float*** Adjusted sensible recovery efficiency (ASRE) for AIRNETHERV ventilator. The difference izASRE - izSRE is used to calculate fan heat added to the supply air stream. See izSRE notes. No effect when izSRE is 0. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ x $\\le$ izSRE", - "default": "0", - "required": "No", - "variability": "subhourly" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $\\le$ x $\\le$ izSRE", + default: "0", + required: "No", + variability: "subhourly") %> -### izEATR - -Type: *float* +**izEATR=*float*** Exhaust air transfer ratio for AIRNETHERV ventilator. NetFlow = (1 - EATR)*(grossFlow). -{{ - member_table({ - "units": "cfm", - "legal_range": "0 $\\le$ x $\\le$ 1", - "default": "0", - "required": "No", - "variability": "subhourly" - }) -}} - -### izLEF +<%= member_table( + units: "cfm", + legal_range: "0 $\\le$ x $\\le$ 1", + default: "0", + required: "No", + variability: "subhourly") %> -Type: *float* +**izLEF=*float*** Latent heat recovery effectiveness for AIRNETHERV ventilator. The default value (0) results in sensible-only heat recovery. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ x $\\le$ 1", - "default": "0", - "required": "No", - "variability": "subhourly" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $\\le$ x $\\le$ 1", + default: "0", + required: "No", + variability: "subhourly") %> -### izRVFanHeatF - -Type: *float* +**izRVFanHeatF=*float*** Fraction of fan heat added to supply air stream for AIRNETHERV ventilator. Used only when when izSRE is 0 (that is, when izASEF specifies the sensible effectiveness). -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ x $\\le$ 1", - "default": "0", - "required": "No", - "variability": "subhourly" - }) -}} - -### izVfExhRat +<%= member_table( + units: "", + legal_range: "0 $\\le$ x $\\le$ 1", + default: "0", + required: "No", + variability: "subhourly") %> -Type: *float* +**izVfExhRat=*float*** Exhaust volume flow ratio for AIRNETHERV ventilator = (exhaust flow) / (supply flow). Any value other than 1 indicates unbalanced flow that effects the zone pressure. -{{ - member_table({ - "units": "", - "legal_range": "*x* $\\ge$ 0", - "default": "1 (balanced)", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*x* $\\ge$ 0", + default: "1 (balanced)", + required: "No", + variability: "constant") %> -### izfanPress - -Type: *float* +**izfanPress=*float*** Design or rated fan pressure. -{{ - member_table({ - "units": "inches H~2~O", - "legal_range": "*x* $>$ 0", - "default": "0.3", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "inches H~2~O", + legal_range: "*x* $>$ 0", + default: "0.3", + required: "No", + variability: "constant") %> Only one of izfanElecPwr, izfanEff, and izfanShaftBhp may be given: together with izfanVfDs and izfanPress, any one is sufficient for CSE to determine the others and to compute the fan heat contribution to the air stream. -### izfanElecPwr - -Type: *float* +**izfanElecPwr=*float*** Fan input power per unit air flow (at design flow and pressure). -{{ - member_table({ - "units": "W/cfm", - "legal_range": "*x* $>$ 0", - "default": "derived from izfanEff and izfanShaftBhp", - "required": "If izfanEff and izfanShaftBhp not present", - "variability": "constant" - }) -}} +<%= member_table( + units: "W/cfm", + legal_range: "*x* $>$ 0", + default: "derived from izfanEff and izfanShaftBhp", + required: "If izfanEff and izfanShaftBhp not present", + variability: "constant") %> -### izfanEff - -Type: *float* +**izfanEff=*float*** Fan efficiency at design flow and pressure, as a fraction. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", - "default": "derived from *izfanShaftBhp* if given, else 0.08", - "required": "No", - "variability": "constant" - }) -}} - -### izfanShaftBhp +<%= member_table( + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "derived from *izfanShaftBhp* if given, else 0.08", + required: "No", + variability: "constant") %> -Type: *float* +**izfanShaftBhp=*float*** Fan shaft brake horsepower at design flow and pressure. -{{ - member_table({ - "units": "bhp", - "legal_range": "*x* $>$ 0", - "default": "derived from *izfanEff*.", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "bhp", + legal_range: "*x* $>$ 0", + default: "derived from *izfanEff*.", + required: "No", + variability: "constant") %> **izfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** @@ -620,62 +454,46 @@ where: If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. -{{ - member_table({ - "units": "", - "legal_range": "*x* $\\ge$ 0", - "default": "*0, 1, 0, 0, 0 (linear)*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*x* $\\ge$ 0", + default: "*0, 1, 0, 0, 0 (linear)*", + required: "No", + variability: "constant") %> -### izFanMtr - -Type: *mtrName* +**izFanMtr=*mtrName*** Name of meter, if any, to record energy used by supply fan. End use category used is specified by izFanEndUse (next). -{{ - member_table({ - "units": "", - "legal_range": "*name of a METER*", - "default": "*not recorded*", - "required": "No", - "variability": "constant" - }) -}} - -### izFanEndUse +<%= member_table( + units: "", + legal_range: "*name of a METER*", + default: "*not recorded*", + required: "No", + variability: "constant") %> -Type: *choice* +**izFanEndUse=*choice*** End use to which fan energy is recorded (in METER specified by izFanMtr). See METER for available end use choices. -{{ - member_table({ - "units": "", - "legal_range": "*end use choice*", - "default": "Fan", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*end use choice*", + default: "Fan", + required: "No", + variability: "constant") %> -### endIZXFER +**endIZXFER** Optionally indicates the end of the interzone transfer definition. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[izXfer][p_izxfer] +- @[izXfer](#p_izxfer) diff --git a/doc/src/docs/input-data/layer.md b/doc/src/docs/input-data/layer.md index db0443dfa..a88e22245 100644 --- a/doc/src/docs/input-data/layer.md +++ b/doc/src/docs/input-data/layer.md @@ -6,88 +6,65 @@ The layers should be specified in inside to outside order. -### pvDCtoACRatio - -Type: *float* +**pvDCtoACRatio=*float*** DC-to-AC ratio used to intentionally undersize the AC inverter. This is used to increase energy production in the beginning and end of the day despite the possibility of clipping peak sun hours. -{{ - member_table({ - "units": "", - "legal_range": "*x* > 0.0", - "default": "1.2", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*x* > 0.0", + default: "1.2", + required: "No", + variability: "constant") + %> -### pvInverterEff - -Type: *float* +**pvInverterEff=*float*** AC inverter efficiency at rated DC power. -{{ - member_table({ - "units": "", - "legal_range": "0 $<$ *x* $<$ 1.0", - "default": "0.96", - "required": "No", - "variability": "constant" - }) -}} - -### pvSysLosses +<%= member_table( + units: "", + legal_range: "0 $<$ *x* $<$ 1.0", + default: "0.96", + required: "No", + variability: "constant") + %> -Type: *float* +**pvSysLosses=*float*** Fraction of total DC energy lost. The total loss from a system is aggregated from several possible causes as illustrated below: -{{ csv_table("**Loss Type**, **Default Assumption** +<%= csv_table(< true) + **Loss Type**, **Default Assumption** Soiling, 0.02 *Shading*, *0 (handled explicitly)* Snow, 0 @@ -320,35 +257,32 @@ Fraction of total DC energy lost. The total loss from a system is aggregated fro Nameplate rating, 0.01 *Age*, *0.05 (estimated 0.5% degradation over 20 years)* Availability, 0.03 - **Total**, **0.14**", True) -}} + **Total**, **0.14** +END +%> *Italic* lines indicate differences from PVWatts assumptions. -{{ - member_table({ - "units": "", - "legal_range": "0 $<$ *x* $<$ 1.0", - "default": "0.14", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $<$ *x* $<$ 1.0", + default: "0.14", + required: "No", + variability: "hourly") + %> -### endPVARRAY +**endPVARRAY** Optionally indicates the end of the PVARRAY definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[PVArray][p_pvarray] +- @[PVArray](#p_pvarray) diff --git a/doc/src/docs/input-data/report.md b/doc/src/docs/input-data/report.md index 065d67296..a93209546 100644 --- a/doc/src/docs/input-data/report.md +++ b/doc/src/docs/input-data/report.md @@ -18,55 +18,48 @@ In addition to the headers and footers of individual reports, the report file ha **Default Reports:** CSE generates the following reports by default for each run, in the order shown. They are output by default to the "Primary" report file. They may be ALTERed or DELETEd as desired, using the object names shown. -{{ csv_table("rpName, rpType, Additional members +<%= csv_table(< true) + rpName, rpType, Additional members Err, ERR eb, ZEB, rpFreq=MONTH; rpZone=SUM; Log, LOG - Inp, INP", True) -}} + Inp, INP +END +%> Any reports specified by the user and not assigned to another file appear in the Primary report file between the default reports "eb" and "Log", in the order in which the REPORT objects are given in the input file. Because of the many types of reports supported, the members required for each REPORT depend on the report type and frequency in a complex manner. When in doubt, testing is helpful: try your proposed REPORT specification; if it is incomplete or overspecified, CSE will issue specific error messages telling you what additional members are required or what inappropriate members have been given and why. -### rpName +**rpName** Name of report. Give after the word REPORT. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") %> -### rpReportfile - -Type: *rfname* +**rpReportfile=*rfname*** Name of report file to which current report will be written. If omitted, if REPORT is within a REPORTFILE object, report will be written to that report file, or else to REPORTFILE "Primary", which (as described in previous section) is automatically supplied and by default uses the file name of the input file with the extension .REP. -{{ - member_table({ - "units": "", - "legal_range": "name of a *REPORTFILE*", - "default": "current *REPORTFILE*, if any, else Primary", - "required": "No", - "variability": "constant" - }) -}} - -### rpType +<%= member_table( + units: "", + legal_range: "name of a *REPORTFILE*", + default: "current *REPORTFILE*, if any, else Primary", + required: "No", + variability: "constant") %> -Type: *choice* +**rpType=*choice*** Choice indicating report type. Report types may be described at greater length, with examples, in Section 6. -{{ csv_table("ERR, Error and warning messages. If there are any such messages, they are also displayed on the screen *AND* written to a file with the same name as the input file and extension .ERR. Furthermore, \* \*many error messages are repeated in the INP report. +<%= csv_table(< false) + ERR, Error and warning messages. If there are any such messages, they are also displayed on the screen *AND* written to a file with the same name as the input file and extension .ERR. Furthermore, \* \*many error messages are repeated in the INP report. LOG, Run 'log'. As of July 1992, contains only CSE version number; should be enhanced or deleted.?? INP, Input echo: shows the portion of the input file used to specify this run. Does not repeat descriptions of objects left from prior runs in the same session when CLEAR is not used. Error and warning messages relating to specific lines of the input are repeated after or near the line to which they relate, prefixed with '?'. Lines not used due to a preprocessor \#if command (Section 4.4.4) with a false expression are prefixed with a '0' in the leftmost column; all preprocessor command lines are prefixed with a '\#' in that column. SUM, Run summary. As of July 1992, *NOT IMPLEMENTED*: generates no output and no error message. Should be defined and implemented, or else deleted??. @@ -76,34 +69,32 @@ Choice indicating report type. Report types may be described at greater length, MTR, Meter report. Requires *rpMeter*. DHWMTR, DHW meter report. Requires *rpDHWMeter* AFMTR, Air flow meter report. Requires *rpAFMeter* - UDT, User-defined table. Data items are specified with REPORTCOL commands (next section). Allows creating almost any desired report by using CSE expressions to specify numeric or string values to tabulate; 'Probes' may be used in the expressions to access CSE internal data.") -}} - -{{ - member_table({ - "units": "", - "legal_range": "*see above*", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} + UDT, User-defined table. Data items are specified with REPORTCOL commands (next section). Allows creating almost any desired report by using CSE expressions to specify numeric or string values to tabulate; 'Probes' may be used in the expressions to access CSE internal data. +END +%> -The next three members specify how frequently values are reported and the start and end dates for the REPORT. They are not allowed with *rpTypes* ERR, LOG, INP, SUM, and ZDD, which involve no time-varying data. +<%= member_table( + units: "", + legal_range: "*see above*", + default: "*none*", + required: "Yes", + variability: "constant") %> -### rpFreq +The next three members specify how frequently values are reported and the start and end dates for the REPORT. They are not allowed with *rpTypes* ERR, LOG, INP, SUM, and ZDD, which involve no time-varying data. -Type: *choice* +**rpFreq=*choice*** Report Frequency: specifies interval for generating rows of report data: -{{ csv_table("YEAR, at run completion +<%= csv_table(< false) + YEAR, at run completion MONTH, at end of each month (and at run completion if mid-month) DAY, at end of each day HOUR, at end of each hour HOURANDSUB, at end of each subhour and at end of hour - SUBHOUR, at end of each subhour") -}} + SUBHOUR, at end of each subhour +END +%> @@ -111,211 +102,146 @@ Report Frequency: specifies interval for generating rows of report data: We recommend using HOURly and more frequent reports sparingly, to report on only a few typical or extreme days, or to explore a problem once it is known what day(s) it occurs on. Specifying such reports for a full-year run will generate a huge amount of output and cause extremely slow CSE execution. -{{ - member_table({ - "units": "", - "legal_range": "*choices above*", - "default": "*none*", - "required": "per rpType", - "variability": "constant" - }) -}} - -### rpDayBeg +<%= member_table( + units: "", + legal_range: "*choices above*", + default: "*none*", + required: "per rpType", + variability: "constant") %> -Type: *date* +**rpDayBeg=*date*** Initial day of period to be reported. Reports for which *rpFreq* = YEAR do not allow specification of *rpDayBeg* and *rpDayEnd*; for MONTH reports, these members default to include all months in the run; for DAY and shorter-interval reports, *rpDayBeg* is required and *rpDayEnd* defaults to *rpDayBeg*. -{{ - member_table({ - "units": "", - "legal_range": "*date*", - "default": "first day of simulation if *rpFreq* = MONTH", - "required": "Required for *rpTypes* ZEB, ZST, MTR, AH, and UDT if *rpFreq* is DAY, HOUR, HOURANDSUB, or SUBHOUR", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*date*", + default: "first day of simulation if *rpFreq* = MONTH", + required: "Required for *rpTypes* ZEB, ZST, MTR, AH, and UDT if *rpFreq* is DAY, HOUR, HOURANDSUB, or SUBHOUR", + variability: "constant") %> -### rpDayEnd - -Type: *date* +**rpDayEnd=*date*** Final day of period to be reported, except for YEAR reports. -{{ - member_table({ - "units": "", - "legal_range": "*date*", - "default": "last day of simulation if *rpFreq*= MONTH, else *rpDayBeg*", - "required": "No", - "variability": "constant" - }) -}} - -### rpZone +<%= member_table( + units: "", + legal_range: "*date*", + default: "last day of simulation if *rpFreq*= MONTH, else *rpDayBeg*", + required: "No", + variability: "constant") %> -Type: *znName* +**rpZone=*znName*** Name of ZONE for which a ZEB, ZST, or ZDD report is being requested. For *rpType* ZEB or ZST, you may use *rpZone*=SUM to obtain a report showing only the sum of the data for all zones, or *rpZone*=ALL to obtain a report showing, for each time interval, a row of data for each zone plus a sum-of-zones row. -{{ - member_table({ - "units": "", - "legal_range": "name of a *ZONE*, ALL, SUM", - "default": "*none*", - "required": "Required for *rpTypes* ZDD, ZEB, and ZST.", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "name of a *ZONE*, ALL, SUM", + default: "*none*", + required: "Required for *rpTypes* ZDD, ZEB, and ZST.", + variability: "constant") %> -### rpMeter - -Type: *mtrName* +**rpMeter=*mtrName*** Specifies meter(s) to be reported, for *rpType*=MTR. -{{ - member_table({ - "units": "", - "legal_range": "name of a *METER*, ALL, SUM", - "default": "*none*", - "required": "Required for *rpType*=MTR", - "variability": "constant" - }) -}} - -### rpDHWMeter +<%= member_table( + units: "", + legal_range: "name of a *METER*, ALL, SUM", + default: "*none*", + required: "Required for *rpType*=MTR", + variability: "constant") %> -Type: *dhwMtrName* +**rpDHWMeter=*dhwMtrName*** Specifies DHW meter(s) to be reported, for *rpType*=DHWMTR. -{{ - member_table({ - "units": "", - "legal_range": "name of a *DHWMETER*, ALL, SUM", - "default": "*none*", - "required": "Required for *rpType*=DHWMTR", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "name of a *DHWMETER*, ALL, SUM", + default: "*none*", + required: "Required for *rpType*=DHWMTR", + variability: "constant") %> -### rpAFMeter - -Type: *afMtrName* +**rpAFMeter=*afMtrName*** Specifies air flow meter(s) to be reported, for *rpType*=AFMTR. -{{ - member_table({ - "units": "", - "legal_range": "name of a *DHWMETER*, ALL, SUM", - "default": "*none*", - "required": "Required for *rpType*=AFMTR", - "variability": "constant" - }) -}} - -### rpAh +<%= member_table( + units: "", + legal_range: "name of a *DHWMETER*, ALL, SUM", + default: "*none*", + required: "Required for *rpType*=AFMTR", + variability: "constant") %> -Type: *ahName* +**rpAh=*ahName*** Specifies air handler(s) to be reported, for *rpType*=AH, AHSIZE, or AHLOAD. -{{ - member_table({ - "units": "", - "legal_range": "name of an *AIRHANDLER*, ALL, SUM", - "default": "*none*", - "required": "Required for *rpType*=AH, AHSIZE, or AHLOAD", - "variability": "constant" - }) -}} - -### rpTu +<%= member_table( + units: "", + legal_range: "name of an *AIRHANDLER*, ALL, SUM", + default: "*none*", + required: "Required for *rpType*=AH, AHSIZE, or AHLOAD", + variability: "constant") %> -Type: *tuName* +**rpTu=*tuName*** Specifies air handler(s) to be reported, for *rpType*=TUSIZE or TULOAD. -{{ - member_table({ - "units": "", - "legal_range": "name of a TERMINAL, ALL, SUM", - "default": "*none*", - "required": "Required for *rpType*", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "name of a TERMINAL, ALL, SUM", + default: "*none*", + required: "Required for *rpType*", + variability: "constant") %> -### rpBtuSf - -Type: *float* +**rpBtuSf=*float*** Scale factor to be used when reporting energy values. Internally, all energy values are represented in Btu. This member allows scaling to more convenient units for output. *rpBtuSf* is not shown in the output, so if you change it, be sure the readers of the report know the energy units being used. *rpBtuSf* is not applied in UDT reports, but column values can be scaled as needed with expressions. -{{ - member_table({ - "units": "", - "legal_range": "*any multiple of ten*", - "default": "1,000,000: energy reported in MBtu.", - "required": "No", - "variability": "constant" - }) -}} - -### rpCond +<%= member_table( + units: "", + legal_range: "*any multiple of ten*", + default: "1,000,000: energy reported in MBtu.", + required: "No", + variability: "constant") %> -Type: *expression* +**rpCond=*expression*** Conditional reporting flag. If given, report rows are printed only when value of expression is non-0. Permits selective reporting according to any condition that can be expressed as a CSE expression. Such conditional reporting can be used to shorten output and make it easy to find data of interest when you are only interested in the information under exceptional conditions, such as excessive zone temperature. Allowed with *rpTypes* ZEB, ZST, MTR, AH, and UDT. -{{ - member_table({ - "units": "", - "legal_range": "*any numeric expression*", - "default": "1 (reporting enabled)", - "required": "No", - "variability": "subhour end of interval" - }) -}} +<%= member_table( + units: "", + legal_range: "*any numeric expression*", + default: "1 (reporting enabled)", + required: "No", + variability: "subhour end of interval") %> -### rpCPL - -Type: *int* +**rpCPL=*int*** Characters per line for a UDT (user-defined report). If widths specified in REPORTCOLs add up to more than this, a message occurs; if they total substantially less, additional whitespace is inserted between columns to make the report more readable. If rpCPL = -1, the report width determined based on required space with a single space between columns. rpCPL=0 uses the Top level *repCPL*. rpCPL is not allowed if *rpType* is not UDT. -{{ - member_table({ - "units": "", - "legal_range": "*x* $\\ge$ -1", - "default": "-1 (as wide as needed)", - "required": "No", - "variability": "constant" - }) -}} - -### rpTitle +<%= member_table( + units: "", + legal_range: "*x* $\\ge$ -1", + default: "-1 (as wide as needed)", + required: "No", + variability: "constant") %> -Type: *string* +**rpTitle=*string*** Title for use in report header of User-Defined report. Disallowed if *rpType* is not UDT. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "User-defined Report", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "User-defined Report", + required: "No", + variability: "constant") %> -### rpHeader - -Type: *choice* +**rpHeader=*choice*** Use NO to suppress the report header which gives the report type, zone, meter, or air handler being reported, time interval, column headings, etc. One reason to do this might be if you are putting only a single report in a report file and intend to later embed the report in a document or process it with some other program (but for the latter, see also EXPORT, below). @@ -323,46 +249,35 @@ Use with caution, as the header contains much of the identification of the data. See REPORTFILE member *rfPageFmt*, above, to control report *FILE* page headers and footers, as opposed to *REPORT* headers and footers. -{{ - member_table({ - "units": "", - "legal_range": "YES, NO", - "default": "YES", - "required": "No", - "variability": "constant" - }) -}} - -### rpFooter +<%= member_table( + units: "", + legal_range: "YES, NO", + default: "YES", + required: "No", + variability: "constant") %> -Type: *choice* +**rpFooter=*choice*** Use NO to suppress the report footers. The report footer is usually a row which sums hourly data for the day, daily data for the month, or monthly data for the year. For a report with *rpZone, rpMeter,*or *rpAh* = ALL, the footer row shows sums for all zones, meters, or air handlers. Sometimes the footer is merely a blank line. -{{ - member_table({ - "units": "", - "legal_range": "YES, NO", - "default": "YES", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "YES, NO", + default: "YES", + required: "No", + variability: "constant") %> -### endReport +**endReport** Optionally indicates the end of the report definition. Alternatively, the end of the report definition can be indicated by END or by beginning another object. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[report][p_report] +- @[report](#p_report) diff --git a/doc/src/docs/input-data/reportcol.md b/doc/src/docs/input-data/reportcol.md index e3f716be3..95b66979d 100644 --- a/doc/src/docs/input-data/reportcol.md +++ b/doc/src/docs/input-data/reportcol.md @@ -4,140 +4,104 @@ Each REPORTCOL defines a single column of a User Defined Table (UDT) report. REP Use as many REPORTCOLs as there are values to be shown in each row of the user-defined report. The values will appear in columns, ordered from left to right in the order defined. Be sure to include any necessary values to identify the row, such as the day of month, hour of day, etc. CSE supplies *NO* columns automatically. -### colName +**colName** Name of REPORTCOL. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") %> -### colReport - -Type: *rpName* +**colReport=*rpName*** Name of report to which current report column belongs. If REPORTCOL is given within a REPORT object, then *colReport* defaults to that report. -{{ - member_table({ - "units": "", - "legal_range": "name of a *REPORT*", - "default": "*current report, if any*", - "required": "Unless in a *REPORT*", - "variability": "constant" - }) -}} - -### colVal +<%= member_table( + units: "", + legal_range: "name of a *REPORT*", + default: "*current report, if any*", + required: "Unless in a *REPORT*", + variability: "constant") %> -Type: *expression* +**colVal=*expression*** Value to show in this column of report. -{{ - member_table({ - "units": "", - "legal_range": "*any numeric or string expression*", - "default": "*none*", - "required": "Yes", - "variability": "subhour /end interval" - }) -}} +<%= member_table( + units: "", + legal_range: "*any numeric or string expression*", + default: "*none*", + required: "Yes", + variability: "subhour /end interval") %> -### colHead - -Type: *string* +**colHead=*string*** Text used for column head. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*colName* or blank", - "required": "No", - "variability": "constant" - }) -}} - -### colGap +<%= member_table( + units: "", + legal_range: "", + default: "*colName* or blank", + required: "No", + variability: "constant") %> -Type: *int* +**colGap=*int*** Space between (to left of) column, in character positions. Allows you to space columns unequally, to emphasize relations among columns or to improve readability. If the total of the *colGaps* and *colWids* in the report's REPORTCOLs is substantially less than the REPORT's *rpCPL* (characters per line, see REPORT), CSE will insert additional spaces between columns. To suppress these spaces, use a smaller *rpCPL* or use *rpCPL* = -1. -{{ - member_table({ - "units": "", - "legal_range": "*x* $\\ge$ 0", - "default": "1", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*x* $\\ge$ 0", + default: "1", + required: "No", + variability: "constant") %> -### colWid - -Type: *int* +**colWid=*int*** Column width. -{{ - member_table({ - "units": "", - "legal_range": "*x* $\\ge$ 0", - "default": "10", - "required": "No", - "variability": "constant" - }) -}} - -### colDec +<%= member_table( + units: "", + legal_range: "*x* $\\ge$ 0", + default: "10", + required: "No", + variability: "constant") %> -Type: *int* +**colDec=*int*** Number of digits after decimal point. -{{ - member_table({ - "units": "", - "legal_range": "*x* $\\ge$ 0", - "default": "*flexible format*", - "required": "No", - "variability": "constant" - }) -}} - -### colJust +<%= member_table( + units: "", + legal_range: "*x* $\\ge$ 0", + default: "*flexible format*", + required: "No", + variability: "constant") %> -Type: *choice* +**colJust=*choice*** Specifies positioning of data within column: -{{ csv_table("Left, Left justified - Right, Right justified") -}} +<%= csv_table(< false) + Left, Left justified + Right, Right justified +END +%> -### endReportCol +**endReportCol** Optionally indicates the end of the report column definition. Alternatively, the end of the report column definition can be indicated by END or by beginning another REPORTCOL or other object. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[reportCol][p_reportcol] +- @[reportCol](#p_reportcol) diff --git a/doc/src/docs/input-data/reportfile.md b/doc/src/docs/input-data/reportfile.md index 206e52217..2b4cbe0d2 100644 --- a/doc/src/docs/input-data/reportfile.md +++ b/doc/src/docs/input-data/reportfile.md @@ -20,78 +20,64 @@ Using ALTER (Section 4.5.1.2) with REPORTFILE, you can change the characteristic rfPageFmt = NO; // do not format into pages rfFileStat = NEW; // error if file exists -### rfName +**rfName** Name of REPORTFILE object, given immediately after the word REPORTFILE. Note that this name, not the fileName of the report file, is used to refer to the REPORTFILE in REPORTs. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") %> -### rfFileName - -Type: *path* +**rfFileName=*path*** path name of file to be written. If no path is specified, the file is written in the current directory. The default extension is .REP. -{{ - member_table({ - "units": "", - "legal_range": "file name, path and extension optional", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} - -### rfFileStat +<%= member_table( + units: "", + legal_range: "file name, path and extension optional", + default: "*none*", + required: "Yes", + variability: "constant") %> -Type: *choice* +**rfFileStat=*choice*** Choice indicating what CSE should do if the file specified by *rfFileName*already exists: -{{ csv_table("OVERWRITE, Overwrite pre-existing file. +<%= csv_table(< false) + OVERWRITE, Overwrite pre-existing file. NEW, Issue error message if file exists at beginning of session. If there are several runs in session using same file, output from runs after the first will append. - APPEND, Append new output to present contents of existing file.") -}} + APPEND, Append new output to present contents of existing file. +END +%> If the specified file does not exist, it is created and *rfFileStat* has no effect. -{{ - member_table({ - "units": "", - "legal_range": "OVERWRITE, NEW, APPEND", - "default": "OVERWRITE", - "required": "No", - "variability": "constant" - }) -}} - -### rfPageFmt +<%= member_table( + units: "", + legal_range: "OVERWRITE, NEW, APPEND", + default: "OVERWRITE", + required: "No", + variability: "constant") %> -Type: *Choice* +**rfPageFmt=*Choice*** Choice controlling page formatting. Page formatting consists of dividing the output into pages (with form feed characters), starting a new page before each report too long to fit on the current page, and putting headers and footers on each page. Page formatting makes attractive printed output but is a distraction when examining the output on the screen and may inappropriate if you are going to further process the output with another program. -{{ csv_table("Yes, Do page formatting in this report file. - No, Suppress page formatting. Output is continuous, uninterrupted by page headers and footers or large blank spaces.") -}} +<%= csv_table(< false) + Yes, Do page formatting in this report file. + No, Suppress page formatting. Output is continuous, uninterrupted by page headers and footers or large blank spaces. +END +%> -{{ - member_table({ - "units": "", - "legal_range": "YES, NO", - "default": "No", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "YES, NO", + default: "No", + required: "No", + variability: "constant") %> Unless page formatting is suppressed, the page formats for all report files are controlled by the TOP members *repHdrL, repHdrR, repLPP, repTopM, repBotM,*and *repCPL*, described in Section 5.1. @@ -103,20 +89,17 @@ Vertical page layout is controlled by *repLPP, repTopM,* and *repBotM* (Section In addition to report file *page* headers and footers, individual REPORTs have *REPORT* headers and footers related to the report content. These are described under REPORT, Section 5.25. -### endReportFile +**endReportFile** Optionally indicates the end of the report file definition. Alternatively, the end of the report file definition can be indicated by END or by beginning another object. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[reportFile][p_reportfile] +- @[reportFile](#p_reportfile) diff --git a/doc/src/docs/input-data/rsys.md b/doc/src/docs/input-data/rsys.md index d25c43f34..0c60a2314 100644 --- a/doc/src/docs/input-data/rsys.md +++ b/doc/src/docs/input-data/rsys.md @@ -2,27 +2,23 @@ RSYS constructs an object representing an air-based residential HVAC system. -### rsName +**rsName** Optional name of HVAC system; give after the word “RSYS” if desired. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") %> -### rsType - -Type: *choice* +**rsType=*choice*** Type of system. -{{ csv_table("rsType, Description +<%= csv_table(< true) +rsType, Description ACFURNACE, Compressor-based cooling modeled per SEER and EER. Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. ACPMFURNACE, Compressor-based cooling modeled per PERFORMANCEMAP specified in rsPerfMapClg. Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. ACRESISTANCE, Compressor-based cooling and electric ('strip') heating. Cooling performance based on SEER and EER. Primary heating input energy is accumulated to end use HTG of meter rsElecMtr. @@ -42,144 +38,111 @@ ACPKGROOMRESISTANCE, Packaged room cooling and electric resistance heating. COMBINEDHEATDHW, Combined heating / DHW. Use rsCHDHWSYS to specify the DHWSYS that provides hot water to the coil in this RSYS. No cooling. ACCOMBINEDHEATDHW, Compressor-based cooling; COMBINEDHEATDHW heating. ACPMCOMBINEDHEATDHW, Compressor-based cooling modeled per PERFORMANCEMAP specified in rsPerfMapClg; COMBINEDHEATDHW heating. -FANCOIL, Coil-based heating and cooling. No primary (fuel-using) equipment is modeled. rsLoadMtr, rsHtgLoadMtr, and rsClgLoadMtr are typically used to record loads for linking to an external model.", True) -}} - -{{ - member_table({ - "units": "", - "legal_range": "*one of above choices*", - "default": "ACFURNACE", - "required": "No", - "variability": "constant" - }) -}} +FANCOIL, Coil-based heating and cooling. No primary (fuel-using) equipment is modeled. rsLoadMtr, rsHtgLoadMtr, and rsClgLoadMtr are typically used to record loads for linking to an external model. +END +%> -### rsDesc +<%= member_table( + units: "", + legal_range: "*one of above choices*", + default: "ACFURNACE", + required: "No", + variability: "constant") %> -Type: *string* +**rsDesc=*string*** Text description of system, included as documentation in debugging reports such as those triggered by rsGeneratePerfMap=YES -{{ - member_table({ - "units": "", - "legal_range": "string", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "string", + default: "*none*", + required: "No", + variability: "constant") %> -### rsModeCtrl - -Type: *choice* +**rsModeCtrl=*choice*** Specifies systems heating/cooling availability during simulation. -{{ csv_table("OFF, System is off (neither heating nor cooling is available) +<%= csv_table(< false) + OFF, System is off (neither heating nor cooling is available) HEAT, System can heat (assuming rsType can heat) COOL, System can cool (assuming rsType can cool) - AUTO, System can either heat or cool (assuming rsType compatibility). First request by any zone served by this RSYS determines mode for the current time step.") -}} - -{{ - member_table({ - "units": "", - "legal_range": "OFF, HEAT, COOL, AUTO", - "default": "AUTO", - "required": "No", - "variability": "hourly" - }) -}} + AUTO, System can either heat or cool (assuming rsType compatibility). First request by any zone served by this RSYS determines mode for the current time step. +END +%> -### rsGeneratePerfMap +<%= member_table( + units: "", + legal_range: "OFF, HEAT, COOL, AUTO", + default: "AUTO", + required: "No", + variability: "hourly") %> -Type: *choice* +**rsGeneratePerfMap=*choice*** Generate performance map(s) for this RSYS. Comma-separated text is written to file PM\_[rsName].csv. This is a debugging capability that is not necessarily maintained. The format of the generated csv text file may change and is unrelated to the PERFORMANCEMAP input scheme used via *rsPerfMapHtg* and *rsPerfMapClg*. -{{ - member_table({ - "units": "", - "legal_range": "YES, NO", - "default": "NO", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "YES, NO", + default: "NO", + required: "No", + variability: "constant") %> -### rsFanTy - -Type: *choice* +**rsFanTy=*choice*** Specifies fan (blower) position relative to primary heating or cooling source (i.e. heat exchanger or heat pump coil for heating and AC coil for cooling). The blower position determines where fan heat is added to the RSYS air stream and thus influences the coil entering air temperature. -{{ - member_table({ - "units": "", - "legal_range": "BLOWTHRU, DRAWTHRU", - "default": "BLOWTHRU", - "required": "No", - "variability": "constant" - }) -}} - -### rsFanMotTy +<%= member_table( + units: "", + legal_range: "BLOWTHRU, DRAWTHRU", + default: "BLOWTHRU", + required: "No", + variability: "constant") %> -Type: *choice* +**rsFanMotTy=*choice*** Specifies type of motor driving the fan (blower). This is used in the derivation of the coil-only cooling capacity for the RSYS. -{{ csv_table("PSC, Permanent split capacitor - BPM, Brushless permanent magnet (aka ECM)") -}} +<%= csv_table(< false) + PSC, Permanent split capacitor + BPM, Brushless permanent magnet (aka ECM) +END +%> -{{ - member_table({ - "units": "", - "legal_range": "PSC, BPM", - "default": "PSC", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "PSC, BPM", + default: "PSC", + required: "No", + variability: "constant") %> -### rsAdjForFanHt - -Type: *choice* +**rsAdjForFanHt=*choice*** Fan heat adjustment with two options Yes or no. Yes: fanHtRtd derived from rsFanTy and removed from capacity and input values. No: no rated fan heat adjustments. -### rsElecMtr - -Type: *mtrName* +**rsElecMtr=*mtrName*** Name of METER object, if any, by which system’s electrical energy use is recorded (under appropriate end uses). -{{ - member_table({ - "units": "", - "legal_range": "*name of a METER*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*name of a METER*", + default: "*none*", + required: "No", + variability: "constant") %> **rsFuelMtr =*mtrName*** Name of METER object, if any, by which system’s fuel energy use is recorded (under appropriate end uses). -{{ - member_table({ - "units": "", - "legal_range": "*name of a METER*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*name of a METER*", + default: "*none*", + required: "No", + variability: "constant") %> **rsLoadMtr =*ldMtrName***\ **rsHtgLoadMtr =*ldMtrName***\ @@ -191,15 +154,12 @@ rsLoadMtr accumulates both heating (> 0) and cooling (< 0) loads. rsHtgLoadMtr a rsLoadMtr should not specify the same LOADMETER as rsHtgLoadMtr or rsClgLoadMtr since this would result in double counting. -{{ - member_table({ - "units": "", - "legal_range": "*name of a LOADMETER*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*name of a LOADMETER*", + default: "*none*", + required: "No", + variability: "constant") %> **rsSrcSideLoadMtr=*ldMtrName***\ **rsHtgSrcSideLoadMtr =*ldMtrName***\ @@ -211,488 +171,349 @@ rsSrcSideLoadMtr accumulates both heating (> 0) and cooling (< 0) transfers. rsH rsSrcSideLoadMtr should not specify the same LOADMETER as rsHtgSrcSideLoadMtr or rsClgSrcSideLoadMtr since this would result in double counting. -{{ - member_table({ - "units": "", - "legal_range": "*Name of a LOADMETER*", - "default": "", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*Name of a LOADMETER*", + default: "", + required: "No", + variability: "constant") %> -### rsCHDHWSYS - -Type: *dhwsysName* +**rsCHDHWSYS=*dhwsysName*** DHWSYS hot water source for this RSYS, required when rsType is COMBINEDHEATDHW or ACCOMBINEDHEATDHW. The specified DHWSYS must include a DHWHEATER of whType=ASHPX or RESISTANCEX. -{{ - member_table({ - "units": "", - "legal_range": "Name of a DHWSYS", - "default": "*none*", - "required": "if combined heat/DHW", - "variability": "constant" - }) -}} - -### rsAFUE +<%= member_table( + units: "", + legal_range: "Name of a DHWSYS", + default: "*none*", + required: "if combined heat/DHW", + variability: "constant") %> -Type: *float* +**rsAFUE=*float*** Heating Annual Fuel Utilization Efficiency (AFUE). -{{ - member_table({ - "units": "", - "legal_range": "0 $<$ x $\\le$ 1", - "default": "0.9 if furnace, 1.0 if resistance", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $<$ x $\\le$ 1", + default: "0.9 if furnace, 1.0 if resistance", + required: "No", + variability: "constant") %> -### rsCapH - -Type: *float* +**rsCapH=*float*** Heating capacity, used when rsType is ACFURNACE, ACRESISTANCE, FURNACE, WSHP or RESISTANCE. If rsType=WSHP, rsCapH is at source fluid temperature = 68 ^o^F. -{{ - member_table({ - "units": "Btu/hr", - "legal_range": "*AUTOSIZE* or x $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} - -### rsTdDesH +<%= member_table( + units: "Btu/hr", + legal_range: "*AUTOSIZE* or x $\\ge$ 0", + default: "0", + required: "No", + variability: "constant") %> -Type: *float* +**rsTdDesH=*float*** Nominal heating temperature rise (across system, not at zone) used during autosizing (when capacity is not yet known) and to derive heating air flow rate from heating capacity. -{{ - member_table({ - "units": "^o^F", - "legal_range": "*x* $>$ 0", - "default": "30 ^o^F if heat pump else 50 ^o^F", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "^o^F", + legal_range: "*x* $>$ 0", + default: "30 ^o^F if heat pump else 50 ^o^F", + required: "No", + variability: "constant") %> -### rsFxCapH - -Type: *float* +**rsFxCapH=*float*** Heating autosizing capacity factor. If AUTOSIZEd, rsCapH or rsCap47 is set to rsFxCapH $\times$ (peak design-day load). Peak design-day load is the heating capacity that holds zone temperature at the thermostat set point during the *last substep* of all hours of all design days. -{{ - member_table({ - "units": "", - "legal_range": "*x* $>$ 0", - "default": "1.4", - "required": "No", - "variability": "constant" - }) -}} - -### rsFanPwrH +<%= member_table( + units: "", + legal_range: "*x* $>$ 0", + default: "1.4", + required: "No", + variability: "constant") %> -Type: *float* +**rsFanPwrH=*float*** Heating operating fan power. For most rsTypes, heating air flow is calculated from heating capacity and rsTdDesH. The default value of rsFanPwrH is .365 W/cfm except 0.273 W/cfm is used when rsType=COMBINEDHEATDHW and rsType=ACCOMBINEDHEATDHW. -{{ - member_table({ - "units": "W/cfm", - "legal_range": "*x* $\\ge$ 0", - "default": "see above", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "W/cfm", + legal_range: "*x* $\\ge$ 0", + default: "see above", + required: "No", + variability: "constant") %> -### rsHSPF - -Type: *float* +**rsHSPF=*float*** For rsType=ASHP, Heating Seasonal Performance Factor (HSPF). -{{ - member_table({ - "units": "Btu/Wh", - "legal_range": "*x* $>$ 0", - "default": "*none*", - "required": "Yes if rsType=ASHP", - "variability": "constant" - }) -}} - -### rsCap47 +<%= member_table( + units: "Btu/Wh", + legal_range: "*x* $>$ 0", + default: "*none*", + required: "Yes if rsType=ASHP", + variability: "constant") %> -Type: *float* +**rsCap47=*float*** For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 47 ^o^F. If rsType=ASHP and both rsCapC and rsCap47 are autosized, both are set to the larger consistent value using rsCapRat9547 (after application of rsFxCapH and rsFxCapC). -{{ - member_table({ - "units": "Btu/Wh", - "legal_range": "*AUTOSIZE* or *x* $>$ 0", - "default": "Calculated from rsCapC", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "Btu/Wh", + legal_range: "*AUTOSIZE* or *x* $>$ 0", + default: "Calculated from rsCapC", + required: "No", + variability: "constant") %> -### rsCap35 - -Type: *float* +**rsCap35=*float*** For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 35 ^o^F. rsCap35 typically reflects reduced capacity due to reverse (cooling) heat pump operation for defrost. -{{ - member_table({ - "units": "Btu/Wh", - "legal_range": "*x* $>$ 0", - "default": "Calculated from rsCap47 and rsCap17", - "required": "No", - "variability": "constant" - }) -}} - -### rsCap17 +<%= member_table( + units: "Btu/Wh", + legal_range: "*x* $>$ 0", + default: "Calculated from rsCap47 and rsCap17", + required: "No", + variability: "constant") %> -Type: *float* +**rsCap17=*float*** For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 17 ^o^F. -{{ - member_table({ - "units": "Btu/Wh", - "legal_range": "*x* $>$ 0", - "default": "Calculated from rsCap47", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "Btu/Wh", + legal_range: "*x* $>$ 0", + default: "Calculated from rsCap47", + required: "No", + variability: "constant") %> -### rsCOP95 - -Type: *float* +**rsCOP95=*float*** For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 95 ^o^F. -{{ - member_table({ - "units": "", - "legal_range": "x $>$ 0", - "default": "Calculated from rsCap95", - "required": "No", - "variability": "constant" - }) -}} - -### rsCOP47 +<%= member_table( + units: "", + legal_range: "x $>$ 0", + default: "Calculated from rsCap95", + required: "No", + variability: "constant") %> -Type: *float* +**rsCOP47=*float*** For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 47 ^o^F. For rsType=WSHP, rated heating coefficient of performance at source fluid temperature = 68 ^o^F. -{{ - member_table({ - "units": "", - "legal_range": "*x* $>$ 0", - "default": "Estimated from rsHSPF, rsCap47, and rsCap17", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*x* $>$ 0", + default: "Estimated from rsHSPF, rsCap47, and rsCap17", + required: "No", + variability: "constant") %> -### rsCOP35 - -Type: *float* +**rsCOP35=*float*** For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 35 ^o^F. -{{ - member_table({ - "units": "", - "legal_range": "*x* $>$ 0", - "default": "Calculated from rsCap35, rsCap47, rsCap17, rsCOP47, and rsCOP17", - "required": "No", - "variability": "constant" - }) -}} - -### rsCOP17 +<%= member_table( + units: "", + legal_range: "*x* $>$ 0", + default: "Calculated from rsCap35, rsCap47, rsCap17, rsCOP47, and rsCOP17", + required: "No", + variability: "constant") %> -Type: *float* +**rsCOP17=*float*** For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 17 ^o^F. -{{ - member_table({ - "units": "", - "legal_range": "*x* $>$ 0", - "default": "Calculated from rsHSPF, rsCap47, and rsCap17", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*x* $>$ 0", + default: "Calculated from rsHSPF, rsCap47, and rsCap17", + required: "No", + variability: "constant") %> -### rsCapRat1747 - -Type: *float* +**rsCapRat1747=*float*** Ratio of rsCAP17 over rsCAP47. -{{ - member_table({ - "units": "", - "legal_range": "x $>$ 0", - "default": "Based on HSPF or\nother correlations", - "required": "No", - "variability": "Start of a run" - }) -}} - -### rsCapRat9547 +<%= member_table( + units: "", + legal_range: "x $>$ 0", + default: "Based on HSPF or\nother correlations", + required: "No", + variability: "Start of a run") %> -Type: *float* +**rsCapRat9547=*float*** Ratio of rsCAP95 to rsCAP47. This ratio is used for inter-defaulting rsCap47 and rsCapC such that they have consistent values as is required given that a heat pump is a single device. If not given, rsCapRat9547 is determined during calculations using the relationship cap95 = 0.98 * cap47 + 180 (derived via correlation of capacities of a set of real units). -{{ - member_table({ - "units": "", - "legal_range": "x $>$ 0", - "default": "See above", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "x $>$ 0", + default: "See above", + required: "No", + variability: "constant") %> -### rsCapRatCH - -Type: *float* +**rsCapRatCH=*float*** For WSHP only: ratio of rsCapC to rsCapH. Used to derive capacity during autosizing or when only one capacity is specified. -{{ - member_table({ - "units": "", - "legal_range": ".3 $\\leq$ x $<$ 2", - "default": "0.8", - "required": "No", - "variability": "Start of a run" - }) -}} - -### rsPerfMapHtg +<%= member_table( + units: "", + legal_range: ".3 $\\leq$ x $<$ 2", + default: "0.8", + required: "No", + variability: "Start of a run") %> -Type: *performanceMapName* +**rsPerfMapHtg=*performanceMapName*** Specifies the heating performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM. The PERFORMANCEMAP must have grid variables outdoor drybulb and compressor speed (in that order) and lookup values of net capacity ratios and COP. See example in PERFORMANCEMAP. -{{ - member_table({ - "units": "", - "legal_range": "Name of a PERFORMANCEMAP", - "default": "", - "required": "if rsType specifies a performance map model", - "variability": "Start of a run" - }) -}} +<%= member_table( + units: "", + legal_range: "Name of a PERFORMANCEMAP", + default: "", + required: "if rsType specifies a performance map model", + variability: "Start of a run") %> -### rsPerfMapClg - -Type: *performanceMapName* +**rsPerfMapClg=*performanceMapName*** Specifies the cooling performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM, ACPM, ACPMFURNACE, ACPMRESISTANCE, or ACPMCOMBINEDHEATDHW. The PERFORMANCEMAP must have grid variables outdoor drybulb and compressor speed (in that order) and lookup values of net capacity ratios and COP. See example in PERFORMANCEMAP. -{{ - member_table({ - "units": "", - "legal_range": "Name of a PERFORMANCEMAP", - "default": "", - "required": "if rsType specifies a performance map model", - "variability": "Start of a run" - }) -}} - -### rsTypeAuxH +<%= member_table( + units: "", + legal_range: "Name of a PERFORMANCEMAP", + default: "", + required: "if rsType specifies a performance map model", + variability: "Start of a run") %> -Type: *choice* +**rsTypeAuxH=*choice*** For rsType=ASHP, type of auxiliary heat. Auxiliary heating is used when heatpump capacity is insufficient to maintain zone temperature and during reverse-cycle defrost operation (if rsDefrostModel=REVCYCLEAUX). If rsTypeAuxH=Furnace, energy use for auxiliary heat is accumulated to end use HPBU of meter rsFuelMtr (if specified). If rsTypeAuxH=Resistance, energy use for auxiliary heat is accumulated to end use HPBU of meter rsElecMtr (if specified). -{{ csv_table("Choice, Description +<%= csv_table(< true) +Choice, Description NONE, No auxiliary heat RESISTANCE, Electric resistance (aka strip heat) -FURNACE, Fuel-fired", True) -}} +FURNACE, Fuel-fired +END +%> -{{ - member_table({ - "units": "", - "legal_range": "See table above", - "default": "RESISTANCE", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "See table above", + default: "RESISTANCE", + required: "No", + variability: "constant") %> -### rsCtrlAuxH - -Type: *choice* +**rsCtrlAuxH=*choice*** For rsType=ASHP, type of auxiliary heating control. -{{ csv_table("Choice, Description +<%= csv_table(< true) +Choice, Description LOCKOUT, Compressor locked out if any auxiliary heating control CYCLE, Compressor runs continuously and auxiliary cycles -ALTERNATE, Alternates between compressor and auxiliary", True) -}} - -{{ - member_table({ - "units": "", - "legal_range": "See table above", - "default": "ALTERNATE if rsTypeAuxH=FURNACE else CYCLE", - "required": "No", - "variability": "Start of a run" - }) -}} +ALTERNATE, Alternates between compressor and auxiliary +END +%> -### rsCapAuxH +<%= member_table( + units: "", + legal_range: "See table above", + default: "ALTERNATE if rsTypeAuxH=FURNACE else CYCLE", + required: "No", + variability: "Start of a run") %> -Type: *float* +**rsCapAuxH=*float*** For rsType=ASHP, auxiliary heating capacity. If AUTOSIZEd, rsCapAuxH is set to the peak heating load evaluated at the heating design temperature (Top.heatDsTDbO). -{{ - member_table({ - "units": "Btu/hr", - "legal_range": "*AUTOSIZE* or *x* $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} - -### rsAFUEAuxH +<%= member_table( + units: "Btu/hr", + legal_range: "*AUTOSIZE* or *x* $\\ge$ 0", + default: "0", + required: "No", + variability: "constant") %> -Type: *float* +**rsAFUEAuxH=*float*** For rsType=ASHP, auxiliary heat annualized fuel utilization efficiency. -{{ - member_table({ - "units": "", - "legal_range": "x $>$ 0", - "default": "0.9 if rsTypeAuxH=FURNACE else 1", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "x $>$ 0", + default: "0.9 if rsTypeAuxH=FURNACE else 1", + required: "No", + variability: "constant") %> -### rsDefrostModel - -Type: *choice* +**rsDefrostModel=*choice*** Selects modeling options for ASHP outdoor coil defrosting when 17 ^o^F < TDbO < 45 ^o^F. In this temperature range, heating capacity and/or efficiency are typically reduced due to frost accumulation on the outdoor coil. -{{ csv_table("NONE, Defrost is not modeled. When 17 ^o^F < TDbO < 45 ^o^F, capacity and efficiency are determined by interpolation using unmodified 17 ^o^F and 47 ^o^F data. +<%= csv_table(< false) + NONE, Defrost is not modeled. When 17 ^o^F < TDbO < 45 ^o^F, capacity and efficiency are determined by interpolation using unmodified 17 ^o^F and 47 ^o^F data. REVCYCLE, Reverse compressor (cooling) operation. Net capacity and efficiency is derived from rsCap17/rsCOP17 and rsCap35/rsCOP35 using linear interpolation. Auxiliary heat is not modeled. - REVCYCLEAUX, Reverse compressor (cooling) operation with provision of sufficient auxiliary heat to make up the loss of heating capacity. Auxiliary heating is typically used to prevent cold air delivery to zones during the defrost cycle.") -}} - -{{ - member_table({ - "units": "", - "legal_range": "*one of above choices*", - "default": "REVCYCLEAUX", - "required": "No", - "variability": "constant" - }) -}} + REVCYCLEAUX, Reverse compressor (cooling) operation with provision of sufficient auxiliary heat to make up the loss of heating capacity. Auxiliary heating is typically used to prevent cold air delivery to zones during the defrost cycle. +END +%> -### rsSHRtarget +<%= member_table( + units: "", + legal_range: "*one of above choices*", + default: "REVCYCLEAUX", + required: "No", + variability: "constant") %> -Type: *float* +**rsSHRtarget=*float*** Nominal target for sensible heat ratio (for fancoil). -{{ - member_table({ - "units": "", - "legal_range": "*x* $>$ 0", - "default": "0.7", - "required": "No", - "variability": "subhour" - }) -}} +<%= member_table( + units: "", + legal_range: "*x* $>$ 0", + default: "0.7", + required: "No", + variability: "subhour") %> -### rsFxCapAuxH - -Type: *float* +**rsFxCapAuxH=*float*** Auxiliary heating autosizing capacity factor. If AUTOSIZEd, rsCapAuxH is set to rsFxCapAuxH $\times$ (peak design-day load). Peak design-day load is the heating capacity that holds zone temperature at the thermostat set point during the *last substep* of all hours of all design days. -{{ - member_table({ - "units": "", - "legal_range": "*x* $>$ 0", - "default": "1", - "required": "No", - "variability": "constant" - }) -}} - -### rsSEER +<%= member_table( + units: "", + legal_range: "*x* $>$ 0", + default: "1", + required: "No", + variability: "constant") %> -Type: *float* +**rsSEER=*float*** Cooling rated Seasonal Energy Efficiency Ratio (SEER). -{{ - member_table({ - "units": "Btu/Wh", - "legal_range": "*x* $>$ 0", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( + units: "Btu/Wh", + legal_range: "*x* $>$ 0", + default: "*none*", + required: "Yes", + variability: "constant") %> -### rsEER - -Type: *float* +**rsEER=*float*** Cooling Energy Efficiency Ratio (EER) at standard AHRI rating conditions (outdoor drybulb of 95 ^o^F and entering air at 80 ^o^F drybulb and 67 ^o^F wetbulb). For rsType=WSHP, rated EER at fluid source temperature = 86 ^o^F. -{{ - member_table({ - "units": "Btu/Wh", - "legal_range": "*x* $>$ 0", - "default": "Estimated from SEER unless WSHP", - "required": "Yes for WSHP else No", - "variability": "constant" - }) -}} - -### rsCapC +<%= member_table( + units: "Btu/Wh", + legal_range: "*x* $>$ 0", + default: "Estimated from SEER unless WSHP", + required: "Yes for WSHP else No", + variability: "constant") %> -Type: *float* +**rsCapC=*float*** Net cooling capacity at standard rating conditions (outdoor drybulb temperature = 95 ^o^F for air source or fluid source temperature = 86 ^o^F for water source). @@ -700,466 +521,335 @@ If rsType=ASHP and both rsCapC and rsCap47 are autosized, both are set to the la If rsType=WSHP and both rsCapC and rsCapH are autosized, both are set to the larger consistent value using rsCapRatCH (after application of rsFxCapH and rsFxCapC). -{{ - member_table({ - "units": "Btu/hr", - "legal_range": "*AUTOSIZE* or *x* $\\le$ 0 (x $>$ 0 coverted to $<$ 0)", - "default": "*none*", - "required": "Yes if rsType includes cooling", - "variability": "constant" - }) -}} +<%= member_table( + units: "Btu/hr", + legal_range: "*AUTOSIZE* or *x* $\\le$ 0 (x $>$ 0 coverted to $<$ 0)", + default: "*none*", + required: "Yes if rsType includes cooling", + variability: "constant") %> -### rsTdDesC - -Type: *float* +**rsTdDesC=*float*** Nominal cooling temperature fall (across system, not zone) used during autosizing (when capacity is not yet known). -{{ - member_table({ - "units": "^o^F", - "legal_range": "*x* $<$ 0", - "default": "-25", - "required": "No", - "variability": "constant" - }) -}} - -### rsFxCapC +<%= member_table( + units: "^o^F", + legal_range: "*x* $<$ 0", + default: "-25", + required: "No", + variability: "constant") %> -Type: *float* +**rsFxCapC=*float*** Cooling autosizing capacity factor. rsCapC is set to rsFxCapC $\times$ (peak design-day load). Peak design-day load is the cooling capacity that holds zone temperature at the thermostat set point during the *last substep* of all hours of all design days. -{{ - member_table({ - "units": "", - "legal_range": "*x* $>$ 0", - "default": "1.4", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*x* $>$ 0", + default: "1.4", + required: "No", + variability: "constant") %> -### rsFChg - -Type: *float* +**rsFChg=*float*** Cooling compressor capacity factor. The gross cooling capacity is adjusted by the factor rsFChg as specified by California Title 24 procedures. -{{ - member_table({ - "units": "", - "legal_range": "*x* $>$ 0", - "default": "1 (no effect)", - "required": "No", - "variability": "constant" - }) -}} - -### rsVFPerTon +<%= member_table( + units: "", + legal_range: "*x* $>$ 0", + default: "1 (no effect)", + required: "No", + variability: "constant") %> -Type: *float* +**rsVFPerTon=*float*** Standard air volumetric flow rate per nominal ton of cooling capacity. -{{ - member_table({ - "units": "cfm/ton", - "legal_range": "150 $\\le$ x $\\le$ 500", - "default": "350", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "cfm/ton", + legal_range: "150 $\\le$ x $\\le$ 500", + default: "350", + required: "No", + variability: "constant") %> -### rsFanPwrC - -Type: *float* +**rsFanPwrC=*float*** Cooling fan power. -{{ - member_table({ - "units": "W/cfm", - "legal_range": "*x* $\\ge$ 0", - "default": "0.365", - "required": "No", - "variability": "constant" - }) -}} - -### rsASHPLockOutT +<%= member_table( + units: "W/cfm", + legal_range: "*x* $\\ge$ 0", + default: "0.365", + required: "No", + variability: "constant") %> -Type: *float* +**rsASHPLockOutT=*float*** Source air dry-bulb temperature below which the air source heat pump compressor does not operate. -{{ - member_table({ - "units": "^o^F", - "legal_range": "", - "default": "(no lockout)", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "^o^F", + legal_range: "", + default: "(no lockout)", + required: "No", + variability: "hourly") %> -### rsCdH - -Type: *float* +**rsCdH=*float*** Heating cyclic degradation coefficient, valid only for compressor-based heating (heat pumps). -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ x $\\le$ 0.5", - "default": "ASHPHYDRONIC: 0.25 ASHP: derived from rsHSPF", - "required": "No", - "variability": "hourly" - }) -}} - -### rsCdC +<%= member_table( + units: "", + legal_range: "0 $\\le$ x $\\le$ 0.5", + default: "ASHPHYDRONIC: 0.25 ASHP: derived from rsHSPF", + required: "No", + variability: "hourly") %> -Type: *float* +**rsCdC=*float*** Cooling cyclic degradation coefficient, valid for configurations having compressor-based cooling. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ x $\\le$ 0.5", - "default": "0", - "required": "No", - "variability": "hourly" - }) -}} - -### rsFEffH +<%= member_table( + units: "", + legal_range: "0 $\\le$ x $\\le$ 0.5", + default: "0", + required: "No", + variability: "hourly") %> -Type: *float* +**rsFEffH=*float*** Heating efficiency factor. At each time step, the heating efficiency is multiplied by rsFEffH. -{{ - member_table({ - "units": "", - "legal_range": "*x* $>$ 0", - "default": "1", - "required": "No", - "variability": "subhourly" - }) -}} +<%= member_table( + units: "", + legal_range: "*x* $>$ 0", + default: "1", + required: "No", + variability: "subhourly") %> -### rsFEffAuxHBackup - -Type: *float* +**rsFEffAuxHBackup=*float*** Backup auxiliary heating efficiency factor. At each time step, the backup heating efficiency is multiplied by rsFEffAuxHBackup. Backup auxiliary heating is typically provided by electric resistance "strip heat" but may be provided by a furnace (see rsTypeAuxH). If rsTypeAuxH is not "none", backup heat operates when air source heat pump compressor capacity is insufficient to meet heating load. See also rsFEffAuxHDefrost. -{{ - member_table({ - "units": "", - "legal_range": "*x* $>$ 0", - "default": "1", - "required": "No", - "variability": "subhourly" - }) -}} - -### rsFEffAuxHDefrost +<%= member_table( + units: "", + legal_range: "*x* $>$ 0", + default: "1", + required: "No", + variability: "subhourly") %> -Type: *float* +**rsFEffAuxHDefrost=*float*** Defrost auxiliary heating efficiency factor. At each time step, the defrost auxiliary heating efficiency is multiplied by rsFEffAuxHDefrost. Defrost auxiliary heating is typically provided by electric resistance "strip heat" but may be provided by a furnace (see rsTypeAuxH). If rsDefrostModel=REVCYCLEAUX, defrost auxiliary heat operates during air source heat pump defrost mode. Since defrost and backup heating are generally provided by the same equipment, rsFEffAuxHDefrost and rsFEffAuxHBackup are usually set to the same value, but separate inputs are available for special cases. -{{ - member_table({ - "units": "", - "legal_range": "*x* $>$ 0", - "default": "1", - "required": "No", - "variability": "subhourly" - }) -}} +<%= member_table( + units: "", + legal_range: "*x* $>$ 0", + default: "1", + required: "No", + variability: "subhourly") %> -### rsFEffC - -Type: *float* +**rsFEffC=*float*** Cooling efficiency factor. At each time step, the cooling efficiency is multiplied by rsEffC. -{{ - member_table({ - "units": "", - "legal_range": "*x* $>$ 0", - "default": "1", - "required": "No", - "variability": "subhourly" - }) -}} - -### rsCapNomH +<%= member_table( + units: "", + legal_range: "*x* $>$ 0", + default: "1", + required: "No", + variability: "subhourly") %> -Type: *float* +**rsCapNomH=*float*** Heating nominal capacity. Provides type-independent probe source for RSYS heating capacity. Daily variability is specified to support value changes during AUTOSIZEing. Values set via input are typically constant. -{{ - member_table({ - "units": "Btu/hr", - "legal_range": "*x* $\\ge$ 0", - "default": "no heating: 0 heat pump: rsCap47 (input or AUTOSIZEd) other: rsCapH (input or AUTOSIZEd)", - "required": "No", - "variability": "daily" - }) -}} +<%= member_table( + units: "Btu/hr", + legal_range: "*x* $\\ge$ 0", + default: "no heating: 0 heat pump: rsCap47 (input or AUTOSIZEd) other: rsCapH (input or AUTOSIZEd)", + required: "No", + variability: "daily") %> -### rsCapNomC - -Type: *float* +**rsCapNomC=*float*** Cooling nominal capacity. Provides type-independent probe source for RSYS cooling capacity. Daily variability is specified to support value changes during AUTOSIZEing. Values set via input are typically constant. -{{ - member_table({ - "units": "Btu/hr", - "legal_range": "*x* $\\ge$ 0", - "default": "no cooling: 0 other: rsCap95 (input or AUTOSIZEd)", - "required": "No", - "variability": "daily" - }) -}} - -### rsDSEH +<%= member_table( + units: "Btu/hr", + legal_range: "*x* $\\ge$ 0", + default: "no cooling: 0 other: rsCap95 (input or AUTOSIZEd)", + required: "No", + variability: "daily") %> -Type: *float* +**rsDSEH=*float*** Heating distribution system efficiency. If given, (1-rsDSEH) of RSYS heating output is discarded. Cannot be combined with more detailed DUCTSEG model. -{{ - member_table({ - "units": "", - "legal_range": "0 < *x* < 1", - "default": "(use DUCTSEG model)", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "", + legal_range: "0 < *x* < 1", + default: "(use DUCTSEG model)", + required: "No", + variability: "hourly") %> -### rsDSEC - -Type: *float* +**rsDSEC=*float*** Cooling distribution system efficiency. If given, (1-rsDSEC) of RSYS cooling output is discarded. Cannot be combined with more detailed DUCTSEG model. -{{ - member_table({ - "units": "", - "legal_range": "0 < *x* < 1", - "default": "(use DUCTSEG model)", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "", + legal_range: "0 < *x* < 1", + default: "(use DUCTSEG model)", + required: "No", + variability: "hourly") %> **rsOAVType=*choice*** Type of central fan integrated (CFI) outside air ventilation (OAV) included in this RSYS. OAV systems use the central system fan to circulate outdoor air (e.g. for night ventilation). - OAV cannot operate simultaneously with whole building ventilation (operable windows, whole house fans, etc.). Availability of ventilation modes is controlled on an hourly basis via [Top ventAvail][top-model-control-items]. + OAV cannot operate simultaneously with whole building ventilation (operable windows, whole house fans, etc.). Availability of ventilation modes is controlled on an hourly basis via [Top ventAvail](#top-model-control-items). -{{ csv_table("NONE, No CFI ventilation capabilities +<%= csv_table(< false) +NONE, No CFI ventilation capabilities FIXED, Fixed-flow CFI (aka SmartVent). The specified rsOAVVfDs is used whenever the RSYS operates in OAV mode. -VARIABLE, Variable-flow CFI (aka NightBreeze). Flow rate is determined at midnight based on prior day's average dry-bulb temperature according to a control algorithm defined by the NightBreeze vendor.") -}} - -{{ - member_table({ - "units": "", - "legal_range": "NONE, FIXED, VARIABLE", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +VARIABLE, Variable-flow CFI (aka NightBreeze). Flow rate is determined at midnight based on prior day's average dry-bulb temperature according to a control algorithm defined by the NightBreeze vendor. +END +%> + +<%= member_table( + units: "", + legal_range: "NONE, FIXED, VARIABLE", + default: "*none*", + required: "No", + variability: "constant") %> **rsOAVVfDs=*float*** Design air volume flow rate when RSYS is operating in OAV mode. -{{ - member_table({ - "units": "cfm", - "legal_range": "*x* $\\ge$ 0", - "default": "*none*", - "required": "if rsOAVType $\ne$ NONE", - "variability": "constant" - }) -}} +<%= member_table( + units: "cfm", + legal_range: "*x* $\\ge$ 0", + default: "*none*", + required: "if rsOAVType $\ne$ NONE", + variability: "constant") %> **rsOAVVfMinF=*float*** Minimum air volume flow rate fraction when RSYS is operating in OAV mode. When rsOAVType=VARIABLE, air flow rate is constrained to rsOAVVfMinF * rsOAVVfDs or greater. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ x $\\le$ 1", - "default": "0.2", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $\\le$ x $\\le$ 1", + default: "0.2", + required: "No", + variability: "constant") %> **rsOAVFanPwr=*float*** RSYS OAV-mode fan power. -{{ - member_table({ - "units": "W/cfm", - "legal_range": "0 < x $\\le$ 5", - "default": "per rsOAVTYPE FIXED: rsFanPwrC VARIABLE: NightBreeze vendor curve based on rsOAVvfDs", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "W/cfm", + legal_range: "0 < x $\\le$ 5", + default: "per rsOAVTYPE FIXED: rsFanPwrC VARIABLE: NightBreeze vendor curve based on rsOAVvfDs", + required: "No", + variability: "constant") %> -### rsOAVTDbInlet - -Type: *float* +**rsOAVTDbInlet=*float*** OAV inlet (source) air temperature. Supply air temperature at the zone is generally higher due to fan heat. Duct losses, if any, also alter the supply air temperature. -{{ - member_table({ - "units": "^o^F", - "legal_range": "*x* $\\ge$ 0", - "default": "Dry-bulb temperature from weather file", - "required": "No", - "variability": "hourly" - }) -}} - -### rsOAVTdiff +<%= member_table( + units: "^o^F", + legal_range: "*x* $\\ge$ 0", + default: "Dry-bulb temperature from weather file", + required: "No", + variability: "hourly") %> -Type: *float* +**rsOAVTdiff=*float*** OAV temperature differential. When operating in OAV mode, the zone set point temperature is max( znTD, inletT+rsOAVTdiff). Small values can result in inadvertent zone heating, due to fan heat. -{{ - member_table({ - "units": "^o^F", - "legal_range": "*x* $>$ 0", - "default": "5 ^o^F", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "^o^F", + legal_range: "*x* $>$ 0", + default: "5 ^o^F", + required: "No", + variability: "hourly") %> -### rsOAVReliefZn - -Type: *znName* +**rsOAVReliefZn=*znName*** Name of zone to which relief air is directed during RSYS OAV operation, typically an attic zone. Relief air flow is included in the target zone's pressure and thermal balance. -{{ - member_table({ - "units": "", - "legal_range": "*name of ZONE*", - "default": "*none*", - "required": "if rsOAVType $\ne$ NONE", - "variability": "constant" - }) -}} - -### rsParElec +<%= member_table( + units: "", + legal_range: "*name of ZONE*", + default: "*none*", + required: "if rsOAVType $\ne$ NONE", + variability: "constant") %> -Type: *float* +**rsParElec=*float*** Parasitic electrical power. rsParElec is unconditionally accumulated to end use AUX of rsElecMtr (if specified) and has no other effect. -{{ - member_table({ - "units": "W", - "legal_range": "", - "default": "0", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "W", + legal_range: "", + default: "0", + required: "No", + variability: "hourly") %> -### rsParFuel - -Type: *float* +**rsParFuel=*float*** Parasitic fuel use. rsParFuel is unconditionally accumulated to end use AUX of sFuelMtr (if specified) and has no other effect. -{{ - member_table({ - "units": "Btuh", - "legal_range": "", - "default": "0", - "required": "No", - "variability": "hourly" - }) -}} - -### rsRhIn +<%= member_table( + units: "Btuh", + legal_range: "", + default: "0", + required: "No", + variability: "hourly") %> -Type: *float* +**rsRhIn=*float*** Entering air relative humidity (for model testing). -{{ - member_table({ - "units": "W/cfm", - "legal_range": "0 $\\le$ *x* $\\le$ 1", - "default": "Derived from entering air state", - "required": "No", - "variability": "constant" - }) -}} - -### rsTdbOut +<%= member_table( + units: "W/cfm", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "Derived from entering air state", + required: "No", + variability: "constant") %> -Type: *float* +**rsTdbOut=*float*** Air dry-bulb temperature at the outdoor portion of this system. -{{ - member_table({ - "units": "^o^F", - "legal_range": "*x* $\\ge$ 0", - "default": "From weather file", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "^o^F", + legal_range: "*x* $\\ge$ 0", + default: "From weather file", + required: "No", + variability: "hourly") %> -### endRSYS +**endRSYS** Optionally indicates the end of the RSYS definition. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[rsys][p_rsys] -- @[RSYSRes][p_rsysres] (accumulated results) +- @[rsys](#p_rsys) +- @[RSYSRes](#p_rsysres) (accumulated results) diff --git a/doc/src/docs/input-data/sgdist.md b/doc/src/docs/input-data/sgdist.md index 4e00e11cd..049a23677 100644 --- a/doc/src/docs/input-data/sgdist.md +++ b/doc/src/docs/input-data/sgdist.md @@ -4,23 +4,18 @@ SGDIST creates a subobject of the current window that distributes a specified fr Via members sgFSO and sgFSC, the fraction of the insolation distributed to the surface can be made dependent on whether the zone's shades are open or closed (see ZONE member znSC). -### sgName +**sgName** Name of solar gain distribution (follows "SGDIST" if given). -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") %> -### sgSurf - -Type: *sfName* +**sgSurf=*sfName*** Name of surface to which gain is targeted. @@ -31,86 +26,67 @@ If there is more than surface with the specified name: if one of the surfaces is --> The specified surface must be modeled with the Delayed model. If gain is targeted to a Quick model surface, a warning message is issued and the gain is redirected to the air of the associated zone. -{{ - member_table({ - "units": "", - "legal_range": "name of a *SURFACE*", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} - -### sgSide +<%= member_table( + units: "", + legal_range: "name of a *SURFACE*", + default: "*none*", + required: "Yes", + variability: "constant") %> -Type: *choice* +**sgSide=*choice*** Designates the side of the surface to which the gain is to be targeted: -{{ csv_table("INTERIOR, Apply gain to interior of surface -EXTERIOR, Apply gain to exterior of surface") -}} +<%= csv_table(< false) +INTERIOR, Apply gain to interior of surface +EXTERIOR, Apply gain to exterior of surface +END +%> -{{ - member_table({ - "units": "", - "legal_range": "INTERIOR, EXTERIOR", - "default": "Side of surface in zone containing window; or INTERIOR if both sides are in zone containing window.", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "INTERIOR, EXTERIOR", + default: "Side of surface in zone containing window; or INTERIOR if both sides are in zone containing window.", + required: "Yes", + variability: "constant") %> -### sgFSO - -Type: *float* +**sgFSO=*float*** Fraction of solar gain directed to specified surface when the owning window's interior shading is in the open position (when the window's zone's shade closure (znSC) is 0). -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1,and sum of window's sgFSO's $\\le$ 1", - "default": "*none*", - "required": "Yes", - "variability": "monthly-hourly" - }) -}} - -### sgFSC +<%= member_table( + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1,and sum of window's sgFSO's $\\le$ 1", + default: "*none*", + required: "Yes", + variability: "monthly-hourly") %> -Type: *float* +**sgFSC=*float*** Fraction of solar gain directed to specified surface when the owning window's interior shading is in the closed position. If the zone's shades are partly closed (znSC between 0 and 1), a proportional fraction between sgFSO and sgFSC is used. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1, and sum of window's sgFSC's $\\le$ 1", - "default": "*sgFSO*", - "required": "No", - "variability": "monthly-hourly" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1, and sum of window's sgFSC's $\\le$ 1", + default: "*sgFSO*", + required: "No", + variability: "monthly-hourly") %> -### endSGDist +**endSGDist** Optionally indicates the end of the solar gain distribution definition. Alternatively, the end of the solar gain distribution definition can be indicated by END or by just beginning another object. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[sgdist][p_sgdist] +- @[sgdist](#p_sgdist) diff --git a/doc/src/docs/input-data/shade.md b/doc/src/docs/input-data/shade.md index f4953be0f..4c1482225 100644 --- a/doc/src/docs/input-data/shade.md +++ b/doc/src/docs/input-data/shade.md @@ -5,242 +5,171 @@ SHADE constructs a subobject associated with the current WINDOW that represents -### shName +**shName** Name of shade; follows the word "SHADE" if given. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") %> -### ohDepth - -Type: *float* +**ohDepth=*float*** Depth of overhang (from plane of window to outside edge of overhang). A zero value indicates no overhang. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "monthly-hourly" - }) -}} - -### ohDistUp +<%= member_table( + units: "ft", + legal_range: "*x* $\\ge$ 0", + default: "0", + required: "No", + variability: "monthly-hourly") %> -Type: *float* +**ohDistUp=*float*** Distance from top of window to bottom of overhang. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "monthly-hourly" - }) -}} +<%= member_table( + units: "ft", + legal_range: "*x* $\\ge$ 0", + default: "0", + required: "No", + variability: "monthly-hourly") %> -### ohExL - -Type: *float* +**ohExL=*float*** Distance from left edge of window (as viewed from the outside) to the left end of the overhang. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "monthly-hourly" - }) -}} - -### ohExR +<%= member_table( + units: "ft", + legal_range: "*x* $\\ge$ 0", + default: "0", + required: "No", + variability: "monthly-hourly") %> -Type: *float* +**ohExR=*float*** Distance from right edge of window (as viewed from the outside) to the right end of the overhang. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "monthly-hourly" - }) -}} +<%= member_table( + units: "ft", + legal_range: "*x* $\\ge$ 0", + default: "0", + required: "No", + variability: "monthly-hourly") %> -### ohFlap - -Type: *float* +**ohFlap=*float*** Height of flap hanging down from outer edge of overhang. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "monthly-hourly" - }) -}} - -### lfDepth +<%= member_table( + units: "ft", + legal_range: "*x* $\\ge$ 0", + default: "0", + required: "No", + variability: "monthly-hourly") %> -Type: *float* +**lfDepth=*float*** Depth of left fin from plane of window. A zero value indicates no fin. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "monthly-hourly" - }) -}} - -### lfTopUp +<%= member_table( + units: "ft", + legal_range: "*x* $\\ge$ 0", + default: "0", + required: "No", + variability: "monthly-hourly") %> -Type: *float* +**lfTopUp=*float*** Vertical distance from top of window to top of left fin. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "monthly-hourly" - }) -}} +<%= member_table( + units: "ft", + legal_range: "*x* $\\ge$ 0", + default: "0", + required: "No", + variability: "monthly-hourly") %> -### lfDistL - -Type: *float* +**lfDistL=*float*** Distance from left edge of window to left fin. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "monthly-hourly" - }) -}} - -### lfBotUp +<%= member_table( + units: "ft", + legal_range: "*x* $\\ge$ 0", + default: "0", + required: "No", + variability: "monthly-hourly") %> -Type: *float* +**lfBotUp=*float*** Vertical distance from bottom of window to bottom of left fin. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "monthly-hourly" - }) -}} - -### rfDepth +<%= member_table( + units: "ft", + legal_range: "*x* $\\ge$ 0", + default: "0", + required: "No", + variability: "monthly-hourly") %> -Type: *float* +**rfDepth=*float*** Depth of right fin from plane of window. A 0 value indicates no fin. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "monthly-hourly" - }) -}} +<%= member_table( + units: "ft", + legal_range: "*x* $\\ge$ 0", + default: "0", + required: "No", + variability: "monthly-hourly") %> -### rfTopUp - -Type: *float* +**rfTopUp=*float*** Vertical distance from top of window to top of right fin. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "monthly-hourly" - }) -}} - -### rfDistR +<%= member_table( + units: "ft", + legal_range: "*x* $\\ge$ 0", + default: "0", + required: "No", + variability: "monthly-hourly") %> -Type: *float* +**rfDistR=*float*** Distance from right edge of window to right fin. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "monthly-hourly" - }) -}} - -### rfBotUp +<%= member_table( + units: "ft", + legal_range: "*x* $\\ge$ 0", + default: "0", + required: "No", + variability: "monthly-hourly") %> -Type: *float* +**rfBotUp=*float*** Vertical distance from bottom of window to bottom of right fin. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "monthly-hourly" - }) -}} +<%= member_table( + units: "ft", + legal_range: "*x* $\\ge$ 0", + default: "0", + required: "No", + variability: "monthly-hourly") %> -### endShade +**endShade** Optional to indicate the end of the SHADE definition. Alternatively, the end of the shade definition can be indicated by END or the declaration of another object. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[shade][p_shade] +- @[shade](#p_shade) diff --git a/doc/src/docs/input-data/shadex.md b/doc/src/docs/input-data/shadex.md index f19f7b2ef..c031e3942 100644 --- a/doc/src/docs/input-data/shadex.md +++ b/doc/src/docs/input-data/shadex.md @@ -1,36 +1,28 @@ # SHADEX -SHADEX describes an object that shades other building surfaces using an advanced shading model. Advanced shading calculations are provided only for [PVARRAYs][pvarray]. Advanced shading must be enabled via [Top exShadeModel][top-model-control-items]. +SHADEX describes an object that shades other building surfaces using an advanced shading model. Advanced shading calculations are provided only for [PVARRAYs](#pvarray). Advanced shading must be enabled via [Top exShadeModel](#top-model-control-items). -### sxName +**sxName** Name of photovoltaic array. Give after the word SHADEX. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") %> -### sxMounting +**sxMounting=*choice*** -Type: *choice* +Specifies the mounting location of the shade. sxMounting=Site indicates the SHADEX position is fixed and is not modified if the building is rotated. The position of SHADEXs with sxMounting=Building are modified to include the effect of building rotation specified via [Top bldgAz](#bldgAzm) -Specifies the mounting location of the shade. sxMounting=Site indicates the SHADEX position is fixed and is not modified if the building is rotated. The position of SHADEXs with sxMounting=Building are modified to include the effect of building rotation specified via [Top bldgAz][top-general-data-items] - -{{ - member_table({ - "units": "", - "legal_range": "Building or Site", - "default": "Site", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "Building or Site", + default: "Site", + required: "No", + variability: "constant") %> **sxVertices=*list of up to 36 floats*** @@ -38,36 +30,30 @@ Vertices of a polygon representing the shape of the shading object. The values that follow sxVertices are a series of X, Y, and Z values for the vertices of the polygon. The coordinate system is defined from a viewpoint facing north. X and Y values convey east-west and north-south location respectively relative to an arbitrary origin (positive X value are to the east; positive Y values are to the north). Z values convey height relative to the building 0 level and positive values are upward. -The vertices are specified in counter-clockwise order when facing the shading object from the south. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When sxType=Building, the effective position of the polygon reflects building rotation specified by [TOP bldgAzm][top-general-data-items]. +The vertices are specified in counter-clockwise order when facing the shading object from the south. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When sxType=Building, the effective position of the polygon reflects building rotation specified by [TOP bldgAzm](#top-general-data-items). For example, to specify a rectangular shade "tree" that is 10 x 40 ft, facing south, and 100 ft to the south of the nominal building origin -- sxVertices = 5, -100, 0, 15, -100, 0, 15, -100, 40, 5, -100, 40 -{{ - member_table({ - "units": "ft", - "legal_range": "unrestricted", - "default": "*none*", - "required": "9, 12, 15, 18, 21, 24, 27, 30, 33 or 36 values", - "variability": "constant" - }) -}} +<%= member_table( + units: "ft", + legal_range: "unrestricted", + default: "*none*", + required: "9, 12, 15, 18, 21, 24, 27, 30, 33 or 36 values", + variability: "constant") %> -### endSHADEX +**endSHADEX** Optionally indicates the end of the SHADEX definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[SHADEX][p_shadex] +- @[SHADEX](#p_shadex) diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index 751bccaa5..5b3531c4c 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -2,62 +2,49 @@ Surface constructs a ZONE subobject of class SURFACE that represents a surrounding or interior surface of the zone. Internally, SURFACE generates a QUICK surface (U-value only), a DELAYED (massive) surface (using the finite-difference mass model), interzone QUICK surface, or interzone DELAYED surface, as appropriate for the specified construction and exterior conditions. -### sfName +**sfName** Name of surface; give after the word SURFACE. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") %> -### sfType - -Type: *choice* +**sfType=*choice*** Type of surface: -{{ csv_table("FLOOR, Surface defines part or all of the 'bottom' of the zone; it is horizontal with inside facing up. The outside of the surface is not adjacent to the current zone. +<%= csv_table(< false) +FLOOR, Surface defines part or all of the 'bottom' of the zone; it is horizontal with inside facing up. The outside of the surface is not adjacent to the current zone. WALL, Surface defines a 'side' of the zone; its outside is not adjacent to the current zone. -CEILING, Surface defines part or all of the 'top' of the zone with the inside facing down. The outside of the surface is not adjacent to the current zone.") -}} +CEILING, Surface defines part or all of the 'top' of the zone with the inside facing down. The outside of the surface is not adjacent to the current zone. +END +%> sfType is used extensively for default determination and input checking, but does not have any further internal effect. The Floor, Wall, and Ceiling choices identify surfaces that form boundaries between the zone and some other condition. -{{ - member_table({ - "units": "", - "legal_range": "FLOOR WALL CEILING", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} - -### sfArea +<%= member_table( + units: "", + legal_range: "FLOOR WALL CEILING", + default: "*none*", + required: "Yes", + variability: "constant") %> -Type: *float* +**sfArea=*float*** Gross area of surface. (CSE computes the net area for simulation by subtracting the areas of any windows and doors in the surface.). -{{ - member_table({ - "units": "ft^2^", - "legal_range": "*x* $>$ 0", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} - -### sfTilt +<%= member_table( + units: "ft^2^", + legal_range: "*x* $>$ 0", + default: "*none*", + required: "Yes", + variability: "constant") %> -Type: *float* +**sfTilt=*float*** Surface tilt from horizontal. Values outside the range 0 to 360 are first normalized to that range. The default and allowed range depend on sfType, as follows: @@ -67,278 +54,211 @@ Surface tilt from horizontal. Values outside the range 0 to 360 are first normal sfType = CEILING 0 $\leq$ *sfTilt* $\leq$ 60, default = 0 ------------------ ------------------------------------------- -{{ - member_table({ - "units": "degrees", - "legal_range": "Dependent upon *sfType* See above", - "default": "Dependent upon *sfType* See above", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "degrees", + legal_range: "Dependent upon *sfType* See above", + default: "Dependent upon *sfType* See above", + required: "No", + variability: "constant") %> -### sfAzm - -Type: *float* +**sfAzm=*float*** Azimuth of surface with respect to znAzm. The azimuth used in simulating a surface is bldgAzm + znAzm + sfAzm; the surface is rotated if any of those are changed. Values outside the range 0 to 360 are normalized to that range. Required for non-horizontal surfaces. -{{ - member_table({ - "units": "degrees", - "legal_range": "unrestricted", - "default": "*none*", - "required": "Required if *sfTilt* $\\neq$ 0 and *sfTilt* $\\neq$ 180", - "variability": "constant" - }) -}} - -### sfModel +<%= member_table( + units: "degrees", + legal_range: "unrestricted", + default: "*none*", + required: "Required if *sfTilt* $\\neq$ 0 and *sfTilt* $\\neq$ 180", + variability: "constant") %> -Type: *choice* +**sfModel=*choice*** Provides user control over how CSE models conduction for this surface. -{{ csv_table("QUICK, Surface is modeled using a simple conductance. Heat capacity effects are ignored. Either sfCon or sfU (next) can be specified. +<%= csv_table(< false) +QUICK, Surface is modeled using a simple conductance. Heat capacity effects are ignored. Either sfCon or sfU (next) can be specified. DELAYED, DELAYED\_HOUR, DELAYED\_SUBHOUR, Surface is modeled using a multi-layer finite difference technique that represents heat capacity effects. If the time constant of the surface is too short to accurately simulate, a warning message is issued and the Quick model is used. The program **cannot** use the finite difference model if sfU rather than sfCon is specified. AUTO, Program selects Quick or the appropriate Delayed automatically according to the time constant of the surface (if sfU is specified, Quick is selected). FD (or FORWARD\_DIFFERENCE), Selects the forward difference model (used with short time steps and the CZM/UZM zone model). -KIVA, Uses a two-dimensional finite difference model to simulate heat flow through foundation surfaces.") -}} - -{{ - member_table({ - "units": None, - "legal_range": "QUICK, DELAYED, DELAYED\_HOUR, DELAYED\_SUBOUR, AUTO, 2D_FND", - "default": "AUTO", - "required": "No", - "variability": "constant" - }) -}} +KIVA, Uses a two-dimensional finite difference model to simulate heat flow through foundation surfaces. +END +%> + +<%= member_table( + legal_range: "QUICK, DELAYED, DELAYED\_HOUR, DELAYED\_SUBOUR, AUTO, 2D_FND", + default: "AUTO", + required: "No", + variability: "constant") %> Either sfU or sfCon must be specified, but not both. -### sfU - -Type: *float* +**sfU=*float*** Surface U-value (NOT including surface (air film) conductances). For surfaces for which no heat capacity is to be modeled, allows direct entry of U-value without defining a CONSTRUCTION. -{{ - member_table({ - "units": "Btuh/ft^2^-^o^F", - "legal_range": "*x* $>$ 0", - "default": "Determined from *sfCon*", - "required": "if *sfCon* not given", - "variability": "constant" - }) -}} +<%= member_table( + units: "Btuh/ft^2^-^o^F", + legal_range: "*x* $>$ 0", + default: "Determined from *sfCon*", + required: "if *sfCon* not given", + variability: "constant") %> -### sfCon - -Type: *conName* +**sfCon=*conName*** Name of CONSTRUCTION of the surface. -{{ - member_table({ - "units": "", - "legal_range": "Name of a *CONSTRUCTION*", - "default": "*none*", - "required": "unless *sfU* given", - "variability": "constant" - }) -}} - -### sfLThkF +<%= member_table( + units: "", + legal_range: "Name of a *CONSTRUCTION*", + default: "*none*", + required: "unless *sfU* given", + variability: "constant") %> -Type: *float* +**sfLThkF=*float*** Sublayer thickness adjustment factor for FORWARD\_DIFFERENCE conduction model used with sfCon surfaces. Material layers in the construction are divided into sublayers as needed for numerical stability. sfLThkF allows adjustment of the thickness criterion used for subdivision. A value of 0 prevents subdivision; the default value (0.5) uses layers with conservative thickness equal to half of an estimated safe value. Fewer (thicker) sublayers improves runtime at the expense of accurate representation of rapid changes. -{{ - member_table({ - "units": "", - "legal_range": "*x* $\\ge$ 0", - "default": "0.5", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*x* $\\ge$ 0", + default: "0.5", + required: "No", + variability: "constant") %> -### sfExCnd - -Type: *choice* +**sfExCnd=*choice*** Specifies the thermal conditions assumed at surface exterior, and at exterior of any subobjects (windows or doors) belonging to current surface. The conditions accounted for are dry bulb temperature and incident solar radiation. -{{ csv_table("AMBIENT, Exterior surface is exposed to the 'weather' as read from the weather file. Solar gain is calculated using solar geometry, sfAzm, sfTilt, and sfExAbs. +<%= csv_table(< false) +AMBIENT, Exterior surface is exposed to the 'weather' as read from the weather file. Solar gain is calculated using solar geometry, sfAzm, sfTilt, and sfExAbs. SPECIFIEDT, Exterior surface is exposed to solar radiation as in AMBIENT, but the dry bulb temperature is calculated with a user specified function (sfExT). sfExAbs can be set to 0 to eliminate solar effects. ADJZN, Exterior surface is exposed to another zone, whose name is specified by sfAdjZn. Solar gain is 0 unless gain is targeted to the surface with SGDIST below. GROUND, The surface is in contact with the ground. Details of the two-dimensional foundation design are defined by sfFnd. Only floor and wall surfaces may use this option. -ADIABATIC, Exterior surface heat flow is 0. Thermal storage effects of delayed surfaces are modeled.") -}} - -### sfExAbs +ADIABATIC, Exterior surface heat flow is 0. Thermal storage effects of delayed surfaces are modeled. +END +%> -Type: *float* +**sfExAbs=*float*** Surface exterior absorptivity. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", - "default": "0.5", - "required": "Required if *sfExCnd* = AMBIENT or *sfExCnd* = SPECIFIEDT", - "variability": "monthly-hourly" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "0.5", + required: "Required if *sfExCnd* = AMBIENT or *sfExCnd* = SPECIFIEDT", + variability: "monthly-hourly") %> -### sfInAbs - -Type: *float* +**sfInAbs=*float*** Surface interior solar absorptivity. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ *x* $\le$ 1", - "default": "sfType = CEILING, 0.2; sfType = WALL, 0.6; sfType = FLOOR, 0.8", - "required": "No", - "variability": "monthly-hourly" - }) -}} - -### sfExEpsLW +<%= member_table( + units: "", + legal_range: "0 $\\le$ *x* $\le$ 1", + default: "sfType = CEILING, 0.2; sfType = WALL, 0.6; sfType = FLOOR, 0.8", + required: "No", + variability: "monthly-hourly") %> -Type: *float* +**sfExEpsLW=*float*** Surface exterior long wave (thermal) emittance. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", - "default": "0.9", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "0.9", + required: "No", + variability: "constant") %> -### sfInEpsLW - -Type: *float* +**sfInEpsLW=*float*** Surface interior long wave (thermal) emittance. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", - "default": "0.9", - "required": "No", - "variability": "constant" - }) -}} - -### sfExT +<%= member_table( + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "0.9", + required: "No", + variability: "constant") %> -Type: *float* +**sfExT=*float*** Exterior air temperature. -{{ - member_table({ - "units": "^o^F", - "legal_range": "*unrestricted*", - "default": "*none*", - "required": "Required if *sfExCnd* = SPECIFIEDT", - "variability": "hourly" - }) -}} +<%= member_table( + units: "^o^F", + legal_range: "*unrestricted*", + default: "*none*", + required: "Required if *sfExCnd* = SPECIFIEDT", + variability: "hourly") %> -### sfAdjZn - -Type: *znName* +**sfAdjZn=*znName*** Name of adjacent zone; used only when sfExCnd is ADJZN. Can be the same as the current zone. -{{ - member_table({ - "units": "", - "legal_range": "name of a *ZONE*", - "default": "*none*", - "required": "Required when
*sfExCnd* = ADJZN", - "variability": "constant" - }) -}} - -### sfGrndRefl +<%= member_table( + units: "", + legal_range: "name of a *ZONE*", + default: "*none*", + required: "Required when
*sfExCnd* = ADJZN", + variability: "constant") %> -Type: *float* +**sfGrndRefl=*float*** Ground reflectivity for this surface. -{{ - member_table({ - "units": "fraction", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", - "default": "grndRefl", - "required": "No", - "variability": "Monthly - Hourly" - }) -}} +<%= member_table( + units: "fraction", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "grndRefl", + required: "No", + variability: "Monthly - Hourly") %> -### sfInH - -Type: *float* +**sfInH=*float*** Inside surface (air film) conductance. Ignored for sfModel = Forward\_Difference. Default depends on the surface type. -{{ csv_table("sfType = FLOOR or CEILING, 1.32 -other, 1.5") -}} - -{{ - member_table({ - "units": "Btuh/ft^2^-^o^F", - "legal_range": "*x* $>$ 0", - "default": "*See above*", - "required": "No", - "variability": "constant" - }) -}} +<%= csv_table(< false) +sfType = FLOOR or CEILING, 1.32 +other, 1.5 +END +%> -### sfExH +<%= member_table( + units: "Btuh/ft^2^-^o^F", + legal_range: "*x* $>$ 0", + default: "*See above*", + required: "No", + variability: "constant") %> -Type: *float* +**sfExH=*float*** Outside combined surface (air film) conductance. Ignored for sfModel = Forward\_Difference. The default value is dependent upon the exterior conditions: -{{ csv_table("sfExCnd = AMBIENT, dflExH (Top-level member, described above) +<%= csv_table(< false) +sfExCnd = AMBIENT, dflExH (Top-level member, described above) sfExCnd = SPECIFIEDT, dflExH (described above) sfExCnd = ADJZN, 1.5 -sfExCnd = ADIABATIC, not applicable") -}} - -{{ - member_table({ - "units": "Btuh/ft^2^-^o^F", - "legal_range": "*x* $>$ 0", - "default": "see above", - "required": "No", - "variability": "constant" - }) -}} +sfExCnd = ADIABATIC, not applicable +END +%> + +<%= member_table( + units: "Btuh/ft^2^-^o^F", + legal_range: "*x* $>$ 0", + default: "see above", + required: "No", + variability: "constant") %> When sfModel = Forward\_Difference, several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on sfExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. -{{ csv_table("Model, Exposed to ambient, Exposed to zone +<%= csv_table(< true) +Model, Exposed to ambient, Exposed to zone UNIFIED, default CSE model, default CSE model INPUT, hc = sfExHcMult, hc = sfxxHcMult AKBARI, Akbari model, n/a @@ -347,260 +267,191 @@ WINKELMANN, Winkelmann model, n/a DOE2, DOE2 model, n/a MILLS, n/a, Mills model ASHRAE, n/a, ASHRAE handbook values -TARP, n/a, TARP model", True) -}} +TARP, n/a, TARP model +END +%> -### sfExHcModel - -Type: *choice* +**sfExHcModel=*choice*** Selects the model used for exterior surface convection when sfModel = Forward\_Difference. -{{ - member_table({ - "units": "", - "legal_range": "*choices above*", - "default": "UNIFIED", - "required": "No", - "variability": "constant" - }) -}} - -### sfExHcLChar +<%= member_table( + units: "", + legal_range: "*choices above*", + default: "UNIFIED", + required: "No", + variability: "constant") %> -Type: *float* +**sfExHcLChar=*float*** Characteristic length of surface, used in derivation of forced exterior convection coefficients in some models when outside surface is exposed to ambient. See sfExHcModel. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $>$ 0", - "default": "10", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "ft", + legal_range: "*x* $>$ 0", + default: "10", + required: "No", + variability: "constant") %> -### sfExHcMult - -Type: *float* +**sfExHcMult=*float*** Exterior convection coefficient adjustment factor. When sfExHcModel=INPUT, hc=sfExHcMult. For other sfExHcModel choices, the model-derived hc is multiplied by sfExHcMult. -{{ - member_table({ - "units": "", - "legal_range": "x $\\ge$ 0", - "default": "1", - "required": "No", - "variability": "subhourly" - }) -}} - -### sfExRf +<%= member_table( + units: "", + legal_range: "x $\\ge$ 0", + default: "1", + required: "No", + variability: "subhourly") %> -Type: *float* +**sfExRf=*float*** Exterior surface roughness factor. Used only when surface is exposed to ambient (i.e. with wind exposure). Typical values: -{{ csv_table("Roughness Index, sfExRf, Example +<%= csv_table(< true) +Roughness Index, sfExRf, Example 1 (very rough), 2.17, Stucco 2 (rough), 1.67, Brick 3 (medium rough), 1.52, Concrete 4 (Medium smooth), 1.13, Clear pine 5 (Smooth), 1.11, Smooth plaster -6 (Very Smooth), 1, Glass", True) -}} +6 (Very Smooth), 1, Glass +END +%> -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "sfExHcModel = WINKELMANN: 1.66 else 2.17", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "sfExHcModel = WINKELMANN: 1.66 else 2.17", + required: "No", + variability: "constant") %> -### sfInHcModel - -Type: *choice* +**sfInHcModel=*choice*** Selects the model used for the inside (zone) surface convection when sfModel = Forward\_Difference. -{{ - member_table({ - "units": "", - "legal_range": "*choices above (see sfExHcModel)*", - "default": "UNIFIED", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*choices above (see sfExHcModel)*", + default: "UNIFIED", + required: "No", + variability: "constant") %> **sfInHcMult=*float*** Interior convection coefficient adjustment factor. When sfInHcModel=INPUT, hc=sfInHcMult. For other sfInHcModel choices, the model-derived hc is multiplied by sfInHcMult. -{{ - member_table({ - "units": "", - "legal_range": "x $\\ge$ 0", - "default": "1", - "required": "No", - "variability": "subhourly" - }) -}} +<%= member_table( + units: "", + legal_range: "x $\\ge$ 0", + default: "1", + required: "No", + variability: "subhourly") %> The items below give values associated with CSE's model for below grade surfaces (sfExCnd=GROUND). See CSE Engineering Documentation for technical details. -### sfFnd - -Type: *fdName* +**sfFnd=*fdName*** Name of FOUNDATION applied to ground-contact Floor SURFACEs; used only for Floor SURFACEs when sfExCnd is GROUND. -{{ - member_table({ - "units": None, - "legal_range": "Name of a *Foundation*", - "default": "*none*", - "required": "when
*sfExCnd* = GROUND and
*sfType* = Floor", - "variability": "constant" - }) -}} +<%= member_table( + legal_range: "Name of a *Foundation*", + default: "*none*", + required: "when
*sfExCnd* = GROUND and
*sfType* = Floor", + variability: "constant") %> -### sfFndFloor - -Type: *sfName* +**sfFndFloor=*sfName*** Name of adjacent ground-contact Floor SURFACE; used only for Wall SURFACEs when sfExCnd is GROUND. -{{ - member_table({ - "units": None, - "legal_range": "Name of a *Surface*", - "default": "*none*", - "required": "when
*sfExCnd* = GROUND and
*sfType* = Wall", - "variability": "constant" - }) -}} - -### sfHeight +<%= member_table( + legal_range: "Name of a *Surface*", + default: "*none*", + required: "when
*sfExCnd* = GROUND and
*sfType* = Wall", + variability: "constant") %> -Type: *float* +**sfHeight=*float*** Needed for foundation wall height, otherwise ignored. Maybe combine with sfDepthBG? -{{ - member_table({ - "units": "ft", - "legal_range": "x $>$ 0", - "default": "*none*", - "required": "when *sfType* is WALL and *sfExtCnd* is GROUND", - "variability": "constant" - }) -}} +<%= member_table( + units: "ft", + legal_range: "x $>$ 0", + default: "*none*", + required: "when *sfType* is WALL and *sfExtCnd* is GROUND", + variability: "constant") %> -### sfExpPerim - -Type: *float* +**sfExpPerim=*float*** Exposed perimeter of foundation floors. -{{ - member_table({ - "units": "ft", - "legal_range": "x $\\geq$ 0", - "default": "*none*", - "required": "when *sfType* is FLOOR, *sfFnd* is set, and *sfExtCnd* is GROUND", - "variability": "constant" - }) -}} - +<%= member_table( + units: "ft", + legal_range: "x $\\geq$ 0", + default: "*none*", + required: "when *sfType* is FLOOR, *sfFnd* is set, and *sfExtCnd* is GROUND", + variability: "constant") %> -### sfDepthBG -Type: *float* +**sfDepthBG=*float*** *Note: sfDepthBG is used as part of the simple ground model, which is no longer supported. Use sfHeight with sfFnd instead.* Depth below grade of surface. For walls, sfDepthBG is measured to the lower edge. For floors, sfDepthBG is measured to the bottom face. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $\\ge$ 0", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "ft", + legal_range: "*x* $\\ge$ 0", + default: "*none*", + required: "No", + variability: "constant") %> *Note: The following data members are part of the simple ground model, which is no longer supported. Use sfFnd instead.* -### sfExCTGrnd - -Type: *float* +**sfExCTGrnd=*float*** **sfExCTaDbAvg07=*float*** -### sfExCTaDbAvg14 - -Type: *float* +**sfExCTaDbAvg14=*float*** **sfExCTaDbAvg31=*float*** -### sfExCTaDbAvgYr - -Type: *float* +**sfExCTaDbAvgYr=*float*** Conductances from outside face of surface to the weather file ground temperature and the moving average outdoor dry-bulb temperatures for 7, 14, 31, and 365 days. -{{ - member_table({ - "units": "Btuh/ft^2^-^o^F", - "legal_range": "*x* $\\ge$ 0", - "default": "see above", - "required": "No", - "variability": "constant" - }) -}} - -### sfExRConGrnd +<%= member_table( + units: "Btuh/ft^2^-^o^F", + legal_range: "*x* $\\ge$ 0", + default: "see above", + required: "No", + variability: "constant") %> -Type: *float* +**sfExRConGrnd=*float*** Resistance overall construction resistance. TODO: full documentation. -{{ - member_table({ - "units": "", - "legal_range": "*x* $\\ge$ 0", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*x* $\\ge$ 0", + default: "*none*", + required: "No", + variability: "constant") %> -### endSURFACE +**endSURFACE** Optional to indicates the end of the surface definition. Alternatively, the end of the surface definition can be indicated by END, or by beginning another SURFACE or other object definition. If used, should follow the definitions of the SURFACE's subobjects -- DOORs, WINDOWs, SHADEs, SGDISTs, etc. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> -### humMeth - -Type: *choice* +**humMeth=*choice*** Developmental zone humidity computation method choice for CNE models (no effect for CSE models). -{{ csv_table("ROB, Rob's backward difference method. Works well within limitations of backward difference approach. -PHIL, Phil's central difference method. Should be better if perfected*coma* but initialization at air handler startup is unresolved*coma and ringing has been observed.") -}} - -{{ - member_table({ - "units": "", - "legal_range": "ROB, PHIL", - "default": "ROB", - "required": "No", - "variability": "constant" - }) -}} +<%= csv_table(< false) +ROB, Rob's backward difference method. Works well within limitations of backward difference approach. +PHIL, Phil's central difference method. Should be better if perfected*coma* but initialization at air handler startup is unresolved*coma and ringing has been observed. +END +%> -### dflExH +<%= member_table( + units: "", + legal_range: "ROB, PHIL", + default: "ROB", + required: "No", + variability: "constant") %> -Type: *float* +**dflExH=*float*** Default exterior surface (air film) conductance used for opaque and glazed surfaces exposed to ambient conditions in the absence of explicit specification. -{{ - member_table({ - "units": "Btuh/ft^2^-^o^F", - "legal_range": "*x* $>$ 0", - "default": "2.64", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "Btuh/ft^2^-^o^F", + legal_range: "*x* $>$ 0", + default: "2.64", + required: "No", + variability: "constant") %> -### bldgAzm - -Type: *float* +**bldgAzm=*float*** Reference compass azimuth (0 = north, 90 = east, etc.). All zone orientations (and therefore surface orientations) are relative to this value, so the entire building can be rotated by changing bldgAzm only. If a value outside the range 0^o^ $\leq$ *x* $<$ 360^o^ is given, it is normalized to that range. -{{ - member_table({ - "units": "^o^ (degrees)", - "legal_range": "unrestricted", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} - -### elevation +<%= member_table( + units: "^o^ (degrees)", + legal_range: "unrestricted", + default: "0", + required: "No", + variability: "constant") %> -Type: *float* +**elevation=*float*** Elevation of the building site. Used internally for the computation of barometric pressure and air density of the location. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $\\ge$ 0", - "default": "0 (sea level)", - "required": "No", - "variability": "constant" - }) -}} - -### runTitle +<%= member_table( + units: "ft", + legal_range: "*x* $\\ge$ 0", + default: "0 (sea level)", + required: "No", + variability: "constant") %> -Type: *string* +**runTitle=*string*** Run title for the simulation. Appears in report footers, export headers, and in the title lines to the INP, LOG, and ERR built-in reports (these appear by default in the primary report file; the ERR report also appears in the error message file, if one is created). -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "blank (no title", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "blank (no title", + required: "No", + variability: "constant") %> -### runSerial - -Type: *int* +**runSerial=*int*** Run serial number for the simulation. Increments on each run in a session; appears in report footers. -{{ - member_table({ - "units": "", - "legal_range": "0 $\leq$ *x* $\leq$ 999", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $\leq$ *x* $\leq$ 999", + default: "0", + required: "No", + variability: "constant") %> ## TOP Daylight Saving Time Items Daylight savings starts by default at 2:00 a.m. of the second Sunday in March. Internally, hour 3 (2:00-3:00 a.m.) is skipped and reports for this day show only 23 hours. Daylight savings ends by default at 2:00 a.m. of the first Sunday of November; for this day 25 hours are shown on reports. CSE fetches weather data using standard time but uses daylight savings time to calculate variable expressions (and thus all schedules). -### DT - -Type: *choice* +**DT=*choice*** Whether Daylight Savings Time is to be used for the current run. -{{ - member_table({ - "units": "", - "legal_range": "YES, NO", - "default": "YES", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "YES, NO", + default: "YES", + required: "No", + variability: "constant") %> -### DTbegDay - -Type: *date* +**DTbegDay=*date*** Start day for daylight saving time (assuming DT=Yes) -{{ - member_table({ - "units": "", - "legal_range": "*date*", - "default": "*second Sunday in March*", - "required": "No", - "variability": "constant" - }) -}} - -### DTendDay +<%= member_table( + units: "", + legal_range: "*date*", + default: "*second Sunday in March*", + required: "No", + variability: "constant") %> -Type: *date* +**DTendDay=*date*** End day for daylight saving time (assuming DT=Yes) -{{ - member_table({ - "units": "", - "legal_range": "*date*", - "default": "*first Sunday in November*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*date*", + default: "*first Sunday in November*", + required: "No", + variability: "constant") %> ## TOP Model Control Items -### ventAvail - -Type: *choice* +**ventAvail=*choice*** Indicates availability of outdoor ventilation strategies. CSE cannot model simultaneously-operating alternative ventilation strategies. For example, an RSYS central fan integrated (CFI) OAV system is never modeled while whole house fan ventilation is available. ventAvail controls which ventilation mode, if any, is available for the current hour. Note that mode availability means that the strategy could operate but may not operate due to other control assumptions. -{{ csv_table("Choice, Ventilation Strategy Available +<%= csv_table(< true) +Choice, Ventilation Strategy Available NONE, None WHOLEBUILDING, IZXFER (window and whole-house fan) -RSYSOAV, RSYS central fan integrated (CFI) outside air ventilation (OAV)", True) -}} +RSYSOAV, RSYS central fan integrated (CFI) outside air ventilation (OAV) +END +%> As noted, ventAvail is evaluated hourly, permitting flexible control strategy modeling. The following example specifies that RSYSOAV (CFI) ventilation is available when the seven day moving average temperature is above 68 ^o^F, otherwise whole building ventilation is available between 7 and 11 PM, otherwise no ventilation. @@ -484,185 +348,143 @@ As noted, ventAvail is evaluated hourly, permitting flexible control strategy mo : ($hour >= 19 && $hour <= 23) ? WHOLEBUILDING : NONE -{{ - member_table({ - "units": "", - "legal_range": "*Choices above*", - "default": "WHOLEBUILDING", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "", + legal_range: "*Choices above*", + default: "WHOLEBUILDING", + required: "No", + variability: "hourly") %> -### exShadeModel +**exShadeModel=*choice*** -Type: *choice* +Specifies advanced exterior shading model used to evaluate shading of [PVARRAYs](#pvarray) by [SHADEXs](#shadex) or other PVARRAYs. Advanced shading is not implemented for building surfaces and this setting has no effect on walls or windows. -Specifies advanced exterior shading model used to evaluate shading of [PVARRAYs][pvarray] by [SHADEXs][shadex] or other PVARRAYs. Advanced shading is not implemented for building surfaces and this setting has no effect on walls or windows. - -{{ csv_table("**Choice**, **Effect** +<%= csv_table(< true) +**Choice**, **Effect** PENUMBRA, Calculate shading using the Penumbra model -NONE, Disable advanced shading calculations", True) -}} - -{{ - member_table({ - "units": "", - "legal_range": "*Choices above*", - "default": "PENUMBRA", - "required": "No", - "variability": "constant" - }) -}} +NONE, Disable advanced shading calculations +END +%> -### slrInterpMeth +<%= member_table( + units: "", + legal_range: "*Choices above*", + default: "PENUMBRA", + required: "No", + variability: "constant") %> -Type: *choice* +**slrInterpMeth=*choice*** Solar interpolation method. -{{ csv_table("Choice +<%= csv_table(< true) +Choice CSE -TRNSYS", True) -}} +TRNSYS +END +%> -{{ - member_table({ - "units": "", - "legal_range": "See table above", - "default": "CSE", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "See table above", + default: "CSE", + required: "No", + variability: "constant") %> -### ANTolAbs - -Type: *float* +**ANTolAbs=*float*** AirNet absolute convergence tolerance. Ideally, calculated zone air pressures should be such that the net air flow into each zone is 0 -- that is, there should be a perfect mass balance. The iterative AirNet solution techniques are deemed converged when netAirMassFlow < max( ANTolAbs, ANTolRel*totAirMassFlow). -{{ - member_table({ - "units": "lbm/sec", - "legal_range": "*x* $>$ 0", - "default": "0.00125 (about 1 cfm)", - "required": "No", - "variability": "constant" - }) -}} - -### ANTolRel +<%= member_table( + units: "lbm/sec", + legal_range: "*x* $>$ 0", + default: "0.00125 (about 1 cfm)", + required: "No", + variability: "constant") %> -Type: *float* +**ANTolRel=*float*** AirNet relative convergence tolerance. See AnTolAbs just above. -{{ - member_table({ - "units": "", - "legal_range": "*x* $>$ 0", - "default": "0.0001", - "required": "No", - "variability": "constant" - }) -}} - -### ANPressWarn +<%= member_table( + units: "", + legal_range: "*x* $>$ 0", + default: "0.0001", + required: "No", + variability: "constant") %> -Type: *float* +**ANPressWarn=*float*** AirNet pressure warning threshold. A warning message is issued when the absolute value of the AirNet-calculated zone pressure exceeds ANPressWarn. Note the default for ANPressWarn conservatively large. 10 lb/ft2 is about 500 pascals -- a pressure that is probably impossible in a building. The intent of this value is to alert the user to incorrect modeling inputs while avoiding excessive messages. -{{ - member_table({ - "units": "lb/ft2", - "legal_range": "x $\\gt$ 0", - "default": "10", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "lb/ft2", + legal_range: "x $\\gt$ 0", + default: "10", + required: "No", + variability: "constant") %> -### ANPressErr - -Type: *float* +**ANPressErr=*float*** AirNet pressure error threshold. The simulation terminates with a message if the absolute value of any AirNet-calculated zone pressure exceeds ANPressErr. Note the default value for ANPressErr is physically unrealistic. 30 lb/ft2 is about 1500 pascals -- a pressure that would never be possible in a building. The intent of this value is to prevent simulation crashes due to numerical errors in AirNet calculations. -{{ - member_table({ - "units": "lb/ft2", - "legal_range": "x $\\gt$ 0", - "default": "30", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "lb/ft2", + legal_range: "x $\\gt$ 0", + default: "30", + required: "No", + variability: "constant") %> The ASHWAT complex fenestration model used when WINDOW wnModel=ASHWAT yields several heat transfer results that are accurate over local ranges of conditions. Several values control when these value are recalculated. If any of the specified values changes more than the associated threshold, a full ASHWAT calculation is triggered. Otherwise, prior results are used. ASHWAT calculations are computationally expensive and conditions often change only incrementally between time steps. -### AWTrigT - -Type: *float* +**AWTrigT=*float*** ASHWAT temperature change threshold -- full calculation is triggered by a change of either indoor or outdoor environmental (combined air and radiant) temperature that exceeds AWTrigT. -{{ - member_table({ - "units": "^o^F", - "legal_range": "*x* $>$ 0", - "default": "1", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "^o^F", + legal_range: "*x* $>$ 0", + default: "1", + required: "No", + variability: "constant") %> -### AWTrigSlr - -Type: *float* +**AWTrigSlr=*float*** ASHWAT solar change threshold -- full calculation is triggered by a fractional change of incident solar radiation that exceeds AWTrigSlr. -{{ - member_table({ - "units": "", - "legal_range": "*x* $>$ 0", - "default": "0.05", - "required": "No", - "variability": "constant" - }) -}} - -### AWTrigH +<%= member_table( + units: "", + legal_range: "*x* $>$ 0", + default: "0.05", + required: "No", + variability: "constant") %> -Type: *float* +**AWTrigH=*float*** ASHWAT convection coefficient change threshold -- full calculation is triggered by a fractional change of inside surface convection coefficient that exceeds AWTrigH. -{{ - member_table({ - "units": "", - "legal_range": "*x* $>$ 0", - "default": "0.1", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*x* $>$ 0", + default: "0.1", + required: "No", + variability: "constant") %> ## TOP Weather Data Items The following system variables (4.6.4) are determined from the weather file for each simulated hour: -{{ csv_table("$radBeam, beam irradiance on tracking surface (integral for hour, Btu/ft^2^). -$radDiff, diffuse irradiance on a horizontal surface (integral for hour, Btu/ft^2^). -$tDbO, dry bulb temp (^o^F). -$tWbO, wet bulb temp (^o^F). -$wO, humidity ratio -$windDirDeg, wind direction (degrees, NOT RADIANS; 0=N, 90=E). -$windSpeed, wind speed (mph).") -}} +<%= csv_table(< false) +\$radBeam, beam irradiance on tracking surface (integral for hour, Btu/ft^2^). +\$radDiff, diffuse irradiance on a horizontal surface (integral for hour, Btu/ft^2^). +\$tDbO, dry bulb temp (^o^F). +\$tWbO, wet bulb temp (^o^F). +\$wO, humidity ratio +\$windDirDeg, wind direction (degrees, NOT RADIANS; 0=N, 90=E). +\$windSpeed, wind speed (mph). +END +%> The following are the terms determined from the weather file for internal use, and can be referenced with the probes shown. @@ -670,401 +492,298 @@ The following are the terms determined from the weather file for internal use, a @Top.windSpeedSquaredWind speed squared (mph2). -### wfName - -Type: *string* +**wfName=*string*** Weather file path name for simulation. The file should be in the current directory, in the directory CSE.EXE was read from, or in a directory on the operating system PATH. Weather file formats supported are CSW, EPW, and ET1. Only full-year weather files are supported. Note: Backslash (\\) characters in path names must be doubled to work properly (e.g. "\\\\wthr\\\\mywthr.epw"). Forward slash (/) may be used in place of backslash without doubling. -{{ - member_table({ - "units": "", - "legal_range": "file name,path optional", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} - -### skyModel +<%= member_table( + units: "", + legal_range: "file name,path optional", + default: "*none*", + required: "Yes", + variability: "constant") %> -Type: *choice* +**skyModel=*choice*** Selects sky model used to determine relative amounts of direct and diffuse irradiance. -{{ csv_table("ISOTROPIC, traditional isotropic sky model -ANISOTROPIC, Hay anisotropic model") -}} +<%= csv_table(< false) +ISOTROPIC, traditional isotropic sky model +ANISOTROPIC, Hay anisotropic model +END +%> -{{ - member_table({ - "units": "", - "legal_range": "*choices above*", - "default": "ANISOTROPIC", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*choices above*", + default: "ANISOTROPIC", + required: "No", + variability: "constant") %> -### skyModelLW - -Type: *choice* +**skyModelLW=*choice*** Selects the model used to derive sky temperature used in long-wave (thermal) radiant heat exchange calculations for SURFACEs exposed to ambient conditions. See the RACM alorithms documentation for technical details. -{{ csv_table("**Choice**, **Description** +<%= csv_table(< true) +**Choice**, **Description** DEFAULT, Default: tSky from weather file if available else Berdahl-Martin BERDAHLMARTIN, Berdahl-Martin (tSky depends on dew point, cloud cover, and hour) DRYBULB, tSky = dry-bulb temperature (for testing) BLAST, Blast model (tSky depends on dry-bulb) -IRHORIZ, Derives tSky from horizonal infrared data from the weather file (available on some EPW files only). Caution: minimal error checking! Missing weather file IR values are not handled correctly.", True) -}} - -{{ - member_table({ - "units": "", - "legal_range": "*choices above*", - "default": "DEFAULT", - "required": "No", - "variability": "constant" - }) -}} +IRHORIZ, Derives tSky from horizonal infrared data from the weather file (available on some EPW files only). Caution: minimal error checking! Missing weather file IR values are not handled correctly. +END +%> -The reference temperature and humidity are used to calculate a humidity ratio assumed in air specific heat calculations. The small effect of changing humidity on the specific heat of air is generally ignored in the interests of speed, but the user can control the humidity whose specific heat is used through the refTemp and refRH inputs. +<%= member_table( + units: "", + legal_range: "*choices above*", + default: "DEFAULT", + required: "No", + variability: "constant") %> -### refTemp +The reference temperature and humidity are used to calculate a humidity ratio assumed in air specific heat calculations. The small effect of changing humidity on the specific heat of air is generally ignored in the interests of speed, but the user can control the humidity whose specific heat is used through the refTemp and refRH inputs. -Type: *float* +**refTemp=*float*** Reference temperature (see above paragraph). -{{ - member_table({ - "units": "^o^F", - "legal_range": "*x* $\\ge$ 0", - "default": "60^o^", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "^o^F", + legal_range: "*x* $\\ge$ 0", + default: "60^o^", + required: "No", + variability: "constant") %> -### refRH - -Type: *float* +**refRH=*float*** Reference relative humidity (see above). -{{ - member_table({ - "units": "", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", - "default": "0.6", - "required": "No", - "variability": "constant" - }) -}} - -### grndRefl +<%= member_table( + units: "", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "0.6", + required: "No", + variability: "constant") %> -Type: *float* +**grndRefl=*float*** Global ground reflectivity, used except where other value specified with sfGrndRefl or wnGrndRefl. This reflectivity is used in computing the reflected beam and diffuse radiation reaching the surface in question. It is also used to calculate the solar boundary conditions for the exterior grade surface in two-dimensional finite difference calculations for FOUNDATIONs. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", - "default": "0.2", - "required": "No", - "variability": "Monthly-Hourly" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "0.2", + required: "No", + variability: "Monthly-Hourly") %> The following values modify weather file data, permitting varying the simulation without making up special weather files. For example, to simulate without the effects of wind, use windF = 0; to halve the effects of diffuse solar radiation, use radDiffF = 0.5. Note that the default values for windSpeedMin and windF result in modification of weather file wind values unless other values are specified. -### grndEmit - -Type: *float* +**grndEmit=*float*** Long-wave emittance of the exterior grade surface used in two-dimensional finite difference calculations for FOUNDATIONs. -{{ - member_table({ - "units": "", - "legal_range": "0.0 $\le$ x $\le$ 1.0", - "default": "0.8", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "0.0 $\le$ x $\le$ 1.0", + default: "0.8", + required: "No", + variability: "constant") %> -### grndRf +**grndRf** Ground surface roughness. Used for convection and wind speed corrections in two-dimensional finite difference calculations for FOUNDATIONs. -{{ - member_table({ - "units": "ft", - "legal_range": "x $\\geq$ 0.0", - "default": "0.1", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "ft", + legal_range: "x $\\geq$ 0.0", + default: "0.1", + required: "No", + variability: "constant") %> -### windSpeedMin - -Type: *float* +**windSpeedMin=*float*** Minimum value for wind speed -{{ - member_table({ - "units": "mph", - "legal_range": "*x* $\\ge$ 0", - "default": "0.5", - "required": "No", - "variability": "constant" - }) -}} - -### windF +<%= member_table( + units: "mph", + legal_range: "*x* $\\ge$ 0", + default: "0.5", + required: "No", + variability: "constant") %> -Type: *float* +**windF=*float*** Wind Factor: multiplier for wind speeds read from weather file. windF is applied *after* windSpeedMin. Note that windF does *not* effect infiltration rates calculated by the Sherman-Grimsrud model (see e.g. ZONE.infELA). However, windF does modify AirNet flows (see IZXFER). -{{ - member_table({ - "units": "", - "legal_range": "*x* $\\ge$ 0", - "default": "0.25", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*x* $\\ge$ 0", + default: "0.25", + required: "No", + variability: "constant") %> -### terrainClass - -Type: *int* +**terrainClass=*int*** Specifies characteristics of ground terrain in the project region. -{{ csv_table("1, ocean or other body of water with at least 5 km unrestricted expanse +<%= csv_table(< false) +1, ocean or other body of water with at least 5 km unrestricted expanse 2, flat terrain with some isolated obstacles (buildings or trees well separated) 3, rural areas with low buildings, trees, etc. 4, urban, industrial, or forest areas -5, center of large city") -}} - -{{ - member_table({ - "units": "", - "legal_range": "1 $\\leq$ *x* $\\leq$ 5", - "default": "4", - "required": "No", - "variability": "constant" - }) -}} +5, center of large city +END +%> + +<%= member_table( + units: "", + legal_range: "1 $\\leq$ *x* $\\leq$ 5", + default: "4", + required: "No", + variability: "constant") %> -### radBeamF - -Type: *float* +**radBeamF=*float*** Multiplier for direct normal (beam) irradiance -{{ - member_table({ - "units": "", - "legal_range": "*x* $\\ge$ 0", - "default": "1", - "required": "No", - "variability": "constant" - }) -}} - -### radDiffF +<%= member_table( + units: "", + legal_range: "*x* $\\ge$ 0", + default: "1", + required: "No", + variability: "constant") %> -Type: *float* +**radDiffF=*float*** Multiplier for diffuse horizonal irradiance. -{{ - member_table({ - "units": "", - "legal_range": "*x* $\\ge$ 0", - "default": "1", - "required": "No", - "variability": "constant" - }) -}} - -### hConvMod +<%= member_table( + units: "", + legal_range: "*x* $\\ge$ 0", + default: "1", + required: "No", + variability: "constant") %> -Type: *choice* +**hConvMod=*choice*** Enable/disable convection convective coefficient pressure modification factor. $$0.24 + 0.76 \cdot P_{Location}/P_{SeaLevel}$$ -{{ - member_table({ - "units": "", - "legal_range": "YES, NO", - "default": "YES", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "YES, NO", + default: "YES", + required: "No", + variability: "constant") %> -### soilDiff - -Type: *float* +**soilDiff=*float*** *Note: soilDiff is used as part of the simple ground model, which is no longer supported. Use soilCond, soilSpHt, and SoilDens instead.* Soil diffusivity, used in derivation of ground temperature. CSE calculates a ground temperature at 10 ft depth for each day of the year using dry-bulb temperatures from the weather file and soilDiff. Ground temperature is used in heat transfer calculations for SURFACEs with sfExCnd=GROUND. Note: derivation of mains water temperature for DHW calculations involves a ground temperature based on soil diffusivity = 0.025 and does not use this soilDiff. -{{ - member_table({ - "units": "ft^2^/hr", - "legal_range": "*x* $>$ 0", - "default": "0.025", - "required": "No", - "variability": "constant" - }) -}} - -### soilCond +<%= member_table( + units: "ft^2^/hr", + legal_range: "*x* $>$ 0", + default: "0.025", + required: "No", + variability: "constant") %> -Type: *float* +**soilCond=*float*** Soil conductivity. Used in two-dimensional finite difference calculations for FOUNDATIONs. -{{ - member_table({ - "units": "Btuh-ft/ft^2^-^o^F", - "legal_range": "*x* $>$ 0", - "default": "1.0", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "Btuh-ft/ft^2^-^o^F", + legal_range: "*x* $>$ 0", + default: "1.0", + required: "No", + variability: "constant") %> -### soilSpHt - -Type: *float* +**soilSpHt=*float*** Soil specific heat. Used in two-dimensional finite difference calculations for FOUNDATIONs. -{{ - member_table({ - "units": "Btu/lb-^o^F", - "legal_range": "*x* $>$ 0", - "default": "0.1", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "Btu/lb-^o^F", + legal_range: "*x* $>$ 0", + default: "0.1", + required: "No", + variability: "constant") %> -### soilDens - -Type: *float* +**soilDens=*float*** Soil density. Used in two-dimensional finite difference calculations for FOUNDATIONs. -{{ - member_table({ - "units": "lb/ft^3^", - "legal_range": "*x* $>$ 0", - "default": "115", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "lb/ft^3^", + legal_range: "*x* $>$ 0", + default: "115", + required: "No", + variability: "constant") %> -### farFieldWidth - -Type: *float* +**farFieldWidth=*float*** Far-field width. Distance from foundation to the lateral, zero-flux boundary condition. Used in two-dimensional finite difference calculations for FOUNDATIONs. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $>$ 0", - "default": "130", - "required": "No", - "variability": "constant" - }) -}} - +<%= member_table( + units: "ft", + legal_range: "*x* $>$ 0", + default: "130", + required: "No", + variability: "constant") %> -### deepGrndCnd -Type: *choice* +**deepGrndCnd=*choice*** Deep-ground boundary condition type. Choices are WATERTABLE (i.e., a defined temperature) or ZEROFLUX. -{{ - member_table({ - "units": None, - "legal_range": "WATERTABLE, ZEROFLUX", - "default": "ZEROFLUX", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + legal_range: "WATERTABLE, ZEROFLUX", + default: "ZEROFLUX", + required: "No", + variability: "constant") %> -### deepGrndDepth - -Type: *float* +**deepGrndDepth=*float*** Deep-ground depth. Distance from exterior grade to the deep-ground boundary. Used in two-dimensional finite difference calculations for FOUNDATIONs. -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $>$ 0", - "default": "130", - "required": "No", - "variability": "constant" - }) -}} - +<%= member_table( + units: "ft", + legal_range: "*x* $>$ 0", + default: "130", + required: "No", + variability: "constant") %> -### deepGrndT -Type: *float* +**deepGrndT=*float*** Deep-ground temperature. Used when deepGrndCnd=WATERTABLE. -{{ - member_table({ - "units": "^o^F", - "legal_range": "*x* $>$ 0", - "default": "Annual average drybulb temperature", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "F", + legal_range: "*x* $>$ 0", + default: "Annual average drybulb temperature", + required: "No", + variability: "hourly") %> @@ -1072,15 +791,17 @@ Deep-ground temperature. Used when deepGrndCnd=WATERTABLE. CSE supports an optional comma-separated (CSV) text file that provides hourly TDV values for electricity and fuel. TDV values are read along with the weather file and the values merged with weather data. Several daily statistics are calculated for use via probes. The file has no other effect on the simulation. Only full-year TDV files are supported. -The format of a TDV file is the same as an [IMPORTFILE][importfile] with the proviso that the 4 line header is not optional and certain header items must have specified values. In the following table, non-italic items must be provided as shown (with optional quotes). +The format of a TDV file is the same as an [IMPORTFILE](#importfile) with the proviso that the 4 line header is not optional and certain header items must have specified values. In the following table, non-italic items must be provided as shown (with optional quotes). -{{ csv_table("**Line** **Contents** **Notes** +<%= csv_table(< true) +**Line** **Contents** **Notes** 1, TDV Data (TDV/Btu), *runNumber*, *runNumber* is not checked 2, *timestamp* optionally in quotes accessible via @TOP.TDVFileTimeStamp 3, *title*, hour *title* (in quotes if it contains commas) accessible via @TOP.TDVFileTitle -4, tdvElec, tdvFuel comma separated column names (optionally in quotes) not checked -5 .., *valElec*,*valFuel* comma separated numerical values (8760 or 8784 rows) tdvElec is always in column 1, tdvFuel always in column 2 column names in row 4 do not determine order", True) -}} +4, tdvElec, tdvFuel comma separated column names (optionally in quotes)\ not checked +5 .., *valElec*,*valFuel* comma separated numerical values (8760 or 8784 rows) tdvElec is always in column 1, tdvFuel always in column 2 column names in row 4 do not determine order +END +%> Example TDV file -- @@ -1103,7 +824,8 @@ Note: additional columns can be included and are ignored. The table below shows probes available for accessing TDV data in expressions. Except as noted, daily values are updated based on standard time, so they may be inaccurate by small amounts when daylight savings time is in effect. -{{ csv_table("**Probe**, **Variability**, **Description** +<%= csv_table(< true) +**Probe**, **Variability**, **Description** @Weather.tdvElec, Hour, current hour electricity TDV @Weather.tdvFuel, Hour, current hour fuel TDV @Weather.tdvElecPk, Day, current day peak electricity TDV (includes future hours). Updated at hour 23 during daylight savings. @@ -1113,206 +835,147 @@ The table below shows probes available for accessing TDV data in expressions. E @weather.tdvElecHrRank[], Day, hour ranking of TDVElec values. tdvElecHrRank[ 1] is the hour having the highest TDVElec, tdvElecHrRank[ 2] is the next highest, etc. The hour values are adjusted when dayight savings time is in effect, so they remain consistent with system variable $hour. @weatherFile.tdvFileTimeStamp, Constant, TDV file timestamp (line 2 of header) @weatherFile.tdvFileTitle, Constant, TDV file title (line 3 of header) -@Top.tdvFName, Constant, TDV file full path", True) -}} - -### TDVfName +@Top.tdvFName, Constant, TDV file full path +END +%> -Type: *string* +**TDVfName=*string*** Note: Backslash (\\) characters in path names must be doubled to work properly (e.g. "\\\\data\\\\mytdv.tdv"). Forward slash (/) may be used in place of backslash without doubling. -{{ - member_table({ - "units": "", - "legal_range": "file name, path optional", - "default": "(no TDV file)", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "file name, path optional", + default: "(no TDV file)", + required: "No", + variability: "constant") %> ## TOP Report Data Items These items are used in page-formatted report output files. See REPORTFILE, Section 5.245.21, and REPORT, Section 5.25. -### repHdrL - -Type: *string* +**repHdrL=*string*** Report left header. Appears at the upper left of each report page unless page formatting (rfPageFmt) is OFF. If combined length of repHdrL and repHdrR is too large for the page width, one or both will be truncated. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} - -### repHdrR +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> -Type: *string* +**repHdrR=*string*** Report right header. Appears at the upper right of each report page unless page formatting (rfPageFmt) is OFF. If combined length of repHdrL and repHdrR is too large for the page width, one or both will be truncated. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> -### repLPP - -Type: *int* +**repLPP=*int*** Total lines per page to be assumed for reports. Number of lines used for text (including headers and footers) is repLPP - repTopM - repBotM. -{{ - member_table({ - "units": "lines", - "legal_range": "*x* $\\ge$ 50", - "default": "66", - "required": "No", - "variability": "constant" - }) -}} - -### repTopM +<%= member_table( + units: "lines", + legal_range: "*x* $\\ge$ 50", + default: "66", + required: "No", + variability: "constant") %> -Type: *int* +**repTopM=*int*** Number of lines to be skipped at the top of each report page (prior to header). -{{ - member_table({ - "units": "lines", - "legal_range": "0 $\\geq$ *x* $\\geq$ 12", - "default": "3", - "required": "No", - "variability": "constant" - }) -}} - -### repBotM +<%= member_table( + units: "lines", + legal_range: "0 $\\geq$ *x* $\\geq$ 12", + default: "3", + required: "No", + variability: "constant") %> -Type: *int* +**repBotM=*int*** Number of lines reserved at the bottom of each report page. repBotM determines the position of the footer on the page (blank lines after the footer are not actually written). -{{ - member_table({ - "units": "lines", - "legal_range": "0 $\\geq$ *x* $\\geq$ 12", - "default": "3", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "lines", + legal_range: "0 $\\geq$ *x* $\\geq$ 12", + default: "3", + required: "No", + variability: "constant") %> -### repCPL - -Type: *int* +**repCPL=*int*** Characters per line for report headers and footers, user defined reports, and error messages. CSE writes simple ASCII files and assumes a fixed (not proportional) spaced printer font. Many of the built-in reports now (July 1992) assume a line width of 132 columns. -{{ - member_table({ - "units": "characters", - "legal_range": "78 $\\leq$ *x* $\\leq$ 132", - "default": "78", - "required": "No", - "variability": "constant" - }) -}} - -### repTestPfx +<%= member_table( + units: "characters", + legal_range: "78 $\\leq$ *x* $\\leq$ 132", + default: "78", + required: "No", + variability: "constant") %> -Type: *string* +**repTestPfx=*string*** Report test prefix. Appears at beginning of report lines that are expected to differ from prior runs. This is useful for "hiding" lines from text comparison utilities in automated testing schemes. Note: the value specified with command line -x takes precedence over this input. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> ## TOP Autosizing -### doAutoSize - -Type: *choice* +**doAutoSize=*choice*** Controls invocation of autosizing phase prior to simulation. -{{ - member_table({ - "units": "", - "legal_range": "YES, NO", - "default": "NO, unless AUTOSIZE commands in input", - "required": "No", - "variability": "constant" - }) -}} - -### auszTol +<%= member_table( + units: "", + legal_range: "YES, NO", + default: "NO, unless AUTOSIZE commands in input", + required: "No", + variability: "constant") %> -Type: *float* +**auszTol=*float*** Autosize tolerance. Sized capacity results are deemed final when successive design day calculations produce results within auszTol of the prior iteration. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": ".005", - "required": "No", - "variability": "constant" - }) -}} - -### heatDsTDbO +<%= member_table( + units: "", + legal_range: "", + default: ".005", + required: "No", + variability: "constant") %> -Type: *float* +**heatDsTDbO=*float*** Heating outdoor dry bulb design temperature used for autosizing heating equipment. -{{ - member_table({ - "units": "^o^F", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "^o^F", + legal_range: "", + default: "*none*", + required: "No", + variability: "hourly") %> -### heatDsTWbO - -Type: *float* +**heatDsTWbO=*float*** Heating outdoor design dry bulb temperature used for autosizing heating equipment. -{{ - member_table({ - "units": "^o^F", - "legal_range": "*x* $\\ge$ 0", - "default": "derived assuming RH=.7", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "^o^F", + legal_range: "*x* $\\ge$ 0", + default: "derived assuming RH=.7", + required: "No", + variability: "hourly") %> CSE provides 3 mutually-exclusive methods for specifying cooling design conditions. Each resulting design day is simulated repeatedly until results (e.g. equipment capacities) converge to stable values. Multiple days are typically used to ensure the a range of temperatures and sun positions are considered. @@ -1324,133 +987,99 @@ CSE provides 3 mutually-exclusive methods for specifying cooling design conditio Specifies cooling design conditions for cooling autosizing. A comma-separated list of up to 12 DESCOND names can be provided. Each day will be simulated repeatedly using weather conditions generated from DESCOND values. -{{ - member_table({ - "units": "", - "legal_range": "*name of DESCOND*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*name of DESCOND*", + default: "*none*", + required: "No", + variability: "constant") %> **coolDsDay=*list of up to 12 days*** Specifies cooling design days for cooling autosizing. Each day will be simulated repeatedly using weather file conditions for that day. -{{ - member_table({ - "units": "dates", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "dates", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> **coolDsMo=*list of up to 12 months*** Deprecated method for specifying design days for cooling autosizing. Design conditions are taken from ET1 weather file header, however, the limited availale ET1 files do not contain design condition information. -{{ - member_table({ - "units": "months", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "months", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") %> ## TOP Debug Reporting -### verbose - -Type: *int* +**verbose=*int*** Controls verbosity of screen remarks. Most possible remarks are generated during autosizing of CNE models. Little or no effect in CSE models. TODO: document options -{{ - member_table({ - "units": "", - "legal_range": "0 - 5", - "default": "1", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "0 - 5", + default: "1", + required: "No", + variability: "constant") %> The following dbgPrintMask values provide bitwise control of addition of semi-formated internal results to the run report file. The values and format of debugging reports are modified as required for testing purposes. -### dbgPrintMaskC - -Type: *int* +**dbgPrintMaskC=*int*** Constant portion of debug reporting control. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} - -### dbgPrintMask +<%= member_table( + units: "", + legal_range: "", + default: "0", + required: "No", + variability: "constant") %> -Type: *int* +**dbgPrintMask=*int*** Hourly portion of debug reporting control (generally an expression that evaluates to non-0 only on days or hours of interest). -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "0", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "0", + required: "No", + variability: "hourly") %> -### dbgFlag - -Type: *int* +**dbgFlag=*int*** Allows passing an input value to ad-hoc debugging code. No permanent use; no impact on results. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "0", - "required": "No", - "variability": "subhourly" - }) -}} - -### doCoverage +<%= member_table( + units: "", + legal_range: "", + default: "0", + required: "No", + variability: "subhourly") %> -Type: *choice* +**doCoverage=*choice*** Enables expression code coverage reporting. Development aid. -{{ - member_table({ - "units": "", - "legal_range": "NO, YES", - "default": "*NO*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "NO, YES", + default: "*NO*", + required: "No", + variability: "constant") %> **Related Probes:** -- @[top][p_top] -- @[weatherFile][p_weatherfile] -- @[weather][p_weather] -- @[weatherNextHour][p_weathernexthour] +- @[top](#p_top) +- @[weatherFile](#p_weatherfile) +- @[weather](#p_weather) +- @[weatherNextHour](#p_weathernexthour) diff --git a/doc/src/docs/input-data/towerplant.md b/doc/src/docs/input-data/towerplant.md index ef0698ea0..08f79d0e4 100644 --- a/doc/src/docs/input-data/towerplant.md +++ b/doc/src/docs/input-data/towerplant.md @@ -10,7 +10,7 @@ All the towers in a TOWERPLANT are identical, except that under LEAD staging, th There is no provision for scheduling a TOWERPLANT: it operates whenever the heat rejection pump in one or more of its associated CHILLERs or HPLOOP heat exchangers operates. However, the setpoint for the water leaving the TOWERPLANT is hourly schedulable. -### towerplantName +**towerplantName** Name of TOWERPLANT object, given immediately after the word TOWERPLANT to begin the object's input. The name is used to refer to the TOWERPLANT in COOLPLANTs and HPLOOPs. @@ -18,9 +18,7 @@ Name of TOWERPLANT object, given immediately after the word TOWERPLANT to begin ----------- ----------------- ------------- -------------- ----------------- *63 characters* Yes constant -### tpTsSp - -Type: *float* +**tpTsSp=*float*** Setpoint temperature for water leaving towers. @@ -36,9 +34,7 @@ METER object by which TOWERPLANT's fan input energy is to be recorded, in catego ----------- ------------------- ------------- -------------- ----------------- *name of a METER* *none* No constant -### tpStg - -Type: *choice* +**tpStg=*choice*** How tower fans are staged to meet the load: @@ -57,9 +53,7 @@ Whenever the heat rejection pump in a CHILLER or HPLOOP heat exchanger is on, th ----------- ----------------- ------------- -------------- ----------------- TOGETHER, LEAD TOGETHER No constant -### ctN - -Type: *integer* +**ctN=*integer*** Number of towers in the TOWERPLANT. @@ -67,9 +61,7 @@ Number of towers in the TOWERPLANT. ----------- ----------------- ------------- -------------- ----------------- *x* > 0 1 No constant -### ctType - -Type: *choice* +**ctType=*choice*** Cooling tower fan control type: ONESPEED, TWOSPEED, or VARIABLE. This applies to all towers under TOGETHER staging. For LEAD staging, *ctType* applies only to the lead tower; additional towers have ONESPEED fans. @@ -77,9 +69,7 @@ Cooling tower fan control type: ONESPEED, TWOSPEED, or VARIABLE. This applies to ----------- ------------------------------ ------------- -------------- ----------------- ONESPEED, TWOSPEED, VARIABLE ONESPEED No constant -### ctLoSpd - -Type: *float* +**ctLoSpd=*float*** Low speed for TWOSPEED fan, as a fraction of full speed cfm. @@ -93,9 +83,7 @@ The rest of the input variables apply to each tower in the group; the towers are The following two inputs permit computation of the tower fan electrical energy consumption: -### ctShaftBhp - -Type: *float* +**ctShaftBhp=*float*** Shaft brake horsepower of each tower fan motor. @@ -105,9 +93,7 @@ The default value is the sum of the rejected (condenser) heats (including pump h ----------- --------------- ----------------------------- ----------- ----------------- Bhp *x* > 0 (sum of loads)/290000/*cTn* No constant -### ctMotEff - -Type: *float* +**ctMotEff=*float*** Motor (and drive, if any) efficiency for tower fans. @@ -157,9 +143,7 @@ For VARIABLE speed fan, four *float* values for coefficients of cubic fan power The next six items specify the tower performance under one set of conditions, the "design conditions". The conditions should be chosen to be representative of full load operating conditions. -### ctCapDs - -Type: *float* +**ctCapDs=*float*** Design capacity: amount of heat extracted from water under design conditions by one tower. @@ -169,9 +153,7 @@ The default value is the sum of the rejected (condenser) heats (including pump h ----------- ----------------- ---------------------- -------------- ----------------- Btuh *x* $\neq$ 0 (sum of loads)/*ctN* No constant -### ctVfDs - -Type: *float* +**ctVfDs=*float*** Design air flow, per tower; also the fan full-speed cfm specification. @@ -181,9 +163,7 @@ The default value is the sum of the loads (computed as for *ctCapDs*, just above ----------- ----------------- ------------------------- -------------- ----------------- cfm *x* > 0 (sum of loads)/51/*ctN* No constant -### ctGpmDs - -Type: *float* +**ctGpmDs=*float*** Design water flow, per tower. @@ -193,9 +173,7 @@ The default is the sum of the flows of the connected heat rejection pumps, using ----------- ----------------- ---------------------- -------------- ----------------- gpm *x* > 0 (sum of pumps)/*ctN* No constant -### ctTDbODs - -Type: *float* +**ctTDbODs=*float*** Design outdoor drybulb temperature (needed to convert *ctVfDs* from cfm to lb/hr). @@ -203,9 +181,7 @@ Design outdoor drybulb temperature (needed to convert *ctVfDs* from cfm to lb/hr ----------- ----------------- ------------- -------------- ----------------- ^o^F *x* > 0 93.5 No constant -### ctTWbODs - -Type: *float* +**ctTWbODs=*float*** Design outdoor wetbulb temperature. @@ -213,9 +189,7 @@ Design outdoor wetbulb temperature. ----------- ----------------- ------------- -------------- ----------------- ^o^F *x* > 0 78 No constant -### ctTwoDs - -Type: *float* +**ctTwoDs=*float*** Design leaving water temperature. @@ -225,9 +199,7 @@ Design leaving water temperature. The following six items allow optional specification of tower performance under another set of conditions, the "off design" conditions. If given, they allow CSE to compute the tower's relation between flows and heat transfer; in this case, *ctK* (below) may not be given. -### ctCapOd - -Type: *float* +**ctCapOd=*float*** Off-design capacity, per tower. @@ -235,9 +207,7 @@ Off-design capacity, per tower. ----------- ----------------- ---------------------- -------------- ----------------- Btuh *x* $\neq$ 0 (sum of loads)/*ctN* No constant -### ctVfOd - -Type: *float* +**ctVfOd=*float*** Off-design air flow, per tower. Must differ from design air flow; thus *ctVfDs* and *ctVfOd* cannot both be defaulted if off-design conditions are being given. The off-design air and water flows must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. @@ -245,9 +215,7 @@ Off-design air flow, per tower. Must differ from design air flow; thus *ctVfDs* ----------- --------------------------------- ------------------------- -------------- ----------------- cfm *x* > 0; *x* $\neq$ *ctVfDs* (sum of loads)/51/*ctN* No constant -### ctGpmOd - -Type: *float* +**ctGpmOd=*float*** Off-design water flow, per tower. Must differ from design water flow; thus, both cannot be defaulted if off-design conditions are being given. Value must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. @@ -255,9 +223,7 @@ Off-design water flow, per tower. Must differ from design water flow; thus, both ----------- ---------------------------------- ---------------------- -------------- ----------------- gpm *x* > 0; *x* $\neq$ *ctGpmDs* (sum of pumps)/*ctN* No constant -### ctTDbOOd - -Type: *float* +**ctTDbOOd=*float*** Off-design outdoor drybulb temperature. @@ -265,9 +231,7 @@ Off-design outdoor drybulb temperature. ----------- ----------------- ------------- -------------- ----------------- ^o^F *x* > 0 93.5 No constant -### ctTWbOOd - -Type: *float* +**ctTWbOOd=*float*** Off-design outdoor wetbulb temperature. @@ -275,9 +239,7 @@ Off-design outdoor wetbulb temperature. ----------- ----------------- ------------- -------------- ----------------- ^o^F *x* > 0 78 No constant -### ctTwoOd - -Type: *float* +**ctTwoOd=*float*** Off-design leaving water temperature. @@ -287,9 +249,7 @@ Off-design leaving water temperature. The following item allows explicit specification of the relationship between flows and heat transfer, when the preceding "off design" inputs are not given. If omitted, it will be computed from the "off design" inputs if given, else the default value of 0.4 will be used. -### ctK - -Type: *float* +**ctK=*float*** Optional. Exponent in the formula @@ -301,9 +261,7 @@ where ntuA is the number of transfer units on the air side, mwi and ma are the w ----------- ------------------- ---------------------------------------- -------------- ----------------- 0 < *x* < 1 *from "Od" members if given, else* 0.4 No constant -### ctStkFlFr - -Type: *float* +**ctStkFlFr=*float*** Fraction of air flow which occurs when tower fan is off, due to stack effect (convection). Cooling due to this air flow occurs in all towers whenever the water flow is on, and may, by itself, cool the water below the setpoint *tpTsSp*. Additional flow, when fan is on, is proportional to fan speed. @@ -313,9 +271,7 @@ Fraction of air flow which occurs when tower fan is off, due to stack effect (co The following items allow CSE to compute the effect of makeup water on the leaving water temperature. -### ctBldn - -Type: *float* +**ctBldn=*float*** Blowdown rate: fraction of inflowing water that is bled from the sump down the drain, to reduce the buildup of impurities that don't evaporate. @@ -323,9 +279,7 @@ Blowdown rate: fraction of inflowing water that is bled from the sump down the d ----------- --------------------- ------------- -------------- ----------------- 0 $\le$ *x* $\le$ 1 .01 No constant -### ctDrft - -Type: *float* +**ctDrft=*float*** Drift rate: fraction of inflowing water that is blown out of tower as droplets without evaporating. @@ -333,9 +287,7 @@ Drift rate: fraction of inflowing water that is blown out of tower as droplets w ----------- --------------------- ------------- -------------- ----------------- 0 $\le$ *x* $\le$ 1 0 No constant -### ctTWm - -Type: *float* +**ctTWm=*float*** Temperature of makeup water from mains, used to replace water lost by blowdown, drift, and evaporation. Blowdown and drift are given by the preceding two inputs; evaporation is computed. @@ -343,7 +295,7 @@ Temperature of makeup water from mains, used to replace water lost by blowdown, ----------- ----------------- ------------- -------------- ----------------- ^o^F *x* > 0 60 No constant -### endTowerplant +**endTowerplant** Optionally indicates the end of the TOWERPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. @@ -353,4 +305,4 @@ Optionally indicates the end of the TOWERPLANT definition. Alternatively, the en **Related Probes:** -- @[towerPlant][p_towerplant] +- @[towerPlant](#p_towerplant) diff --git a/doc/src/docs/input-data/window.md b/doc/src/docs/input-data/window.md index 04d79b9be..ef0c1b9cf 100644 --- a/doc/src/docs/input-data/window.md +++ b/doc/src/docs/input-data/window.md @@ -4,109 +4,83 @@ WINDOW defines a subobject belonging to the current SURFACE that represents one Windows may optionally have operable interior shading that reduces the overall shading coefficient when closed. -### wnName +**wnName** Name of window: follows the word "WINDOW" if given. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") + %> -### wnHeight - -Type: *float* +**wnHeight=*float*** Overall height of window (including frame). -{{ - member_table({ - "units": "ft", - "legal_range": "x $>$ 0", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} - -### wnWidth +<%= member_table( + units: "ft", + legal_range: "x $>$ 0", + default: "*none*", + required: "Yes", + variability: "constant") + %> -Type: *float* +**wnWidth=*float*** Overall width of window (including frame). -{{ - member_table({ - "units": "ft", - "legal_range": "x $>$ 0", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( + units: "ft", + legal_range: "x $>$ 0", + default: "*none*", + required: "Yes", + variability: "constant") + %> -### wnArea - -Type: *float* +**wnArea=*float*** Overall area of window (including frame). -{{ - member_table({ - "units": "ft^2^", - "legal_range": "x $>$ 0", - "default": "*wnHeight* \* *wnWidth*", - "required": "No", - "variability": "constant" - }) -}} - -### wnMult +<%= member_table( + units: "ft^2^", + legal_range: "x $>$ 0", + default: "*wnHeight* \* *wnWidth*", + required: "No", + variability: "constant") + %> -Type: *float* +**wnMult=*float*** Area multiplier; can be used to represent multiple identical windows. -{{ - member_table({ - "units": "", - "legal_range": "x $>$ 0", - "default": "1", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "x $>$ 0", + default: "1", + required: "No", + variability: "constant") + %> -### wnModel - -Type: *choice* +**wnModel=*choice*** Selects window model -{{ - member_table({ - "units": "", - "legal_range": "SHGC, ASHWAT", - "default": "SHGC", - "required": "No", - "variability": "constant" - }) -}} - -### wnGt +<%= member_table( + units: "", + legal_range: "SHGC, ASHWAT", + default: "SHGC", + required: "No", + variability: "constant") + %> -Type: *choice* +**wnGt=*choice*** GLAZETYPE for window. Provides many defaults for window properties as cited below. -### wnU - -Type: *float* +**wnU=*float*** Window conductance (U-factor without surface films, therefore not actually a U-factor but a C-factor). @@ -118,67 +92,51 @@ Where 0.85 is the sum of the interior (0.68) and exterior (0.17) design air film Approach 2. Enter wnU=U-factor and let the wnInH and wnExH default. Tnormally this approach systematically underestimates the window U-factor because it adds the wnExfilm resistance to 1/U-factor thereby double counting the exterior film resistance. This approach will also yield incorrect results for gnFrad internal gain since the high wnInH will put almost all the gain back in the space. -{{ - member_table({ - "units": "Btuh/ft^2^-^o^F", - "legal_range": "x $>$ 0", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( + units: "Btuh/ft^2^-^o^F", + legal_range: "x $>$ 0", + default: "*none*", + required: "Yes", + variability: "constant") + %> -### wnUNFRC - -Type: *float* +**wnUNFRC=*float*** Fenestration system (including frame) U-factor evaluated at NFRC heating conditions. -{{ - member_table({ - "units": "Btuh/ft^2^-^o^F", - "legal_range": "x $>$ 0", - "default": "gtUNFRC", - "required": "Required when *wnModel* = ASHWAT", - "variability": "constant" - }) -}} - -### wnExEpsLW +<%= member_table( + units: "Btuh/ft^2^-^o^F", + legal_range: "x $>$ 0", + default: "gtUNFRC", + required: "Required when *wnModel* = ASHWAT", + variability: "constant") + %> -Type: *float* +**wnExEpsLW=*float*** Window exterior long wave (thermal) emittance. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", - "default": "0.84", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "0.84", + required: "No", + variability: "constant") + %> -### wnInEpsLW - -Type: *float* +**wnInEpsLW=*float*** Window interior long wave (thermal) emittance. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", - "default": "0.84", - "required": "No", - "variability": "constant" - }) -}} - -### wnInH +<%= member_table( + units: "", + legal_range: "0 $\\le$ *x* $\\le$ 1", + default: "0.84", + required: "No", + variability: "constant") + %> -Type: *float* +**wnInH=*float*** Window interior surface (air film) conductance. @@ -190,315 +148,245 @@ Preferred Approach: Enter the appropriate value for each window, normally: The large default value of 10,000 represents a near-0 resistance, for the convenience of those who wish to include the interior surface film in wnU according to approach 2 above. -{{ - member_table({ - "units": "Btuh/ft^2^-^o^F", - "legal_range": "x $>$ 0", - "default": "10000", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "Btuh/ft^2^-^o^F", + legal_range: "x $>$ 0", + default: "10000", + required: "No", + variability: "constant") + %> -### wnExH - -Type: *float* +**wnExH=*float*** Window exterior surface (air film) conductance. -{{ - member_table({ - "units": "Btuh/ft^2^-^o^F", - "legal_range": "x $>$ 0", - "default": "same as owning surface", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "Btuh/ft^2^-^o^F", + legal_range: "x $>$ 0", + default: "same as owning surface", + required: "No", + variability: "constant") + %> Several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on wnExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. -{{ csv_table("Model, Exposed to ambient, Exposed to zone +<%= csv_table(< true) +Model, Exposed to ambient, Exposed to zone UNIFIED, default CSE model, default CSE model INPUT , hc = wnExHcMult, hc = wnxxHcMult AKBARI , Akbari model, n/a WALTON , Walton model, n/a WINKELMANN, Winkelmann model, n/a MILLS , n/a , Mills model -ASHRAE , n/a , ASHRAE handbook values", True) -}} - -### wnExHcModel +ASHRAE , n/a , ASHRAE handbook values +END +%> -Type: *choice* +**wnExHcModel=*choice*** Selects the model used for exterior surface convection when wnModel = Forward\_Difference. -{{ - member_table({ - "units": "", - "legal_range": "*choices above*", - "default": "UNIFIED", - "required": "No", - "variability": "constant" - }) -}} - -### wnExHcLChar +<%= member_table( + units: "", + legal_range: "*choices above*", + default: "UNIFIED", + required: "No", + variability: "constant") + %> -Type: *float* +**wnExHcLChar=*float*** Characteristic length of surface, used in derivation of forced exterior convection coefficients in some models when outside face is exposed to ambient (i.e. to wind). -{{ - member_table({ - "units": "ft", - "legal_range": "x $>$ 0", - "default": "10", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "ft", + legal_range: "x $>$ 0", + default: "10", + required: "No", + variability: "constant") + %> -### wnExHcMult - -Type: *float* +**wnExHcMult=*float*** Exterior convection coefficient adjustment factor. When wnExHcModel=INPUT, hc=wnExHcMult. For other wnExHcModel choices, the model-derived hc is multiplied by wnExHcMult. -{{ - member_table({ - "units": "", - "legal_range": "x $\\ge$ 0", - "default": "1", - "required": "No", - "variability": "subhourly" - }) -}} - -### wnInHcModel +<%= member_table( + units: "", + legal_range: "x $\\ge$ 0", + default: "1", + required: "No", + variability: "subhourly") + %> -Type: *choice* +**wnInHcModel=*choice*** Selects the model used for the inside (zone) surface convection when wnModel = Forward\_Difference. -{{ - member_table({ - "units": "", - "legal_range": "*choices above (see wnExHcModel)*", - "default": "UNIFIED", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*choices above (see wnExHcModel)*", + default: "UNIFIED", + required: "No", + variability: "constant") + %> -### wnInHcMult - -Type: *float* +**wnInHcMult=*float*** Interior convection coefficient adjustment factor. When wnInHcModel=INPUT, hc=wnInHcMult. For other wnInHcModel choices, the model-derived hc is multiplied by wnInHcMult. -{{ - member_table({ - "units": "", - "legal_range": "x $\\ge$ 0", - "default": "1", - "required": "No", - "variability": "subhourly" - }) -}} - -### wnSHGC +<%= member_table( + units: "", + legal_range: "x $\\ge$ 0", + default: "1", + required: "No", + variability: "subhourly") + %> -Type: *float* +**wnSHGC=*float*** Rated Solar Heat Gain Coefficient (SHGC) for the window assembly. -{{ - member_table({ - "units": "fraction", - "legal_range": "0 < x < 1", - "default": "gtSHGC", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "fraction", + legal_range: "0 < x < 1", + default: "gtSHGC", + required: "No", + variability: "constant") + %> -### wnFMult - -Type: *float* +**wnFMult=*float*** Frame area multiplier = areaGlaze / areaAssembly -{{ - member_table({ - "units": "fraction", - "legal_range": "0 < x < 1", - "default": "gtFMult or 1", - "required": "No", - "variability": "constant" - }) -}} - -### wnSMSO +<%= member_table( + units: "fraction", + legal_range: "0 < x < 1", + default: "gtFMult or 1", + required: "No", + variability: "constant") + %> -Type: *float* +**wnSMSO=*float*** SHGC multiplier with shades open. Overrides gtSMSO. -{{ - member_table({ - "units": "fraction", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", - "default": "gtSMSO or 1", - "required": "No", - "variability": "Monthly - Hourly" - }) -}} - -### wnSMSC +<%= member_table( + units: "fraction", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "gtSMSO or 1", + required: "No", + variability: "Monthly - Hourly") + %> -Type: *float* +**wnSMSC=*float*** SHGC multiplier with shades closed. Overrides gtSMSC -{{ - member_table({ - "units": "fraction", - "legal_range": "0 $\leq$ *x* $\leq$ 1", - "default": "wnSMSO or gtSMSC", - "required": "No", - "variability": "Monthly - Hourly" - }) -}} +<%= member_table( + units: "fraction", + legal_range: "0 $\leq$ *x* $\leq$ 1", + default: "wnSMSO or gtSMSC", + required: "No", + variability: "Monthly - Hourly") + %> -### wnNGlz - -Type: *int* +**wnNGlz=*int*** Number of glazings in the window (bare glass only, not including any interior or exterior shades). -{{ - member_table({ - "units": "", - "legal_range": "0 $<$ *x* $\leq$ 4", - "default": "gtNGLZ", - "required": "Required when *wnModel* = ASHWAT", - "variability": "constant" - }) -}} - -### wnExShd +<%= member_table( + units: "", + legal_range: "0 $<$ *x* $\leq$ 4", + default: "gtNGLZ", + required: "Required when *wnModel* = ASHWAT", + variability: "constant") + %> -Type: *choice* +**wnExShd=*choice*** Exterior shading type (ASHWAT only). -{{ - member_table({ - "units": "", - "legal_range": "NONE, INSCRN", - "default": "gtExShd", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "NONE, INSCRN", + default: "gtExShd", + required: "No", + variability: "constant") + %> -### wnInShd - -Type: *choice* +**wnInShd=*choice*** Interior shade type (ASHWAT only). -{{ - member_table({ - "units": "", - "legal_range": "NONE, DRAPEMED", - "default": "gtInShd", - "required": "No", - "variability": "constant" - }) -}} - -### wnDirtLoss +<%= member_table( + units: "", + legal_range: "NONE, DRAPEMED", + default: "gtInShd", + required: "No", + variability: "constant") + %> -Type: *float* +**wnDirtLoss=*float*** Glazing dirt loss factor. -{{ - member_table({ - "units": "fraction", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "fraction", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "*none*", + required: "No", + variability: "constant") + %> -### wnGrndRefl - -Type: *float* +**wnGrndRefl=*float*** Ground reflectivity for this window. -{{ - member_table({ - "units": "fraction", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", - "default": "sfGrndRefl", - "required": "No", - "variability": "Monthly - Hourly" - }) -}} - -### wnVfSkyDf +<%= member_table( + units: "fraction", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "sfGrndRefl", + required: "No", + variability: "Monthly - Hourly") + %> -Type: *float* +**wnVfSkyDf=*float*** View factor from this window to sky for diffuse radiation. For the shading effects of an overhang, a wnVfSkyDf value smaller than the default would be used -{{ - member_table({ - "units": "fraction", - "legal_range": "0 $\\leq$ x $\\leq$ 1", - "default": "0.5 - 0.5 cos(tilt) = .5 for vertical surface", - "required": "No", - "variability": "Monthly - Hourly" - }) -}} - -### wnVfGrndDf +<%= member_table( + units: "fraction", + legal_range: "0 $\\leq$ x $\\leq$ 1", + default: "0.5 - 0.5 cos(tilt) = .5 for vertical surface", + required: "No", + variability: "Monthly - Hourly") + %> -Type: *float* +**wnVfGrndDf=*float*** View factor from this window to ground for diffuse radiation. For the shading effects of a fin(s), both wnVfSkyDf and wnVfGrndDf would be used. -{{ - member_table({ - "units": "fraction", - "legal_range": "0 $\\leq$ x $\\leq$ 1", - "default": "0.5 + 0.5 .5 for vertical surface", - "required": "No", - "variability": "Monthly - Hourly" - }) -}} +<%= member_table( + units: "fraction", + legal_range: "0 $\\leq$ x $\\leq$ 1", + default: "0.5 + 0.5 .5 for vertical surface", + required: "No", + variability: "Monthly - Hourly") + %> -### endWINDOW +**endWINDOW** Optionally indicates the end of the window definition. Alternatively, the end of the window definition can be indicated by END or the declaration of another object. END or endWindow, if used, should follow any subobjects of the window (SHADEs and/or SGDISTs). -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[window][p_window] -- @[xsurf][p_xsurf] +- @[window](#p_window) +- @[xsurf](#p_xsurf) diff --git a/doc/src/docs/input-data/zone.md b/doc/src/docs/input-data/zone.md index 09e01d33f..39bbd6ac4 100644 --- a/doc/src/docs/input-data/zone.md +++ b/doc/src/docs/input-data/zone.md @@ -4,413 +4,317 @@ ZONE constructs an object of class ZONE, which describes an area of the building ## ZONE General Members -### znName +**znName** Name of zone. Enter after the word ZONE; no "=" is used. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "Yes", + variability: "constant") + %> -### znModel - -Type: *choice* +**znModel=*choice*** Selects model for zone. -{{ csv_table("CNE, Older central difference model based on original CALPAS methods. Not fully supported and not suitable for current compliance applications. +<%= csv_table(< false) +CNE, Older central difference model based on original CALPAS methods. Not fully supported and not suitable for current compliance applications. CZM, Conditioned zone model. Forward-difference, short time step methods are used. -UZM, Unconditioned zone model. Identical to CZM except heating and cooling are not supported. Typically used for attics, garages, and other ancillary spaces.") -}} - -{{ - member_table({ - "units": "", - "legal_range": "*choices above*", - "default": "CNE", - "required": "No", - "variability": "constant" - }) -}} +UZM, Unconditioned zone model. Identical to CZM except heating and cooling are not supported. Typically used for attics, garages, and other ancillary spaces. +END +%> -### znArea +<%= member_table( + units: "", + legal_range: "*choices above*", + default: "CNE", + required: "No", + variability: "constant") + %> -Type: *float* +**znArea=*float*** Nominal zone floor area. -{{ - member_table({ - "units": "ft^2^", - "legal_range": "*x* $>$ 0", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} - -### znVol +<%= member_table( + units: "ft^2^", + legal_range: "*x* $>$ 0", + default: "*none*", + required: "Yes", + variability: "constant") + %> -Type: *float* +**znVol=*float*** Nominal zone volume. -{{ - member_table({ - "units": "ft^3^", - "legal_range": "*x* $>$ 0", - "default": "*none*", - "required": "Yes", - "variability": "constant" - }) -}} +<%= member_table( + units: "ft^3^", + legal_range: "*x* $>$ 0", + default: "*none*", + required: "Yes", + variability: "constant") + %> -### znAzm - -Type: *float* +**znAzm=*float*** Zone azimuth with respect to bldgAzm. All surface azimuths are relative to znAzm, so that the zone can be rotated by changing this member only. Values outside the range 0^o^ to 360^o^ are normalized to that range. -{{ - member_table({ - "units": "degrees", - "legal_range": "unrestricted", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} - -### znFloorZ +<%= member_table( + units: "degrees", + legal_range: "unrestricted", + default: "0", + required: "No", + variability: "constant") + %> -Type: *float* +**znFloorZ=*float*** Nominal zone floor height relative to arbitrary 0 level. Used re determination of vent heights -{{ - member_table({ - "units": "ft", - "legal_range": "unrestricted", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "ft", + legal_range: "unrestricted", + default: "0", + required: "No", + variability: "constant") + %> -### znCeilingHt - -Type: *float* +**znCeilingHt=*float*** Nominal zone ceiling height relative to zone floor (typically 8 – 10 ft). -{{ - member_table({ - "units": "ft", - "legal_range": "*x* $>$ 0", - "default": "*znVol* / *znArea*", - "required": "No", - "variability": "constant" - }) -}} - -### znEaveZ +<%= member_table( + units: "ft", + legal_range: "*x* $>$ 0", + default: "*znVol* / *znArea*", + required: "No", + variability: "constant") + %> -Type: *float* +**znEaveZ=*float*** Nominal eave height above ground level. Used re calculation of local surface wind speed. This in turn influences outside convection coefficients in some surface models and wind-driven air leakage. -{{ - member_table({ - "units": "ft", - "legal_range": "x $>$ 0", - "default": "*znFloorZ + infStories\*8*", - "required": "No", - "variability": "constant" - }) -}} - -### znCAir +<%= member_table( + units: "ft", + legal_range: "x $>$ 0", + default: "*znFloorZ + infStories\*8*", + required: "No", + variability: "constant") + %> -Type: *float* +**znCAir=*float*** Zone "air" heat capacity: represents heat capacity of air, furniture, "light" walls, and everything in zone except surfaces having heat capacity (that is, non-QUICK surfaces). -{{ - member_table({ - "units": "Btu/^o^F", - "legal_range": "x $\\geq$ 0", - "default": "3.5 \* *znArea*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "Btu/^o^F", + legal_range: "x $\\geq$ 0", + default: "3.5 \* *znArea*", + required: "No", + variability: "constant") + %> -### znHcAirX - -Type: *float* +**znHcAirX=*float*** Zone air exchange rate used in determination of interior surface convective coefficients. This item is generally used only for model testing. -{{ - member_table({ - "units": "ACH", - "legal_range": "x $>$ 0", - "default": "as modeled", - "required": "No", - "variability": "subhourly" - }) -}} - -### znHcFrcF +<%= member_table( + units: "ACH", + legal_range: "x $>$ 0", + default: "as modeled", + required: "No", + variability: "subhourly") + %> -Type: *float* +**znHcFrcF=*float*** Zone surface forced convection factor. Interior surface convective transfer is modeled as a combination of forced and natural convection. hcFrc = znHcFrcF * znHcAirX^.8. See CSE Engineering Documentation. -{{ - member_table({ - "units": "Btuh/ft^2^-^o^F", - "legal_range": ".2", - "default": ".2", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "Btuh/ft^2^-^o^F", + legal_range: ".2", + default: ".2", + required: "No", + variability: "hourly") + %> -### znHIRatio - -Type: *float* +**znHIRatio=*float*** Zone hygric inertia ratio. In zone moisture balance calculations, the effective dry-air mass = znHIRatio * (zone dry air mass). This enhancement can be used to represente the moisture storage capacity of zone surfaces and contents. -{{ - member_table({ - "units": "", - "legal_range": "x $>$ 0", - "default": "1", - "required": "No", - "variability": "constant" - }) -}} - -### znSC +<%= member_table( + units: "", + legal_range: "x $>$ 0", + default: "1", + required: "No", + variability: "constant") + %> -Type: *float* +**znSC=*float*** Zone shade closure. Determines insolation through windows (see WINDOW members *wnSCSO* and *wnSCSC*) and solar gain distribution: see SGDIST members *sgFSO* and *sgFSC*. 0 represents shades open; 1 represents shades closed; intermediate values are allowed. An hourly variable CSE expression may be used to schedule shade closure as a function of weather, time of year, previous interval HVAC use or zone temperature, etc. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", - "default": "1 when cooling was used in *previous* hour, else 0", - "required": "No", - "variability": "hourly" - }) -}} - -### znTH +<%= member_table( + units: "", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "1 when cooling was used in *previous* hour, else 0", + required: "No", + variability: "hourly") + %> -Type: *float* +**znTH=*float*** Heating set point used (and required) when znModel=CZM and zone has no terminals. -{{ - member_table({ - "units": "^o^F", - "legal_range": "0 < znTH < znTC", - "default": "*none*", - "required": "Per above", - "variability": "subhourly" - }) -}} +<%= member_table( + units: "^o^F", + legal_range: "0 < znTH < znTC", + default: "*none*", + required: "Per above", + variability: "subhourly") + %> -### znTD - -Type: *float* +**znTD=*float*** Desired set point (temperature maintained with ventilation if possible) for znModel=CZM. Must be specified when zone ventilation is active. -{{ - member_table({ - "units": "^o^F", - "legal_range": "x > 0; znTH < znTD < znTC", - "default": "*none*", - "required": "if venting", - "variability": "subhourly" - }) -}} - -### znTC +<%= member_table( + units: "^o^F", + legal_range: "x > 0; znTH < znTD < znTC", + default: "*none*", + required: "if venting", + variability: "subhourly") + %> -Type: *float* +**znTC=*float*** Cooling set point used (and required) when znModel=CZM and zone has no terminals. -{{ - member_table({ - "units": "^o^F", - "legal_range": "0 < znTC > znTH", - "default": "*none*", - "required": "Per above", - "variability": "subhourly" - }) -}} +<%= member_table( + units: "^o^F", + legal_range: "0 < znTC > znTH", + default: "*none*", + required: "Per above", + variability: "subhourly") + %> znModel = CZM zone heating and cooling is provided either via an RSYS HVAC system, by "magic" heat transfers specified by znQxxx items, or via TERMINAL (s). One of these must be defined. -### znRSys - -Type: *rsysName* +**znRSys=*rsysName*** Name of RSYS providing heating, cooling, and optional central fan integrated ventilation to this zone. -{{ - member_table({ - "units": "", - "legal_range": "*RSYS name*", - "default": "(no RSYS)", - "required": "No", - "variability": "constant" - }) -}} - -### znQMxH +<%= member_table( + units: "", + legal_range: "*RSYS name*", + default: "(no RSYS)", + required: "No", + variability: "constant") + %> -Type: *float* +**znQMxH=*float*** Heating capacity at current conditions -{{ - member_table({ - "units": "Btuh", - "legal_range": "x $\\geq$ 0", - "default": "*none*", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "Btuh", + legal_range: "x $\\geq$ 0", + default: "*none*", + required: "No", + variability: "hourly") + %> -### znQMxHRated - -Type: *float* +**znQMxHRated=*float*** Rated heating capacity -{{ - member_table({ - "units": "Btuh", - "legal_range": "x $\\geq$ 0", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} - -### znQMxC +<%= member_table( + units: "Btuh", + legal_range: "x $\\geq$ 0", + default: "*none*", + required: "No", + variability: "constant") + %> -Type: *float* +**znQMxC=*float*** Cooling capacity at current conditions -{{ - member_table({ - "units": "Btuh", - "legal_range": "x $\\leq$ 0", - "default": "*none*", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "Btuh", + legal_range: "x $\\leq$ 0", + default: "*none*", + required: "No", + variability: "hourly") + %> -### znQMxCRated - -Type: *float* +**znQMxCRated=*float*** Rated cooling capacity -{{ - member_table({ - "units": "Btuh", - "legal_range": "x $\\leq$ 0", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "Btuh", + legal_range: "x $\\leq$ 0", + default: "*none*", + required: "No", + variability: "constant") + %> <% if comfort_model %> The following provide parameters for comfort calculations -### znComfClo - -Type: *float* +**znComfClo=*float*** Occupant clothing resistance, used only when a comfort model is enabled. -{{ - member_table({ - "units": "clo", - "legal_range": "x $\\geq$ 0", - "default": "*none*", - "required": "No", - "variability": "subhourly" - }) -}} - -### znComfMet +<%= member_table( + units: "clo", + legal_range: "x $\\geq$ 0", + default: "*none*", + required: "No", + variability: "subhourly") + %> -Type: *float* +**znComfMet=*float*** Occupant metabolic rate, used only when a comfort model is enabled. -{{ - member_table({ - "units": "met", - "legal_range": "x $\\geq$ 0", - "default": "*none*", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "met", + legal_range: "x $\\geq$ 0", + default: "*none*", + required: "No", + variability: "hourly") + %> -### znComfAirV - -Type: *float* +**znComfAirV=*float*** Nominal air velocity used for comfort model, used only when a comfort model is enabled. -{{ - member_table({ - "units": "", - "legal_range": "x $\\geq$ 0", - "default": "*none*", - "required": "No", - "variability": "Hourly" - }) -}} - -### znComfRh +<%= member_table( + units: "", + legal_range: "x $\\geq$ 0", + default: "*none*", + required: "No", + variability: "Hourly") + %> -Type: *float* +**znComfRh=*float*** Nominal zone relative humidity used for comfort model, used only when a comfort model is enabled. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", - "default": "*none*", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $\\leq$ *x* $\\leq$ 1", + default: "*none*", + required: "No", + variability: "hourly") + %> <% end %> @@ -418,124 +322,98 @@ Nominal zone relative humidity used for comfort model, used only when a comfort The following control a simplified air change plus leakage area model. The Sherman-Grimsrud model is used to derive air flow rate from leakage area and this rate is added to the air changes specified with infAC. Note that TOP.windF does *not* modify calculated infiltration rates, since the Sherman-Grimsrud model uses its own modifiers. See also AirNet models available via IZXFER. -### infAC - -Type: *float* +**infAC=*float*** Zone infiltration air changes per hour. -{{ - member_table({ - "units": "1/hr", - "legal_range": "x $\\geq$ 0", - "default": "0.5", - "required": "No", - "variability": "hourly" - }) -}} - -### infELA +<%= member_table( + units: "1/hr", + legal_range: "x $\\geq$ 0", + default: "0.5", + required: "No", + variability: "hourly") + %> -Type: *float* +**infELA=*float*** Zone effective leakage area (ELA). -{{ - member_table({ - "units": "in^2^", - "legal_range": "x $\\geq$ 0", - "default": "0.0", - "required": "No", - "variability": "hourly" - }) -}} - -### infShld +<%= member_table( + units: "in^2^", + legal_range: "x $\\geq$ 0", + default: "0.0", + required: "No", + variability: "hourly") + %> -Type: *int* +**infShld=*int*** Zone local shielding class, used in derivation of local wind speed for ELA infiltration model, wind-driven AirNet leakage, and exterior surface coefficients. infShld values are -- -{{ csv_table("1, no obstructions or local shielding +<%= csv_table(< false) + 1, no obstructions or local shielding 2, light local shielding with few obstructions 3, moderate local shielding, some obstructions within two house heights 4, heavy shielding, obstructions around most of the perimeter - 5, very heavy shielding, large obstructions surrounding the perimeter within two house heights") -}} + 5, very heavy shielding, large obstructions surrounding the perimeter within two house heights +END +%> -{{ - member_table({ - "units": "", - "legal_range": "1 $\\leq$ *x* $\\leq$ 5", - "default": "3", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "1 $\\leq$ *x* $\\leq$ 5", + default: "3", + required: "No", + variability: "constant") + %> -### infStories - -Type: *int* +**infStories=*int*** Number of stories in zone, used in ELA model. -{{ - member_table({ - "units": "", - "legal_range": "1 $\\leq$ *x* $\\leq$ 3", - "default": "1", - "required": "No", - "variability": "constant" - }) -}} - -### znWindFLkg +<%= member_table( + units: "", + legal_range: "1 $\\leq$ *x* $\\leq$ 3", + default: "1", + required: "No", + variability: "constant") + %> -Type: *float* +**znWindFLkg=*float*** Wind speed modifier factor. The weather file wind speed is multiplied by this factor to yield a local wind speed for use in infiltration and convection models. -{{ - member_table({ - "units": "", - "legal_range": "x $\\geq$ 0", - "default": "derived from znEaveZ and infShld", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "x $\\geq$ 0", + default: "derived from znEaveZ and infShld", + required: "No", + variability: "constant") + %> -### znAFMtr - -Type: *afMtrName* +**znAFMtr=*afMtrName*** Name of an AFMETER object, if any, to which zone AirNet air flows are recorded. *ZnAFMtr* defines a pressure boundary for accounting purposes. Multiple zones having the same AFMETER are treated as a single volume -- interzone flows within that volume are not recorded. For example, to obtain "building total" flow data, a common AFMETER could be assigned to several conditioned zones but not to adjacent unconditioned zones such as attic spaces. -{{ - member_table({ - "units": "", - "legal_range": "*name of an AFMETER*", - "default": "*not recorded*", - "required": "No", - "variability": "constant" - }) -}} - -### znLoadMtr +<%= member_table( + units: "", + legal_range: "*name of an AFMETER*", + default: "*not recorded*", + required: "No", + variability: "constant") + %> -Type: *ldMtrName* +**znLoadMtr=*ldMtrName*** Name of a LOADMETER object, if any, to which zone heating and cooling loads are recorded. -{{ - member_table({ - "units": "", - "legal_range": "*name of a LOADMETER*", - "default": "*not recorded*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*name of a LOADMETER*", + default: "*not recorded*", + required: "No", + variability: "constant") + %> ## ZONE Exhaust Fan @@ -543,21 +421,17 @@ Presence of an exhaust fan in a zone is indicated by specifying a non-zero desig Zone exhaust fan model implementation is incomplete as of July, 2011. The current code calculates energy use but does not account for the effects of air transfer on room heat balance. IZXFER provides a more complete implementation. -### xfanFOn - -Type: *float* +**xfanFOn=*float*** Exhaust fan on fraction. On/off control assumed, so electricity requirement is proportional to run time. -{{ - member_table({ - "units": "fraction", - "legal_range": "0 $\\leq$ x $\\leq$ 1", - "default": "1", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "fraction", + legal_range: "0 $\\leq$ x $\\leq$ 1", + default: "1", + required: "No", + variability: "hourly") + %> Example: The following would run an exhaust fan 70% of the time between 8 AM and 5 PM: @@ -565,119 +439,93 @@ Example: The following would run an exhaust fan 70% of the time between 8 AM and default, 0 ); -### xfanVfDs - -Type: *float* +**xfanVfDs=*float*** Exhaust fan design flow; 0 or not given indicates no fan. -{{ - member_table({ - "units": "cfm", - "legal_range": "x $\\geq$ 0", - "default": "0, no fan", - "required": "If fan present", - "variability": "constant" - }) -}} - -### xfanPress +<%= member_table( + units: "cfm", + legal_range: "x $\\geq$ 0", + default: "0, no fan", + required: "If fan present", + variability: "constant") + %> -Type: *float* +**xfanPress=*float*** Exhaust fan external static pressure. -{{ - member_table({ - "units": "inches", - "legal_range": "0.05 $\\leq$ *x* $\\leq$ 1.0", - "default": "0.3", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "inches", + legal_range: "0.05 $\\leq$ *x* $\\leq$ 1.0", + default: "0.3", + required: "No", + variability: "constant") + %> Only one of xfanElecPwr, xfanEff, and xfanShaftBhp may be given: together with xfanVfDs and xfanPress, any one is sufficient for CSE to detemine the others and to compute the fan heat contribution to the air stream. -### xfanElecPwr - -Type: *float* +**xfanElecPwr=*float*** Fan input power per unit air flow (at design flow and pressure). -{{ - member_table({ - "units": "W/cfm", - "legal_range": "x $>$ 0", - "default": "derived from xfanEff", - "required": "If xfanEff and xfanShaftBhp not present", - "variability": "constant" - }) -}} - -### xfanEff +<%= member_table( + units: "W/cfm", + legal_range: "x $>$ 0", + default: "derived from xfanEff", + required: "If xfanEff and xfanShaftBhp not present", + variability: "constant") + %> -Type: *float* +**xfanEff=*float*** Exhaust fan/motor/drive combined efficiency. -{{ - member_table({ - "units": "fraction", - "legal_range": "0 $\\leq$ x $\\leq$ 1", - "default": "0.08", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "fraction", + legal_range: "0 $\\leq$ x $\\leq$ 1", + default: "0.08", + required: "No", + variability: "constant") + %> -### xfanShaftBhp - -Type: *float* +**xfanShaftBhp=*float*** Fan shaft power at design flow and pressure. -{{ - member_table({ - "units": "BHP", - "legal_range": "x $>$ 0", - "default": "derived from xfanElecPwr and xfanVfDs", - "required": "If xfanElecPwr not present", - "variability": "constant" - }) -}} - -### xfanMtr +<%= member_table( + units: "BHP", + legal_range: "x $>$ 0", + default: "derived from xfanElecPwr and xfanVfDs", + required: "If xfanElecPwr not present", + variability: "constant") + %> -Type: *mtrName* +**xfanMtr=*mtrName*** Name of METER object, if any, by which fan's energy use is recorded (under end use category "fan"). -{{ - member_table({ - "units": "", - "legal_range": "*name of a METER*", - "default": "*not recorded*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*name of a METER*", + default: "*not recorded*", + required: "No", + variability: "constant") + %> -### endZone +**endZone** Indicates the end of the zone definition. Alternatively, the end of the zone definition can be indicated by the declaration of another object or by "END". If END or endZone is used, it should follow the definitions of the ZONE's subobjects such as GAINs, SURFACEs, TERMINALs, etc. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "", + default: "*none*", + required: "No", + variability: "constant") + %> **Related Probes:** -- @[zone][p_zone] -- @[znRes][p_znres] (accumulated results) +- @[zone](#p_zone) +- @[znRes](#p_znres) (accumulated results) diff --git a/doc/src/docs/input-structure.md b/doc/src/docs/input-structure.md index 33f08850f..3aac81011 100644 --- a/doc/src/docs/input-structure.md +++ b/doc/src/docs/input-structure.md @@ -18,13 +18,13 @@ CSE reads its input from a file. The file may be prepared by the user with a tex ## Form of the CSE Data -The data used by CSE consists of _objects_. Each object is of a _class_, which determines what the object represents. For example, objects of class ZONE represent thermally distinct regions of the building; each thermally distinct region has its own ZONE object. An object's class determines what data items or _members_ it contains. For instance, a ZONE object contains the zone's area and volume. In addition, each object can have a _name_. +The data used by CSE consists of *objects*. Each object is of a *class*, which determines what the object represents. For example, objects of class ZONE represent thermally distinct regions of the building; each thermally distinct region has its own ZONE object. An object's class determines what data items or *members* it contains. For instance, a ZONE object contains the zone's area and volume. In addition, each object can have a *name*. -The objects are organized in a hierarchy, or tree-like structure. For example, under each ZONE object, there can be SURFACE objects to represent the walls, floors, and ceilings of the ZONE. Under SURFACEs there can be WINDOW objects to represent glazings in the particular wall or roof. SURFACE is said to be a _subclass_ of the class ZONE and WINDOW a subclass of SURFACE; each individual SURFACE is said to be a _subobject_ of its particular ZONE object. Conversely, each individual SURFACE is said to be _owned by_ its zone, and the SURFACE class is said to be owned by the ZONE class. +The objects are organized in a hierarchy, or tree-like structure. For example, under each ZONE object, there can be SURFACE objects to represent the walls, floors, and ceilings of the ZONE. Under SURFACEs there can be WINDOW objects to represent glazings in the particular wall or roof. SURFACE is said to be a *subclass* of the class ZONE and WINDOW a subclass of SURFACE; each individual SURFACE is said to be a *subobject* of its particular ZONE object. Conversely, each individual SURFACE is said to be *owned by* its zone, and the SURFACE class is said to be owned by the ZONE class. -The hierarchy is rooted in the one _top-level object_ (or just _Top_). The top level object contains information global to the entire simulation, such as the start and end dates, as well as all of the objects that describe the building to be simulated and the reports to be printed. +The hierarchy is rooted in the one *top-level object* (or just *Top*). The top level object contains information global to the entire simulation, such as the start and end dates, as well as all of the objects that describe the building to be simulated and the reports to be printed. -Objects and their required data must be specified by the user, except that Top is predefined. This is done with input language _statements_. Each statement begins an object (specifying its class and object name) or gives a value for a data member of the object being created. Each object is specified with a group of statements that are usually given together, and the objects must be organized according to the hierarchy. For example, SURFACEs must be specified within ZONEs and WINDOWs within SURFACEs. Each SURFACE belongs to (is a subobject of) the ZONE within which it is specified, and each WINDOW is a subobject of its SURFACE. +Objects and their required data must be specified by the user, except that Top is predefined. This is done with input language *statements*. Each statement begins an object (specifying its class and object name) or gives a value for a data member of the object being created. Each object is specified with a group of statements that are usually given together, and the objects must be organized according to the hierarchy. For example, SURFACEs must be specified within ZONEs and WINDOWs within SURFACEs. Each SURFACE belongs to (is a subobject of) the ZONE within which it is specified, and each WINDOW is a subobject of its SURFACE. The entire hierarchy of CSE classes can be represented as follows, using indentation to indicate subclasses: @@ -48,8 +48,8 @@ TODO: review hierarchy DHWLOOPPUMP DHWLOOPSEG DHWLOOPBRANCH - DHWSOLARSYS - DHWSOLARCOLLECTOR + DHWSOLARSYS + DHWSOLARCOLLECTOR ZONE GAIN SURFACE @@ -57,41 +57,40 @@ TODO: review hierarchy SHADE SGDIST DOOR - <% if inactive_CNE_records %> -PERIMETER -TERMINAL -AIRHANDLER -HEATPLANT -BOILER -COOLPLANT -TOWERPLANT -HPLOOP + PERIMETER + TERMINAL + AIRHANDLER + HEATPLANT + BOILER + COOLPLANT + TOWERPLANT + HPLOOP <% end %> -REPORTFILE -REPORT -REPORTCOL -EXPORTFILE -EXPORT -EXPORTCOL + REPORTFILE + REPORT + REPORTCOL + EXPORTFILE + EXPORT + EXPORTCOL ## Overview of CSE Input Language -The CSE Input Language consists of _commands_, each beginning with a particular word and, preferably, ending with a semicolon. Each command is either an _action-command_, which specifies some action such as starting a simulation run, or a _statement_, which creates or modifies an _object_ or specifies a value for a _member_ of an object. +The CSE Input Language consists of *commands*, each beginning with a particular word and, preferably, ending with a semicolon. Each command is either an *action-command*, which specifies some action such as starting a simulation run, or a *statement*, which creates or modifies an *object* or specifies a value for a *member* of an object. ### Statements -- Overview -A statement that creates an object consists basically of the _class name_ followed by your name for the object to be created. (The name can be omitted for most classes; optional modifying clauses will be described later.) For example, +A statement that creates an object consists basically of the *class name* followed by your name for the object to be created. (The name can be omitted for most classes; optional modifying clauses will be described later.) For example, ZONE "north"; begins an object of class ZONE; the particular zone will be named "north". This zone name will appear in reports and error messages, and will be used in other statements that operate on the zone. As well as creating the ZONE, this statement sets CSE to expect statements specifying ZONE data members or ZONE subobjects to follow. -A statement specifying a data member consists of the data member's name, an = sign, an _expression_ specifying the value, and a terminating semicolon. An expression is a valid combination of operands and operators as detailed later; commonly it is just a number, name, or text enclosed in quotes. For example, +A statement specifying a data member consists of the data member's name, an = sign, an *expression* specifying the value, and a terminating semicolon. An expression is a valid combination of operands and operators as detailed later; commonly it is just a number, name, or text enclosed in quotes. For example, znVol = 100000; -specifies that the zone has a volume of 100000 cubic feet. (If the statement occurs outside of the description of a ZONE, an error message occurs.) All of the member names for each class are described in the [input data][input-data] section; most of them begin with an abbreviation of the class name for clarity. +specifies that the zone has a volume of 100000 cubic feet. (If the statement occurs outside of the description of a ZONE, an error message occurs.) All of the member names for each class are described in the [input data](#input-data) section; most of them begin with an abbreviation of the class name for clarity. The description of a zone or any object except Top can be terminated with the word "END"; but this is not essential; CSE will assume the ZONE ends when you start another ZONE or any object not a subobject of ZONE, or when you specify a member of a higher level class (Top for ZONE), or give an action-command such as RUN. @@ -99,7 +98,7 @@ Statements are free-form; several can be put on a line, or a single statement ca Capitalization generally does not matter in input language statements; we like to capitalize class names to make them stand out. Words that differ only in capitalization are NOT distinct to CSE. -_Comments_ (remarks) may be interspersed with commands. Comments are used to make the input file clearer to humans; they are ignored by CSE. A comment introduced with "//" ends at the end of the line; a comment introduced with "/\*" continues past the next "\*/", whether on the same line, next line, or many lines down. Additional input language may follow the \*/ on the same line. +*Comments* (remarks) may be interspersed with commands. Comments are used to make the input file clearer to humans; they are ignored by CSE. A comment introduced with "//" ends at the end of the line; a comment introduced with "/\*" continues past the next "\*/", whether on the same line, next line, or many lines down. Additional input language may follow the \*/ on the same line. ### Nested Objects @@ -149,15 +148,15 @@ The following is a brief CSE input file, annotated with comments intended to exe Terminates ZONE North, since action-commands terminate all objects being constructed. */ -\*\* See [Form of the CSE Data][form-of-the-cse-data] +\*\* See [Form of the CSE Data](#form-of-the-cse-data) ### Expressions -- Overview -_Expressions_ are the parts of statements that specify values -- numeric values, string values, object name values, and choice values. Expressions are composed of operators and operands, in a manner similar to many programming languages. The available operators and operands will be described in the section on [operators][operators]. +*Expressions* are the parts of statements that specify values -- numeric values, string values, object name values, and choice values. Expressions are composed of operators and operands, in a manner similar to many programming languages. The available operators and operands will be described in the section on [operators](#operators). -Unlike most programming languages, CSE expressions have Variation. _Variation_ is how often a value changes during the simulation run -- hourly, daily, monthly, yearly (i.e. does not change during run), etc. For instance, the operand `$hour` represents the hour of the day and has "hourly" variation. An expression has the variation of its fastest-varying component. +Unlike most programming languages, CSE expressions have Variation. *Variation* is how often a value changes during the simulation run -- hourly, daily, monthly, yearly (i.e. does not change during run), etc. For instance, the operand `$hour` represents the hour of the day and has "hourly" variation. An expression has the variation of its fastest-varying component. -Each data member of each object (and every context in which an expression may be used) has its allowed _variability_, which is the fastest variation it will accept. Many members allow no variability. For example, `begDay`, the date on which the run starts, cannot meaningfully change during the run. On the other hand, a thermostat setting can change hourly. Thermostat settings and other scheduled values are specified in CSE with expressions that often make use of variability; there is no explicit SCHEDULE class. +Each data member of each object (and every context in which an expression may be used) has its allowed *variability*, which is the fastest variation it will accept. Many members allow no variability. For example, `begDay`, the date on which the run starts, cannot meaningfully change during the run. On the other hand, a thermostat setting can change hourly. Thermostat settings and other scheduled values are specified in CSE with expressions that often make use of variability; there is no explicit SCHEDULE class. For example, a heating setpoint that was 68 during business hours and 55 at night might be expressed as @@ -222,9 +221,9 @@ A CSE input file for a building with two zones, four gains, and two air handlers ## The Preprocessor -_Note: The organization and wording of this section is based on section A12 of Kernigan and Richie \[1988\]. The reader is referred to that source for a somewhat more rigorous presentation but with the caution that the CSE input language preprocessor does not **completely** comply to ANSI C specifications._ +*Note: The organization and wording of this section is based on section A12 of Kernigan and Richie \[1988\]. The reader is referred to that source for a somewhat more rigorous presentation but with the caution that the CSE input language preprocessor does not **completely** comply to ANSI C specifications.* -The preprocessor performs macro definition and expansion, file inclusion, and conditional inclusion/exclusion of text. Lines whose first non-whitespace character is `#` communicate with the preprocessor and are designated _preprocessor directives_. Line boundaries are significant to the preprocessor (in contrast to the rest of the input language in which a newline is simply whitespace), although adjacent lines can be spliced with \\, as discussed below. The syntax of preprocessor directives is separate from that of the rest of the language. Preprocessor directives can appear anywhere in an input file and their effects last until the end of the input file. The directives that are supported by the input language preprocessor are the following: +The preprocessor performs macro definition and expansion, file inclusion, and conditional inclusion/exclusion of text. Lines whose first non-whitespace character is `#` communicate with the preprocessor and are designated *preprocessor directives*. Line boundaries are significant to the preprocessor (in contrast to the rest of the input language in which a newline is simply whitespace), although adjacent lines can be spliced with \\, as discussed below. The syntax of preprocessor directives is separate from that of the rest of the language. Preprocessor directives can appear anywhere in an input file and their effects last until the end of the input file. The directives that are supported by the input language preprocessor are the following: #if #else @@ -240,7 +239,7 @@ The preprocessor performs macro definition and expansion, file inclusion, and co ### Line splicing -If the last character on a line is the backslash \\, then the next line is spliced to that line by elimination of the backslash and the following newline. Line splicing occurs _before_ the line is divided into tokens. +If the last character on a line is the backslash \\, then the next line is spliced to that line by elimination of the backslash and the following newline. Line splicing occurs *before* the line is divided into tokens. Line splicing finds its main use in defining long macros: @@ -264,13 +263,13 @@ A line of the form where there is no space between the identifier and the (, is a macro with parameters given by the identifier list. The expansion of macros with parameters is discussed below. -Macros may also be defined _on the CSE command line_, making it possible to vary a run without changing the input files at all. As described in the [command line][command-line] section, macros are defined on the CSE command line using the `-D` switch in the forms +Macros may also be defined *on the CSE command line*, making it possible to vary a run without changing the input files at all. As described in the [command line](#command-line) section, macros are defined on the CSE command line using the `-D` switch in the forms -D_identifier_ -D_identifier_=_token-sequence_ -The first form simply defines the name with no token-sequence; this is convenient for testing with `#ifdef`, `#ifndef`, or `defined()`, as described in the section on [conditional inclusion of text][conditional-inclusion-of-text]. The second form allows an argument list and token sequence. The entire command line argument must be enclosed in quotes if it contains any spaces. +The first form simply defines the name with no token-sequence; this is convenient for testing with `#ifdef`, `#ifndef`, or `defined()`, as described in the section on [conditional inclusion of tex](#conditional-inclusion-of-text). The second form allows an argument list and token sequence. The entire command line argument must be enclosed in quotes if it contains any spaces. A macro definition is forgotten when an `#undef` directive is encountered: @@ -300,9 +299,9 @@ The outer enclosing set of parentheses are not strictly needed in our example, b Note 1: The CSE preprocessor does not support the ANSI C stringizing (\#) or concatenation (\#\#) operators. -Note 2: Identifiers are case _insensitive_ (unlike ANSI C). For example, the text “myHeight” will be replaced by the `#defined` value of MYHEIGHT (if there is one). +Note 2: Identifiers are case *insensitive* (unlike ANSI C). For example, the text “myHeight” will be replaced by the `#defined` value of MYHEIGHT (if there is one). -_The preprocessor examples at the end of this section illustrate macro definition and expansion._ +*The preprocessor examples at the end of this section illustrate macro definition and expansion.* ### File inclusion @@ -320,9 +319,9 @@ For an example of the use `#include`s, please see the preprocessor examples at t ### Conditional inclusion of text -Conditional text inclusion provides a facility for selectively including or excluding groups of input file lines. The lines so included or excluded may be either CSE input language text _or other preprocessor directives_. The latter capability is very powerful. +Conditional text inclusion provides a facility for selectively including or excluding groups of input file lines. The lines so included or excluded may be either CSE input language text *or other preprocessor directives*. The latter capability is very powerful. -Several conditional inclusion directive involve integer constant expressions. Constant integer expressions are formed according the rules discussed in the section on [expressions][expressions] with the following changes: +Several conditional inclusion directive involve integer constant expressions. Constant integer expressions are formed according the rules discussed in the section on [expressions](#expressions) with the following changes: 1. Only constant integer operands are allowed. @@ -332,7 +331,7 @@ Several conditional inclusion directive involve integer constant expressions. Co 4. A special operand defined( ) is provided; it is described below. -Macro expansion _is_ performed on constant expression text, so symbolic expressions can be used (see examples below). +Macro expansion *is* performed on constant expression text, so symbolic expressions can be used (see examples below). The basic conditional format uses the directive @@ -340,11 +339,11 @@ The basic conditional format uses the directive If the constant expression has the value 0, all lines following the `#if` are dropped from the input stream (the preprocessor discards them) until a matching `#else`, `#elif`, or `#endif` directive is encountered. -The defined( _identifier_ ) operand returns 1 if the identifier is the name of a defined macro, otherwise 0. Thus +The defined( *identifier* ) operand returns 1 if the identifier is the name of a defined macro, otherwise 0. Thus #if defined( _identifier_ ) -can be used to control text inclusion based on macro flags. Two `#if` variants that test whether a macro is defined are also available. `#ifdef` _identifier_ is equivalent to `#if` defined(_identifier_) and `#ifndef` _identifier_ is equivalent to `#if` !defined(_identifier_). +can be used to control text inclusion based on macro flags. Two `#if` variants that test whether a macro is defined are also available. `#ifdef` *identifier* is equivalent to `#if` defined(*identifier*) and `#ifndef` *identifier* is equivalent to `#if` !defined(*identifier*). Defined(), `#ifdef`, and `#ifndef` consider a macro name "defined" even if the body of its definition contains no characters; thus a macro to be tested with one of these can be defined with just @@ -352,7 +351,7 @@ Defined(), `#ifdef`, and `#ifndef` consider a macro name "defined" even if the b or with just "-D*identifier*" on the CSE command line. -Conditional blocks are most simply terminated with `#endif`, but `#else` and `#elif` _constant-expression_ are also available for selecting one of two or more alternative text blocks. +Conditional blocks are most simply terminated with `#endif`, but `#else` and `#elif` *constant-expression* are also available for selecting one of two or more alternative text blocks. The simplest use of `#if` is to "turn off" sections of an input file without editing them out: @@ -373,7 +372,7 @@ Or, portions of the input file can be conditionally selected: Note that if a set of `#if` ... `#elif` ... `#elif` conditionals does not contain an `#else`, it is possible for all lines to be excluded. -Finally, it is once again important to note that conditional directives _nest_, as shown in the following example (indentation is included for clarity only): +Finally, it is once again important to note that conditional directives *nest*, as shown in the following example (indentation is included for clarity only): #if 0 This text is NOT included. @@ -386,7 +385,7 @@ Finally, it is once again important to note that conditional directives _nest_, ### Input echo control -By default, CSE echos all input text to the input echo report (see REPORT rpType=INP). #echooff and #echoon allow disabling and re-enabling text echoing. This capability is useful reducing +By default, CSE echos all input text to the input echo report (see REPORT rpType=INP). #echooff and #echoon allow disabling and re-enabling text echoing. This capability is useful reducing report file size by suppressing echo of, for example, large standard include files. ... some input ... // text sent to the input echo report @@ -399,10 +398,10 @@ report file size by suppressing echo of, for example, large standard include fil Nesting is supported -- each #echoon "undoes" the prior #echooff, but echoing does not resume until the topmost (earliest) #echooff is cancelled. +* #echoon has no effect when echoing is already active. +* Unmatched #echooffs are ignored -- echoing remains disabled through the end +of the input stream. -- echoon has no effect when echoing is already active. -- Unmatched #echooffs are ignored -- echoing remains disabled through the end - of the input stream. ### Preprocessor examples @@ -433,7 +432,7 @@ The actual input file would look like this: #redefine FLRAREA 2000 #include "base." -Macros are also useful for encapsulating standard calculations. For example, most U-values must be entered _without_ surface conductances, yet many tabulated U-values include the effects of the standard ASHRAE winter surface conductance of 6.00 Btuh/ft^2^-^o^F. A simple macro is very helpful: +Macros are also useful for encapsulating standard calculations. For example, most U-values must be entered *without* surface conductances, yet many tabulated U-values include the effects of the standard ASHRAE winter surface conductance of 6.00 Btuh/ft^2^-^o^F. A simple macro is very helpful: #define UWinter(u) ( 1/(1/(u)-1/6.00) ) @@ -441,11 +440,11 @@ This macro can be used whenever a U-value is required (e.g. SURFACE ... sfU=UWin ## CSE Input Language Statements -This section describes the general form of CSE input language statements that define objects, assign values to the data members of objects, and initiate actions. The concepts of objects and the class hierarchy were introduced in the section on [form of CSE data][form-of-the-cse-data]. Information on statements for specific CSE input language classes and their members is the subject of the [input data][input-data] section. +This section describes the general form of CSE input language statements that define objects, assign values to the data members of objects, and initiate actions. The concepts of objects and the class hierarchy were introduced in the section on [form of CSE data](#form-of-the-cse-data). Information on statements for specific CSE input language classes and their members is the subject of the [input data](#input-data) section. ### Object Statements -As we described in a [previous section][statements-overview], the description of an object is introduced by a statement containing at least the class name, and usually your chosen name for the particular object. In addition, this section will describe several optional qualifiers and modifying clauses that permit defining similar objects without repeating all of the member details, and reopening a previously given object description to change or add to it. +As we described in a [previous section](#statements-overview), the description of an object is introduced by a statement containing at least the class name, and usually your chosen name for the particular object. In addition, this section will describe several optional qualifiers and modifying clauses that permit defining similar objects without repeating all of the member details, and reopening a previously given object description to change or add to it. Examples of the basic object-beginning statement: @@ -455,7 +454,7 @@ Examples of the basic object-beginning statement: LAYER; -As described in [the section on nested objects][nested-objects], such a statement is followed by statements giving the object's member values or describing subobjects of the object. The object description ends when you begin another object that is not of a subclass of the object, or when a member of an embedding (higher level) object previously begun is given, or when END is given. +As described in [the section on nested objects](#nested-objects), such a statement is followed by statements giving the object's member values or describing subobjects of the object. The object description ends when you begin another object that is not of a subclass of the object, or when a member of an embedding (higher level) object previously begun is given, or when END is given. #### Object Names @@ -478,11 +477,11 @@ We suggest always quoting object names so you won't have to worry about disallow Duplicate names result in error messages. Object names must be distinct between objects of the same class which are subobjects of the same object. For example, all ZONE names must be distinct, since all ZONEs are subobjects of Top. It is permissible to have SURFACEs with the same name in different ZONEs -- but it is a good idea to keep all of your object names distinct to minimize the chance of an accidental mismatch or a confusing message regarding some other error. -For some classes, such as ZONE, a name is required for each object. This is because several other statements refer to specific ZONEs, and because a name is needed to identify ZONEs in reports. For other classes, the name is optional. The specific statement descriptions in the [Input Data][input-data] Section 5 say which names are required. We suggest always using object names even where not required; one reason is because they allow CSE to issue clearer error messages. +For some classes, such as ZONE, a name is required for each object. This is because several other statements refer to specific ZONEs, and because a name is needed to identify ZONEs in reports. For other classes, the name is optional. The specific statement descriptions in the [Input Data](#input-data) Section 5 say which names are required. We suggest always using object names even where not required; one reason is because they allow CSE to issue clearer error messages. -The following _reserved words will not work as object names unless enclosed in quotes_: +The following *reserved words will not work as object names unless enclosed in quotes*: -_(this list needs to be assembled and typed in)_ +*(this list needs to be assembled and typed in)* #### ALTER @@ -514,7 +513,7 @@ ALTER can be used to facilitate making similar runs. For example, to evaluate th wnHeight = 4; wnWidth = 12; // make window smaller RUN; // perform simulation and print reports again -ALTER also lets you access the predefined "Primary" REPORTFILE and EXPORTFILE objects which will be described in the [Input Data][input-data] Section: +ALTER also lets you access the predefined "Primary" REPORTFILE and EXPORTFILE objects which will be described in the [Input Data](#input-data) Section: ALTER REPORTFILE "Primary"; /* open description of object automatically supplied by CSE -- no other way to access */ @@ -564,14 +563,13 @@ USETYPE followed by the type name is used in creating an object of a type previo sfArea = 8 * 30; // area of each wall is different sfAdjZn = "East"; // zone on other side of wall -Any differences from the type, and any required information not given in the type, must then be specified. Any member specified in the type may be respecified in the object unless FROZEN (see [this section][freeze]) in the type (normally, a duplicate specification for a member results in an error message). +Any differences from the type, and any required information not given in the type, must then be specified. Any member specified in the type may be respecified in the object unless FROZEN (see [this section](#freeze)) in the type (normally, a duplicate specification for a member results in an error message). #### DEFTYPE DEFTYPE is used to begin defining a TYPE for a class. When a TYPE is created, no object is created; rather, a partial or complete object description is stored for later use with DEFTYPE. TYPES facilitate creating multiple similar objects, as well as storing commonly used descriptions in a file to be \#included in several different files, or to be altered for multiple runs in comparative studies without changing the including files. Example (boldface for emphasis only): - DEFTYPE SURFACE "BaseWall" // common characteristics of all walls sfType = WALL; // walls are walls, so say it once sfTilt = 90; // all our walls are vertical; @@ -603,52 +601,51 @@ Sometimes in the TYPE definition, member(s) that you do not want defined are def - #### END and ENDxxxx END, optionally followed by an object name, can be used to unequivocally terminate an object. Further, as of July 1992 there is still available a specific word to terminate each type of object, such as ENDZONE to terminate a ZONE object. If the object name is given after END or ENDxxxx, an additional check is performed: if the name is not that of an object which has been begun and not terminated, an error message occurs. Generally, we have found it is not important to use END or ENDxxxx, especially since the member names in different classes are distinct. ### Member Statements -As introduced in the section on [statements][statements-overview], statements which assign values to members are of the general form: +As introduced in the section on [statements](#statements-overview), statements which assign values to members are of the general form: *memberName* = *expression*; The specific member names for each class of objects are given in Section 5; many have already been shown in examples. -Depending on the member, the appropriate type for the expression giving the member value may be numeric (integer or floating point), string, object name, or multiple-choice. Expressions of all types will be described in detail in the section on [expressions][expressions]. +Depending on the member, the appropriate type for the expression giving the member value may be numeric (integer or floating point), string, object name, or multiple-choice. Expressions of all types will be described in detail in the section on [expressions](#expressions). -Each member also has its _variability_ (also given in the [input data][input-data] section), or maximum acceptable _variation_. This is how often the expression for the value can change during the simulation -- hourly, daily, monthly, no change (constant), etc. The "variations" were introduced in the [expressions overview][expressions-overview] section and will be further detailed in a [section on variation frequencies][variation-frequencies-revisited]. +Each member also has its *variability* (also given in the [input data](#input-data) section), or maximum acceptable *variation*. This is how often the expression for the value can change during the simulation -- hourly, daily, monthly, no change (constant), etc. The "variations" were introduced in the [expressions overview](#expressions-overview) section and will be further detailed in a [section on variation frequencies](#variation-frequencies-revisited). Four special statements, AUTOSIZE, UNSET, REQUIRE, and FREEZE, add flexibility in working with members. #### AUTOSIZE -AUTOSIZE followed by a member name, sets the member to be sized by CSE. The option to AUTOSIZE a member will be shown under its legal range where it is described in the [input data][input-data] section. AUTOSIZE is only applicable to members describing HVAC system airflows and heating/cooling capacities. If AUTOSIZE is used for any member in the input, input describing design day conditions must also be specified (see [TOP Autosizing][top-autosizing]). +AUTOSIZE followed by a member name, sets the member to be sized by CSE. The option to AUTOSIZE a member will be shown under its legal range where it is described in the [input data](#input-data) section. AUTOSIZE is only applicable to members describing HVAC system airflows and heating/cooling capacities. If AUTOSIZE is used for any member in the input, input describing design day conditions must also be specified (see [TOP Autosizing](#top-autosizing)). #### UNSET -UNSET followed by a member name is used when it is desired to delete a member value previously given. UNSETing a member resets the object to the same internal state it was in before the member was originally given. This makes it legal to specify a new value for the member (normally, a duplicate specification results in an error message); if the member is required (as specified in the [input data][input-data] section), then an error message will occur if RUN is given without re specifying the member. +UNSET followed by a member name is used when it is desired to delete a member value previously given. UNSETing a member resets the object to the same internal state it was in before the member was originally given. This makes it legal to specify a new value for the member (normally, a duplicate specification results in an error message); if the member is required (as specified in the [input data](#input-data) section), then an error message will occur if RUN is given without re specifying the member. Situations where you really might want to specify a member, then later remove it, include: -- After a RUN command has completed one simulation run, if you wish to specify another simulation run without CLEARing and giving all the data again, you may need to UNSET some members of some objects in order to re specify them or because they need to be omitted from the new run. In this case, use ALTER(s) to reopen the object(s) before UNSETing. +- After a RUN command has completed one simulation run, if you wish to specify another simulation run without CLEARing and giving all the data again, you may need to UNSET some members of some objects in order to re specify them or because they need to be omitted from the new run. In this case, use ALTER(s) to reopen the object(s) before UNSETing. -- In defining a TYPE (see [this section][deftype]), you may wish to make sure certain members are not specified so that the user must give them or omit them if desired. If the origin of the type (possibly a sequence of DEFTYPEs, LIKEs, and/or COPYs) has defined unwanted members, get rid of them with UNSET. +- In defining a TYPE (see [this section](#deftype)), you may wish to make sure certain members are not specified so that the user must give them or omit them if desired. If the origin of the type (possibly a sequence of DEFTYPEs, LIKEs, and/or COPYs) has defined unwanted members, get rid of them with UNSET. -Note that UNSET is only for deleting _members_ (names that would be followed with an = and a a value when being defined). To delete an entire _object_, use DELETE (see [this section][delete]). +Note that UNSET is only for deleting *members* (names that would be followed with an = and a a value when being defined). To delete an entire *object*, use DELETE (see [this section](#delete)). #### REQUIRE -REQUIRE followed by a member name makes entry of that member mandatory if it was otherwise optional; it is useful in defining a TYPE (see [this section][deftype]) when you desire to make sure the user enters a particular member, for example to be sure the TYPE is applied in the intended manner. REQUIRE by itself does not delete any previously entered value, so if the member already has a value, you will need to UNSET it. ?? _verify_ +REQUIRE followed by a member name makes entry of that member mandatory if it was otherwise optional; it is useful in defining a TYPE (see [this section](#deftype)) when you desire to make sure the user enters a particular member, for example to be sure the TYPE is applied in the intended manner. REQUIRE by itself does not delete any previously entered value, so if the member already has a value, you will need to UNSET it. ?? *verify* #### FREEZE -FREEZE followed by a member name makes it illegal to UNSET or redefine that member of the object. Note that FREEZE is unnecessary most of the time since CSE issues an error message for duplicate definitions without an intervening UNSET, unless the original definition came from a TYPE (see [this section][deftype]). Situations where you might want to FREEZE one or more members include: +FREEZE followed by a member name makes it illegal to UNSET or redefine that member of the object. Note that FREEZE is unnecessary most of the time since CSE issues an error message for duplicate definitions without an intervening UNSET, unless the original definition came from a TYPE (see [this section](#deftype)). Situations where you might want to FREEZE one or more members include: -- When defining a TYPE (see [this section][deftype]). Normally, the member values in a type are like defaults; they can be freely overridden by member specifications at each use. If you wish to insure a TYPE is used as intended, you may wish to FREEZE members to prevent accidental misuse. +- When defining a TYPE (see [this section](#deftype)). Normally, the member values in a type are like defaults; they can be freely overridden by member specifications at each use. If you wish to insure a TYPE is used as intended, you may wish to FREEZE members to prevent accidental misuse. -- When your are defining objects for later use or for somebody else to use (perhaps in a file to be included) and you wish to guard against misuse, you may wish to FREEZE members. Of course, this is not foolproof, since there is at present no way to allow use of predefined objects or types without allowing access to the statements defining them. +- When your are defining objects for later use or for somebody else to use (perhaps in a file to be included) and you wish to guard against misuse, you may wish to FREEZE members. Of course, this is not foolproof, since there is at present no way to allow use of predefined objects or types without allowing access to the statements defining them. ### Action Commands @@ -668,47 +665,46 @@ CLEAR removes all input data (objects and all their members) from CSE memory. CL ## Expressions -Probably the CSE input language's most powerful characteristic is its ability to accept expressions anywhere a single number, string, object name, or other value would be accepted. Preceding examples have shown the inputting zone areas and volumes as numbers (some defined via preprocessor macros) with \*'s between them to signify multiplication, to facilitate changes and avoid errors that might occur in manual arithmetic. Such expressions, where all operands are constants, are acceptable _anywhere_ a constant of the same type would be allowed. +Probably the CSE input language's most powerful characteristic is its ability to accept expressions anywhere a single number, string, object name, or other value would be accepted. Preceding examples have shown the inputting zone areas and volumes as numbers (some defined via preprocessor macros) with \*'s between them to signify multiplication, to facilitate changes and avoid errors that might occur in manual arithmetic. Such expressions, where all operands are constants, are acceptable *anywhere* a constant of the same type would be allowed. -But for many object members, CSE accepts _live expressions_ that _vary_ according to time of day, weather, zone temperatures, etc. (etc., etc., etc.!). Live expressions permit simulation of many relationships without special-purpose features in the language. Live expressions support controlling setpoints, scheduling HVAC system operation, resetting air handler supply temperature according to outdoor temperature, and other necessary and foreseen functions without dedicated language features; they will also support many unforeseen user-generated functionalities that would otherwise be unavailable. +But for many object members, CSE accepts *live expressions* that *vary* according to time of day, weather, zone temperatures, etc. (etc., etc., etc.!). Live expressions permit simulation of many relationships without special-purpose features in the language. Live expressions support controlling setpoints, scheduling HVAC system operation, resetting air handler supply temperature according to outdoor temperature, and other necessary and foreseen functions without dedicated language features; they will also support many unforeseen user-generated functionalities that would otherwise be unavailable. -Additional expression flexibility is provided by the ability to access all of the input data and much of the internal data as operands in expressions (_probes_, see [this section][probes]). +Additional expression flexibility is provided by the ability to access all of the input data and much of the internal data as operands in expressions (*probes*, see [this section](#probes)). As in a programming language, CSE expressions are constructed from operators and operands; unlike most programming languages, CSE determines how often an expression's operands change and automatically compute and store the value as often as necessary. -Expressions in which all operands are known when the statement is being decoded (for example, if all values are constants) are _always_ allowed, because the input language processor immediately evaluates them and presents the value to the rest of the program in the same manner as if a single number had been entered. _Most_ members also accept expressions that can be evaluated as soon as the run's input is complete, for example expressions involving a reference to another member that has not been given yet. Expressions that vary during the run, say at hourly or daily intervals, are accepted by _many_ members. The _variability_ or maximum acceptable variation for each member is given in the descriptions in the [input data][input-data] section, and the _variation_ of each non-constant expression component is given in its description in this section. +Expressions in which all operands are known when the statement is being decoded (for example, if all values are constants) are *always* allowed, because the input language processor immediately evaluates them and presents the value to the rest of the program in the same manner as if a single number had been entered. *Most* members also accept expressions that can be evaluated as soon as the run's input is complete, for example expressions involving a reference to another member that has not been given yet. Expressions that vary during the run, say at hourly or daily intervals, are accepted by *many* members. The *variability* or maximum acceptable variation for each member is given in the descriptions in the [input data](#input-data) section, and the *variation* of each non-constant expression component is given in its description in this section. -Interaction of expressions and the preprocessor: Generally, they don't interact. The preprocessor is a text processor which completes its work by including specified files, deleting sections under false \#if's, remembering define definitions, replacing macro calls with the text of the definition, removing preprocessor directives from the text after interpreting them, etc., _then_ the resulting character stream is analyzed by the input language statement compiler. However, the if statement takes an integer numeric expression argument. This expression is similar to those described here except that it can only use constant operands, since the preprocessor must evaluate it before deciding what text to feed to the input statement statement compiler. +Interaction of expressions and the preprocessor: Generally, they don't interact. The preprocessor is a text processor which completes its work by including specified files, deleting sections under false \#if's, remembering define definitions, replacing macro calls with the text of the definition, removing preprocessor directives from the text after interpreting them, etc., *then* the resulting character stream is analyzed by the input language statement compiler. However, the if statement takes an integer numeric expression argument. This expression is similar to those described here except that it can only use constant operands, since the preprocessor must evaluate it before deciding what text to feed to the input statement statement compiler. ### Expression Types -The type of value to which an expression must evaluate is specified in each member description (see the [input data][input-data] section) or other context in which an expression can be used. Each expression may be a single constant or may be made up of operators and operands described in the rest of this section, so long as the result is the required type or can be converted to that type by CSE, and its variation is not too great for the context. The possible types are: - ---- +The type of value to which an expression must evaluate is specified in each member description (see the [input data](#input-data) section) or other context in which an expression can be used. Each expression may be a single constant or may be made up of operators and operands described in the rest of this section, so long as the result is the required type or can be converted to that type by CSE, and its variation is not too great for the context. The possible types are: -_float_ A real number (3.0, 5.34, -2., etc.). Approximately 7 -digits are carried internally. If an int is given -where a real is required, it is automatically -converted. + ------------------ ----------------------------------------------------- + *float* A real number (3.0, 5.34, -2., etc.). Approximately 7 + digits are carried internally. If an int is given + where a real is required, it is automatically + converted. -_int_ An integer or whole number (-1, 0, 1, 2 etc.). If a -real is given, an error may result, but we should -change it to convert it (discarding any fractional -part). + *int* An integer or whole number (-1, 0, 1, 2 etc.). If a + real is given, an error may result, but we should + change it to convert it (discarding any fractional + part). -_Boolean_ Same as int; indicates that a 0 value will be -interpreted as "false" and any non-0 value will be -interpreted as "true". + *Boolean* Same as int; indicates that a 0 value will be + interpreted as "false" and any non-0 value will be + interpreted as "true". -_string_ A string of characters; for example, some text -enclosed in quotes. + *string* A string of characters; for example, some text + enclosed in quotes. -_object name_ Name of an object of a specified class. Differs from -_string_ in that the name need not be enclosed in -quotes if it consists only of letters, digits, \_, -and \$, begins with a non-digit, and is different -from all reserved words now in or later added to the -language (see [Object Names][object-names]). + *object name* Name of an object of a specified class. Differs from + *string* in that the name need not be enclosed in + quotes if it consists only of letters, digits, \_, + and \$, begins with a non-digit, and is different + from all reserved words now in or later added to the + language (see [Object Names](#object-names)). The object may be defined after it is referred to. An expression using conditional operators, functions, @@ -717,46 +713,43 @@ language (see [Object Names][object-names]). object names accept values that vary during the simulation. -_choice_ One of several choices; a list of the acceptable -values is given wherever a _choice_ is required. The -choices are usually listed in CAPITALS but may be -entered in upper or lower case as desired. As with -object names, quotes are allowed but not required. + *choice* One of several choices; a list of the acceptable + values is given wherever a *choice* is required. The + choices are usually listed in CAPITALS but may be + entered in upper or lower case as desired. As with + object names, quotes are allowed but not required. Expressions may be used for choices, subject to the variability of the context. -_date_ May be entered as a 3-letter month abbreviation -followed by an _int_ for the day of the month, or an -_int_ for the Julian day of the year (February is -assumed to have 28 days). Expressions may be used -subject to variability limitations. Examples: + *date* May be entered as a 3-letter month abbreviation + followed by an *int* for the day of the month, or an + *int* for the Julian day of the year (February is + assumed to have 28 days). Expressions may be used + subject to variability limitations. Examples: `Jan 23 // January 23` `23 // January 23` `32 // February 1` - ---- + ------------------ ----------------------------------------------------- These words are used in following descriptions of contexts that can accept more than one basic type: ---- - -_numeric_ _float_ or _int_. When floats and ints are intermixed -with the same operator or function, the result is -float. - -_anyType_ Any type; the result is the same type as the -argument. If floats and ints are intermixed, the -result is float. If strings and valid choice names -are intermixed, the result is _choice_. Other -mixtures of types are generally illegal, except in -expressions for a few members that will accept either -one of several choices or a numeric value. + ------------------ ----------------------------------------------------- + *numeric* *float* or *int*. When floats and ints are intermixed + with the same operator or function, the result is + float. ---- + *anyType* Any type; the result is the same type as the + argument. If floats and ints are intermixed, the + result is float. If strings and valid choice names + are intermixed, the result is *choice*. Other + mixtures of types are generally illegal, except in + expressions for a few members that will accept either + one of several choices or a numeric value. + ------------------ ----------------------------------------------------- The next section describes the syntax of constants of the various data types; then, we will describe the available operators, then other operand types such as system variables and built-in functions. @@ -764,18 +757,17 @@ The next section describes the syntax of constants of the various data types; th This section reviews how to enter ordinary non-varying numbers and other values. ---- + ------------------ ----------------------------------------------------- + *int* optional - sign followed by digits. Don't use a + decimal point if your intent is to give an *int* + quantity -- the decimal point indicates a *float* to + CSE. Hexadecimal and Octal values may be given by + prefixing the value with 0x and 0O respectively (yes, + that really is a zero followed by an 'O'). -_int_ optional - sign followed by digits. Don't use a -decimal point if your intent is to give an _int_ -quantity -- the decimal point indicates a _float_ to -CSE. Hexadecimal and Octal values may be given by -prefixing the value with 0x and 0O respectively (yes, -that really is a zero followed by an 'O'). - -_float_ optional - sign, digits and decimal point. Very large -or small values can be entered by following the -number with an "e" and a power of ten. Examples; + *float* optional - sign, digits and decimal point. Very large + or small values can be entered by following the + number with an "e" and a power of ten. Examples;     `1.0 1. .1 -5534.6 123.e25 4.56e-23` @@ -787,20 +779,20 @@ number with an "e" and a power of ten. Examples; notices any need to convert to *float*. If you mean .6666667, say 2./3, 2/3., or .6666667. -_feet and inches_ Feet and inches may be entered where a _float_ number -of feet is required by typing the feet (or a 0 if -none), a single quote ', then the inches. (Actually -this is an operator meaning "divide the following -value by 12 and add it to the preceding value", so -expressions can work with it.) Examples: + *feet and inches* Feet and inches may be entered where a *float* number + of feet is required by typing the feet (or a 0 if + none), a single quote ', then the inches. (Actually + this is an operator meaning "divide the following + value by 12 and add it to the preceding value", so + expressions can work with it.) Examples:     `3'6 0'.5 (10+20)'(2+3)` -_string_ "Text" -- desired characters enclosed in double -quotes. Maximum length 80 characters (make 132??). To -put a " within the "'s, precede it with a backslash. -Certain control codes can be represented with letters -preceded with a backslash as follows: + *string* "Text" -- desired characters enclosed in double + quotes. Maximum length 80 characters (make 132??). To + put a " within the "'s, precede it with a backslash. + Certain control codes can be represented with letters + preceded with a backslash as follows:     `\\e escape` @@ -812,18 +804,18 @@ preceded with a backslash as follows:     `\\n newline or line feed` -_object name_ Same as _string_, or without quotes if name consists -only of letters, digits, \_, and \$, begins with a -non-digit, and is different from all reserved words -now in or later added to the language (see -[Object Names][object-names]). Control character codes -(ASCII 0-31) are not allowed. + *object name* Same as *string*, or without quotes if name consists + only of letters, digits, \_, and \$, begins with a + non-digit, and is different from all reserved words + now in or later added to the language (see + [Object Names](#object-names)). Control character codes + (ASCII 0-31) are not allowed. -_choice_ Same as string; quotes optional on choice words valid -for the member. Capitalization does not matter. + *choice* Same as string; quotes optional on choice words valid + for the member. Capitalization does not matter. -_date_ Julian day of year (as _int_ constant), or month -abbreviation + *date* Julian day of year (as *int* constant), or month + abbreviation     `Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec` @@ -831,19 +823,15 @@ abbreviation month names are operators implemented to add the starting day of the month to the following *int* quantity). - ---- + ------------------ ----------------------------------------------------- ### Operators -For _floats_ and _ints_, the CSE input language recognizes a set of operators based closely on those found in the C programming language. The following table describes the available numeric operators. The operators are shown in the order of execution (precedence) when no ()'s are used to control the order of evaluation; thin lines separate operators of equal precedence. - ---- - -**Operator** **Name** **Notes and Examples** - ---- +For *floats* and *ints*, the CSE input language recognizes a set of operators based closely on those found in the C programming language. The following table describes the available numeric operators. The operators are shown in the order of execution (precedence) when no ()'s are used to control the order of evaluation; thin lines separate operators of equal precedence. + ------------------------------------------------------------------------ + **Operator** **Name** **Notes and Examples** + -------------- -------------------- ------------------------------------ ' Feet-Inches a ' b yields a + b/12; thus 4'6 = Separator 4.5. @@ -929,128 +917,122 @@ For _floats_ and _ints_, the CSE input language recognizes a set of operators ba ? : Conditional a ? b : c yields b if a is true (non-0), otherwise c. + ------------------------------------------------------------------------ ---- - -_Dates_ are stored as _ints_ (the value being the Julian day of the year), so all numeric operators could be used. The month abbreviations are implemented as operators that add the first day of the month to the following _int_ value; CSE does not disallow their use in other numeric contexts. +*Dates* are stored as *ints* (the value being the Julian day of the year), so all numeric operators could be used. The month abbreviations are implemented as operators that add the first day of the month to the following *int* value; CSE does not disallow their use in other numeric contexts. -For _strings_, _object names_, and _choices_, the CSE input language currently has no operators except the ?: conditional operator. A concatenation operator is being considered. Note, though, that the choose, choose1, select, and hourval functions described below work with strings, object names, and choice values as well as numbers. +For *strings*, *object names*, and *choices*, the CSE input language currently has no operators except the ?: conditional operator. A concatenation operator is being considered. Note, though, that the choose, choose1, select, and hourval functions described below work with strings, object names, and choice values as well as numbers. - ### System Variables -_System Variables_ are built-in operands with useful values. To avoid confusion with other words, they begin with a \$. Descriptions of the CSE system variables follow. Capitalization shown need not be matched. Most system variables change during a simulation run, resulting in the _variations_ shown; they cannot be used where the context will not accept variation at least this fast. (The [Input Data Section][input-data] gives the _variability_, or maximum acceptable variation, for each object member.) - ---- - -\$dayOfYear Day of year of simulation, 1 - 365; 1 corresponds to -Jan-1. (Note that this is not the day of the simulation -unless begDay is Jan-1.) **Variation:** daily. +*System Variables* are built-in operands with useful values. To avoid confusion with other words, they begin with a \$. Descriptions of the CSE system variables follow. Capitalization shown need not be matched. Most system variables change during a simulation run, resulting in the *variations* shown; they cannot be used where the context will not accept variation at least this fast. (The [Input Data Section](#input-data) gives the *variability*, or maximum acceptable variation, for each object member.) -\$month Month of year, 1 - 12. **Variation**: monthly. + ---------------- --------------------------------------------------------- + \$dayOfYear Day of year of simulation, 1 - 365; 1 corresponds to + Jan-1. (Note that this is not the day of the simulation + unless begDay is Jan-1.) **Variation:** daily. -\$dayOfMonth Day of month, 1 - 31. **Variation**: daily. + \$month Month of year, 1 - 12. **Variation**: monthly. -\$hour Hour of day, 1 - 24, in local time; 1 corresponds to midnight - 1 AM. -**Variation**: hourly. + \$dayOfMonth Day of month, 1 - 31. **Variation**: daily. -\$hourST Hour of day, 1 - 24, in standard time; 1 corresponds to midnight - 1 AM. -**Variation**: hourly. + \$hour Hour of day, 1 - 24, in local time; 1 corresponds to midnight - 1 AM. + **Variation**: hourly. -\$subhour Subhour of hour, 1 - N (number of subhours). -**Variation**: subhourly. + \$hourST Hour of day, 1 - 24, in standard time; 1 corresponds to midnight - 1 AM. + **Variation**: hourly. -\$dayOfWeek Day of week, 1 - 7; 1 corresponds to Sunday, 2 to -Monday, etc. **Variation:** daily. + \$subhour Subhour of hour, 1 - N (number of subhours). + **Variation**: subhourly. -\$DOWH Day of week 1-7 except 8 on every observed holiday. -**Variation**: daily. + \$dayOfWeek Day of week, 1 - 7; 1 corresponds to Sunday, 2 to + Monday, etc. **Variation:** daily. -\$isHoliday 1 on days that a holiday is observed (regardless of the -true date of the holiday); 0 on other days. -**Variation**: daily. + \$DOWH Day of week 1-7 except 8 on every observed holiday. + **Variation**: daily. -\$isHoliTrue 1 on days that are the true date of a holiday, otherwise 0. **Variation**: daily. + \$isHoliday 1 on days that a holiday is observed (regardless of the + true date of the holiday); 0 on other days. + **Variation**: daily. -\$isWeHol 1 on weekend days or days that are observed as holidays. -**Variation:** daily. + \$isHoliTrue 1 on days that are the true date of a holiday, otherwise + 0. **Variation**: daily. -\$isWeekend 1 on Saturday and Sunday, 0 on any day from Monday to -Friday. **Variation:** daily. + \$isWeHol 1 on weekend days or days that are observed as holidays. + **Variation:** daily. -\$isWeekday 1 on Monday through Friday, 0 on Saturday and Sunday. -**Variation:** daily. + \$isWeekend 1 on Saturday and Sunday, 0 on any day from Monday to + Friday. **Variation:** daily. -\$isBegWeek 1 for any day immediately following a weekend day or -observed holiday that is neither a weekend day or an -observed holiday. **Variation:** daily. + \$isWeekday 1 on Monday through Friday, 0 on Saturday and Sunday. + **Variation:** daily. -\$isWorkDay 1 on non-holiday Monday through Friday, 0 on holidays, -Saturday and Sunday. **Variation:** daily. + \$isBegWeek 1 for any day immediately following a weekend day or + observed holiday that is neither a weekend day or an + observed holiday. **Variation:** daily. -\$isNonWorkDay 1 on Saturday, Sunday and observed holidays, 0 on -non-holiday Monday through Friday. **Variation:** -daily. + \$isWorkDay 1 on non-holiday Monday through Friday, 0 on holidays, + Saturday and Sunday. **Variation:** daily. -\$isBegWorkWeek 1 on the first workday after a non-workday, 0 all -other days. **Variation:** daily. + \$isNonWorkDay 1 on Saturday, Sunday and observed holidays, 0 on + non-holiday Monday through Friday. **Variation:** + daily. -\$isDT 1 if Daylight Saving time is in effect, 0 otherwise. -**Variation:** hourly. + \$isBegWorkWeek 1 on the first workday after a non-workday, 0 all + other days. **Variation:** daily. -\$autoSizing 1 during autosizing calculations, 0 during main -simulation. **Variation:** for each phase. + \$isDT 1 if Daylight Saving time is in effect, 0 otherwise. + **Variation:** hourly. -\$dsDay Design day type, 0 during main simulation, 1 during -heating autosize, 2 during cool autosize. -**Variation:** daily. + \$autoSizing 1 during autosizing calculations, 0 during main + simulation. **Variation:** for each phase. ---- + \$dsDay Design day type, 0 during main simulation, 1 during + heating autosize, 2 during cool autosize. + **Variation:** daily. + ---------------- --------------------------------------------------------- **Weather variables**: the following allow access to the current hour's weather conditions in you CSE expressions. Units of measure are shown in parentheses. All have **Variation**: hourly. ---- + ----------------- ------------------------------------------------------ + \$radBeam Solar beam irradiance (on a sun-tracking surface) this hour + (Btu/ft2) -\$radBeam Solar beam irradiance (on a sun-tracking surface) this hour -(Btu/ft2) + \$radDiff Solar diffuse irradiance (on horizontal surface) this hour + (Btu/ft2) -\$radDiff Solar diffuse irradiance (on horizontal surface) this hour -(Btu/ft2) + \$tDbO Outdoor drybulb temperature this hour (degrees F) -\$tDbO Outdoor drybulb temperature this hour (degrees F) + \$tWbO Outdoor wetbulb temperature this hour (degrees F) -\$tWbO Outdoor wetbulb temperature this hour (degrees F) + \$wO Outdoor humidity ratio this hour (lb H2O/lb dry air) -\$wO Outdoor humidity ratio this hour (lb H2O/lb dry air) + \$windDirDeg Wind direction (compass degrees) -\$windDirDeg Wind direction (compass degrees) - -\$windSpeed Wind speed (mph) - ---- + \$windSpeed Wind speed (mph) + ----------------- ------------------------------------------------------ ### Built-in Functions -Built-in functions perform a number of useful scheduling and conditional operations in expressions. Built-in functions have the combined variation of their arguments; for _hourval_, the minimum result variation is hourly. For definitions of _numeric_ and _anyType_, see [Expression Types][expression-types]. +Built-in functions perform a number of useful scheduling and conditional operations in expressions. Built-in functions have the combined variation of their arguments; for *hourval*, the minimum result variation is hourly. For definitions of *numeric* and *anyType*, see [Expression Types](#expression-types). #### brkt ---- - -**Function** limits a value to be in a given range + -------------- --------------------------------------------------------- + **Function** limits a value to be in a given range -**Syntax** _numeric_ **brkt**( _numeric min, numeric val, numeric -max_) + **Syntax** *numeric* **brkt**( *numeric min, numeric val, numeric + max*) -**Remark** If _val_ is less than _min_, returns _min_; if _val_ is -greater than _max,_ returns _max_; if _val_ is in -between, returns _val_. + **Remark** If *val* is less than *min*, returns *min*; if *val* is + greater than *max,* returns *max*; if *val* is in + between, returns *val*. -**Example** In an AIRHANDLER object, the following statement would -specify a supply temperature equal to 130 minus the -outdoor air temperature, but not less than 55 nor greater -than 80: + **Example** In an AIRHANDLER object, the following statement would + specify a supply temperature equal to 130 minus the + outdoor air temperature, but not less than 55 nor greater + than 80:     `ahTsSp = brkt( 55, 130 - $tDbO, 80);` @@ -1058,120 +1040,106 @@ than 80: an 80-degree setpoint in cold weather, and a transition from 55 to 70 as the outdoor temperature moved from 75 to 50. - ---- + -------------- --------------------------------------------------------- #### fix ---- - -**Function** converts _float_ to _int_ - -**Syntax** _int_ **fix**( _float val_ ) + -------------- --------------------------------------------------------- + **Function** converts *float* to *int* -**Remark** _val_ is converted to _int_ by truncation -- **fix**( -1.3) and **fix**( 1.99) both return 1. **fix**( -4.4) -returns -4. + **Syntax** *int* **fix**( *float val* ) ---- + **Remark** *val* is converted to *int* by truncation -- **fix**( + 1.3) and **fix**( 1.99) both return 1. **fix**( -4.4) + returns -4. + -------------- --------------------------------------------------------- #### toFloat ---- - -**Function** converts _int_ to _float_ -**Syntax** _float_ **toFloat**( _int val_ ) - ---- + -------------- --------------------------------------------------------- + **Function** converts *int* to *float* + **Syntax** *float* **toFloat**( *int val* ) + -------------- --------------------------------------------------------- #### min ---- - -**Function** returns the lowest quantity from a list of values. + -------------- --------------------------------------------------------- + **Function** returns the lowest quantity from a list of values. -**Syntax** _numeric_ **min**( _numeric value1, numeric value2, ..._ -_numeric valuen_ ) + **Syntax** *numeric* **min**( *numeric value1, numeric value2, ...* + *numeric valuen* ) -**Remark** there can be any number of arguments separated by commas; -if floats and ints are intermixed, the result is float. - ---- + **Remark** there can be any number of arguments separated by commas; + if floats and ints are intermixed, the result is float. + -------------- --------------------------------------------------------- #### max ---- - -**Function** returns the highest quantity from a list of values. + -------------- --------------------------------------------------------- + **Function** returns the highest quantity from a list of values. -**Syntax** _numeric_ **max** ( _numeric value1, numeric value2,_ ... -_numeric valuen_ ) - ---- + **Syntax** *numeric* **max** ( *numeric value1, numeric value2,* ... + *numeric valuen* ) + -------------- --------------------------------------------------------- #### choose ---- - -**Function** returns the nth value from a list. If _arg0_ is 0, -_value0_ is returned; for 1, _value1_ is returned, etc. + -------------- --------------------------------------------------------- + **Function** returns the nth value from a list. If *arg0* is 0, + *value0* is returned; for 1, *value1* is returned, etc. -**Syntax** _anyType_ **choose** ( _int arg0, anyType value0, -anyType_ _value1, ... anyType valuen_ ) or _anyType_ -**choose** ( _int arg0, anyType value0, ... anyType_ -_valuen_, **default** _valueDef_) + **Syntax** *anyType* **choose** ( *int arg0, anyType value0, + anyType* *value1, ... anyType valuen* ) or *anyType* + **choose** ( *int arg0, anyType value0, ... anyType* + *valuen*, **default** *valueDef*) -**Remarks** Any number of _value_ arguments may be given. If -**default** and another value is given, this value will -be used if _arg0_ is less than 0 or too large; otherwise, -an error will occur. - ---- + **Remarks** Any number of *value* arguments may be given. If + **default** and another value is given, this value will + be used if *arg0* is less than 0 or too large; otherwise, + an error will occur. + -------------- --------------------------------------------------------- #### choose1 ---- - -**Function** same as choose except _arg0_ is 1-based. Choose1 returns -the second argument _value1_ for _arg0_ = 1, the third -argument _value2_ when _arg0_ = 2, etc. + ------------- ---------------------------------------------------------- + **Function** same as choose except *arg0* is 1-based. Choose1 returns + the second argument *value1* for *arg0* = 1, the third + argument *value2* when *arg0* = 2, etc. -**Syntax** _anyType_ **choose1** ( _int arg0, anyType value1, -anyType_ _value2, ... anyType valuen_ ) or _anyType_ -**choose1** ( _int arg0, anyType value1,_ ... _anyType -valuen,_ **default** _valueDef_) + **Syntax** *anyType* **choose1** ( *int arg0, anyType value1, + anyType* *value2, ... anyType valuen* ) or *anyType* + **choose1** ( *int arg0, anyType value1,* ... *anyType + valuen,* **default** *valueDef*) -**Remarks** **choose1** is a function that is well suited for use with -daily system variables. For example, if a user wanted to -denote different values for different days of the week, -the following use of **choose1** could be implemented: + **Remarks** **choose1** is a function that is well suited for use with + daily system variables. For example, if a user wanted to + denote different values for different days of the week, + the following use of **choose1** could be implemented:     `tuTC = choose1(\$dayOfWeek, MonTemp, TueTemp, ...)` Note that for hourly data, the **hourval** function would be a better choice, because it doesn't require the explicit declaration of the \$hour system variable. - ---- + ------------- ---------------------------------------------------------- #### select ---- + ------------ ----------------------------------------------------------- + **Function** contains Boolean-value pairs; returns the value associated + with the first Boolean that evaluates to true (non-0). -**Function** contains Boolean-value pairs; returns the value associated -with the first Boolean that evaluates to true (non-0). + **Syntax** *anyType* ( *Boolean arg1, anyType value1, Boolean arg2,* + *anyType value2, ...* **default** *anyType*) (the + **default** part is optional) -**Syntax** _anyType_ ( _Boolean arg1, anyType value1, Boolean arg2,_ -_anyType value2, ..._ **default** _anyType_) (the -**default** part is optional) + **Remark** **select** is a function that simulates if-then logic + during simulation (for people familiar with C, it works + much like a series of imbedded conditionals: (a?b:(a?b:c)) + ). -**Remark** **select** is a function that simulates if-then logic -during simulation (for people familiar with C, it works -much like a series of imbedded conditionals: (a?b:(a?b:c)) -). - -**Examples** Select can be used to simulate a **dynamic** (run-time) -**if-else** **statement**: + **Examples** Select can be used to simulate a **dynamic** (run-time) + **if-else** **statement**: `gnPower = select( $isHoliday, HD_GAIN, // if ($isHoliday) ` @@ -1235,358 +1203,296 @@ much like a series of imbedded conditionals: (a?b:(a?b:c)) comes from **hourval**, which varies hourly (also, \$isHoliday and \$isWeekend vary daily, but the faster variation determines the variation of the result). - ---- + ------------ ----------------------------------------------------------- #### hourval ---- - -**Function** from a list of 24 values, returns the value corresponding -to the hour of day. + ------------ ----------------------------------------------------------- + **Function** from a list of 24 values, returns the value corresponding + to the hour of day. -**Syntax** _anyType hourval ( anyType value1, anyType value2,_ … -_anyType value24_ ) + **Syntax** *anyType hourval ( anyType value1, anyType value2,* … + *anyType value24* ) *anyType hourval ( anyType value1, anyType value2*, … **default** *anyType*) -**Remark** **hourval** is evaluated at runtime and uses the hour of -the day being simulated to choose the corresponding value -from the 24 suppplied values. + **Remark** **hourval** is evaluated at runtime and uses the hour of + the day being simulated to choose the corresponding value + from the 24 suppplied values. If less than 24 *value* arguments are given, **default** and another value (or expression) should be supplied to be used for hours not explicitly specified. -**Example** see **select**, just above. - ---- + **Example** see **select**, just above. + ------------ ----------------------------------------------------------- #### abs ---- - -**Function** converts numeric to its absolute value -**Syntax** numeric **abs**( numeric val) - ---- + ------------ ----------------------------------------------------------- + **Function** converts numeric to its absolute value + **Syntax** numeric **abs**( numeric val) + ------------ ----------------------------------------------------------- #### sqrt ---- + ------------ ----------------------------------------------------------- + **Function** Calculates and returns the positive square root of *val* + ( *val* must be $\geq$ 0). -**Function** Calculates and returns the positive square root of _val_ -( _val_ must be $\geq$ 0). - -**Syntax** _float_ **sqrt** ( _float val_) - ---- + **Syntax** *float* **sqrt** ( *float val*) + ------------ ----------------------------------------------------------- #### exp ---- - -**Function** Calculates and returns the exponential of _val_ (= -e*^val^*) + ------------ ----------------------------------------------------------- + **Function** Calculates and returns the exponential of *val* (= + e*^val^*) -**Syntax** _float_ **exp**( _float val_) - ---- + **Syntax** *float* **exp**( *float val*) + ------------ ----------------------------------------------------------- #### logE ---- - -**Function** Calculates and returns the base e logarithm of _val_ ( _val_ -must be $\geq$ 0). - -**Syntax** _float_ **logE**( _float val_) + ------------ ----------------------------------------------------------- + **Function** Calculates and returns the base e logarithm of *val* ( *val* + must be $\geq$ 0). ---- + **Syntax** *float* **logE**( *float val*) + ------------ ----------------------------------------------------------- #### log10 ---- + ------------ ----------------------------------------------------------- + **Function** Calculates and returns the base 10 logarithm of *val* + ( *val* must be $\geq$ 0). -**Function** Calculates and returns the base 10 logarithm of _val_ -( _val_ must be $\geq$ 0). - -**Syntax** _float_ **log10**( _float val_) - ---- + **Syntax** *float* **log10**( *float val*) + ------------ ----------------------------------------------------------- #### sin ---- - -**Function** Calculates and returns the sine of _val_ (val in radians) -**Syntax** _float_ **sin**( _float val_) - ---- + ------------ ----------------------------------------------------------- + **Function** Calculates and returns the sine of *val* (val in radians) + **Syntax** *float* **sin**( *float val*) + ------------ ----------------------------------------------------------- #### sind ---- - -**Function** Calculates and returns the sine of _val_ (val in degrees) -**Syntax** _float_ **sind**( _float val_) - ---- + ------------ ----------------------------------------------------------- + **Function** Calculates and returns the sine of *val* (val in degrees) + **Syntax** *float* **sind**( *float val*) + ------------ ----------------------------------------------------------- #### asin ---- - -**Function** Calculates and returns (in radians) the arcsine of _val_ -**Syntax** _float_ **asin**( _float val_) - ---- + ------------ ----------------------------------------------------------- + **Function** Calculates and returns (in radians) the arcsine of *val* + **Syntax** *float* **asin**( *float val*) + ------------ ----------------------------------------------------------- #### asind ---- - -**Function** Calculates and returns (in degrees) the arcsine of _val_ -**Syntax** _float_ **asind**( _float val_) - ---- + ------------ ----------------------------------------------------------- + **Function** Calculates and returns (in degrees) the arcsine of *val* + **Syntax** *float* **asind**( *float val*) + ------------ ----------------------------------------------------------- #### cos ---- - -**Function** Calculates and returns the cosine of _val_ (val in radians) -**Syntax** _float_ **cos**( _float val_) - ---- + ------------ ----------------------------------------------------------- + **Function** Calculates and returns the cosine of *val* (val in radians) + **Syntax** *float* **cos**( *float val*) + ------------ ----------------------------------------------------------- #### cosd ---- - -**Function** Calculates and returns the cosine of _val_ (val in degrees) -**Syntax** _float_ **cosd**( _float val_) - ---- + ------------ ----------------------------------------------------------- + **Function** Calculates and returns the cosine of *val* (val in degrees) + **Syntax** *float* **cosd**( *float val*) + ------------ ----------------------------------------------------------- #### acos ---- - -**Function** Calculates and returns (in radians) the arccosine of _val_ -**Syntax** _float_ **acos**( _float val_) - ---- + ------------ ----------------------------------------------------------- + **Function** Calculates and returns (in radians) the arccosine of *val* + **Syntax** *float* **acos**( *float val*) + ------------ ----------------------------------------------------------- #### acosd ---- - -**Function** Calculates and returns (in degrees) the arccosine of _val_ -**Syntax** _float_ **acosd**( _float val_) - ---- + ------------ ----------------------------------------------------------- + **Function** Calculates and returns (in degrees) the arccosine of *val* + **Syntax** *float* **acosd**( *float val*) + ------------ ----------------------------------------------------------- #### tan ---- - -**Function** Calculates and returns the tangent of _val_ (val in -radians) + ------------ ----------------------------------------------------------- + **Function** Calculates and returns the tangent of *val* (val in + radians) -**Syntax** _float_ **tan**( _float val_) - ---- + **Syntax** *float* **tan**( *float val*) + ------------ ----------------------------------------------------------- #### tand ---- - -**Function** Calculates and returns the tangent of _val_ (val in -degrees) - -**Syntax** _float_ **tand**( _float val_) + ------------ ----------------------------------------------------------- + **Function** Calculates and returns the tangent of *val* (val in + degrees) ---- + **Syntax** *float* **tand**( *float val*) + ------------ ----------------------------------------------------------- #### atan ---- - -**Function** Calculates and returns (in radians) the arctangent of _val_ -**Syntax** _float_ **atan**( _float val_) - ---- + ------------ ----------------------------------------------------------- + **Function** Calculates and returns (in radians) the arctangent of *val* + **Syntax** *float* **atan**( *float val*) + ------------ ----------------------------------------------------------- #### atand ---- - -**Function** Calculates and returns (in degrees) the arctangent of _val_ -**Syntax** _float_ **atand**( _float val_) - ---- + ------------ ----------------------------------------------------------- + **Function** Calculates and returns (in degrees) the arctangent of *val* + **Syntax** *float* **atand**( *float val*) + ------------ ----------------------------------------------------------- #### atan2 ---- - -**Function** Calculates and returns (in radians) the arctangent of y/x -(handling x = 0) - -**Syntax** _float_ **atan2**( _float y, float x_) + ------------ ----------------------------------------------------------- + **Function** Calculates and returns (in radians) the arctangent of y/x + (handling x = 0) ---- + **Syntax** *float* **atan2**( *float y, float x*) + ------------ ----------------------------------------------------------- #### atan2d ---- + ------------ ----------------------------------------------------------- + **Function** Calculates and returns (in degrees) the arctangent of y/x + (handling x = 0) -**Function** Calculates and returns (in degrees) the arctangent of y/x -(handling x = 0) - -**Syntax** _float_ **atan2d**( _float y, float x_) - ---- + **Syntax** *float* **atan2d**( *float y, float x*) + ------------ ----------------------------------------------------------- #### pow ---- - -**Function** Calculates and returns _val_ raised to the *x*th power (= -_val_^x^). _val_ and _x_ cannot both be 0. If _val_ < 0, -_x_ must be integral. + ------------ ----------------------------------------------------------- + **Function** Calculates and returns *val* raised to the *x*th power (= + *val*^x^). *val* and *x* cannot both be 0. If *val* < 0, + *x* must be integral. -**Syntax** _float_ **pow**( _float val, numeric x_) - ---- + **Syntax** *float* **pow**( *float val, numeric x*) + ------------ ----------------------------------------------------------- #### enthalpy ---- - -**Function** Returns enthalpy of moist air (Btu/lb) for dry bulb -temperature (F) and humidity ratio (lb/lb) + ------------ ----------------------------------------------------------- + **Function** Returns enthalpy of moist air (Btu/lb) for dry bulb + temperature (F) and humidity ratio (lb/lb) -**Syntax** _float_ **enthalpy**( _float tDb, float w_) - ---- + **Syntax** *float* **enthalpy**( *float tDb, float w*) + ------------ ----------------------------------------------------------- #### wFromDbWb ---- - -**Function** Returns humidity ratio (lb/lb) of moist air from dry bulb -and wet bulb temperatures (F) + ------------ ----------------------------------------------------------- + **Function** Returns humidity ratio (lb/lb) of moist air from dry bulb + and wet bulb temperatures (F) -**Syntax** _float_ **wFromDbWb**( _float tDb, float tWb_) - ---- + **Syntax** *float* **wFromDbWb**( *float tDb, float tWb*) + ------------ ----------------------------------------------------------- #### wFromDbRh ---- - -**Function** Returns humidity ratio (lb/lb) of moist air from dry bulb -temperature (F) and relative humidity (0 – 1) - -**Syntax** _float_ **wFromDbRh**( _float tDb, float rh_) + ------------ ----------------------------------------------------------- + **Function** Returns humidity ratio (lb/lb) of moist air from dry bulb + temperature (F) and relative humidity (0 – 1) ---- + **Syntax** *float* **wFromDbRh**( *float tDb, float rh*) + ------------ ----------------------------------------------------------- #### rhFromDbW ---- + ------------ ----------------------------------------------------------- + **Function** Returns relative humidity (0 – 1) of moist air from dry bulb + temperature (F) and humidity ratio (lb/lb). -**Function** Returns relative humidity (0 – 1) of moist air from dry bulb -temperature (F) and humidity ratio (lb/lb). + **Syntax** *float* **rhFromDbW**( *float tDb, float w*) -**Syntax** _float_ **rhFromDbW**( _float tDb, float w_) - -**Remark** The return value is constrained to 0 <= rh <= 1 -(that is, physically impossible combinations of tDb and w are silently tolerated). - ---- + **Remark** The return value is constrained to 0 <= rh <= 1 + (that is, physically impossible combinations of tDb and w are silently tolerated). + ------------ ----------------------------------------------------------- - #### import ---- + ------------- ---------------------------------------------------------------- + **Function** Returns *float* read from an import file. -**Function** Returns _float_ read from an import file. + **Syntax** *float* **import**( *string importFile, string colName*)\ + *float* **import**( *string importFile, int colN*) -**Syntax** _float_ **import**( _string importFile, string colName_)\ - _float_ **import**( _string importFile, int colN_) + **Remark** Columns can be referenced by name or 1-based index.\ + See [IMPORTFILE](#importfile) for details on use of import() + ------------- --------------------------------------------------------------- -**Remark** Columns can be referenced by name or 1-based index.\ - See [IMPORTFILE][importfile] for details on use of import() - ---- #### importStr ---- - -**Function** Returns _string_ read from an import file. - -**Syntax** _string_ **importStr**( _string importFile, string colName_)\ - _string_ **importStr**( _string importFile, int colN_) + ------------ ----------------------------------------------------------------- + **Function** Returns *string* read from an import file. -**Remark** See [IMPORTFILE][importfile] for details on use of importStr() + **Syntax** *string* **importStr**( *string importFile, string colName*)\ + *string* **importStr**( *string importFile, int colN*) ---- + **Remark** See [IMPORTFILE](#importfile) for details on use of importStr() + ------------ ----------------------------------------------------------------- #### contin ---- + ------------ ----------------------------------------------------------- + **Function** Returns continuous control value, e.g. for lighting control -**Function** Returns continuous control value, e.g. for lighting control + **Syntax** *float* **contin**( *float* mpf, *float* mlf, *float* sp, + *float* val) -**Syntax** _float_ **contin**( _float_ mpf, _float_ mlf, _float_ sp, -_float_ val) + **Remark** **contin** is evaluated at runtime and returns a value in + the range 0 – 1 ??? -**Remark** **contin** is evaluated at runtime and returns a value in -the range 0 – 1 ??? - -**Example** -- - - - ---- + ------------ ----------------------------------------------------------- #### stepped ---- + ------------ ----------------------------------------------------------- + **Function** Returns stepped reverse-acting control value, e.g. for + lighting control -**Function** Returns stepped reverse-acting control value, e.g. for -lighting control + **Syntax** *float* **stepped**( *int* nsteps, *float* sp, *float* val) -**Syntax** _float_ **stepped**( _int_ nsteps, _float_ sp, _float_ val) + **Remark** **stepped** is evaluated at runtime and returns a value in + the range 0 – 1. If val <= 0, 1 is returned; if val + >= sp, 0 is returned; otherwise, a stepped intermediate + value is returned (see example) + ------------ ----------------------------------------------------------- -**Remark** **stepped** is evaluated at runtime and returns a value in -the range 0 – 1. If val <= 0, 1 is returned; if val ->= sp, 0 is returned; otherwise, a stepped intermediate -value is returned (see example) - ---- - -_example:_ +*example:* **stepped**( 3, 12, val) returns -_val_ _result_ - ---- - -val $<$ 4 1 -4 $\leq$ val $<$ 8 .667 -8 $\leq$ val $<$ 12 .333 -val $\geq$ 12 0 + *val* *result* + --------------------- ---------- + val $<$ 4 1 + 4 $\leq$ val $<$ 8 .667 + 8 $\leq$ val $<$ 12 .333 + val $\geq$ 12 0 ### User-defined Functions @@ -1594,16 +1500,16 @@ User defined functions have the format: type FUNCTION name ( arg decls ) = expr ; -_Type_ indicates the type of value the function returns, and can be: +*Type* indicates the type of value the function returns, and can be: INTEGER FLOAT STRING DOY (day of year date using month name and day; actually same as integer). -_Arg decls_ indicates zero or more comma-separated argument declarations, each consisting of a _type_ (as above) and the name used for the argument in _expr_. +*Arg decls* indicates zero or more comma-separated argument declarations, each consisting of a *type* (as above) and the name used for the argument in *expr*. -_Expr_ is an expression of (or convertible to) _type_. +*Expr* is an expression of (or convertible to) *type*. The tradeoffs between using a user-defined function and a preprocessor macro (`#define`) include: @@ -1628,7 +1534,7 @@ Note that while macros require line-splicing ("\\")to extend over one line, func ### Probes -_Probes_ provide a universal means of referencing data within the simulator. Probes permit using the inputtable members of each object, as described in the [Input Data][input-data] Section, as operands in expressions. In addition, most internal members can be probed; we will describe how to find their names shortly. +*Probes* provide a universal means of referencing data within the simulator. Probes permit using the inputtable members of each object, as described in the [Input Data](#input-data) Section, as operands in expressions. In addition, most internal members can be probed; we will describe how to find their names shortly. Three general ways of using probes are: @@ -1640,9 +1546,9 @@ Three general ways of using probes are: Here "`@zone[1].znArea`" is the probe. -2. During simulation. Probing during simulation, to make inputs be functions of conditions in the building or HVAC systems, is limited because most of the members of interest are updated _after_ CSE has evaluated the user's expressions for the subhour or other time interval -- this is logically necessary since the expressions are inputs. (An exception is the weather data, but this is also available through system variables such as \$tDbO.) +2. During simulation. Probing during simulation, to make inputs be functions of conditions in the building or HVAC systems, is limited because most of the members of interest are updated *after* CSE has evaluated the user's expressions for the subhour or other time interval -- this is logically necessary since the expressions are inputs. (An exception is the weather data, but this is also available through system variables such as \$tDbO.) -However, a number of _prior subhour_ values are available for probing, making it possible to implement relationships like "the local heat output of this terminal is 1000 Btuh if the zone temperature last subhour was below 65, else 500": +However, a number of *prior subhour* values are available for probing, making it possible to implement relationships like "the local heat output of this terminal is 1000 Btuh if the zone temperature last subhour was below 65, else 500": tuMnLh = @znres["North"].S.prior.tAir < 65 ? 1000 : 500; @@ -1655,28 +1561,26 @@ Examples: The general form of a probe is -@ _className_ \[ _objName_ \] . _member_ +    @ *className* \[ *objName* \] . *member* The initial @ is always necessary. And don't miss the period after the \]. -_className_ is the CLASS being probed - ---- - -_objName_ is the name of the specific object of the class; -alternately, a numeric subscript is allowed. Generally, the -numbers correspond to the objects in the order created. \[ -_objName_ \] can be omitted for the TOP class, which has -only one member, Top. +*className* is the CLASS being probed -_member_ is the name of the particular member being probed. This -must be exactly correct. For some inputtable members, the -probe name is not the same as the input name given in the -[Input Data][input-data] Section, and there are many -probe-able members not described in the -[Input Data][input-data] section. + ------------ ----------------------------------------------------------- + *objName* is the name of the specific object of the class; + alternately, a numeric subscript is allowed. Generally, the + numbers correspond to the objects in the order created. \[ + *objName* \] can be omitted for the TOP class, which has + only one member, Top. ---- + *member* is the name of the particular member being probed. This + must be exactly correct. For some inputtable members, the + probe name is not the same as the input name given in the + [Input Data](#input-data) Section, and there are many + probe-able members not described in the + [Input Data](#input-data) section. + ------------ ----------------------------------------------------------- How do you find out what the probe-able member names are? CSE will display the a list of the latest class and member names if invoked with the -p switch. Use the command line @@ -1704,7 +1608,7 @@ A portion of the `-p` output looks like: In the above "exportCol" and "holiday" are class names, and "name", "colHead", "colGap", . . . are member names for class exportCol. Some members have multiple names separated by .'s, or they may contain an additional subscript. To probe one of these, type all of the names and punctuation exactly as shown (except capitalization may differ); if an additional subscript is shown, give a number in the specified range. An "I" designates an "input" parameter, an R means "runtime" parameter. The "owner" is the class of which this class is a subclass. -The data type and variation of each member is also shown. Note that _variation_, or how often the member changes, is shown here. (_Variability_, or how often an expression assigned to the member may change, is given for the input table members in the [Input Data][input-data] Section). Members for which an "end of" variation is shown can be probed only for use in reports. A name described as "un-probe-able" is a structure or something not convertible to an integer, float, or string. +The data type and variation of each member is also shown. Note that *variation*, or how often the member changes, is shown here. (*Variability*, or how often an expression assigned to the member may change, is given for the input table members in the [Input Data](#input-data) Section). Members for which an "end of" variation is shown can be probed only for use in reports. A name described as "un-probe-able" is a structure or something not convertible to an integer, float, or string. - surface\[\].sgdist\[\].f\[\]: f\[0\] is winter solar coupling fraction; f\[1\] is summer. ### Variation Frequencies Revisited -At risk of beating the topic to death, we're going to review once more the frequencies with which a CSE value can change (_variations)_, with some comments on the corresponding _variabilities_. - ---- +At risk of beating the topic to death, we're going to review once more the frequencies with which a CSE value can change (*variations)*, with some comments on the corresponding *variabilities*. -subhourly changes in each "subhour" used in simulation. Subhours -are commonly 15-minute intervals for models using -znModel=CNE or 2-minute intervals for CSE znModels. + ---------------- ------------------------------------------------------- + subhourly changes in each "subhour" used in simulation. Subhours + are commonly 15-minute intervals for models using + znModel=CNE or 2-minute intervals for CSE znModels. -hourly changes every simulated hour. The simulated weather and -many other aspects of the simulation change hourly; it -is customary to schedule setpoint changes, HVAC system -operation, etc. in whole hours. + hourly changes every simulated hour. The simulated weather and + many other aspects of the simulation change hourly; it + is customary to schedule setpoint changes, HVAC system + operation, etc. in whole hours. -daily changes at each simulated midnite. + daily changes at each simulated midnite. -monthly changes between simulated months. + monthly changes between simulated months. -monthly-hourly, changes once an hour on the first day of each month; -or "hourly on the 24 hourly values from the first day of the month -first day of are used for the rest of the month. This variation and -each month" variability is used for data dependent on the sun's -position, to save calculation time over computing it -every hour of every day. + monthly-hourly, changes once an hour on the first day of each month; + or "hourly on the 24 hourly values from the first day of the month + first day of are used for the rest of the month. This variation and + each month" variability is used for data dependent on the sun's + position, to save calculation time over computing it + every hour of every day. -run start time value is derived from other inputs before simulation -begins, then does not change. + run start time value is derived from other inputs before simulation + begins, then does not change. Members that cannot change during the simulation but which are not needed to derive other values before the simulation begins have "run start time" *variability*. -input time value is known before CSE starts to check data and -derive "run start time" values. + input time value is known before CSE starts to check data and + derive "run start time" values. Expressions with "input time" variation may be used in many members that cannot accept any variation during the run. Many members documented in the - [Input Data][input-data] Section as having "constant" + [Input Data](#input-data) Section as having "constant" variability may actually accept expressions with "input time" variation; to find out, try it: set the member to an expression containing a proposed probe @@ -1778,12 +1680,11 @@ derive "run start time" values. and resolved just before other data checks) and probes that are forward references to constant values. -constant does not vary. But a "constant" member of a class -denoted as R (with no I) in the probes report produced -by CSE -p is actually not available until run start -time. - ---- + constant does not vary. But a "constant" member of a class + denoted as R (with no I) in the probes report produced + by CSE -p is actually not available until run start + time. + ---------------- ------------------------------------------------------- Also there are end-of varieties of all of the above; these are values computed during simulation: end of each hour, end of run, etc. Such values may be reported (using a probe in a UDT report), but will produce an error message if probed in an expression for an input member value. diff --git a/doc/src/docs/introduction.md b/doc/src/docs/introduction.md index 2d0c78146..5b3d82a0c 100644 --- a/doc/src/docs/introduction.md +++ b/doc/src/docs/introduction.md @@ -12,7 +12,7 @@ CSE is a batch driven program which reads its input from a text file. It is not 3. Researchers and standards developers who will use the program to explore possible conservation opportunities. -Each of these groups is highly sophisticated. Therefore this manual generally uses an exhaustive, one-pass approach: while a given topic is being treated, _everything_ about that topic is presented with the emphasis on completeness and accuracy over ease of learning. +Each of these groups is highly sophisticated. Therefore this manual generally uses an exhaustive, one-pass approach: while a given topic is being treated, *everything* about that topic is presented with the emphasis on completeness and accuracy over ease of learning. Please note that CSE is under development and will be for many more months. Things will change and from time to time this manual may be inconsistent with the program. @@ -22,19 +22,19 @@ This Introduction covers general matters, including program installation. -[Operation][operation] documents the operational aspects of CSE, such as command line switches, file naming conventions, and how CSE finds files it needs. +[Operation](#operation) documents the operational aspects of CSE, such as command line switches, file naming conventions, and how CSE finds files it needs. -[Input Structure][input-structure] documents the CSE input language in general. +[Input Structure](#input-structure) documents the CSE input language in general. -[Input Data][input-data] describes all of the specific input language statements. +[Input Data](#input-data) describes all of the specific input language statements. -[Output Reports][output-reports] will describe the output reports. +[Output Reports](#output-reports) will describe the output reports. -Lastly, [Probe Definitions][probe-definitions] lists all available probes. +Lastly, [Probe Definitions](#probe-definitions) lists all available probes. + diff --git a/doc/src/docs/output-reports.md b/doc/src/docs/output-reports.md index 5724e731c..46cd174be 100644 --- a/doc/src/docs/output-reports.md +++ b/doc/src/docs/output-reports.md @@ -6,13 +6,11 @@ CSE report data is accumulated during simulation and written to the report file The default units for CSE reports are: ---- - -Energy mBtu, millions of Btu (to convert to kWh divide by 292) -Temperature degrees Farenheit -Air Flow cfm (cubic feet per minute) - ---- + ------------- --------------------------------------------------------- + Energy mBtu, millions of Btu (to convert to kWh divide by 292) + Temperature degrees Farenheit + Air Flow cfm (cubic feet per minute) + ------------- --------------------------------------------------------- ## Time @@ -22,47 +20,46 @@ Hourly reports show hour 1 through 24 where hour 1 includes the time period from A Meter Report displays the energy use of a METER object, a user-defined "device" that records energy consumption of equipment as simulated by CSE. CSE allows the user to define as many meters as desired and to assign any energy using device to any meter. -Meters account for energy use in pre-defined categories, called _end uses, that are documented with METER._ +Meters account for energy use in pre-defined categories, called *end uses, that are documented with METER.* ## Air Flow Meter Report -An Air Flow Meter Report displays air flow values accumulated by an AFMETER that is associated with one or more ZONEs. The report provides insight into the results of the AirNet pressure model. +An Air Flow Meter Report displays air flow values accumulated by an AFMETER that is associated with one or more ZONEs. The report provides insight into the results of the AirNet pressure model. -AFMETER maintains values for subhour, hour, day, month, and year intervals. Values are standard cfm (0.075 lb/ft3). Values for intervals longer than subhour are averages. +AFMETER maintains values for subhour, hour, day, month, and year intervals. Values are standard cfm (0.075 lb/ft3). Values for intervals longer than subhour are averages. Flows are categorized by 1) direction of flow (+ = into zone(s), - = out of zone(s)); IZXFER izAFCat tags; and 3) type of source or sink of the flow (ambient, unconditioned zone, conditioned zone). -The following items are displayed (using the abbreviations shown in the report headings). The "+/-" notation indicates that two columns are included, one for each direction of flow. For example, "InfX+/-" means the report includes columns "InfX+" (infiltration flows into the zone) and "InfX-" (infiltration flows out of the zone). - ---- +The following items are displayed (using the abbreviations shown in the report headings). The "+/-" notation indicates that two columns are included, one for each direction of flow. For example, "InfX+/-" means the report includes columns "InfX+" (infiltration flows into the zone) and "InfX-" (infiltration flows out of the zone). -Tot+/- Total flows +---------- ------------------------------------------------------------- +Tot+/- Total flows -Unkn+/- Uncategorized flows (generally this shows 0) +Unkn+/- Uncategorized flows (generally this shows 0) -InfX+/- Infiltration flows from/to ambient (izAFCat = InfilEx) +InfX+/- Infiltration flows from/to ambient (izAFCat = InfilEx) -VntX+/- Natural vent exchanges from/to ambient (izAFCat = VentEx) +VntX+/- Natural vent exchanges from/to ambient (izAFCat = VentEx) -FanX+/- Forced vent and DOAS flows to/from ambient (izAFCat = FanEx) +FanX+/- Forced vent and DOAS flows to/from ambient (izAFCat = FanEx) -InfU+/- Infiltration flows from/to unconditioned zones (izAFCat = InfilIz) +InfU+/- Infiltration flows from/to unconditioned zones (izAFCat = InfilIz) -VntU+/- Natural vent flows from/to unconditioned zones (izAFCat = VentIz) +VntU+/- Natural vent flows from/to unconditioned zones (izAFCat = VentIz) -FanU+/- Forced vent flows from/to unconditioned zones (izAFCat = FanIz) +FanU+/- Forced vent flows from/to unconditioned zones (izAFCat = FanIz) -InfC+/- Infiltration flows from/to conditioned zones (izAFCat = InfilIz) +InfC+/- Infiltration flows from/to conditioned zones (izAFCat = InfilIz) -VntC+/- Natural vent flows from/to conditioned zones (izAFCat = VentIz) +VntC+/- Natural vent flows from/to conditioned zones (izAFCat = VentIz) -FanC+/- Forced vent flows from/to conditioned zones (izAFCat = FanIz) +FanC+/- Forced vent flows from/to conditioned zones (izAFCat = FanIz) -Duct+/- Duct leakage flows +Duct+/- Duct leakage flows -HVAC+/- HVAC air flows at zone (i.e. at registers) +HVAC+/- HVAC air flows at zone (i.e. at registers) +---------- ------------------------------------------------------------- ---- ## Energy Balance Report @@ -72,180 +69,174 @@ In a real building zone energy and moisture flows must balance due to the laws o The following items are displayed (using the abbreviations shown in the report headings): ---- - -Tair Air temperature in the zone (since CSE uses combined films -this is technically the effective temperature and includes -radiant effects). - -WBair Wet Bulb temperature in the zone. + ---------- ------------------------------------------------------------- + Tair Air temperature in the zone (since CSE uses combined films + this is technically the effective temperature and includes + radiant effects). -Cond Heat flow through light weight surfaces from or to the -outdoors. + WBair Wet Bulb temperature in the zone. -InfS Sensible infiltration heat flow from outdoors. + Cond Heat flow through light weight surfaces from or to the + outdoors. -Slr Solar gain through glazing (net) and solar gains absorbed by -light surfaces and transmitted into the zone air. + InfS Sensible infiltration heat flow from outdoors. -IgnS Sensible internal gains from lights, equipment, people, etc. + Slr Solar gain through glazing (net) and solar gains absorbed by + light surfaces and transmitted into the zone air. -Mass Net heat flow to (negative) and from (positive) the mass -elements of the zone. + IgnS Sensible internal gains from lights, equipment, people, etc. -Izone Net heat flows to other zones in the building. + Mass Net heat flow to (negative) and from (positive) the mass + elements of the zone. -MechS Net heat flows from heating, cooling and ventilation. + Izone Net heat flows to other zones in the building. -BALS The balance (error) calculated by summing the sensible gains -and losses. + MechS Net heat flows from heating, cooling and ventilation. -InfL Latent infiltration heat flow. + BALS The balance (error) calculated by summing the sensible gains + and losses. -IgnL Latent internal gains. + InfL Latent infiltration heat flow. -AirL Latent heat absorbed (negative) or released (positive) by -changes in the room air moisture content. + IgnL Latent internal gains. -MechL Latent heat added or removed by cooling or ventilation. + AirL Latent heat absorbed (negative) or released (positive) by + changes in the room air moisture content. -BalL The balance (error) calculated by summing the sensible gains -and losses. + MechL Latent heat added or removed by cooling or ventilation. ---- + BalL The balance (error) calculated by summing the sensible gains + and losses. + ---------- ------------------------------------------------------------- ## Air Handler Load Report The Air Handler Load Report displays conditions and loads at the peak load hours for the air handler for a single zone. The following items are displayed: ---- - -PkVf Peak flow (cfm) at supply fan -VfDs Supply fan design flow (same as peak for E10 systems) -PkQH Peak heat output from heating coil. -Hcapt Rated capacity of heat coil - ---- + ---------- ------------------------------------------------------------- + PkVf Peak flow (cfm) at supply fan + VfDs Supply fan design flow (same as peak for E10 systems) + PkQH Peak heat output from heating coil. + Hcapt Rated capacity of heat coil + ---------- ------------------------------------------------------------- The rest are about the cooling coil. Most of the columns are values at the time of peak part load ratio (plr). Note that, for example, the peak sensible load is the sensible load at the time of peak part load ratio, even if there was a higher sensible load at another time when the part load ratio was smaller. ---- + ------ ----------------------------------------------------------------- + PkMo Month of cooling coil peak plr, 1-12 -PkMo Month of cooling coil peak plr, 1-12 + Dy Day of month 1-31 of peak -Dy Day of month 1-31 of peak + Hr Hour of day 1-24 of cooling coil peak plr. -Hr Hour of day 1-24 of cooling coil peak plr. + Tout Outdoor drybulb temperature at time of cooling coil peak plr. -Tout Outdoor drybulb temperature at time of cooling coil peak plr. + Wbou Outdoor wetbulb similarly -Wbou Outdoor wetbulb similarly + Ten Cooling coil entering air temperature at time of peak plr. -Ten Cooling coil entering air temperature at time of peak plr. + Wben Entering wetbulb similarly -Wben Entering wetbulb similarly - -Tex Exiting air temperature at plr peak + Tex Exiting air temperature at plr peak WbexExiting air wetbulb similarly --PkQs Sensible load at time of peak plr, shown positive. - --PkQl Latent load likewise + -PkQs Sensible load at time of peak plr, shown positive. --PkQC Total load -- sum of PkQs and PkQl + -PkQl Latent load likewise -CPlr Peak part load ratio: highest fraction of coil's capacity used, -reflecting both fraction of maximum output under current -conditions used when on and fraction of the time the fan is on. -The maximum output under actual conditions can vary considerably -from the rated capacity for DX coils. The fraction of maximum -output used can only be 1.0 if the sensible and total loads -happen to occur in the same ratio as the sensible and total -capacities. The time the fan is on can be less than 1.0 for -residential systems in which the fan cycles on with the -compressor. For example, if at the cooling peak the coil ran at -.8 power with the fan on .9 of the time, a CPlr of .72 would be -reported. The preceding 12 columns are values at the time this -peak occured. + -PkQC Total load -- sum of PkQs and PkQl -Ccapt Cooling coil rated total capacity + CPlr Peak part load ratio: highest fraction of coil's capacity used, + reflecting both fraction of maximum output under current + conditions used when on and fraction of the time the fan is on. + The maximum output under actual conditions can vary considerably + from the rated capacity for DX coils. The fraction of maximum + output used can only be 1.0 if the sensible and total loads + happen to occur in the same ratio as the sensible and total + capacities. The time the fan is on can be less than 1.0 for + residential systems in which the fan cycles on with the + compressor. For example, if at the cooling peak the coil ran at + .8 power with the fan on .9 of the time, a CPlr of .72 would be + reported. The preceding 12 columns are values at the time this + peak occured. -Ccaps Rated sensible capacity. + Ccapt Cooling coil rated total capacity ---- + Ccaps Rated sensible capacity. + ------ ----------------------------------------------------------------- ## Air Handler Report The Air Handler Load Report displays conditions and heat flows in the air handler for the time period specified. It is important to note that the air handler report only accumulates data if the air handler is on during an hour. The daily and monthly values are averages of the hours the air handler was on and DO NOT INCLUDE OFF HOUR VALUES. The following items are displayed: ---- + ---------- ------------------------------------------------------------- + Tout Outdoor drybulb temperature during hours the air handler was + on. -Tout Outdoor drybulb temperature during hours the air handler was -on. + Wbou Outdoor wetbulb temperature similarly. -Wbou Outdoor wetbulb temperature similarly. + Tret Return air dry bulb temperature during hours the air handler + was on before return duct losses or leaks. -Tret Return air dry bulb temperature during hours the air handler -was on before return duct losses or leaks. + Wbre Return air wetbulb similarly -Wbre Return air wetbulb similarly + po Fraction outside air including economizer damper leakage, but + not return duct leakage. -po Fraction outside air including economizer damper leakage, but -not return duct leakage. + Tmix Mixed air dry bulb temperature -- after return air combined + with outside air; after return fan, but before supply fan and + coil(s). -Tmix Mixed air dry bulb temperature -- after return air combined -with outside air; after return fan, but before supply fan and -coil(s). + Wbmi Mixed air wet bulb temperature, similarly. -Wbmi Mixed air wet bulb temperature, similarly. + Tsup Supply air dry bulb temperature to zone terminals -- after + coil(s) and air handler supply duct leak and loss; (without + in zone duct losses after terminals). -Tsup Supply air dry bulb temperature to zone terminals -- after -coil(s) and air handler supply duct leak and loss; (without -in zone duct losses after terminals). + WBsu Supply air wet bulb temperature similarly. -WBsu Supply air wet bulb temperature similarly. + HrsOn Hours during which the fan operated at least part of the + time. -HrsOn Hours during which the fan operated at least part of the -time. + FOn Fraction of the time the fan was on during the hours it + operated (HrsOn). CHECK FOR VAV, IS IT FLOW OR TIME -FOn Fraction of the time the fan was on during the hours it -operated (HrsOn). CHECK FOR VAV, IS IT FLOW OR TIME + VF Volumetric flow, measured at mix point/supply fan/coils; + includes air that leaks out of supply duct and is thus non-0 + even when zone terminals are taking no flow -VF Volumetric flow, measured at mix point/supply fan/coils; -includes air that leaks out of supply duct and is thus non-0 -even when zone terminals are taking no flow + Qheat Heat energy added to air stream by heat coil, if any, + MEASURED AT COIL not as delivered to zones (see Qload). -Qheat Heat energy added to air stream by heat coil, if any, -MEASURED AT COIL not as delivered to zones (see Qload). + Qsens, Sensible, latent, and total heat added to air stream + Qlat and (negative values) by cooling coil, MEASURED AT COIL, + Qcool including heat cancelled by fan heat and duct losses, and + heat added to air lost through supply duct leak. -Qsens, Sensible, latent, and total heat added to air stream -Qlat and (negative values) by cooling coil, MEASURED AT COIL, -Qcool including heat cancelled by fan heat and duct losses, and -heat added to air lost through supply duct leak. + Qout Net heat taken from outdoor air. Sum of sensible and latent, + measured RELATIVE TO CURRENT RETURN AIR CONDITIONS. -Qout Net heat taken from outdoor air. Sum of sensible and latent, -measured RELATIVE TO CURRENT RETURN AIR CONDITIONS. + Qfan Heat added to air stream by supply fan, plus return fan if + any -- but not relief fan.. -Qfan Heat added to air stream by supply fan, plus return fan if -any -- but not relief fan.. + Qloss Heat added to air stream by supply and return duct leaks and + conductive loss. Computed in each case as the sensible and + latent heat in the air stream relative to return air + conditions after the leak or loss, less the same value before + the leak or loss. -Qloss Heat added to air stream by supply and return duct leaks and -conductive loss. Computed in each case as the sensible and -latent heat in the air stream relative to return air -conditions after the leak or loss, less the same value before -the leak or loss. + Qload Net energy delivered to the terminals -- Sensible and latent + energy, measured relative to return air conditions. INCLUDES + DUCT LOSSES after terminals; thus will differ from sum of + zone qMech's + qMecLat's. -Qload Net energy delivered to the terminals -- Sensible and latent -energy, measured relative to return air conditions. INCLUDES -DUCT LOSSES after terminals; thus will differ from sum of -zone qMech's + qMecLat's. + Qbal Sum of all the 'Q' columns, primarily a development aid. Zero + indicates consistent and accurate computation; the normal + printout is something like .0000, indicating that the value + was too small to print in the space alloted, but not + precisely zero, due to computational tolerances and internal + round-off errors. + ---------- ------------------------------------------------------------- -Qbal Sum of all the 'Q' columns, primarily a development aid. Zero -indicates consistent and accurate computation; the normal -printout is something like .0000, indicating that the value -was too small to print in the space alloted, but not -precisely zero, due to computational tolerances and internal -round-off errors. ---- diff --git a/doc/src/extra/dhwsolartank.md b/doc/src/extra/dhwsolartank.md index c30f7e40a..0a7543905 100644 --- a/doc/src/extra/dhwsolartank.md +++ b/doc/src/extra/dhwsolartank.md @@ -6,6 +6,6 @@ Outlet of this tank is the inlet to all system tanks. Drain water heat recovery preheats water coming into this tank. -### stName +**stName** **endDHWSOLARTANK** \ No newline at end of file diff --git a/doc/src/extra/inverse.md b/doc/src/extra/inverse.md index b67fb3217..6fd39bc09 100644 --- a/doc/src/extra/inverse.md +++ b/doc/src/extra/inverse.md @@ -2,100 +2,67 @@ Function inverter -### ivFREQ - -Type: *Choice* - -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "**none**", - "required": "No", - "variability": "runly" - }) -}} - -### ivX - -Type: *float* - -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "**none**", - "required": "No", - "variability": "constant" - }) -}} - -### ivX0 - -Type: *float* - -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "**none**", - "required": "No", - "variability": "runly" - }) -}} - -### ivY - -Type: *float* - -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "**none**", - "required": "No", - "variability": "constant" - }) -}} - -### ivY0 - -Type: *float* - -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "**none**", - "required": "No", - "variability": "runly" - }) -}} - -### ivYTarg - -Type: *float* - -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "**none**", - "required": "No", - "variability": "runly" - }) -}} - -### endInverse +**ivFREQ=*Choice*** + +<%= member_table( + units: "", + legal_range: "", + default: "**none**", + required: "No", + variability: "runly") %> + +**ivX=*float*** + +<%= member_table( + units: "", + legal_range: "", + default: "**none**", + required: "No", + variability: "constant") %> + +**ivX0=*float*** + +<%= member_table( + units: "", + legal_range: "", + default: "**none**", + required: "No", + variability: "runly") %> + +**ivY=*float*** + +<%= member_table( + units: "", + legal_range: "", + default: "**none**", + required: "No", + variability: "constant") %> + +**ivY0=*float*** + +<%= member_table( + units: "", + legal_range: "", + default: "**none**", + required: "No", + variability: "runly") %> + +**ivYTarg=*float*** + +<%= member_table( + units: "", + legal_range: "", + default: "**none**", + required: "No", + variability: "runly") %> + +**endInverse** Optionally indicates the end of the inverse definition. -{{ - member_table({ - "units": "", - "legal_range": "", - "default": "**none**", - "required": "No", - "variability": "" - }) -}} \ No newline at end of file +<%= member_table( + units: "", + legal_range: "", + default: "**none**", + required: "No", + variability: "") %> \ No newline at end of file diff --git a/doc/src/shared/dhwheater-doc.md b/doc/src/shared/dhwheater-doc.md index 2340aca11..168c2d5b9 100644 --- a/doc/src/shared/dhwheater-doc.md +++ b/doc/src/shared/dhwheater-doc.md @@ -2,471 +2,396 @@ Optional name of water heater; give after the word “DHWHEATER” if desired. -{{ - member_table({ - "units": "", - "legal_range": "*63 characters*", - "default": "*none*", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*63 characters*", + default: "*none*", + required: "No", + variability: "constant") + %> -### whMult - -Type: *integer* +**whMult=*integer*** Number of identical water heaters of this type. Any value $>1$ is equivalent to repeated entry of the same DHWHEATER. -{{ - member_table({ - "units": "", - "legal_range": "x $>$ 0", - "default": "1", - "required": "No", - "variability": "constant" - }) -}} - -### whType +<%= member_table( + units: "", + legal_range: "x $>$ 0", + default: "1", + required: "No", + variability: "constant") + %> -Type: *choice* +**whType=*choice*** Type of water heater. This categorization is based on CEC and federal rating standards that change from time to time. -{{ csv_table("SMALLSTORAGE, A storage water heater having an energy factor (EF) rating. Generally, a gas-fired storage water heater with input of 75,000 Btuh or less, an oil-fired storage water heater with input of 105,000 Btuh or less, an electric storage water heater with input of 12 kW or less, or a heat pump water heater rated at 24 amps or less. +<%= csv_table(< false) + SMALLSTORAGE, A storage water heater having an energy factor (EF) rating. Generally, a gas-fired storage water heater with input of 75,000 Btuh or less, an oil-fired storage water heater with input of 105,000 Btuh or less, an electric storage water heater with input of 12 kW or less, or a heat pump water heater rated at 24 amps or less. LARGESTORAGE, Any storage water heater that is not SMALLSTORAGE. SMALLINSTANTANEOUS, A water heater that has an input rating of at least 4,000 Btuh per gallon of stored water. Small instantaneous water heaters include: gas instantaneous water heaters with an input of 200,000 Btu per hour or less, oil instantaneous water heaters with an input of 210,000 Btu per hour or less, and electric instantaneous water heaters with an input of 12 kW or less. LARGEINSTANTANEOUS, An instantaneous water heater that does not conform to the definition of SMALLINSTANTANEOUS, an indirect fuel-fired water heater, or a hot water supply boiler. - INSTANTANEOUSUEF, An instantaneous water heater having a UEF rating (as opposed to EF).") -}} - -{{ - member_table({ - "units": "", - "legal_range": "*Codes listed above*", - "default": "SMALLSTORAGE", - "required": "No", - "variability": "constant" - }) -}} + INSTANTANEOUSUEF, An instantaneous water heater having a UEF rating (as opposed to EF). +END +%> -### whHeatSrc + <%= member_table( + units: "", + legal_range: "*Codes listed above*", + default: "SMALLSTORAGE", + required: "No", + variability: "constant") + %> -Type: *choice* +**whHeatSrc=*choice*** Heat source for water heater. CSE implements uses efficiency-based models for all whTypes (as documented in RACM, App. B). In addition, the detailed Ecotope HPWH model is available for electric (air source heat pump and resistance) SMALLSTORAGE water heaters. -{{ csv_table("RESISTANCE, Electric resistance heating element Deprecated for whType=SMALLSTORAGE (use RESISTANCEX) +<%= csv_table(< false) + RESISTANCE, Electric resistance heating element Deprecated for whType=SMALLSTORAGE (use RESISTANCEX) RESISTANCEX, Electric resistance heating element, detailed HPWH model ASHP, Air source heat pump, EF model Deprecated for whType=SMALLSTORAGE (use ASHPX) ASHPX, Air source heat pump, detailed HPWH model - FUEL, Fuel-fired burner") -}} + FUEL, Fuel-fired burner +END +%> -{{ - member_table({ - "units": "", - "legal_range": "*Codes listed above*", - "default": "FUEL", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*Codes listed above*", + default: "FUEL", + required: "No", + variability: "constant") + %> -### whResType - -Type: *choice* +**whResType=*choice*** Resistance heater type, valid only if whHeatSrc is equal to RESISTANCEX, else ignored. These choices are supported by the detailed HPWH model. Except for Generic, all heater characteristics are set by HPWH based on whResType. -{{ - member_table({ - "units": "", - "legal_range": "Typical\nSwingTank", - "default": "Typical", - "required": "No", - "variability": "constant" - }) -}} - -### whHeatingCap +<%= member_table( + units: "", + legal_range: "Typical\nSwingTank", + default: "Typical", + required: "No", + variability: "constant") %> -Type: *float* +**whHeatingCap=*float*** Nominal heating capacity, available only for a limited HPWH types. -{{ - member_table({ - "units": "Btuh", - "legal_range": "x $>$ 0", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "Btuh", + legal_range: "x $>$ 0", + default: "0", + required: "No", + variability: "constant") %> -### whVol - -Type: *float* +**whVol=*float*** Storage tank volume. Must be omitted or 0 for instantaneous whTypes. Used by HPWH model (whHeatSrc=RESISTANCEX or whHeatSrc=ASHPX). Required when whHeatSrc=RESISTANCEX or whHeatSrc=ASHPX with whASHPType=GENERIC. For all other configurations, whVol is documentation-only. -{{ - member_table({ - "units": "gal", - "legal_range": "$\\ge$ 0.1 (caution: small values may cause runtime errors)", - "default": "per whASHPType if HPWH else 50", - "required": "For some HPWH configurations, see above", - "variability": "constant" - }) -}} - -### whVolRunning +<%= member_table( + units: "gal", + legal_range: "$\\ge$ 0.1 (caution: small values may cause runtime errors)", + default: "per whASHPType if HPWH else 50", + required: "For some HPWH configurations, see above", + variability: "constant") + %> -Type: *float* +**whVolRunning=*float*** Running storage volume is the volume above aquastat. Requires the total volume based on aquastat position. Ecotope's HPWH tank and heater. -{{ - member_table({ - "units": "gal", - "legal_range": "x $>$ 0", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "gal", + legal_range: "x $>$ 0", + default: "0", + required: "No", + variability: "constant") %> -### whEF - -Type: *float* +**whEF=*float*** Rated energy factor that specifies DHWHEATER efficiency under test conditions. Used by CSE to derive annual water heating efficiency and/or other characteristics as described below. Calculation methods are documented in RACM, Appendix B. -{{ csv_table("Configuration, whEF default, Use +<%= csv_table(< true) + Configuration, whEF default, Use whType=SMALLSTORAGE, whHeatSrc=RESISTANCE or FUEL, 0.82, Derivation of whLDEF whType=SMALLSTORAGE, whHeatSrc=ASHP, 0.82, Derivation of whLDEFnote inappropriate default (deprecated, use ASHPX) whType=SMALLSTORAGE, whHeatSrc=ASHPX, whASHPType=GENERIC, (req'd), Tank losses Overall efficiency whType=SMALLSTORAGE, whHeatSrc=RESISTANCEX, (req'd), Tank losses Note: maximum whEF=0.98. whType=SMALLINSTANTANEOUS, whHeatSrc=RESISTANCE or FUEL, 0.82, Annual efficiency = whEF*0.92 - Any other, (unused)", True) -}} - -{{ - member_table({ - "units": "", - "legal_range": "$>$ 0 *Caution: maximum not checked. Unrealistic values will cause runtime errors and/or invalid results*", - "default": "*See above*", - "required": "*See above*", - "variability": "constant" - }) -}} + Any other, (unused) +END +%> -### whLDEF +<%= member_table( + units: "", + legal_range: "$>$ 0 *Caution: maximum not checked. Unrealistic values will cause runtime errors and/or invalid results*", + default: "*See above*", + required: "*See above*", + variability: "constant") + %> -Type: *float* +**whLDEF=*float*** Load-dependent energy factor for DHWHEATERs with whType=SMALLSTORAGE and whHeatSrc=FUEL or whHeatSrc=RESISTANCE. If not given, whLDEF is derived using a preliminary simulation activated via DHWSYS wsCalcMode=PRERUN. See RACM Appendix B. -{{ - member_table({ - "units": "", - "legal_range": "x $>$ 0", - "default": "Calculated via DHWSYS PreRun mechanism", - "required": "When whType = SMALLSTORAGE and PreRun not used", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "x $>$ 0", + default: "Calculated via DHWSYS PreRun mechanism", + required: "When whType = SMALLSTORAGE and PreRun not used", + variability: "constant") + %> -### whUEF - -Type: *float* +**whUEF=*float*** Water heater Uniform Energy Factor efficiency rating, used when whType=INSTANTANEOUSUEF. -{{ - member_table({ - "units": "", - "legal_range": "x $\\ge$ 0", - "default": "*none*", - "required": "when whType= INSTANTANEOUSUEF", - "variability": "constant" - }) -}} - -### whAnnualElec +<%= member_table( + units: "", + legal_range: "x $\\ge$ 0", + default: "*none*", + required: "when whType= INSTANTANEOUSUEF", + variability: "constant") + %> -Type: *float* +**whAnnualElec=*float*** Annual electricity use assumed in UEF rating derivation. Used when whType=INSTANTANEOUSUEF. -{{ - member_table({ - "units": "kWh", - "legal_range": "x $\\ge$ 0", - "default": "*none*", - "required": "when whType= INSTANTANEOUSUEF", - "variability": "constant" - }) -}} +<%= member_table( + units: "kWh", + legal_range: "x $\\ge$ 0", + default: "*none*", + required: "when whType= INSTANTANEOUSUEF", + variability: "constant") + %> -### whAnnualFuel - -Type: *float* +**whAnnualFuel=*float*** Annual fuel use assumd in UEF rating derivation, used when whType=INSTANTANEOUSUEF. -{{ - member_table({ - "units": "therms", - "legal_range": "x $\\ge$ 0", - "default": "*none*", - "required": "when whType= INSTANTANEOUSUEF", - "variability": "constant" - }) -}} - -### whRatedFlow +<%= member_table( + units: "therms", + legal_range: "x $\\ge$ 0", + default: "*none*", + required: "when whType= INSTANTANEOUSUEF", + variability: "constant") + %> -Type: *float* +**whRatedFlow=*float*** Maximum flow rate assumed in UEF rating derivation. Used when whType=INSTANTANEOUSUEF. -{{ - member_table({ - "units": "gpm", - "legal_range": "x $>$ 0", - "default": "*none*", - "required": "when whType= INSTANTANEOUSUEF", - "variability": "constant" - }) -}} +<%= member_table( + units: "gpm", + legal_range: "x $>$ 0", + default: "*none*", + required: "when whType= INSTANTANEOUSUEF", + variability: "constant") + %> -### whStbyElec - -Type: *float* +**whStbyElec=*float*** Instantaneous water heater standby power (electricity consumed when heater is not operating). Used when whType=INSTANTANEOUSUEF. -{{ - member_table({ - "units": "W", - "legal_range": "x $\\ge$ 0", - "default": "4", - "required": "No", - "variability": "constant" - }) -}} - -### whLoadCFwdF +<%= member_table( + units: "W", + legal_range: "x $\\ge$ 0", + default: "4", + required: "No", + variability: "constant") + %> -Type: *float* +**whLoadCFwdF=*float*** Instanteous water heater load carry forward factor -- approximate number of hours the heater is allowed to meet water heating demand that is unmet on a 1 minute basis, used when whType=INSTANTANEOUSUEF. -{{ - member_table({ - "units": "", - "legal_range": "x $\\ge$ 0", - "default": "1", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "x $\\ge$ 0", + default: "1", + required: "No", + variability: "constant") + %> -### whZone - -Type: *znName* +**whZone=*znName*** Name of zone where water heater is located, used only in detailed HPWH models (whHeatSrc=ASHPX or whHeatSrc=RESISTANCEX), otherwise no effect. Zone conditions are used for tank heat loss calculations. Heat losses from the DHWHEATER are included in the zone heat balance. whZone also provides the default for whASHPSrcZn (see below). whZone and whTEx cannot both be specified. -{{ - member_table({ - "units": "", - "legal_range": "name of a ZONE", - "default": "Not in a zone (heat losses discarded)", - "required": "No", - "variability": "constant" - }) -}} - -### whTEx +<%= member_table( + units: "", + legal_range: "name of a ZONE", + default: "Not in a zone (heat losses discarded)", + required: "No", + variability: "constant") + %> -Type: *float* +**whTEx=*float*** Water heater surround temperature, used only in detailed HPWH models (whHeatSrc=ASHPX or whHeatSrc=RESISTANCEX), otherwise no effect. When whTEx is specified, tank heat losses are calculated using whTEx and modify tank water temperatures, but the lost heat has no external effect. whZone and whTEx cannot both be specified. -{{ - member_table({ - "units": "^o^F", - "legal_range": "x $\\ge$ 0", - "default": "whZone air temperature if specified, else 70 ^o^F", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "^o^F", + legal_range: "x $\\ge$ 0", + default: "whZone air temperature if specified, else 70 ^o^F", + required: "No", + variability: "hourly") + %> -### whASHPType - -Type: *choice* +**whASHPType=*choice*** Air source heat pump type, valid only if whHeatSrc=ASHPX. These choices are supported by the detailed HPWH model. Except for Generic, all heater characteristics are set by HPWH based on whASHPType. -{{ csv_table("Choice,Specified type -Generic,General generic (parameterized by wh_EF and wh_vol) -AOSmithPHPT60,60 gallon Voltex -AOSmithPHPT80,80 gallon Voltex -AOSmithHPTU50,50 gallon AOSmith HPTU -AOSmithHPTU66,66 gallon AOSmith HPTU -AOSmithHPTU80,80 gallon AOSmith HPTU -AOSmithHPTU80DR,80 gallon AOSmith HPTU (demand reduction variant) -AOSmithCAHP120,120 gallon AOSmith -Sanden40,Sanden 40 gallon CO2 external heat pump -Sanden80,Sanden 80 gallon CO2 external heat pump -Sanden120,Sanden 120 gallon CO2 external heat pump -SandenGS3,Sanden GS3 compressor CO2 external -GE2012,2012 era GeoSpring -GE2014,2014 80 gal GE model run in the efficiency mode -GE2014_80DR,2014 80 gal GE model run in the efficiency mode (demand reduction variant) -GE2014StdMode,2014 50 gal GE run in standard mode -GE2014StdMode80,2014 80 gal GE run in standard mode -RheemHB50,newish Rheem (2014 model?) -RheemHBDR2250,50 gallon, 2250 W resistance Rheem HB Duct Ready -RheemHBDR4550,50 gallon, 4500 W resistance Rheem HB Duct Ready -RheemHBDR2265,65 gallon, 2250 W resistance Rheem HB Duct Ready -RheemHBDR4565,65 gallon, 4500 W resistance Rheem HB Duct Ready -RheemHBDR2280,80 gallon, 2250 W resistance Rheem HB Duct Ready -RheemHBDR4580,80 gallon, 4500 W resistance Rheem HB Duct Ready -Rheem2020Prem40,40 gallon, Rheem 2020 Premium -Rheem2020Prem50,50 gallon, Rheem 2020 Premium -Rheem2020Prem65,65 gallon, Rheem 2020 Premium -Rheem2020Prem80,80 gallon, Rheem 2020 Premium -Rheem2020Build40,40 gallon, Rheem 2020 Builder -Rheem2020Build50,50 gallon, Rheem 2020 Builder -Rheem2020Build65,65 gallon, Rheem 2020 Builder -Rheem2020Build80,80 gallon, Rheem 2020 Builder -RheemPlugInShared40,40 gal Rheem plug-in 120V shared circuit (no resistance elements) -RheemPlugInShared50,50 gal Rheem plug-in 120V shared circuit (no resistance elements) -RheemPlugInShared65,65 gal Rheem plug-in 120V shared circuit (no resistance elements) -RheemPlugInShared80,80 gal Rheem plug-in 120V shared circuit (no resistance elements) -RheemPlugInDedicated40,40 gal Rheem plug-in 120V dedicated circuit (no resistance elements) -RheemPlugInDedicated50,50 gal Rheem plug-in 120V dedicated circuit (no resistance elements) -Stiebel220E,Stiebel Eltron (2014 model?) -AOSmithSHPT50,AOSmith add'l models (added 3-24-2017) -AOSmithSHPT66,AOSmith add'l models (added 3-24-2017) -AOSmithSHPT80,AOSmith add'l models (added 3-24-2017) -GenericTier1,Generic Tier 1 -GenericTier2,Generic Tier 2 -GenericTier3,Generic Tier 3 -Generic,General generic (parameterized by EF and vol) -UEF2Generic,Experimental UEF=2 -WorstCaseMedium,UEF2Generic alias (supports pre-existing test cases) -BasicIntegrated,Typical integrated HPWH -ResTank,Resistance heater (no compressor). Superceded by whHeatSrc=RESITANCEX -ResTankNoUA,Resistance heater (no compressor) with no tank losses. Superseded by whHeatSrc=RESISTANCEX. -AOSmithHPTU80DR,80 gallon AOSmith HPTU with fixed backup setpoint (experimental for demand response testing) -AOSmithSHPT50,50 gal AOSmith SHPT -AOSmithSHPT66,66 gal AOSmith SHPT -AOSmithSHPT80,80 gal AOSmith SHPT -AOSmithHPTS40,40 gal AOSmith HPTS -AOSmithHPTS50,50 gal AOSmith HPTS -AOSmithHPTS66,66 gal AOSmith HPTS -AOSmithHPTS80,80 gal AOSmith HPTS -ColmacCxV5_SP,Colmac CxA-xx modular external HPWHs (single pass mode) -ColmacCxA10_SP,Colmac CxA-xx modular external HPWHs (single pass mode) -ColmacCxA15_SP,Colmac CxA-xx modular external HPWHs (single pass mode) -ColmacCxA20_SP,Colmac CxA-xx modular external HPWHs (single pass mode) -ColmacCxA25_SP,Colmac CxA-xx modular external HPWHs (single pass mode) -ColmacCxA30_SP,Colmac CxA-xx modular external HPWHs (single pass mode) -ColmacCxV5_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) -ColmacCxA10_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) -ColmacCxA15_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) -ColmacCxA20_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) -ColmacCxA25_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) -ColmacCxA30_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) -NyleC25A_SP,Nyle Cxx external HPWHs (SP = single pass mode) -NyleC60A_SP,Nyle Cxx external HPWHs (SP = single pass mode) -NyleC90A_SP,Nyle Cxx external HPWHs (SP = single pass mode) -NyleC125A_SP,Nyle Cxx external HPWHs (SP = single pass mode) -NyleC185A_SP,Nyle Cxx external HPWHs (SP = single pass mode) -NyleC250A_SP,Nyle Cxx external HPWHs (SP = single pass mode) -NyleC60A_CWP_SP,Nyle Cxx external SP HPWHs with cold weather package -NyleC90A_CWP_SP,Nyle Cxx external SP HPWHs with cold weather package -NyleC125A_CWP_SP,Nyle Cxx external SP HPWHs with cold weather package -NyleC185A_CWP_SP,Nyle Cxx external SP HPWHs with cold weather package -NyleC250A_CWP_SP,Nyle Cxx external SP HPWHs with cold weather package -NyleC60A_MP,Nyle Cxx external HPWHs (MP = multi-pass mode) -NyleC90A_MP,Nyle Cxx external HPWHs (MP = multi-pass mode) -NyleC125A_MP,Nyle Cxx external HPWHs (MP = multi-pass mode) -NyleC185A_MP,Nyle Cxx external HPWHs (MP = multi-pass mode) -NyleC250A_MP,Nyle Cxx external HPWHs (MP = multi-pass mode) -NyleC60A_CWP_MP,Nyle Cxx external MP HPWHs w/ cold weather package -NyleC90A_CWP_MP,Nyle Cxx external MP HPWHs w/ cold weather package -NyleC125A_CWP_MP,Nyle Cxx external MP HPWHs w/ cold weather package -NyleC185A_CWP_MP,Nyle Cxx external MP HPWHs w/ cold weather package -NyleC250A_CWP_MP,Nyle Cxx external MP HPWHs w/ cold weather package -Rheem_HPHD60HNU_MP,Rheem HPHD60 MP external MP HPWHs -Rheem_HPHD60VNU_MP,Rheem HPHD60 MP external MP HPWHs -Rheem_HPHD135HNU_MP,Rheem HPHD135 MP external MP HPWHs -Rheem_HPHD135VNU_MP,Rheem HPHD135 MP external MP HPWHs -Scalable_SP,single pass scalable type for autosized standard design -Scalable_MP,multipass scalable type for autosized standard design -AquaThermAire,Villara AquaThermAire HPWH -GenericUEF217,65-gal tank meeting Federal standard minimum requirement -AWHSTier4Generic40,Any 40-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements -AWHSTier4Generic50,Any 50-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements -AWHSTier4Generic65,Any 65-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements -AWHSTier4Generic80,Any 80-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements -BradfordWhiteAeroThermRE2H50,Bradford White 50-gal AeroTherm2023 -BradfordWhiteAeroThermRE2H65,Bradford White 65-gal AeroTherm2023 -BradfordWhiteAeroThermRE2H80,Bradford White 80-gal AeroTherm2023 -LG_APHWC50,LG 50-gal integrated HPWH -LG_APHWC80,LG 580-gal integrated HPWH", True) -}} - -{{ - member_table({ - "units": "", - "legal_range": "*Codes listed above*", - "default": "*none*", - "required": "When whHeatSrc=ASHPX", - "variability": "constant" - }) -}} - -### whASHPSrcZn - -Type: *znName* +<%= csv_table(< true) +"Choice","Specified type" +"Generic","General generic (parameterized by wh_EF and wh_vol)" +"AOSmithPHPT60","60 gallon Voltex" +"AOSmithPHPT80","80 gallon Voltex" +"AOSmithHPTU50","50 gallon AOSmith HPTU" +"AOSmithHPTU66","66 gallon AOSmith HPTU" +"AOSmithHPTU80","80 gallon AOSmith HPTU" +"AOSmithHPTU80DR","80 gallon AOSmith HPTU (demand reduction variant)" +"AOSmithCAHP120","120 gallon AOSmith" +"Sanden40","Sanden 40 gallon CO2 external heat pump" +"Sanden80","Sanden 80 gallon CO2 external heat pump" +"Sanden120","Sanden 120 gallon CO2 external heat pump" +"SandenGS3","Sanden GS3 compressor CO2 external" +"GE2012","2012 era GeoSpring" +"GE2014","2014 80 gal GE model run in the efficiency mode" +"GE2014_80DR","2014 80 gal GE model run in the efficiency mode (demand reduction variant)" +"GE2014StdMode","2014 50 gal GE run in standard mode" +"GE2014StdMode80","2014 80 gal GE run in standard mode" +"RheemHB50","newish Rheem (2014 model?)" +"RheemHBDR2250","50 gallon, 2250 W resistance Rheem HB Duct Ready" +"RheemHBDR4550","50 gallon, 4500 W resistance Rheem HB Duct Ready" +"RheemHBDR2265","65 gallon, 2250 W resistance Rheem HB Duct Ready" +"RheemHBDR4565","65 gallon, 4500 W resistance Rheem HB Duct Ready" +"RheemHBDR2280","80 gallon, 2250 W resistance Rheem HB Duct Ready" +"RheemHBDR4580","80 gallon, 4500 W resistance Rheem HB Duct Ready" +"Rheem2020Prem40","40 gallon, Rheem 2020 Premium" +"Rheem2020Prem50","50 gallon, Rheem 2020 Premium" +"Rheem2020Prem65","65 gallon, Rheem 2020 Premium" +"Rheem2020Prem80","80 gallon, Rheem 2020 Premium" +"Rheem2020Build40","40 gallon, Rheem 2020 Builder" +"Rheem2020Build50","50 gallon, Rheem 2020 Builder" +"Rheem2020Build65","65 gallon, Rheem 2020 Builder" +"Rheem2020Build80","80 gallon, Rheem 2020 Builder" +"RheemPlugInShared40","40 gal Rheem plug-in 120V shared circuit (no resistance elements)" +"RheemPlugInShared50","50 gal Rheem plug-in 120V shared circuit (no resistance elements)" +"RheemPlugInShared65","65 gal Rheem plug-in 120V shared circuit (no resistance elements)" +"RheemPlugInShared80","80 gal Rheem plug-in 120V shared circuit (no resistance elements)" +"RheemPlugInDedicated40","40 gal Rheem plug-in 120V dedicated circuit (no resistance elements)" +"RheemPlugInDedicated50","50 gal Rheem plug-in 120V dedicated circuit (no resistance elements)" +"Stiebel220E","Stiebel Eltron (2014 model?)" +"AOSmithSHPT50","AOSmith add'l models (added 3-24-2017)" +"AOSmithSHPT66","AOSmith add'l models (added 3-24-2017)" +"AOSmithSHPT80","AOSmith add'l models (added 3-24-2017)" +"GenericTier1","Generic Tier 1" +"GenericTier2","Generic Tier 2" +"GenericTier3","Generic Tier 3" +"Generic","General generic (parameterized by EF and vol)" +"UEF2Generic","Experimental UEF=2" +"WorstCaseMedium","UEF2Generic alias (supports pre-existing test cases)" +"BasicIntegrated","Typical integrated HPWH" +"ResTank","Resistance heater (no compressor). Superceded by whHeatSrc=RESITANCEX" +"ResTankNoUA","Resistance heater (no compressor) with no tank losses. Superseded by whHeatSrc=RESISTANCEX." +"AOSmithHPTU80DR","80 gallon AOSmith HPTU with fixed backup setpoint (experimental for demand response testing)" +"AOSmithSHPT50","50 gal AOSmith SHPT" +"AOSmithSHPT66","66 gal AOSmith SHPT" +"AOSmithSHPT80","80 gal AOSmith SHPT" +"AOSmithHPTS40","40 gal AOSmith HPTS" +"AOSmithHPTS50","50 gal AOSmith HPTS" +"AOSmithHPTS66","66 gal AOSmith HPTS" +"AOSmithHPTS80","80 gal AOSmith HPTS" +"ColmacCxV5_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" +"ColmacCxA10_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" +"ColmacCxA15_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" +"ColmacCxA20_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" +"ColmacCxA25_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" +"ColmacCxA30_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" +"ColmacCxV5_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" +"ColmacCxA10_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" +"ColmacCxA15_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" +"ColmacCxA20_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" +"ColmacCxA25_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" +"ColmacCxA30_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" +"NyleC25A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" +"NyleC60A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" +"NyleC90A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" +"NyleC125A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" +"NyleC185A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" +"NyleC250A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" +"NyleC60A_CWP_SP","Nyle Cxx external SP HPWHs with cold weather package" +"NyleC90A_CWP_SP","Nyle Cxx external SP HPWHs with cold weather package" +"NyleC125A_CWP_SP","Nyle Cxx external SP HPWHs with cold weather package" +"NyleC185A_CWP_SP","Nyle Cxx external SP HPWHs with cold weather package" +"NyleC250A_CWP_SP","Nyle Cxx external SP HPWHs with cold weather package" +"NyleC60A_MP","Nyle Cxx external HPWHs (MP = multi-pass mode)" +"NyleC90A_MP","Nyle Cxx external HPWHs (MP = multi-pass mode)" +"NyleC125A_MP","Nyle Cxx external HPWHs (MP = multi-pass mode)" +"NyleC185A_MP","Nyle Cxx external HPWHs (MP = multi-pass mode)" +"NyleC250A_MP","Nyle Cxx external HPWHs (MP = multi-pass mode)" +"NyleC60A_CWP_MP","Nyle Cxx external MP HPWHs w/ cold weather package" +"NyleC90A_CWP_MP","Nyle Cxx external MP HPWHs w/ cold weather package" +"NyleC125A_CWP_MP","Nyle Cxx external MP HPWHs w/ cold weather package" +"NyleC185A_CWP_MP","Nyle Cxx external MP HPWHs w/ cold weather package" +"NyleC250A_CWP_MP","Nyle Cxx external MP HPWHs w/ cold weather package" +"Rheem_HPHD60HNU_MP","Rheem HPHD60 MP external MP HPWHs" +"Rheem_HPHD60VNU_MP","Rheem HPHD60 MP external MP HPWHs" +"Rheem_HPHD135HNU_MP","Rheem HPHD135 MP external MP HPWHs" +"Rheem_HPHD135VNU_MP","Rheem HPHD135 MP external MP HPWHs" +"Scalable_SP","single pass scalable type for autosized standard design" +"Scalable_MP","multipass scalable type for autosized standard design" +"AquaThermAire","Villara AquaThermAire HPWH" +"GenericUEF217","65-gal tank meeting Federal standard minimum requirement" +"AWHSTier4Generic40","Any 40-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements" +"AWHSTier4Generic50","Any 50-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements" +"AWHSTier4Generic65","Any 65-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements" +"AWHSTier4Generic80","Any 80-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements" +"BradfordWhiteAeroThermRE2H50","Bradford White 50-gal AeroTherm2023" +"BradfordWhiteAeroThermRE2H65","Bradford White 65-gal AeroTherm2023" +"BradfordWhiteAeroThermRE2H80","Bradford White 80-gal AeroTherm2023" +"LG_APHWC50","LG 50-gal integrated HPWH" +"LG_APHWC80","LG 580-gal integrated HPWH" +END +%> + +<%= member_table( + units: "", + legal_range: "*Codes listed above*", + default: "*none*", + required: "When whHeatSrc=ASHPX", + variability: "constant") + %> + +**whASHPSrcZn=*znName*** Name of zone that serves as heat pump heat source used when whHeatSrc=ASHPX. Heat removed from the zone is added to the heated water and is included in zone heat balance (that is, heat pump operation cools the zone). whASHPSrcZn and whASHPSrcT cannot both be specified. -{{ - member_table({ - "units": "", - "legal_range": "name of a ZONE", - "default": "whZoneIf no zone is specified by input or default, heat extracted by ASHP has no effect.", - "required": "No", - "variability": "constant" - }) -}} - -### whASHPSrcT +<%= member_table( + units: "", + legal_range: "name of a ZONE", + default: "whZoneIf no zone is specified by input or default, heat extracted by ASHP has no effect.", + required: "No", + variability: "constant") + %> -Type: *float* +**whASHPSrcT=*float*** Heat pump source air temperature used when whHeatSrc=ASHPX. Heat removed from this source is added to the heated water but has no other effect. @@ -487,255 +412,192 @@ The logic to determine the temperature of the heat pump source air is: To model a heat pump that uses outdoor air as its heat source, omit whASHPSrcZn and specify whASHPSrcT = $tDbO. -{{ - member_table({ - "units": "^o^F", - "legal_range": "x $\\ge$ 0", - "default": "70 ^o^F (used only when whASHPSrcZn and whZone not specified)", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "^o^F", + legal_range: "x $\\ge$ 0", + default: "70 ^o^F (used only when whASHPSrcZn and whZone not specified)", + required: "No", + variability: "hourly") + %> -### whASHPResUse - -Type: *float* +**whASHPResUse=*float*** Specifies activation temperature difference for resistance heating, used only when whHeatSrc=ASHPX and whASHPType=GENERIC. Refer to HPWH engineering documentation for model details. -{{ - member_table({ - "units": "^o^C", - "legal_range": "x $\\ge$ 0", - "default": "7.22", - "required": "No", - "variability": "constant" - }) -}} - -### whResHtPwr +<%= member_table( + units: "^o^C", + legal_range: "x $\\ge$ 0", + default: "7.22", + required: "No", + variability: "constant") + %> -Type: *float* +**whResHtPwr=*float*** Specifies resistance upper element power, used only with whHeatSrc=RESISTANCEX. -{{ - member_table({ - "units": "W", - "legal_range": "x $\\ge$ 0", - "default": "4500", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "W", + legal_range: "x $\\ge$ 0", + default: "4500", + required: "No", + variability: "constant") + %> -### whResHtPwr2 - -Type: *float* +**whResHtPwr2=*float*** Specifies resistance lower element power, used only with whHeatSrc=RESISTANCEX. -{{ - member_table({ - "units": "W", - "legal_range": "x $\\ge$ 0", - "default": "whResHtPwr", - "required": "No", - "variability": "constant" - }) -}} - -### whUA +<%= member_table( + units: "W", + legal_range: "x $\\ge$ 0", + default: "whResHtPwr", + required: "No", + variability: "constant") + %> -Type: *float* +**whUA=*float*** HPWH-type total UA (not per tank) -{{ - member_table({ - "units": "Btuh/F", - "legal_range": "x $\\geq$ 0", - "default": "HPWH default", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "Btuh/F", + legal_range: "x $\\geq$ 0", + default: "HPWH default", + required: "No", + variability: "constant") %> -### whInsulR - -Type: *float* +**whInsulR=*float*** Tank insulation resistance for heat pump water heater. -{{ - member_table({ - "units": "hr-F/Btuh", - "legal_range": "x $>$ 0", - "default": "-1", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "hr-F/Btuh", + legal_range: "x $>$ 0", + default: "-1", + required: "No", + variability: "constant") %> **whInHtSupply=*float***\ -### whInHtLoopRet - -Type: *float* +**whInHtLoopRet=*float*** Fractional tank height of inlets for supply water and DHWLOOP return, used only with HPWH types (whHeatSrc=RESISTANCEX or whHeatSrc=ASHPX). 0 indicates the bottom of the water heater tank and 1 specifies the top. Inlet height influences tank layer mixing and can impact heat pump COP and/or heating activation frequency. -{{ - member_table({ - "units": "", - "legal_range": "0 $\\le$ x $\\le$ 1", - "default": "HPWH default (0?) ", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $\\le$ x $\\le$ 1", + default: "HPWH default (0?) ", + required: "No", + variability: "constant") + %> -### whtankCount - -Type: *float* +**whtankCount=*float*** Number of storage tanks per DHWHEATER, re built-up whType=Builtup, does *not* reflect wh_mult (wh_mult=2, wh_tankCount=3 -> 6 tanks). -{{ - member_table({ - "units": "#", - "legal_range": "x $\\geq$ 1", - "default": "1", - "required": "No", - "variability": "constant" - }) -}} - -### whEff +<%= member_table( + units: "#", + legal_range: "x $\\geq$ 1", + default: "1", + required: "No", + variability: "constant") %> -Type: *float* +**whEff=*float*** Water heating efficiency, used in modeling whType=LARGESTORAGE and whType=LARGEINSTANTANEOUS. -{{ - member_table({ - "units": "", - "legal_range": "0 $<$ whEff $\\leq$ 1", - "default": ".82", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "0 $<$ whEff $\\leq$ 1", + default: ".82", + required: "No", + variability: "constant") + %> -### whSBL - -Type: *float* +**whSBL=*float*** Standby loss, used in modeling whType=LARGESTORAGE. -{{ - member_table({ - "units": "Btuh", - "legal_range": "x $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "constant" - }) -}} - -### whPilotPwr +<%= member_table( + units: "Btuh", + legal_range: "x $\\ge$ 0", + default: "0", + required: "No", + variability: "constant") + %> -Type: *float* +**whPilotPwr=*float*** Pilot light consumption, included in fuel energy use of DHWHEATERs with whHeatSrc=FUEL. -{{ - member_table({ - "units": "Btuh", - "legal_range": "x $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "Btuh", + legal_range: "x $\\ge$ 0", + default: "0", + required: "No", + variability: "hourly") + %> -### whParElec - -Type: *float* +**whParElec=*float*** Parasitic electricity power, included in electrical energy use of all DHWHEATERs. -{{ - member_table({ - "units": "W", - "legal_range": "x $\\ge$ 0", - "default": "0", - "required": "No", - "variability": "hourly" - }) -}} +<%= member_table( + units: "W", + legal_range: "x $\\ge$ 0", + default: "0", + required: "No", + variability: "hourly") + %> **whFAdjElec=*float***\ -### whFAdjFuel - -Type: *float* +**whFAdjFuel=*float*** Water heater energy use modifiers. Multiplies calculated use of electricity (whFAdjElec) and fuel (whFAdjFuel). All components of energy use -- primary, backup, XBU (extra backup), and other auxiliary -- are modified before they are accumulated to whElecMtr and whFuelMtr. -{{ - member_table({ - "units": "", - "legal_range": "$\\ge$ 0", - "default": "1", - "required": "No", - "variability": "subhourly" - }) -}} +<%= member_table( + units: "", + legal_range: "$\\ge$ 0", + default: "1", + required: "No", + variability: "subhourly") + %> -### whElecMtr - -Type: *mtrName* +**whElecMtr=*mtrName*** Name of METER object, if any, by which DHWHEATER electrical energy use is recorded (under end use DHW). -{{ - member_table({ - "units": "", - "legal_range": "*name of a METER*", - "default": "*Parent DHWSYS wsElecMtr*", - "required": "No", - "variability": "constant" - }) -}} - -### whxBUEndUse +<%= member_table( + units: "", + legal_range: "*name of a METER*", + default: "*Parent DHWSYS wsElecMtr*", + required: "No", + variability: "constant") + %> -Type: *choice* +**whxBUEndUse=*choice*** Specifies the whElecMtr end use, if any, to which extra backup energy is accumulated. In some water heater types, extra backup energy is modeled to maintain output temperature at wsTUse. By default, extra backup energy is included in end use dhwBU. whxBUEndUse allows specification of an alternative end use to which extra backup energy is accumulated. -{{ - member_table({ - "units": "", - "legal_range": "*end use code* ", - "default": "(extra backup accums to dhwBU)", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "", + legal_range: "*end use code* ", + default: "(extra backup accums to dhwBU)", + required: "No", + variability: "constant") + %> **whFuelMtr =*mtrName*** Name of METER object, if any, by which DHWHEATER fuel energy use is recorded (under end use DHW). -{{ - member_table({ - "units": "*name of a METER*", - "legal_range": "*Parent DHWSYS wsFuelMtr*", - "default": "", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "*name of a METER*", + legal_range: "*Parent DHWSYS wsFuelMtr*", + default: "", + required: "No", + variability: "constant") + %> **whTankTInit =*comma-separated list of 12 floats*** @@ -745,30 +607,26 @@ whTankTInit is allowed only for HPWH-based types (whHeatSrc=ASHPX or whHeatSrc=R whTankTInit is intended for use in empirical validation studies where the initial tank state needs to match measured data. whTankTInit should not be generally used. In the absence of whTankTInit, layer temperatures are initialized to the water heater setpoint inherited from the parent DHWSYS. -{{ - member_table({ - "units": "^o^F", - "legal_range": "x $\\gt$ 0", - "default": "", - "required": "No", - "variability": "constant" - }) -}} +<%= member_table( + units: "^o^F", + legal_range: "x $\\gt$ 0", + default: "", + required: "No", + variability: "constant") + %> -### endDHWHEATER +**endDHWHEATER** Optionally indicates the end of the DHWHEATER definition. -{{ - member_table({ - "units": "", - "legal_range": "x $\\geq$ 0", - "default": "*none*", - "required": "No", - "variability": "" - }) -}} +<%= member_table( + units: "", + legal_range: "x $\\geq$ 0", + default: "*none*", + required: "No", + variability: "") + %> **Related Probes:** -- @[DHWHeater][p_dhwheater] +- @[DHWHeater](#p_dhwheater) From d4aa30df076e5d93ff3420f9c14ce3430bf2b46e Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 5 May 2025 16:20:56 -0600 Subject: [PATCH 037/117] Translate existing links to autorefs syntax. --- doc/src/docs/input-data/afmeter.md | 4 +- doc/src/docs/input-data/airhandler.md | 4 +- doc/src/docs/input-data/battery.md | 2 +- doc/src/docs/input-data/boiler.md | 2 +- doc/src/docs/input-data/chiller.md | 2 +- doc/src/docs/input-data/construction.md | 2 +- doc/src/docs/input-data/coolplant.md | 2 +- doc/src/docs/input-data/descond.md | 2 +- doc/src/docs/input-data/dhwdayuse.md | 2 +- doc/src/docs/input-data/dhwloop.md | 2 +- doc/src/docs/input-data/dhwloopbranch.md | 2 +- doc/src/docs/input-data/dhwlooppump.md | 2 +- doc/src/docs/input-data/dhwloopseg.md | 2 +- doc/src/docs/input-data/dhwmeter.md | 4 +- doc/src/docs/input-data/dhwpump.md | 2 +- doc/src/docs/input-data/dhwsys.md | 2 +- doc/src/docs/input-data/dhwtank.md | 2 +- doc/src/docs/input-data/dhwuse.md | 4 +- doc/src/docs/input-data/doas.md | 2 +- doc/src/docs/input-data/door.md | 6 +- doc/src/docs/input-data/ductseg.md | 4 +- doc/src/docs/input-data/export.md | 2 +- doc/src/docs/input-data/exportcol.md | 2 +- doc/src/docs/input-data/exportfile.md | 2 +- doc/src/docs/input-data/gain.md | 2 +- doc/src/docs/input-data/glazetype.md | 2 +- doc/src/docs/input-data/heatplant.md | 2 +- doc/src/docs/input-data/holiday.md | 2 +- doc/src/docs/input-data/importfile.md | 8 +-- doc/src/docs/input-data/index.md | 2 +- doc/src/docs/input-data/izxfer.md | 2 +- doc/src/docs/input-data/layer.md | 2 +- doc/src/docs/input-data/loadmeter.md | 2 +- doc/src/docs/input-data/material.md | 2 +- doc/src/docs/input-data/meter.md | 2 +- doc/src/docs/input-data/perimeter.md | 4 +- doc/src/docs/input-data/pvarray.md | 8 +-- doc/src/docs/input-data/report.md | 2 +- doc/src/docs/input-data/reportcol.md | 2 +- doc/src/docs/input-data/reportfile.md | 2 +- doc/src/docs/input-data/rsys.md | 6 +- doc/src/docs/input-data/sgdist.md | 2 +- doc/src/docs/input-data/shade.md | 2 +- doc/src/docs/input-data/shadex.md | 8 +-- doc/src/docs/input-data/surface.md | 6 +- doc/src/docs/input-data/terminal.md | 4 +- doc/src/docs/input-data/top-members.md | 12 ++-- doc/src/docs/input-data/towerplant.md | 2 +- doc/src/docs/input-data/window.md | 4 +- doc/src/docs/input-data/zone.md | 4 +- doc/src/docs/input-structure.md | 72 ++++++++++++------------ doc/src/docs/introduction.md | 12 ++-- doc/src/docs/operation.md | 14 ++--- doc/src/shared/dhwheater-doc.md | 2 +- 54 files changed, 129 insertions(+), 129 deletions(-) diff --git a/doc/src/docs/input-data/afmeter.md b/doc/src/docs/input-data/afmeter.md index d9097731a..d1d305423 100644 --- a/doc/src/docs/input-data/afmeter.md +++ b/doc/src/docs/input-data/afmeter.md @@ -8,7 +8,7 @@ If any AFMETERs are defined, an additional AFMETER "sum_of_AFMETERs" is automati Note that *only* AirNet flows are recorded. -AFMETER results can be REPORTed using rpType=AFMTR (or EXPORTed using exType=AFMTR). See [Air Flow Meter Report](#air-flow-meter-report). +AFMETER results can be REPORTed using rpType=AFMTR (or EXPORTed using exType=AFMTR). See [Air Flow Meter Report][air-flow-meter-report]. **afMtrName** @@ -37,4 +37,4 @@ Indicates the end of the meter definition. Alternatively, the end of the meter d **Related Probes:** -- @[afmeter](#p_afmeter) +- @[afmeter][p_afmeter] diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index e49ea685f..36bc3f630 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -1789,5 +1789,5 @@ variability: "constant") %> **Related Probes:** -- @[airHandler](#p_airhandler) -- @[ahRes](#p_ahres) (accumulated results) +- @[airHandler][p_airhandler] +- @[ahRes][p_ahres] (accumulated results) diff --git a/doc/src/docs/input-data/battery.md b/doc/src/docs/input-data/battery.md index 8377f5130..7d358d844 100644 --- a/doc/src/docs/input-data/battery.md +++ b/doc/src/docs/input-data/battery.md @@ -185,4 +185,4 @@ SOE **Related Probes:** -- @[battery](#p_battery) +- @[battery][p_battery] diff --git a/doc/src/docs/input-data/boiler.md b/doc/src/docs/input-data/boiler.md index d5b04fa21..8deb9d6af 100644 --- a/doc/src/docs/input-data/boiler.md +++ b/doc/src/docs/input-data/boiler.md @@ -248,4 +248,4 @@ Optionally indicates the end of the boiler definition. Alternatively, the end of **Related Probes:** -- @[boiler](#p_boiler) +- @[boiler][p_boiler] diff --git a/doc/src/docs/input-data/chiller.md b/doc/src/docs/input-data/chiller.md index 1a34226b2..ca0d43cd5 100644 --- a/doc/src/docs/input-data/chiller.md +++ b/doc/src/docs/input-data/chiller.md @@ -363,4 +363,4 @@ Optionally indicates the end of the CHILLER definition. Alternatively, the end o **Related Probes:** -- @[chiller](#p_chiller) +- @[chiller][p_chiller] diff --git a/doc/src/docs/input-data/construction.md b/doc/src/docs/input-data/construction.md index 4e773de7e..34a4621ae 100644 --- a/doc/src/docs/input-data/construction.md +++ b/doc/src/docs/input-data/construction.md @@ -40,4 +40,4 @@ Optional to indicates the end of the CONSTRUCTION. Alternatively, the end of the **Related Probes:** -- @[construction](#p_construction) +- @[construction][p_construction] diff --git a/doc/src/docs/input-data/coolplant.md b/doc/src/docs/input-data/coolplant.md index 99d273bcd..912ba44c6 100644 --- a/doc/src/docs/input-data/coolplant.md +++ b/doc/src/docs/input-data/coolplant.md @@ -106,4 +106,4 @@ Optionally indicates the end of the COOLPLANT definition. Alternatively, the end **Related Probes:** -- @[coolPlant](#p_coolplant) +- @[coolPlant][p_coolplant] diff --git a/doc/src/docs/input-data/descond.md b/doc/src/docs/input-data/descond.md index 15b95eace..a775030b9 100644 --- a/doc/src/docs/input-data/descond.md +++ b/doc/src/docs/input-data/descond.md @@ -1,6 +1,6 @@ # DESCOND -Specifies conditions for a cooling design day. When referenced in TOP coolDsCond (see [TOP Autosizing](#top-autosizing)), DESCOND members are used to generate a 24 hour design day used during cooling autosizing. Note that coolDsCond can reference more than one DESCOND, allowing multiple design conditions to be used for autosizing. For example, both summer and fall days could be specified to ensure a range of sun angles are considered. Any DESCONDs that are not referenced in coolDsCond have no effect. +Specifies conditions for a cooling design day. When referenced in TOP coolDsCond (see [TOP Autosizing][top-autosizing]), DESCOND members are used to generate a 24 hour design day used during cooling autosizing. Note that coolDsCond can reference more than one DESCOND, allowing multiple design conditions to be used for autosizing. For example, both summer and fall days could be specified to ensure a range of sun angles are considered. Any DESCONDs that are not referenced in coolDsCond have no effect. **desCondName** diff --git a/doc/src/docs/input-data/dhwdayuse.md b/doc/src/docs/input-data/dhwdayuse.md index 32bccc406..b0ceee926 100644 --- a/doc/src/docs/input-data/dhwdayuse.md +++ b/doc/src/docs/input-data/dhwdayuse.md @@ -86,4 +86,4 @@ Indicates the end of the DHWDAYUSE definition. endDHWDAYUSE should follow all c **Related Probes:** -- @[DHWDayUse](#p_dhwdayuse) +- @[DHWDayUse][p_dhwdayuse] diff --git a/doc/src/docs/input-data/dhwloop.md b/doc/src/docs/input-data/dhwloop.md index adfbdb9e4..12f3edf21 100644 --- a/doc/src/docs/input-data/dhwloop.md +++ b/doc/src/docs/input-data/dhwloop.md @@ -114,4 +114,4 @@ Optionally indicates the end of the DHWLOOP definition. **Related Probes:** -- @[DHWLoop](#p_dhwloop) +- @[DHWLoop][p_dhwloop] diff --git a/doc/src/docs/input-data/dhwloopbranch.md b/doc/src/docs/input-data/dhwloopbranch.md index 1e6050e70..61249cc75 100644 --- a/doc/src/docs/input-data/dhwloopbranch.md +++ b/doc/src/docs/input-data/dhwloopbranch.md @@ -191,4 +191,4 @@ Optionally indicates the end of the DHWLOOPBRANCH definition. **Related Probes:** -- @[DHWLoopBranch](#p_dhwloopbranch) +- @[DHWLoopBranch][p_dhwloopbranch] diff --git a/doc/src/docs/input-data/dhwlooppump.md b/doc/src/docs/input-data/dhwlooppump.md index 0ee89a820..e7bfe62c7 100644 --- a/doc/src/docs/input-data/dhwlooppump.md +++ b/doc/src/docs/input-data/dhwlooppump.md @@ -76,4 +76,4 @@ Optionally indicates the end of the DHWPUMP definition. **Related Probes:** -- @[DHWLoopPump](#p_dhwlooppump) +- @[DHWLoopPump][p_dhwlooppump] diff --git a/doc/src/docs/input-data/dhwloopseg.md b/doc/src/docs/input-data/dhwloopseg.md index 3b91b3077..0324ac7bc 100644 --- a/doc/src/docs/input-data/dhwloopseg.md +++ b/doc/src/docs/input-data/dhwloopseg.md @@ -130,4 +130,4 @@ Optionally indicates the end of the DHWLOOPSEG definition. **Related Probes:** -- @[DHWLoopSeg](#p_dhwloopseg) +- @[DHWLoopSeg][p_dhwloopseg] diff --git a/doc/src/docs/input-data/dhwmeter.md b/doc/src/docs/input-data/dhwmeter.md index 9b3e426f6..60fdabcca 100644 --- a/doc/src/docs/input-data/dhwmeter.md +++ b/doc/src/docs/input-data/dhwmeter.md @@ -13,7 +13,7 @@ DHWMETERs account for water use in the following pre-defined end uses. The abbr - Clothes washer (CWashr) - Dishwasher (DWashr) -[DHWSYS](#dhwsys) items wsWHhwMtr and wsFXhwMtr specify the DHWMETER(s) to which water consumption is accumulated. +[DHWSYS][dhwsys] items wsWHhwMtr and wsFXhwMtr specify the DHWMETER(s) to which water consumption is accumulated. **dhwMtrName** @@ -30,4 +30,4 @@ Name of meter: required for assigning water uses to the DHWMETER. **Related Probes:** -- @[DHWmeter](#p_dhwmeter) +- @[DHWmeter][p_dhwmeter] diff --git a/doc/src/docs/input-data/dhwpump.md b/doc/src/docs/input-data/dhwpump.md index d019fdb42..4edcf41d2 100644 --- a/doc/src/docs/input-data/dhwpump.md +++ b/doc/src/docs/input-data/dhwpump.md @@ -64,4 +64,4 @@ Optionally indicates the end of the DHWPUMP definition. **Related Probes:** -- @[DHWPump](#p_dhwpump) +- @[DHWPump][p_dhwpump] diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index b51af6e90..f5172f102 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -813,4 +813,4 @@ Optionally indicates the end of the DHWSYS definition. **Related Probes:** -- @[DHWSys](#p_dhwsys) +- @[DHWSys][p_dhwsys] diff --git a/doc/src/docs/input-data/dhwtank.md b/doc/src/docs/input-data/dhwtank.md index 5ee16ac0f..808cf046e 100644 --- a/doc/src/docs/input-data/dhwtank.md +++ b/doc/src/docs/input-data/dhwtank.md @@ -127,4 +127,4 @@ Optionally indicates the end of the DHWTANK definition. **Related Probes:** -- @[DHWTank](#p_dhwtank) +- @[DHWTank][p_dhwtank] diff --git a/doc/src/docs/input-data/dhwuse.md b/doc/src/docs/input-data/dhwuse.md index 218301047..3124efe6a 100644 --- a/doc/src/docs/input-data/dhwuse.md +++ b/doc/src/docs/input-data/dhwuse.md @@ -81,7 +81,7 @@ Heat recovery effectiveness, allows simple modeling of heat recovery devices suc If non-0 (evaluated hourly), hot water use is reduced based on wuTemp, DHWSYS wsTUse, and DHWSYS wsTInlet. DHWHEATREC(s), if any, are ignored for this use. wuTemp must be specified. -If 0, detailed heat recovery modeling *may* apply, see [DHWHEATREC](#dhwheatrec). +If 0, detailed heat recovery modeling *may* apply, see [DHWHEATREC][dhwheatrec]. <%= member_table( units: "", @@ -133,4 +133,4 @@ Optionally indicates the end of the DHWUSE definition. **Related Probes:** -- @[DHWUse](#p_dhwuse) +- @[DHWUse][p_dhwuse] diff --git a/doc/src/docs/input-data/doas.md b/doc/src/docs/input-data/doas.md index 89c16c284..1c25e336a 100644 --- a/doc/src/docs/input-data/doas.md +++ b/doc/src/docs/input-data/doas.md @@ -483,4 +483,4 @@ Indicates the end of the DOAS definition. Alternatively, the end of the DOAS def **Related Probes:** -- @[doas](#p_doas) \ No newline at end of file +- @[doas][p_doas] \ No newline at end of file diff --git a/doc/src/docs/input-data/door.md b/doc/src/docs/input-data/door.md index 9656b935e..38578b920 100644 --- a/doc/src/docs/input-data/door.md +++ b/doc/src/docs/input-data/door.md @@ -266,6 +266,6 @@ Indicates the end of the door definition. Alternatively, the end of the door def **Related Probes:** -- @[door](#p_door) -- @[xsurf](#p_xsurf) -- @[mass](#p_mass) +- @[door][p_door] +- @[xsurf][p_xsurf] +- @[mass][p_mass] diff --git a/doc/src/docs/input-data/ductseg.md b/doc/src/docs/input-data/ductseg.md index d77fd47da..0e28099fe 100644 --- a/doc/src/docs/input-data/ductseg.md +++ b/doc/src/docs/input-data/ductseg.md @@ -234,5 +234,5 @@ Optionally indicates the end of the DUCTSEG definition. **Related Probes:** -- @[ductSeg](#p_ductseg) -- @[izXfer](#p_izxfer) (generated as "\-DLkI" for supply or "\-DLkO" for return) +- @[ductSeg][p_ductseg] +- @[izXfer][p_izxfer] (generated as "\-DLkI" for supply or "\-DLkO" for return) diff --git a/doc/src/docs/input-data/export.md b/doc/src/docs/input-data/export.md index 9b44854c3..f77ffed63 100644 --- a/doc/src/docs/input-data/export.md +++ b/doc/src/docs/input-data/export.md @@ -235,4 +235,4 @@ Optionally indicates the end of the export definition. Alternatively, the end of **Related Probes:** -- @[export](#p_export) +- @[export][p_export] diff --git a/doc/src/docs/input-data/exportcol.md b/doc/src/docs/input-data/exportcol.md index d9a6e0e34..59b1f56a5 100644 --- a/doc/src/docs/input-data/exportcol.md +++ b/doc/src/docs/input-data/exportcol.md @@ -102,4 +102,4 @@ Optionally indicates the end of the EXPORTCOL. Alternatively, the end of the def **Related Probes:** -- @[exportCol](#p_exportcol) +- @[exportCol][p_exportcol] diff --git a/doc/src/docs/input-data/exportfile.md b/doc/src/docs/input-data/exportfile.md index 4fc9c54af..1d0fb849c 100644 --- a/doc/src/docs/input-data/exportfile.md +++ b/doc/src/docs/input-data/exportfile.md @@ -65,4 +65,4 @@ Optionally indicates the end of the export file definition. Alternatively, the e **Related Probes:** -- @[exportFile](#p_exportfile) +- @[exportFile][p_exportfile] diff --git a/doc/src/docs/input-data/gain.md b/doc/src/docs/input-data/gain.md index 34fa426f8..490558b70 100644 --- a/doc/src/docs/input-data/gain.md +++ b/doc/src/docs/input-data/gain.md @@ -218,4 +218,4 @@ Optional to indicate the end of the GAIN definition. Alternatively, the end of t **Related Probes:** -- @[gain](#p_gain) +- @[gain][p_gain] diff --git a/doc/src/docs/input-data/glazetype.md b/doc/src/docs/input-data/glazetype.md index a85632bc4..7dfe3d351 100644 --- a/doc/src/docs/input-data/glazetype.md +++ b/doc/src/docs/input-data/glazetype.md @@ -210,4 +210,4 @@ Optional to indicates the end of the Glazetype. Alternatively, the end of the GL **Related Probes:** -- @[glazeType](#p_glazetype) +- @[glazeType][p_glazetype] diff --git a/doc/src/docs/input-data/heatplant.md b/doc/src/docs/input-data/heatplant.md index 4108a7376..7ef0fe8f5 100644 --- a/doc/src/docs/input-data/heatplant.md +++ b/doc/src/docs/input-data/heatplant.md @@ -80,4 +80,4 @@ Optionally indicates the end of the HEATPLANT definition. Alternatively, the end **Related Probes:** -- @[heatPlant](#p_heatplant) +- @[heatPlant][p_heatplant] diff --git a/doc/src/docs/input-data/holiday.md b/doc/src/docs/input-data/holiday.md index bcac9d04a..cc4ab149a 100644 --- a/doc/src/docs/input-data/holiday.md +++ b/doc/src/docs/input-data/holiday.md @@ -167,4 +167,4 @@ Note that the name must be spelled *exactly* as listed above. **Related Probes:** -- @[holiday](#p_holiday) +- @[holiday][p_holiday] diff --git a/doc/src/docs/input-data/importfile.md b/doc/src/docs/input-data/importfile.md index 15005a9dd..ffecc6b7b 100644 --- a/doc/src/docs/input-data/importfile.md +++ b/doc/src/docs/input-data/importfile.md @@ -1,9 +1,9 @@ # IMPORTFILE -IMPORTFILE allows specification of a file from which external data can be accessed using the [import()](#import) and [importStr()](#importstr) functions. This allows external values to be referenced in expressions. Any number of IMPORTFILEs can be defined and any number of import()/importStr() references can be made to a give IMPORTFILE. +IMPORTFILE allows specification of a file from which external data can be accessed using the [import()][import] and [importStr()][importstr] functions. This allows external values to be referenced in expressions. Any number of IMPORTFILEs can be defined and any number of import()/importStr() references can be made to a give IMPORTFILE. Import files are text files containing an optional header and comma-separated data fields. With -the header present, the structure of an import file matches that of an [EXPORT](#export) file. This makes it convenient to import unmodified files EXPORTed from prior runs. The file structure is as follows (noting that the header in lines 1-4 should not be present when imHeader=NO) -- +the header present, the structure of an import file matches that of an [EXPORT][export] file. This makes it convenient to import unmodified files EXPORTed from prior runs. The file structure is as follows (noting that the header in lines 1-4 should not be present when imHeader=NO) -- <%= csv_table(< true) Line, Contents, Notes @@ -133,5 +133,5 @@ Optionally indicates the end of the import file definition. Alternatively, the e **Related Probes:** -- @[importFile](#p_importfile) -- @[impFileFldNames](#p_impfilefldnames) +- @[importFile][p_importfile] +- @[impFileFldNames][p_impfilefldnames] diff --git a/doc/src/docs/input-data/index.md b/doc/src/docs/input-data/index.md index 9df80f987..17b10742a 100644 --- a/doc/src/docs/input-data/index.md +++ b/doc/src/docs/input-data/index.md @@ -16,7 +16,7 @@ After the object name, each member's description is introduced with a line of th - *date* -These types discussed in the section on [expression types](#expression-types). +These types discussed in the section on [expression types][expression-types]. Each member's description continues with a table of the form: diff --git a/doc/src/docs/input-data/izxfer.md b/doc/src/docs/input-data/izxfer.md index 99bb52b21..8d48781f8 100644 --- a/doc/src/docs/input-data/izxfer.md +++ b/doc/src/docs/input-data/izxfer.md @@ -496,4 +496,4 @@ Optionally indicates the end of the interzone transfer definition. **Related Probes:** -- @[izXfer](#p_izxfer) +- @[izXfer][p_izxfer] diff --git a/doc/src/docs/input-data/layer.md b/doc/src/docs/input-data/layer.md index a88e22245..fc2d8c390 100644 --- a/doc/src/docs/input-data/layer.md +++ b/doc/src/docs/input-data/layer.md @@ -67,4 +67,4 @@ Optional end-of-LAYER indicator; LAYER definition may also be indicated by "END" **Related Probes:** -- @[layer](#p_layer) +- @[layer][p_layer] diff --git a/doc/src/docs/input-data/loadmeter.md b/doc/src/docs/input-data/loadmeter.md index 0ce3e84f1..91f60afe3 100644 --- a/doc/src/docs/input-data/loadmeter.md +++ b/doc/src/docs/input-data/loadmeter.md @@ -65,4 +65,4 @@ Indicates the end of the meter definition. Alternatively, the end of the meter d **Related Probes:** -- @[loadmeter](#p_loadmeter) +- @[loadmeter][p_loadmeter] diff --git a/doc/src/docs/input-data/material.md b/doc/src/docs/input-data/material.md index 71926f83f..3960336c0 100644 --- a/doc/src/docs/input-data/material.md +++ b/doc/src/docs/input-data/material.md @@ -105,4 +105,4 @@ Optional to indicate the end of the material. Alternatively, the end of the mate **Related Probes:** -- @[material](#p_material) +- @[material][p_material] diff --git a/doc/src/docs/input-data/meter.md b/doc/src/docs/input-data/meter.md index f2800c37f..893058617 100644 --- a/doc/src/docs/input-data/meter.md +++ b/doc/src/docs/input-data/meter.md @@ -104,4 +104,4 @@ Indicates the end of the meter definition. Alternatively, the end of the meter d **Related Probes:** -- @[meter](#p_meter) +- @[meter][p_meter] diff --git a/doc/src/docs/input-data/perimeter.md b/doc/src/docs/input-data/perimeter.md index 795fd5ea8..a03e7bacb 100644 --- a/doc/src/docs/input-data/perimeter.md +++ b/doc/src/docs/input-data/perimeter.md @@ -48,5 +48,5 @@ Optionally indicates the end of the perimeter definition. **Related Probes:** -- @[perimeter](#p_perimeter) -- @[xsurf](#p_xsurf) +- @[perimeter][p_perimeter] +- @[xsurf][p_xsurf] diff --git a/doc/src/docs/input-data/pvarray.md b/doc/src/docs/input-data/pvarray.md index aa2cfe29b..cee57bf5f 100644 --- a/doc/src/docs/input-data/pvarray.md +++ b/doc/src/docs/input-data/pvarray.md @@ -145,11 +145,11 @@ Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the **pvVertices=*list of up to 36 floats*** - Vertices of an optional polygon representing the position and shape of the photovoltaic array. The polygon is used to calculate the shaded fraction using an advanced shading model. Only PVARRAYs and [SHADEXs](#shadex) are considered in the advanced shading model -- PVARRAYs can be shaded by SHADEXs or other PVARRAYs. If pvVertices is omitted, the PVARRAY is assumed to be unshaded at all times. Advanced shading must be enabled via [TOP exShadeModel](#top-model-control-items). Note that the polygon is used only for evaluating shading; array capacity is specified by pvDCSysSize (above). + Vertices of an optional polygon representing the position and shape of the photovoltaic array. The polygon is used to calculate the shaded fraction using an advanced shading model. Only PVARRAYs and [SHADEXs][shadex] are considered in the advanced shading model -- PVARRAYs can be shaded by SHADEXs or other PVARRAYs. If pvVertices is omitted, the PVARRAY is assumed to be unshaded at all times. Advanced shading must be enabled via [TOP exShadeModel][top-model-control-items]. Note that the polygon is used only for evaluating shading; array capacity is specified by pvDCSysSize (above). The values that follow pvVertices are a series of X, Y, and Z values for the vertices of the polygon using a coordinate system defined from a viewpoint facing north. X and Y values convey east-west and north-south location respectively relative to an arbitrary origin (positive X value are to the east; positive Y values are to the north). Z values convey height relative to the building 0 level and positive values are upward. - The vertices are specified in counter-clockwise order when facing the receiving surface of the PVARRAY. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When pvMounting=Building, the effective position of the polygon is modified in response to building rotation specified by [TOP bldgAzm](#top-general-data-items). + The vertices are specified in counter-clockwise order when facing the receiving surface of the PVARRAY. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When pvMounting=Building, the effective position of the polygon is modified in response to building rotation specified by [TOP bldgAzm][top-general-data-items]. For example, to specify a rectangular photovoltaic array that is 10 x 20 ft, tilted 45 degrees, and facing south -- @@ -182,7 +182,7 @@ Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the **pvMounting=*choice*** - Specified mounting location of this PVARRAY. pvMounting=Site indicates the array position is not altered by building rotation via [TOP bldgAzm](#top-general-data-items), while PVARRAYs with pvMounting=Building are assumed to rotate with the building. + Specified mounting location of this PVARRAY. pvMounting=Site indicates the array position is not altered by building rotation via [TOP bldgAzm][top-general-data-items], while PVARRAYs with pvMounting=Building are assumed to rotate with the building. <%= member_table( units: "", @@ -285,4 +285,4 @@ Optionally indicates the end of the PVARRAY definition. Alternatively, the end o **Related Probes:** -- @[PVArray](#p_pvarray) +- @[PVArray][p_pvarray] diff --git a/doc/src/docs/input-data/report.md b/doc/src/docs/input-data/report.md index a93209546..a8c95353c 100644 --- a/doc/src/docs/input-data/report.md +++ b/doc/src/docs/input-data/report.md @@ -280,4 +280,4 @@ Optionally indicates the end of the report definition. Alternatively, the end of **Related Probes:** -- @[report](#p_report) +- @[report][p_report] diff --git a/doc/src/docs/input-data/reportcol.md b/doc/src/docs/input-data/reportcol.md index 95b66979d..70203a777 100644 --- a/doc/src/docs/input-data/reportcol.md +++ b/doc/src/docs/input-data/reportcol.md @@ -104,4 +104,4 @@ Optionally indicates the end of the report column definition. Alternatively, the **Related Probes:** -- @[reportCol](#p_reportcol) +- @[reportCol][p_reportcol] diff --git a/doc/src/docs/input-data/reportfile.md b/doc/src/docs/input-data/reportfile.md index 2b4cbe0d2..4123d0bfa 100644 --- a/doc/src/docs/input-data/reportfile.md +++ b/doc/src/docs/input-data/reportfile.md @@ -102,4 +102,4 @@ Optionally indicates the end of the report file definition. Alternatively, the e **Related Probes:** -- @[reportFile](#p_reportfile) +- @[reportFile][p_reportfile] diff --git a/doc/src/docs/input-data/rsys.md b/doc/src/docs/input-data/rsys.md index 0c60a2314..499ca607b 100644 --- a/doc/src/docs/input-data/rsys.md +++ b/doc/src/docs/input-data/rsys.md @@ -711,7 +711,7 @@ Cooling distribution system efficiency. If given, (1-rsDSEC) of RSYS cooling ou Type of central fan integrated (CFI) outside air ventilation (OAV) included in this RSYS. OAV systems use the central system fan to circulate outdoor air (e.g. for night ventilation). - OAV cannot operate simultaneously with whole building ventilation (operable windows, whole house fans, etc.). Availability of ventilation modes is controlled on an hourly basis via [Top ventAvail](#top-model-control-items). + OAV cannot operate simultaneously with whole building ventilation (operable windows, whole house fans, etc.). Availability of ventilation modes is controlled on an hourly basis via [Top ventAvail][top-model-control-items]. <%= csv_table(< false) NONE, No CFI ventilation capabilities @@ -851,5 +851,5 @@ Optionally indicates the end of the RSYS definition. **Related Probes:** -- @[rsys](#p_rsys) -- @[RSYSRes](#p_rsysres) (accumulated results) +- @[rsys][p_rsys] +- @[RSYSRes][p_rsysres] (accumulated results) diff --git a/doc/src/docs/input-data/sgdist.md b/doc/src/docs/input-data/sgdist.md index 049a23677..a4f849284 100644 --- a/doc/src/docs/input-data/sgdist.md +++ b/doc/src/docs/input-data/sgdist.md @@ -89,4 +89,4 @@ Optionally indicates the end of the solar gain distribution definition. Alternat **Related Probes:** -- @[sgdist](#p_sgdist) +- @[sgdist][p_sgdist] diff --git a/doc/src/docs/input-data/shade.md b/doc/src/docs/input-data/shade.md index 4c1482225..b213cce9a 100644 --- a/doc/src/docs/input-data/shade.md +++ b/doc/src/docs/input-data/shade.md @@ -172,4 +172,4 @@ Optional to indicate the end of the SHADE definition. Alternatively, the end of **Related Probes:** -- @[shade](#p_shade) +- @[shade][p_shade] diff --git a/doc/src/docs/input-data/shadex.md b/doc/src/docs/input-data/shadex.md index c031e3942..0615b66ee 100644 --- a/doc/src/docs/input-data/shadex.md +++ b/doc/src/docs/input-data/shadex.md @@ -1,6 +1,6 @@ # SHADEX -SHADEX describes an object that shades other building surfaces using an advanced shading model. Advanced shading calculations are provided only for [PVARRAYs](#pvarray). Advanced shading must be enabled via [Top exShadeModel](#top-model-control-items). +SHADEX describes an object that shades other building surfaces using an advanced shading model. Advanced shading calculations are provided only for [PVARRAYs][pvarray]. Advanced shading must be enabled via [Top exShadeModel][top-model-control-items]. **sxName** @@ -15,7 +15,7 @@ Name of photovoltaic array. Give after the word SHADEX. **sxMounting=*choice*** -Specifies the mounting location of the shade. sxMounting=Site indicates the SHADEX position is fixed and is not modified if the building is rotated. The position of SHADEXs with sxMounting=Building are modified to include the effect of building rotation specified via [Top bldgAz](#bldgAzm) +Specifies the mounting location of the shade. sxMounting=Site indicates the SHADEX position is fixed and is not modified if the building is rotated. The position of SHADEXs with sxMounting=Building are modified to include the effect of building rotation specified via [Top bldgAz][bldgAzm] <%= member_table( units: "", @@ -30,7 +30,7 @@ Vertices of a polygon representing the shape of the shading object. The values that follow sxVertices are a series of X, Y, and Z values for the vertices of the polygon. The coordinate system is defined from a viewpoint facing north. X and Y values convey east-west and north-south location respectively relative to an arbitrary origin (positive X value are to the east; positive Y values are to the north). Z values convey height relative to the building 0 level and positive values are upward. -The vertices are specified in counter-clockwise order when facing the shading object from the south. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When sxType=Building, the effective position of the polygon reflects building rotation specified by [TOP bldgAzm](#top-general-data-items). +The vertices are specified in counter-clockwise order when facing the shading object from the south. The number of values provided must be a multiple of 3. The defined polygon must be planar and have no crossing edges. When sxType=Building, the effective position of the polygon reflects building rotation specified by [TOP bldgAzm][top-general-data-items]. For example, to specify a rectangular shade "tree" that is 10 x 40 ft, facing south, and 100 ft to the south of the nominal building origin -- @@ -56,4 +56,4 @@ Optionally indicates the end of the SHADEX definition. Alternatively, the end of **Related Probes:** -- @[SHADEX](#p_shadex) +- @[SHADEX][p_shadex] diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index 5b3531c4c..642764dea 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -494,6 +494,6 @@ The following tables summarize the defaults and legal ranges of surface members **Related Probes:** -- @[surface](#p_surface) -- @[xsurf](#p_xsurf) -- @[mass](#p_mass) +- @[surface][p_surface] +- @[xsurf][p_xsurf] +- @[mass][p_mass] diff --git a/doc/src/docs/input-data/terminal.md b/doc/src/docs/input-data/terminal.md index 77515de2c..1e89c0f31 100644 --- a/doc/src/docs/input-data/terminal.md +++ b/doc/src/docs/input-data/terminal.md @@ -467,5 +467,5 @@ Optional to indicates the end of terminal definition. Alternatively, the end of **Related Probes:** -- @[terminal](#p_terminal) -- @[zhx](#p_zhx) +- @[terminal][p_terminal] +- @[zhx][p_zhx] diff --git a/doc/src/docs/input-data/top-members.md b/doc/src/docs/input-data/top-members.md index 85a01f877..fd60dc5e8 100644 --- a/doc/src/docs/input-data/top-members.md +++ b/doc/src/docs/input-data/top-members.md @@ -357,7 +357,7 @@ As noted, ventAvail is evaluated hourly, permitting flexible control strategy mo **exShadeModel=*choice*** -Specifies advanced exterior shading model used to evaluate shading of [PVARRAYs](#pvarray) by [SHADEXs](#shadex) or other PVARRAYs. Advanced shading is not implemented for building surfaces and this setting has no effect on walls or windows. +Specifies advanced exterior shading model used to evaluate shading of [PVARRAYs][pvarray] by [SHADEXs][shadex] or other PVARRAYs. Advanced shading is not implemented for building surfaces and this setting has no effect on walls or windows. <%= csv_table(< true) **Choice**, **Effect** @@ -791,7 +791,7 @@ Deep-ground temperature. Used when deepGrndCnd=WATERTABLE. CSE supports an optional comma-separated (CSV) text file that provides hourly TDV values for electricity and fuel. TDV values are read along with the weather file and the values merged with weather data. Several daily statistics are calculated for use via probes. The file has no other effect on the simulation. Only full-year TDV files are supported. -The format of a TDV file is the same as an [IMPORTFILE](#importfile) with the proviso that the 4 line header is not optional and certain header items must have specified values. In the following table, non-italic items must be provided as shown (with optional quotes). +The format of a TDV file is the same as an [IMPORTFILE][importfile] with the proviso that the 4 line header is not optional and certain header items must have specified values. In the following table, non-italic items must be provided as shown (with optional quotes). <%= csv_table(< true) **Line** **Contents** **Notes** @@ -1079,7 +1079,7 @@ Enables expression code coverage reporting. Development aid. **Related Probes:** -- @[top](#p_top) -- @[weatherFile](#p_weatherfile) -- @[weather](#p_weather) -- @[weatherNextHour](#p_weathernexthour) +- @[top][p_top] +- @[weatherFile][p_weatherfile] +- @[weather][p_weather] +- @[weatherNextHour][p_weathernexthour] diff --git a/doc/src/docs/input-data/towerplant.md b/doc/src/docs/input-data/towerplant.md index 08f79d0e4..31f552377 100644 --- a/doc/src/docs/input-data/towerplant.md +++ b/doc/src/docs/input-data/towerplant.md @@ -305,4 +305,4 @@ Optionally indicates the end of the TOWERPLANT definition. Alternatively, the en **Related Probes:** -- @[towerPlant](#p_towerplant) +- @[towerPlant][p_towerplant] diff --git a/doc/src/docs/input-data/window.md b/doc/src/docs/input-data/window.md index ef0c1b9cf..1027530cc 100644 --- a/doc/src/docs/input-data/window.md +++ b/doc/src/docs/input-data/window.md @@ -388,5 +388,5 @@ Optionally indicates the end of the window definition. Alternatively, the end of **Related Probes:** -- @[window](#p_window) -- @[xsurf](#p_xsurf) +- @[window][p_window] +- @[xsurf][p_xsurf] diff --git a/doc/src/docs/input-data/zone.md b/doc/src/docs/input-data/zone.md index 39bbd6ac4..d609c73b2 100644 --- a/doc/src/docs/input-data/zone.md +++ b/doc/src/docs/input-data/zone.md @@ -527,5 +527,5 @@ Indicates the end of the zone definition. Alternatively, the end of the zone def **Related Probes:** -- @[zone](#p_zone) -- @[znRes](#p_znres) (accumulated results) +- @[zone][p_zone] +- @[znRes][p_znres] (accumulated results) diff --git a/doc/src/docs/input-structure.md b/doc/src/docs/input-structure.md index 3aac81011..ea982418f 100644 --- a/doc/src/docs/input-structure.md +++ b/doc/src/docs/input-structure.md @@ -90,7 +90,7 @@ A statement specifying a data member consists of the data member's name, an = si znVol = 100000; -specifies that the zone has a volume of 100000 cubic feet. (If the statement occurs outside of the description of a ZONE, an error message occurs.) All of the member names for each class are described in the [input data](#input-data) section; most of them begin with an abbreviation of the class name for clarity. +specifies that the zone has a volume of 100000 cubic feet. (If the statement occurs outside of the description of a ZONE, an error message occurs.) All of the member names for each class are described in the [input data][input-data] section; most of them begin with an abbreviation of the class name for clarity. The description of a zone or any object except Top can be terminated with the word "END"; but this is not essential; CSE will assume the ZONE ends when you start another ZONE or any object not a subobject of ZONE, or when you specify a member of a higher level class (Top for ZONE), or give an action-command such as RUN. @@ -148,11 +148,11 @@ The following is a brief CSE input file, annotated with comments intended to exe Terminates ZONE North, since action-commands terminate all objects being constructed. */ -\*\* See [Form of the CSE Data](#form-of-the-cse-data) +\*\* See [Form of the CSE Data][form-of-the-cse-data] ### Expressions -- Overview -*Expressions* are the parts of statements that specify values -- numeric values, string values, object name values, and choice values. Expressions are composed of operators and operands, in a manner similar to many programming languages. The available operators and operands will be described in the section on [operators](#operators). +*Expressions* are the parts of statements that specify values -- numeric values, string values, object name values, and choice values. Expressions are composed of operators and operands, in a manner similar to many programming languages. The available operators and operands will be described in the section on [operators][operators]. Unlike most programming languages, CSE expressions have Variation. *Variation* is how often a value changes during the simulation run -- hourly, daily, monthly, yearly (i.e. does not change during run), etc. For instance, the operand `$hour` represents the hour of the day and has "hourly" variation. An expression has the variation of its fastest-varying component. @@ -263,13 +263,13 @@ A line of the form where there is no space between the identifier and the (, is a macro with parameters given by the identifier list. The expansion of macros with parameters is discussed below. -Macros may also be defined *on the CSE command line*, making it possible to vary a run without changing the input files at all. As described in the [command line](#command-line) section, macros are defined on the CSE command line using the `-D` switch in the forms +Macros may also be defined *on the CSE command line*, making it possible to vary a run without changing the input files at all. As described in the [command line][command-line] section, macros are defined on the CSE command line using the `-D` switch in the forms -D_identifier_ -D_identifier_=_token-sequence_ -The first form simply defines the name with no token-sequence; this is convenient for testing with `#ifdef`, `#ifndef`, or `defined()`, as described in the section on [conditional inclusion of tex](#conditional-inclusion-of-text). The second form allows an argument list and token sequence. The entire command line argument must be enclosed in quotes if it contains any spaces. +The first form simply defines the name with no token-sequence; this is convenient for testing with `#ifdef`, `#ifndef`, or `defined()`, as described in the section on [conditional inclusion of tex][conditional-inclusion-of-text]. The second form allows an argument list and token sequence. The entire command line argument must be enclosed in quotes if it contains any spaces. A macro definition is forgotten when an `#undef` directive is encountered: @@ -321,7 +321,7 @@ For an example of the use `#include`s, please see the preprocessor examples at t Conditional text inclusion provides a facility for selectively including or excluding groups of input file lines. The lines so included or excluded may be either CSE input language text *or other preprocessor directives*. The latter capability is very powerful. -Several conditional inclusion directive involve integer constant expressions. Constant integer expressions are formed according the rules discussed in the section on [expressions](#expressions) with the following changes: +Several conditional inclusion directive involve integer constant expressions. Constant integer expressions are formed according the rules discussed in the section on [expressions][expressions] with the following changes: 1. Only constant integer operands are allowed. @@ -440,11 +440,11 @@ This macro can be used whenever a U-value is required (e.g. SURFACE ... sfU=UWin ## CSE Input Language Statements -This section describes the general form of CSE input language statements that define objects, assign values to the data members of objects, and initiate actions. The concepts of objects and the class hierarchy were introduced in the section on [form of CSE data](#form-of-the-cse-data). Information on statements for specific CSE input language classes and their members is the subject of the [input data](#input-data) section. +This section describes the general form of CSE input language statements that define objects, assign values to the data members of objects, and initiate actions. The concepts of objects and the class hierarchy were introduced in the section on [form of CSE data][form-of-the-cse-data]. Information on statements for specific CSE input language classes and their members is the subject of the [input data][input-data] section. ### Object Statements -As we described in a [previous section](#statements-overview), the description of an object is introduced by a statement containing at least the class name, and usually your chosen name for the particular object. In addition, this section will describe several optional qualifiers and modifying clauses that permit defining similar objects without repeating all of the member details, and reopening a previously given object description to change or add to it. +As we described in a [previous section][statements-overview], the description of an object is introduced by a statement containing at least the class name, and usually your chosen name for the particular object. In addition, this section will describe several optional qualifiers and modifying clauses that permit defining similar objects without repeating all of the member details, and reopening a previously given object description to change or add to it. Examples of the basic object-beginning statement: @@ -454,7 +454,7 @@ Examples of the basic object-beginning statement: LAYER; -As described in [the section on nested objects](#nested-objects), such a statement is followed by statements giving the object's member values or describing subobjects of the object. The object description ends when you begin another object that is not of a subclass of the object, or when a member of an embedding (higher level) object previously begun is given, or when END is given. +As described in [the section on nested objects][nested-objects], such a statement is followed by statements giving the object's member values or describing subobjects of the object. The object description ends when you begin another object that is not of a subclass of the object, or when a member of an embedding (higher level) object previously begun is given, or when END is given. #### Object Names @@ -477,7 +477,7 @@ We suggest always quoting object names so you won't have to worry about disallow Duplicate names result in error messages. Object names must be distinct between objects of the same class which are subobjects of the same object. For example, all ZONE names must be distinct, since all ZONEs are subobjects of Top. It is permissible to have SURFACEs with the same name in different ZONEs -- but it is a good idea to keep all of your object names distinct to minimize the chance of an accidental mismatch or a confusing message regarding some other error. -For some classes, such as ZONE, a name is required for each object. This is because several other statements refer to specific ZONEs, and because a name is needed to identify ZONEs in reports. For other classes, the name is optional. The specific statement descriptions in the [Input Data](#input-data) Section 5 say which names are required. We suggest always using object names even where not required; one reason is because they allow CSE to issue clearer error messages. +For some classes, such as ZONE, a name is required for each object. This is because several other statements refer to specific ZONEs, and because a name is needed to identify ZONEs in reports. For other classes, the name is optional. The specific statement descriptions in the [Input Data][input-data] Section 5 say which names are required. We suggest always using object names even where not required; one reason is because they allow CSE to issue clearer error messages. The following *reserved words will not work as object names unless enclosed in quotes*: @@ -513,7 +513,7 @@ ALTER can be used to facilitate making similar runs. For example, to evaluate th wnHeight = 4; wnWidth = 12; // make window smaller RUN; // perform simulation and print reports again -ALTER also lets you access the predefined "Primary" REPORTFILE and EXPORTFILE objects which will be described in the [Input Data](#input-data) Section: +ALTER also lets you access the predefined "Primary" REPORTFILE and EXPORTFILE objects which will be described in the [Input Data][input-data] Section: ALTER REPORTFILE "Primary"; /* open description of object automatically supplied by CSE -- no other way to access */ @@ -563,7 +563,7 @@ USETYPE followed by the type name is used in creating an object of a type previo sfArea = 8 * 30; // area of each wall is different sfAdjZn = "East"; // zone on other side of wall -Any differences from the type, and any required information not given in the type, must then be specified. Any member specified in the type may be respecified in the object unless FROZEN (see [this section](#freeze)) in the type (normally, a duplicate specification for a member results in an error message). +Any differences from the type, and any required information not given in the type, must then be specified. Any member specified in the type may be respecified in the object unless FROZEN (see [this section][freeze]) in the type (normally, a duplicate specification for a member results in an error message). #### DEFTYPE @@ -607,43 +607,43 @@ END, optionally followed by an object name, can be used to unequivocally termina ### Member Statements -As introduced in the section on [statements](#statements-overview), statements which assign values to members are of the general form: +As introduced in the section on [statements][statements-overview], statements which assign values to members are of the general form: *memberName* = *expression*; The specific member names for each class of objects are given in Section 5; many have already been shown in examples. -Depending on the member, the appropriate type for the expression giving the member value may be numeric (integer or floating point), string, object name, or multiple-choice. Expressions of all types will be described in detail in the section on [expressions](#expressions). +Depending on the member, the appropriate type for the expression giving the member value may be numeric (integer or floating point), string, object name, or multiple-choice. Expressions of all types will be described in detail in the section on [expressions][expressions]. -Each member also has its *variability* (also given in the [input data](#input-data) section), or maximum acceptable *variation*. This is how often the expression for the value can change during the simulation -- hourly, daily, monthly, no change (constant), etc. The "variations" were introduced in the [expressions overview](#expressions-overview) section and will be further detailed in a [section on variation frequencies](#variation-frequencies-revisited). +Each member also has its *variability* (also given in the [input data][input-data] section), or maximum acceptable *variation*. This is how often the expression for the value can change during the simulation -- hourly, daily, monthly, no change (constant), etc. The "variations" were introduced in the [expressions overview][expressions-overview] section and will be further detailed in a [section on variation frequencies][variation-frequencies-revisited]. Four special statements, AUTOSIZE, UNSET, REQUIRE, and FREEZE, add flexibility in working with members. #### AUTOSIZE -AUTOSIZE followed by a member name, sets the member to be sized by CSE. The option to AUTOSIZE a member will be shown under its legal range where it is described in the [input data](#input-data) section. AUTOSIZE is only applicable to members describing HVAC system airflows and heating/cooling capacities. If AUTOSIZE is used for any member in the input, input describing design day conditions must also be specified (see [TOP Autosizing](#top-autosizing)). +AUTOSIZE followed by a member name, sets the member to be sized by CSE. The option to AUTOSIZE a member will be shown under its legal range where it is described in the [input data][input-data] section. AUTOSIZE is only applicable to members describing HVAC system airflows and heating/cooling capacities. If AUTOSIZE is used for any member in the input, input describing design day conditions must also be specified (see [TOP Autosizing][top-autosizing]). #### UNSET -UNSET followed by a member name is used when it is desired to delete a member value previously given. UNSETing a member resets the object to the same internal state it was in before the member was originally given. This makes it legal to specify a new value for the member (normally, a duplicate specification results in an error message); if the member is required (as specified in the [input data](#input-data) section), then an error message will occur if RUN is given without re specifying the member. +UNSET followed by a member name is used when it is desired to delete a member value previously given. UNSETing a member resets the object to the same internal state it was in before the member was originally given. This makes it legal to specify a new value for the member (normally, a duplicate specification results in an error message); if the member is required (as specified in the [input data][input-data] section), then an error message will occur if RUN is given without re specifying the member. Situations where you really might want to specify a member, then later remove it, include: - After a RUN command has completed one simulation run, if you wish to specify another simulation run without CLEARing and giving all the data again, you may need to UNSET some members of some objects in order to re specify them or because they need to be omitted from the new run. In this case, use ALTER(s) to reopen the object(s) before UNSETing. -- In defining a TYPE (see [this section](#deftype)), you may wish to make sure certain members are not specified so that the user must give them or omit them if desired. If the origin of the type (possibly a sequence of DEFTYPEs, LIKEs, and/or COPYs) has defined unwanted members, get rid of them with UNSET. +- In defining a TYPE (see [this section][deftype]), you may wish to make sure certain members are not specified so that the user must give them or omit them if desired. If the origin of the type (possibly a sequence of DEFTYPEs, LIKEs, and/or COPYs) has defined unwanted members, get rid of them with UNSET. -Note that UNSET is only for deleting *members* (names that would be followed with an = and a a value when being defined). To delete an entire *object*, use DELETE (see [this section](#delete)). +Note that UNSET is only for deleting *members* (names that would be followed with an = and a a value when being defined). To delete an entire *object*, use DELETE (see [this section][delete]). #### REQUIRE -REQUIRE followed by a member name makes entry of that member mandatory if it was otherwise optional; it is useful in defining a TYPE (see [this section](#deftype)) when you desire to make sure the user enters a particular member, for example to be sure the TYPE is applied in the intended manner. REQUIRE by itself does not delete any previously entered value, so if the member already has a value, you will need to UNSET it. ?? *verify* +REQUIRE followed by a member name makes entry of that member mandatory if it was otherwise optional; it is useful in defining a TYPE (see [this section][deftype]) when you desire to make sure the user enters a particular member, for example to be sure the TYPE is applied in the intended manner. REQUIRE by itself does not delete any previously entered value, so if the member already has a value, you will need to UNSET it. ?? *verify* #### FREEZE -FREEZE followed by a member name makes it illegal to UNSET or redefine that member of the object. Note that FREEZE is unnecessary most of the time since CSE issues an error message for duplicate definitions without an intervening UNSET, unless the original definition came from a TYPE (see [this section](#deftype)). Situations where you might want to FREEZE one or more members include: +FREEZE followed by a member name makes it illegal to UNSET or redefine that member of the object. Note that FREEZE is unnecessary most of the time since CSE issues an error message for duplicate definitions without an intervening UNSET, unless the original definition came from a TYPE (see [this section][deftype]). Situations where you might want to FREEZE one or more members include: -- When defining a TYPE (see [this section](#deftype)). Normally, the member values in a type are like defaults; they can be freely overridden by member specifications at each use. If you wish to insure a TYPE is used as intended, you may wish to FREEZE members to prevent accidental misuse. +- When defining a TYPE (see [this section][deftype]). Normally, the member values in a type are like defaults; they can be freely overridden by member specifications at each use. If you wish to insure a TYPE is used as intended, you may wish to FREEZE members to prevent accidental misuse. - When your are defining objects for later use or for somebody else to use (perhaps in a file to be included) and you wish to guard against misuse, you may wish to FREEZE members. Of course, this is not foolproof, since there is at present no way to allow use of predefined objects or types without allowing access to the statements defining them. @@ -669,17 +669,17 @@ Probably the CSE input language's most powerful characteristic is its ability to But for many object members, CSE accepts *live expressions* that *vary* according to time of day, weather, zone temperatures, etc. (etc., etc., etc.!). Live expressions permit simulation of many relationships without special-purpose features in the language. Live expressions support controlling setpoints, scheduling HVAC system operation, resetting air handler supply temperature according to outdoor temperature, and other necessary and foreseen functions without dedicated language features; they will also support many unforeseen user-generated functionalities that would otherwise be unavailable. -Additional expression flexibility is provided by the ability to access all of the input data and much of the internal data as operands in expressions (*probes*, see [this section](#probes)). +Additional expression flexibility is provided by the ability to access all of the input data and much of the internal data as operands in expressions (*probes*, see [this section][probes]). As in a programming language, CSE expressions are constructed from operators and operands; unlike most programming languages, CSE determines how often an expression's operands change and automatically compute and store the value as often as necessary. -Expressions in which all operands are known when the statement is being decoded (for example, if all values are constants) are *always* allowed, because the input language processor immediately evaluates them and presents the value to the rest of the program in the same manner as if a single number had been entered. *Most* members also accept expressions that can be evaluated as soon as the run's input is complete, for example expressions involving a reference to another member that has not been given yet. Expressions that vary during the run, say at hourly or daily intervals, are accepted by *many* members. The *variability* or maximum acceptable variation for each member is given in the descriptions in the [input data](#input-data) section, and the *variation* of each non-constant expression component is given in its description in this section. +Expressions in which all operands are known when the statement is being decoded (for example, if all values are constants) are *always* allowed, because the input language processor immediately evaluates them and presents the value to the rest of the program in the same manner as if a single number had been entered. *Most* members also accept expressions that can be evaluated as soon as the run's input is complete, for example expressions involving a reference to another member that has not been given yet. Expressions that vary during the run, say at hourly or daily intervals, are accepted by *many* members. The *variability* or maximum acceptable variation for each member is given in the descriptions in the [input data][input-data] section, and the *variation* of each non-constant expression component is given in its description in this section. Interaction of expressions and the preprocessor: Generally, they don't interact. The preprocessor is a text processor which completes its work by including specified files, deleting sections under false \#if's, remembering define definitions, replacing macro calls with the text of the definition, removing preprocessor directives from the text after interpreting them, etc., *then* the resulting character stream is analyzed by the input language statement compiler. However, the if statement takes an integer numeric expression argument. This expression is similar to those described here except that it can only use constant operands, since the preprocessor must evaluate it before deciding what text to feed to the input statement statement compiler. ### Expression Types -The type of value to which an expression must evaluate is specified in each member description (see the [input data](#input-data) section) or other context in which an expression can be used. Each expression may be a single constant or may be made up of operators and operands described in the rest of this section, so long as the result is the required type or can be converted to that type by CSE, and its variation is not too great for the context. The possible types are: +The type of value to which an expression must evaluate is specified in each member description (see the [input data][input-data] section) or other context in which an expression can be used. Each expression may be a single constant or may be made up of operators and operands described in the rest of this section, so long as the result is the required type or can be converted to that type by CSE, and its variation is not too great for the context. The possible types are: ------------------ ----------------------------------------------------- *float* A real number (3.0, 5.34, -2., etc.). Approximately 7 @@ -704,7 +704,7 @@ The type of value to which an expression must evaluate is specified in each memb quotes if it consists only of letters, digits, \_, and \$, begins with a non-digit, and is different from all reserved words now in or later added to the - language (see [Object Names](#object-names)). + language (see [Object Names][object-names]). The object may be defined after it is referred to. An expression using conditional operators, functions, @@ -808,7 +808,7 @@ This section reviews how to enter ordinary non-varying numbers and other values. only of letters, digits, \_, and \$, begins with a non-digit, and is different from all reserved words now in or later added to the language (see - [Object Names](#object-names)). Control character codes + [Object Names][object-names]). Control character codes (ASCII 0-31) are not allowed. *choice* Same as string; quotes optional on choice words valid @@ -926,7 +926,7 @@ For *strings*, *object names*, and *choices*, the CSE input language currently h ### System Variables -*System Variables* are built-in operands with useful values. To avoid confusion with other words, they begin with a \$. Descriptions of the CSE system variables follow. Capitalization shown need not be matched. Most system variables change during a simulation run, resulting in the *variations* shown; they cannot be used where the context will not accept variation at least this fast. (The [Input Data Section](#input-data) gives the *variability*, or maximum acceptable variation, for each object member.) +*System Variables* are built-in operands with useful values. To avoid confusion with other words, they begin with a \$. Descriptions of the CSE system variables follow. Capitalization shown need not be matched. Most system variables change during a simulation run, resulting in the *variations* shown; they cannot be used where the context will not accept variation at least this fast. (The [Input Data Section][input-data] gives the *variability*, or maximum acceptable variation, for each object member.) ---------------- --------------------------------------------------------- \$dayOfYear Day of year of simulation, 1 - 365; 1 corresponds to @@ -1015,7 +1015,7 @@ For *strings*, *object names*, and *choices*, the CSE input language currently h ### Built-in Functions -Built-in functions perform a number of useful scheduling and conditional operations in expressions. Built-in functions have the combined variation of their arguments; for *hourval*, the minimum result variation is hourly. For definitions of *numeric* and *anyType*, see [Expression Types](#expression-types). +Built-in functions perform a number of useful scheduling and conditional operations in expressions. Built-in functions have the combined variation of their arguments; for *hourval*, the minimum result variation is hourly. For definitions of *numeric* and *anyType*, see [Expression Types][expression-types]. #### brkt @@ -1438,7 +1438,7 @@ TODO: test psychrometric functions 7-22-2011 *float* **import**( *string importFile, int colN*) **Remark** Columns can be referenced by name or 1-based index.\ - See [IMPORTFILE](#importfile) for details on use of import() + See [IMPORTFILE][importfile] for details on use of import() ------------- --------------------------------------------------------------- @@ -1450,7 +1450,7 @@ TODO: test psychrometric functions 7-22-2011 **Syntax** *string* **importStr**( *string importFile, string colName*)\ *string* **importStr**( *string importFile, int colN*) - **Remark** See [IMPORTFILE](#importfile) for details on use of importStr() + **Remark** See [IMPORTFILE][importfile] for details on use of importStr() ------------ ----------------------------------------------------------------- #### contin @@ -1534,7 +1534,7 @@ Note that while macros require line-splicing ("\\")to extend over one line, func ### Probes -*Probes* provide a universal means of referencing data within the simulator. Probes permit using the inputtable members of each object, as described in the [Input Data](#input-data) Section, as operands in expressions. In addition, most internal members can be probed; we will describe how to find their names shortly. +*Probes* provide a universal means of referencing data within the simulator. Probes permit using the inputtable members of each object, as described in the [Input Data][input-data] Section, as operands in expressions. In addition, most internal members can be probed; we will describe how to find their names shortly. Three general ways of using probes are: @@ -1577,9 +1577,9 @@ The initial @ is always necessary. And don't miss the period after the \]. *member* is the name of the particular member being probed. This must be exactly correct. For some inputtable members, the probe name is not the same as the input name given in the - [Input Data](#input-data) Section, and there are many + [Input Data][input-data] Section, and there are many probe-able members not described in the - [Input Data](#input-data) section. + [Input Data][input-data] section. ------------ ----------------------------------------------------------- How do you find out what the probe-able member names are? CSE will display the a list of the latest class and member names if invoked with the -p switch. Use the command line @@ -1608,7 +1608,7 @@ A portion of the `-p` output looks like: In the above "exportCol" and "holiday" are class names, and "name", "colHead", "colGap", . . . are member names for class exportCol. Some members have multiple names separated by .'s, or they may contain an additional subscript. To probe one of these, type all of the names and punctuation exactly as shown (except capitalization may differ); if an additional subscript is shown, give a number in the specified range. An "I" designates an "input" parameter, an R means "runtime" parameter. The "owner" is the class of which this class is a subclass. -The data type and variation of each member is also shown. Note that *variation*, or how often the member changes, is shown here. (*Variability*, or how often an expression assigned to the member may change, is given for the input table members in the [Input Data](#input-data) Section). Members for which an "end of" variation is shown can be probed only for use in reports. A name described as "un-probe-able" is a structure or something not convertible to an integer, float, or string. +The data type and variation of each member is also shown. Note that *variation*, or how often the member changes, is shown here. (*Variability*, or how often an expression assigned to the member may change, is given for the input table members in the [Input Data][input-data] Section). Members for which an "end of" variation is shown can be probed only for use in reports. A name described as "un-probe-able" is a structure or something not convertible to an integer, float, or string. -[Operation](#operation) documents the operational aspects of CSE, such as command line switches, file naming conventions, and how CSE finds files it needs. +[Operation][operation] documents the operational aspects of CSE, such as command line switches, file naming conventions, and how CSE finds files it needs. -[Input Structure](#input-structure) documents the CSE input language in general. +[Input Structure][input-structure] documents the CSE input language in general. -[Input Data](#input-data) describes all of the specific input language statements. +[Input Data][input-data] describes all of the specific input language statements. -[Output Reports](#output-reports) will describe the output reports. +[Output Reports][output-reports] will describe the output reports. -Lastly, [Probe Definitions](#probe-definitions) lists all available probes. +Lastly, [Probe Definitions][probe-definitions] lists all available probes. -<%= member_table( -units: "^o^F", -legal_range: "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", -default: "999^o^ F", -required: "Only for _asTsSp_=RA; recommend giving for _ahTsSp_=ZN", -variability: "hourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", + "default": "999^o^ F", + "required": "Only for _asTsSp_=RA; recommend giving for _ahTsSp_=ZN", + "variability": "hourly" + }) +}} **ahTsMx=_float_** @@ -176,45 +192,57 @@ A comma must be entered between zone names and after the word ALL_BUT. -<%= member_table( -units: "", -legal_range: "_name(s) of ZONEs_ ALL ALL_BUT _zone Name(s)_", -default: "ALL", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "_name(s) of ZONEs_ ALL ALL_BUT _zone Name(s)_", + "default": "ALL", + "required": "No", + "variability": "hourly" + }) +}} **ahTsDsC=_float_** Cooling design supply temperature, for sizing coil vs fan. -<%= member_table( -units: "^o^F", -legal_range: "x $>$ 0", -default: "_ahTsMn_", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "x $>$ 0", + "default": "_ahTsMn_", + "required": "No", + "variability": "hourly" + }) +}} **ahTsDsH=_float_** Heating design supply temperature, for sizing coil vs fan. -<%= member_table( -units: "^o^F", -legal_range: "x $>$ 0", -default: "_ahTsMx_", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "x $>$ 0", + "default": "_ahTsMx_", + "required": "No", + "variability": "hourly" + }) +}} **ahCtu=_terminal name_** Terminal monitored to determine whether to heat or cool under ZN and ZN2 supply temperature setpoint control. Development aid feature; believe there is no need to give this since ahTsSp = ZN or ZN2 should only be used with one zone. -<%= member_table( -units: "", -legal_range: "name of a TERMINAL", -default: "AIRHANDLER's TERMINAL, if only one", -required: "If _ahTsSp_ = ZN with more than 1 TERMINAL", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "name of a TERMINAL", + "default": "AIRHANDLER's TERMINAL, if only one", + "required": "If _ahTsSp_ = ZN with more than 1 TERMINAL", + "variability": "hourly" + }) +}} @@ -232,12 +260,15 @@ When the return air temperature is between *ahTsRaMn*and _ahTsRaMx_, the supply If return air moves outside the range _ahTsRaMn_ to _ahTsRaMx_, the supply temperature setpoint does not change further. -<%= member_table( -units: "^o^F", -legal_range: "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", -default: "_none_", -required: " Only for _ahTsSp_=RA", -variability: "hourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", + "default": "_none_", + "required": " Only for _ahTsSp_=RA", + "variability": "hourly" + }) +}} ## AIRHANDLER Supply fan @@ -247,23 +278,29 @@ All AIRHANDLERs have supply fans. Supply fan type/position. A BLOWTHRU fan is located in the air path before the coils; a DRAWTHRU fan is after the coils. -<%= member_table( -units: "", -legal_range: "DRAWTHRU, BLOWTHRU", -default: "DRAWTHRU", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "DRAWTHRU, BLOWTHRU", + "default": "DRAWTHRU", + "required": "No", + "variability": "constant" + }) +}} **sfanVfDs=_float_** Design or rated (volumetric) air flow at rated pressure. Many fans will actually blow a larger volume of air at reduced pressure: see sfanVfMxF (next). -<%= member_table( -units: "cfm", -legal_range: "_AUTOSIZE_ or _x_ $\\ge$ 0", -default: "_none_", -required: "Yes", -variability: "constant") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "_AUTOSIZE_ or _x_ $\\ge$ 0", + "default": "_none_", + "required": "Yes", + "variability": "constant" + }) +}} **sfanVfMxF=_float_** @@ -271,23 +308,29 @@ Overrun factor: maximum factor by which fan will exceed rated flow (at reduced p We recommend giving 1.0 to eliminate overrun in constant volume modeling. -<%= member_table( -units: "", -legal_range: "_x_ $\\ge$ 1.0", -default: "1.3", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_x_ $\\ge$ 1.0", + "default": "1.3", + "required": "No", + "variability": "constant" + }) +}} **sfanPress*=float*** Design or rated pressure. The work done by the fan is computed as the product of this pressure and the current flow, except that the flow is limited to sfanVfDs. That is, in overrun (see _sfanVfMxF_) it is assumed that large VAV terminal damper openings allow the pressure to drop in proportion to the flow over rated. This work is added to the air as heat at the fan, and is termed "fan heat". Setting sfanPress to zero will eliminate simulated fan heat for theoretical simulation of a coil only. -<%= member_table( -units: "inches H~2~O", -legal_range: "_x_ $\\gt$ 0", -default: "3", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "inches H~2~O", + "legal_range": "_x_ $\\gt$ 0", + "default": "3", + "required": "No", + "variability": "constant" + }) +}} Prior text: At most, one of the next two items may be given: in combination with sfanVfDs and sfanPress, either is sufficient to compute the other. SfanCurvePy is then used to compute the mechanical power at the fan shaft at partial loads; sfanMotEff allows determining the electrical input from the shaft power. @@ -297,34 +340,43 @@ New possible text (after addition of sfanElecPwr): Only one of sfanElecPwr, sfan Fan input power per unit air flow (at design flow and pressure). -<%= member_table( -units: "W/cfm", -legal_range: "_x_ $\\gt$ 0", -default: "derived from sfanEff and sfanShaftBhp", -required: "If sfanEff and sfanShaftBhp not present", -variability: "constant") %> +{{ + member_table({ + "units": "W/cfm", + "legal_range": "_x_ $\\gt$ 0", + "default": "derived from sfanEff and sfanShaftBhp", + "required": "If sfanEff and sfanShaftBhp not present", + "variability": "constant" + }) +}} **sfanEff=_float_** Fan efficiency at design flow and pressure, as a fraction. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "derived from _sfanShaftBhp_ if given, else 0.65", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "derived from _sfanShaftBhp_ if given, else 0.65", + "required": "No", + "variability": "constant" + }) +}} **sfanShaftBhp=_float_** Fan shaft brake horsepower at design flow and pressure. -<%= member_table( -units: "bhp", -legal_range: "_x_ $\\gt$ 0", -default: "derived from _sfanEff_.", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "bhp", + "legal_range": "_x_ $\\gt$ 0", + "default": "derived from _sfanEff_.", + "required": "No", + "variability": "constant" + }) +}} **sfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** @@ -341,23 +393,29 @@ where: If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. -<%= member_table( -units: "", -legal_range: "", -default: "_0, 1, 0, 0, 0 (linear)_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "_0, 1, 0, 0, 0 (linear)_", + "required": "No", + "variability": "constant" + }) +}} **sfanMotEff=_float_** Motor/drive efficiency. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.9", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.9", + "required": "No", + "variability": "constant" + }) +}} **sfanMotPos=_choice_** @@ -374,12 +432,15 @@ END Name of meter, if any, to record energy used by supply fan. End use category used is "Fan". -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} ## AIRHANDLER Return/Relief fan @@ -396,45 +457,57 @@ NONE, no return/relief fan in this AIRHANDLER. END %> -<%= member_table( -units: "", -legal_range: "NONE, RETURN, RELIEF", -default: "NONE", -required: "Yes, if fan present", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "NONE, RETURN, RELIEF", + "default": "NONE", + "required": "Yes, if fan present", + "variability": "constant" + }) +}} **rfanVfDs=_float_** design or rated (volumetric) air flow. -<%= member_table( -units: "cfm", -legal_range: "_AUTOSIZE_ or _x_ $\\gt$ 0", -default: "_sfanVfDs - oaVfDsMn_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "_AUTOSIZE_ or _x_ $\\gt$ 0", + "default": "_sfanVfDs - oaVfDsMn_", + "required": "No", + "variability": "constant" + }) +}} **rfanVfMxF=_float_** factor by which fan will exceed design flow (at reduced pressure). -<%= member_table( -units: "", -legal_range: "_x_ $\\ge$ 1.0", -default: "1.3", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_x_ $\\ge$ 1.0", + "default": "1.3", + "required": "No", + "variability": "constant" + }) +}} **rfanPress=_float_** design or rated pressure. -<%= member_table( -units: "inches H~2~O", -legal_range: "_x_ $\\gt$ 0", -default: "0.75", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "inches H~2~O", + "legal_range": "_x_ $\\gt$ 0", + "default": "0.75", + "required": "No", + "variability": "constant" + }) +}} _At most, one of the next three?? items may be defined: ??_ rework re rfanElecPwr @@ -442,34 +515,43 @@ _At most, one of the next three?? items may be defined: ??_ rework re rfanElecPw Fan input power per unit air flow (at design flow and pressure). -<%= member_table( -units: "W/cfm", -legal_range: "_x_ $>$ 0", -default: "derived from rfanEff and rfanShaftBhp", -required: "If rfanEff and rfanShaftBhp not present", -variability: "constant") %> +{{ + member_table({ + "units": "W/cfm", + "legal_range": "_x_ $>$ 0", + "default": "derived from rfanEff and rfanShaftBhp", + "required": "If rfanEff and rfanShaftBhp not present", + "variability": "constant" + }) +}} **rfanEff=_float_** Fan efficiency at design flow and pressure. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "derived from _rfanShaftBhp_ if given, else 0.65", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "derived from _rfanShaftBhp_ if given, else 0.65", + "required": "No", + "variability": "constant" + }) +}} **rfanShaftBhp=_float_** Fan shaft brake horsepower at design flow and pressure. -<%= member_table( -units: "bhp", -legal_range: "_x_ $\\gt$ 0", -default: "derived from _rfanEff_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "bhp", + "legal_range": "_x_ $\\gt$ 0", + "default": "derived from _rfanEff_", + "required": "No", + "variability": "constant" + }) +}} **rfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** @@ -486,45 +568,57 @@ where: If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. -<%= member_table( -units: "", -legal_range: "", -default: "_0, 1, 0, 0, 0 (linear)_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "_0, 1, 0, 0, 0 (linear)_", + "required": "No", + "variability": "constant" + }) +}} **rfanMotEff=_float_** Motor/drive efficiency. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.9", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.9", + "required": "No", + "variability": "constant" + }) +}} **rfanMotPos=_choice_** Motor/drive position. -<%= member_table( -units: "", -legal_range: "IN_FLOW, EXTERNAL", -default: "IN_FLOW", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "IN_FLOW, EXTERNAL", + "default": "IN_FLOW", + "required": "No", + "variability": "constant" + }) +}} **rfanMtr=_mtrName_** Name of meter, if any, to record power consumption of this return fan. May be same or different from meter used for other fans and coils in this and other air handlers. "Fan" end use category is used. -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} ## AIRHANDLER Heating coil/Modeling Furnaces @@ -560,12 +654,15 @@ NONE, AIRHANDLER has no heat coil, thus no heating capability. END %> -<%= member_table( -units: "", -legal_range: "ELECTRIC, HW, GAS OIL, AHP, NONE", -default: "NONE", -required: "Yes, if coil is present", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "ELECTRIC, HW, GAS OIL, AHP, NONE", + "default": "NONE", + "required": "Yes, if coil is present", + "variability": "constant" + }) +}} **ahhcSched=_choice_** @@ -577,45 +674,57 @@ OFF, coil will not operate, no matter how cold supply air is. A HW coil sh END %> -<%= member_table( -units: "", -legal_range: "AVAIL, OFF", -default: "AVAIL", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "AVAIL, OFF", + "default": "AVAIL", + "required": "No", + "variability": "hourly" + }) +}} **ahhcCapTRat=_float_** Total heating (output) capacity. For an ELECTRIC, AHP, GAS, or OIL coil, this capacity is always available. For an HW heating coil, when the total heat being requested from the coil's HEATPLANT would overload the HEATPLANT, the capacity of all HW coils connected to the plant (in TERMINALs as well as AIRHANDLERs) is reduced proportionately until the requested total heat is within the HEATPLANT's capacity. For AHP, this value represents the AHRI rated capacity at 47 ^o^F outdoor temperature. -<%= member_table( -units: "Btuh", -legal_range: "_AUTOSIZE_ or _x_ $\\ge$ 0", -default: "_none_", -required: "Yes, if coil present", -variability: "hourly") %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "_AUTOSIZE_ or _x_ $\\ge$ 0", + "default": "_none_", + "required": "Yes, if coil present", + "variability": "hourly" + }) +}} **ahhcFxCap=_float_** Capacity sizing multiplier for autoSized heating coils. The default value (1.1) specifies 10% oversizing. -<%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "1.1", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "1.1", + "required": "No", + "variability": "constant" + }) +}} **ahhcMtr=_mtrName_** Name of meter to accumulate energy use by this heat coil. The input energy used by the coil is accumulated in the end use category "Htg"; for a heat pump, the energy used by the supplemental resistance heaters (regular and defrost) is accumulated under the category "hp". Not allowed when\*ahhcType\* is HW, as an HW coil's energy comes from its HEATPLANT, and the HEATPLANT's BOILERs accumulate input energy to meters. -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} The following input is used only when _ahhcType_ is HW: @@ -623,12 +732,15 @@ The following input is used only when _ahhcType_ is HW: Name of HEATPLANT supporting hot water coil. -<%= member_table( -units: "", -legal_range: "_name of a HEATPLANT_", -default: "_none_", -required: "if _ahhcType_ is HW", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a HEATPLANT_", + "default": "_none_", + "required": "if _ahhcType_ is HW", + "variability": "constant" + }) +}} The following inputs are used only for furnaces (_ahhcType_ = GAS or OIL). @@ -638,23 +750,29 @@ One of the next two items, but not both, **must** be given for furnaces: Rated energy input ratio (input energy/output energy) at full power. -<%= member_table( -units: "", -legal_range: "_x_ $\\ge$ 1", -default: "_none_", -required: "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "_x_ $\\ge$ 1", + "default": "_none_", + "required": "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", + "variability": "hourly" + }) +}} **ahhcEffR=_float_** Rated efficiency (output energy/input energy; 1/ahhcEirR) at full power -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "_none_", -required: "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "_none_", + "required": "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", + "variability": "hourly" + }) +}} **ahhcPyEi=$k_0$, $k_1$, $k_2$, $k_3$** @@ -670,12 +788,15 @@ $$\text{pyEi}(\text{plrAv}) = 0.01861 + 1.094209 \cdot \textbf{plrAv} - 0.112819 Note that the value of this polynomial adjusts the energy input, not the energy input ratio, for part load operation. -<%= member_table( -units: "", -legal_range: "", -default: "0.01861, 1.094209, -0.112819, 0.0.", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "0.01861, 1.094209, -0.112819, 0.0.", + "required": "No", + "variability": "constant" + }) +}} **ahhcStackEffect=_float_** @@ -700,12 +821,15 @@ The factor "`sqrt(200.-@Top.tDbO)`" represents the volume of infiltrated air tha The divisor "`/ (10*68*sqrt(200))`" is to make the value 0.1 when tDbO is 0, that is, to make the stack effect loss use 10% of unused load when it is 0 degrees out. The actual modeling engineer must know enough about his building to be able to estimate the additional infiltration load at some temperature. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0", + "required": "No", + "variability": "hourly" + }) +}} The following heat coil input members, beginning with _ahp-_, are used when modeling the heating function of an air source heat pump with the air handler heat coil, that is, when _ahhcType_= AHP is given. Also, see the "AIRHANDLER Crankcase Heater" section with regard to specifying the heat pump's crankcase heater. @@ -713,100 +837,127 @@ The following heat coil input members, beginning with _ahp-_, are used when mode AHRI steady state (continuous operation) rated capacity at 70 degrees F indoor (return) air temp, and 17 degrees F outdoor temp, respectively. These values reflect no cycling, frost, or defrost degradation. To help you find input errors, the program issues an error message if ahpCap17 >= ahhcCapTRat. -<%= member_table( -units: "Btuh", -legal_range: "_x_ $\\gt$ 0", -default: "_none_", -required: "Yes, for AHP coil", -variability: "constant") %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "_x_ $\\gt$ 0", + "default": "_none_", + "required": "Yes, for AHP coil", + "variability": "constant" + }) +}} **ahpCapRat1747=_float_** The ratio of AHRI steady state (continuous operation) rated capacities at 17 and 47 degrees F outdoor temp. This is used to determine _ahpCap35_ when _ahhcCapTRat_ is AUTOSIZEd. -<%= member_table( -units: "", -legal_range: "_x_ $\\gt$ 0", -default: "0.6184", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_x_ $\\gt$ 0", + "default": "0.6184", + "required": "No", + "variability": "constant" + }) +}} **ahpCapRat9547=_float_** Ratio of ahccCapTRat to ahhcCapTRat. This ratio is used for defaulting of AUTOSIZEd heat pump heating and cooling capacities such that they have consistent values as is required given that a heat pump is a single device. If not given, ahpCapRat9547 is determined during calculations using the relationship ahccCapTRat = 0.98 \* ahhcCapTRat + 180 (derived via correlation of capacities of a set of real units). -<%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "See above", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "See above", + "required": "No", + "variability": "constant" + }) +}} **ahpCap35=_float_** AHRI steady state (continuous operation) rated capacity at 35 F outdoor temp, reflecting frost buildup and defrost degradation but no cycling. Unlikely to be available for input; if not given, will be defaulted to _ahpFd35Df_ (next description) times a value determined by linear interpolation between the given _ahpCap17_ and _ahhcCapTRat_ values. If _ahpCap35_ is given, CSE will issue an error message if it is greater than value determined by linear interpolation between _ahpCap17_ and _ahhcCapTRat_. -<%= member_table( -units: "Btuh", -legal_range: "_x_ $\\gt$ 0", -default: "from ahpFd35Df", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "_x_ $\\gt$ 0", + "default": "from ahpFd35Df", + "required": "No", + "variability": "constant" + }) +}} **ahpFd35Df=_float_** Default frost/defrost degradation factor at 35 F: reduction of output at unchanged input, due to defrosting and due to frost on outdoor coil. Used in determining default value for _ahpCap35_ (preceding description); not used if _ahpCap35_ is given. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.85", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.85", + "required": "No", + "variability": "constant" + }) +}} **ahpCapIa=_float_** Capacity correction factor for indoor (return) air temperature, expressed as a fraction reduction in capacity per degree above 70F. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.004", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.004", + "required": "No", + "variability": "constant" + }) +}} **ahpCapSupH=_float_** Output capacity of the supplemental reheat coil used when heat pump alone cannot meet the load or to offset the defrost cooling load. Energy consumed by this heater is accumulated in category "HPBU" of ahhcMeter (whereas energy consumption of the heat pump compressor is accumulated under category "Htg"). -<%= member_table( -units: "Btu/hr", -legal_range: "_x_ $\\ge$ 0", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "Btu/hr", + "legal_range": "_x_ $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **ahpEffSupH=_float_** Efficiency of the supplemental reheat coil. Use values other than the default for gas supplemental heaters. -<%= member_table( -units: "", -legal_range: "_x_ $\\gt$ 0", -default: "1.0", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "_x_ $\\gt$ 0", + "default": "1.0", + "required": "No", + "variability": "hourly" + }) +}} **ahpSupHMtr=_mtrName_** Specifies a meter for recording supplemental heater energy use. End use category "HPBU" is used. -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} The next seven inputs specify frost buildup and defrosting and their effect on capacity. @@ -832,12 +983,15 @@ In other words, the curve of capacity loss due to frost buildup follows straight An error will occur unless _ahpTFrMn_ < _ahpTFrPk_ < _ahpTFrMx_ and _ahpTFrMn_ < 35 < *ahpTFrMx*. -<%= member_table( -units: "^o^F", -legal_range: "_x_ $\\gt$ 0", -default: "_ahpTFrMn_: 17, _ahpTFrMx_: 47, _ahpTFrPk_: 42", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_x_ $\\gt$ 0", + "default": "_ahpTFrMn_: 17, _ahpTFrMx_: 47, _ahpTFrPk_: 42", + "required": "No", + "variability": "constant" + }) +}} **ahpDfrFMn=_float_** @@ -859,23 +1013,29 @@ During the fraction of the time spent defrosting, the heat pump's input remains The program will issue an error message if _ahpDfrFMx_ $\le$ _ahpDfrFMn_. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "_ahpDfrFMn_: .0222, (2 minutes/90 minutes), _ahpDfrFMx_:.0889, (8 minutes / 90 minutes)", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "_ahpDfrFMn_: .0222, (2 minutes/90 minutes), _ahpDfrFMx_:.0889, (8 minutes / 90 minutes)", + "required": "No", + "variability": "constant" + }) +}} **ahpDfrCap=_float_** Cooling capacity (to air handler supply air) during defrosting. Program separately computes the lost heating capacity during defrosting, but effects of switchover transient should be included in _ahpDfrCap_. -<%= member_table( -units: "Btuh", -legal_range: "_x_ $\\neq$ 0", -default: "2 $\\cdot$ _ahpCap17_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "_x_ $\\neq$ 0", + "default": "2 $\\cdot$ _ahpCap17_", + "required": "No", + "variability": "constant" + }) +}} **ahpTOff=_float_** @@ -883,12 +1043,15 @@ variability: "constant") %> Heat pump low temperature cutout setpoints. Heat pump is disabled (only the supplemental resistance heater operates) when outdoor temperature falls below _ahpTOff_, and is re-enabled when temperature rises above _ahpTOn_. Different values may be given to simulate thermostat differential. _ahpTOff_ must be $\le$ _ahpTOn_; equal values are accepted. -<%= member_table( -units: "^o^F", -legal_range: "", -default: "_ahpTOff_: 5, _ahpTOn_: 12", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "", + "default": "_ahpTOff_: 5, _ahpTOn_: 12", + "required": "No", + "variability": "constant" + }) +}} The next four inputs specify the heating power input for an air source heat pump: @@ -898,34 +1061,43 @@ The next four inputs specify the heating power input for an air source heat pump Steady state (full power, no cycling) coeffient of performance for compressor and crankcase heater at 70 degrees F indoor (return) air temp and 47 and 17 degrees F outdoor temp, respectively. -<%= member_table( -units: "kW", -legal_range: "_x_ $\\gt$ 0", -default: "_none_", -required: "Yes, for AHP coil", -variability: "constant") %> +{{ + member_table({ + "units": "kW", + "legal_range": "_x_ $\\gt$ 0", + "default": "_none_", + "required": "Yes, for AHP coil", + "variability": "constant" + }) +}} **ahpInIa=_float_** Indoor (return) air temp power input correction factor: fraction increase in steady-state input per degree above 70 F, or decrease below 70F. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.004", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.004", + "required": "No", + "variability": "constant" + }) +}} **ahpCd=_float_** AHRI cycling degradation coefficient: ratio of fraction drop in system coefficient of performance (COP) to fraction drop in capacity when cycling, from steady-state values, in AHRI 47 F cycling performance tests. A value of .25 means that if the heat pump is cycled to drop its output to 20% of full capacity (i.e. by the fraction .8), its COP will drop by .8 \* .25 = .2. Here COP includes all energy inputs: compressor, crankcase heater, defrost operation, etc. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.25", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.25", + "required": "No", + "variability": "constant" + }) +}} The following four air handler heat coil members allow specification of auxiliary input power consumption associated with the heat coil (or furnace) under the indicated conditions. The single description box applies to all four. @@ -933,23 +1105,29 @@ The following four air handler heat coil members allow specification of auxiliar Auxiliary energy used by the heating coil. -<%= member_table( -units: "Btu/hr", -legal_range: "_x_ $\\ge$ 0", -default: "0", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "Btu/hr", + "legal_range": "_x_ $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "hourly" + }) +}} **ahhcAuxMtr=_mtrName_** Specifies a meter for recording auxiliary energy use. End use category "Aux" is used. -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} ## AIRHANDLER Cooling coil @@ -969,12 +1147,15 @@ NONE, AIRHANDLER has no cooling coil and no cooling capability. END %> -<%= member_table( -units: "", -legal_range: "ELECTRIC, DX, CHW, NONE", -default: "NONE", -required: "Yes, if coil present", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "ELECTRIC, DX, CHW, NONE", + "default": "NONE", + "required": "Yes, if coil present", + "variability": "constant" + }) +}} **ahccSched*=choice*** @@ -986,12 +1167,15 @@ OFF, Cooling coil will not operate no matter how hot the supply air is. To avoid END %> -<%= member_table( -units: "", -legal_range: "AVAIL, OFF", -default: "AVAIL", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "AVAIL, OFF", + "default": "AVAIL", + "required": "No", + "variability": "constant" + }) +}} **ahccCapTRat=_float_** @@ -999,56 +1183,71 @@ Total rated capacity of coil: sum of its "sensible" (heat-removing) and "latent" For coil specification conditions (a.k.a. rating conditions or design conditions), see _ahccDsTDbEn_, _ahccDsTWbEn_, *ahccDsTDbCnd*and *ahccVfR*below (see index). -<%= member_table( -units: "Btuh", -legal_range: "_AUTOSIZE_ or _x_ $>$ 0", -default: "_none_", -required: "Yes", -variability: "constant") %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "_AUTOSIZE_ or _x_ $>$ 0", + "default": "_none_", + "required": "Yes", + "variability": "constant" + }) +}} **ahccCapSRat=_float_** Sensible (heat-removing) rated capacity of cooling coil. Not used with CHW coils. -<%= member_table( -units: "Btuh", -legal_range: "_x_ $>$ 0", -default: "_none_", -required: "Yes", -variability: "constant") %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "_x_ $>$ 0", + "default": "_none_", + "required": "Yes", + "variability": "constant" + }) +}} **ahccSHRRat=_float_** Rated sensible heat ratio (_ahccCapSRat_/_ahccCapTRat_) for cooling coil. Default based on correlation to _ahccVfRperTon_. Not used with CHW coils. -<%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "based on _ahccVfRperTon_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "based on _ahccVfRperTon_", + "required": "No", + "variability": "constant" + }) +}} **ahccFxCap=_float_** Capacity sizing multiplier for autoSized cooling coils. The default value (1.1) specifies 10% oversizing. -<%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "1.1", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "1.1", + "required": "No", + "variability": "constant" + }) +}} **ahccMtr=_mtrName_** Name of meter, if any, to record energy use of air handler cool coil. End use category "Clg" is used. Not used with CHW coils, because the input energy use for a CHW coil is recorded by the COOLPLANT's CHILLERs. -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} The following six members are used with DX cooling coils. @@ -1056,34 +1255,43 @@ The following six members are used with DX cooling coils. Minimum (effective surface) temperature of coil (evaporator). Represents refrigerant setpoint, or cutout to prevent freezing. Coil model will reduce output to keep simulated coil from getting colder than this, even though it lets supply air get warmer than setpoint. Should default be 35?? -<%= member_table( -units: "^o^F", -legal_range: "_x_ $>$ 0", -default: "40^o^F", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_x_ $>$ 0", + "default": "40^o^F", + "required": "No", + "variability": "constant" + }) +}} **ahccK1=_float_** Exponent in power relationship expressing coil effectiveness as a function of relative air flow. Used as K1 in the relationship ntu = ntuR \* relCfmk1, which says that the "number of transfer units" (on the coil outside or air side) varies with the relative air flow raised to the K1 power. Used with CHW as well as DX coils; for a CHW coil, ntuR in the formula is _ahccNtuoDs_. -<%= member_table( -units: "", -legal_range: "_x_ $<$ 0", -default: "-0.4", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_x_ $<$ 0", + "default": "-0.4", + "required": "No", + "variability": "constant" + }) +}} **ahccBypass=_float_** Fraction of air flow which does NOT flow through DX cooling coil, for better humidity control. Running less of the air through the coil lets the coil run colder, resulting in greater moisture removal right??. -<%= member_table( -units: "", -legal_range: "0 $\\lt$ _x_ $\\le$ 1", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\lt$ _x_ $\\le$ 1", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} The next three members are used in determining the energy input to a DX coil under various load conditions. The input is derived from the full load energy input ratio for four segments of the part load curve. In the following the part load ratio (plr) is the ratio of the actual sensible + latent load on the coil to the coil's capacity. The coil's capacity is ahccCaptRat, adjusted by the coil model for differences between entering air temperature, humidity, and flow rate and the coil rating conditions. The coil may run at less than capacity even at full fan flow, depending on the air temperature change needed, the moisture content of the entering air, and the relative values of between _sfanVfDs_ and _ahccVfR_. @@ -1105,34 +1313,43 @@ The default values for the following three members are the DOE2 PTAC (Window air DX compressor energy input ratio (EIR) at full load under rated conditions; defined as the full-load electric energy input divided by the rated capacity, both in Btuh; same as the reciprocal of the Coefficient Of Performance (COP). Polynomials given below are used by CSE to adjust the energy input for part load and for off rated flow and temperature conditions. The default value includes outdoor (condenser) fan energy, but not indoor (air handler supply) fan energy. -<%= member_table( -units: "", -legal_range: "", -default: "0.438", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "0.438", + "required": "No", + "variability": "constant" + }) +}} **ahccMinUnldPlr=_float_** Compressor part load ratio (total current load/current capacity) at/above which "Compressor unloading" is used and pydxEirUl (below) is used to adjust the full-load power input to get the current part load power input. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "1 (no unloading)", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "1 (no unloading)", + "required": "No", + "variability": "constant" + }) +}} **ahccMinFsldPlr=_float_** "False Loading" is used between this compressor part load ratio and the plr where unloading is activated (_ahccMinUnldPlr_). In this region, input remains at _pydxEirUl_(*ahccMinUnldPlr).*For plr's less than _ahccMinFsldPlr_, cycling is used, and the power input goes to 0 in a straight line. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ _ahccMinUnldPlr_", -default: "_ahccMinUnldPlr_ (no false loading)", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ _ahccMinUnldPlr_", + "default": "_ahccMinUnldPlr_ (no false loading)", + "required": "No", + "variability": "constant" + }) +}} The following four inputs specify polynomials to approximate functions giving DX coil capacity and power (energy) input as functions of entering temperatures, relative (to ahccVfR) flow, and relative load (plr). In each case several _float_ values may be given, for use as coefficients of the polynomial. The values are ordered from constant to coefficient of highest power. If fewer than the maximum number of values are given, zeroes are used for the trailing (high order) coefficients. @@ -1164,45 +1381,57 @@ The default values for the polynomial coefficients are the DOE2 PTAC values. Coefficients of biquadratic polynomial function of entering air wetbulb and condenser temperatures whose value is used to adjust _ahccCaptRat_ for the actual entering air temperatures. The condenser temperature is the outdoor drybulb, but not less than 70. See discussion in preceding paragraphs. -<%= member_table( -units: "", -legal_range: "", -default: "1.1839345, -0.0081087, 0.00021104, -0.0061425, 0.00000161, -0.0000030", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "1.1839345, -0.0081087, 0.00021104, -0.0061425, 0.00000161, -0.0000030", + "required": "No", + "variability": "constant" + }) +}} **pydxCaptF=a=a, b, c, d** Coefficients of cubic polynomial function of relative flow (entering air cfm/_ahccVfR_) whose value is used to adjust _ahccCaptRat_ for the actual flow. See discussion in preceding paragraphs. -<%= member_table( -units: "", -legal_range: "", -default: "0.8, 0.2, 0.0, 0.0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "0.8, 0.2, 0.0, 0.0", + "required": "No", + "variability": "constant" + }) +}} **pydxCaptFLim=_float_** Upper limit for value of pydxCaptF. -<%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "1.05", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "1.05", + "required": "No", + "variability": "constant" + }) +}} **pydxEirT=_a, b, c, d, e, f_** Coefficients of biquadratic polynomial function of entering air wetbulb and condenser temperatures whose value is used to adjust _ahccEirR_ for the actual entering air temperatures. The condenser temperature is the outdoor air drybulb, but not less than 70. If the entering air wetbulb is less than 60, 60 is used, in this function only. See discussion in preceding paragraphs. -<%= member_table( -units: "", -legal_range: "", -default: "-0.6550461, 0.03889096, -0.0001925, 0.00130464, 0.00013517, -0.0002247", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "-0.6550461, 0.03889096, -0.0001925, 0.00130464, 0.00013517, -0.0002247", + "required": "No", + "variability": "constant" + }) +}} **pydxEirUl=_a, b, c, d_** @@ -1210,12 +1439,15 @@ Coefficients of cubic polynomial function of part load ratio used to adjust ener This polynomial adjusts the full load energy input to part load, not the ratio of input to output, despite the "Eir" in its name. -<%= member_table( -units: "", -legal_range: "", -default: "0.125, 0.875, 0.0, 0.0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "0.125, 0.875, 0.0, 0.0", + "required": "No", + "variability": "constant" + }) +}} The following four members are used only with CHW coils. In addition, _ahccK1,_ described above, is used. @@ -1223,45 +1455,57 @@ The following four members are used only with CHW coils. In addition, _ahccK1,_ name of COOLPLANT supporting CHW coil. COOLPLANTs contain CHILLERs, and are described in Section 5.21. -<%= member_table( -units: "", -legal_range: "_name of a COOLPLANT_", -default: "_none_", -required: "for CHW coil", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a COOLPLANT_", + "default": "_none_", + "required": "for CHW coil", + "variability": "constant" + }) +}} **ahccGpmDs=_float_** Design (i.e. maximum) water flow through CHW coil. -<%= member_table( -units: "gpm", -legal_range: "_x_ $\\ge$ 0", -default: "_none_", -required: "Yes, for CHW coil", -variability: "constant") %> +{{ + member_table({ + "units": "gpm", + "legal_range": "_x_ $\\ge$ 0", + "default": "_none_", + "required": "Yes, for CHW coil", + "variability": "constant" + }) +}} **ahccNtuoDs=_float_** CHW coil outside number of transfer units at design air flow (ahccVfR*, below). See*ahccK1\* above with regard to transfer units at other air flows. -<%= member_table( -units: "", -legal_range: "_x_ $\\gt$ 0", -default: "2", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_x_ $\\gt$ 0", + "default": "2", + "required": "No", + "variability": "constant" + }) +}} **ahccNtuiDs=_float_** CHW coil inside number of transfer units at design water flow (ahccGpmDs, above). -<%= member_table( -units: "", -legal_range: "_x_ $\\gt$ 0", -default: "2", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_x_ $\\gt$ 0", + "default": "2", + "required": "No", + "variability": "constant" + }) +}} The following four members let you give the specification conditions for the cooling coil: the rating conditions, design conditions, or other test conditions under which the coil's performance is known. The defaults are AHRI (Air-Conditioning and Refrigeration Institute) standard rating conditions. @@ -1269,45 +1513,57 @@ The following four members let you give the specification conditions for the coo Design (rating) entering air dry bulb temperature, used with DX and CHW cooling coils. With CHW coils, this input is used only as the temperature at which to convert _ahccVfR_ from volume to mass. -<%= member_table( -units: "^o^F", -legal_range: "_x_ $\\gt$ 0", -default: "80^o^F (AHRI)", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_x_ $\\gt$ 0", + "default": "80^o^F (AHRI)", + "required": "No", + "variability": "constant" + }) +}} **ahccDsTWbEn=_float_** Design (rating) entering air wet bulb temperature, for CHW coils. -<%= member_table( -units: "^o^F", -legal_range: "_x_ $\\gt$ 0", -default: "67^o^F (AHRI)", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_x_ $\\gt$ 0", + "default": "67^o^F (AHRI)", + "required": "No", + "variability": "constant" + }) +}} **ahccDsTDbCnd=_float_** Design (rating) condenser temperature (outdoor air temperature) for DX coils. -<%= member_table( -units: "^o^F", -legal_range: "_x_ $\\gt$ 0", -default: "95^o^F (AHRI)", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_x_ $\\gt$ 0", + "default": "95^o^F (AHRI)", + "required": "No", + "variability": "constant" + }) +}} **ahccVfR=_float_** Design (rating) (volumetric) air flow rate for DX or CHW cooling coil. The AHRI specification for this test condition for CHW coils is "450 cfm/ton or less", right?? -<%= member_table( -units: "cfm", -legal_range: "_x_ $\\gt$ 0", -default: "DX coil: _ahccVfRperTon_ CHW coil: _sfanVfDs_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "_x_ $\\gt$ 0", + "default": "DX coil: _ahccVfRperTon_ CHW coil: _sfanVfDs_", + "required": "No", + "variability": "constant" + }) +}} The following four members permit specification of auxiliary input power use associated with the cooling coil under the conditions indicated. @@ -1315,34 +1571,43 @@ The following four members permit specification of auxiliary input power use ass Design default _ahccVfR_ per ton (12000 Btuh) of _ahhcCapTRat_. -<%= member_table( -units: "", -legal_range: "x $>$ 0", -default: "400.0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "400.0", + "required": "No", + "variability": "constant" + }) +}} **ahccAux=_float_** Auxiliary energy used by the cooling coil. -<%= member_table( -units: "Btu/hr", -legal_range: "_x_ $\\ge$ 0", -default: "0", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "Btu/hr", + "legal_range": "_x_ $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "hourly" + }) +}} **ahccAuxMtr=_mtrName_** Specifies a meter for recording auxiliary energy use. End use category "Aux" is used. -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} ## AIRHANDLER Outside Air @@ -1363,34 +1628,43 @@ END If the minimum outside air flow is greater than the total requested by the terminals served by the air handler, then 100% outside air at the latter flow is used. To insure minimum outside air cfm to the zones, use suitable terminal minimum flows (_tuVfMn_) as well as air handler minimum outside air specifications. -<%= member_table( -units: "", -legal_range: "VOLUME, FRACTION", -default: "VOLUME", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "VOLUME, FRACTION", + "default": "VOLUME", + "required": "No", + "variability": "constant" + }) +}} **oaVfDsMn=_float_** Design minimum outside air flow. If _oaMnCtrl_ is FRACTION, then this is the minimum outside air flow at full air handler flow. See formulas in _oaMnCtrl_ description, just above. -<%= member_table( -units: "cfm", -legal_range: "_x_ $\\ge$ 0", -default: "0.15 times total area of zones served", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "_x_ $\\ge$ 0", + "default": "0.15 times total area of zones served", + "required": "No", + "variability": "constant" + }) +}} **oaMnFrac=_float_** Fraction of minimum outside air to use this hour, normally 1.0. Use a CSE expression that evaluates to 0 for hours you wish to disable the minimum outside air flow, for example to suppress ventilation during the night or during warm-up hours. Intermediate values may be used for intermediate outside air minima. See formulas in _oaMnCtrl_ description, above. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "1.0", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "1.0", + "required": "No", + "variability": "hourly" + }) +}} CAUTION: the minimum outside air flow only applies when the supply fan is running; it won't assure meeting minimum ventilation requirements when used with ahFanCycles = YES (constant volume, fan cycling). @@ -1400,12 +1674,15 @@ For the purposes of airnet zone pressure modeling ONLY, _oaZoneLeak_ specifies t The default assumption is that airhandlers with return or relief fans provide balanced zone flows while half the supply flow leaks from zones served by supply-fan-only airhandlers. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "no return/relief fan: 0.5 else 0", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "no return/relief fan: 0.5 else 0", + "required": "No", + "variability": "hourly" + }) +}} If an _oaEcoType_ choice other than NONE is given, an economizer will be simulated. The economizer will be enabled when the outside temperature is below oaLimT _AND_ the outside air enthalpy is below oaLimE. When enabled, the economizer adjusts the economizer dampers to increase the outside air mixed with the return air until the mixture is cooler than the air handler supply temperature setpoint, if possible, or to maximum outside air if the outside air is not cool enough. @@ -1433,23 +1710,29 @@ END Economizer outside air temperature high limit. The economizer is disabled (outside air flow is reduced to a minimum) when the outside air temperature is greater than _oaLimT_. A number may be entered, or "RA" to specify the current Return Air temperature. _OaLimT_ may be scheduled to a low value, for example -99, if desired to disable the economizer at certain times. -<%= member_table( -units: "^o^F", -legal_range: "_number_ or RA", -default: "RA (return air temperature)", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_number_ or RA", + "default": "RA (return air temperature)", + "required": "No", + "variability": "hourly" + }) +}} **oaLimE=_float_ or _RA_** Economizer outside air enthalpy high limit. The economizer is disabled (outside air flow is reduced to a minimum) when the outside air enthalpy is greater than _oaLimE_. A number may be entered, or "RA" to specify the current Return Air enthalpy. _OaLimE_ may be scheduled to a low value, for example -99, if desired to disable the economizer at certain times. -<%= member_table( -units: "Btu/^o^F", -legal_range: "_number_ or RA", -default: "999 (enthalpy limit disabled)", -required: "No", -variability: "hourly") %> +{{ + member_table({ + "units": "Btu/^o^F", + "legal_range": "_number_ or RA", + "default": "999 (enthalpy limit disabled)", + "required": "No", + "variability": "hourly" + }) +}} _oaOaLeak_ and _oaRaLeak_ specify leakages in the economizer dampers, when present. The leaks are constant-cfm flows, expressed as fractions of the maximum possible flow. Thus, when the current flow is less than the maximum possible, the range of operation of the economizer is reduced. When the two damper leakages add up to more than the current air handler flow, outside and return air are used in the ratio of the two leakages and the economizer, if enabled, is ineffective. @@ -1457,23 +1740,29 @@ _oaOaLeak_ and _oaRaLeak_ specify leakages in the economizer dampers, when prese Outside air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. If an economizer is present, _oaOaLeak_ is a fraction of the supply fan design cfm, _sfanVfDs_. Otherwise, _oaOaLeak_ is a fraction of the design minimum outside air flow _oaVfDsMn_. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0.1", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0.1", + "required": "No", + "variability": "constant" + }) +}} **oaRaLeak=_float_** Return air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. Expressed as a fraction of the supply fan design cfm, _sfanVfDs_. Not used when no economizer is being modeled. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0.1", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0.1", + "required": "No", + "variability": "constant" + }) +}} ## AIRHANDLER Heat Recovery @@ -1483,143 +1772,182 @@ The following data members are used to describe a heat exchanger for recovering Heat exchanger design or rated flow. -<%= member_table( -units: "cfm", -legal_range: "_x_ $\\gt$ 0", -default: "_oaVfDsMn_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "_x_ $\\gt$ 0", + "default": "_oaVfDsMn_", + "required": "No", + "variability": "constant" + }) +}} **oaHXf2=_float_** Heat exchanger flow fraction (of design flow) used for second set of effectivenesses. -<%= member_table( -units: "", -legal_range: "0 $\\lt$ _x_ $\\lt$ 1.0", -default: "0.75", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\lt$ _x_ $\\lt$ 1.0", + "default": "0.75", + "required": "No", + "variability": "constant" + }) +}} **oaHXSenEffHDs=_float_** Heat exchanger sensible effectiveness in heating mode at the design flow rate. Specifying input triggers modeling of heat recovery. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -required: "when modeling heat recovery", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "required": "when modeling heat recovery", + "variability": "constant" + }) +}} **oaHXSenEffHf2=_float_** Heat exchanger sensible effectiveness in heating mode at the second flow rate (**oaHXf2**). -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **oaHXLatEffHDs=_float_** Heat exchanger latent effectiveness in heating mode at the design flow rate. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **oaHXLatEffHf2=_float_** Heat exchanger latent effectiveness in heating mode at the second flow rate (**oaHXf2**). -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **oaHXSenEffCDs=_float_** Heat exchanger sensible effectiveness in cooling mode at the design flow rate. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **oaHXSenEffCf2=_float_** Heat exchanger sensible effectiveness in cooling mode at the second flow rate (**oaHXf2**). -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **oaHXLatEffCDs=_float_** Heat exchanger latent effectiveness in cooling mode at the design flow rate. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **oaHXLatEffCf2=_float_** Heat exchanger latent effectiveness in cooling mode at the second flow rate (**oaHXf2**). -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1.0", -default: "0", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **oaHXBypass=_choice_** Yes/No choice for enabling heat exchanger bypass. If selected, the outdoor air will bypass the heat exchanger when otherwise the heat exchanger would require more heating or cooling energy to meet the respective setpoints. -<%= member_table( -units: "", -legal_range: "NO, YES", -default: "NO", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "NO, YES", + "default": "NO", + "required": "No", + "variability": "constant" + }) +}} **oaHXAuxPwr=_float_** Auxiliary power required to operate the heat recovery device (e.g., wheel motor, contorls). -<%= member_table( -units: "W", -legal_range: "_x_ $\\ge$ 0", -default: "0", -required: "No", -variability: "subhourly") %> +{{ + member_table({ + "units": "W", + "legal_range": "_x_ $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "subhourly" + }) +}} **oaHXAuxMtr=_mtrName_** Name of meter, if any, to record energy used by auxiliary components of the heat recovery system. -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} ## AIRHANDLER Leaks and Losses @@ -1631,23 +1959,29 @@ If unequal leaks are specified, at present (July 1992) CSE will use the average Supply duct leakage to outdoors, expressed as a fraction of supply fan design flow (_sfanVfDs_). Use 0 if the duct is indoors. A constant-cfm leak is modeled, as the pressure is constant when the fan is on. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.01", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.01", + "required": "No", + "variability": "constant" + }) +}} **ahROLeak=_float_** Return duct leakage FROM outdoors, expressed as a fraction of _sfanVfDs_. Use 0 if the duct is indoors. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.01", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.01", + "required": "No", + "variability": "constant" + }) +}} _AhSOLoss_ and _ahROLoss_ represent conductive losses from the common supply and return ducts to the outdoors. For an individual zone's conductive duct loss, see TERMINAL member _tuSRLoss_. Losses here are expressed as a fraction of the temperature difference which is lost. For example, if the supply air temperature is 120, the outdoor temperature is 60, and the pertinent loss is .1, the effect of the loss as modeled will be to reduce the supply air temperature by 6 degrees ( .1 \* (120 - 60) ) to 114 degrees. CSE currently models these losses a constant _TEMPERATURE LOSSes_ regardless of cfm. @@ -1655,23 +1989,29 @@ _AhSOLoss_ and _ahROLoss_ represent conductive losses from the common supply and Supply duct loss/gain to the outdoors. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.1", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.1", + "required": "No", + "variability": "constant" + }) +}} **ahROLoss=_float_** Return duct heat loss/gain to the outdoors. -<%= member_table( -units: "", -legal_range: "0 $\\le$ _x_ $\\le$ 1", -default: "0.1", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "default": "0.1", + "required": "No", + "variability": "constant" + }) +}} ## AIRHANDLER Crankcase Heater @@ -1697,34 +2037,43 @@ PTC_CLO, Same as corresponding choices above except zero crankcase heater input END %> -<%= member_table( -units: "", -legal_range: "CONSTANT CONSTANT_CLO PTC PTC_CLO TSTAT NONE", -default: "PTC_CLO if _ahhcType_ is AHP else NONE ", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "CONSTANT CONSTANT_CLO PTC PTC_CLO TSTAT NONE", + "default": "PTC_CLO if _ahhcType_ is AHP else NONE ", + "required": "No", + "variability": "constant" + }) +}} **cchPMx=_float_** Crankcase resistance heater input power; maximum power if _cchCM_ is PTC or PTC_CLO. -<%= member_table( -units: "kW", -legal_range: "_x_ $\\gt$ 0", -default: ".4 kW", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "kW", + "legal_range": "_x_ $\\gt$ 0", + "default": ".4 kW", + "required": "No", + "variability": "constant" + }) +}} **cchPMn=_float_** Crankcase heater minimum input power if _cchCM_ is PTC or PTC_CLO, disallowed for other _cchCM's_. > 0. -<%= member_table( -units: "kW", -legal_range: "_x_ $\\gt$ 0", -default: ".04 kW", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "kW", + "legal_range": "_x_ $\\gt$ 0", + "default": ".04 kW", + "required": "No", + "variability": "constant" + }) +}} **cchTMx=_float_** @@ -1734,23 +2083,29 @@ For _cchCM_ = PTC or PTC_CLO, the low temperature (max power) and high temperatu (Note that actual thermostat setpoints probably cannot be used for _cchTMx_ and _cchTMn_ inputs, because the model assumes the difference between the oil temperature and the outdoor temperature is constant (_cchDT_) regardless of the heater power. -<%= member_table( -units: "^o^F", -legal_range: "", -default: "_cchTMn_: 0; _cchTMx_: 150", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "", + "default": "_cchTMn_: 0; _cchTMx_: 150", + "required": "No", + "variability": "constant" + }) +}} **cchDT=_float_** For _cchCM_ = PTC or PTC_CLO, how much warmer than the outdoor temp CSE assumes the crankcase oil to be in subhours when the compressor does not run. If the compressor runs at all in the subhour, the oil is assumed to be warmer than _cchTMn_. -<%= member_table( -units: "^o^F", -legal_range: "", -default: "20^o^F", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "", + "default": "20^o^F", + "required": "No", + "variability": "constant" + }) +}} **cchTOn=_float_** @@ -1758,34 +2113,43 @@ variability: "constant") %> For _cchCM_ = TSTAT, in subhours when compressor does not run, the crankcase heater turn-on and turn-off outdoor temperatures, respectively. Unequal values may be given to simulate thermostat differential. When the compressor runs at all in a subhour, the crankcase heater is off for the entire subhour. -<%= member_table( -units: "^o^F", -legal_range: "_cchTOff_ $\\ge$ _cchTOn_", -default: "_cchTOn_: 72^o^F; _chcTOff_: _chcTOn_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "_cchTOff_ $\\ge$ _cchTOn_", + "default": "_cchTOn_: 72^o^F; _chcTOff_: _chcTOn_", + "required": "No", + "variability": "constant" + }) +}} **cchMtr=_name of a METER_** METER to record crankcase heater energy use, category "Aux"; not recorded if not given. -<%= member_table( -units: "", -legal_range: "_name of a METER_", -default: "_not recorded_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "_name of a METER_", + "default": "_not recorded_", + "required": "No", + "variability": "constant" + }) +}} **endAirHandler** Indicates the end of the air handler definition. Alternatively, the end of the air handler definition can be indicated by the declaration of another object. -<%= member_table( -units: "", -legal_range: "", -default: "_none_", -required: "No", -variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "_none_", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/battery.md b/doc/src/docs/input-data/battery.md index 7d358d844..b431e3ead 100644 --- a/doc/src/docs/input-data/battery.md +++ b/doc/src/docs/input-data/battery.md @@ -8,13 +8,15 @@ The modeler can set limits and constraints on capacities and flows and the assoc Name of the battery system. Given after the word BATTERY. -<%= member_table( - units: "", - legal_range: "63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **btMeter=*choice*** @@ -22,61 +24,71 @@ Name of a METER to which the BATTERY's charge/discharge energy flows are recorde Note btMeter also determines the source for the probe value *loadSeen*. See discussion and example under btChgReq (below). -<%= member_table( - units: "", - legal_range: "meter name ", - default: "*none* ", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "meter name ", + "default": "*none* ", + "required": "No", + "variability": "constant" + }) +}} **btChgEff=*float*** The charging efficiency of storing electricity into the BATTERY system. A value of 1.0 means that no energy is lost and 100% of charge energy enters and is stored in the battery. -<%= member_table( - units: "", - legal_range: "0 < x $\\le$ 1", - default: "0.975", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 < x $\\le$ 1", + "default": "0.975", + "required": "No", + "variability": "hourly" + }) +}} **btDschgEff=*float*** The discharge efficiency for when the BATTERY system is discharging power. A value of 1.0 means that no energy is lost and 100% of discharge energy leaves the system. -<%= member_table( - units: "", - legal_range: "0 < x $\\le$ 1", - default: "0.975", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 < x $\\le$ 1", + "default": "0.975", + "required": "No", + "variability": "hourly" + }) +}} **btMaxCap=*float*** This is the maximum amount of energy that can be stored in the BATTERY system in kilowatt-hours. Once the BATTERY has reached its maximum capacity, no additional energy will be stored. -<%= member_table( - units: "kWh", - legal_range: "x $\\ge$ 0", - default: "16", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "kWh", + "legal_range": "x $\\ge$ 0", + "default": "16", + "required": "No", + "variability": "constant" + }) +}} **btInitSOE=*float*** The initial state of energy of the BATTERY system as a fraction of the total capacity. If `btInitSOE` is specified, the battery state-of-energy at the beginning of the actual simulation will be set to the amount specified, regardless of whether there was a warm-up period or not. If `btInitSOE` is NOT specififed, it will default to 1.0 (i.e., 100%) at the beginning of the warmup period (if any). -<%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ 0", - default: "1.0", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ x $\\le$ 0", + "default": "1.0", + "required": "No", + "variability": "constant" + }) +}} **btInitCycles=*int*** @@ -88,37 +100,43 @@ Note: a more robust life model will need not only cycle counts but cycles by dep <% end %> -<%= member_table( - units: "number of cycles", - legal_range: "x $\\ge$ 0", - default: "0", - required: "No", - variability: "runly") - %> +{{ + member_table({ + "units": "number of cycles", + "legal_range": "x $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "runly" + }) +}} **btMaxChgPwr=*float*** The maximum rate at which the BATTERY can be charged in kilowatts (i.e., energy flowing *into* the BATTERY). -<%= member_table( - units: "kW", - legal_range: "x $\\ge$ 0", - default: "4", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "kW", + "legal_range": "x $\\ge$ 0", + "default": "4", + "required": "No", + "variability": "hourly" + }) +}} **btMaxDschgPwr=*float*** The maximum rate at which the BATTERY can be discharged in kilowatts (i.e., energy flowing *out of* the BATTERY). -<%= member_table( - units: "kW", - legal_range: "x $\\ge$ 0", - default: "4", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "kW", + "legal_range": "x $\\ge$ 0", + "default": "4", + "required": "No", + "variability": "hourly" + }) +}} **btControlAlg=*choice*** @@ -132,13 +150,15 @@ END Note btControlAlg has hourly variability, allowing dynamic algorithm selection. In California compliance applications, TDVPEAKSAVE is typically used only on days with high TDV peaks. -<%= member_table( - units: "", - legal_range: "DEFAULT or TDVPEAKSAVE", - default: "DEFAULT", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "DEFAULT or TDVPEAKSAVE", + "default": "DEFAULT", + "required": "No", + "variability": "hourly" + }) +}} **btChgReq=*float*** @@ -152,13 +172,15 @@ btChgReq can be set by an expression to allow complex energy management/dispatch The sign conventions here are tricky. min(@BATTERY[ 1].loadSeen, 0) produces a value <=0 that is the negative of the amount of surplus energy available. A positive btChgReq value requests charging, hence "-" (minus sign) in front of the min(). Conversely, max( @BATTERY[ 1].loadSeen, 0) results in a value >= 0 indicating the net energy needed by the building. To request discharge, btChgReq must be negative, so "-" is also needed in the discharge expression. (The @BATTERY[1] references mean "this battery", assuming there is only one battery being modelled. In multi-battery situations, the current BATTERY's index or name must be included within the "[ ]".) -<%= member_table( - units: "kW", - legal_range: "", - default: "btMeter net load", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "kW", + "legal_range": "", + "default": "btMeter net load", + "required": "No", + "variability": "hourly" + }) +}} **btUseUsrChg=*choice*** @@ -168,13 +190,15 @@ Former yes/no choice that currently has no effect. Deprecated, will be removed Optionally indicates the end of the BATTERY definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none* ", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none* ", + "required": "No", + "variability": "constant" + }) +}} -<%= member_table( - units: "^o^F", - legal_range: "*unrestricted*", - default: "*none*", - required: "Required if *sfExCnd* = SPECIFIEDT", - variability: "hourly") - %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "*unrestricted*", + "default": "*none*", + "required": "Required if *sfExCnd* = SPECIFIEDT", + "variability": "hourly" + }) +}} **dsInsulR=*float*** Insulation thermal resistance *not including* surface conductances. dsInsulR and dsInsulMat are used to calculate insulation thickness (see below). Duct insulation is modeled as a pure conductance (no mass). -<%= member_table( - units: "ft^2^-^o^F-hr / Btu", - legal_range: "x $\\ge$ 0", - default: "0", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "ft^2^-^o^F-hr / Btu", + "legal_range": "x $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **dsInsulMat=*matName*** Name of insulation MATERIAL. The conductivity of this material at 70 ^o^F is combined with dsInsulR to derive the duct insulation thickness. If omitted, a typical fiberglass material is assumed having conductivity of 0.025 Btu/hr-ft^2^-F at 70 ^o^F and a conductivity coefficient of .00418 1/F (see MATERIAL). In addition, insulation conductivity is adjusted during the simulation in response its average temperature. As noted with dsInsulR, duct insulation is modeled as pure conductance -- MATERIAL matDens and matSpHt are ignored. -<%= member_table( - units: "", - legal_range: "name of a *MATERIAL*", - default: "fiberglass", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of a *MATERIAL*", + "default": "fiberglass", + "required": "No", + "variability": "constant" + }) +}} **dsLeakF=*float*** Duct leakage. Return duct leakage is modeled as if it all occurs at the segment inlet. Supply duct leakage is modeled as if it all occurs at the outlet. -<%= member_table( - units: "", - legal_range: "0 $<$ x $\\le$ 1", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $<$ x $\\le$ 1", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **dsExH=*float*** Outside (exposed) surface convection coefficient. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "x $\\ge$ 0", - default: ".54", - required: "No", - variability: "subhourly") - %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": "x $\\ge$ 0", + "default": ".54", + "required": "No", + "variability": "subhourly" + }) +}} **endDuctSeg** Optionally indicates the end of the DUCTSEG definition. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/export.md b/doc/src/docs/input-data/export.md index f77ffed63..7799b1009 100644 --- a/doc/src/docs/input-data/export.md +++ b/doc/src/docs/input-data/export.md @@ -14,179 +14,211 @@ Input for EXPORTs is similar to input for REPORTs; refer to the REPORT descripti Name of export. Give after the word EXPORT. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **exExportfile=*fname*** Name of export file to which current export will be written. If omitted, if EXPORT is within an EXPORTFILE object, report will be written to that export file, or else to the automatically-supplied EXPORTFILE "Primary", which by default uses the name of the input file with the extension .csv. -<%= member_table( - units: "", - legal_range: "name of an *EXPORTFILE*", - default: "current *EXPORTFILE*, if any, else 'Primary'", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of an *EXPORTFILE*", + "default": "current *EXPORTFILE*, if any, else 'Primary'", + "required": "No", + "variability": "constant" + }) +}} **exType=*choice*** Choice indicating export type. See descriptions in Section 5.22, REPORT. While not actually disallowed, use of *exType* = ERR, LOG, INP, or ZDD is unexpected. -<%= member_table( - units: "", - legal_range: "ZEB, ZST, MTR, DHWMTR, AH, UDT, or SUM", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "ZEB, ZST, MTR, DHWMTR, AH, UDT, or SUM", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **exFreq=*choice*** Export Frequency: specifies interval for generating rows of export data: -<%= member_table( - units: "", - legal_range: "YEAR, MONTH, DAY, HOUR, HOURANDSUB, SUBHOUR", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "YEAR, MONTH, DAY, HOUR, HOURANDSUB, SUBHOUR", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **exDayBeg=*date*** Initial day of export. Exports for which *exFreq* = YEAR do not allow specification of *exDayBeg* and *exDayEnd*; for MONTH exports, these members are optional and default to include the entire run; for DAY and shorter-interval exports, *exDayBeg* is required and *exDayEnd* defaults to *exDayBeg*. -<%= member_table( - units: "", - legal_range: "*date*", - default: "first day of simulation if *exFreq* = MONTH", - required: "Required for *exTypes* ZEB, ZST, MTR, AH, and UDT if *exFreq* is DAY, HOUR, HOURANDSUB, or SUBHOUR", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*date*", + "default": "first day of simulation if *exFreq* = MONTH", + "required": "Required for *exTypes* ZEB, ZST, MTR, AH, and UDT if *exFreq* is DAY, HOUR, HOURANDSUB, or SUBHOUR", + "variability": "constant" + }) +}} **exDayEnd=*date*** Final day of export period, except for YEAR exports. -<%= member_table( - units: "", - legal_range: "*date*", - default: "last day of simulation if *exFreq*= MONTH, else *exDayBeg*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*date*", + "default": "last day of simulation if *exFreq*= MONTH, else *exDayBeg*", + "required": "No", + "variability": "constant" + }) +}} **exZone=*znName*** Name of ZONE for which a ZEB, ZST, or ZDD export is being requested; ALL and SUM are also allowed except with *exType* = ZST. -<%= member_table( - units: "", - legal_range: "name of a *ZONE*, ALL, SUM", - default: "*none*", - required: "Required for *exTypes* ZDD, ZEB, and ZST.", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of a *ZONE*, ALL, SUM", + "default": "*none*", + "required": "Required for *exTypes* ZDD, ZEB, and ZST.", + "variability": "constant" + }) +}} **exMeter=*mtrName*** Specifies meter(s) whose data is to be exported, for *exType*=MTR. -<%= member_table( - units: "", - legal_range: "name of a *METER*, ALL, SUM", - default: "*none*", - required: "for *exType*=MTR", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of a *METER*, ALL, SUM", + "default": "*none*", + "required": "for *exType*=MTR", + "variability": "constant" + }) +}} **exTu=*tuName*** Specifies air handler(s) to be reported, for *rpType*=TUSIZE or TULOAD. -<%= member_table( - units: "", - legal_range: "name of a TERMINAL, ALL, SUM", - default: "", - required: "Required for *rpType*", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "name of a TERMINAL, ALL, SUM", + "default": "", + "required": "Required for *rpType*", + "variability": "constant" + }) +}} **exDHWMeter=*dhwMtrName*** Specifies DHW meter(s) whose data is to be exported, for *exType*=DHWMTR. -<%= member_table( - units: "", - legal_range: "name of a *DHWMETER*, ALL, SUM", - default: "*none*", - required: "for *exType*=DHWMTR", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of a *DHWMETER*, ALL, SUM", + "default": "*none*", + "required": "for *exType*=DHWMTR", + "variability": "constant" + }) +}} **exAFMeter=*afMtrName*** Air flow meter report. -<%= member_table( - units: "", - legal_range: "*Name of AFMETER*", - default: "0", - required: "No", - variability: "runly") %> +{{ + member_table({ + "units": "", + "legal_range": "*Name of AFMETER*", + "default": "0", + "required": "No", + "variability": "runly" + }) +}} **exAh=ah*Name*** Specifies air handler(s) to be exported, for *exType*=AH. -<%= member_table( - units: "", - legal_range: "name of an *AIRHANDLER*, ALL, SUM", - default: "*none*", - required: "for *exType*=AH", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of an *AIRHANDLER*, ALL, SUM", + "default": "*none*", + "required": "for *exType*=AH", + "variability": "constant" + }) +}} **exBtuSf=*float*** Scale factor used for exported energy values. -<%= member_table( - units: "", - legal_range: "*any multiple of ten*", - default: "1,000,000: energy exported in MBtu.", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*any multiple of ten*", + "default": "1,000,000: energy exported in MBtu.", + "required": "No", + "variability": "constant" + }) +}} **exCond=*expression*** Conditional exporting flag. If given, export rows are generated only when value of expression is non-0. Allowed with *exTypes* ZEB, ZST, MTR, AH, and UDT. -<%= member_table( - units: "", - legal_range: "*any numeric expression*", - default: "1 (exporting enabled)", - required: "No", - variability: "subhour /end of interval") - %> +{{ + member_table({ + "units": "", + "legal_range": "*any numeric expression*", + "default": "1 (exporting enabled)", + "required": "No", + "variability": "subhour /end of interval" + }) +}} **exTitle=*string*** Title for use in export header of User-Defined export. Disallowed if *exType* is not UDT. -<%= member_table( - units: "", - legal_range: "", - default: "User-defined Export", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "User-defined Export", + "required": "No", + "variability": "constant" + }) +}} **exHeader=*choice*** @@ -202,36 +234,43 @@ The *specific* month, day, etc. is NOT shown in the export header (as it is show The field names may be used by a program reading the export to identify the data in the rows which follow; if the program does this, it will not require modification when fields are added to or rearranged in the export in a future version of CSE. -<%= member_table( - units: "", - legal_range: "YES, YESIFNEW, NO, COLUMNSONLY, COLUMNSONLYIFNEW", - default: "YES", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "YES, YESIFNEW, NO, COLUMNSONLY, COLUMNSONLYIFNEW", + "default": "YES", + "required": "No", + "variability": "constant" + }) +}} **exFooter=*choice*** Use NO to suppress the blank line otherwise output as an export "footer". (Exports do not receive the total lines that most reports receive as footers.) -<%= member_table( - units: "", - legal_range: "YES, NO", - default: "YES", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "YES, NO", + "default": "YES", + "required": "No", + "variability": "constant" + }) +}} **endExport** Optionally indicates the end of the export definition. Alternatively, the end of the export definition can be indicated by END or by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/exportcol.md b/doc/src/docs/input-data/exportcol.md index 59b1f56a5..ba8068c66 100644 --- a/doc/src/docs/input-data/exportcol.md +++ b/doc/src/docs/input-data/exportcol.md @@ -10,73 +10,85 @@ EXPORTCOL members are similar to the corresponding REPORTCOL members. See Sectio Name of EXPORTCOL. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **colExport=*exName*** Name of export to which this column belongs. If the EXPORTCOL is given within an EXPORT object, then *colExport* defaults to that export. -<%= member_table( - units: "", - legal_range: "name of an *EXPORT*", - default: "*current export, if any*", - required: "Unless in an *EXPORT*", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of an *EXPORT*", + "default": "*current export, if any*", + "required": "Unless in an *EXPORT*", + "variability": "constant" + }) +}} **colVal=*expression*** Value to show in this position in each row of export. -<%= member_table( - units: "", - legal_range: "*any numeric or string expression*", - default: "*none*", - required: "Yes", - variability: "subhour /end interval") - %> +{{ + member_table({ + "units": "", + "legal_range": "*any numeric or string expression*", + "default": "*none*", + "required": "Yes", + "variability": "subhour /end interval" + }) +}} **colHead=*string*** Text used for field name in export header. -<%= member_table( - units: "", - legal_range: "", - default: "*colName* or blank", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*colName* or blank", + "required": "No", + "variability": "constant" + }) +}} **colWid=*int*** Maximum width. Leading and trailing spaces and non-significant zeroes are removed from export data to save file space. Specifying a *colWid* less than the default may reduce the maximum number of significant digits output. -<%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "13", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\ge$ 0", + "default": "13", + "required": "No", + "variability": "constant" + }) +}} **colDec=*int*** Number of digits after decimal point. -<%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "*flexible format*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\ge$ 0", + "default": "*flexible format*", + "required": "No", + "variability": "constant" + }) +}} **colJust=*choice*** @@ -92,13 +104,15 @@ END Optionally indicates the end of the EXPORTCOL. Alternatively, the end of the definition can be indicated by END or by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/exportfile.md b/doc/src/docs/input-data/exportfile.md index 1d0fb849c..1a1e11d53 100644 --- a/doc/src/docs/input-data/exportfile.md +++ b/doc/src/docs/input-data/exportfile.md @@ -10,25 +10,29 @@ Input for EXPORTFILEs and EXPORTs is similar to that for REPORTFILEs and REPORTs Name of EXPORTFILE object. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **xfFileName=*string*** path name of file to be written. If no path is specified, the file is written in the current directory. If no extension is specified, .csv is used. -<%= member_table( - units: "", - legal_range: "*file name, path and extension optional*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*file name, path and extension optional*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **xfFileStat=*choice*** @@ -43,25 +47,29 @@ END If the specified file does not exist, it is created and *xfFileStat* has no effect. -<%= member_table( - units: "", - legal_range: "OVERWRITE, NEW, APPEND", - default: "OVERWRITE", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "OVERWRITE, NEW, APPEND", + "default": "OVERWRITE", + "required": "No", + "variability": "constant" + }) +}} **endExportFile** Optionally indicates the end of the export file definition. Alternatively, the end of the Export file definition can be indicated by END or by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/fndblock.md b/doc/src/docs/input-data/fndblock.md index 5fa345883..71f50b8b8 100644 --- a/doc/src/docs/input-data/fndblock.md +++ b/doc/src/docs/input-data/fndblock.md @@ -20,11 +20,14 @@ It does not matter which of the four corners of a block are used to define the t Name of MATERIAL of the foundation block. -<%= member_table( - legal_range: "Name of a *Material*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "legal_range": "Name of a *Material*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **fbX1Ref=*choice*** @@ -36,12 +39,15 @@ Relative X origin for *fbX1* point. Options are: - WALLEXT - FARFIELD -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "WALLINT", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "WALLINT", + "required": "No", + "variability": "constant" + }) +}} **fbZ1Ref=*choice*** @@ -54,34 +60,43 @@ Relative Z origin for *fbZ1* point. Options are: - WALLBOTTOM - DEEPGROUND -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "WALLTOP", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "WALLTOP", + "required": "No", + "variability": "constant" + }) +}} **fbX1=*float*** The X position of the first corner of the block relative to *fbX1Ref*. -<%= member_table( - units: "ft", - legal_range: "", - default: "0.0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "", + "default": "0.0", + "required": "No", + "variability": "constant" + }) +}} **fbZ1=*float*** The Z position of the first corner of the block relative to *fbZ1Ref*. -<%= member_table( - units: "ft", - legal_range: "", - default: "0.0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "", + "default": "0.0", + "required": "No", + "variability": "constant" + }) +}} **fbX2Ref=*choice*** @@ -93,12 +108,15 @@ Relative X origin for *fbX2* point. Options are: - WALLEXT - FARFIELD -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "WALLINT", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "WALLINT", + "required": "No", + "variability": "constant" + }) +}} **fbZ2Ref=*choice*** @@ -111,43 +129,54 @@ Relative Z origin for *fbZ2* point. Options are: - WALLBOTTOM - DEEPGROUND -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "WALLTOP", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "WALLTOP", + "required": "No", + "variability": "constant" + }) +}} **fbX2=*float*** The X position of the second corner of the block relative to *fbX2Ref*. -<%= member_table( - units: "ft", - legal_range: "", - default: "0.0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "", + "default": "0.0", + "required": "No", + "variability": "constant" + }) +}} **fbZ2=*float*** The Z position of the second corner of the block relative to *fbZ2Ref*. -<%= member_table( - units: "ft", - legal_range: "", - default: "0.0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "", + "default": "0.0", + "required": "No", + "variability": "constant" + }) +}} **endFndBlock** Indicates the end of the foundation block definition. Alternatively, the end of the foundation block definition can be indicated by the declaration of another object or by END. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} diff --git a/doc/src/docs/input-data/foundation.md b/doc/src/docs/input-data/foundation.md index bd0e5129a..8df0bfabc 100644 --- a/doc/src/docs/input-data/foundation.md +++ b/doc/src/docs/input-data/foundation.md @@ -44,53 +44,67 @@ The following data members describe the dimensions and properties of the foundat Name of foundation; give after the word FOUNDATION. Required for reference from SURFACE objects. -<%= member_table( - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **fdWlHtAbvGrd=*float*** Wall height above grade. -<%= member_table( - units: "ft", - legal_range: "x $\\geq$ 0", - default: "0.0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "x $\\geq$ 0", + "default": "0.0", + "required": "No", + "variability": "constant" + }) +}} **fdWlDpBlwSlb=*float*** Wall depth below slab. -<%= member_table( - units: "ft", - legal_range: "x $\\geq$ 0", - default: "0.0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "x $\\geq$ 0", + "default": "0.0", + "required": "No", + "variability": "constant" + }) +}} **fdFtCon=*conName*** Name of CONSTRUCTION of the footing wall. Only required **IF** it is a slab foundation (i.e., no wall surfaces reference this FOUNDATION object). -<%= member_table( - legal_range: "Name of a *Construction*", - default: "*none*", - required: "if a slab foundation", - variability: "constant") %> +{{ + member_table({ + "legal_range": "Name of a *Construction*", + "default": "*none*", + "required": "if a slab foundation", + "variability": "constant" + }) +}} **endFoundation** Indicates the end of the foundation definition. Alternatively, the end of the foundation definition can be indicated by the declaration of another object or by END. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} diff --git a/doc/src/docs/input-data/gain.md b/doc/src/docs/input-data/gain.md index eabdad583..4578b2cae 100644 --- a/doc/src/docs/input-data/gain.md +++ b/doc/src/docs/input-data/gain.md @@ -19,25 +19,29 @@ Radiant internal gains are included in the IgnS (Sensible Internal Gain) column Name of gain; follows the word GAIN if given. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **gnZone=*znName*** Name of ZONE to which heat gains are added. Omitted when GAIN is given as a ZONE subobject. If a TOP subobject (i.e., not a ZONE subobject) and znZone is omitted, heat gains are discarded but energy use is still recorded to gnMeter. This feature can be used to represent energy uses that our outside of conditioned zones (e.g. exterior lighting). -<%= member_table( - units: "", - legal_range: "*name of ZONE*", - default: "*parent zone if any*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*name of ZONE*", + "default": "*parent zone if any*", + "required": "No", + "variability": "constant" + }) +}} **gnPower=*float*** @@ -45,25 +49,29 @@ Rate of heat addition/energy use. Negative gnPower values may be used to represe All gains, including electrical, are specified in Btuh units unless associated with DHW use (see gnCtrlDHWSYS), in which case gnPower is specified in Btuh/gal. Note that meter reporting of internal gain is in MBtu (millions of Btu) by default. -<%= member_table( - units: "Btuh", - legal_range: "*no restrictions*", - default: "*none*", - required: "Yes", - variability: "hourly") - %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "*no restrictions*", + "default": "*none*", + "required": "Yes", + "variability": "hourly" + }) +}} **gnMeter=*choice*** Name of meter by which this GAIN's gnPower is recorded. If omitted, gain is assigned to no meter and energy use is not accounted in CSE simulation reports; thus, gnMeter should only be omitted for "free" energy sources. -<%= member_table( - units: "", - legal_range: "*name of METER*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*name of METER*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **gnEndUse=*choice*** @@ -72,13 +80,15 @@ Meter end use to which the GAIN's energy use should be accumulated. {% include 'enduses.md' %} -<%= member_table( - units: "", - legal_range: "*Codes listed above*", - default: "*none*", - required: "Required if gnMeter is given", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*Codes listed above*", + "default": "*none*", + "required": "Required if gnMeter is given", + "variability": "constant" + }) +}} The gnFrZn, gnFrPl, and gnFrRtn members allow you to allocate the gain among the zone, the zone's plenum, and the zone's return air flow. Values that total to more than 1.0 constitute an error. If they total less than 1, the unallocated portion of the gain is recorded by the meter (if specified) but not transferred into the building. By default, all of the gain not directed to the return or plenum goes to the zone. @@ -88,23 +98,27 @@ Fraction of gain going to zone. gnFrLat (below) gives portion of this gain that <% if not_yet_implemented %> -<%= member_table( - units: "", - legal_range: "gnFrZn + gnFrPl + gnFrRtn $\leq$ 1", - default: "*1 - gnFrPl - gnFrRtn*", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "gnFrZn + gnFrPl + gnFrRtn $\leq$ 1", + "default": "*1 - gnFrPl - gnFrRtn*", + "required": "No", + "variability": "hourly" + }) +}} <% else %> -<%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "1.", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "1.", + "required": "No", + "variability": "hourly" + }) +}} <% end %> @@ -112,109 +126,130 @@ Fraction of gain going to zone. gnFrLat (below) gives portion of this gain that Fraction of gain going to plenum. -<%= member_table( - units: "", - legal_range: "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", - default: "0.", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", + "default": "0.", + "required": "No", + "variability": "hourly" + }) +}} **gnFrRtn=*float*** Fraction of gain going to return. -<%= member_table( - units: "", - legal_range: "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", - default: "0.", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", + "default": "0.", + "required": "No", + "variability": "hourly" + }) +}} **gnFrRad=*float*** Fraction of total gain going to zone (gnFrZn) that is radiant rather than convective or latent. -<%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "0.0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "0.0", + "required": "No", + "variability": "hourly" + }) +}} **gnFrLat=*float*** Fraction of total gain going to zone (gnFrZn) that is latent heat (moisture addition). -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ *x* $\\le$ 1", + "default": "0.0", + "required": "No", + "variability": "hourly" + }) +}} **gnDlFrPow=*float*** Hourly power reduction factor, typically used to modify lighting power to account for daylighting. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "1.0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ *x* $\\le$ 1", + "default": "1.0", + "required": "No", + "variability": "hourly" + }) +}} **gnCtrlDHWSYS=*dhwsysName*** Name of a DHWSYS whose water use modulates gnPower. For example, electricity use of water-using appliances (e.g. dishwasher or clothes washer) can be modeled based on water use, ensuring that the uses are synchronized. When this feature is used, gnPower should be specified in Btuh/gal. -<%= member_table( - units: "", - legal_range: "*name of a DHWSYS*", - default: "no DHWSYS/GAIN linkage", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*name of a DHWSYS*", + "default": "no DHWSYS/GAIN linkage", + "required": "No", + "variability": "constant" + }) +}} **gnCtrlDHWMETER=*dhwMtrName*** Allows gains to track water usage such as dishwashers, clothes washers, etc. -<%= member_table( - units: "", - legal_range: "*name of DHWMETER*", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*name of DHWMETER*", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **gnCtrlDHWEndUse=*dhwEndUseName*** Name of the DHWSYS end use consumption that modulates gnPower. See DHWMETER for DHW end use definitions. -<%= member_table( - units: "", - legal_range: "DHW end use", - default: "Total", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "DHW end use", + "default": "Total", + "required": "No", + "variability": "constant" + }) +}} **endGain** Optional to indicate the end of the GAIN definition. Alternatively, the end of the gain definition can be indicated by END or by the declaration of another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/glazetype.md b/doc/src/docs/input-data/glazetype.md index 7dfe3d351..5aaa30490 100644 --- a/doc/src/docs/input-data/glazetype.md +++ b/doc/src/docs/input-data/glazetype.md @@ -6,25 +6,29 @@ GLAZETYPE constructs an object of class GLAZETYPE that represents a glazing type Name of glazetype. Required for reference from WINDOW objects, below. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **gtModel=*choice*** Selects model to be used for WINDOWs based on this GLAZETYPE. -<%= member_table( - units: "", - legal_range: "SHGC, ASHWAT", - default: "SHGC", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "SHGC, ASHWAT", + "default": "SHGC", + "required": "No", + "variability": "constant" + }) +}} **gtU=*float*** @@ -36,73 +40,85 @@ Where 0.85 is the sum of the interior (0.68) and exterior (0.17) design air film Approach 2. Enter gtU=U-factor and let the wnInH and wnExH default. This approach systematically underestimates the window U-factor because it adds the wnExfilm resistance to 1/U-factor thereby double counting the exterior film resistance. This approach will also yield incorrect results for gnFrad internal gain since the high wnInH will put almost all the gain back in the space. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **gtUNFRC=*float*** Fenestration system (including frame) U-factor evaluated at NFRC heating conditions. For ASHWAT windows, a value for the NFRC U-factor is required, set via gtUNFRC or wnUNFRC. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **gtSHGC=*float*** Glazing Solar Heat Gain Coefficient: fraction of normal beam insolation which gets through glass to space inside. We recommend using this to represent the glass normal transmissivity characteristic only, before shading and framing effects -<%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **gtSMSO=*float*** SHGC multiplier with shades open. May be overriden in the specific window input. -<%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "1.0", - required: "No", - variability: "Monthly - Hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "default": "1.0", + "required": "No", + "variability": "Monthly - Hourly" + }) +}} **gtSMSC=*float*** SHGC multiplier with shades closed. May be overriden in the specific window input. -<%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "gtSMSO (no shades)", - required: "No", - variability: "Monthly - Hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "default": "gtSMSO (no shades)", + "required": "No", + "variability": "Monthly - Hourly" + }) +}} **gtFMult=*float*** Framing multiplier used if none given in window, for example .9 if frame and mullions reduce the solar gain by 10%. Default of 1.0 implies frame/mullion effects allowed for in gtSHGC's or always specified in Windows. -<%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "gtSHGCO", - required: "No", - variability: "Monthly - Hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "default": "gtSHGCO", + "required": "No", + "variability": "Monthly - Hourly" + }) +}} **gtPySHGC =*float*** @@ -116,97 +132,113 @@ Four float values separated by commas. Coefficients for incidence angle SHGC mul     beamXmisvty = gtSHGCO \* angMult (shades open) -<%= member_table( - units: "float", - legal_range: "*any*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "float", + "legal_range": "*any*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **gtDMSHGC=*float*** SHGC diffuse multiplier, applied to gtSHGC to determine transmissivity for diffuse radiation. -<%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **gtDMRBSol=*float*** SHGC diffuse multiplier, applied to qtSHGC to determine transmissivity for diffuse radiation reflected back out the window. Misnamed as a reflectance. Assume equal to DMSHGC if no other data available. -<%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **gtNGlz=*int*** Number of glazings in the Glazetype (bare glass only, not including any interior or exterior shades). -<%= member_table( - units: "", - legal_range: "*0* $<$ *x* $\\leq$ *4*", - default: "2", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*0* $<$ *x* $\\leq$ *4*", + "default": "2", + "required": "No", + "variability": "constant" + }) +}} **gtExShd=*choice*** Exterior shading type (ASHWAT only). -<%= member_table( - units: "", - legal_range: "NONE INSCRN", - default: "NONE", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "NONE INSCRN", + "default": "NONE", + "required": "No", + "variability": "constant" + }) +}} **gtInShd=*choice*** Interior shade type (ASHWAT only). -<%= member_table( - units: "", - legal_range: "NONE DRAPEMED", - default: "NONE", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "NONE DRAPEMED", + "default": "NONE", + "required": "No", + "variability": "constant" + }) +}} **gtDirtLoss=*float*** Glazing dirt loss factor. -<%= member_table( - units: "fraction", - legal_range: "*0* $\\leq$ *x* $\\leq$ *1*", - default: "0", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **endGlazeType** Optional to indicates the end of the Glazetype. Alternatively, the end of the GLAZETYPE definition can be indicated by "END" or by beginning another object -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/heatplant.md b/doc/src/docs/input-data/heatplant.md index 7ef0fe8f5..59548c924 100644 --- a/doc/src/docs/input-data/heatplant.md +++ b/doc/src/docs/input-data/heatplant.md @@ -12,12 +12,15 @@ For each HEATPLANT, piping loss is modeled, as a constant fraction of the BOILER Name of HEATPLANT object, given immediately after the word HEATPLANT. This name is used to refer to the heatPlant in *tuhcHeatplant* and *ahhcHeatplant* commands. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **hpSched=*choice*** @@ -30,23 +33,29 @@ ON, HEATPLANT runs unconditionally. When no load wants heat, least po END %> -<%= member_table( - units: "", - legal_range: "OFF, AVAIL, or ON", - default: "AVAIL", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "OFF, AVAIL, or ON", + "default": "AVAIL", + "required": "No", + "variability": "hourly" + }) +}} **hpPipeLossF=*float*** Heat plant pipe loss: heat assumed lost from piping connecting boilers to loads whenever the HEATPLANT is operating, expressed as a fraction of the boiler capacity of the plant's most powerful stage. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.01", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ *x* $\\le$ 1", + "default": "0.01", + "required": "No", + "variability": "constant" + }) +}} **hpStage1=boilerName, boilerName, boilerName, ...** @@ -60,23 +69,29 @@ If none of *hpStage1* through *hpStage7* are given, CSE supplies a single defaul A comma must be entered between boiler names and after the word ALL\_BUT. -<%= member_table( - units: "", - legal_range: "1 to 7 names;ALL\_BUT and 1 to 6 names;ALL", - default: "*hpStage1* = ALL", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "1 to 7 names;ALL\_BUT and 1 to 6 names;ALL", + "default": "*hpStage1* = ALL", + "required": "No", + "variability": "constant" + }) +}} **endHeatplant** Optionally indicates the end of the HEATPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/holiday.md b/doc/src/docs/input-data/holiday.md index cc4ab149a..5c5ebcc37 100644 --- a/doc/src/docs/input-data/holiday.md +++ b/doc/src/docs/input-data/holiday.md @@ -11,13 +11,15 @@ hdName is required in the program. WHY? 7-92. Name of holiday: must follow the word HOLIDAY. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} A holiday may be specified by date or via a rule such as "Fourth Thursday in November". To specify by date, give hdDateTrue, and also hdDateObs or hdOnMonday if desired. To specify by rule, give all three of hdCase, hdMon, and hdDow. @@ -25,25 +27,29 @@ A holiday may be specified by date or via a rule such as "Fourth Thursday in Nov The true date of a holiday, even if not celebrated on that day. -<%= member_table( - units: "", - legal_range: "*date*", - default: "*blank*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*date*", + "default": "*blank*", + "required": "No", + "variability": "constant" + }) +}} **hdDateObs*=date*** The date that a holiday will be observed. Allowed only if hdDateTrue given and hdOnMonday not given. -<%= member_table( - units: "", - legal_range: "*date*", - default: "*hdDateTrue*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*date*", + "default": "*hdDateTrue*", + "required": "No", + "variability": "constant" + }) +}} **hdOnMonday=*choice*** @@ -51,61 +57,71 @@ If YES, holiday is observed on the following Monday if the true date falls on a Note: there is no provision to celebrate a holiday that falls on a Saturday on *Friday* (as July 4 was celebrated in 1992). -<%= member_table( - units: "", - legal_range: "YES/NO", - default: "YES", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "YES/NO", + "default": "YES", + "required": "No", + "variability": "constant" + }) +}} **hdCase=*choice*** Week of the month that the holiday is observed. hdCase, hdMon, and hdDow may be given only if hdDateTrue, hdDateObs, and hdOnMonday are not given. -<%= member_table( - units: "", - legal_range: "FIRST SECOND THIRD FOURTH LAST", - default: "FIRST", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "FIRST SECOND THIRD FOURTH LAST", + "default": "FIRST", + "required": "No", + "variability": "constant" + }) +}} **hdMon=*choice*** Month that the holiday is observed. -<%= member_table( - units: "", - legal_range: "JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC", - default: "*none*", - required: "required if hdCase given", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC", + "default": "*none*", + "required": "required if hdCase given", + "variability": "constant" + }) +}} **hdDow*=choice*** Day of the week that the holiday is observed. -<%= member_table( - units: "", - legal_range: "SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY", - default: "MONDAY", - required: "required if hdCase given", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY", + "default": "MONDAY", + "required": "required if hdCase given", + "variability": "constant" + }) +}} **endHoliday** Indicates the end of the holiday definition. Alternatively, the end of the holiday definition can be indicated by "END" or simply by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "", - required: "*none*", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "", + "required": "*none*", + "variability": "constant" + }) +}} Examples of valid HOLIDAY object specifications: diff --git a/doc/src/docs/input-data/importfile.md b/doc/src/docs/input-data/importfile.md index ffecc6b7b..92a783044 100644 --- a/doc/src/docs/input-data/importfile.md +++ b/doc/src/docs/input-data/importfile.md @@ -57,79 +57,100 @@ Notes Name of IMPORTFILE object (for reference from Import()). -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **imFileName=*string*** Gives path name of file to be read. If directory is specified, CSE first looks for the file the current directory and searches include paths specified by the -I command line parameter (if any). -<%= member_table( - units: "", - legal_range: "*file name, path optional*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*file name, path optional*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **imTitle=*string*** Title expected to be found on line 3 of the import file. A warning is issued if a non-blank imTitle does not match the import file title. -<%= member_table( - units: "", - legal_range: "Text string", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "Text string", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **imFreq=*choice*** Specifies the interval at which CSE reads from the import file. Data is read at the beginning of the indicated interval and buffered in memory for access in expressions via import() or importStr(). -<%= member_table( - units: "", - legal_range: "YEAR, MONTH, DAY, HOUR, or SUBHOUR", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "YEAR, MONTH, DAY, HOUR, or SUBHOUR", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **imHeader=*choice*** Indicates whether the import file include a 4 line header, as described above. If NO, the import file should contain only comma-separated data rows and data items can be referenced only by 1-based column number. -<%= member_table( - units: "", - legal_range: "YES NO", - default: "YES", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "YES NO", + "default": "YES", + "required": "No", + "variability": "constant" + }) +}} **imBinary=*choice*** Adds the possibility to output the file as a binary option. -<%= member_table( - units: "", - legal_range: "YES NO", - default: "No", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "YES NO", + "default": "No", + "required": "No", + "variability": "constant" + }) +}} **endImportFile** Optionally indicates the end of the import file definition. Alternatively, the end of the import file definition can be indicated by END or by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/index.md b/doc/src/docs/input-data/index.md index 17b10742a..09bbd272e 100644 --- a/doc/src/docs/input-data/index.md +++ b/doc/src/docs/input-data/index.md @@ -20,12 +20,15 @@ These types discussed in the section on [expression types][expression-types]. Each member's description continues with a table of the form: -<%= member_table( - units: "ft^2^", - legal_range: "x > 0", - default: "wnHeight \\\* wnWidth", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft^2^", + "legal_range": "x > 0", + "default": "wnHeight \\\* wnWidth", + "required": "No", + "variability": "constant" + }) +}} where the column headers have the following meaning: diff --git a/doc/src/docs/input-data/izxfer.md b/doc/src/docs/input-data/izxfer.md index 8d48781f8..63fb3c680 100644 --- a/doc/src/docs/input-data/izxfer.md +++ b/doc/src/docs/input-data/izxfer.md @@ -11,12 +11,15 @@ The assumption is that in realistic configurations, zone pressure will generally Optional name of interzone transfer; give after the word "IZXFER" if desired. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **izNVType=*choice*** @@ -40,12 +43,15 @@ END Note that optional inputs izTEx, izWEx, and izWindSpeed can override the outside conditions assumed for ivNVTypes that are connected to ambient (AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, and AIRNETHERV). -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **izAFCat=*choice*** @@ -67,43 +73,55 @@ END Default values for izAFCat are generally adequate *except* that natural ventilation IZXFERs are by default categorized as infiltration. It is thus recommended that izAfCat be omitted except that ventilation IZXFERs (e.g. representing openable windows) should include izAfCat=VentEx (or VentIz). -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "derived from IZXFER characteristics", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "derived from IZXFER characteristics", + "required": "No", + "variability": "constant" + }) +}} **izZn1=*znName*** Name of primary zone. Flow rates $>$ 0 are into the primary zone. -<%= member_table( - units: "", - legal_range: "name of a ZONE", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "name of a ZONE", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **izZn2=*znName*** Name of secondary zone. -<%= member_table( - units: "", - legal_range: "name of a ZONE", - default: "*none*", - required: "required unless constant izNVType = AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, or AIRNETHERV", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "name of a ZONE", + "default": "*none*", + "required": "required unless constant izNVType = AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, or AIRNETHERV", + "variability": "constant" + }) +}} **izDOAS=*oaName*** Name of DOAS where air is supplied from (**izVfMin** > 0), or exhausting to (**izVfMin** < 0). -<%= member_table( - legal_range: "name of a DOAS", - required: "when izNVType = AIRNETDOAS", - variability: "constant") %> +{{ + member_table({ + "legal_range": "name of a DOAS", + "required": "when izNVType = AIRNETDOAS", + "variability": "constant" + }) +}} **izLinkedFlowMult=*float*** @@ -113,12 +131,15 @@ For example, consider a DOAS-linked IZXFER with izVfMin = 100 and izLinkedFlowMu Note izLinkedFlowMult has no effect on the air flow to or from the zone specified by izZn1. -<%= member_table( - units: "--", - legal_range: "*x* $\\gt$ 0", - default: "1", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "--", + "legal_range": "*x* $\\gt$ 0", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} Give izHConst for a conductive transfer between zones. Give izNVType other than NONE and the following variables for a convective (air) transfer between the zones or between a zone and outdoors. Both may be given if desired. Not known to work properly as of July 2011 @@ -127,34 +148,43 @@ Give izHConst for a conductive transfer between zones. Give izNVType other than Conductance between zones. -<%= member_table( - units: "Btu/^o^F", - legal_range: "*x* $\\ge$ 0", - default: "0", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "Btu/^o^F", + "legal_range": "*x* $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "hourly" + }) +}} **izALo=*float*** Area of low or only vent (typically VentOff) -<%= member_table( - units: "ft^2^", - legal_range: "*x* $\\ge$ 0", - default: "0", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "ft^2^", + "legal_range": "*x* $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "hourly" + }) +}} **izAHi=*float*** Additional vent area (high vent or VentOn). If used in AIRNET, izAHi > izALo typically but this is not required. -<%= member_table( - units: "ft^2^", - legal_range: "*x* $\\ge$ 0", - default: "izALo", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "ft^2^", + "legal_range": "*x* $\\ge$ 0", + "default": "izALo", + "required": "No", + "variability": "hourly" + }) +}} **izTEx=*float*** @@ -168,12 +198,15 @@ One use of izTEx is in representation of leaks in surfaces adjacent to zones not This will allow Z1's pressure to be realistic without inducing thermal loads that would occur if the leak source had outdoor conditions. -<%= member_table( - units: "^o^F", - legal_range: "", - default: "Outdoor dry-bulb", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "", + "default": "Outdoor dry-bulb", + "required": "No", + "variability": "subhourly" + }) +}} **izWEx=*float*** @@ -183,12 +216,15 @@ Caution: izWEx is not checked against saturation -- there is no verification tha See izTEx example just above. -<%= member_table( - units: "", - legal_range: "$\\gt$ 0", - default: "Outdoor humidity ratio", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "", + "legal_range": "$\\gt$ 0", + "default": "Outdoor humidity ratio", + "required": "No", + "variability": "subhourly" + }) +}} **izWindSpeed=*float*** @@ -198,211 +234,268 @@ No adjustments such as TOP windF or ZONE znWindFLkg are applied to izWindSpeed w Note that izCpr must be non-0 for izWindSpeed to have any effect. -<%= member_table( - units: "mph", - legal_range: "$\\ge$ 0", - default: "Zone adjusted windspeed", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "mph", + "legal_range": "$\\ge$ 0", + "default": "Zone adjusted windspeed", + "required": "No", + "variability": "subhourly" + }) +}} **izL1=*float*** Length or width of AIRNETHORIZ opening. -<%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "if izNVType = AIRNETHORIZ", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "if izNVType = AIRNETHORIZ", + "variability": "constant" + }) +}} **izL2=*float*** Width or length of AIRNETHORIZ opening. -<%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "if izNVType = AIRNETHORIZ", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "if izNVType = AIRNETHORIZ", + "variability": "constant" + }) +}} **izStairAngle=*float*** Stairway angle for AIRNETHORIZ opening. Use 90 for an open hole. Note that 0 prevents flow. -<%= member_table( - units: "^o^ degrees", - legal_range: "*x* $>$ 0", - default: "34", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "^o^ degrees", + "legal_range": "*x* $>$ 0", + "default": "34", + "required": "No", + "variability": "constant" + }) +}} **izHD=*float*** Vent center-to-center height difference (for TWOWAY) or vent height above nominal 0 level (for AirNet types) -<%= member_table( - units: "ft", - legal_range: "", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **izNVEff=*float*** Vent discharge coefficient. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.8", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ *x* $\\le$ 1", + "default": "0.8", + "required": "No", + "variability": "constant" + }) +}} **izfanVfDs=*float*** Fan design or rated flow at rated pressure. For AIRNETHERV, this is the net air flow into the zone, gross flow at the fan is derived using izEATR (see below). -<%= member_table( - units: "cfm", - legal_range: "*x* $\\ge$ 0", - default: "0 (no fan)", - required: "If fan present", - variability: "constant") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "*x* $\\ge$ 0", + "default": "0 (no fan)", + "required": "If fan present", + "variability": "constant" + }) +}} **izCpr=*float*** Wind pressure coefficient (for AIRNETEXT). -<%= member_table( - units: "", - legal_range: "*x* $\\ge$ 0", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*x* $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **izExp=*float*** Opening exponent (for AIRNETEXT). -<%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "0.5", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*x* $>$ 0", + "default": "0.5", + "required": "No", + "variability": "constant" + }) +}} **izVfMin=*float*** Minimum volume flow rate (VentOff mode). -<%= member_table( - units: "cfm", - legal_range: "*x* $\\ge$ 0", - default: "izfanVfDs", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "*x* $\\ge$ 0", + "default": "izfanVfDs", + "required": "No", + "variability": "subhourly" + }) +}} **izVfMax=*float*** Maximum volume flow rate (VentOn mode) -<%= member_table( - units: "cfm", - legal_range: "*x* $\\ge$ 0", - default: "izVfMin", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "*x* $\\ge$ 0", + "default": "izVfMin", + "required": "No", + "variability": "subhourly" + }) +}} **izASEF=*float*** Apparent sensible effectiveness for AIRNETHERV ventilator. ASEF is a commonly-reported HERV rating and is calculated as (supplyT - sourceT) / (returnT - sourceT). This formulation includes fan heat (in supplyT), hence the term "apparent". Ignored if izSRE is given. CSE does not HRV exhaust-side condensation, so this model is approximate. -<%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ 1", - default: "0", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ x $\\le$ 1", + "default": "0", + "required": "No", + "variability": "subhourly" + }) +}} **izSRE=*float*** Sensible recovery efficiency (SRE) for AIRNETHERV ventilator. Used as the sensible effectiveness in calculation of the supply air temperature. Note that values of SRE greater than approximately 0.6 imply exhaust-side condensation under HVI rating conditions. CSE does not adjust for these effects. High values of izSRE will produce unrealistic results under mild outdoor conditions and/or dry indoor conditions. -<%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ 1", - default: "0", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ x $\\le$ 1", + "default": "0", + "required": "No", + "variability": "subhourly" + }) +}} **izASRE=*float*** Adjusted sensible recovery efficiency (ASRE) for AIRNETHERV ventilator. The difference izASRE - izSRE is used to calculate fan heat added to the supply air stream. See izSRE notes. No effect when izSRE is 0. -<%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ izSRE", - default: "0", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ x $\\le$ izSRE", + "default": "0", + "required": "No", + "variability": "subhourly" + }) +}} **izEATR=*float*** Exhaust air transfer ratio for AIRNETHERV ventilator. NetFlow = (1 - EATR)*(grossFlow). -<%= member_table( - units: "cfm", - legal_range: "0 $\\le$ x $\\le$ 1", - default: "0", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "cfm", + "legal_range": "0 $\\le$ x $\\le$ 1", + "default": "0", + "required": "No", + "variability": "subhourly" + }) +}} **izLEF=*float*** Latent heat recovery effectiveness for AIRNETHERV ventilator. The default value (0) results in sensible-only heat recovery. -<%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ 1", - default: "0", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ x $\\le$ 1", + "default": "0", + "required": "No", + "variability": "subhourly" + }) +}} **izRVFanHeatF=*float*** Fraction of fan heat added to supply air stream for AIRNETHERV ventilator. Used only when when izSRE is 0 (that is, when izASEF specifies the sensible effectiveness). -<%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ 1", - default: "0", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ x $\\le$ 1", + "default": "0", + "required": "No", + "variability": "subhourly" + }) +}} **izVfExhRat=*float*** Exhaust volume flow ratio for AIRNETHERV ventilator = (exhaust flow) / (supply flow). Any value other than 1 indicates unbalanced flow that effects the zone pressure. -<%= member_table( - units: "", - legal_range: "*x* $\\ge$ 0", - default: "1 (balanced)", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*x* $\\ge$ 0", + "default": "1 (balanced)", + "required": "No", + "variability": "constant" + }) +}} **izfanPress=*float*** Design or rated fan pressure. -<%= member_table( - units: "inches H~2~O", - legal_range: "*x* $>$ 0", - default: "0.3", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "inches H~2~O", + "legal_range": "*x* $>$ 0", + "default": "0.3", + "required": "No", + "variability": "constant" + }) +}} Only one of izfanElecPwr, izfanEff, and izfanShaftBhp may be given: together with izfanVfDs and izfanPress, any one is sufficient for CSE to determine the others and to compute the fan heat contribution to the air stream. @@ -410,34 +503,43 @@ Only one of izfanElecPwr, izfanEff, and izfanShaftBhp may be given: together wit Fan input power per unit air flow (at design flow and pressure). -<%= member_table( - units: "W/cfm", - legal_range: "*x* $>$ 0", - default: "derived from izfanEff and izfanShaftBhp", - required: "If izfanEff and izfanShaftBhp not present", - variability: "constant") %> +{{ + member_table({ + "units": "W/cfm", + "legal_range": "*x* $>$ 0", + "default": "derived from izfanEff and izfanShaftBhp", + "required": "If izfanEff and izfanShaftBhp not present", + "variability": "constant" + }) +}} **izfanEff=*float*** Fan efficiency at design flow and pressure, as a fraction. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "derived from *izfanShaftBhp* if given, else 0.08", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ *x* $\\le$ 1", + "default": "derived from *izfanShaftBhp* if given, else 0.08", + "required": "No", + "variability": "constant" + }) +}} **izfanShaftBhp=*float*** Fan shaft brake horsepower at design flow and pressure. -<%= member_table( - units: "bhp", - legal_range: "*x* $>$ 0", - default: "derived from *izfanEff*.", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "bhp", + "legal_range": "*x* $>$ 0", + "default": "derived from *izfanEff*.", + "required": "No", + "variability": "constant" + }) +}} **izfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** @@ -454,45 +556,57 @@ where: If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coefficients are normalized by dividing by the polynomial's value for $x$ = 1.0. -<%= member_table( - units: "", - legal_range: "*x* $\\ge$ 0", - default: "*0, 1, 0, 0, 0 (linear)*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*x* $\\ge$ 0", + "default": "*0, 1, 0, 0, 0 (linear)*", + "required": "No", + "variability": "constant" + }) +}} **izFanMtr=*mtrName*** Name of meter, if any, to record energy used by supply fan. End use category used is specified by izFanEndUse (next). -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*not recorded*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*name of a METER*", + "default": "*not recorded*", + "required": "No", + "variability": "constant" + }) +}} **izFanEndUse=*choice*** End use to which fan energy is recorded (in METER specified by izFanMtr). See METER for available end use choices. -<%= member_table( - units: "", - legal_range: "*end use choice*", - default: "Fan", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*end use choice*", + "default": "Fan", + "required": "No", + "variability": "constant" + }) +}} **endIZXFER** Optionally indicates the end of the interzone transfer definition. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/layer.md b/doc/src/docs/input-data/layer.md index fc2d8c390..abaac896e 100644 --- a/doc/src/docs/input-data/layer.md +++ b/doc/src/docs/input-data/layer.md @@ -10,56 +10,71 @@ The layer thickness may be given by lrThk, or matThk of the material, or matThk Name of layer (follows "LAYER"). Required only if the LAYER is later referenced in another object, for example with LIKE or ALTER; however, we suggest naming all objects for clearer error messages and future flexibility. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **lrMat=*matName*** Name of primary MATERIAL in layer. -<%= member_table( - units: "", - legal_range: "name of a *MATERIAL*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "name of a *MATERIAL*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **lrThk=*float*** Thickness of layer. -<%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "Required if *matThk* not specified in referenced *lrMat*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $>$ 0", + "default": "Required if *matThk* not specified in referenced *lrMat*", + "required": "No", + "variability": "constant" + }) +}} **lrFrmMat=*matName*** Name of framing MATERIAL in layer, if any. At most one layer with lrFrmMat is allowed per CONSTRUCTION. See caution above regarding framed-layer model. -<%= member_table( - units: "", - legal_range: "name of a MATERIAL", - default: "*no framed layer*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "name of a MATERIAL", + "default": "*no framed layer*", + "required": "No", + "variability": "constant" + }) +}} **lrFrmFrac=*float*** Fraction of layer that is framing. Must be specified if frmMat is specified. See caution above regarding framed-layer model. -<%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "*no framed layer*", - required: "Required if *lrFrmMat* specified, else disallowed", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "*no framed layer*", + "required": "Required if *lrFrmMat* specified, else disallowed", + "variability": "constant" + }) +}} **endLayer** diff --git a/doc/src/docs/input-data/loadmeter.md b/doc/src/docs/input-data/loadmeter.md index 91f60afe3..8668973d6 100644 --- a/doc/src/docs/input-data/loadmeter.md +++ b/doc/src/docs/input-data/loadmeter.md @@ -16,12 +16,15 @@ LOADMETER results must be reported using user-defined REPORTs or EXPORTs. For e Name of LOADMETER: required for assigning to ZONEs and RSYSs. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **lmtSubmeters=*list of up to 50 LOADMETERs*** @@ -31,12 +34,15 @@ A comma-separate list of LOADMETERs that are accumulated into this LOADMETER wit - A given LOADMETER can be referenced only once in the lmtSubmeters list. - Circular references are not allowed. -<%= member_table( - units: "", - legal_range: "*names of LOADMETERs*", - default: "", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*names of LOADMETERs*", + "default": "", + "required": "No", + "variability": "constant" + }) +}} **lmtSubmeterMults=*list of up to 50 floats*** @@ -44,24 +50,30 @@ Submeter multipliers. A note re default values: if lmtSubmeterMults is omitted, all multipliers are defaulted to 1. However, when lmtSubmeterMults is included, a multiplier value should be provided for each LOADMETER listed in lmtSubmeters since unspecified values are set to 0. -<%= member_table( - units: "", - legal_range: "", - default: "1", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "1", + "required": "No", + "variability": "subhourly" + }) +}} **endLOADMETER** Indicates the end of the meter definition. Alternatively, the end of the meter definition can be indicated by the declaration of another object or by END. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/material.md b/doc/src/docs/input-data/material.md index 3960336c0..fdc962703 100644 --- a/doc/src/docs/input-data/material.md +++ b/doc/src/docs/input-data/material.md @@ -6,56 +6,71 @@ MATERIAL constructs an object of class MATERIAL that represents a building mater Name of material being defined; follows the word "MATERIAL". -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **matThk=*float*** Thickness of material. If specified, matThk indicates the discreet thickness of a component as used in construction assemblies. If omitted, matThk indicates that the material can be used in any thickness; the thickness is then specified in each LAYER using the material (see below). -<%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **matCond=*float*** Conductivity of material. Note that conductivity is *always* stated for a 1 foot thickness, even when matThk is specified; if the conductance is known for a specific thickness, an expression can be used to derive matCond. -<%= member_table( - units: "Btuh-ft/ft^2^-^o^F", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "Btuh-ft/ft^2^-^o^F", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **matCondT=*float*** Temperature at which matCond is rated. See matCondCT (next). -<%= member_table( - units: "^o^F", - legal_range: "*x* $>$ 0", - default: "70 ^o^F", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "*x* $>$ 0", + "default": "70 ^o^F", + "required": "No", + "variability": "constant" + }) +}} **matCondCT=*float*** Coefficient for temperature adjustment of matCond in the forward difference surface conduction model. Each hour (not subhour), the conductivity of layers using this material are adjusted as followslrCond = matCond \* (1 + matCondCT\*(T~layer~ – matCondT)) -<%= member_table( - units: "^o^F^-1^", - legal_range: "", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "^o^F^-1^", + "legal_range": "", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} Note: A typical value of matCondCT for fiberglass batt insulation is 0.00418 F^-1^ @@ -63,45 +78,57 @@ Note: A typical value of matCondCT for fiberglass batt insulation is 0.00418 F^- Specific heat of material. -<%= member_table( - units: "Btu/lb-^o^F", - legal_range: "*x* $\\ge$ 0", - default: "0 (thermally massless)", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "Btu/lb-^o^F", + "legal_range": "*x* $\\ge$ 0", + "default": "0 (thermally massless)", + "required": "No", + "variability": "constant" + }) +}} **matDens=*float*** Density of material. -<%= member_table( - units: "lb/ft^3^", - legal_range: "*x* $\\ge$ 0", - default: "0 (massless)", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "lb/ft^3^", + "legal_range": "*x* $\\ge$ 0", + "default": "0 (massless)", + "required": "No", + "variability": "constant" + }) +}} **matRNom=*float*** Nominal R-value per foot of material. Appropriate for insulation materials only and *used for documentation only*. If specified, the current material is taken to have a nominal R-value that contributes to the reported nominal R-value for a construction. As with matCond, matRNom is *always* stated for a 1 foot thickness, even when matThk is specified; if the nominal R-value is known for a specific thickness, an expression can be used to derive matRNom. -<%= member_table( - units: "ft^2^-^o^F/Btuh", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft^2^-^o^F/Btuh", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **endMaterial** Optional to indicate the end of the material. Alternatively, the end of the material definition can be indicated by "END" or simply by beginning another object. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/meter.md b/doc/src/docs/input-data/meter.md index ce45aba99..820c821ba 100644 --- a/doc/src/docs/input-data/meter.md +++ b/doc/src/docs/input-data/meter.md @@ -31,34 +31,43 @@ The end use can be specified by the user only for GAINs and PVARRAYs; in other c Name of meter: required for assigning energy uses to the meter elsewhere. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **mtrDemandRate=*float*** DmdCost per Btu of demand, for a month. -<%= member_table( - units: "", - legal_range: "", - default: "N/A", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "N/A", + "required": "No", + "variability": "constant" + }) +}} **mtrRate=*float*** Cost of energy use per Btu. -<%= member_table( - units: "", - legal_range: "", - default: "N/A", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "N/A", + "required": "No", + "variability": "constant" + }) +}} **mtrSubmeters=*list of up to 50 METERs*** @@ -68,12 +77,15 @@ A comma-separate list of METERs that are accumulated into this METER with option - A given METER can be referenced only once in the mtrSubmeters list. - Circular references are not allowed. -<%= member_table( - units: "", - legal_range: "*names of METERs*", - default: "", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*names of METERs*", + "default": "", + "required": "No", + "variability": "constant" + }) +}} **mtrSubmeterMults=*list of up to 50 floats*** @@ -84,23 +96,29 @@ Submeter multipliers. Use cases for multipliers include -- A note re default values: if mtrSubmeterMults is omitted, all multipliers are defaulted to 1. However, when mtrSubmeterMults is included, a multiplier value should be provided for each METER listed in mtrSubmeters since unspecified values are set to 0. -<%= member_table( - units: "", - legal_range: "", - default: "1", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "1", + "required": "No", + "variability": "hourly" + }) +}} **endMeter** Indicates the end of the meter definition. Alternatively, the end of the meter definition can be indicated by the declaration of another object or by END. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/performancemap.md b/doc/src/docs/input-data/performancemap.md index 30b65f450..a5fdd7dfd 100644 --- a/doc/src/docs/input-data/performancemap.md +++ b/doc/src/docs/input-data/performancemap.md @@ -33,24 +33,29 @@ At OutdoorDBT=95 and Speed=2, this performance map would yield CapRat=1.00 and C Name of performance map; given after the word "PERFORMANCEMAP". Necessary to allow reference from e.g. RSYS. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **endPERFORMANCEMAP** Optionally indicates the end of PERFORMANCEMAP definition. It is good practice to include *endPerformanceMap* after the associated PMGRIDAXIS and PMLOOKDATA. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} @@ -64,60 +69,71 @@ The order of PMGRIDAXIS commands fixes the order of PMLOOKUPDATA values -- later Name of grid axis; optionally given after the word "PMGRIDAXIS". Used in error messages. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **pmGXType=*string*** Documents the dimension of the axis, for example "OutdoorDBT", "Speed", or "AirFlow". -<%= member_table( - units: "", - legal_range: "*at least 1 char*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*at least 1 char*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **pmGXValues=*float array*** 1 to 10 comma-separated values specifying the data points of this axis. Must be in strictly ascending order. -<%= member_table( - units: "various", - legal_range: "", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "various", + "legal_range": "", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **pmGXRefValue=*float*** Defines the reference or nominal value of this PMGRIDAXIS. For example, when defining temperature points for a typical air conditioner, pmGXRefValue=95 might be used, since AC capacity is rated at 95 F. -<%= member_table( - units: "same as pmGXValues", - legal_range: "", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "same as pmGXValues", + "legal_range": "", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **endPMGRIDAXIS** Optionally indicates the end of PMGRIDAXIS definition. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} @@ -127,45 +143,54 @@ Optionally indicates the end of PMGRIDAXIS definition. Name of lookup data; optionally given after the word "PMLOOKUPDATA". Used in error messages. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **pmLUType=*string*** Documents the current lookup value, e.g. "COP" or "CapacityRatio". -<%= member_table( - units: "", - legal_range: "*at least 1 char*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*at least 1 char*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **pmLUValues=*float array*** Comma-separated values specifying the lookup data. The number of values required is the product of the size of all PMGRIDAXISs in the current PEFORMANCEMAP. In the example above, there are 4 OutdoorDBTs and 3 speeds, so 12 values must be provided. -<%= member_table( - units: "various", - legal_range: "", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "various", + "legal_range": "", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **endPMLOOKUPDATA** Optionally indicates the end of PMLOOKUPDATA definition. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> \ No newline at end of file +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} \ No newline at end of file diff --git a/doc/src/docs/input-data/perimeter.md b/doc/src/docs/input-data/perimeter.md index a03e7bacb..89c5d2a76 100644 --- a/doc/src/docs/input-data/perimeter.md +++ b/doc/src/docs/input-data/perimeter.md @@ -6,45 +6,57 @@ PERIMETER defines a subobject belonging to the current zone that represents a le Optional name of perimeter. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **prLen=*float*** Length of exposed perimeter. -<%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **prF2=*float*** Perimeter conduction per unit length. -<%= member_table( - units: "Btuh/ft-^o^F", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "Btuh/ft-^o^F", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **endPerimeter** Optionally indicates the end of the perimeter definition. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/pvarray.md b/doc/src/docs/input-data/pvarray.md index a2fcd30ec..402dacae1 100644 --- a/doc/src/docs/input-data/pvarray.md +++ b/doc/src/docs/input-data/pvarray.md @@ -6,25 +6,29 @@ PVARRAY describes a photovoltaic panel system. The algorithms are based on the [ Name of photovoltaic array. Give after the word PVARRAY. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **pvElecMtr=*choice*** Name of meter by which this PVARRAY's AC power out is recorded. Generated power is expressed as a negative value. -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*name of a METER*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **pvEndUse=*choice*** @@ -32,25 +36,29 @@ Meter end use to which the PVARRAY's generated energy should be accumulated. {% include 'enduses.md' %} -<%= member_table( - units: "", - legal_range: "*Codes listed above*", - default: "PV", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*Codes listed above*", + "default": "PV", + "required": "No", + "variability": "constant" + }) +}} **pvDCSysSize=*float*** The rated photovoltaic system DC capacity/size as indicated by the nameplate. -<%= member_table( - units: "kW", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "kW", + "legal_range": "x $\\geq$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **pvModuleType=*choice*** @@ -65,61 +73,71 @@ Type of module to model. The module type determines the refraction index and tem END %> -<%= member_table( - units: "", - legal_range: "Standard Premium ThinFilm Custom", - default: "Standard", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "Standard Premium ThinFilm Custom", + "default": "Standard", + "required": "No", + "variability": "constant" + }) +}} **pvCoverRefrInd=*float*** The refraction index for the coating applied to the module cover. A value of 1.0 represents refraction through air. Coatings have higher refraction indexes that capture more solar at lower angles of incidence. -<%= member_table( - units: "", - legal_range: "x $\\geq$ 0", - default: "1.3", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\geq$ 0", + "default": "1.3", + "required": "No", + "variability": "constant" + }) +}} **pvTempCoeff=*float*** The temperature coefficient how the efficiency of the module varies with the cell temperature. Values are typically negative. -<%= member_table( - units: "1/^o^F", - legal_range: "*no restrictions*", - default: "-0.00206", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "1/^o^F", + "legal_range": "*no restrictions*", + "default": "-0.00206", + "required": "No", + "variability": "constant" + }) +}} **pvArrayType=*choice*** The type of array describes mounting and tracking options. Roof mounted arrays have a higher installed nominal operating cell temperature (INOCT) of 120 ^o^F compared to the default of 113 ^o^F. Array self-shading is not currently calculated for adjacent rows of modules within an array. -<%= member_table( - units: "", - legal_range: " FixedOpenRack, FixedRoofMount, OneAxisTracking, TwoAxisTracking", - default: "FixedOpenRack", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": " FixedOpenRack, FixedRoofMount, OneAxisTracking, TwoAxisTracking", + "default": "FixedOpenRack", + "required": "No", + "variability": "constant" + }) +}} **pvTilt=*float*** The tilt of the photovoltaic array from horizontal. Values outside the range 0 to 360 are first normalized to that range. For one-axis tracking, defines the tilt of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. -<%= member_table( - units: "degrees", - legal_range: "unrestricted", - default: "from pvVertices (if given) else 0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "degrees", + "legal_range": "unrestricted", + "default": "from pvVertices (if given) else 0", + "required": "No", + "variability": "hourly" + }) +}} The following figures illustrate the use of both pvTilt and pvAzm for various configurations: @@ -135,13 +153,15 @@ The following figures illustrate the use of both pvTilt and pvAzm for various co Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the range 0^o^ $\leq$ *x* $<$ 360^o^ is given, it is normalized to that range. For one-axis tracking, defines the azimuth of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. -<%= member_table( - units: "degrees", - legal_range: "unrestricted", - default: "from pvVertices (if given) else 0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "degrees", + "legal_range": "unrestricted", + "default": "from pvVertices (if given) else 0", + "required": "No", + "variability": "hourly" + }) +}} **pvVertices=*list of up to 36 floats*** @@ -155,13 +175,15 @@ Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the pvVertices = 0, 0, 15, 20, 0, 15, 20, 7.07, 22.07, 0, 7.07, 22.07 -<%= member_table( - units: "ft", - legal_range: "unrestricted", - default: "no polygon", - required: "9, 12, 15, 18, 21, 24, 27, 30, 33, or 36 values", - variability: "constant") - %> +{{ + member_table({ + "units": "ft", + "legal_range": "unrestricted", + "default": "no polygon", + "required": "9, 12, 15, 18, 21, 24, 27, 30, 33, or 36 values", + "variability": "constant" + }) +}} **pvSIF=*float*** @@ -173,36 +195,43 @@ Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the Default value is 1.2, which is representative of PV systems with sub-array microinverters or DC power optimizers. For systems without sub-array power electronics, values are closer to 2.0. -<%= member_table( - legal_range: "*x* $\\geq$ 1.0", - default: "1.2", - required: "No", - variability: "constant") %> +{{ + member_table({ + "legal_range": "*x* $\\geq$ 1.0", + "default": "1.2", + "required": "No", + "variability": "constant" + }) +}} **pvMounting=*choice*** Specified mounting location of this PVARRAY. pvMounting=Site indicates the array position is not altered by building rotation via [TOP bldgAzm][top-general-data-items], while PVARRAYs with pvMounting=Building are assumed to rotate with the building. -<%= member_table( - units: "", - legal_range: "Building or Site", - default: "Building", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "Building or Site", + "default": "Building", + "required": "No", + "variability": "constant" + }) +}} **pvGrndRefl=*float*** Ground reflectance used for calculating reflected solar incidence on the array. -<%= member_table( - units: "", - legal_range: "0 $<$ *x* $<$ 1.0", - default: "0.2", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $<$ *x* $<$ 1.0", + "default": "0.2", + "required": "No", + "variability": "hourly" + }) +}} The specified surface must be modeled with the Delayed model. If gain is targeted to a Quick model surface, a warning message is issued and the gain is redirected to the air of the associated zone. -<%= member_table( - units: "", - legal_range: "name of a *SURFACE*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "name of a *SURFACE*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **sgSide=*choice*** @@ -43,12 +49,15 @@ EXTERIOR, Apply gain to exterior of surface END %> -<%= member_table( - units: "", - legal_range: "INTERIOR, EXTERIOR", - default: "Side of surface in zone containing window; or INTERIOR if both sides are in zone containing window.", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "INTERIOR, EXTERIOR", + "default": "Side of surface in zone containing window; or INTERIOR if both sides are in zone containing window.", + "required": "Yes", + "variability": "constant" + }) +}} @@ -229,67 +286,85 @@ PHIL, Phil's central difference method. Should be better if perfected*co END %> -<%= member_table( - units: "", - legal_range: "ROB, PHIL", - default: "ROB", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "ROB, PHIL", + "default": "ROB", + "required": "No", + "variability": "constant" + }) +}} **dflExH=*float*** Default exterior surface (air film) conductance used for opaque and glazed surfaces exposed to ambient conditions in the absence of explicit specification. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "*x* $>$ 0", - default: "2.64", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": "*x* $>$ 0", + "default": "2.64", + "required": "No", + "variability": "constant" + }) +}} **bldgAzm=*float*** Reference compass azimuth (0 = north, 90 = east, etc.). All zone orientations (and therefore surface orientations) are relative to this value, so the entire building can be rotated by changing bldgAzm only. If a value outside the range 0^o^ $\leq$ *x* $<$ 360^o^ is given, it is normalized to that range. -<%= member_table( - units: "^o^ (degrees)", - legal_range: "unrestricted", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "^o^ (degrees)", + "legal_range": "unrestricted", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **elevation=*float*** Elevation of the building site. Used internally for the computation of barometric pressure and air density of the location. -<%= member_table( - units: "ft", - legal_range: "*x* $\\ge$ 0", - default: "0 (sea level)", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $\\ge$ 0", + "default": "0 (sea level)", + "required": "No", + "variability": "constant" + }) +}} **runTitle=*string*** Run title for the simulation. Appears in report footers, export headers, and in the title lines to the INP, LOG, and ERR built-in reports (these appear by default in the primary report file; the ERR report also appears in the error message file, if one is created). -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "blank (no title", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "blank (no title", + "required": "No", + "variability": "constant" + }) +}} **runSerial=*int*** Run serial number for the simulation. Increments on each run in a session; appears in report footers. -<%= member_table( - units: "", - legal_range: "0 $\leq$ *x* $\leq$ 999", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\leq$ *x* $\leq$ 999", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} ## TOP Daylight Saving Time Items @@ -299,34 +374,43 @@ Daylight savings starts by default at 2:00 a.m. of the second Sunday in March. I Whether Daylight Savings Time is to be used for the current run. -<%= member_table( - units: "", - legal_range: "YES, NO", - default: "YES", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "YES, NO", + "default": "YES", + "required": "No", + "variability": "constant" + }) +}} **DTbegDay=*date*** Start day for daylight saving time (assuming DT=Yes) -<%= member_table( - units: "", - legal_range: "*date*", - default: "*second Sunday in March*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*date*", + "default": "*second Sunday in March*", + "required": "No", + "variability": "constant" + }) +}} **DTendDay=*date*** End day for daylight saving time (assuming DT=Yes) -<%= member_table( - units: "", - legal_range: "*date*", - default: "*first Sunday in November*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*date*", + "default": "*first Sunday in November*", + "required": "No", + "variability": "constant" + }) +}} ## TOP Model Control Items @@ -348,12 +432,15 @@ As noted, ventAvail is evaluated hourly, permitting flexible control strategy mo : ($hour >= 19 && $hour <= 23) ? WHOLEBUILDING : NONE -<%= member_table( - units: "", - legal_range: "*Choices above*", - default: "WHOLEBUILDING", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "*Choices above*", + "default": "WHOLEBUILDING", + "required": "No", + "variability": "hourly" + }) +}} **exShadeModel=*choice*** @@ -366,12 +453,15 @@ NONE, Disable advanced shading calculations END %> -<%= member_table( - units: "", - legal_range: "*Choices above*", - default: "PENUMBRA", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*Choices above*", + "default": "PENUMBRA", + "required": "No", + "variability": "constant" + }) +}} **slrInterpMeth=*choice*** @@ -384,56 +474,71 @@ TRNSYS END %> -<%= member_table( - units: "", - legal_range: "See table above", - default: "CSE", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "See table above", + "default": "CSE", + "required": "No", + "variability": "constant" + }) +}} **ANTolAbs=*float*** AirNet absolute convergence tolerance. Ideally, calculated zone air pressures should be such that the net air flow into each zone is 0 -- that is, there should be a perfect mass balance. The iterative AirNet solution techniques are deemed converged when netAirMassFlow < max( ANTolAbs, ANTolRel*totAirMassFlow). -<%= member_table( - units: "lbm/sec", - legal_range: "*x* $>$ 0", - default: "0.00125 (about 1 cfm)", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "lbm/sec", + "legal_range": "*x* $>$ 0", + "default": "0.00125 (about 1 cfm)", + "required": "No", + "variability": "constant" + }) +}} **ANTolRel=*float*** AirNet relative convergence tolerance. See AnTolAbs just above. -<%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "0.0001", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*x* $>$ 0", + "default": "0.0001", + "required": "No", + "variability": "constant" + }) +}} **ANPressWarn=*float*** AirNet pressure warning threshold. A warning message is issued when the absolute value of the AirNet-calculated zone pressure exceeds ANPressWarn. Note the default for ANPressWarn conservatively large. 10 lb/ft2 is about 500 pascals -- a pressure that is probably impossible in a building. The intent of this value is to alert the user to incorrect modeling inputs while avoiding excessive messages. -<%= member_table( - units: "lb/ft2", - legal_range: "x $\\gt$ 0", - default: "10", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "lb/ft2", + "legal_range": "x $\\gt$ 0", + "default": "10", + "required": "No", + "variability": "constant" + }) +}} **ANPressErr=*float*** AirNet pressure error threshold. The simulation terminates with a message if the absolute value of any AirNet-calculated zone pressure exceeds ANPressErr. Note the default value for ANPressErr is physically unrealistic. 30 lb/ft2 is about 1500 pascals -- a pressure that would never be possible in a building. The intent of this value is to prevent simulation crashes due to numerical errors in AirNet calculations. -<%= member_table( - units: "lb/ft2", - legal_range: "x $\\gt$ 0", - default: "30", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "lb/ft2", + "legal_range": "x $\\gt$ 0", + "default": "30", + "required": "No", + "variability": "constant" + }) +}} The ASHWAT complex fenestration model used when WINDOW wnModel=ASHWAT yields several heat transfer results that are accurate over local ranges of conditions. Several values control when these value are recalculated. If any of the specified values changes more than the associated threshold, a full ASHWAT calculation is triggered. Otherwise, prior results are used. ASHWAT calculations are computationally expensive and conditions often change only incrementally between time steps. @@ -442,34 +547,43 @@ The ASHWAT complex fenestration model used when WINDOW wnModel=ASHWAT yields sev ASHWAT temperature change threshold -- full calculation is triggered by a change of either indoor or outdoor environmental (combined air and radiant) temperature that exceeds AWTrigT. -<%= member_table( - units: "^o^F", - legal_range: "*x* $>$ 0", - default: "1", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "*x* $>$ 0", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} **AWTrigSlr=*float*** ASHWAT solar change threshold -- full calculation is triggered by a fractional change of incident solar radiation that exceeds AWTrigSlr. -<%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "0.05", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*x* $>$ 0", + "default": "0.05", + "required": "No", + "variability": "constant" + }) +}} **AWTrigH=*float*** ASHWAT convection coefficient change threshold -- full calculation is triggered by a fractional change of inside surface convection coefficient that exceeds AWTrigH. -<%= member_table( - units: "", - legal_range: "*x* $>$ 0", - default: "0.1", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*x* $>$ 0", + "default": "0.1", + "required": "No", + "variability": "constant" + }) +}} ## TOP Weather Data Items @@ -498,12 +612,15 @@ Weather file path name for simulation. The file should be in the current directo Note: Backslash (\\) characters in path names must be doubled to work properly (e.g. "\\\\wthr\\\\mywthr.epw"). Forward slash (/) may be used in place of backslash without doubling. -<%= member_table( - units: "", - legal_range: "file name,path optional", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "file name,path optional", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **skyModel=*choice*** @@ -515,12 +632,15 @@ ANISOTROPIC, Hay anisotropic model END %> -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "ANISOTROPIC", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "ANISOTROPIC", + "required": "No", + "variability": "constant" + }) +}} **skyModelLW=*choice*** @@ -536,12 +656,15 @@ IRHORIZ, Derives tSky from horizonal infrared data from the weather file END %> -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "DEFAULT", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "DEFAULT", + "required": "No", + "variability": "constant" + }) +}} The reference temperature and humidity are used to calculate a humidity ratio assumed in air specific heat calculations. The small effect of changing humidity on the specific heat of air is generally ignored in the interests of speed, but the user can control the humidity whose specific heat is used through the refTemp and refRH inputs. @@ -549,35 +672,44 @@ The reference temperature and humidity are used to calculate a humidity ratio as Reference temperature (see above paragraph). -<%= member_table( - units: "^o^F", - legal_range: "*x* $\\ge$ 0", - default: "60^o^", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "*x* $\\ge$ 0", + "default": "60^o^", + "required": "No", + "variability": "constant" + }) +}} **refRH=*float*** Reference relative humidity (see above). -<%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "0.6", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "0.6", + "required": "No", + "variability": "constant" + }) +}} **grndRefl=*float*** Global ground reflectivity, used except where other value specified with sfGrndRefl or wnGrndRefl. This reflectivity is used in computing the reflected beam and diffuse radiation reaching the surface in question. It is also used to calculate the solar boundary conditions for the exterior grade surface in two-dimensional finite difference calculations for FOUNDATIONs. -<%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "0.2", - required: "No", - variability: "Monthly-Hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "0.2", + "required": "No", + "variability": "Monthly-Hourly" + }) +}} The following values modify weather file data, permitting varying the simulation without making up special weather files. For example, to simulate without the effects of wind, use windF = 0; to halve the effects of diffuse solar radiation, use radDiffF = 0.5. Note that the default values for windSpeedMin and windF result in modification of weather file wind values unless other values are specified. @@ -585,12 +717,15 @@ The following values modify weather file data, permitting varying the simulation Long-wave emittance of the exterior grade surface used in two-dimensional finite difference calculations for FOUNDATIONs. -<%= member_table( - units: "", - legal_range: "0.0 $\le$ x $\le$ 1.0", - default: "0.8", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0.0 $\le$ x $\le$ 1.0", + "default": "0.8", + "required": "No", + "variability": "constant" + }) +}} @@ -599,12 +734,15 @@ Long-wave emittance of the exterior grade surface used in two-dimensional finite Ground surface roughness. Used for convection and wind speed corrections in two-dimensional finite difference calculations for FOUNDATIONs. -<%= member_table( - units: "ft", - legal_range: "x $\\geq$ 0.0", - default: "0.1", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "x $\\geq$ 0.0", + "default": "0.1", + "required": "No", + "variability": "constant" + }) +}} @@ -612,23 +750,29 @@ Ground surface roughness. Used for convection and wind speed corrections in two- Minimum value for wind speed -<%= member_table( - units: "mph", - legal_range: "*x* $\\ge$ 0", - default: "0.5", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "mph", + "legal_range": "*x* $\\ge$ 0", + "default": "0.5", + "required": "No", + "variability": "constant" + }) +}} **windF=*float*** Wind Factor: multiplier for wind speeds read from weather file. windF is applied *after* windSpeedMin. Note that windF does *not* effect infiltration rates calculated by the Sherman-Grimsrud model (see e.g. ZONE.infELA). However, windF does modify AirNet flows (see IZXFER). -<%= member_table( - units: "", - legal_range: "*x* $\\ge$ 0", - default: "0.25", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*x* $\\ge$ 0", + "default": "0.25", + "required": "No", + "variability": "constant" + }) +}} **terrainClass=*int*** @@ -643,12 +787,15 @@ Specifies characteristics of ground terrain in the project region. END %> -<%= member_table( - units: "", - legal_range: "1 $\\leq$ *x* $\\leq$ 5", - default: "4", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "1 $\\leq$ *x* $\\leq$ 5", + "default": "4", + "required": "No", + "variability": "constant" + }) +}} @@ -718,12 +880,15 @@ Soil conductivity. Used in two-dimensional finite difference calculations for FO Soil specific heat. Used in two-dimensional finite difference calculations for FOUNDATIONs. -<%= member_table( - units: "Btu/lb-^o^F", - legal_range: "*x* $>$ 0", - default: "0.1", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "Btu/lb-^o^F", + "legal_range": "*x* $>$ 0", + "default": "0.1", + "required": "No", + "variability": "constant" + }) +}} @@ -731,12 +896,15 @@ Soil specific heat. Used in two-dimensional finite difference calculations for F Soil density. Used in two-dimensional finite difference calculations for FOUNDATIONs. -<%= member_table( - units: "lb/ft^3^", - legal_range: "*x* $>$ 0", - default: "115", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "lb/ft^3^", + "legal_range": "*x* $>$ 0", + "default": "115", + "required": "No", + "variability": "constant" + }) +}} @@ -744,46 +912,58 @@ Soil density. Used in two-dimensional finite difference calculations for FOUNDAT Far-field width. Distance from foundation to the lateral, zero-flux boundary condition. Used in two-dimensional finite difference calculations for FOUNDATIONs. -<%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "130", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $>$ 0", + "default": "130", + "required": "No", + "variability": "constant" + }) +}} **deepGrndCnd=*choice*** Deep-ground boundary condition type. Choices are WATERTABLE (i.e., a defined temperature) or ZEROFLUX. -<%= member_table( - legal_range: "WATERTABLE, ZEROFLUX", - default: "ZEROFLUX", - required: "No", - variability: "constant") %> +{{ + member_table({ + "legal_range": "WATERTABLE, ZEROFLUX", + "default": "ZEROFLUX", + "required": "No", + "variability": "constant" + }) +}} **deepGrndDepth=*float*** Deep-ground depth. Distance from exterior grade to the deep-ground boundary. Used in two-dimensional finite difference calculations for FOUNDATIONs. -<%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "130", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $>$ 0", + "default": "130", + "required": "No", + "variability": "constant" + }) +}} **deepGrndT=*float*** Deep-ground temperature. Used when deepGrndCnd=WATERTABLE. -<%= member_table( - units: "F", - legal_range: "*x* $>$ 0", - default: "Annual average drybulb temperature", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "F", + "legal_range": "*x* $>$ 0", + "default": "Annual average drybulb temperature", + "required": "No", + "variability": "hourly" + }) +}} @@ -843,12 +1023,15 @@ END Note: Backslash (\\) characters in path names must be doubled to work properly (e.g. "\\\\data\\\\mytdv.tdv"). Forward slash (/) may be used in place of backslash without doubling. -<%= member_table( - units: "", - legal_range: "file name, path optional", - default: "(no TDV file)", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "file name, path optional", + "default": "(no TDV file)", + "required": "No", + "variability": "constant" + }) +}} ## TOP Report Data Items @@ -858,78 +1041,99 @@ These items are used in page-formatted report output files. See REPORTFILE, Sect Report left header. Appears at the upper left of each report page unless page formatting (rfPageFmt) is OFF. If combined length of repHdrL and repHdrR is too large for the page width, one or both will be truncated. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **repHdrR=*string*** Report right header. Appears at the upper right of each report page unless page formatting (rfPageFmt) is OFF. If combined length of repHdrL and repHdrR is too large for the page width, one or both will be truncated. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **repLPP=*int*** Total lines per page to be assumed for reports. Number of lines used for text (including headers and footers) is repLPP - repTopM - repBotM. -<%= member_table( - units: "lines", - legal_range: "*x* $\\ge$ 50", - default: "66", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "lines", + "legal_range": "*x* $\\ge$ 50", + "default": "66", + "required": "No", + "variability": "constant" + }) +}} **repTopM=*int*** Number of lines to be skipped at the top of each report page (prior to header). -<%= member_table( - units: "lines", - legal_range: "0 $\\geq$ *x* $\\geq$ 12", - default: "3", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "lines", + "legal_range": "0 $\\geq$ *x* $\\geq$ 12", + "default": "3", + "required": "No", + "variability": "constant" + }) +}} **repBotM=*int*** Number of lines reserved at the bottom of each report page. repBotM determines the position of the footer on the page (blank lines after the footer are not actually written). -<%= member_table( - units: "lines", - legal_range: "0 $\\geq$ *x* $\\geq$ 12", - default: "3", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "lines", + "legal_range": "0 $\\geq$ *x* $\\geq$ 12", + "default": "3", + "required": "No", + "variability": "constant" + }) +}} **repCPL=*int*** Characters per line for report headers and footers, user defined reports, and error messages. CSE writes simple ASCII files and assumes a fixed (not proportional) spaced printer font. Many of the built-in reports now (July 1992) assume a line width of 132 columns. -<%= member_table( - units: "characters", - legal_range: "78 $\\leq$ *x* $\\leq$ 132", - default: "78", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "characters", + "legal_range": "78 $\\leq$ *x* $\\leq$ 132", + "default": "78", + "required": "No", + "variability": "constant" + }) +}} **repTestPfx=*string*** Report test prefix. Appears at beginning of report lines that are expected to differ from prior runs. This is useful for "hiding" lines from text comparison utilities in automated testing schemes. Note: the value specified with command line -x takes precedence over this input. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} ## TOP Autosizing @@ -937,45 +1141,57 @@ Report test prefix. Appears at beginning of report lines that are expected to di Controls invocation of autosizing phase prior to simulation. -<%= member_table( - units: "", - legal_range: "YES, NO", - default: "NO, unless AUTOSIZE commands in input", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "YES, NO", + "default": "NO, unless AUTOSIZE commands in input", + "required": "No", + "variability": "constant" + }) +}} **auszTol=*float*** Autosize tolerance. Sized capacity results are deemed final when successive design day calculations produce results within auszTol of the prior iteration. -<%= member_table( - units: "", - legal_range: "", - default: ".005", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": ".005", + "required": "No", + "variability": "constant" + }) +}} **heatDsTDbO=*float*** Heating outdoor dry bulb design temperature used for autosizing heating equipment. -<%= member_table( - units: "^o^F", - legal_range: "", - default: "*none*", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "hourly" + }) +}} **heatDsTWbO=*float*** Heating outdoor design dry bulb temperature used for autosizing heating equipment. -<%= member_table( - units: "^o^F", - legal_range: "*x* $\\ge$ 0", - default: "derived assuming RH=.7", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "*x* $\\ge$ 0", + "default": "derived assuming RH=.7", + "required": "No", + "variability": "hourly" + }) +}} CSE provides 3 mutually-exclusive methods for specifying cooling design conditions. Each resulting design day is simulated repeatedly until results (e.g. equipment capacities) converge to stable values. Multiple days are typically used to ensure the a range of temperatures and sun positions are considered. @@ -987,34 +1203,43 @@ CSE provides 3 mutually-exclusive methods for specifying cooling design conditio Specifies cooling design conditions for cooling autosizing. A comma-separated list of up to 12 DESCOND names can be provided. Each day will be simulated repeatedly using weather conditions generated from DESCOND values. -<%= member_table( - units: "", - legal_range: "*name of DESCOND*", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*name of DESCOND*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **coolDsDay=*list of up to 12 days*** Specifies cooling design days for cooling autosizing. Each day will be simulated repeatedly using weather file conditions for that day. -<%= member_table( - units: "dates", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "dates", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **coolDsMo=*list of up to 12 months*** Deprecated method for specifying design days for cooling autosizing. Design conditions are taken from ET1 weather file header, however, the limited availale ET1 files do not contain design condition information. -<%= member_table( - units: "months", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "months", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} ## TOP Debug Reporting @@ -1023,12 +1248,15 @@ Deprecated method for specifying design days for cooling autosizing. Design con Controls verbosity of screen remarks. Most possible remarks are generated during autosizing of CNE models. Little or no effect in CSE models. TODO: document options -<%= member_table( - units: "", - legal_range: "0 - 5", - default: "1", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "0 - 5", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} The following dbgPrintMask values provide bitwise control of addition of semi-formated internal results to the run report file. The values and format of debugging reports are modified as required for testing purposes. @@ -1036,45 +1264,57 @@ The following dbgPrintMask values provide bitwise control of addition of semi-fo Constant portion of debug reporting control. -<%= member_table( - units: "", - legal_range: "", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **dbgPrintMask=*int*** Hourly portion of debug reporting control (generally an expression that evaluates to non-0 only on days or hours of interest). -<%= member_table( - units: "", - legal_range: "", - default: "0", - required: "No", - variability: "hourly") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "0", + "required": "No", + "variability": "hourly" + }) +}} **dbgFlag=*int*** Allows passing an input value to ad-hoc debugging code. No permanent use; no impact on results. -<%= member_table( - units: "", - legal_range: "", - default: "0", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "0", + "required": "No", + "variability": "subhourly" + }) +}} **doCoverage=*choice*** Enables expression code coverage reporting. Development aid. -<%= member_table( - units: "", - legal_range: "NO, YES", - default: "*NO*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "NO, YES", + "default": "*NO*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/window.md b/doc/src/docs/input-data/window.md index 1027530cc..4dce1b6d1 100644 --- a/doc/src/docs/input-data/window.md +++ b/doc/src/docs/input-data/window.md @@ -8,73 +8,85 @@ Windows may optionally have operable interior shading that reduces the overall s Name of window: follows the word "WINDOW" if given. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **wnHeight=*float*** Overall height of window (including frame). -<%= member_table( - units: "ft", - legal_range: "x $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "ft", + "legal_range": "x $>$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **wnWidth=*float*** Overall width of window (including frame). -<%= member_table( - units: "ft", - legal_range: "x $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "ft", + "legal_range": "x $>$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **wnArea=*float*** Overall area of window (including frame). -<%= member_table( - units: "ft^2^", - legal_range: "x $>$ 0", - default: "*wnHeight* \* *wnWidth*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "ft^2^", + "legal_range": "x $>$ 0", + "default": "*wnHeight* \* *wnWidth*", + "required": "No", + "variability": "constant" + }) +}} **wnMult=*float*** Area multiplier; can be used to represent multiple identical windows. -<%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "1", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} **wnModel=*choice*** Selects window model -<%= member_table( - units: "", - legal_range: "SHGC, ASHWAT", - default: "SHGC", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "SHGC, ASHWAT", + "default": "SHGC", + "required": "No", + "variability": "constant" + }) +}} **wnGt=*choice*** @@ -92,49 +104,57 @@ Where 0.85 is the sum of the interior (0.68) and exterior (0.17) design air film Approach 2. Enter wnU=U-factor and let the wnInH and wnExH default. Tnormally this approach systematically underestimates the window U-factor because it adds the wnExfilm resistance to 1/U-factor thereby double counting the exterior film resistance. This approach will also yield incorrect results for gnFrad internal gain since the high wnInH will put almost all the gain back in the space. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "x $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": "x $>$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **wnUNFRC=*float*** Fenestration system (including frame) U-factor evaluated at NFRC heating conditions. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "x $>$ 0", - default: "gtUNFRC", - required: "Required when *wnModel* = ASHWAT", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": "x $>$ 0", + "default": "gtUNFRC", + "required": "Required when *wnModel* = ASHWAT", + "variability": "constant" + }) +}} **wnExEpsLW=*float*** Window exterior long wave (thermal) emittance. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.84", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ *x* $\\le$ 1", + "default": "0.84", + "required": "No", + "variability": "constant" + }) +}} **wnInEpsLW=*float*** Window interior long wave (thermal) emittance. -<%= member_table( - units: "", - legal_range: "0 $\\le$ *x* $\\le$ 1", - default: "0.84", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ *x* $\\le$ 1", + "default": "0.84", + "required": "No", + "variability": "constant" + }) +}} **wnInH=*float*** @@ -148,25 +168,29 @@ Preferred Approach: Enter the appropriate value for each window, normally: The large default value of 10,000 represents a near-0 resistance, for the convenience of those who wish to include the interior surface film in wnU according to approach 2 above. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "x $>$ 0", - default: "10000", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": "x $>$ 0", + "default": "10000", + "required": "No", + "variability": "constant" + }) +}} **wnExH=*float*** Window exterior surface (air film) conductance. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "x $>$ 0", - default: "same as owning surface", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": "x $>$ 0", + "default": "same as owning surface", + "required": "No", + "variability": "constant" + }) +}} Several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on wnExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. @@ -186,205 +210,239 @@ END Selects the model used for exterior surface convection when wnModel = Forward\_Difference. -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "UNIFIED", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "UNIFIED", + "required": "No", + "variability": "constant" + }) +}} **wnExHcLChar=*float*** Characteristic length of surface, used in derivation of forced exterior convection coefficients in some models when outside face is exposed to ambient (i.e. to wind). -<%= member_table( - units: "ft", - legal_range: "x $>$ 0", - default: "10", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "ft", + "legal_range": "x $>$ 0", + "default": "10", + "required": "No", + "variability": "constant" + }) +}} **wnExHcMult=*float*** Exterior convection coefficient adjustment factor. When wnExHcModel=INPUT, hc=wnExHcMult. For other wnExHcModel choices, the model-derived hc is multiplied by wnExHcMult. -<%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "1", - required: "No", - variability: "subhourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\ge$ 0", + "default": "1", + "required": "No", + "variability": "subhourly" + }) +}} **wnInHcModel=*choice*** Selects the model used for the inside (zone) surface convection when wnModel = Forward\_Difference. -<%= member_table( - units: "", - legal_range: "*choices above (see wnExHcModel)*", - default: "UNIFIED", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above (see wnExHcModel)*", + "default": "UNIFIED", + "required": "No", + "variability": "constant" + }) +}} **wnInHcMult=*float*** Interior convection coefficient adjustment factor. When wnInHcModel=INPUT, hc=wnInHcMult. For other wnInHcModel choices, the model-derived hc is multiplied by wnInHcMult. -<%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "1", - required: "No", - variability: "subhourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\ge$ 0", + "default": "1", + "required": "No", + "variability": "subhourly" + }) +}} **wnSHGC=*float*** Rated Solar Heat Gain Coefficient (SHGC) for the window assembly. -<%= member_table( - units: "fraction", - legal_range: "0 < x < 1", - default: "gtSHGC", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 < x < 1", + "default": "gtSHGC", + "required": "No", + "variability": "constant" + }) +}} **wnFMult=*float*** Frame area multiplier = areaGlaze / areaAssembly -<%= member_table( - units: "fraction", - legal_range: "0 < x < 1", - default: "gtFMult or 1", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 < x < 1", + "default": "gtFMult or 1", + "required": "No", + "variability": "constant" + }) +}} **wnSMSO=*float*** SHGC multiplier with shades open. Overrides gtSMSO. -<%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "gtSMSO or 1", - required: "No", - variability: "Monthly - Hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "gtSMSO or 1", + "required": "No", + "variability": "Monthly - Hourly" + }) +}} **wnSMSC=*float*** SHGC multiplier with shades closed. Overrides gtSMSC -<%= member_table( - units: "fraction", - legal_range: "0 $\leq$ *x* $\leq$ 1", - default: "wnSMSO or gtSMSC", - required: "No", - variability: "Monthly - Hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 $\leq$ *x* $\leq$ 1", + "default": "wnSMSO or gtSMSC", + "required": "No", + "variability": "Monthly - Hourly" + }) +}} **wnNGlz=*int*** Number of glazings in the window (bare glass only, not including any interior or exterior shades). -<%= member_table( - units: "", - legal_range: "0 $<$ *x* $\leq$ 4", - default: "gtNGLZ", - required: "Required when *wnModel* = ASHWAT", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $<$ *x* $\leq$ 4", + "default": "gtNGLZ", + "required": "Required when *wnModel* = ASHWAT", + "variability": "constant" + }) +}} **wnExShd=*choice*** Exterior shading type (ASHWAT only). -<%= member_table( - units: "", - legal_range: "NONE, INSCRN", - default: "gtExShd", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "NONE, INSCRN", + "default": "gtExShd", + "required": "No", + "variability": "constant" + }) +}} **wnInShd=*choice*** Interior shade type (ASHWAT only). -<%= member_table( - units: "", - legal_range: "NONE, DRAPEMED", - default: "gtInShd", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "NONE, DRAPEMED", + "default": "gtInShd", + "required": "No", + "variability": "constant" + }) +}} **wnDirtLoss=*float*** Glazing dirt loss factor. -<%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **wnGrndRefl=*float*** Ground reflectivity for this window. -<%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "sfGrndRefl", - required: "No", - variability: "Monthly - Hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "sfGrndRefl", + "required": "No", + "variability": "Monthly - Hourly" + }) +}} **wnVfSkyDf=*float*** View factor from this window to sky for diffuse radiation. For the shading effects of an overhang, a wnVfSkyDf value smaller than the default would be used -<%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ x $\\leq$ 1", - default: "0.5 - 0.5 cos(tilt) = .5 for vertical surface", - required: "No", - variability: "Monthly - Hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 $\\leq$ x $\\leq$ 1", + "default": "0.5 - 0.5 cos(tilt) = .5 for vertical surface", + "required": "No", + "variability": "Monthly - Hourly" + }) +}} **wnVfGrndDf=*float*** View factor from this window to ground for diffuse radiation. For the shading effects of a fin(s), both wnVfSkyDf and wnVfGrndDf would be used. -<%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ x $\\leq$ 1", - default: "0.5 + 0.5 .5 for vertical surface", - required: "No", - variability: "Monthly - Hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 $\\leq$ x $\\leq$ 1", + "default": "0.5 + 0.5 .5 for vertical surface", + "required": "No", + "variability": "Monthly - Hourly" + }) +}} **endWINDOW** Optionally indicates the end of the window definition. Alternatively, the end of the window definition can be indicated by END or the declaration of another object. END or endWindow, if used, should follow any subobjects of the window (SHADEs and/or SGDISTs). -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/docs/input-data/zone.md b/doc/src/docs/input-data/zone.md index d609c73b2..6d6f4fef1 100644 --- a/doc/src/docs/input-data/zone.md +++ b/doc/src/docs/input-data/zone.md @@ -8,13 +8,15 @@ ZONE constructs an object of class ZONE, which describes an area of the building Name of zone. Enter after the word ZONE; no "=" is used. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **znModel=*choice*** @@ -27,181 +29,211 @@ UZM, Unconditioned zone model. Identical to CZM except heating and cooling are n END %> -<%= member_table( - units: "", - legal_range: "*choices above*", - default: "CNE", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*choices above*", + "default": "CNE", + "required": "No", + "variability": "constant" + }) +}} **znArea=*float*** Nominal zone floor area. -<%= member_table( - units: "ft^2^", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "ft^2^", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **znVol=*float*** Nominal zone volume. -<%= member_table( - units: "ft^3^", - legal_range: "*x* $>$ 0", - default: "*none*", - required: "Yes", - variability: "constant") - %> +{{ + member_table({ + "units": "ft^3^", + "legal_range": "*x* $>$ 0", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} **znAzm=*float*** Zone azimuth with respect to bldgAzm. All surface azimuths are relative to znAzm, so that the zone can be rotated by changing this member only. Values outside the range 0^o^ to 360^o^ are normalized to that range. -<%= member_table( - units: "degrees", - legal_range: "unrestricted", - default: "0", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "degrees", + "legal_range": "unrestricted", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **znFloorZ=*float*** Nominal zone floor height relative to arbitrary 0 level. Used re determination of vent heights -<%= member_table( - units: "ft", - legal_range: "unrestricted", - default: "0", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "ft", + "legal_range": "unrestricted", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **znCeilingHt=*float*** Nominal zone ceiling height relative to zone floor (typically 8 – 10 ft). -<%= member_table( - units: "ft", - legal_range: "*x* $>$ 0", - default: "*znVol* / *znArea*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "ft", + "legal_range": "*x* $>$ 0", + "default": "*znVol* / *znArea*", + "required": "No", + "variability": "constant" + }) +}} **znEaveZ=*float*** Nominal eave height above ground level. Used re calculation of local surface wind speed. This in turn influences outside convection coefficients in some surface models and wind-driven air leakage. -<%= member_table( - units: "ft", - legal_range: "x $>$ 0", - default: "*znFloorZ + infStories\*8*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "ft", + "legal_range": "x $>$ 0", + "default": "*znFloorZ + infStories\*8*", + "required": "No", + "variability": "constant" + }) +}} **znCAir=*float*** Zone "air" heat capacity: represents heat capacity of air, furniture, "light" walls, and everything in zone except surfaces having heat capacity (that is, non-QUICK surfaces). -<%= member_table( - units: "Btu/^o^F", - legal_range: "x $\\geq$ 0", - default: "3.5 \* *znArea*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "Btu/^o^F", + "legal_range": "x $\\geq$ 0", + "default": "3.5 \* *znArea*", + "required": "No", + "variability": "constant" + }) +}} **znHcAirX=*float*** Zone air exchange rate used in determination of interior surface convective coefficients. This item is generally used only for model testing. -<%= member_table( - units: "ACH", - legal_range: "x $>$ 0", - default: "as modeled", - required: "No", - variability: "subhourly") - %> +{{ + member_table({ + "units": "ACH", + "legal_range": "x $>$ 0", + "default": "as modeled", + "required": "No", + "variability": "subhourly" + }) +}} **znHcFrcF=*float*** Zone surface forced convection factor. Interior surface convective transfer is modeled as a combination of forced and natural convection. hcFrc = znHcFrcF * znHcAirX^.8. See CSE Engineering Documentation. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: ".2", - default: ".2", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": ".2", + "default": ".2", + "required": "No", + "variability": "hourly" + }) +}} **znHIRatio=*float*** Zone hygric inertia ratio. In zone moisture balance calculations, the effective dry-air mass = znHIRatio * (zone dry air mass). This enhancement can be used to represente the moisture storage capacity of zone surfaces and contents. -<%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "1", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} **znSC=*float*** Zone shade closure. Determines insolation through windows (see WINDOW members *wnSCSO* and *wnSCSC*) and solar gain distribution: see SGDIST members *sgFSO* and *sgFSC*. 0 represents shades open; 1 represents shades closed; intermediate values are allowed. An hourly variable CSE expression may be used to schedule shade closure as a function of weather, time of year, previous interval HVAC use or zone temperature, etc. -<%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "1 when cooling was used in *previous* hour, else 0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "1 when cooling was used in *previous* hour, else 0", + "required": "No", + "variability": "hourly" + }) +}} **znTH=*float*** Heating set point used (and required) when znModel=CZM and zone has no terminals. -<%= member_table( - units: "^o^F", - legal_range: "0 < znTH < znTC", - default: "*none*", - required: "Per above", - variability: "subhourly") - %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "0 < znTH < znTC", + "default": "*none*", + "required": "Per above", + "variability": "subhourly" + }) +}} **znTD=*float*** Desired set point (temperature maintained with ventilation if possible) for znModel=CZM. Must be specified when zone ventilation is active. -<%= member_table( - units: "^o^F", - legal_range: "x > 0; znTH < znTD < znTC", - default: "*none*", - required: "if venting", - variability: "subhourly") - %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "x > 0; znTH < znTD < znTC", + "default": "*none*", + "required": "if venting", + "variability": "subhourly" + }) +}} **znTC=*float*** Cooling set point used (and required) when znModel=CZM and zone has no terminals. -<%= member_table( - units: "^o^F", - legal_range: "0 < znTC > znTH", - default: "*none*", - required: "Per above", - variability: "subhourly") - %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "0 < znTC > znTH", + "default": "*none*", + "required": "Per above", + "variability": "subhourly" + }) +}} znModel = CZM zone heating and cooling is provided either via an RSYS HVAC system, by "magic" heat transfers specified by znQxxx items, or via TERMINAL (s). One of these must be defined. @@ -209,61 +241,71 @@ znModel = CZM zone heating and cooling is provided either via an RSYS HVAC syste Name of RSYS providing heating, cooling, and optional central fan integrated ventilation to this zone. -<%= member_table( - units: "", - legal_range: "*RSYS name*", - default: "(no RSYS)", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*RSYS name*", + "default": "(no RSYS)", + "required": "No", + "variability": "constant" + }) +}} **znQMxH=*float*** Heating capacity at current conditions -<%= member_table( - units: "Btuh", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "x $\\geq$ 0", + "default": "*none*", + "required": "No", + "variability": "hourly" + }) +}} **znQMxHRated=*float*** Rated heating capacity -<%= member_table( - units: "Btuh", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "x $\\geq$ 0", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **znQMxC=*float*** Cooling capacity at current conditions -<%= member_table( - units: "Btuh", - legal_range: "x $\\leq$ 0", - default: "*none*", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "x $\\leq$ 0", + "default": "*none*", + "required": "No", + "variability": "hourly" + }) +}} **znQMxCRated=*float*** Rated cooling capacity -<%= member_table( - units: "Btuh", - legal_range: "x $\\leq$ 0", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "x $\\leq$ 0", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} <% if comfort_model %> The following provide parameters for comfort calculations @@ -272,49 +314,57 @@ The following provide parameters for comfort calculations Occupant clothing resistance, used only when a comfort model is enabled. -<%= member_table( - units: "clo", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "No", - variability: "subhourly") - %> +{{ + member_table({ + "units": "clo", + "legal_range": "x $\\geq$ 0", + "default": "*none*", + "required": "No", + "variability": "subhourly" + }) +}} **znComfMet=*float*** Occupant metabolic rate, used only when a comfort model is enabled. -<%= member_table( - units: "met", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "met", + "legal_range": "x $\\geq$ 0", + "default": "*none*", + "required": "No", + "variability": "hourly" + }) +}} **znComfAirV=*float*** Nominal air velocity used for comfort model, used only when a comfort model is enabled. -<%= member_table( - units: "", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "No", - variability: "Hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\geq$ 0", + "default": "*none*", + "required": "No", + "variability": "Hourly" + }) +}} **znComfRh=*float*** Nominal zone relative humidity used for comfort model, used only when a comfort model is enabled. -<%= member_table( - units: "", - legal_range: "0 $\\leq$ *x* $\\leq$ 1", - default: "*none*", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "default": "*none*", + "required": "No", + "variability": "hourly" + }) +}} <% end %> @@ -326,25 +376,29 @@ The following control a simplified air change plus leakage area model. The Sherm Zone infiltration air changes per hour. -<%= member_table( - units: "1/hr", - legal_range: "x $\\geq$ 0", - default: "0.5", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "1/hr", + "legal_range": "x $\\geq$ 0", + "default": "0.5", + "required": "No", + "variability": "hourly" + }) +}} **infELA=*float*** Zone effective leakage area (ELA). -<%= member_table( - units: "in^2^", - legal_range: "x $\\geq$ 0", - default: "0.0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "in^2^", + "legal_range": "x $\\geq$ 0", + "default": "0.0", + "required": "No", + "variability": "hourly" + }) +}} **infShld=*int*** @@ -359,61 +413,71 @@ Zone local shielding class, used in derivation of local wind speed for ELA infil END %> -<%= member_table( - units: "", - legal_range: "1 $\\leq$ *x* $\\leq$ 5", - default: "3", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "1 $\\leq$ *x* $\\leq$ 5", + "default": "3", + "required": "No", + "variability": "constant" + }) +}} **infStories=*int*** Number of stories in zone, used in ELA model. -<%= member_table( - units: "", - legal_range: "1 $\\leq$ *x* $\\leq$ 3", - default: "1", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "1 $\\leq$ *x* $\\leq$ 3", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} **znWindFLkg=*float*** Wind speed modifier factor. The weather file wind speed is multiplied by this factor to yield a local wind speed for use in infiltration and convection models. -<%= member_table( - units: "", - legal_range: "x $\\geq$ 0", - default: "derived from znEaveZ and infShld", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\geq$ 0", + "default": "derived from znEaveZ and infShld", + "required": "No", + "variability": "constant" + }) +}} **znAFMtr=*afMtrName*** Name of an AFMETER object, if any, to which zone AirNet air flows are recorded. *ZnAFMtr* defines a pressure boundary for accounting purposes. Multiple zones having the same AFMETER are treated as a single volume -- interzone flows within that volume are not recorded. For example, to obtain "building total" flow data, a common AFMETER could be assigned to several conditioned zones but not to adjacent unconditioned zones such as attic spaces. -<%= member_table( - units: "", - legal_range: "*name of an AFMETER*", - default: "*not recorded*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*name of an AFMETER*", + "default": "*not recorded*", + "required": "No", + "variability": "constant" + }) +}} **znLoadMtr=*ldMtrName*** Name of a LOADMETER object, if any, to which zone heating and cooling loads are recorded. -<%= member_table( - units: "", - legal_range: "*name of a LOADMETER*", - default: "*not recorded*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*name of a LOADMETER*", + "default": "*not recorded*", + "required": "No", + "variability": "constant" + }) +}} ## ZONE Exhaust Fan @@ -425,13 +489,15 @@ Zone exhaust fan model implementation is incomplete as of July, 2011. The curren Exhaust fan on fraction. On/off control assumed, so electricity requirement is proportional to run time. -<%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ x $\\leq$ 1", - default: "1", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 $\\leq$ x $\\leq$ 1", + "default": "1", + "required": "No", + "variability": "hourly" + }) +}} Example: The following would run an exhaust fan 70% of the time between 8 AM and 5 PM: @@ -443,25 +509,29 @@ Example: The following would run an exhaust fan 70% of the time between 8 AM and Exhaust fan design flow; 0 or not given indicates no fan. -<%= member_table( - units: "cfm", - legal_range: "x $\\geq$ 0", - default: "0, no fan", - required: "If fan present", - variability: "constant") - %> +{{ + member_table({ + "units": "cfm", + "legal_range": "x $\\geq$ 0", + "default": "0, no fan", + "required": "If fan present", + "variability": "constant" + }) +}} **xfanPress=*float*** Exhaust fan external static pressure. -<%= member_table( - units: "inches", - legal_range: "0.05 $\\leq$ *x* $\\leq$ 1.0", - default: "0.3", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "inches", + "legal_range": "0.05 $\\leq$ *x* $\\leq$ 1.0", + "default": "0.3", + "required": "No", + "variability": "constant" + }) +}} Only one of xfanElecPwr, xfanEff, and xfanShaftBhp may be given: together with xfanVfDs and xfanPress, any one is sufficient for CSE to detemine the others and to compute the fan heat contribution to the air stream. @@ -469,61 +539,71 @@ Only one of xfanElecPwr, xfanEff, and xfanShaftBhp may be given: together with x Fan input power per unit air flow (at design flow and pressure). -<%= member_table( - units: "W/cfm", - legal_range: "x $>$ 0", - default: "derived from xfanEff", - required: "If xfanEff and xfanShaftBhp not present", - variability: "constant") - %> +{{ + member_table({ + "units": "W/cfm", + "legal_range": "x $>$ 0", + "default": "derived from xfanEff", + "required": "If xfanEff and xfanShaftBhp not present", + "variability": "constant" + }) +}} **xfanEff=*float*** Exhaust fan/motor/drive combined efficiency. -<%= member_table( - units: "fraction", - legal_range: "0 $\\leq$ x $\\leq$ 1", - default: "0.08", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "fraction", + "legal_range": "0 $\\leq$ x $\\leq$ 1", + "default": "0.08", + "required": "No", + "variability": "constant" + }) +}} **xfanShaftBhp=*float*** Fan shaft power at design flow and pressure. -<%= member_table( - units: "BHP", - legal_range: "x $>$ 0", - default: "derived from xfanElecPwr and xfanVfDs", - required: "If xfanElecPwr not present", - variability: "constant") - %> +{{ + member_table({ + "units": "BHP", + "legal_range": "x $>$ 0", + "default": "derived from xfanElecPwr and xfanVfDs", + "required": "If xfanElecPwr not present", + "variability": "constant" + }) +}} **xfanMtr=*mtrName*** Name of METER object, if any, by which fan's energy use is recorded (under end use category "fan"). -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*not recorded*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*name of a METER*", + "default": "*not recorded*", + "required": "No", + "variability": "constant" + }) +}} **endZone** Indicates the end of the zone definition. Alternatively, the end of the zone definition can be indicated by the declaration of another object or by "END". If END or endZone is used, it should follow the definitions of the ZONE's subobjects such as GAINs, SURFACEs, TERMINALs, etc. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** diff --git a/doc/src/extra/inverse.md b/doc/src/extra/inverse.md index 6fd39bc09..74082c801 100644 --- a/doc/src/extra/inverse.md +++ b/doc/src/extra/inverse.md @@ -4,65 +4,86 @@ Function inverter **ivFREQ=*Choice*** -<%= member_table( - units: "", - legal_range: "", - default: "**none**", - required: "No", - variability: "runly") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "**none**", + "required": "No", + "variability": "runly" + }) +}} **ivX=*float*** -<%= member_table( - units: "", - legal_range: "", - default: "**none**", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "**none**", + "required": "No", + "variability": "constant" + }) +}} **ivX0=*float*** -<%= member_table( - units: "", - legal_range: "", - default: "**none**", - required: "No", - variability: "runly") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "**none**", + "required": "No", + "variability": "runly" + }) +}} **ivY=*float*** -<%= member_table( - units: "", - legal_range: "", - default: "**none**", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "**none**", + "required": "No", + "variability": "constant" + }) +}} **ivY0=*float*** -<%= member_table( - units: "", - legal_range: "", - default: "**none**", - required: "No", - variability: "runly") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "**none**", + "required": "No", + "variability": "runly" + }) +}} **ivYTarg=*float*** -<%= member_table( - units: "", - legal_range: "", - default: "**none**", - required: "No", - variability: "runly") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "**none**", + "required": "No", + "variability": "runly" + }) +}} **endInverse** Optionally indicates the end of the inverse definition. -<%= member_table( - units: "", - legal_range: "", - default: "**none**", - required: "No", - variability: "") %> \ No newline at end of file +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "**none**", + "required": "No", + "variability": "" + }) +}} \ No newline at end of file diff --git a/doc/src/shared/dhwheater-doc.md b/doc/src/shared/dhwheater-doc.md index 0537717d6..187a31198 100644 --- a/doc/src/shared/dhwheater-doc.md +++ b/doc/src/shared/dhwheater-doc.md @@ -2,25 +2,29 @@ Optional name of water heater; give after the word “DHWHEATER” if desired. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **whMult=*integer*** Number of identical water heaters of this type. Any value $>1$ is equivalent to repeated entry of the same DHWHEATER. -<%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "1", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} **whType=*choice*** @@ -35,13 +39,15 @@ Type of water heater. This categorization is based on CEC and federal rating st END %> - <%= member_table( - units: "", - legal_range: "*Codes listed above*", - default: "SMALLSTORAGE", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*Codes listed above*", + "default": "SMALLSTORAGE", + "required": "No", + "variability": "constant" + }) +}} **whHeatSrc=*choice*** @@ -58,58 +64,71 @@ available for electric (air source heat pump and resistance) SMALLSTORAGE water END %> -<%= member_table( - units: "", - legal_range: "*Codes listed above*", - default: "FUEL", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*Codes listed above*", + "default": "FUEL", + "required": "No", + "variability": "constant" + }) +}} **whResType=*choice*** Resistance heater type, valid only if whHeatSrc is equal to RESISTANCEX, else ignored. These choices are supported by the detailed HPWH model. Except for Generic, all heater characteristics are set by HPWH based on whResType. -<%= member_table( - units: "", - legal_range: "Typical\nSwingTank", - default: "Typical", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "Typical\nSwingTank", + "default": "Typical", + "required": "No", + "variability": "constant" + }) +}} **whHeatingCap=*float*** Nominal heating capacity, available only for a limited HPWH types. -<%= member_table( - units: "Btuh", - legal_range: "x $>$ 0", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "x $>$ 0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **whVol=*float*** Storage tank volume. Must be omitted or 0 for instantaneous whTypes. Used by HPWH model (whHeatSrc=RESISTANCEX or whHeatSrc=ASHPX). Required when whHeatSrc=RESISTANCEX or whHeatSrc=ASHPX with whASHPType=GENERIC. For all other configurations, whVol is documentation-only. -<%= member_table( - units: "gal", - legal_range: "$\\ge$ 0.1 (caution: small values may cause runtime errors)", - default: "per whASHPType if HPWH else 50", - required: "For some HPWH configurations, see above", - variability: "constant") - %> +{{ + member_table({ + "units": "gal", + "legal_range": "$\\ge$ 0.1 (caution: small values may cause runtime errors)", + "default": "per whASHPType if HPWH else 50", + "required": "For some HPWH configurations, see above", + "variability": "constant" + }) +}} **whVolRunning=*float*** Running storage volume is the volume above aquastat. Requires the total volume based on aquastat position. Ecotope's HPWH tank and heater. -<%= member_table( - units: "gal", - legal_range: "x $>$ 0", - default: "0", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "gal", + "legal_range": "x $>$ 0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **whEF=*float*** @@ -129,13 +148,15 @@ below. Calculation methods are documented in RACM, Appendix B. END %> -<%= member_table( - units: "", - legal_range: "$>$ 0 *Caution: maximum not checked. Unrealistic values will cause runtime errors and/or invalid results*", - default: "*See above*", - required: "*See above*", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "$>$ 0 *Caution: maximum not checked. Unrealistic values will cause runtime errors and/or invalid results*", + "default": "*See above*", + "required": "*See above*", + "variability": "constant" + }) +}} **whLDEF=*float*** @@ -143,85 +164,99 @@ Load-dependent energy factor for DHWHEATERs with whType=SMALLSTORAGE and whHeatS or whHeatSrc=RESISTANCE. If not given, whLDEF is derived using a preliminary simulation activated via DHWSYS wsCalcMode=PRERUN. See RACM Appendix B. -<%= member_table( - units: "", - legal_range: "x $>$ 0", - default: "Calculated via DHWSYS PreRun mechanism", - required: "When whType = SMALLSTORAGE and PreRun not used", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $>$ 0", + "default": "Calculated via DHWSYS PreRun mechanism", + "required": "When whType = SMALLSTORAGE and PreRun not used", + "variability": "constant" + }) +}} **whUEF=*float*** Water heater Uniform Energy Factor efficiency rating, used when whType=INSTANTANEOUSUEF. -<%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "*none*", - required: "when whType= INSTANTANEOUSUEF", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\ge$ 0", + "default": "*none*", + "required": "when whType= INSTANTANEOUSUEF", + "variability": "constant" + }) +}} **whAnnualElec=*float*** Annual electricity use assumed in UEF rating derivation. Used when whType=INSTANTANEOUSUEF. -<%= member_table( - units: "kWh", - legal_range: "x $\\ge$ 0", - default: "*none*", - required: "when whType= INSTANTANEOUSUEF", - variability: "constant") - %> +{{ + member_table({ + "units": "kWh", + "legal_range": "x $\\ge$ 0", + "default": "*none*", + "required": "when whType= INSTANTANEOUSUEF", + "variability": "constant" + }) +}} **whAnnualFuel=*float*** Annual fuel use assumd in UEF rating derivation, used when whType=INSTANTANEOUSUEF. -<%= member_table( - units: "therms", - legal_range: "x $\\ge$ 0", - default: "*none*", - required: "when whType= INSTANTANEOUSUEF", - variability: "constant") - %> +{{ + member_table({ + "units": "therms", + "legal_range": "x $\\ge$ 0", + "default": "*none*", + "required": "when whType= INSTANTANEOUSUEF", + "variability": "constant" + }) +}} **whRatedFlow=*float*** Maximum flow rate assumed in UEF rating derivation. Used when whType=INSTANTANEOUSUEF. -<%= member_table( - units: "gpm", - legal_range: "x $>$ 0", - default: "*none*", - required: "when whType= INSTANTANEOUSUEF", - variability: "constant") - %> +{{ + member_table({ + "units": "gpm", + "legal_range": "x $>$ 0", + "default": "*none*", + "required": "when whType= INSTANTANEOUSUEF", + "variability": "constant" + }) +}} **whStbyElec=*float*** Instantaneous water heater standby power (electricity consumed when heater is not operating). Used when whType=INSTANTANEOUSUEF. -<%= member_table( - units: "W", - legal_range: "x $\\ge$ 0", - default: "4", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "W", + "legal_range": "x $\\ge$ 0", + "default": "4", + "required": "No", + "variability": "constant" + }) +}} **whLoadCFwdF=*float*** Instanteous water heater load carry forward factor -- approximate number of hours the heater is allowed to meet water heating demand that is unmet on a 1 minute basis, used when whType=INSTANTANEOUSUEF. -<%= member_table( - units: "", - legal_range: "x $\\ge$ 0", - default: "1", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\ge$ 0", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} **whZone=*znName*** @@ -229,13 +264,15 @@ Name of zone where water heater is located, used only in detailed HPWH models (w whZone and whTEx cannot both be specified. -<%= member_table( - units: "", - legal_range: "name of a ZONE", - default: "Not in a zone (heat losses discarded)", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of a ZONE", + "default": "Not in a zone (heat losses discarded)", + "required": "No", + "variability": "constant" + }) +}} **whTEx=*float*** @@ -243,13 +280,15 @@ Water heater surround temperature, used only in detailed HPWH models (whHeatSrc= whZone and whTEx cannot both be specified. -<%= member_table( - units: "^o^F", - legal_range: "x $\\ge$ 0", - default: "whZone air temperature if specified, else 70 ^o^F", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "x $\\ge$ 0", + "default": "whZone air temperature if specified, else 70 ^o^F", + "required": "No", + "variability": "hourly" + }) +}} **whASHPType=*choice*** @@ -369,13 +408,15 @@ Air source heat pump type, valid only if whHeatSrc=ASHPX. These choices are supp END %> -<%= member_table( - units: "", - legal_range: "*Codes listed above*", - default: "*none*", - required: "When whHeatSrc=ASHPX", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*Codes listed above*", + "default": "*none*", + "required": "When whHeatSrc=ASHPX", + "variability": "constant" + }) +}} **whASHPSrcZn=*znName*** @@ -383,13 +424,15 @@ Name of zone that serves as heat pump heat source used when whHeatSrc=ASHPX. Hea whASHPSrcZn and whASHPSrcT cannot both be specified. -<%= member_table( - units: "", - legal_range: "name of a ZONE", - default: "whZoneIf no zone is specified by input or default, heat extracted by ASHP has no effect.", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "name of a ZONE", + "default": "whZoneIf no zone is specified by input or default, heat extracted by ASHP has no effect.", + "required": "No", + "variability": "constant" + }) +}} **whASHPSrcT=*float*** @@ -412,192 +455,227 @@ The logic to determine the temperature of the heat pump source air is: To model a heat pump that uses outdoor air as its heat source, omit whASHPSrcZn and specify whASHPSrcT = $tDbO. -<%= member_table( - units: "^o^F", - legal_range: "x $\\ge$ 0", - default: "70 ^o^F (used only when whASHPSrcZn and whZone not specified)", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "x $\\ge$ 0", + "default": "70 ^o^F (used only when whASHPSrcZn and whZone not specified)", + "required": "No", + "variability": "hourly" + }) +}} **whASHPResUse=*float*** Specifies activation temperature difference for resistance heating, used only when whHeatSrc=ASHPX and whASHPType=GENERIC. Refer to HPWH engineering documentation for model details. -<%= member_table( - units: "^o^C", - legal_range: "x $\\ge$ 0", - default: "7.22", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "^o^C", + "legal_range": "x $\\ge$ 0", + "default": "7.22", + "required": "No", + "variability": "constant" + }) +}} **whResHtPwr=*float*** Specifies resistance upper element power, used only with whHeatSrc=RESISTANCEX. -<%= member_table( - units: "W", - legal_range: "x $\\ge$ 0", - default: "4500", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "W", + "legal_range": "x $\\ge$ 0", + "default": "4500", + "required": "No", + "variability": "constant" + }) +}} **whResHtPwr2=*float*** Specifies resistance lower element power, used only with whHeatSrc=RESISTANCEX. -<%= member_table( - units: "W", - legal_range: "x $\\ge$ 0", - default: "whResHtPwr", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "W", + "legal_range": "x $\\ge$ 0", + "default": "whResHtPwr", + "required": "No", + "variability": "constant" + }) +}} **whUA=*float*** HPWH-type total UA (not per tank) -<%= member_table( - units: "Btuh/F", - legal_range: "x $\\geq$ 0", - default: "HPWH default", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "Btuh/F", + "legal_range": "x $\\geq$ 0", + "default": "HPWH default", + "required": "No", + "variability": "constant" + }) +}} **whInsulR=*float*** Tank insulation resistance for heat pump water heater. -<%= member_table( - units: "hr-F/Btuh", - legal_range: "x $>$ 0", - default: "-1", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "hr-F/Btuh", + "legal_range": "x $>$ 0", + "default": "-1", + "required": "No", + "variability": "constant" + }) +}} **whInHtSupply=*float***\ **whInHtLoopRet=*float*** Fractional tank height of inlets for supply water and DHWLOOP return, used only with HPWH types (whHeatSrc=RESISTANCEX or whHeatSrc=ASHPX). 0 indicates the bottom of the water heater tank and 1 specifies the top. Inlet height influences tank layer mixing and can impact heat pump COP and/or heating activation frequency. -<%= member_table( - units: "", - legal_range: "0 $\\le$ x $\\le$ 1", - default: "HPWH default (0?) ", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $\\le$ x $\\le$ 1", + "default": "HPWH default (0?) ", + "required": "No", + "variability": "constant" + }) +}} **whtankCount=*float*** Number of storage tanks per DHWHEATER, re built-up whType=Builtup, does *not* reflect wh_mult (wh_mult=2, wh_tankCount=3 -> 6 tanks). -<%= member_table( - units: "#", - legal_range: "x $\\geq$ 1", - default: "1", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "#", + "legal_range": "x $\\geq$ 1", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} **whEff=*float*** Water heating efficiency, used in modeling whType=LARGESTORAGE and whType=LARGEINSTANTANEOUS. -<%= member_table( - units: "", - legal_range: "0 $<$ whEff $\\leq$ 1", - default: ".82", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "0 $<$ whEff $\\leq$ 1", + "default": ".82", + "required": "No", + "variability": "constant" + }) +}} **whSBL=*float*** Standby loss, used in modeling whType=LARGESTORAGE. -<%= member_table( - units: "Btuh", - legal_range: "x $\\ge$ 0", - default: "0", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "x $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} **whPilotPwr=*float*** Pilot light consumption, included in fuel energy use of DHWHEATERs with whHeatSrc=FUEL. -<%= member_table( - units: "Btuh", - legal_range: "x $\\ge$ 0", - default: "0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "Btuh", + "legal_range": "x $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "hourly" + }) +}} **whParElec=*float*** Parasitic electricity power, included in electrical energy use of all DHWHEATERs. -<%= member_table( - units: "W", - legal_range: "x $\\ge$ 0", - default: "0", - required: "No", - variability: "hourly") - %> +{{ + member_table({ + "units": "W", + "legal_range": "x $\\ge$ 0", + "default": "0", + "required": "No", + "variability": "hourly" + }) +}} **whFAdjElec=*float***\ **whFAdjFuel=*float*** Water heater energy use modifiers. Multiplies calculated use of electricity (whFAdjElec) and fuel (whFAdjFuel). All components of energy use -- primary, backup, XBU (extra backup), and other auxiliary -- are modified before they are accumulated to whElecMtr and whFuelMtr. -<%= member_table( - units: "", - legal_range: "$\\ge$ 0", - default: "1", - required: "No", - variability: "subhourly") - %> +{{ + member_table({ + "units": "", + "legal_range": "$\\ge$ 0", + "default": "1", + "required": "No", + "variability": "subhourly" + }) +}} **whElecMtr=*mtrName*** Name of METER object, if any, by which DHWHEATER electrical energy use is recorded (under end use DHW). -<%= member_table( - units: "", - legal_range: "*name of a METER*", - default: "*Parent DHWSYS wsElecMtr*", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*name of a METER*", + "default": "*Parent DHWSYS wsElecMtr*", + "required": "No", + "variability": "constant" + }) +}} **whxBUEndUse=*choice*** Specifies the whElecMtr end use, if any, to which extra backup energy is accumulated. In some water heater types, extra backup energy is modeled to maintain output temperature at wsTUse. By default, extra backup energy is included in end use dhwBU. whxBUEndUse allows specification of an alternative end use to which extra backup energy is accumulated. -<%= member_table( - units: "", - legal_range: "*end use code* ", - default: "(extra backup accums to dhwBU)", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "", + "legal_range": "*end use code* ", + "default": "(extra backup accums to dhwBU)", + "required": "No", + "variability": "constant" + }) +}} **whFuelMtr =*mtrName*** Name of METER object, if any, by which DHWHEATER fuel energy use is recorded (under end use DHW). -<%= member_table( - units: "*name of a METER*", - legal_range: "*Parent DHWSYS wsFuelMtr*", - default: "", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "*name of a METER*", + "legal_range": "*Parent DHWSYS wsFuelMtr*", + "default": "", + "required": "No", + "variability": "constant" + }) +}} **whTankTInit =*comma-separated list of 12 floats*** @@ -607,25 +685,29 @@ whTankTInit is allowed only for HPWH-based types (whHeatSrc=ASHPX or whHeatSrc=R whTankTInit is intended for use in empirical validation studies where the initial tank state needs to match measured data. whTankTInit should not be generally used. In the absence of whTankTInit, layer temperatures are initialized to the water heater setpoint inherited from the parent DHWSYS. -<%= member_table( - units: "^o^F", - legal_range: "x $\\gt$ 0", - default: "", - required: "No", - variability: "constant") - %> +{{ + member_table({ + "units": "^o^F", + "legal_range": "x $\\gt$ 0", + "default": "", + "required": "No", + "variability": "constant" + }) +}} **endDHWHEATER** Optionally indicates the end of the DHWHEATER definition. -<%= member_table( - units: "", - legal_range: "x $\\geq$ 0", - default: "*none*", - required: "No", - variability: "") - %> +{{ + member_table({ + "units": "", + "legal_range": "x $\\geq$ 0", + "default": "*none*", + "required": "No", + "variability": "" + }) +}} **Related Probes:** From 4b9e62167e4b11ebb242a5f72821b6fe8cc443ab Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 6 May 2025 11:15:40 -0600 Subject: [PATCH 042/117] Restore csv tables without headers. --- doc/src/docs/input-data/airhandler.md | 126 +++++++++++-------------- doc/src/docs/input-data/battery.md | 9 +- doc/src/docs/input-data/boiler.md | 9 +- doc/src/docs/input-data/chiller.md | 9 +- doc/src/docs/input-data/coolplant.md | 9 +- doc/src/docs/input-data/dhwloopseg.md | 9 +- doc/src/docs/input-data/dhwsys.md | 9 +- doc/src/docs/input-data/door.md | 9 +- doc/src/docs/input-data/exportcol.md | 9 +- doc/src/docs/input-data/exportfile.md | 9 +- doc/src/docs/input-data/heatplant.md | 9 +- doc/src/docs/input-data/holiday.md | 9 +- doc/src/docs/input-data/izxfer.md | 18 ++-- doc/src/docs/input-data/report.md | 18 ++-- doc/src/docs/input-data/reportcol.md | 9 +- doc/src/docs/input-data/reportfile.md | 18 ++-- doc/src/docs/input-data/rsys.md | 36 ++++--- doc/src/docs/input-data/sgdist.md | 9 +- doc/src/docs/input-data/surface.md | 45 ++++----- doc/src/docs/input-data/terminal.md | 45 ++++----- doc/src/docs/input-data/top-members.md | 36 ++++--- doc/src/docs/input-data/zone.md | 18 ++-- doc/src/shared/dhwheater-doc.md | 18 ++-- 23 files changed, 220 insertions(+), 275 deletions(-) diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index 501ca6677..1a94c770e 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -32,11 +32,10 @@ Name of air handler: give after the word AIRHANDLER. Required for reference in T Air handler schedule; OFF or ON, hourly schedulable by using CSE expression. -<%= csv_table(< false) -OFF, supply fan off; air handler not operating. Old date? Note: (future) Taylor setback/setup control in effect, when implemented. -ON, supply fan runs, at varying volume according to TERMINAL demand (except if _ahFanCycles_ = YES, fan cycles on and off at full volume). -END -%> +{{ + csv_table("OFF, supply fan off; air handler not operating. Old date? Note: (future) Taylor setback/setup control in effect, when implemented. +ON, supply fan runs, at varying volume according to TERMINAL demand (except if _ahFanCycles_ = YES, fan cycles on and off at full volume).") +}} The following might be used to run an air handler between 8 AM and 5 PM: @@ -73,8 +72,8 @@ Fan flow rate multiplier for autosized fan(s). The default value (1.1) specifies Supply temperature setpoint numeric value OR\* choice of control method (WZ, CZ, RA, ZN, or ZN2): -<%= csv_table(< false) -_float_, A numeric value specifies the supply temperature setpoint. An expression can be used to make dependent on time, weather, etc. +{{ + csv_table("_float_, A numeric value specifies the supply temperature setpoint. An expression can be used to make dependent on time, weather, etc. WZ, Warmest Zone: for cooling, sets the supply temperature setpoint each sub??hour so that the control zone (see*ahWzCzns*) requiring the coolest supply temperature can meet its load with its VAV damper 90% of the way from its minimum opening to its maximum, that is, at a flow of: _tuVfMn_ + .9(_tuVfMxC_ - \* tuVfMn\*). CZ, Coolest Zone: analogous to WZ, but for heating RA, Supply temperature setpoint value is controlled by return air temperature (this cannot be done with a CSE expression without lagging a subhour). See _ahTsRaMn_ and _ahTsRaMx_. @@ -82,9 +81,8 @@ ZN, Causes air handler to switch between heating, OFF, and cooling a , Supply temperature setpoint value when _ahFanCycles_ = YES is taken from _ahTsMn_ for cooling, from _ahTsMx_ for heating (actual temperatures expected to be limited by coil capacity since fan is running at full flow). When _ahFanCycles_ = NO, the setpoint is determined to allow meeting the load, as for WZ and CZ. , When the zone is calling for neither heat nor cold, the air handler shuts down, including stopping its fan(s), regardless of the _ahFanCycles_ value. ZN2, Causes air handler to switch between heating, cooling, and FAN ONLY operation as required by the load of a single zone. To model a constant volume system where the fan runs continuously, use ZN2 and set the terminal minimum flow (_tuVfMn_) equal to the maximum (_tuVfMxC_ and/or _tuVfMxH_). -, When _ahTsSp_ is ZN2, the supply temperature setpoint is determined to allow meeting the load, as for WZ and CZ, described above. -END -%> +, When _ahTsSp_ is ZN2, the supply temperature setpoint is determined to allow meeting the load, as for WZ and CZ, described above.") +}} Only when _ahTsSp_ is ZN or ZN2 does AIRHANDLER switches between heating and cooling supply temperatures according to demand. In other cases, there is but a single setpoint value or control method (RA, CZ, or WZ); if you want the control method or numeric value to change according to time of day or year, outside temperature, etc., your CSE input must contain an appropriate conditional expression for _ahTsSp_. @@ -127,11 +125,10 @@ extra para to permit page break after frame Determines whether the fan cycles with the zone thermostat. -<%= csv_table(< false) -YES, Supply fan runs only for fraction of the subhour that the zone requests heating or cooling. When running, supply fan runs at full flow (i.e. constant volume), as determined by the more limiting of the air handler and terminal specifications. Use with a single zone only. Not allowed with _ahTsSp_ = ZN2. -NO, Normal CSE behavior for simulating VAV systems with continuously running (or scheduled), variable flow supply fans. (For constant volume, fan always on modeling, use NO, and make _tuVfMn_ equal to _tuVfMxH/C_.) -END -%> +{{ + csv_table("YES, Supply fan runs only for fraction of the subhour that the zone requests heating or cooling. When running, supply fan runs at full flow (i.e. constant volume), as determined by the more limiting of the air handler and terminal specifications. Use with a single zone only. Not allowed with _ahTsSp_ = ZN2. +NO, Normal CSE behavior for simulating VAV systems with continuously running (or scheduled), variable flow supply fans. (For constant volume, fan always on modeling, use NO, and make _tuVfMn_ equal to _tuVfMxH/C_.)") +}} {{ member_table({ @@ -181,12 +178,11 @@ Maximum supply temperature. Also used as heating supply temperature setpoint val Specify zones monitored to determine supply temperature setpoint value (control zones), under _ahTsSp_=WZ and CZ respectively. -<%= csv_table(< false) -_zone names_, A list of zone names, with commas between them. Up to 15 names may be given. +{{ + csv_table("_zone names_, A list of zone names, with commas between them. Up to 15 names may be given. ALL_BUT, May be followed by a a comma and list of up to 14 zone names; all zones on air handler other than these are the control zones. -ALL, Indicates that all zones with terminals connected to the air handler are control zones. -END -%> +ALL, Indicates that all zones with terminals connected to the air handler are control zones.") +}} A comma must be entered between zone names and after the word ALL_BUT. @@ -421,12 +417,11 @@ Motor/drive efficiency. Motor/drive position: determines disposition of fan motor heat (input energy in excess of work done by fan; the work done by the fan is the "fan heat", always added to air flow). -<%= csv_table(< false) -IN_FLOW, add fan motor heat to supply air at the fan position. +{{ + csv_table("IN_FLOW, add fan motor heat to supply air at the fan position. IN_RETURN, add fan motor heat to the return air flow. -EXTERNAL, discard fan motor heat -END -%> +EXTERNAL, discard fan motor heat") +}} **sfanMtr=_mtrName_** @@ -450,12 +445,11 @@ A return/relief fan is optional. Its presence is established by setting _rfanTyp relief fan type/position. -<%= csv_table(< false) -RETURN, fan is at air handler; all return air passes through it. +{{ + csv_table("RETURN, fan is at air handler; all return air passes through it. RELIEF, fan is in exhaust path. Air being exhausted to the outdoors passes through fan; return air being recirculated does not pass through it. -NONE, no return/relief fan in this AIRHANDLER. -END -%> +NONE, no return/relief fan in this AIRHANDLER.") +}} {{ member_table({ @@ -644,15 +638,14 @@ To specify that an AIRHANDLER has a heating coil and thus heating capability, gi Coil type choice: -<%= csv_table(< false) -ELECTRIC, electric resistance heat: 100% efficient, can deliver its full rated capacity at any temperature and flow. +{{ + csv_table("ELECTRIC, electric resistance heat: 100% efficient, can deliver its full rated capacity at any temperature and flow. HW, hot water coil, supplied by a HEATPLANT object. GAS or OIL, 'coil' type that models heating portion of a forced hot air furnace. Furnace 'coil' model uses inputs for full-load efficiency and part-load power input; model must be completed with appropriate auxiliaries, _ahTsSp_, etc. See notes above. , GAS and OIL are the same here -- the differences between gas- and oil-fired furnaces is in the auxiliaries (pilot vs. draft fan, etc.), which you specify separately. AHP, heating function of an air source heat pump. -NONE, AIRHANDLER has no heat coil, thus no heating capability. -END -%> +NONE, AIRHANDLER has no heat coil, thus no heating capability.") +}} {{ member_table({ @@ -668,11 +661,10 @@ END Heat coil schedule; choice of AVAIL or OFF, hourly variable. Use an appropriate ahhcSched expression if heat coil is to operate only at certain times of the day or year or only under certain weather conditions, etc. -<%= csv_table(< false) -AVAIL, heat coil available: will operate as necessary to heat supply air to supply temperature setpoint, up to the coil's capacity. -OFF, coil will not operate, no matter how cold supply air is. A HW coil should be scheduled off whenever its HEATPLANT is scheduled off (_hpSched_) to insure against error messages. -END -%> +{{ + csv_table("AVAIL, heat coil available: will operate as necessary to heat supply air to supply temperature setpoint, up to the coil's capacity. +OFF, coil will not operate, no matter how cold supply air is. A HW coil should be scheduled off whenever its HEATPLANT is scheduled off (_hpSched_) to insure against error messages.") +}} {{ member_table({ @@ -1139,13 +1131,12 @@ The following five members are used for all cool coil types except as noted. Pre Cool coil type choice: -<%= csv_table(< false) -ELECTRIC, Testing artifice: removes heat at 100% efficiency up to rated capacity at any flow and temperature; removes no humidity. Use in research runs to isolate effects of coil models from other parts of the CSE program. +{{ + csv_table("ELECTRIC, Testing artifice: removes heat at 100% efficiency up to rated capacity at any flow and temperature; removes no humidity. Use in research runs to isolate effects of coil models from other parts of the CSE program. CHW, CHilled Water coil, using a cold water from a COOLPLANT. DX, Direct Expansion coil, with dedicated compressor and condenser modeled integrally. -NONE, AIRHANDLER has no cooling coil and no cooling capability. -END -%> +NONE, AIRHANDLER has no cooling coil and no cooling capability.") +}} {{ member_table({ @@ -1161,11 +1152,10 @@ END Cooling coil schedule choice, hourly variable. Use a suitable CSE expression for ahccSched if cooling coil is to operate only at certain times, only in hot weather, etc. -<%= csv_table(< false) -AVAIL, Cooling coil will operate as necessary (within its capacity) to cool the supply air to the supply temperature setpoint. -OFF, Cooling coil will not operate no matter how hot the supply air is. To avoid error messages, a CHW coil should be scheduled OFF whenever its COOLPLANT is scheduled OFF. -END -%> +{{ + csv_table("AVAIL, Cooling coil will operate as necessary (within its capacity) to cool the supply air to the supply temperature setpoint. +OFF, Cooling coil will not operate no matter how hot the supply air is. To avoid error messages, a CHW coil should be scheduled OFF whenever its COOLPLANT is scheduled OFF.") +}} {{ member_table({ @@ -1295,17 +1285,16 @@ Fraction of air flow which does NOT flow through DX cooling coil, for better hum The next three members are used in determining the energy input to a DX coil under various load conditions. The input is derived from the full load energy input ratio for four segments of the part load curve. In the following the part load ratio (plr) is the ratio of the actual sensible + latent load on the coil to the coil's capacity. The coil's capacity is ahccCaptRat, adjusted by the coil model for differences between entering air temperature, humidity, and flow rate and the coil rating conditions. The coil may run at less than capacity even at full fan flow, depending on the air temperature change needed, the moisture content of the entering air, and the relative values of between _sfanVfDs_ and _ahccVfR_. -<%= csv_table(< false) -full load, plr (part load ratio) = 1.0 +{{ + csv_table("full load, plr (part load ratio) = 1.0 , Full-load power input is power output times _ahhcEirR._ compressor unloading region, 1.0 > plr $\\ge$ _ahhcMinUnldPlr_ , Power input is the full-load input times the value of the _pydxEirUl_ polynomial (below) for the current plr, i.e. pydxEirUl(plr). false loading region, _ahccMinUnldPlr_ > plr $\\ge$ _ahccMinFsldPlr_ , Power input in this region is constant at the value for the low end of the compressor unloading region, i.e. pydxEirUl(ahccMinUnldPlr). cycling region, _ahccMinFsldPlr_ > plr $\\ge$ 0 -, In this region the compressor runs at the low end of the false loading region for the necessary fraction of the time, and the power input is the false loading value correspondingly prorated, i.e. pydxEirUl(ahccMinUnldPlr) \* plr / ahccMinFsldPlr. -END -%> +, In this region the compressor runs at the low end of the false loading region for the necessary fraction of the time, and the power input is the false loading value correspondingly prorated, i.e. pydxEirUl(ahccMinUnldPlr) \* plr / ahccMinFsldPlr.") +}} The default values for the following three members are the DOE2 PTAC (Window air conditioner) values. @@ -1617,14 +1606,13 @@ Outside air introduced into the air hander supply air can be controlled on two l Minimum outside air flow control method choice, VOLUME or FRACTION. Both computations are based on the minimum outside air flow, _oaVfDsMn_; if the control method is FRACTION, the outside air flow is pro-rated when the air handler is supplying less than its design cfm. In both cases the computed minimum cfm is multiplied by a schedulable fraction, _oaMnFrac_, to let you vary the outside air or turn in off when none is desired. -<%= csv_table(< false) -VOLUME, Volume (cfm) of outside air is regulated: +{{ + csv_table("VOLUME, Volume (cfm) of outside air is regulated: , min_oa_flow = oaMnFrac \* oaVfDsMn FRACTION, Fraction of outside air in supply air is regulated. The fraction is oaVfDsMn divided by sfanVfDs, the air handler supply fan design flow. The minimum cfm of outside air is thus computed as , min_oa_flow = oaMnFrac \* curr_flow \* oaVfDsMn / sfanVfDs -, where curr_flow is the current air handler cfm. -END -%> +, where curr_flow is the current air handler cfm.") +}} If the minimum outside air flow is greater than the total requested by the terminals served by the air handler, then 100% outside air at the latter flow is used. To insure minimum outside air cfm to the zones, use suitable terminal minimum flows (_tuVfMn_) as well as air handler minimum outside air specifications. @@ -1698,13 +1686,12 @@ Second, the economizer will operate even if the air handler is heating, resultin Type of economizer. Choice of: -<%= csv_table(< false) -NONE, No economizer; outside air flow is the minimum. +{{ + csv_table("NONE, No economizer; outside air flow is the minimum. INTEGRATED, Coil and economizer operate independently. NONINTEGRATED, Coil does not run when economizer is using all outside air: simulates interlock in some equipment designed to prevent coil icing due to insufficient load, right? -TWO_STAGE, Economizer is disabled when coil cycles on. _NOT IMPLEMENTED_ as of July 1992. -END -%> +TWO_STAGE, Economizer is disabled when coil cycles on. _NOT IMPLEMENTED_ as of July 1992.") +}} **oaLimT=_float_ or _RA_** @@ -2027,15 +2014,14 @@ Appropriateness of use of these inputs when specifying a DX system without assoc Crankcase heater presence and control method. Choice of: -<%= csv_table(< false) -NONE, No crankcase heater present +{{ + csv_table("NONE, No crankcase heater present CONSTANT, Crankcase heater input always _cchPMx_ (below). PTC, Proportional control based on oil temp when compressor does not run in subhour (see _cchTMx_, _cchMn_, and _cchDT_). If compressor runs at all in subhour, the oil is assumed to be hotter than _cchTMn_ and crankcase heater input is _cchPMn_. (PTC stands for 'Positive Temperature Coefficient' or 'Proportional Temperature Control'.) TSTAT, Control based on outdoor temperature, with optional differential, during subhours when compressor is off; crankcase heater does not operate if compressor runs at all in subhour. See _cchTOn_, _cchTOff_. CONSTANT_CLO -PTC_CLO, Same as corresponding choices above except zero crankcase heater input during fraction of time compressor is on ('Compressor Lock Out'). There is no TSTAT_CLO because under TSTAT the crankcase heater does not operate anyway when the compressor is on. -END -%> +PTC_CLO, Same as corresponding choices above except zero crankcase heater input during fraction of time compressor is on ('Compressor Lock Out'). There is no TSTAT_CLO because under TSTAT the crankcase heater does not operate anyway when the compressor is on.") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/battery.md b/doc/src/docs/input-data/battery.md index b431e3ead..c5db4bdf4 100644 --- a/doc/src/docs/input-data/battery.md +++ b/doc/src/docs/input-data/battery.md @@ -142,11 +142,10 @@ The maximum rate at which the BATTERY can be discharged in kilowatts (i.e., ener Selects charge/discharge control algorithm. btChgReq (next) specifies the desired battery charge or discharge rate. btControlAlg allows selection of alternative algorithms for deriving btChgReq. -<%= csv_table(< false) -DEFAULT, btChgReq is used as input or defaulted (see below) -TDVPEAKSAVE, btChgReq input (if any) is ignored. Instead, a California-specific algorithm is used that saves battery charge until peak TDV (Time Dependant Valuation) hours of the day, shifting energy generated on site (e.g. PV) to supply feed the grid during critical periods. The algorithm requires availability of hourly TDV data, see Top.tdvFName. -END -%> +{{ + csv_table("DEFAULT, btChgReq is used as input or defaulted (see below) +TDVPEAKSAVE, btChgReq input (if any) is ignored. Instead, a California-specific algorithm is used that saves battery charge until peak TDV (Time Dependant Valuation) hours of the day, shifting energy generated on site (e.g. PV) to supply feed the grid during critical periods. The algorithm requires availability of hourly TDV data, see Top.tdvFName.") +}} Note btControlAlg has hourly variability, allowing dynamic algorithm selection. In California compliance applications, TDVPEAKSAVE is typically used only on days with high TDV peaks. diff --git a/doc/src/docs/input-data/boiler.md b/doc/src/docs/input-data/boiler.md index 6c1842a9a..a70d2b3e7 100644 --- a/doc/src/docs/input-data/boiler.md +++ b/doc/src/docs/input-data/boiler.md @@ -162,13 +162,12 @@ Meter to which pump electrical input energy is accumulated. If omitted, pump inp The following four members permit specification of auxiliary input power use associated with the boiler under the conditions indicated. -<%= csv_table(< false) -blrAuxOn=*float*, Auxiliary power used when boiler is running, in proportion to its subhour average part load ratio (plr). +{{ + csv_table("blrAuxOn=*float*, Auxiliary power used when boiler is running, in proportion to its subhour average part load ratio (plr). blrAuxOff=*float*, Auxiliary power used when boiler is not running, in proportion to 1 - plr. blrAuxFullOff=*float*, Auxiliary power used only when boiler is off for entire subhour; not used if the boiler is on at all during the subhour. -blrAuxOnAtAll=*float*, Auxiliary power used in full value if boiler is on for any fraction of subhour. -END -%> +blrAuxOnAtAll=*float*, Auxiliary power used in full value if boiler is on for any fraction of subhour.") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/chiller.md b/doc/src/docs/input-data/chiller.md index bff85ed6e..86804cc84 100644 --- a/doc/src/docs/input-data/chiller.md +++ b/doc/src/docs/input-data/chiller.md @@ -130,17 +130,16 @@ Up to six *float* values may be entered, separated by commas; CSE will use zero The next three inputs permit specification of the CHILLER's part load energy input. In the following the part load ratio (plr) is defined as the actual load divided by the capacity at the current supply and condenser temperatures. The energy input is defined as follows for four different plr ranges: -<%= csv_table(< false) -full, loadplr (part load ratio) = 1.0 +{{ + csv_table("full, loadplr (part load ratio) = 1.0 , Power input is full-load input, as described above. compressor unloading region, 1.0 > plr $\\ge$ *chMinUnldPlr* , Power input is the full-load input times the value of the *chPyEirUl* polynomial for the current plr, that is, *chPyEirUl*(plr). false loading region, *chMinUnldPlr* > plr > *chMinFsldPlr* , Power input in this region is constant at the value for the low end of the compressor unloading region, i.e. *chPyEirUl*(*chMinUnldPlr*). cycling region, *chMinFsldPlr* > plr $\\ge$ 0 - , In this region the chiller runs at the low end of the false loading region for the necessary fraction of the time, and the power input is the false loading value correspondingly prorated, i.e. *chPyEirUl*(*chMinUnldPlr*) plr / *chMinFsldPlr*. -END -%> + , In this region the chiller runs at the low end of the false loading region for the necessary fraction of the time, and the power input is the false loading value correspondingly prorated, i.e. *chPyEirUl*(*chMinUnldPlr*) plr / *chMinFsldPlr*.") +}} These plr regions are similar to those for a DX coil & compressor in an AIRHANDLER, Section 0. diff --git a/doc/src/docs/input-data/coolplant.md b/doc/src/docs/input-data/coolplant.md index 84c4e0629..7a1787664 100644 --- a/doc/src/docs/input-data/coolplant.md +++ b/doc/src/docs/input-data/coolplant.md @@ -28,12 +28,11 @@ Name of COOLPLANT object, given immediately after the word COOLPLANT. This name Coolplant schedule: hourly variable choice of OFF, AVAIL, or ON. -<%= csv_table(< false) -OFF, COOLPLANT will not supply chilled water regardless of demand. All loads (CHW coils) should be scheduled off when the plant is off; an error will occur if a coil calls for chilled water when its plant is off. +{{ + csv_table("OFF, COOLPLANT will not supply chilled water regardless of demand. All loads (CHW coils) should be scheduled off when the plant is off; an error will occur if a coil calls for chilled water when its plant is off. AVAIL, COOLPLANT will operate when one or more loads demand chilled water. -ON, COOLPLANT runs unconditionally. When no load wants chilled water, least powerful (first) stage runs anyway. -END -%> +ON, COOLPLANT runs unconditionally. When no load wants chilled water, least powerful (first) stage runs anyway.") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/dhwloopseg.md b/doc/src/docs/input-data/dhwloopseg.md index fa12bfd25..9d338964c 100644 --- a/doc/src/docs/input-data/dhwloopseg.md +++ b/doc/src/docs/input-data/dhwloopseg.md @@ -20,11 +20,10 @@ Optional name of segment; give after the word “DHWLOOPSEG” if desired. Specifies the type of segment. RETURN segments, if any, must follow SUPPLY segments. -<%= csv_table(< false) - SUPPLY, Indicates a supply segment (flow is sum of circulation and draw flow, child DHWLOOPBRANCHs permitted). - RETURN, Indicates a return segment (flow is only due to circulation, child DHWLOOPBRANCHs not allowed) -END -%> +{{ + csv_table("SUPPLY, Indicates a supply segment (flow is sum of circulation and draw flow, child DHWLOOPBRANCHs permitted). + RETURN, Indicates a return segment (flow is only due to circulation, child DHWLOOPBRANCHs not allowed)") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index dc9c9a595..f876c9efc 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -35,11 +35,10 @@ Optional name of system; give after the word “DHWSYS” if desired. Enables preliminary simulation that derives values needed for simulation. -<%= csv_table(< false) - PRERUN, Calculate hot water heating load; at end of run, derive whLDEF for all child DHWHEATERs for which that value is required and defaulted (this emulates methods used in the T24DHW.DLL implementation of CEC DHW procedures). Also derived are average number of draws per day by end use (used in the wsDayWaste scheme). - SIMULATE, Perform full modeling calculations -END -%> +{{ + csv_table("PRERUN, Calculate hot water heating load; at end of run, derive whLDEF for all child DHWHEATERs for which that value is required and defaulted (this emulates methods used in the T24DHW.DLL implementation of CEC DHW procedures). Also derived are average number of draws per day by end use (used in the wsDayWaste scheme). + SIMULATE, Perform full modeling calculations") +}} To use PRERUN efficiently, the recommended input file structure is: diff --git a/doc/src/docs/input-data/door.md b/doc/src/docs/input-data/door.md index db701a596..55812a15c 100644 --- a/doc/src/docs/input-data/door.md +++ b/doc/src/docs/input-data/door.md @@ -34,13 +34,12 @@ Overall area of door. Provides user control over how CSE models conduction for this door: -<%= csv_table(< false) - QUICK, Surface is modeled using a simple conductance. Heat capacity effects are ignored. Either drCon or drU (next) can be specified. +{{ + csv_table("QUICK, Surface is modeled using a simple conductance. Heat capacity effects are ignored. Either drCon or drU (next) can be specified. DELAYED, DELAYED\_HOUR, DELAYED\_SUBOUR, Surface is modeled using a multi-layer finite difference technique which represents heat capacity effects. If the time constant of the door is too short to accurately simulate, a warning message is issued and the Quick model is used. drCon (next) must be specified -- the program cannot use the finite difference model if drU rather than drCon is specified. AUTO, Program selects Quick or appropriate Delayed automatically according to the time constant of the surface (if drU is specified, Quick is selected). - FD or FORWARD\_DIFFERENCE, Selects the forward difference model (used with short time steps and the CZM/UZM zone models) -END -%> + FD or FORWARD\_DIFFERENCE, Selects the forward difference model (used with short time steps and the CZM/UZM zone models)") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/exportcol.md b/doc/src/docs/input-data/exportcol.md index ba8068c66..a8698c780 100644 --- a/doc/src/docs/input-data/exportcol.md +++ b/doc/src/docs/input-data/exportcol.md @@ -94,11 +94,10 @@ Number of digits after decimal point. Specifies positioning of data within column: -<%= csv_table(< false) - Left, Left justified - Right, Right justified -END -%> +{{ + csv_table("Left, Left justified + Right, Right justified") +}} **endExportCol** diff --git a/doc/src/docs/input-data/exportfile.md b/doc/src/docs/input-data/exportfile.md index 1a1e11d53..40cc0e967 100644 --- a/doc/src/docs/input-data/exportfile.md +++ b/doc/src/docs/input-data/exportfile.md @@ -38,12 +38,11 @@ path name of file to be written. If no path is specified, the file is written in What CSE should do if file *xfFileName* already exists: -<%= csv_table(< false) - OVERWRITE, Overwrite pre-existing file. +{{ + csv_table("OVERWRITE, Overwrite pre-existing file. NEW, Issue error message if file exists. - APPEND, Append new output to present contents of existing file. -END -%> + APPEND, Append new output to present contents of existing file.") +}} If the specified file does not exist, it is created and *xfFileStat* has no effect. diff --git a/doc/src/docs/input-data/heatplant.md b/doc/src/docs/input-data/heatplant.md index 59548c924..36cd70ead 100644 --- a/doc/src/docs/input-data/heatplant.md +++ b/doc/src/docs/input-data/heatplant.md @@ -26,12 +26,11 @@ Name of HEATPLANT object, given immediately after the word HEATPLANT. This name Heat plant schedule: hourly variable choice of OFF, AVAIL, or ON. -<%= csv_table(< false) -OFF, HEATPLANT will not supply hot water regardless of demand. All loads (HW coils and heat exchangers) should be scheduled off when the plant is off; an error will occur if a coil calls for heat when its plant is off. +{{ + csv_table("OFF, HEATPLANT will not supply hot water regardless of demand. All loads (HW coils and heat exchangers) should be scheduled off when the plant is off; an error will occur if a coil calls for heat when its plant is off. AVAIL, HEATPLANT will operate when one or more loads demand heat. -ON, HEATPLANT runs unconditionally. When no load wants heat, least powerful (first) stage runs. -END -%> +ON, HEATPLANT runs unconditionally. When no load wants heat, least powerful (first) stage runs.") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/holiday.md b/doc/src/docs/input-data/holiday.md index 5c5ebcc37..18ae8f0bb 100644 --- a/doc/src/docs/input-data/holiday.md +++ b/doc/src/docs/input-data/holiday.md @@ -155,8 +155,8 @@ Examples of valid HOLIDAY object specifications: As with reports, Holidays are automatically generated for a standard set of Holidays. The following are the default holidays automatically defined by CSE: -<%= csv_table(< false) - New Year's Day, \*January 1 +{{ + csv_table("New Year's Day, \*January 1 M L King Day, \*January 15 President's Day, 3rd Monday in February Memorial Day, last Monday in May @@ -165,9 +165,8 @@ As with reports, Holidays are automatically generated for a standard set of Holi Columbus Day, 2nd Monday in October Veterans Day, \*November 11 Thanksgiving, 4th Thursday in November - Christmas, \*December 25 -END -%> + Christmas, \*December 25") +}} \* *observed on the following Monday if falls on a weekend, except as otherwise noted:* diff --git a/doc/src/docs/input-data/izxfer.md b/doc/src/docs/input-data/izxfer.md index 63fb3c680..bac2dbf68 100644 --- a/doc/src/docs/input-data/izxfer.md +++ b/doc/src/docs/input-data/izxfer.md @@ -25,8 +25,8 @@ Optional name of interzone transfer; give after the word "IZXFER" if desired. Choice specifying the type of ventilation or leakage model to be used. -<%= csv_table(< false) - NONE, No interzone ventilation +{{ + csv_table("NONE, No interzone ventilation ONEWAY, Uncontrolled flow from izZn1 to izZn2 when izZn1 air temperature exceeds izZn2 air temperature (using ASHRAE high/low vent model). TWOWAY, Uncontrolled flow in either direction (using ASHRAE high/low vent model). AIRNETIZ, Single opening to another zone (using pressure balance AirNet model). Flow is driven by buoyancy. @@ -37,9 +37,8 @@ Choice specifying the type of ventilation or leakage model to be used. AIRNETEXTFLOW, Specified flow from exterior to zone (either direction). Behaves identically to AIRNETEXTFAN except no electricity is consumed and no fan heat is added to the air stream. AIRNETIZFLOW, Specified flow between two zones (either direction). Behaves identically to AIRNETIZFAN except no electricity is consumed and no fan heat is added to the air stream. AIRNETHERV, Heat or energy recovery ventilator. Supply and exhaust air are exchanged with the exterior with heat and/or moisture exchange between the air streams. Flow may or may not be balanced. - AIRNETDOAS, Air supplied from and/or exhausted to a centralized DOAS fans. -END -%> + AIRNETDOAS, Air supplied from and/or exhausted to a centralized DOAS fans.") +}} Note that optional inputs izTEx, izWEx, and izWindSpeed can override the outside conditions assumed for ivNVTypes that are connected to ambient (AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, and AIRNETHERV). @@ -59,17 +58,16 @@ Choice indicating air flow category used *only* for recording air flow results t Choices are: -<%= csv_table(< false) - InfilEx, Infiltration from ambient +{{ + csv_table("InfilEx, Infiltration from ambient VentEx, Natural ventilation from ambient FanEx, Forced ventilation from ambient InfilIz, Interzone infiltration VentIz, Interzone natural ventilation FanIz, Interzone forced ventilation DuctLk, Duct leakage - HVAC, HVAC air -END -%> + HVAC, HVAC air") +}} Default values for izAFCat are generally adequate *except* that natural ventilation IZXFERs are by default categorized as infiltration. It is thus recommended that izAfCat be omitted except that ventilation IZXFERs (e.g. representing openable windows) should include izAfCat=VentEx (or VentIz). diff --git a/doc/src/docs/input-data/report.md b/doc/src/docs/input-data/report.md index 31e5fc794..c5da0df42 100644 --- a/doc/src/docs/input-data/report.md +++ b/doc/src/docs/input-data/report.md @@ -64,8 +64,8 @@ Name of report file to which current report will be written. If omitted, if REPO Choice indicating report type. Report types may be described at greater length, with examples, in Section 6. -<%= csv_table(< false) - ERR, Error and warning messages. If there are any such messages, they are also displayed on the screen *AND* written to a file with the same name as the input file and extension .ERR. Furthermore, \* \*many error messages are repeated in the INP report. +{{ + csv_table("ERR, Error and warning messages. If there are any such messages, they are also displayed on the screen *AND* written to a file with the same name as the input file and extension .ERR. Furthermore, \* \*many error messages are repeated in the INP report. LOG, Run 'log'. As of July 1992, contains only CSE version number; should be enhanced or deleted.?? INP, Input echo: shows the portion of the input file used to specify this run. Does not repeat descriptions of objects left from prior runs in the same session when CLEAR is not used. Error and warning messages relating to specific lines of the input are repeated after or near the line to which they relate, prefixed with '?'. Lines not used due to a preprocessor \#if command (Section 4.4.4) with a false expression are prefixed with a '0' in the leftmost column; all preprocessor command lines are prefixed with a '\#' in that column. SUM, Run summary. As of July 1992, *NOT IMPLEMENTED*: generates no output and no error message. Should be defined and implemented, or else deleted??. @@ -75,9 +75,8 @@ Choice indicating report type. Report types may be described at greater length, MTR, Meter report. Requires *rpMeter*. DHWMTR, DHW meter report. Requires *rpDHWMeter* AFMTR, Air flow meter report. Requires *rpAFMeter* - UDT, User-defined table. Data items are specified with REPORTCOL commands (next section). Allows creating almost any desired report by using CSE expressions to specify numeric or string values to tabulate; 'Probes' may be used in the expressions to access CSE internal data. -END -%> + UDT, User-defined table. Data items are specified with REPORTCOL commands (next section). Allows creating almost any desired report by using CSE expressions to specify numeric or string values to tabulate; 'Probes' may be used in the expressions to access CSE internal data.") +}} {{ member_table({ @@ -95,15 +94,14 @@ The next three members specify how frequently values are reported and the start Report Frequency: specifies interval for generating rows of report data: -<%= csv_table(< false) - YEAR, at run completion +{{ + csv_table("YEAR, at run completion MONTH, at end of each month (and at run completion if mid-month) DAY, at end of each day HOUR, at end of each hour HOURANDSUB, at end of each subhour and at end of hour - SUBHOUR, at end of each subhour -END -%> + SUBHOUR, at end of each subhour") +}} diff --git a/doc/src/docs/input-data/reportcol.md b/doc/src/docs/input-data/reportcol.md index 6ff451616..3b58b0ea1 100644 --- a/doc/src/docs/input-data/reportcol.md +++ b/doc/src/docs/input-data/reportcol.md @@ -106,11 +106,10 @@ Number of digits after decimal point. Specifies positioning of data within column: -<%= csv_table(< false) - Left, Left justified - Right, Right justified -END -%> +{{ + csv_table("Left, Left justified + Right, Right justified") +}} **endReportCol** diff --git a/doc/src/docs/input-data/reportfile.md b/doc/src/docs/input-data/reportfile.md index 661895fe8..c538549f2 100644 --- a/doc/src/docs/input-data/reportfile.md +++ b/doc/src/docs/input-data/reportfile.md @@ -52,12 +52,11 @@ path name of file to be written. If no path is specified, the file is written in Choice indicating what CSE should do if the file specified by *rfFileName*already exists: -<%= csv_table(< false) - OVERWRITE, Overwrite pre-existing file. +{{ + csv_table("OVERWRITE, Overwrite pre-existing file. NEW, Issue error message if file exists at beginning of session. If there are several runs in session using same file, output from runs after the first will append. - APPEND, Append new output to present contents of existing file. -END -%> + APPEND, Append new output to present contents of existing file.") +}} If the specified file does not exist, it is created and *rfFileStat* has no effect. @@ -75,11 +74,10 @@ If the specified file does not exist, it is created and *rfFileStat* has no effe Choice controlling page formatting. Page formatting consists of dividing the output into pages (with form feed characters), starting a new page before each report too long to fit on the current page, and putting headers and footers on each page. Page formatting makes attractive printed output but is a distraction when examining the output on the screen and may inappropriate if you are going to further process the output with another program. -<%= csv_table(< false) - Yes, Do page formatting in this report file. - No, Suppress page formatting. Output is continuous, uninterrupted by page headers and footers or large blank spaces. -END -%> +{{ + csv_table("Yes, Do page formatting in this report file. + No, Suppress page formatting. Output is continuous, uninterrupted by page headers and footers or large blank spaces.") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/rsys.md b/doc/src/docs/input-data/rsys.md index 8d34077f1..d160f6b28 100644 --- a/doc/src/docs/input-data/rsys.md +++ b/doc/src/docs/input-data/rsys.md @@ -73,13 +73,12 @@ Text description of system, included as documentation in debugging reports such Specifies systems heating/cooling availability during simulation. -<%= csv_table(< false) - OFF, System is off (neither heating nor cooling is available) +{{ + csv_table("OFF, System is off (neither heating nor cooling is available) HEAT, System can heat (assuming rsType can heat) COOL, System can cool (assuming rsType can cool) - AUTO, System can either heat or cool (assuming rsType compatibility). First request by any zone served by this RSYS determines mode for the current time step. -END -%> + AUTO, System can either heat or cool (assuming rsType compatibility). First request by any zone served by this RSYS determines mode for the current time step.") +}} {{ member_table({ @@ -123,11 +122,10 @@ Specifies fan (blower) position relative to primary heating or cooling source (i Specifies type of motor driving the fan (blower). This is used in the derivation of the coil-only cooling capacity for the RSYS. -<%= csv_table(< false) - PSC, Permanent split capacitor - BPM, Brushless permanent magnet (aka ECM) -END -%> +{{ + csv_table("PSC, Permanent split capacitor + BPM, Brushless permanent magnet (aka ECM)") +}} {{ member_table({ @@ -557,12 +555,11 @@ For rsType=ASHP, auxiliary heat annualized fuel utilization efficiency. Selects modeling options for ASHP outdoor coil defrosting when 17 ^o^F < TDbO < 45 ^o^F. In this temperature range, heating capacity and/or efficiency are typically reduced due to frost accumulation on the outdoor coil. -<%= csv_table(< false) - NONE, Defrost is not modeled. When 17 ^o^F < TDbO < 45 ^o^F, capacity and efficiency are determined by interpolation using unmodified 17 ^o^F and 47 ^o^F data. +{{ + csv_table("NONE, Defrost is not modeled. When 17 ^o^F < TDbO < 45 ^o^F, capacity and efficiency are determined by interpolation using unmodified 17 ^o^F and 47 ^o^F data. REVCYCLE, Reverse compressor (cooling) operation. Net capacity and efficiency is derived from rsCap17/rsCOP17 and rsCap35/rsCOP35 using linear interpolation. Auxiliary heat is not modeled. - REVCYCLEAUX, Reverse compressor (cooling) operation with provision of sufficient auxiliary heat to make up the loss of heating capacity. Auxiliary heating is typically used to prevent cold air delivery to zones during the defrost cycle. -END -%> + REVCYCLEAUX, Reverse compressor (cooling) operation with provision of sufficient auxiliary heat to make up the loss of heating capacity. Auxiliary heating is typically used to prevent cold air delivery to zones during the defrost cycle.") +}} {{ member_table({ @@ -881,12 +878,11 @@ Cooling distribution system efficiency. If given, (1-rsDSEC) of RSYS cooling ou OAV cannot operate simultaneously with whole building ventilation (operable windows, whole house fans, etc.). Availability of ventilation modes is controlled on an hourly basis via [Top ventAvail][top-model-control-items]. -<%= csv_table(< false) -NONE, No CFI ventilation capabilities +{{ + csv_table("NONE, No CFI ventilation capabilities FIXED, Fixed-flow CFI (aka SmartVent). The specified rsOAVVfDs is used whenever the RSYS operates in OAV mode. -VARIABLE, Variable-flow CFI (aka NightBreeze). Flow rate is determined at midnight based on prior day's average dry-bulb temperature according to a control algorithm defined by the NightBreeze vendor. -END -%> +VARIABLE, Variable-flow CFI (aka NightBreeze). Flow rate is determined at midnight based on prior day's average dry-bulb temperature according to a control algorithm defined by the NightBreeze vendor.") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/sgdist.md b/doc/src/docs/input-data/sgdist.md index 8f319294a..7fdf7ae10 100644 --- a/doc/src/docs/input-data/sgdist.md +++ b/doc/src/docs/input-data/sgdist.md @@ -43,11 +43,10 @@ The specified surface must be modeled with the Delayed model. If gain is targete Designates the side of the surface to which the gain is to be targeted: -<%= csv_table(< false) -INTERIOR, Apply gain to interior of surface -EXTERIOR, Apply gain to exterior of surface -END -%> +{{ + csv_table("INTERIOR, Apply gain to interior of surface +EXTERIOR, Apply gain to exterior of surface") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index bd0ec96f1..1d9e59d60 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -20,12 +20,11 @@ Name of surface; give after the word SURFACE. Type of surface: -<%= csv_table(< false) -FLOOR, Surface defines part or all of the 'bottom' of the zone; it is horizontal with inside facing up. The outside of the surface is not adjacent to the current zone. +{{ + csv_table("FLOOR, Surface defines part or all of the 'bottom' of the zone; it is horizontal with inside facing up. The outside of the surface is not adjacent to the current zone. WALL, Surface defines a 'side' of the zone; its outside is not adjacent to the current zone. -CEILING, Surface defines part or all of the 'top' of the zone with the inside facing down. The outside of the surface is not adjacent to the current zone. -END -%> +CEILING, Surface defines part or all of the 'top' of the zone with the inside facing down. The outside of the surface is not adjacent to the current zone.") +}} sfType is used extensively for default determination and input checking, but does not have any further internal effect. The Floor, Wall, and Ceiling choices identify surfaces that form boundaries between the zone and some other condition. @@ -91,14 +90,13 @@ Azimuth of surface with respect to znAzm. The azimuth used in simulating a surfa Provides user control over how CSE models conduction for this surface. -<%= csv_table(< false) -QUICK, Surface is modeled using a simple conductance. Heat capacity effects are ignored. Either sfCon or sfU (next) can be specified. +{{ + csv_table("QUICK, Surface is modeled using a simple conductance. Heat capacity effects are ignored. Either sfCon or sfU (next) can be specified. DELAYED, DELAYED\_HOUR, DELAYED\_SUBHOUR, Surface is modeled using a multi-layer finite difference technique that represents heat capacity effects. If the time constant of the surface is too short to accurately simulate, a warning message is issued and the Quick model is used. The program **cannot** use the finite difference model if sfU rather than sfCon is specified. AUTO, Program selects Quick or the appropriate Delayed automatically according to the time constant of the surface (if sfU is specified, Quick is selected). FD (or FORWARD\_DIFFERENCE), Selects the forward difference model (used with short time steps and the CZM/UZM zone model). -KIVA, Uses a two-dimensional finite difference model to simulate heat flow through foundation surfaces. -END -%> +KIVA, Uses a two-dimensional finite difference model to simulate heat flow through foundation surfaces.") +}} {{ member_table({ @@ -160,14 +158,13 @@ Sublayer thickness adjustment factor for FORWARD\_DIFFERENCE conduction model us Specifies the thermal conditions assumed at surface exterior, and at exterior of any subobjects (windows or doors) belonging to current surface. The conditions accounted for are dry bulb temperature and incident solar radiation. -<%= csv_table(< false) -AMBIENT, Exterior surface is exposed to the 'weather' as read from the weather file. Solar gain is calculated using solar geometry, sfAzm, sfTilt, and sfExAbs. +{{ + csv_table("AMBIENT, Exterior surface is exposed to the 'weather' as read from the weather file. Solar gain is calculated using solar geometry, sfAzm, sfTilt, and sfExAbs. SPECIFIEDT, Exterior surface is exposed to solar radiation as in AMBIENT, but the dry bulb temperature is calculated with a user specified function (sfExT). sfExAbs can be set to 0 to eliminate solar effects. ADJZN, Exterior surface is exposed to another zone, whose name is specified by sfAdjZn. Solar gain is 0 unless gain is targeted to the surface with SGDIST below. GROUND, The surface is in contact with the ground. Details of the two-dimensional foundation design are defined by sfFnd. Only floor and wall surfaces may use this option. -ADIABATIC, Exterior surface heat flow is 0. Thermal storage effects of delayed surfaces are modeled. -END -%> +ADIABATIC, Exterior surface heat flow is 0. Thermal storage effects of delayed surfaces are modeled.") +}} **sfExAbs=*float*** @@ -271,11 +268,10 @@ Ground reflectivity for this surface. Inside surface (air film) conductance. Ignored for sfModel = Forward\_Difference. Default depends on the surface type. -<%= csv_table(< false) -sfType = FLOOR or CEILING, 1.32 -other, 1.5 -END -%> +{{ + csv_table("sfType = FLOOR or CEILING, 1.32 +other, 1.5") +}} {{ member_table({ @@ -291,13 +287,12 @@ END Outside combined surface (air film) conductance. Ignored for sfModel = Forward\_Difference. The default value is dependent upon the exterior conditions: -<%= csv_table(< false) -sfExCnd = AMBIENT, dflExH (Top-level member, described above) +{{ + csv_table("sfExCnd = AMBIENT, dflExH (Top-level member, described above) sfExCnd = SPECIFIEDT, dflExH (described above) sfExCnd = ADJZN, 1.5 -sfExCnd = ADIABATIC, not applicable -END -%> +sfExCnd = ADIABATIC, not applicable") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/terminal.md b/doc/src/docs/input-data/terminal.md index 452d5395a..abff30a58 100644 --- a/doc/src/docs/input-data/terminal.md +++ b/doc/src/docs/input-data/terminal.md @@ -90,11 +90,10 @@ Setpoint priority: when there is more than one capability with the same setpoint **tuLhNeedsFlow=*choice*** -<%= csv_table(< false) - YES, local heat being modeled requires terminal air flow (e.g. reheat coil). Local heat is then disabled when there is zero air flow through the terminal (when simulated VAV damper set to 0 flow, or when air handler fan and terminal fan both off) - NO, no local heat or does not require air flow (e.g. baseboard heaters). -END -%> +{{ + csv_table("YES, local heat being modeled requires terminal air flow (e.g. reheat coil). Local heat is then disabled when there is zero air flow through the terminal (when simulated VAV damper set to 0 flow, or when air handler fan and terminal fan both off) + NO, no local heat or does not require air flow (e.g. baseboard heaters).") +}} {{ member_table({ @@ -203,11 +202,10 @@ Sizing factor for autosized terminal air flows. Default value (1.1) specifies 1 Determines autosizing strategy for heating and cooling air flows. -<%= csv_table(< false) - SAME, tuVfMxH and tuVfMxC are set to the larger of the autosized values - DIFFERENT, tuVfMxH and tuVfMxC are autosized independently -END -%> +{{ + csv_table("SAME, tuVfMxH and tuVfMxC are set to the larger of the autosized values + DIFFERENT, tuVfMxH and tuVfMxC are autosized independently") +}} {{ member_table({ @@ -331,11 +329,10 @@ These members are disallowed if terminal has no local heating capability, that i Local heating coil type: -<%= csv_table(< false) - ELECTRIC, Electric coil or heater, including separate heaters such as electric baseboards. 100% efficient; rated capacity always available. - HW, Hot water coil, using hot water from amHEATPLANT. Available capacity may be limited by HEATPLANT total capacity as well as by coil rated capacity. -END -%> +{{ + csv_table("ELECTRIC, Electric coil or heater, including separate heaters such as electric baseboards. 100% efficient; rated capacity always available. + HW, Hot water coil, using hot water from amHEATPLANT. Available capacity may be limited by HEATPLANT total capacity as well as by coil rated capacity.") +}} {{ member_table({ @@ -413,12 +410,11 @@ Terminal fans are *NOT IMPLEMENTED* as of July 1992. Choice of: -<%= csv_table(< false) - NONE, No fan in this TERMINAL (default); input for other terminal fan members disallowed. +{{ + csv_table("NONE, No fan in this TERMINAL (default); input for other terminal fan members disallowed. SERIES, Fan runs whenever scheduled ON (see tfanSched, next); if VAV cfm < terminal fan cfm (tfanVfDs), the additional flow comes from the return air. - PARALLEL, Fan runs when scheduled ON (see tfanSched) and terminal's simulated VAV cfm is less than tfanVfDs plus tuVfMn ?? plus tuVfMn??. Terminal fan cfm is added to VAV cfm from AIRHANDLER to get cfm to ZONE. -END -%> + PARALLEL, Fan runs when scheduled ON (see tfanSched) and terminal's simulated VAV cfm is less than tfanVfDs plus tuVfMn ?? plus tuVfMn??. Terminal fan cfm is added to VAV cfm from AIRHANDLER to get cfm to ZONE.") +}} {{ @@ -435,13 +431,12 @@ END Terminal fan schedule. May be scheduled with an hourly variable expression. -<%= csv_table(< false) - OFF, fan does not run +{{ + csv_table("OFF, fan does not run ON, fan may run HEATING, fan may run when local heat is in use - VAV, fan may run when AIRHANDLER supply fan is on or when doing setback headting and ssCtrl is ZONE\_HEAT or BOTH (future). -END -%> + VAV, fan may run when AIRHANDLER supply fan is on or when doing setback headting and ssCtrl is ZONE\_HEAT or BOTH (future).") +}} A series fan (see tfanType) runs whenever on; a parallel fan runs only enough to keep terminal cfm at terminal minimum plus fan cfm; thus it may not run at all when the VAV flow from the AIRHANDLER is sufficient. diff --git a/doc/src/docs/input-data/top-members.md b/doc/src/docs/input-data/top-members.md index 68bb02329..6a9dad4e5 100644 --- a/doc/src/docs/input-data/top-members.md +++ b/doc/src/docs/input-data/top-members.md @@ -280,11 +280,10 @@ Allows the user to choose whether to calculate foundation conduction on hourly o Developmental zone humidity computation method choice for CNE models (no effect for CSE models). -<%= csv_table(< false) -ROB, Rob's backward difference method. Works well within limitations of backward difference approach. -PHIL, Phil's central difference method. Should be better if perfected*coma* but initialization at air handler startup is unresolved*coma and ringing has been observed. -END -%> +{{ + csv_table("ROB, Rob's backward difference method. Works well within limitations of backward difference approach. +PHIL, Phil's central difference method. Should be better if perfected*coma* but initialization at air handler startup is unresolved*coma and ringing has been observed.") +}} {{ member_table({ @@ -589,16 +588,15 @@ ASHWAT convection coefficient change threshold -- full calculation is triggered The following system variables (4.6.4) are determined from the weather file for each simulated hour: -<%= csv_table(< false) -\$radBeam, beam irradiance on tracking surface (integral for hour, Btu/ft^2^). +{{ + csv_table("\$radBeam, beam irradiance on tracking surface (integral for hour, Btu/ft^2^). \$radDiff, diffuse irradiance on a horizontal surface (integral for hour, Btu/ft^2^). \$tDbO, dry bulb temp (^o^F). \$tWbO, wet bulb temp (^o^F). \$wO, humidity ratio \$windDirDeg, wind direction (degrees, NOT RADIANS; 0=N, 90=E). -\$windSpeed, wind speed (mph). -END -%> +\$windSpeed, wind speed (mph).") +}} The following are the terms determined from the weather file for internal use, and can be referenced with the probes shown. @@ -626,11 +624,10 @@ Note: Backslash (\\) characters in path names must be doubled to work properly ( Selects sky model used to determine relative amounts of direct and diffuse irradiance. -<%= csv_table(< false) -ISOTROPIC, traditional isotropic sky model -ANISOTROPIC, Hay anisotropic model -END -%> +{{ + csv_table("ISOTROPIC, traditional isotropic sky model +ANISOTROPIC, Hay anisotropic model") +}} {{ member_table({ @@ -778,14 +775,13 @@ Wind Factor: multiplier for wind speeds read from weather file. windF is applied Specifies characteristics of ground terrain in the project region. -<%= csv_table(< false) -1, ocean or other body of water with at least 5 km unrestricted expanse +{{ + csv_table("1, ocean or other body of water with at least 5 km unrestricted expanse 2, flat terrain with some isolated obstacles (buildings or trees well separated) 3, rural areas with low buildings, trees, etc. 4, urban, industrial, or forest areas -5, center of large city -END -%> +5, center of large city") +}} {{ member_table({ diff --git a/doc/src/docs/input-data/zone.md b/doc/src/docs/input-data/zone.md index 6d6f4fef1..a60af911d 100644 --- a/doc/src/docs/input-data/zone.md +++ b/doc/src/docs/input-data/zone.md @@ -22,12 +22,11 @@ Name of zone. Enter after the word ZONE; no "=" is used. Selects model for zone. -<%= csv_table(< false) -CNE, Older central difference model based on original CALPAS methods. Not fully supported and not suitable for current compliance applications. +{{ + csv_table("CNE, Older central difference model based on original CALPAS methods. Not fully supported and not suitable for current compliance applications. CZM, Conditioned zone model. Forward-difference, short time step methods are used. -UZM, Unconditioned zone model. Identical to CZM except heating and cooling are not supported. Typically used for attics, garages, and other ancillary spaces. -END -%> +UZM, Unconditioned zone model. Identical to CZM except heating and cooling are not supported. Typically used for attics, garages, and other ancillary spaces.") +}} {{ member_table({ @@ -404,14 +403,13 @@ Zone effective leakage area (ELA). Zone local shielding class, used in derivation of local wind speed for ELA infiltration model, wind-driven AirNet leakage, and exterior surface coefficients. infShld values are -- -<%= csv_table(< false) - 1, no obstructions or local shielding +{{ + csv_table("1, no obstructions or local shielding 2, light local shielding with few obstructions 3, moderate local shielding, some obstructions within two house heights 4, heavy shielding, obstructions around most of the perimeter - 5, very heavy shielding, large obstructions surrounding the perimeter within two house heights -END -%> + 5, very heavy shielding, large obstructions surrounding the perimeter within two house heights") +}} {{ member_table({ diff --git a/doc/src/shared/dhwheater-doc.md b/doc/src/shared/dhwheater-doc.md index 187a31198..e1f7d298a 100644 --- a/doc/src/shared/dhwheater-doc.md +++ b/doc/src/shared/dhwheater-doc.md @@ -30,14 +30,13 @@ Number of identical water heaters of this type. Any value $>1$ is equivalent to Type of water heater. This categorization is based on CEC and federal rating standards that change from time to time. -<%= csv_table(< false) - SMALLSTORAGE, A storage water heater having an energy factor (EF) rating. Generally, a gas-fired storage water heater with input of 75,000 Btuh or less, an oil-fired storage water heater with input of 105,000 Btuh or less, an electric storage water heater with input of 12 kW or less, or a heat pump water heater rated at 24 amps or less. +{{ + csv_table("SMALLSTORAGE, A storage water heater having an energy factor (EF) rating. Generally, a gas-fired storage water heater with input of 75,000 Btuh or less, an oil-fired storage water heater with input of 105,000 Btuh or less, an electric storage water heater with input of 12 kW or less, or a heat pump water heater rated at 24 amps or less. LARGESTORAGE, Any storage water heater that is not SMALLSTORAGE. SMALLINSTANTANEOUS, A water heater that has an input rating of at least 4,000 Btuh per gallon of stored water. Small instantaneous water heaters include: gas instantaneous water heaters with an input of 200,000 Btu per hour or less, oil instantaneous water heaters with an input of 210,000 Btu per hour or less, and electric instantaneous water heaters with an input of 12 kW or less. LARGEINSTANTANEOUS, An instantaneous water heater that does not conform to the definition of SMALLINSTANTANEOUS, an indirect fuel-fired water heater, or a hot water supply boiler. - INSTANTANEOUSUEF, An instantaneous water heater having a UEF rating (as opposed to EF). -END -%> + INSTANTANEOUSUEF, An instantaneous water heater having a UEF rating (as opposed to EF).") +}} {{ member_table({ @@ -55,14 +54,13 @@ Heat source for water heater. CSE implements uses efficiency-based models for all whTypes (as documented in RACM, App. B). In addition, the detailed Ecotope HPWH model is available for electric (air source heat pump and resistance) SMALLSTORAGE water heaters. -<%= csv_table(< false) - RESISTANCE, Electric resistance heating element Deprecated for whType=SMALLSTORAGE (use RESISTANCEX) +{{ + csv_table("RESISTANCE, Electric resistance heating element Deprecated for whType=SMALLSTORAGE (use RESISTANCEX) RESISTANCEX, Electric resistance heating element, detailed HPWH model ASHP, Air source heat pump, EF model Deprecated for whType=SMALLSTORAGE (use ASHPX) ASHPX, Air source heat pump, detailed HPWH model - FUEL, Fuel-fired burner -END -%> + FUEL, Fuel-fired burner") +}} {{ member_table({ From 24f8dd447c13ed6a7aad7f8e4f5cc48dd15a45da Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 6 May 2025 11:25:40 -0600 Subject: [PATCH 043/117] Restore csv tables with headers. Find: <%= csv_table\(< true\)\s*\r*\n*([\s\S^"]*?)\s*\r*\n*END\s*\r*\n*%> Replace: {{\n csv_table("$1", True)\n}} --- doc/src/docs/input-data/airhandler.md | 9 ++-- doc/src/docs/input-data/dhwloopbranch.md | 9 ++-- doc/src/docs/input-data/dhwsys.md | 27 ++++++------ doc/src/docs/input-data/door.md | 18 ++++---- doc/src/docs/input-data/importfile.md | 9 ++-- doc/src/docs/input-data/pvarray.md | 18 ++++---- doc/src/docs/input-data/report.md | 9 ++-- doc/src/docs/input-data/rsys.md | 27 ++++++------ doc/src/docs/input-data/surface.md | 18 ++++---- doc/src/docs/input-data/top-members.md | 54 +++++++++++------------- doc/src/docs/input-data/window.md | 9 ++-- doc/src/shared/dhwheater-doc.md | 18 ++++---- 12 files changed, 100 insertions(+), 125 deletions(-) diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index 1a94c770e..d7141c59d 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -104,16 +104,15 @@ Giving _ahTsSp_ is disallowed for an air handler with no economizer, no heat coi \*\* only a single ZONE may be used with these choices. -<%= csv_table(< true) -**To Model**, **Use**, **Comments** +{{ + csv_table("**To Model**, **Use**, **Comments** VAV heating _OR_ cooling system, _ahTsSp_ = _numeric expression, _ WZ, CZ, or RA, CSE models this most directly VAV system that both heats and cools (single duct), Use a conditional expression to change _ahTsSp_ between heating and cooling values on the basis of outdoor temperature, date, or some other condition., Also use expressions to disable the unwanted coil and change each zone's setpoints according to same as _ahTsSp_. For example, when heating, use _ahccSched_ = OFF and _tuTC _= 999; and when cooling, use _ahhcSched_ = OFF and _tuTH_ = -99. Dual duct heating cooling system, Use two AIRHANDLERs Single zone VAV system that heats or cools per zone thermostat, _ahTsSp_ = ZN2, Supply fan runs, at flow _tuVfMn_, even when neither heating nor cooling. Supply temp setpoint determined as for CZ or WZ. Single zone constant volume system that heats or cools per zone thermostat, e.g. PSZ., _ahTsSp_ = _ZN2_; _tuVfMn_ = _tuVfMxH_ = _tuVfMxC_, Supply fan circulates air even if neither heating nor cooling. Supply temp setpoint determined as for CZ or WZ. All _tuVf_'s same forces constant volume. -Single zone constant volume, fan cycling system that heats or cools per zone thermostat, e.g. PTAC, RESYS, or furnace., _ahTsSp_= ZN; _ahTsMx_ = heat supply temp setpoint; _ahTsMn_ = cool supply temp setpoint; _tuVfMn_= 0; tuVfMxH = tuVfMxC normally; _sfanVfDs_ >= max( _tuVfMxH, tuVfMxC)_ to minimize confusion about flow modeled., _AhFanCycles_ defaults to YES. Supply fan off when not heating or cooling. Flow when fan on is _tuVfMxH_ or _tuVfMxC_ as applicable (or _sfanVfDs \* sfanVfMxF_ if smaller). -END -%> +Single zone constant volume, fan cycling system that heats or cools per zone thermostat, e.g. PTAC, RESYS, or furnace., _ahTsSp_= ZN; _ahTsMx_ = heat supply temp setpoint; _ahTsMn_ = cool supply temp setpoint; _tuVfMn_= 0; tuVfMxH = tuVfMxC normally; _sfanVfDs_ >= max( _tuVfMxH, tuVfMxC)_ to minimize confusion about flow modeled., _AhFanCycles_ defaults to YES. Supply fan off when not heating or cooling. Flow when fan on is _tuVfMxH_ or _tuVfMxC_ as applicable (or _sfanVfDs \* sfanVfMxF_ if smaller).", True) +}} : Using AIRHANDLER to Model Various Systems diff --git a/doc/src/docs/input-data/dhwloopbranch.md b/doc/src/docs/input-data/dhwloopbranch.md index efcfe29fa..c527d9a11 100644 --- a/doc/src/docs/input-data/dhwloopbranch.md +++ b/doc/src/docs/input-data/dhwloopbranch.md @@ -104,15 +104,14 @@ Combined radiant/convective exterior surface conductance between insulation (or Specify exterior conditions. -<%= csv_table(< true) -Choice, Description +{{ + csv_table("Choice, Description ADIABATIC, Adiabatic on other side AMBIENT, Ambient exterior SPECT, Specify temperature ADJZN, Adjacent zone -GROUND, Ground conditions -END -%> +GROUND, Ground conditions", True) +}} {{ member_table({ diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index f876c9efc..11d47e73b 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -430,13 +430,12 @@ Circulation loop volume flow rate for testing and validation. Branch model selection. -<%= csv_table(< true) -"wsBranchModel","Description" +{{ + csv_table(""wsBranchModel","Description" "T24DHW","Model in appendix B of the Alternative Compliance Manual" "DRAWWASTE","Draw duration increase per draw waste" -"DAYWASTE","draw duration increase per day waste" -END -%> +"DAYWASTE","draw duration increase per day waste"", True) +}} **wsDayWasteVol=*float*** @@ -668,13 +667,12 @@ Excess size factor for domestic hot water design. wsFxDes is applied when wsHeat Selects alternative control schemes for HPWH-based DHWHEATERs. These allow shifting primary heater (compressor or resistance element) operation to times of day that have load-management advantages. -<%= csv_table(< true) -wsDRMethod, Description +{{ + csv_table("wsDRMethod, Description NONE, None (default setpoint-based control) SCHEDULE, Demand response schedule (see wsDRSignal) -STATEOFCHARGE, State-of-charge (see wsTargetSOC) -END -%> +STATEOFCHARGE, State-of-charge (see wsTargetSOC)", True) +}} {{ member_table({ @@ -690,8 +688,8 @@ END When (and only when) wsDRMethod=SCHEDULE, wsDRSignal allows hourly specification of modified control schemes. Available signals are: -<%= csv_table(< true) -wsDRSignal, Description +{{ + csv_table("wsDRSignal, Description ON, Normal operation following the water heater's internal control logic. TOO, Tops off the tank once by engaging the all the available heating sources (compressor and resistive elements) in the water heater to heat the tank to setpoint (regardless of the current condition). TOOLOR, Tops off the tank once and locks out the resistance elements (only the compressor is used to heat the tank to setpoint). @@ -701,9 +699,8 @@ TOTLOR, Tops of the tank on a timer and locks out the resistance elements (only TOTLOC, Tops of the tank on a timer and locks out the compressor (only the resistance elements are used to heat the tank to setpoint). LOC, Locks out the compressor from the water heater's normal internal control logic. LOR, Locks out the resistive elements from the water heater's normal internal control logic. -LOCLOR, Locks out the compressor and resistive elements from the water heater's normal internal control logic. -END -%> +LOCLOR, Locks out the compressor and resistive elements from the water heater's normal internal control logic.", True) +}} Scheduling functions can be used to construct control strategies of interest, for example: diff --git a/doc/src/docs/input-data/door.md b/doc/src/docs/input-data/door.md index 55812a15c..67fa42894 100644 --- a/doc/src/docs/input-data/door.md +++ b/doc/src/docs/input-data/door.md @@ -181,17 +181,16 @@ Door exterior surface (air film) conductance. Ignored if drModel = Forward\_Diff When drModel = Forward\_Difference, several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on drExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. -<%= csv_table(< true) - Model, Exposed to ambient, Exposed to zone +{{ + csv_table("Model, Exposed to ambient, Exposed to zone UNIFIED, default CSE model, default CSE model INPUT, hc = drExHcMult, hc = drxxHcMult AKBARI, Akbari model, n/a WALTON, Walton model, n/a WINKELMANN, Winkelmann model, n/a MILLS, n/a, Mills model - ASHRAE, n/a, ASHRAE handbook values -END -%> + ASHRAE, n/a, ASHRAE handbook values", True) +}} **drExHcModel=*choice*** @@ -239,16 +238,15 @@ Exterior convection coefficient adjustment factor. When drExHcModel=INPUT, hc=d Exterior roughness factor. Typical roughness values: -<%= csv_table(< true) -Roughness Index, drExRf, Example +{{ + csv_table("Roughness Index, drExRf, Example 1 (very rough), 2.17, Stucco 2 (rough), 1.67, Brick 3 (medium rough), 1.52, Concrete 4 (Medium smooth), 1.13, Clear pine 5 (Smooth), 1.11, Smooth plaster -6 (Very Smooth), 1, Glass -END -%> +6 (Very Smooth), 1, Glass", True) +}} {{ member_table({ diff --git a/doc/src/docs/input-data/importfile.md b/doc/src/docs/input-data/importfile.md index 92a783044..219888eaf 100644 --- a/doc/src/docs/input-data/importfile.md +++ b/doc/src/docs/input-data/importfile.md @@ -5,15 +5,14 @@ IMPORTFILE allows specification of a file from which external data can be access Import files are text files containing an optional header and comma-separated data fields. With the header present, the structure of an import file matches that of an [EXPORT][export] file. This makes it convenient to import unmodified files EXPORTed from prior runs. The file structure is as follows (noting that the header in lines 1-4 should not be present when imHeader=NO) -- -<%= csv_table(< true) - Line, Contents, Notes +{{ + csv_table("Line, Contents, Notes 1, *runTitle*, *runNumber*, read but not checked 2, *timestamp*, in quotes, read but not checked 3, *title*, *freq*, should match imTitle and imFreq (see below) 4, *colName1*, *colName2*, ..., comma separated column names optionally in quotes - 5 .., *val1*, *val2*, ..., comma separated values (string values optionally in quotes) -END -%> + 5 .., *val1*, *val2*, ..., comma separated values (string values optionally in quotes)", True) +}} Example import file imp1.csv diff --git a/doc/src/docs/input-data/pvarray.md b/doc/src/docs/input-data/pvarray.md index 402dacae1..3e7591c74 100644 --- a/doc/src/docs/input-data/pvarray.md +++ b/doc/src/docs/input-data/pvarray.md @@ -64,14 +64,13 @@ The rated photovoltaic system DC capacity/size as indicated by the nameplate. Type of module to model. The module type determines the refraction index and temperature coefficient used in the simulation. Alternatively, the "Custom" module type may be used in conjunction with user-defined input for *pvCoverRefrInd* and *pvTempCoeff*. -<%= csv_table(< true) - **Module Type**, **pvCoverRefrInd**, **pvTempCoeff** +{{ + csv_table("**Module Type**, **pvCoverRefrInd**, **pvTempCoeff** Standard, 1.3, -0.00206 Premium, 1.3, -0.00194 ThinFilm, 1.3, -0.00178 - Custom, User-defined, User-defined -END -%> + Custom, User-defined, User-defined", True) +}} {{ member_table({ @@ -278,8 +277,8 @@ AC inverter efficiency at rated DC power. Fraction of total DC energy lost. The total loss from a system is aggregated from several possible causes as illustrated below: -<%= csv_table(< true) - **Loss Type**, **Default Assumption** +{{ + csv_table("**Loss Type**, **Default Assumption** Soiling, 0.02 *Shading*, *0 (handled explicitly)* Snow, 0 @@ -290,9 +289,8 @@ Fraction of total DC energy lost. The total loss from a system is aggregated fro Nameplate rating, 0.01 *Age*, *0.05 (estimated 0.5% degradation over 20 years)* Availability, 0.03 - **Total**, **0.14** -END -%> + **Total**, **0.14**", True) +}} *Italic* lines indicate differences from PVWatts assumptions. diff --git a/doc/src/docs/input-data/report.md b/doc/src/docs/input-data/report.md index c5da0df42..2407649a1 100644 --- a/doc/src/docs/input-data/report.md +++ b/doc/src/docs/input-data/report.md @@ -18,14 +18,13 @@ In addition to the headers and footers of individual reports, the report file ha **Default Reports:** CSE generates the following reports by default for each run, in the order shown. They are output by default to the "Primary" report file. They may be ALTERed or DELETEd as desired, using the object names shown. -<%= csv_table(< true) - rpName, rpType, Additional members +{{ + csv_table("rpName, rpType, Additional members Err, ERR eb, ZEB, rpFreq=MONTH; rpZone=SUM; Log, LOG - Inp, INP -END -%> + Inp, INP", True) +}} Any reports specified by the user and not assigned to another file appear in the Primary report file between the default reports "eb" and "Log", in the order in which the REPORT objects are given in the input file. diff --git a/doc/src/docs/input-data/rsys.md b/doc/src/docs/input-data/rsys.md index d160f6b28..8a2b951ab 100644 --- a/doc/src/docs/input-data/rsys.md +++ b/doc/src/docs/input-data/rsys.md @@ -20,8 +20,8 @@ Optional name of HVAC system; give after the word “RSYS” if desired. Type of system. -<%= csv_table(< true) -rsType, Description +{{ + csv_table("rsType, Description ACFURNACE, Compressor-based cooling modeled per SEER and EER. Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. ACPMFURNACE, Compressor-based cooling modeled per PERFORMANCEMAP specified in rsPerfMapClg. Fuel-fired heating. Primary heating input energy is accumulated to end use HTG of meter rsFuelMtr. ACRESISTANCE, Compressor-based cooling and electric ('strip') heating. Cooling performance based on SEER and EER. Primary heating input energy is accumulated to end use HTG of meter rsElecMtr. @@ -41,9 +41,8 @@ ACPKGROOMRESISTANCE, Packaged room cooling and electric resistance heating. COMBINEDHEATDHW, Combined heating / DHW. Use rsCHDHWSYS to specify the DHWSYS that provides hot water to the coil in this RSYS. No cooling. ACCOMBINEDHEATDHW, Compressor-based cooling; COMBINEDHEATDHW heating. ACPMCOMBINEDHEATDHW, Compressor-based cooling modeled per PERFORMANCEMAP specified in rsPerfMapClg; COMBINEDHEATDHW heating. -FANCOIL, Coil-based heating and cooling. No primary (fuel-using) equipment is modeled. rsLoadMtr, rsHtgLoadMtr, and rsClgLoadMtr are typically used to record loads for linking to an external model. -END -%> +FANCOIL, Coil-based heating and cooling. No primary (fuel-using) equipment is modeled. rsLoadMtr, rsHtgLoadMtr, and rsClgLoadMtr are typically used to record loads for linking to an external model.", True) +}} {{ member_table({ @@ -483,13 +482,12 @@ Specifies the cooling performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM, For rsType=ASHP, type of auxiliary heat. Auxiliary heating is used when heatpump capacity is insufficient to maintain zone temperature and during reverse-cycle defrost operation (if rsDefrostModel=REVCYCLEAUX). If rsTypeAuxH=Furnace, energy use for auxiliary heat is accumulated to end use HPBU of meter rsFuelMtr (if specified). If rsTypeAuxH=Resistance, energy use for auxiliary heat is accumulated to end use HPBU of meter rsElecMtr (if specified). -<%= csv_table(< true) -Choice, Description +{{ + csv_table("Choice, Description NONE, No auxiliary heat RESISTANCE, Electric resistance (aka strip heat) -FURNACE, Fuel-fired -END -%> +FURNACE, Fuel-fired", True) +}} {{ member_table({ @@ -505,13 +503,12 @@ END For rsType=ASHP, type of auxiliary heating control. -<%= csv_table(< true) -Choice, Description +{{ + csv_table("Choice, Description LOCKOUT, Compressor locked out if any auxiliary heating control CYCLE, Compressor runs continuously and auxiliary cycles -ALTERNATE, Alternates between compressor and auxiliary -END -%> +ALTERNATE, Alternates between compressor and auxiliary", True) +}} {{ member_table({ diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index 1d9e59d60..0ff9f10a2 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -306,8 +306,8 @@ sfExCnd = ADIABATIC, not applicable") When sfModel = Forward\_Difference, several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on sfExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. -<%= csv_table(< true) -Model, Exposed to ambient, Exposed to zone +{{ + csv_table("Model, Exposed to ambient, Exposed to zone UNIFIED, default CSE model, default CSE model INPUT, hc = sfExHcMult, hc = sfxxHcMult AKBARI, Akbari model, n/a @@ -316,9 +316,8 @@ WINKELMANN, Winkelmann model, n/a DOE2, DOE2 model, n/a MILLS, n/a, Mills model ASHRAE, n/a, ASHRAE handbook values -TARP, n/a, TARP model -END -%> +TARP, n/a, TARP model", True) +}} **sfExHcModel=*choice*** @@ -368,16 +367,15 @@ Exterior convection coefficient adjustment factor. When sfExHcModel=INPUT, hc=s Exterior surface roughness factor. Used only when surface is exposed to ambient (i.e. with wind exposure). Typical values: -<%= csv_table(< true) -Roughness Index, sfExRf, Example +{{ + csv_table("Roughness Index, sfExRf, Example 1 (very rough), 2.17, Stucco 2 (rough), 1.67, Brick 3 (medium rough), 1.52, Concrete 4 (Medium smooth), 1.13, Clear pine 5 (Smooth), 1.11, Smooth plaster -6 (Very Smooth), 1, Glass -END -%> +6 (Very Smooth), 1, Glass", True) +}} {{ member_table({ diff --git a/doc/src/docs/input-data/top-members.md b/doc/src/docs/input-data/top-members.md index 6a9dad4e5..0c15e8d2e 100644 --- a/doc/src/docs/input-data/top-members.md +++ b/doc/src/docs/input-data/top-members.md @@ -417,13 +417,12 @@ End day for daylight saving time (assuming DT=Yes) Indicates availability of outdoor ventilation strategies. CSE cannot model simultaneously-operating alternative ventilation strategies. For example, an RSYS central fan integrated (CFI) OAV system is never modeled while whole house fan ventilation is available. ventAvail controls which ventilation mode, if any, is available for the current hour. Note that mode availability means that the strategy could operate but may not operate due to other control assumptions. -<%= csv_table(< true) -Choice, Ventilation Strategy Available +{{ + csv_table("Choice, Ventilation Strategy Available NONE, None WHOLEBUILDING, IZXFER (window and whole-house fan) -RSYSOAV, RSYS central fan integrated (CFI) outside air ventilation (OAV) -END -%> +RSYSOAV, RSYS central fan integrated (CFI) outside air ventilation (OAV)", True) +}} As noted, ventAvail is evaluated hourly, permitting flexible control strategy modeling. The following example specifies that RSYSOAV (CFI) ventilation is available when the seven day moving average temperature is above 68 ^o^F, otherwise whole building ventilation is available between 7 and 11 PM, otherwise no ventilation. @@ -445,12 +444,11 @@ As noted, ventAvail is evaluated hourly, permitting flexible control strategy mo Specifies advanced exterior shading model used to evaluate shading of [PVARRAYs][pvarray] by [SHADEXs][shadex] or other PVARRAYs. Advanced shading is not implemented for building surfaces and this setting has no effect on walls or windows. -<%= csv_table(< true) -**Choice**, **Effect** +{{ + csv_table("**Choice**, **Effect** PENUMBRA, Calculate shading using the Penumbra model -NONE, Disable advanced shading calculations -END -%> +NONE, Disable advanced shading calculations", True) +}} {{ member_table({ @@ -466,12 +464,11 @@ END Solar interpolation method. -<%= csv_table(< true) -Choice +{{ + csv_table("Choice CSE -TRNSYS -END -%> +TRNSYS", True) +}} {{ member_table({ @@ -643,15 +640,14 @@ ANISOTROPIC, Hay anisotropic model") Selects the model used to derive sky temperature used in long-wave (thermal) radiant heat exchange calculations for SURFACEs exposed to ambient conditions. See the RACM alorithms documentation for technical details. -<%= csv_table(< true) -**Choice**, **Description** +{{ + csv_table("**Choice**, **Description** DEFAULT, Default: tSky from weather file if available else Berdahl-Martin BERDAHLMARTIN, Berdahl-Martin (tSky depends on dew point, cloud cover, and hour) DRYBULB, tSky = dry-bulb temperature (for testing) BLAST, Blast model (tSky depends on dry-bulb) -IRHORIZ, Derives tSky from horizonal infrared data from the weather file (available on some EPW files only). Caution: minimal error checking! Missing weather file IR values are not handled correctly. -END -%> +IRHORIZ, Derives tSky from horizonal infrared data from the weather file (available on some EPW files only). Caution: minimal error checking! Missing weather file IR values are not handled correctly.", True) +}} {{ member_table({ @@ -969,15 +965,14 @@ CSE supports an optional comma-separated (CSV) text file that provides hourly TD The format of a TDV file is the same as an [IMPORTFILE][importfile] with the proviso that the 4 line header is not optional and certain header items must have specified values. In the following table, non-italic items must be provided as shown (with optional quotes). -<%= csv_table(< true) -**Line** **Contents** **Notes** +{{ + csv_table("**Line** **Contents** **Notes** 1, TDV Data (TDV/Btu), *runNumber*, *runNumber* is not checked 2, *timestamp* optionally in quotes accessible via @TOP.TDVFileTimeStamp 3, *title*, hour *title* (in quotes if it contains commas) accessible via @TOP.TDVFileTitle 4, tdvElec, tdvFuel comma separated column names (optionally in quotes)\ not checked -5 .., *valElec*,*valFuel* comma separated numerical values (8760 or 8784 rows) tdvElec is always in column 1, tdvFuel always in column 2 column names in row 4 do not determine order -END -%> +5 .., *valElec*,*valFuel* comma separated numerical values (8760 or 8784 rows) tdvElec is always in column 1, tdvFuel always in column 2 column names in row 4 do not determine order", True) +}} Example TDV file -- @@ -1000,8 +995,8 @@ Note: additional columns can be included and are ignored. The table below shows probes available for accessing TDV data in expressions. Except as noted, daily values are updated based on standard time, so they may be inaccurate by small amounts when daylight savings time is in effect. -<%= csv_table(< true) -**Probe**, **Variability**, **Description** +{{ + csv_table("**Probe**, **Variability**, **Description** @Weather.tdvElec, Hour, current hour electricity TDV @Weather.tdvFuel, Hour, current hour fuel TDV @Weather.tdvElecPk, Day, current day peak electricity TDV (includes future hours). Updated at hour 23 during daylight savings. @@ -1011,9 +1006,8 @@ The table below shows probes available for accessing TDV data in expressions. E @weather.tdvElecHrRank[], Day, hour ranking of TDVElec values. tdvElecHrRank[ 1] is the hour having the highest TDVElec, tdvElecHrRank[ 2] is the next highest, etc. The hour values are adjusted when dayight savings time is in effect, so they remain consistent with system variable $hour. @weatherFile.tdvFileTimeStamp, Constant, TDV file timestamp (line 2 of header) @weatherFile.tdvFileTitle, Constant, TDV file title (line 3 of header) -@Top.tdvFName, Constant, TDV file full path -END -%> +@Top.tdvFName, Constant, TDV file full path", True) +}} **TDVfName=*string*** diff --git a/doc/src/docs/input-data/window.md b/doc/src/docs/input-data/window.md index 4dce1b6d1..1fe375158 100644 --- a/doc/src/docs/input-data/window.md +++ b/doc/src/docs/input-data/window.md @@ -194,17 +194,16 @@ Window exterior surface (air film) conductance. Several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on wnExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. -<%= csv_table(< true) -Model, Exposed to ambient, Exposed to zone +{{ + csv_table("Model, Exposed to ambient, Exposed to zone UNIFIED, default CSE model, default CSE model INPUT , hc = wnExHcMult, hc = wnxxHcMult AKBARI , Akbari model, n/a WALTON , Walton model, n/a WINKELMANN, Winkelmann model, n/a MILLS , n/a , Mills model -ASHRAE , n/a , ASHRAE handbook values -END -%> +ASHRAE , n/a , ASHRAE handbook values", True) +}} **wnExHcModel=*choice*** diff --git a/doc/src/shared/dhwheater-doc.md b/doc/src/shared/dhwheater-doc.md index e1f7d298a..9c23bfdc0 100644 --- a/doc/src/shared/dhwheater-doc.md +++ b/doc/src/shared/dhwheater-doc.md @@ -135,16 +135,15 @@ Rated energy factor that specifies DHWHEATER efficiency under test conditions. by CSE to derive annual water heating efficiency and/or other characteristics as described below. Calculation methods are documented in RACM, Appendix B. -<%= csv_table(< true) - Configuration, whEF default, Use +{{ + csv_table("Configuration, whEF default, Use whType=SMALLSTORAGE, whHeatSrc=RESISTANCE or FUEL, 0.82, Derivation of whLDEF whType=SMALLSTORAGE, whHeatSrc=ASHP, 0.82, Derivation of whLDEFnote inappropriate default (deprecated, use ASHPX) whType=SMALLSTORAGE, whHeatSrc=ASHPX, whASHPType=GENERIC, (req'd), Tank losses Overall efficiency whType=SMALLSTORAGE, whHeatSrc=RESISTANCEX, (req'd), Tank losses Note: maximum whEF=0.98. whType=SMALLINSTANTANEOUS, whHeatSrc=RESISTANCE or FUEL, 0.82, Annual efficiency = whEF*0.92 - Any other, (unused) -END -%> + Any other, (unused)", True) +}} {{ member_table({ @@ -292,8 +291,8 @@ whZone and whTEx cannot both be specified. Air source heat pump type, valid only if whHeatSrc=ASHPX. These choices are supported by the detailed HPWH model. Except for Generic, all heater characteristics are set by HPWH based on whASHPType. -<%= csv_table(< true) -"Choice","Specified type" +{{ + csv_table(""Choice","Specified type" "Generic","General generic (parameterized by wh_EF and wh_vol)" "AOSmithPHPT60","60 gallon Voltex" "AOSmithPHPT80","80 gallon Voltex" @@ -402,9 +401,8 @@ Air source heat pump type, valid only if whHeatSrc=ASHPX. These choices are supp "BradfordWhiteAeroThermRE2H65","Bradford White 65-gal AeroTherm2023" "BradfordWhiteAeroThermRE2H80","Bradford White 80-gal AeroTherm2023" "LG_APHWC50","LG 50-gal integrated HPWH" -"LG_APHWC80","LG 580-gal integrated HPWH" -END -%> +"LG_APHWC80","LG 580-gal integrated HPWH"", True) +}} {{ member_table({ From e57e83958c9910095e4e2e723212b7b263684409 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 6 May 2025 11:30:15 -0600 Subject: [PATCH 044/117] Remove inner quotations for csv_table string. --- doc/src/docs/input-data/dhwsys.md | 8 +- doc/src/shared/dhwheater-doc.md | 220 +++++++++++++++--------------- 2 files changed, 114 insertions(+), 114 deletions(-) diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index 11d47e73b..5f9360ced 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -431,10 +431,10 @@ Circulation loop volume flow rate for testing and validation. Branch model selection. {{ - csv_table(""wsBranchModel","Description" -"T24DHW","Model in appendix B of the Alternative Compliance Manual" -"DRAWWASTE","Draw duration increase per draw waste" -"DAYWASTE","draw duration increase per day waste"", True) + csv_table("wsBranchModel,Description +T24DHW,Model in appendix B of the Alternative Compliance Manual +DRAWWASTE,Draw duration increase per draw waste +DAYWASTE,draw duration increase per day waste", True) }} **wsDayWasteVol=*float*** diff --git a/doc/src/shared/dhwheater-doc.md b/doc/src/shared/dhwheater-doc.md index 9c23bfdc0..c1db5839f 100644 --- a/doc/src/shared/dhwheater-doc.md +++ b/doc/src/shared/dhwheater-doc.md @@ -292,116 +292,116 @@ whZone and whTEx cannot both be specified. Air source heat pump type, valid only if whHeatSrc=ASHPX. These choices are supported by the detailed HPWH model. Except for Generic, all heater characteristics are set by HPWH based on whASHPType. {{ - csv_table(""Choice","Specified type" -"Generic","General generic (parameterized by wh_EF and wh_vol)" -"AOSmithPHPT60","60 gallon Voltex" -"AOSmithPHPT80","80 gallon Voltex" -"AOSmithHPTU50","50 gallon AOSmith HPTU" -"AOSmithHPTU66","66 gallon AOSmith HPTU" -"AOSmithHPTU80","80 gallon AOSmith HPTU" -"AOSmithHPTU80DR","80 gallon AOSmith HPTU (demand reduction variant)" -"AOSmithCAHP120","120 gallon AOSmith" -"Sanden40","Sanden 40 gallon CO2 external heat pump" -"Sanden80","Sanden 80 gallon CO2 external heat pump" -"Sanden120","Sanden 120 gallon CO2 external heat pump" -"SandenGS3","Sanden GS3 compressor CO2 external" -"GE2012","2012 era GeoSpring" -"GE2014","2014 80 gal GE model run in the efficiency mode" -"GE2014_80DR","2014 80 gal GE model run in the efficiency mode (demand reduction variant)" -"GE2014StdMode","2014 50 gal GE run in standard mode" -"GE2014StdMode80","2014 80 gal GE run in standard mode" -"RheemHB50","newish Rheem (2014 model?)" -"RheemHBDR2250","50 gallon, 2250 W resistance Rheem HB Duct Ready" -"RheemHBDR4550","50 gallon, 4500 W resistance Rheem HB Duct Ready" -"RheemHBDR2265","65 gallon, 2250 W resistance Rheem HB Duct Ready" -"RheemHBDR4565","65 gallon, 4500 W resistance Rheem HB Duct Ready" -"RheemHBDR2280","80 gallon, 2250 W resistance Rheem HB Duct Ready" -"RheemHBDR4580","80 gallon, 4500 W resistance Rheem HB Duct Ready" -"Rheem2020Prem40","40 gallon, Rheem 2020 Premium" -"Rheem2020Prem50","50 gallon, Rheem 2020 Premium" -"Rheem2020Prem65","65 gallon, Rheem 2020 Premium" -"Rheem2020Prem80","80 gallon, Rheem 2020 Premium" -"Rheem2020Build40","40 gallon, Rheem 2020 Builder" -"Rheem2020Build50","50 gallon, Rheem 2020 Builder" -"Rheem2020Build65","65 gallon, Rheem 2020 Builder" -"Rheem2020Build80","80 gallon, Rheem 2020 Builder" -"RheemPlugInShared40","40 gal Rheem plug-in 120V shared circuit (no resistance elements)" -"RheemPlugInShared50","50 gal Rheem plug-in 120V shared circuit (no resistance elements)" -"RheemPlugInShared65","65 gal Rheem plug-in 120V shared circuit (no resistance elements)" -"RheemPlugInShared80","80 gal Rheem plug-in 120V shared circuit (no resistance elements)" -"RheemPlugInDedicated40","40 gal Rheem plug-in 120V dedicated circuit (no resistance elements)" -"RheemPlugInDedicated50","50 gal Rheem plug-in 120V dedicated circuit (no resistance elements)" -"Stiebel220E","Stiebel Eltron (2014 model?)" -"AOSmithSHPT50","AOSmith add'l models (added 3-24-2017)" -"AOSmithSHPT66","AOSmith add'l models (added 3-24-2017)" -"AOSmithSHPT80","AOSmith add'l models (added 3-24-2017)" -"GenericTier1","Generic Tier 1" -"GenericTier2","Generic Tier 2" -"GenericTier3","Generic Tier 3" -"Generic","General generic (parameterized by EF and vol)" -"UEF2Generic","Experimental UEF=2" -"WorstCaseMedium","UEF2Generic alias (supports pre-existing test cases)" -"BasicIntegrated","Typical integrated HPWH" -"ResTank","Resistance heater (no compressor). Superceded by whHeatSrc=RESITANCEX" -"ResTankNoUA","Resistance heater (no compressor) with no tank losses. Superseded by whHeatSrc=RESISTANCEX." -"AOSmithHPTU80DR","80 gallon AOSmith HPTU with fixed backup setpoint (experimental for demand response testing)" -"AOSmithSHPT50","50 gal AOSmith SHPT" -"AOSmithSHPT66","66 gal AOSmith SHPT" -"AOSmithSHPT80","80 gal AOSmith SHPT" -"AOSmithHPTS40","40 gal AOSmith HPTS" -"AOSmithHPTS50","50 gal AOSmith HPTS" -"AOSmithHPTS66","66 gal AOSmith HPTS" -"AOSmithHPTS80","80 gal AOSmith HPTS" -"ColmacCxV5_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" -"ColmacCxA10_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" -"ColmacCxA15_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" -"ColmacCxA20_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" -"ColmacCxA25_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" -"ColmacCxA30_SP","Colmac CxA-xx modular external HPWHs (single pass mode)" -"ColmacCxV5_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" -"ColmacCxA10_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" -"ColmacCxA15_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" -"ColmacCxA20_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" -"ColmacCxA25_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" -"ColmacCxA30_MP","Colmac CxA-xx modular external HPWHs (multi-pass mode)" -"NyleC25A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" -"NyleC60A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" -"NyleC90A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" -"NyleC125A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" -"NyleC185A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" -"NyleC250A_SP","Nyle Cxx external HPWHs (SP = single pass mode)" -"NyleC60A_CWP_SP","Nyle Cxx external SP HPWHs with cold weather package" -"NyleC90A_CWP_SP","Nyle Cxx external SP HPWHs with cold weather package" -"NyleC125A_CWP_SP","Nyle Cxx external SP HPWHs with cold weather package" -"NyleC185A_CWP_SP","Nyle Cxx external SP HPWHs with cold weather package" -"NyleC250A_CWP_SP","Nyle Cxx external SP HPWHs with cold weather package" -"NyleC60A_MP","Nyle Cxx external HPWHs (MP = multi-pass mode)" -"NyleC90A_MP","Nyle Cxx external HPWHs (MP = multi-pass mode)" -"NyleC125A_MP","Nyle Cxx external HPWHs (MP = multi-pass mode)" -"NyleC185A_MP","Nyle Cxx external HPWHs (MP = multi-pass mode)" -"NyleC250A_MP","Nyle Cxx external HPWHs (MP = multi-pass mode)" -"NyleC60A_CWP_MP","Nyle Cxx external MP HPWHs w/ cold weather package" -"NyleC90A_CWP_MP","Nyle Cxx external MP HPWHs w/ cold weather package" -"NyleC125A_CWP_MP","Nyle Cxx external MP HPWHs w/ cold weather package" -"NyleC185A_CWP_MP","Nyle Cxx external MP HPWHs w/ cold weather package" -"NyleC250A_CWP_MP","Nyle Cxx external MP HPWHs w/ cold weather package" -"Rheem_HPHD60HNU_MP","Rheem HPHD60 MP external MP HPWHs" -"Rheem_HPHD60VNU_MP","Rheem HPHD60 MP external MP HPWHs" -"Rheem_HPHD135HNU_MP","Rheem HPHD135 MP external MP HPWHs" -"Rheem_HPHD135VNU_MP","Rheem HPHD135 MP external MP HPWHs" -"Scalable_SP","single pass scalable type for autosized standard design" -"Scalable_MP","multipass scalable type for autosized standard design" -"AquaThermAire","Villara AquaThermAire HPWH" -"GenericUEF217","65-gal tank meeting Federal standard minimum requirement" -"AWHSTier4Generic40","Any 40-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements" -"AWHSTier4Generic50","Any 50-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements" -"AWHSTier4Generic65","Any 65-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements" -"AWHSTier4Generic80","Any 80-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements" -"BradfordWhiteAeroThermRE2H50","Bradford White 50-gal AeroTherm2023" -"BradfordWhiteAeroThermRE2H65","Bradford White 65-gal AeroTherm2023" -"BradfordWhiteAeroThermRE2H80","Bradford White 80-gal AeroTherm2023" -"LG_APHWC50","LG 50-gal integrated HPWH" -"LG_APHWC80","LG 580-gal integrated HPWH"", True) + csv_table("Choice,Specified type +Generic,General generic (parameterized by wh_EF and wh_vol) +AOSmithPHPT60,60 gallon Voltex +AOSmithPHPT80,80 gallon Voltex +AOSmithHPTU50,50 gallon AOSmith HPTU +AOSmithHPTU66,66 gallon AOSmith HPTU +AOSmithHPTU80,80 gallon AOSmith HPTU +AOSmithHPTU80DR,80 gallon AOSmith HPTU (demand reduction variant) +AOSmithCAHP120,120 gallon AOSmith +Sanden40,Sanden 40 gallon CO2 external heat pump +Sanden80,Sanden 80 gallon CO2 external heat pump +Sanden120,Sanden 120 gallon CO2 external heat pump +SandenGS3,Sanden GS3 compressor CO2 external +GE2012,2012 era GeoSpring +GE2014,2014 80 gal GE model run in the efficiency mode +GE2014_80DR,2014 80 gal GE model run in the efficiency mode (demand reduction variant) +GE2014StdMode,2014 50 gal GE run in standard mode +GE2014StdMode80,2014 80 gal GE run in standard mode +RheemHB50,newish Rheem (2014 model?) +RheemHBDR2250,50 gallon, 2250 W resistance Rheem HB Duct Ready +RheemHBDR4550,50 gallon, 4500 W resistance Rheem HB Duct Ready +RheemHBDR2265,65 gallon, 2250 W resistance Rheem HB Duct Ready +RheemHBDR4565,65 gallon, 4500 W resistance Rheem HB Duct Ready +RheemHBDR2280,80 gallon, 2250 W resistance Rheem HB Duct Ready +RheemHBDR4580,80 gallon, 4500 W resistance Rheem HB Duct Ready +Rheem2020Prem40,40 gallon, Rheem 2020 Premium +Rheem2020Prem50,50 gallon, Rheem 2020 Premium +Rheem2020Prem65,65 gallon, Rheem 2020 Premium +Rheem2020Prem80,80 gallon, Rheem 2020 Premium +Rheem2020Build40,40 gallon, Rheem 2020 Builder +Rheem2020Build50,50 gallon, Rheem 2020 Builder +Rheem2020Build65,65 gallon, Rheem 2020 Builder +Rheem2020Build80,80 gallon, Rheem 2020 Builder +RheemPlugInShared40,40 gal Rheem plug-in 120V shared circuit (no resistance elements) +RheemPlugInShared50,50 gal Rheem plug-in 120V shared circuit (no resistance elements) +RheemPlugInShared65,65 gal Rheem plug-in 120V shared circuit (no resistance elements) +RheemPlugInShared80,80 gal Rheem plug-in 120V shared circuit (no resistance elements) +RheemPlugInDedicated40,40 gal Rheem plug-in 120V dedicated circuit (no resistance elements) +RheemPlugInDedicated50,50 gal Rheem plug-in 120V dedicated circuit (no resistance elements) +Stiebel220E,Stiebel Eltron (2014 model?) +AOSmithSHPT50,AOSmith add'l models (added 3-24-2017) +AOSmithSHPT66,AOSmith add'l models (added 3-24-2017) +AOSmithSHPT80,AOSmith add'l models (added 3-24-2017) +GenericTier1,Generic Tier 1 +GenericTier2,Generic Tier 2 +GenericTier3,Generic Tier 3 +Generic,General generic (parameterized by EF and vol) +UEF2Generic,Experimental UEF=2 +WorstCaseMedium,UEF2Generic alias (supports pre-existing test cases) +BasicIntegrated,Typical integrated HPWH +ResTank,Resistance heater (no compressor). Superceded by whHeatSrc=RESITANCEX +ResTankNoUA,Resistance heater (no compressor) with no tank losses. Superseded by whHeatSrc=RESISTANCEX. +AOSmithHPTU80DR,80 gallon AOSmith HPTU with fixed backup setpoint (experimental for demand response testing) +AOSmithSHPT50,50 gal AOSmith SHPT +AOSmithSHPT66,66 gal AOSmith SHPT +AOSmithSHPT80,80 gal AOSmith SHPT +AOSmithHPTS40,40 gal AOSmith HPTS +AOSmithHPTS50,50 gal AOSmith HPTS +AOSmithHPTS66,66 gal AOSmith HPTS +AOSmithHPTS80,80 gal AOSmith HPTS +ColmacCxV5_SP,Colmac CxA-xx modular external HPWHs (single pass mode) +ColmacCxA10_SP,Colmac CxA-xx modular external HPWHs (single pass mode) +ColmacCxA15_SP,Colmac CxA-xx modular external HPWHs (single pass mode) +ColmacCxA20_SP,Colmac CxA-xx modular external HPWHs (single pass mode) +ColmacCxA25_SP,Colmac CxA-xx modular external HPWHs (single pass mode) +ColmacCxA30_SP,Colmac CxA-xx modular external HPWHs (single pass mode) +ColmacCxV5_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) +ColmacCxA10_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) +ColmacCxA15_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) +ColmacCxA20_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) +ColmacCxA25_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) +ColmacCxA30_MP,Colmac CxA-xx modular external HPWHs (multi-pass mode) +NyleC25A_SP,Nyle Cxx external HPWHs (SP = single pass mode) +NyleC60A_SP,Nyle Cxx external HPWHs (SP = single pass mode) +NyleC90A_SP,Nyle Cxx external HPWHs (SP = single pass mode) +NyleC125A_SP,Nyle Cxx external HPWHs (SP = single pass mode) +NyleC185A_SP,Nyle Cxx external HPWHs (SP = single pass mode) +NyleC250A_SP,Nyle Cxx external HPWHs (SP = single pass mode) +NyleC60A_CWP_SP,Nyle Cxx external SP HPWHs with cold weather package +NyleC90A_CWP_SP,Nyle Cxx external SP HPWHs with cold weather package +NyleC125A_CWP_SP,Nyle Cxx external SP HPWHs with cold weather package +NyleC185A_CWP_SP,Nyle Cxx external SP HPWHs with cold weather package +NyleC250A_CWP_SP,Nyle Cxx external SP HPWHs with cold weather package +NyleC60A_MP,Nyle Cxx external HPWHs (MP = multi-pass mode) +NyleC90A_MP,Nyle Cxx external HPWHs (MP = multi-pass mode) +NyleC125A_MP,Nyle Cxx external HPWHs (MP = multi-pass mode) +NyleC185A_MP,Nyle Cxx external HPWHs (MP = multi-pass mode) +NyleC250A_MP,Nyle Cxx external HPWHs (MP = multi-pass mode) +NyleC60A_CWP_MP,Nyle Cxx external MP HPWHs w/ cold weather package +NyleC90A_CWP_MP,Nyle Cxx external MP HPWHs w/ cold weather package +NyleC125A_CWP_MP,Nyle Cxx external MP HPWHs w/ cold weather package +NyleC185A_CWP_MP,Nyle Cxx external MP HPWHs w/ cold weather package +NyleC250A_CWP_MP,Nyle Cxx external MP HPWHs w/ cold weather package +Rheem_HPHD60HNU_MP,Rheem HPHD60 MP external MP HPWHs +Rheem_HPHD60VNU_MP,Rheem HPHD60 MP external MP HPWHs +Rheem_HPHD135HNU_MP,Rheem HPHD135 MP external MP HPWHs +Rheem_HPHD135VNU_MP,Rheem HPHD135 MP external MP HPWHs +Scalable_SP,single pass scalable type for autosized standard design +Scalable_MP,multipass scalable type for autosized standard design +AquaThermAire,Villara AquaThermAire HPWH +GenericUEF217,65-gal tank meeting Federal standard minimum requirement +AWHSTier4Generic40,Any 40-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements +AWHSTier4Generic50,Any 50-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements +AWHSTier4Generic65,Any 65-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements +AWHSTier4Generic80,Any 80-gal tank meeting Advanced Water Heating Specification Tier-4 minimum requirements +BradfordWhiteAeroThermRE2H50,Bradford White 50-gal AeroTherm2023 +BradfordWhiteAeroThermRE2H65,Bradford White 65-gal AeroTherm2023 +BradfordWhiteAeroThermRE2H80,Bradford White 80-gal AeroTherm2023 +LG_APHWC50,LG 50-gal integrated HPWH +LG_APHWC80,LG 580-gal integrated HPWH", True) }} {{ From 62814f2fc93845c9f4a9f514283a597d5ab68d3e Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 6 May 2025 11:41:51 -0600 Subject: [PATCH 045/117] Use csv_table instead of importing from a file. --- doc/src/docs/input-data/index.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/src/docs/input-data/index.md b/doc/src/docs/input-data/index.md index 09bbd272e..6febb3f6f 100644 --- a/doc/src/docs/input-data/index.md +++ b/doc/src/docs/input-data/index.md @@ -32,5 +32,10 @@ Each member's description continues with a table of the form: where the column headers have the following meaning: -<%= csv_table_from_file("input-data--member-table-definition.csv", row_header: false) %> +{{ csv_table("**Units**,units of measure (lb., ft, Btu, etc.) where applicable +**Legal Range**,limits of valid range for numeric inputs; valid choices for *choice* members, etc. +**Default**,value assumed if member not given; applicable only if not required +**Required**,YES if you must give this member +**Variability**,how often the given expression can change: hourly, daily, etc. See sections on [expressions][expressions-overview], [statements][member-statements], and [variation frequencies][variation-frequencies-revisited]") +}} From 4457c63bc196ef9e43d68dcfb7147b03fe15cfab Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 6 May 2025 11:46:58 -0600 Subject: [PATCH 046/117] Update bold headers to use actual md heading notation. Find: \n**(\w+)**\n Replace: \n### $1\n --- doc/src/docs/input-data/afmeter.md | 4 ++-- doc/src/docs/input-data/airhandler.md | 4 ++-- doc/src/docs/input-data/battery.md | 4 ++-- doc/src/docs/input-data/boiler.md | 4 ++-- doc/src/docs/input-data/chiller.md | 4 ++-- doc/src/docs/input-data/construction.md | 4 ++-- doc/src/docs/input-data/coolplant.md | 4 ++-- doc/src/docs/input-data/descond.md | 4 ++-- doc/src/docs/input-data/dhwdayuse.md | 4 ++-- doc/src/docs/input-data/dhwheatrec.md | 4 ++-- doc/src/docs/input-data/dhwloop.md | 4 ++-- doc/src/docs/input-data/dhwloopbranch.md | 4 ++-- doc/src/docs/input-data/dhwlooppump.md | 4 ++-- doc/src/docs/input-data/dhwloopseg.md | 4 ++-- doc/src/docs/input-data/dhwmeter.md | 4 ++-- doc/src/docs/input-data/dhwpump.md | 4 ++-- doc/src/docs/input-data/dhwsolarcollector.md | 4 ++-- doc/src/docs/input-data/dhwsolarsys.md | 4 ++-- doc/src/docs/input-data/dhwsys.md | 4 ++-- doc/src/docs/input-data/dhwtank.md | 4 ++-- doc/src/docs/input-data/dhwuse.md | 4 ++-- doc/src/docs/input-data/doas.md | 4 ++-- doc/src/docs/input-data/door.md | 4 ++-- doc/src/docs/input-data/ductseg.md | 4 ++-- doc/src/docs/input-data/export.md | 4 ++-- doc/src/docs/input-data/exportcol.md | 4 ++-- doc/src/docs/input-data/exportfile.md | 4 ++-- doc/src/docs/input-data/fndblock.md | 2 +- doc/src/docs/input-data/foundation.md | 4 ++-- doc/src/docs/input-data/gain.md | 4 ++-- doc/src/docs/input-data/glazetype.md | 4 ++-- doc/src/docs/input-data/heatplant.md | 4 ++-- doc/src/docs/input-data/holiday.md | 4 ++-- doc/src/docs/input-data/importfile.md | 4 ++-- doc/src/docs/input-data/izxfer.md | 4 ++-- doc/src/docs/input-data/layer.md | 4 ++-- doc/src/docs/input-data/loadmeter.md | 4 ++-- doc/src/docs/input-data/material.md | 4 ++-- doc/src/docs/input-data/meter.md | 4 ++-- doc/src/docs/input-data/performancemap.md | 10 +++++----- doc/src/docs/input-data/perimeter.md | 4 ++-- doc/src/docs/input-data/pvarray.md | 4 ++-- doc/src/docs/input-data/report.md | 4 ++-- doc/src/docs/input-data/reportcol.md | 4 ++-- doc/src/docs/input-data/reportfile.md | 4 ++-- doc/src/docs/input-data/rsys.md | 4 ++-- doc/src/docs/input-data/sgdist.md | 4 ++-- doc/src/docs/input-data/shade.md | 4 ++-- doc/src/docs/input-data/shadex.md | 4 ++-- doc/src/docs/input-data/surface.md | 4 ++-- doc/src/docs/input-data/terminal.md | 4 ++-- doc/src/docs/input-data/top-members.md | 2 +- doc/src/docs/input-data/towerplant.md | 4 ++-- doc/src/docs/input-data/window.md | 4 ++-- doc/src/docs/input-data/zone.md | 4 ++-- doc/src/extra/dhwsolartank.md | 2 +- doc/src/extra/inverse.md | 2 +- doc/src/shared/dhwheater-doc.md | 2 +- 58 files changed, 114 insertions(+), 114 deletions(-) diff --git a/doc/src/docs/input-data/afmeter.md b/doc/src/docs/input-data/afmeter.md index 7ff5377cd..07b8c5701 100644 --- a/doc/src/docs/input-data/afmeter.md +++ b/doc/src/docs/input-data/afmeter.md @@ -11,7 +11,7 @@ Note that *only* AirNet flows are recorded. AFMETER results can be REPORTed using rpType=AFMTR (or EXPORTed using exType=AFMTR). See [Air Flow Meter Report][air-flow-meter-report]. -**afMtrName** +### afMtrName Name of meter: required for assigning air flows to the AFMETER. @@ -25,7 +25,7 @@ Name of meter: required for assigning air flows to the AFMETER. }) }} -**endAFMeter** +### endAFMeter Indicates the end of the meter definition. Alternatively, the end of the meter definition can be indicated by the declaration of another object or by END. diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index d7141c59d..55ba5a902 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -14,7 +14,7 @@ AIRHANDLER is designed primarily to model a central system that supplies hot or 3. The AIRHANDLER can supply hot air, cold air, or shut off according to the requirements of a single zone. This variation is invoked by giving _ahTsSp_ = ZN or ZN2, both described further below. -**ahName** +### ahName Name of air handler: give after the word AIRHANDLER. Required for reference in TERMINALs. @@ -2122,7 +2122,7 @@ METER to record crankcase heater energy use, category "Aux"; not recorded if not }) }} -**endAirHandler** +### endAirHandler Indicates the end of the air handler definition. Alternatively, the end of the air handler definition can be indicated by the declaration of another object. diff --git a/doc/src/docs/input-data/battery.md b/doc/src/docs/input-data/battery.md index c5db4bdf4..d7e1df2eb 100644 --- a/doc/src/docs/input-data/battery.md +++ b/doc/src/docs/input-data/battery.md @@ -4,7 +4,7 @@ BATTERY describes input data for a model of an energy-storage system which is no The modeler can set limits and constraints on capacities and flows and the associated efficiencies for this model. -**btName** +### btName Name of the battery system. Given after the word BATTERY. @@ -185,7 +185,7 @@ The sign conventions here are tricky. min(@BATTERY[ 1].loadSeen, 0) produces a Former yes/no choice that currently has no effect. Deprecated, will be removed in a future version. -**endBATTERY** +### endBATTERY Optionally indicates the end of the BATTERY definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/boiler.md b/doc/src/docs/input-data/boiler.md index a70d2b3e7..74a3d345d 100644 --- a/doc/src/docs/input-data/boiler.md +++ b/doc/src/docs/input-data/boiler.md @@ -4,7 +4,7 @@ BOILERs are subObjects of HEATPLANTs (preceding Section 5.20). BOILERs supply he Each boiler has a pump. The pump operates whenever the boiler is in use; the pump generates heat in the water, which is added to the boiler's output. The pump heat is independent of load -- the model assumes a bypass valve keeps the water flow constant when the loads are using less than full flow -- except that the heat is assumed never to exceed the load. -**boilerName** +### boilerName Name of BOILER object, given immediately after the word BOILER. The name is used to refer to the boiler in heat plant stage commands. @@ -293,7 +293,7 @@ MTR for "auxOnAtall" }) }} -**endBoiler** +### endBoiler Optionally indicates the end of the boiler definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/chiller.md b/doc/src/docs/input-data/chiller.md index 86804cc84..db4ff47aa 100644 --- a/doc/src/docs/input-data/chiller.md +++ b/doc/src/docs/input-data/chiller.md @@ -4,7 +4,7 @@ CHILLERs are subobjects of COOLPLANTs (Section 5.21). CHILLERs supply coldness, Each chiller has primary and secondary pumps that operate when the chiller is on. The pumps add heat to the primary and secondary loop water respectively; this heat is considered in the modeling of the loop's water temperature. -**chillerName** +### chillerName Name of CHILLER object, given immediately after the word CHILLER. This name is used to refer to the chiller in *cpStage* commands. @@ -427,7 +427,7 @@ The following four allow specification of meters to record chiller auxiliary ene }) }} -**endChiller** +### endChiller Optionally indicates the end of the CHILLER definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/construction.md b/doc/src/docs/input-data/construction.md index e1a2e2ed8..f54fe8989 100644 --- a/doc/src/docs/input-data/construction.md +++ b/doc/src/docs/input-data/construction.md @@ -2,7 +2,7 @@ CONSTRUCTION constructs an object of class CONSTRUCTION that represents a light weight or massive ceiling, wall, floor, or mass assembly (mass assemblies cannot, obviously, be lightweight). Once defined, CONSTRUCTIONs can be referenced from SURFACEs (below). A defined CONSTRUCTION need not be referenced. Each CONSTRUCTION is optionally followed by LAYERs, which define the constituent LAYERs of the construction. -**conName** +### conName Name of construction. Required for reference from SURFACE and DOOR objects, below. @@ -30,7 +30,7 @@ U-value for the construction (NOT including surface (air film) conductances; see }) }} -**endConstruction** +### endConstruction Optional to indicates the end of the CONSTRUCTION. Alternatively, the end of the CONSTRUCTION definition can be indicated by "END" or by beginning another object If END or endConstruction is used, it should follow the construction's LAYER subobjects, if any. diff --git a/doc/src/docs/input-data/coolplant.md b/doc/src/docs/input-data/coolplant.md index 7a1787664..a00f6357d 100644 --- a/doc/src/docs/input-data/coolplant.md +++ b/doc/src/docs/input-data/coolplant.md @@ -10,7 +10,7 @@ The CHILLERs in the COOLPLANT can be grouped into *STAGES* of increasing capacit For each COOLPLANT, primary loop piping loss is modeled, as a heat gain equal to a constant fraction of the CHILLER capacity of the COOLPLANT's most powerful stage. This heat gain is added to the load whenever the plant is operating; as modeled, the heat gain is independent of load, weather, which stage is operating, or any other variables. No secondary loop piping loss is modeled. -**coolplantName** +### coolplantName Name of COOLPLANT object, given immediately after the word COOLPLANT. This name is used to refer to the coolPlant in *ahhcCoolplant* commands. @@ -110,7 +110,7 @@ A comma must be entered between chiller names and after the word ALL\_BUT. }) }} -**endCoolplant** +### endCoolplant Optionally indicates the end of the COOLPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/descond.md b/doc/src/docs/input-data/descond.md index 215a86071..c0f8e80ef 100644 --- a/doc/src/docs/input-data/descond.md +++ b/doc/src/docs/input-data/descond.md @@ -2,7 +2,7 @@ Specifies conditions for a cooling design day. When referenced in TOP coolDsCond (see [TOP Autosizing][top-autosizing]), DESCOND members are used to generate a 24 hour design day used during cooling autosizing. Note that coolDsCond can reference more than one DESCOND, allowing multiple design conditions to be used for autosizing. For example, both summer and fall days could be specified to ensure a range of sun angles are considered. Any DESCONDs that are not referenced in coolDsCond have no effect. -**desCondName** +### desCondName Object name, given after “DESCOND”. Required for referencing from Top coolDsCond. @@ -140,7 +140,7 @@ Solar noon direct beam and diffuse horizontal irradiance. Cannot be given if dcT }) }} -**endDesCond** +### endDesCond Optionally indicates the end of the descond definition. diff --git a/doc/src/docs/input-data/dhwdayuse.md b/doc/src/docs/input-data/dhwdayuse.md index 38c01f8e2..4da532d3c 100644 --- a/doc/src/docs/input-data/dhwdayuse.md +++ b/doc/src/docs/input-data/dhwdayuse.md @@ -48,7 +48,7 @@ Some DHWUSE configurations involve mixing to specified wuTemp. Hot and cold wat When more than one DHWSYS references the same DHWDAYUSE, DHWUSEs are allocated to DHWSYSs in wuEventID rotation. This procedure divides the water heating load approximately equally while retaining the peak demand of individual events. When detailed information is available about which loads are served by specific systems, separate DHWDAYUSEs should be given. -**dhwDayUseName** +### dhwDayUseName Object name, given after “DHWDAYUSE”. Required for referencing from DHWSYS. @@ -76,7 +76,7 @@ Scale factor applied to all draws in this DHWDAYUSE. }) }} -**endDHWDAYUSE** +### endDHWDAYUSE Indicates the end of the DHWDAYUSE definition. endDHWDAYUSE should follow all child DHWUSEs. Alternatively, the end of the meter definition can be indicated by the declaration of another object or by END. diff --git a/doc/src/docs/input-data/dhwheatrec.md b/doc/src/docs/input-data/dhwheatrec.md index 5d8df65c6..6dd218c3d 100644 --- a/doc/src/docs/input-data/dhwheatrec.md +++ b/doc/src/docs/input-data/dhwheatrec.md @@ -2,7 +2,7 @@ DHWHEATREC constructs an object representing one or more heat recovery devices in a DHWSYS. Drain water heat recovered by the device increases parent DHWSYS wsInlet temperature and/or fixture cold water feed temperature. This reduces water heating energy consumption. -**wrName** +### wrName Optional name of device; give after the word “DHWHEATREC” if desired. @@ -143,7 +143,7 @@ Drain-side inlet water temperature during warmup. During the warmup portion of }) }} -**endDHWHEATREC** +### endDHWHEATREC Optionally indicates the end of the DHWHEATREC definition. diff --git a/doc/src/docs/input-data/dhwloop.md b/doc/src/docs/input-data/dhwloop.md index 06ccf2cc0..eed95ef02 100644 --- a/doc/src/docs/input-data/dhwloop.md +++ b/doc/src/docs/input-data/dhwloop.md @@ -2,7 +2,7 @@ DHWLOOP constructs one or more objects representing a domestic hot water circulation loop. The actual pipe runs in the DHWLOOP are specified by any number of DHWLOOPSEGs (see below). Circulation pumps are specified by DHWLOOPPUMPs (also below). -**wlName** +### wlName Optional name of loop; give after the word “DHWLOOP” if desired. @@ -128,7 +128,7 @@ Name of METER object, if any, to which DHWLOOP electrical energy use is recorded }) }} -**endDHWLoop** +### endDHWLoop Optionally indicates the end of the DHWLOOP definition. diff --git a/doc/src/docs/input-data/dhwloopbranch.md b/doc/src/docs/input-data/dhwloopbranch.md index c527d9a11..f74a5658d 100644 --- a/doc/src/docs/input-data/dhwloopbranch.md +++ b/doc/src/docs/input-data/dhwloopbranch.md @@ -2,7 +2,7 @@ DHWLOOPBRANCH constructs one or more objects representing a branch pipe from the preceding DHWLOOPSEG. A DHWLOOPSEG can have any number of DHWLOOPBRANCHs to represent pipe runs with differing sizes, insulation, or surrounding conditions. -**wbName** +### wbName Optional name of segment; give after the word “DHWLOOPBRANCH” if desired. @@ -207,7 +207,7 @@ Number of times during the hour when the branch volume is discarded. }) }} -**endDHWLOOPBRANCH** +### endDHWLOOPBRANCH Optionally indicates the end of the DHWLOOPBRANCH definition. diff --git a/doc/src/docs/input-data/dhwlooppump.md b/doc/src/docs/input-data/dhwlooppump.md index 46d5572d4..29d7a6c00 100644 --- a/doc/src/docs/input-data/dhwlooppump.md +++ b/doc/src/docs/input-data/dhwlooppump.md @@ -2,7 +2,7 @@ DHWLOOPPUMP constructs an object representing a pump serving part a DHWLOOP. The model is identical to DHWPUMP *except* that that the electricity use calculation reflects wlRunF of the parent DHWLOOP. -**wlpName** +### wlpName Optional name of pump; give after the word “DHWLOOPPUMP” if desired. @@ -72,7 +72,7 @@ Name of METER object, if any, to which DHWLOOPPUMP electrical energy use is reco }) }} -**endDHWLOOPPUMP** +### endDHWLOOPPUMP Optionally indicates the end of the DHWPUMP definition. diff --git a/doc/src/docs/input-data/dhwloopseg.md b/doc/src/docs/input-data/dhwloopseg.md index 9d338964c..72e16b9f8 100644 --- a/doc/src/docs/input-data/dhwloopseg.md +++ b/doc/src/docs/input-data/dhwloopseg.md @@ -2,7 +2,7 @@ DHWLOOPSEG constructs one or more objects representing a segment of the preceeding DHWLOOP. A DHWLOOP can have any number of DHWLOOPSEGs to represent the segments of the loop with possibly differing sizes, insulation, or surrounding conditions. -**wgName** +### wgName Optional name of segment; give after the word “DHWLOOPSEG” if desired. @@ -133,7 +133,7 @@ Fraction of hour when no draw occurs. }) }} -**endDHWLoopSeg** +### endDHWLoopSeg Optionally indicates the end of the DHWLOOPSEG definition. diff --git a/doc/src/docs/input-data/dhwmeter.md b/doc/src/docs/input-data/dhwmeter.md index 734ad5f2b..e0e4cba52 100644 --- a/doc/src/docs/input-data/dhwmeter.md +++ b/doc/src/docs/input-data/dhwmeter.md @@ -15,7 +15,7 @@ DHWMETERs account for water use in the following pre-defined end uses. The abbr [DHWSYS][dhwsys] items wsWHhwMtr and wsFXhwMtr specify the DHWMETER(s) to which water consumption is accumulated. -**dhwMtrName** +### dhwMtrName Name of meter: required for assigning water uses to the DHWMETER. @@ -29,7 +29,7 @@ Name of meter: required for assigning water uses to the DHWMETER. }) }} -**endDhwMeter** +### endDhwMeter **Related Probes:** diff --git a/doc/src/docs/input-data/dhwpump.md b/doc/src/docs/input-data/dhwpump.md index c6ece9357..7d988eb28 100644 --- a/doc/src/docs/input-data/dhwpump.md +++ b/doc/src/docs/input-data/dhwpump.md @@ -2,7 +2,7 @@ DHWPUMP constructs an object representing a domestic hot water circulation pump (or more than one if identical). -**wpName** +### wpName Optional name of pump; give after the word “DHWPUMP” if desired. @@ -58,7 +58,7 @@ Name of METER object, if any, to which DHWPUMP electrical energy use is recorded }) }} -**endDHWPump** +### endDHWPump Optionally indicates the end of the DHWPUMP definition. diff --git a/doc/src/docs/input-data/dhwsolarcollector.md b/doc/src/docs/input-data/dhwsolarcollector.md index 15bb852cf..5b167d1df 100644 --- a/doc/src/docs/input-data/dhwsolarcollector.md +++ b/doc/src/docs/input-data/dhwsolarcollector.md @@ -18,7 +18,7 @@ Collector area. }) }} -**scMult** +### scMult Number of identical collectors, default 1 @@ -254,7 +254,7 @@ Temperature difference between the tank and collector outlet where pump turns of }) }} -**endDHWSOLARCOLLECTOR** +### endDHWSOLARCOLLECTOR Optionally indicates the end of the DHWSOLARCOLLECTOR definition. diff --git a/doc/src/docs/input-data/dhwsolarsys.md b/doc/src/docs/input-data/dhwsolarsys.md index 0eac29752..f4e76acd9 100644 --- a/doc/src/docs/input-data/dhwsolarsys.md +++ b/doc/src/docs/input-data/dhwsolarsys.md @@ -52,7 +52,7 @@ Density for the collector fluid. }) }} -**swEndUse** +### swEndUse End use of pump energy; defaults to "DHW". @@ -164,7 +164,7 @@ Surrounding temperature. }) }} -**endDHWSOLARSYS** +### endDHWSOLARSYS Optionally indicates the end of the DHWSOLARSYS definition. diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index 5f9360ced..b0e385918 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -17,7 +17,7 @@ The parent-child structure of DHWSYS components is determined by input order. Fo Minimal modeling is included for physically realistic controls. For example, if several DHWHEATERs are included in a DHWSYS, an equal fraction of the required hot water is assumed to be produced by each heater, even if they are different types or sizes. Thus a DHWSYS is in some ways a collection of components as opposed to an explicitly connected system. This approach avoids requiring detailed input that would impose impractical user burden, especially in compliance applications. -**dhwsysName** +### dhwsysName Optional name of system; give after the word “DHWSYS” if desired. @@ -941,7 +941,7 @@ Name of DHWMETER object, if any, to which mixed hot water use (at fixture) quant }) }} -**endDHWSys** +### endDHWSys Optionally indicates the end of the DHWSYS definition. diff --git a/doc/src/docs/input-data/dhwtank.md b/doc/src/docs/input-data/dhwtank.md index 5e4b542fd..50436a0ce 100644 --- a/doc/src/docs/input-data/dhwtank.md +++ b/doc/src/docs/input-data/dhwtank.md @@ -2,7 +2,7 @@ DHWTANK constructs an object representing one or more unfired water storage tanks in a DHWSYS. DHWTANK heat losses contribute to the water heating load. -**wtName** +### wtName Optional name of tank; give after the word “DHWTANK” if desired. @@ -132,7 +132,7 @@ Additional tank heat loss. To duplicate CEC 2016 procedures, this value should b }) }} -**endDHWTank** +### endDHWTank Optionally indicates the end of the DHWTANK definition. diff --git a/doc/src/docs/input-data/dhwuse.md b/doc/src/docs/input-data/dhwuse.md index 61f072451..fb6ae3a3d 100644 --- a/doc/src/docs/input-data/dhwuse.md +++ b/doc/src/docs/input-data/dhwuse.md @@ -2,7 +2,7 @@ Defines a single hot water draw as part of a DHWDAYUSE. See discussion and examples under DHWDAYUSE. As noted there, most DHWUSE values have hourly variability, allowing flexible representation. -**wuName** +### wuName Optional name; give after the word “DHWUSE” if desired. @@ -137,7 +137,7 @@ User-defined identifier that associates multiple DHWUSEs with a single event or }) }} -**endDHWUSE** +### endDHWUSE Optionally indicates the end of the DHWUSE definition. diff --git a/doc/src/docs/input-data/doas.md b/doc/src/docs/input-data/doas.md index a02f65f5b..a186aceb2 100644 --- a/doc/src/docs/input-data/doas.md +++ b/doc/src/docs/input-data/doas.md @@ -3,7 +3,7 @@ DOAS (Dedicated Outdoor Air System) provides centralized supply and/or exhuast ventilation air to IZXFER objects with the **izNVType** = AIRNETDOAS. The supply air may be preconditioned using heat recovery and/or tempering coils. -**oaName** +### oaName Name of DOAS. @@ -589,7 +589,7 @@ Name of meter, if any, to record energy used by auxiliary components of the heat }) }} -**endDOAS** +### endDOAS Indicates the end of the DOAS definition. Alternatively, the end of the DOAS definition can be indicated by the declaration of another object or by "END". diff --git a/doc/src/docs/input-data/door.md b/doc/src/docs/input-data/door.md index 67fa42894..c733bff4e 100644 --- a/doc/src/docs/input-data/door.md +++ b/doc/src/docs/input-data/door.md @@ -2,7 +2,7 @@ DOOR constructs a subobject belonging to the current SURFACE. The azimuth, tilt, ground reflectivity and exterior conditions associated with the door are the same as those of the owning surface, although the exterior surface conductance and the exterior absorptivity can be altered. -**drName** +### drName Name of door. @@ -286,7 +286,7 @@ Interior convection coefficient adjustment factor. When drInHcModel=INPUT, hc=d }) }} -**endDoor** +### endDoor Indicates the end of the door definition. Alternatively, the end of the door definition can be indicated by the declaration of another object or by END. diff --git a/doc/src/docs/input-data/ductseg.md b/doc/src/docs/input-data/ductseg.md index 938ea3c9c..e42cd7a06 100644 --- a/doc/src/docs/input-data/ductseg.md +++ b/doc/src/docs/input-data/ductseg.md @@ -2,7 +2,7 @@ DUCTSEG defines a duct segment. Each RSYS has at most one return duct segment and at most one supply duct segment. That is, DUCTSEG input may be completely omitted to eliminate duct losses. -**dsName** +### dsName Optional name of duct segment; give after the word “DUCTSEG” if desired. @@ -260,7 +260,7 @@ Outside (exposed) surface convection coefficient. }) }} -**endDuctSeg** +### endDuctSeg Optionally indicates the end of the DUCTSEG definition. diff --git a/doc/src/docs/input-data/export.md b/doc/src/docs/input-data/export.md index 7799b1009..17f85eeaa 100644 --- a/doc/src/docs/input-data/export.md +++ b/doc/src/docs/input-data/export.md @@ -10,7 +10,7 @@ Depending on your application, if you specify multiple exports, you may need to Input for EXPORTs is similar to input for REPORTs; refer to the REPORT description in Section 5.25 for further discussion of the members shown here. -**exName** +### exName Name of export. Give after the word EXPORT. @@ -258,7 +258,7 @@ Use NO to suppress the blank line otherwise output as an export "footer". (Expor }) }} -**endExport** +### endExport Optionally indicates the end of the export definition. Alternatively, the end of the export definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/exportcol.md b/doc/src/docs/input-data/exportcol.md index a8698c780..b16e29f07 100644 --- a/doc/src/docs/input-data/exportcol.md +++ b/doc/src/docs/input-data/exportcol.md @@ -6,7 +6,7 @@ Use as many EXPORTCOLs as there are values to be shown in each row of the user-d EXPORTCOL members are similar to the corresponding REPORTCOL members. See Section 5.265.1.5 for further discussion. -**colName** +### colName Name of EXPORTCOL. @@ -99,7 +99,7 @@ Specifies positioning of data within column: Right, Right justified") }} -**endExportCol** +### endExportCol Optionally indicates the end of the EXPORTCOL. Alternatively, the end of the definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/exportfile.md b/doc/src/docs/input-data/exportfile.md index 40cc0e967..ae52bb4ea 100644 --- a/doc/src/docs/input-data/exportfile.md +++ b/doc/src/docs/input-data/exportfile.md @@ -6,7 +6,7 @@ EXPORTs contain the same information as reports, but formatted for reading by ot Input for EXPORTFILEs and EXPORTs is similar to that for REPORTFILEs and REPORTs, except that there is no page formatting. Refer to their preceding descriptions (Sections 5.24 and 5.25) for more additional discussion. -**xfName** +### xfName Name of EXPORTFILE object. @@ -56,7 +56,7 @@ If the specified file does not exist, it is created and *xfFileStat* has no effe }) }} -**endExportFile** +### endExportFile Optionally indicates the end of the export file definition. Alternatively, the end of the Export file definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/fndblock.md b/doc/src/docs/input-data/fndblock.md index 71f50b8b8..76ef2cc9b 100644 --- a/doc/src/docs/input-data/fndblock.md +++ b/doc/src/docs/input-data/fndblock.md @@ -167,7 +167,7 @@ The Z position of the second corner of the block relative to *fbZ2Ref*. }) }} -**endFndBlock** +### endFndBlock Indicates the end of the foundation block definition. Alternatively, the end of the foundation block definition can be indicated by the declaration of another object or by END. diff --git a/doc/src/docs/input-data/foundation.md b/doc/src/docs/input-data/foundation.md index 8df0bfabc..3aa9959b8 100644 --- a/doc/src/docs/input-data/foundation.md +++ b/doc/src/docs/input-data/foundation.md @@ -40,7 +40,7 @@ The following data members describe the dimensions and properties of the foundat Other components of the foundation design (e.g., interior/exterior insulation) as well as other variations in thermal properties within the ground are defined using FNDBLOCK (foundation block) objects. Any number of FNDBLOCKs can appear after the definition of a FOUNDATION to be properly associated. -**fdName** +### fdName Name of foundation; give after the word FOUNDATION. Required for reference from SURFACE objects. @@ -95,7 +95,7 @@ Name of CONSTRUCTION of the footing wall. Only required **IF** it is a slab foun }) }} -**endFoundation** +### endFoundation Indicates the end of the foundation definition. Alternatively, the end of the foundation definition can be indicated by the declaration of another object or by END. diff --git a/doc/src/docs/input-data/gain.md b/doc/src/docs/input-data/gain.md index 4578b2cae..bf5df76ad 100644 --- a/doc/src/docs/input-data/gain.md +++ b/doc/src/docs/input-data/gain.md @@ -15,7 +15,7 @@ In the CNE zone mode, the radiant internal gain is distributed to the surfaces i Radiant internal gains are included in the IgnS (Sensible Internal Gain) column in the zone energy balance reports. (They could easily be shown in a separate IgnR column if desired.) Any energy transfer shows two places in the ZEB report, with opposite signs, so that the result is zero -- otherwise it wouldn't be an energy balance. The rest of the reporting story for radiant internal gains turns out to be complex. The specified value of the radiant gain (gnPower \* gnFrZn \* gnFrRad) shows in the IgnS column. To the extent that the gain heats the zone, it also shows negatively in the Masses column, because the zone CAir is lumped with the other masses. To the extent that the gain heats massive surfaces, it also shows negatively in the masses column. To the extent that the gain conducts through windows and quick-model surfaces, it shows negatively in the Conduction column. If the gain conducts through a quick-model surface to another zone, it shows negatively in the Izone (Interzone) column, positively in the Izone column of the receiving zone, and negatively in the receiving zone's Masses or Cond column. -**gnName** +### gnName Name of gain; follows the word GAIN if given. @@ -237,7 +237,7 @@ Name of the DHWSYS end use consumption that modulates gnPower. See DHWMETER for }) }} -**endGain** +### endGain Optional to indicate the end of the GAIN definition. Alternatively, the end of the gain definition can be indicated by END or by the declaration of another object. diff --git a/doc/src/docs/input-data/glazetype.md b/doc/src/docs/input-data/glazetype.md index 5aaa30490..2e1303226 100644 --- a/doc/src/docs/input-data/glazetype.md +++ b/doc/src/docs/input-data/glazetype.md @@ -2,7 +2,7 @@ GLAZETYPE constructs an object of class GLAZETYPE that represents a glazing type for use in WINDOWs. -**gtName** +### gtName Name of glazetype. Required for reference from WINDOW objects, below. @@ -226,7 +226,7 @@ Glazing dirt loss factor. }) }} -**endGlazeType** +### endGlazeType Optional to indicates the end of the Glazetype. Alternatively, the end of the GLAZETYPE definition can be indicated by "END" or by beginning another object diff --git a/doc/src/docs/input-data/heatplant.md b/doc/src/docs/input-data/heatplant.md index 36cd70ead..715248cc0 100644 --- a/doc/src/docs/input-data/heatplant.md +++ b/doc/src/docs/input-data/heatplant.md @@ -8,7 +8,7 @@ The BOILERs in the HEATPLANT can be grouped into *STAGES* of increasing capacity For each HEATPLANT, piping loss is modeled, as a constant fraction of the BOILER capacity of the heatPlant's most powerful stage. This heat loss is added to the load whenever the plant is operating; as modeled, the heat loss is independent of load, weather, or any other variables. -**heatplantName** +### heatplantName Name of HEATPLANT object, given immediately after the word HEATPLANT. This name is used to refer to the heatPlant in *tuhcHeatplant* and *ahhcHeatplant* commands. @@ -78,7 +78,7 @@ A comma must be entered between boiler names and after the word ALL\_BUT. }) }} -**endHeatplant** +### endHeatplant Optionally indicates the end of the HEATPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/holiday.md b/doc/src/docs/input-data/holiday.md index 18ae8f0bb..5bfad5426 100644 --- a/doc/src/docs/input-data/holiday.md +++ b/doc/src/docs/input-data/holiday.md @@ -7,7 +7,7 @@ Examples and the list of default holidays are given after the member description -**hdName** +### hdName Name of holiday: must follow the word HOLIDAY. @@ -109,7 +109,7 @@ Day of the week that the holiday is observed. }) }} -**endHoliday** +### endHoliday Indicates the end of the holiday definition. Alternatively, the end of the holiday definition can be indicated by "END" or simply by beginning another object. diff --git a/doc/src/docs/input-data/importfile.md b/doc/src/docs/input-data/importfile.md index 219888eaf..17afc6cbd 100644 --- a/doc/src/docs/input-data/importfile.md +++ b/doc/src/docs/input-data/importfile.md @@ -52,7 +52,7 @@ Notes -**imName** +### imName Name of IMPORTFILE object (for reference from Import()). @@ -137,7 +137,7 @@ Adds the possibility to output the file as a binary option. }) }} -**endImportFile** +### endImportFile Optionally indicates the end of the import file definition. Alternatively, the end of the import file definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/izxfer.md b/doc/src/docs/input-data/izxfer.md index bac2dbf68..57f80a178 100644 --- a/doc/src/docs/input-data/izxfer.md +++ b/doc/src/docs/input-data/izxfer.md @@ -7,7 +7,7 @@ The AIRNET types are used in a multi-cell pressure balancing model that finds zo Note that fan-driven types assume pressure-independent flow. That is, the specified flow is included in the zone pressure balance but the modeled fan flow does not change with zone pressure. The assumption is that in realistic configurations, zone pressure will generally be close to ambient pressure. Unbalanced fan ventilation in a zone without relief area will result in runtime termination due to excessively high or low pressure. -**izName** +### izName Optional name of interzone transfer; give after the word "IZXFER" if desired. @@ -592,7 +592,7 @@ End use to which fan energy is recorded (in METER specified by izFanMtr). See M }) }} -**endIZXFER** +### endIZXFER Optionally indicates the end of the interzone transfer definition. diff --git a/doc/src/docs/input-data/layer.md b/doc/src/docs/input-data/layer.md index abaac896e..6e60abd0b 100644 --- a/doc/src/docs/input-data/layer.md +++ b/doc/src/docs/input-data/layer.md @@ -6,7 +6,7 @@ The layers should be specified in inside to outside order. -**shName** +### shName Name of shade; follows the word "SHADE" if given. @@ -201,7 +201,7 @@ Vertical distance from bottom of window to bottom of right fin. }) }} -**endShade** +### endShade Optional to indicate the end of the SHADE definition. Alternatively, the end of the shade definition can be indicated by END or the declaration of another object. diff --git a/doc/src/docs/input-data/shadex.md b/doc/src/docs/input-data/shadex.md index 6e24042bc..669069bc0 100644 --- a/doc/src/docs/input-data/shadex.md +++ b/doc/src/docs/input-data/shadex.md @@ -2,7 +2,7 @@ SHADEX describes an object that shades other building surfaces using an advanced shading model. Advanced shading calculations are provided only for [PVARRAYs][pvarray]. Advanced shading must be enabled via [Top exShadeModel][top-model-control-items]. -**sxName** +### sxName Name of photovoltaic array. Give after the word SHADEX. @@ -52,7 +52,7 @@ For example, to specify a rectangular shade "tree" that is 10 x 40 ft, facing so }) }} -**endSHADEX** +### endSHADEX Optionally indicates the end of the SHADEX definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index 0ff9f10a2..d0d9b116b 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -2,7 +2,7 @@ Surface constructs a ZONE subobject of class SURFACE that represents a surrounding or interior surface of the zone. Internally, SURFACE generates a QUICK surface (U-value only), a DELAYED (massive) surface (using the finite-difference mass model), interzone QUICK surface, or interzone DELAYED surface, as appropriate for the specified construction and exterior conditions. -**sfName** +### sfName Name of surface; give after the word SURFACE. @@ -528,7 +528,7 @@ Resistance overall construction resistance. TODO: full documentation. }) }} -**endSURFACE** +### endSURFACE Optional to indicates the end of the surface definition. Alternatively, the end of the surface definition can be indicated by END, or by beginning another SURFACE or other object definition. If used, should follow the definitions of the SURFACE's subobjects -- DOORs, WINDOWs, SHADEs, SGDISTs, etc. diff --git a/doc/src/docs/input-data/terminal.md b/doc/src/docs/input-data/terminal.md index abff30a58..cdc7195a0 100644 --- a/doc/src/docs/input-data/terminal.md +++ b/doc/src/docs/input-data/terminal.md @@ -10,7 +10,7 @@ Hourly variable expressions may be used as desired to schedule setpoints and flo ![Insert Figure Title](../assets/images/image1.png) -**tuName** +### tuName Optional name of terminal; follows the word "TERMINAL" if given. @@ -545,7 +545,7 @@ Name of meter, if any, which is to record energy used by this terminal fan. The }) }} -**endTerminal** +### endTerminal Optional to indicates the end of terminal definition. Alternatively, the end of the door definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/top-members.md b/doc/src/docs/input-data/top-members.md index 0c15e8d2e..31dfde3b1 100644 --- a/doc/src/docs/input-data/top-members.md +++ b/doc/src/docs/input-data/top-members.md @@ -723,7 +723,7 @@ Long-wave emittance of the exterior grade surface used in two-dimensional finite -**grndRf** +### grndRf Ground surface roughness. Used for convection and wind speed corrections in two-dimensional finite difference calculations for FOUNDATIONs. diff --git a/doc/src/docs/input-data/towerplant.md b/doc/src/docs/input-data/towerplant.md index 31f552377..766339baf 100644 --- a/doc/src/docs/input-data/towerplant.md +++ b/doc/src/docs/input-data/towerplant.md @@ -10,7 +10,7 @@ All the towers in a TOWERPLANT are identical, except that under LEAD staging, th There is no provision for scheduling a TOWERPLANT: it operates whenever the heat rejection pump in one or more of its associated CHILLERs or HPLOOP heat exchangers operates. However, the setpoint for the water leaving the TOWERPLANT is hourly schedulable. -**towerplantName** +### towerplantName Name of TOWERPLANT object, given immediately after the word TOWERPLANT to begin the object's input. The name is used to refer to the TOWERPLANT in COOLPLANTs and HPLOOPs. @@ -295,7 +295,7 @@ Temperature of makeup water from mains, used to replace water lost by blowdown, ----------- ----------------- ------------- -------------- ----------------- ^o^F *x* > 0 60 No constant -**endTowerplant** +### endTowerplant Optionally indicates the end of the TOWERPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. diff --git a/doc/src/docs/input-data/window.md b/doc/src/docs/input-data/window.md index 1fe375158..8ae2e8bce 100644 --- a/doc/src/docs/input-data/window.md +++ b/doc/src/docs/input-data/window.md @@ -4,7 +4,7 @@ WINDOW defines a subobject belonging to the current SURFACE that represents one Windows may optionally have operable interior shading that reduces the overall shading coefficient when closed. -**wnName** +### wnName Name of window: follows the word "WINDOW" if given. @@ -429,7 +429,7 @@ View factor from this window to ground for diffuse radiation. For the shading ef }) }} -**endWINDOW** +### endWINDOW Optionally indicates the end of the window definition. Alternatively, the end of the window definition can be indicated by END or the declaration of another object. END or endWindow, if used, should follow any subobjects of the window (SHADEs and/or SGDISTs). diff --git a/doc/src/docs/input-data/zone.md b/doc/src/docs/input-data/zone.md index a60af911d..e6a61a842 100644 --- a/doc/src/docs/input-data/zone.md +++ b/doc/src/docs/input-data/zone.md @@ -4,7 +4,7 @@ ZONE constructs an object of class ZONE, which describes an area of the building ## ZONE General Members -**znName** +### znName Name of zone. Enter after the word ZONE; no "=" is used. @@ -589,7 +589,7 @@ Name of METER object, if any, by which fan's energy use is recorded (under end u }) }} -**endZone** +### endZone Indicates the end of the zone definition. Alternatively, the end of the zone definition can be indicated by the declaration of another object or by "END". If END or endZone is used, it should follow the definitions of the ZONE's subobjects such as GAINs, SURFACEs, TERMINALs, etc. diff --git a/doc/src/extra/dhwsolartank.md b/doc/src/extra/dhwsolartank.md index 0a7543905..c30f7e40a 100644 --- a/doc/src/extra/dhwsolartank.md +++ b/doc/src/extra/dhwsolartank.md @@ -6,6 +6,6 @@ Outlet of this tank is the inlet to all system tanks. Drain water heat recovery preheats water coming into this tank. -**stName** +### stName **endDHWSOLARTANK** \ No newline at end of file diff --git a/doc/src/extra/inverse.md b/doc/src/extra/inverse.md index 74082c801..f5319aa4c 100644 --- a/doc/src/extra/inverse.md +++ b/doc/src/extra/inverse.md @@ -74,7 +74,7 @@ Function inverter }) }} -**endInverse** +### endInverse Optionally indicates the end of the inverse definition. diff --git a/doc/src/shared/dhwheater-doc.md b/doc/src/shared/dhwheater-doc.md index c1db5839f..588d65459 100644 --- a/doc/src/shared/dhwheater-doc.md +++ b/doc/src/shared/dhwheater-doc.md @@ -691,7 +691,7 @@ whTankTInit is intended for use in empirical validation studies where the initia }) }} -**endDHWHEATER** +### endDHWHEATER Optionally indicates the end of the DHWHEATER definition. From 83a070e471a46b8431e13aa766684661f99af234 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 6 May 2025 11:47:45 -0600 Subject: [PATCH 047/117] Update bold headers to use actual md heading notation. Find: \n**(\w+)=(\w+)**\n Replace: \n### $1\n\nType: $2\n --- doc/src/docs/input-data/airhandler.md | 456 +++++++++++++++++++------- 1 file changed, 342 insertions(+), 114 deletions(-) diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index 55ba5a902..375768bec 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -28,7 +28,9 @@ Name of air handler: give after the word AIRHANDLER. Required for reference in T }) }} -**ahSched=_choice_** +### ahSched + +Type: _choice_ Air handler schedule; OFF or ON, hourly schedulable by using CSE expression. @@ -52,7 +54,9 @@ The following might be used to run an air handler between 8 AM and 5 PM: }) }} -**ahFxVfFan=_float_** +### ahFxVfFan + +Type: _float_ Fan flow rate multiplier for autosized fan(s). The default value (1.1) specifies 10% oversizing. @@ -120,7 +124,9 @@ Single zone constant volume, fan cycling system that heats or cools per zo extra para to permit page break after frame --> -**ahFanCycles=_choice_** +### ahFanCycles + +Type: _choice_ Determines whether the fan cycles with the zone thermostat. @@ -139,7 +145,9 @@ NO, Normal CSE behavior for simulating VAV systems with continuously running (or }) }} -**ahTsMn=_float_** +### ahTsMn + +Type: _float_ Minimum supply temperature. Also used as cooling supply temperature setpoint value under _ahTsSp_ = ZN. @@ -165,7 +173,9 @@ Minimum supply temperature. Also used as cooling supply temperature setpoint val }) }} -**ahTsMx=_float_** +### ahTsMx + +Type: _float_ Maximum supply temperature. Also used as heating supply temperature setpoint value under _ahTsSp_ = ZN. @@ -197,7 +207,9 @@ A comma must be entered between zone names and after the word ALL_BUT. }) }} -**ahTsDsC=_float_** +### ahTsDsC + +Type: _float_ Cooling design supply temperature, for sizing coil vs fan. @@ -211,7 +223,9 @@ Cooling design supply temperature, for sizing coil vs fan. }) }} -**ahTsDsH=_float_** +### ahTsDsH + +Type: _float_ Heating design supply temperature, for sizing coil vs fan. @@ -243,11 +257,15 @@ Terminal monitored to determine whether to heat or cool under ZN and ZN2 supply _AhTsRaMn_ and _ahTsRaMx_ are used when _ahTsSp_ is RA. -**ahTsRaMn=_float_** +### ahTsRaMn + +Type: _float_ Return air temperature at which the supply temperature setpoint is at the _maximum_ supply temperature, _ahTsMx_. -**ahTsRaMx=_float_** +### ahTsRaMx + +Type: _float_ Return air temperature at which the supply temperature setpoint is at the _minimum_ supply temperature, _ahTsMn_. @@ -269,7 +287,9 @@ If return air moves outside the range _ahTsRaMn_ to _ahTsRaMx_, the supply tempe All AIRHANDLERs have supply fans. -**sfanType=_choice_** +### sfanType + +Type: _choice_ Supply fan type/position. A BLOWTHRU fan is located in the air path before the coils; a DRAWTHRU fan is after the coils. @@ -283,7 +303,9 @@ Supply fan type/position. A BLOWTHRU fan is located in the air path before the c }) }} -**sfanVfDs=_float_** +### sfanVfDs + +Type: _float_ Design or rated (volumetric) air flow at rated pressure. Many fans will actually blow a larger volume of air at reduced pressure: see sfanVfMxF (next). @@ -297,7 +319,9 @@ Design or rated (volumetric) air flow at rated pressure. Many fans will actually }) }} -**sfanVfMxF=_float_** +### sfanVfMxF + +Type: _float_ Overrun factor: maximum factor by which fan will exceed rated flow (at reduced pressure, not explicitly modeled). CSE delivers flows demanded by terminals until total flow at supply fan reaches sfanVfDs \* sfanVsMxF, then reduces maximum flows to terminals, keeping them in proportion to terminal design flows, to keep total flow at that value. @@ -331,7 +355,9 @@ Prior text: At most, one of the next two items may be given: in combination with New possible text (after addition of sfanElecPwr): Only one of sfanElecPwr, sfanEff, and sfanShaftBhp may be given: together with sfanVfDs and xfanPress, any one is sufficient for CSE to determine the others and to compute the fan heat contribution to the air stream. -**sfanElecPwr=_float_** +### sfanElecPwr + +Type: _float_ Fan input power per unit air flow (at design flow and pressure). @@ -345,7 +371,9 @@ Fan input power per unit air flow (at design flow and pressure). }) }} -**sfanEff=_float_** +### sfanEff + +Type: _float_ Fan efficiency at design flow and pressure, as a fraction. @@ -359,7 +387,9 @@ Fan efficiency at design flow and pressure, as a fraction. }) }} -**sfanShaftBhp=_float_** +### sfanShaftBhp + +Type: _float_ Fan shaft brake horsepower at design flow and pressure. @@ -398,7 +428,9 @@ If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coeffici }) }} -**sfanMotEff=_float_** +### sfanMotEff + +Type: _float_ Motor/drive efficiency. @@ -412,7 +444,9 @@ Motor/drive efficiency. }) }} -**sfanMotPos=_choice_** +### sfanMotPos + +Type: _choice_ Motor/drive position: determines disposition of fan motor heat (input energy in excess of work done by fan; the work done by the fan is the "fan heat", always added to air flow). @@ -422,7 +456,9 @@ IN_RETURN, add fan motor heat to the return air flow. EXTERNAL, discard fan motor heat") }} -**sfanMtr=_mtrName_** +### sfanMtr + +Type: _mtrName_ Name of meter, if any, to record energy used by supply fan. End use category used is "Fan". @@ -440,7 +476,9 @@ Name of meter, if any, to record energy used by supply fan. End use category use A return/relief fan is optional. Its presence is established by setting _rfanType_ to a value other than NONE. For additional information on the return/relief fan members, refer to the description of the corresponding supply fan member above. -**rfanType=_choice_** +### rfanType + +Type: _choice_ relief fan type/position. @@ -460,7 +498,9 @@ NONE, no return/relief fan in this AIRHANDLER.") }) }} -**rfanVfDs=_float_** +### rfanVfDs + +Type: _float_ design or rated (volumetric) air flow. @@ -474,7 +514,9 @@ design or rated (volumetric) air flow. }) }} -**rfanVfMxF=_float_** +### rfanVfMxF + +Type: _float_ factor by which fan will exceed design flow (at reduced pressure). @@ -488,7 +530,9 @@ factor by which fan will exceed design flow (at reduced pressure). }) }} -**rfanPress=_float_** +### rfanPress + +Type: _float_ design or rated pressure. @@ -504,7 +548,9 @@ design or rated pressure. _At most, one of the next three?? items may be defined: ??_ rework re rfanElecPwr -**rfanElecPwr=_float_** +### rfanElecPwr + +Type: _float_ Fan input power per unit air flow (at design flow and pressure). @@ -518,7 +564,9 @@ Fan input power per unit air flow (at design flow and pressure). }) }} -**rfanEff=_float_** +### rfanEff + +Type: _float_ Fan efficiency at design flow and pressure. @@ -532,7 +580,9 @@ Fan efficiency at design flow and pressure. }) }} -**rfanShaftBhp=_float_** +### rfanShaftBhp + +Type: _float_ Fan shaft brake horsepower at design flow and pressure. @@ -571,7 +621,9 @@ If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coeffici }) }} -**rfanMotEff=_float_** +### rfanMotEff + +Type: _float_ Motor/drive efficiency. @@ -585,7 +637,9 @@ Motor/drive efficiency. }) }} -**rfanMotPos=_choice_** +### rfanMotPos + +Type: _choice_ Motor/drive position. @@ -599,7 +653,9 @@ Motor/drive position. }) }} -**rfanMtr=_mtrName_** +### rfanMtr + +Type: _mtrName_ Name of meter, if any, to record power consumption of this return fan. May be same or different from meter used for other fans and coils in this and other air handlers. "Fan" end use category is used. @@ -633,7 +689,9 @@ The next four members apply to all heat coil types, except as noted. To specify that an AIRHANDLER has a heating coil and thus heating capability, give an _ahhcType_ other than NONE. -**ahhcType=_choice_** +### ahhcType + +Type: _choice_ Coil type choice: @@ -656,7 +714,9 @@ NONE, AIRHANDLER has no heat coil, thus no heating capability.") }) }} -**ahhcSched=_choice_** +### ahhcSched + +Type: _choice_ Heat coil schedule; choice of AVAIL or OFF, hourly variable. Use an appropriate ahhcSched expression if heat coil is to operate only at certain times of the day or year or only under certain weather conditions, etc. @@ -675,7 +735,9 @@ OFF, coil will not operate, no matter how cold supply air is. A HW coil sh }) }} -**ahhcCapTRat=_float_** +### ahhcCapTRat + +Type: _float_ Total heating (output) capacity. For an ELECTRIC, AHP, GAS, or OIL coil, this capacity is always available. For an HW heating coil, when the total heat being requested from the coil's HEATPLANT would overload the HEATPLANT, the capacity of all HW coils connected to the plant (in TERMINALs as well as AIRHANDLERs) is reduced proportionately until the requested total heat is within the HEATPLANT's capacity. For AHP, this value represents the AHRI rated capacity at 47 ^o^F outdoor temperature. @@ -689,7 +751,9 @@ Total heating (output) capacity. For an ELECTRIC, AHP, GAS, or OIL coil, this ca }) }} -**ahhcFxCap=_float_** +### ahhcFxCap + +Type: _float_ Capacity sizing multiplier for autoSized heating coils. The default value (1.1) specifies 10% oversizing. @@ -703,7 +767,9 @@ Capacity sizing multiplier for autoSized heating coils. The default value (1.1) }) }} -**ahhcMtr=_mtrName_** +### ahhcMtr + +Type: _mtrName_ Name of meter to accumulate energy use by this heat coil. The input energy used by the coil is accumulated in the end use category "Htg"; for a heat pump, the energy used by the supplemental resistance heaters (regular and defrost) is accumulated under the category "hp". Not allowed when\*ahhcType\* is HW, as an HW coil's energy comes from its HEATPLANT, and the HEATPLANT's BOILERs accumulate input energy to meters. @@ -737,7 +803,9 @@ The following inputs are used only for furnaces (_ahhcType_ = GAS or OIL). One of the next two items, but not both, **must** be given for furnaces: -**ahhcEirR=_float_** +### ahhcEirR + +Type: _float_ Rated energy input ratio (input energy/output energy) at full power. @@ -751,7 +819,9 @@ Rated energy input ratio (input energy/output energy) at full power. }) }} -**ahhcEffR=_float_** +### ahhcEffR + +Type: _float_ Rated efficiency (output energy/input energy; 1/ahhcEirR) at full power @@ -789,7 +859,9 @@ Note that the value of this polynomial adjusts the energy input, not the energy }) }} -**ahhcStackEffect=_float_** +### ahhcStackEffect + +Type: _float_ Fraction of unused furnace capacity that must be used to make up for additional infiltration caused by stack effect of a hot flue when the (indoor) furnace is NOT running, only in subhours when furnace runs PART of the subhour, per DOE2 model. @@ -824,7 +896,9 @@ The divisor "`/ (10*68*sqrt(200))`" is to make the value 0.1 when tDbO is 0, tha The following heat coil input members, beginning with _ahp-_, are used when modeling the heating function of an air source heat pump with the air handler heat coil, that is, when _ahhcType_= AHP is given. Also, see the "AIRHANDLER Crankcase Heater" section with regard to specifying the heat pump's crankcase heater. -**ahpCap17=_float_** +### ahpCap17 + +Type: _float_ AHRI steady state (continuous operation) rated capacity at 70 degrees F indoor (return) air temp, and 17 degrees F outdoor temp, respectively. These values reflect no cycling, frost, or defrost degradation. To help you find input errors, the program issues an error message if ahpCap17 >= ahhcCapTRat. @@ -838,7 +912,9 @@ AHRI steady state (continuous operation) rated capacity at 70 degrees F indoor ( }) }} -**ahpCapRat1747=_float_** +### ahpCapRat1747 + +Type: _float_ The ratio of AHRI steady state (continuous operation) rated capacities at 17 and 47 degrees F outdoor temp. This is used to determine _ahpCap35_ when _ahhcCapTRat_ is AUTOSIZEd. @@ -852,7 +928,9 @@ The ratio of AHRI steady state (continuous operation) rated capacities at 17 and }) }} -**ahpCapRat9547=_float_** +### ahpCapRat9547 + +Type: _float_ Ratio of ahccCapTRat to ahhcCapTRat. This ratio is used for defaulting of AUTOSIZEd heat pump heating and cooling capacities such that they have consistent values as is required given that a heat pump is a single device. If not given, ahpCapRat9547 is determined during calculations using the relationship ahccCapTRat = 0.98 \* ahhcCapTRat + 180 (derived via correlation of capacities of a set of real units). @@ -866,7 +944,9 @@ Ratio of ahccCapTRat to ahhcCapTRat. This ratio is used for defaulting of AUTOSI }) }} -**ahpCap35=_float_** +### ahpCap35 + +Type: _float_ AHRI steady state (continuous operation) rated capacity at 35 F outdoor temp, reflecting frost buildup and defrost degradation but no cycling. Unlikely to be available for input; if not given, will be defaulted to _ahpFd35Df_ (next description) times a value determined by linear interpolation between the given _ahpCap17_ and _ahhcCapTRat_ values. If _ahpCap35_ is given, CSE will issue an error message if it is greater than value determined by linear interpolation between _ahpCap17_ and _ahhcCapTRat_. @@ -880,7 +960,9 @@ AHRI steady state (continuous operation) rated capacity at 35 F outdoor temp, re }) }} -**ahpFd35Df=_float_** +### ahpFd35Df + +Type: _float_ Default frost/defrost degradation factor at 35 F: reduction of output at unchanged input, due to defrosting and due to frost on outdoor coil. Used in determining default value for _ahpCap35_ (preceding description); not used if _ahpCap35_ is given. @@ -894,7 +976,9 @@ Default frost/defrost degradation factor at 35 F: reduction of output at unchang }) }} -**ahpCapIa=_float_** +### ahpCapIa + +Type: _float_ Capacity correction factor for indoor (return) air temperature, expressed as a fraction reduction in capacity per degree above 70F. @@ -908,7 +992,9 @@ Capacity correction factor for indoor (return) air temperature, expressed as a f }) }} -**ahpCapSupH=_float_** +### ahpCapSupH + +Type: _float_ Output capacity of the supplemental reheat coil used when heat pump alone cannot meet the load or to offset the defrost cooling load. Energy consumed by this heater is accumulated in category "HPBU" of ahhcMeter (whereas energy consumption of the heat pump compressor is accumulated under category "Htg"). @@ -922,7 +1008,9 @@ Output capacity of the supplemental reheat coil used when heat pump alone cannot }) }} -**ahpEffSupH=_float_** +### ahpEffSupH + +Type: _float_ Efficiency of the supplemental reheat coil. Use values other than the default for gas supplemental heaters. @@ -936,7 +1024,9 @@ Efficiency of the supplemental reheat coil. Use values other than the default fo }) }} -**ahpSupHMtr=_mtrName_** +### ahpSupHMtr + +Type: _mtrName_ Specifies a meter for recording supplemental heater energy use. End use category "HPBU" is used. @@ -952,11 +1042,17 @@ Specifies a meter for recording supplemental heater energy use. End use category The next seven inputs specify frost buildup and defrosting and their effect on capacity. -**ahpTFrMn=_float_** +### ahpTFrMn + +Type: _float_ + +### ahpTFrMx -**ahpTFrMx=_float_** +Type: _float_ -**ahpTFrPk=_float_** +### ahpTFrPk + +Type: _float_ Lowest, highest, and peak temperatures for frost buildup and defrost effects. Capacity reduction due to frost and defrosting consists of a component due to frost buildup on the outdoor coil, plus a component due to lost heating during the time the heat pump is doing reverse cycle defrosting (heating the outdoor coil to melt off the frost, which cools the indoor coil). The effects of Frost Buildup and of time spent defrosting are computed for different temperature ranges as follows: @@ -984,9 +1080,13 @@ An error will occur unless _ahpTFrMn_ < _ahpTFrPk_ < _ahpTFrMx_ and _ahpTF }) }} -**ahpDfrFMn=_float_** +### ahpDfrFMn + +Type: _float_ + +### ahpDfrFMx -**ahpDfrFMx=_float_** +Type: _float_ Minimum and maximum fraction of time spent in reverse cycle defrost cooling. @@ -1014,7 +1114,9 @@ The program will issue an error message if _ahpDfrFMx_ $\le$ _ahpDfrFMn_. }) }} -**ahpDfrCap=_float_** +### ahpDfrCap + +Type: _float_ Cooling capacity (to air handler supply air) during defrosting. Program separately computes the lost heating capacity during defrosting, but effects of switchover transient should be included in _ahpDfrCap_. @@ -1028,9 +1130,13 @@ Cooling capacity (to air handler supply air) during defrosting. Program separate }) }} -**ahpTOff=_float_** +### ahpTOff + +Type: _float_ -**ahpTOn=_float_** +### ahpTOn + +Type: _float_ Heat pump low temperature cutout setpoints. Heat pump is disabled (only the supplemental resistance heater operates) when outdoor temperature falls below _ahpTOff_, and is re-enabled when temperature rises above _ahpTOn_. Different values may be given to simulate thermostat differential. _ahpTOff_ must be $\le$ _ahpTOn_; equal values are accepted. @@ -1046,9 +1152,13 @@ Heat pump low temperature cutout setpoints. Heat pump is disabled (only the supp The next four inputs specify the heating power input for an air source heat pump: -**ahpCOP47=_float_** +### ahpCOP47 + +Type: _float_ -**ahpCOP17=_float_** +### ahpCOP17 + +Type: _float_ Steady state (full power, no cycling) coeffient of performance for compressor and crankcase heater at 70 degrees F indoor (return) air temp and 47 and 17 degrees F outdoor temp, respectively. @@ -1062,7 +1172,9 @@ Steady state (full power, no cycling) coeffient of performance for compressor an }) }} -**ahpInIa=_float_** +### ahpInIa + +Type: _float_ Indoor (return) air temp power input correction factor: fraction increase in steady-state input per degree above 70 F, or decrease below 70F. @@ -1076,7 +1188,9 @@ Indoor (return) air temp power input correction factor: fraction increase in ste }) }} -**ahpCd=_float_** +### ahpCd + +Type: _float_ AHRI cycling degradation coefficient: ratio of fraction drop in system coefficient of performance (COP) to fraction drop in capacity when cycling, from steady-state values, in AHRI 47 F cycling performance tests. A value of .25 means that if the heat pump is cycled to drop its output to 20% of full capacity (i.e. by the fraction .8), its COP will drop by .8 \* .25 = .2. Here COP includes all energy inputs: compressor, crankcase heater, defrost operation, etc. @@ -1092,7 +1206,9 @@ AHRI cycling degradation coefficient: ratio of fraction drop in system coefficie The following four air handler heat coil members allow specification of auxiliary input power consumption associated with the heat coil (or furnace) under the indicated conditions. The single description box applies to all four. -**ahhcAux=_float_** +### ahhcAux + +Type: _float_ Auxiliary energy used by the heating coil. @@ -1106,7 +1222,9 @@ Auxiliary energy used by the heating coil. }) }} -**ahhcAuxMtr=_mtrName_** +### ahhcAuxMtr + +Type: _mtrName_ Specifies a meter for recording auxiliary energy use. End use category "Aux" is used. @@ -1166,7 +1284,9 @@ OFF, Cooling coil will not operate no matter how hot the supply air is. To avoid }) }} -**ahccCapTRat=_float_** +### ahccCapTRat + +Type: _float_ Total rated capacity of coil: sum of its "sensible" (heat-removing) and "latent" (moisture removing) capacities. Not used with CHW coils, for which capacity is implicitly specified by water flow (ahccGpmDs*) and transfer unit (*ahccNtuoDs\* and _ahccNtuiDs_) inputs, described below. @@ -1182,7 +1302,9 @@ For coil specification conditions (a.k.a. rating conditions or design conditions }) }} -**ahccCapSRat=_float_** +### ahccCapSRat + +Type: _float_ Sensible (heat-removing) rated capacity of cooling coil. Not used with CHW coils. @@ -1196,7 +1318,9 @@ Sensible (heat-removing) rated capacity of cooling coil. Not used with CHW coils }) }} -**ahccSHRRat=_float_** +### ahccSHRRat + +Type: _float_ Rated sensible heat ratio (_ahccCapSRat_/_ahccCapTRat_) for cooling coil. Default based on correlation to _ahccVfRperTon_. Not used with CHW coils. @@ -1210,7 +1334,9 @@ Rated sensible heat ratio (_ahccCapSRat_/_ahccCapTRat_) for cooling coil. Defaul }) }} -**ahccFxCap=_float_** +### ahccFxCap + +Type: _float_ Capacity sizing multiplier for autoSized cooling coils. The default value (1.1) specifies 10% oversizing. @@ -1224,7 +1350,9 @@ Capacity sizing multiplier for autoSized cooling coils. The default value (1.1) }) }} -**ahccMtr=_mtrName_** +### ahccMtr + +Type: _mtrName_ Name of meter, if any, to record energy use of air handler cool coil. End use category "Clg" is used. Not used with CHW coils, because the input energy use for a CHW coil is recorded by the COOLPLANT's CHILLERs. @@ -1240,7 +1368,9 @@ Name of meter, if any, to record energy use of air handler cool coil. End use ca The following six members are used with DX cooling coils. -**ahccMinTEvap=_float_** +### ahccMinTEvap + +Type: _float_ Minimum (effective surface) temperature of coil (evaporator). Represents refrigerant setpoint, or cutout to prevent freezing. Coil model will reduce output to keep simulated coil from getting colder than this, even though it lets supply air get warmer than setpoint. Should default be 35?? @@ -1254,7 +1384,9 @@ Minimum (effective surface) temperature of coil (evaporator). Represents refrige }) }} -**ahccK1=_float_** +### ahccK1 + +Type: _float_ Exponent in power relationship expressing coil effectiveness as a function of relative air flow. Used as K1 in the relationship ntu = ntuR \* relCfmk1, which says that the "number of transfer units" (on the coil outside or air side) varies with the relative air flow raised to the K1 power. Used with CHW as well as DX coils; for a CHW coil, ntuR in the formula is _ahccNtuoDs_. @@ -1268,7 +1400,9 @@ Exponent in power relationship expressing coil effectiveness as a function of re }) }} -**ahccBypass=_float_** +### ahccBypass + +Type: _float_ Fraction of air flow which does NOT flow through DX cooling coil, for better humidity control. Running less of the air through the coil lets the coil run colder, resulting in greater moisture removal right??. @@ -1297,7 +1431,9 @@ cycling region, _ahccMinFsldPlr_ > plr $\\ge$ 0 The default values for the following three members are the DOE2 PTAC (Window air conditioner) values. -**ahccEirR=_float_** +### ahccEirR + +Type: _float_ DX compressor energy input ratio (EIR) at full load under rated conditions; defined as the full-load electric energy input divided by the rated capacity, both in Btuh; same as the reciprocal of the Coefficient Of Performance (COP). Polynomials given below are used by CSE to adjust the energy input for part load and for off rated flow and temperature conditions. The default value includes outdoor (condenser) fan energy, but not indoor (air handler supply) fan energy. @@ -1311,7 +1447,9 @@ DX compressor energy input ratio (EIR) at full load under rated conditions; defi }) }} -**ahccMinUnldPlr=_float_** +### ahccMinUnldPlr + +Type: _float_ Compressor part load ratio (total current load/current capacity) at/above which "Compressor unloading" is used and pydxEirUl (below) is used to adjust the full-load power input to get the current part load power input. @@ -1325,7 +1463,9 @@ Compressor part load ratio (total current load/current capacity) at/above which }) }} -**ahccMinFsldPlr=_float_** +### ahccMinFsldPlr + +Type: _float_ "False Loading" is used between this compressor part load ratio and the plr where unloading is activated (_ahccMinUnldPlr_). In this region, input remains at _pydxEirUl_(*ahccMinUnldPlr).*For plr's less than _ahccMinFsldPlr_, cycling is used, and the power input goes to 0 in a straight line. @@ -1393,7 +1533,9 @@ Coefficients of cubic polynomial function of relative flow (entering air cfm/_ah }) }} -**pydxCaptFLim=_float_** +### pydxCaptFLim + +Type: _float_ Upper limit for value of pydxCaptF. @@ -1439,7 +1581,9 @@ This polynomial adjusts the full load energy input to part load, not the ratio o The following four members are used only with CHW coils. In addition, _ahccK1,_ described above, is used. -**ahccCoolplant=_name_** +### ahccCoolplant + +Type: _name_ name of COOLPLANT supporting CHW coil. COOLPLANTs contain CHILLERs, and are described in Section 5.21. @@ -1453,7 +1597,9 @@ name of COOLPLANT supporting CHW coil. COOLPLANTs contain CHILLERs, and are desc }) }} -**ahccGpmDs=_float_** +### ahccGpmDs + +Type: _float_ Design (i.e. maximum) water flow through CHW coil. @@ -1467,7 +1613,9 @@ Design (i.e. maximum) water flow through CHW coil. }) }} -**ahccNtuoDs=_float_** +### ahccNtuoDs + +Type: _float_ CHW coil outside number of transfer units at design air flow (ahccVfR*, below). See*ahccK1\* above with regard to transfer units at other air flows. @@ -1481,7 +1629,9 @@ CHW coil outside number of transfer units at design air flow (ahccVfR*, below). }) }} -**ahccNtuiDs=_float_** +### ahccNtuiDs + +Type: _float_ CHW coil inside number of transfer units at design water flow (ahccGpmDs, above). @@ -1497,7 +1647,9 @@ CHW coil inside number of transfer units at design water flow (ahccGpmDs, above) The following four members let you give the specification conditions for the cooling coil: the rating conditions, design conditions, or other test conditions under which the coil's performance is known. The defaults are AHRI (Air-Conditioning and Refrigeration Institute) standard rating conditions. -**ahccDsTDbEn=_float_** +### ahccDsTDbEn + +Type: _float_ Design (rating) entering air dry bulb temperature, used with DX and CHW cooling coils. With CHW coils, this input is used only as the temperature at which to convert _ahccVfR_ from volume to mass. @@ -1511,7 +1663,9 @@ Design (rating) entering air dry bulb temperature, used with DX and CHW cooling }) }} -**ahccDsTWbEn=_float_** +### ahccDsTWbEn + +Type: _float_ Design (rating) entering air wet bulb temperature, for CHW coils. @@ -1525,7 +1679,9 @@ Design (rating) entering air wet bulb temperature, for CHW coils. }) }} -**ahccDsTDbCnd=_float_** +### ahccDsTDbCnd + +Type: _float_ Design (rating) condenser temperature (outdoor air temperature) for DX coils. @@ -1539,7 +1695,9 @@ Design (rating) condenser temperature (outdoor air temperature) for DX coils. }) }} -**ahccVfR=_float_** +### ahccVfR + +Type: _float_ Design (rating) (volumetric) air flow rate for DX or CHW cooling coil. The AHRI specification for this test condition for CHW coils is "450 cfm/ton or less", right?? @@ -1555,7 +1713,9 @@ Design (rating) (volumetric) air flow rate for DX or CHW cooling coil. The AHRI The following four members permit specification of auxiliary input power use associated with the cooling coil under the conditions indicated. -**ahccVfRperTon=_float_** +### ahccVfRperTon + +Type: _float_ Design default _ahccVfR_ per ton (12000 Btuh) of _ahhcCapTRat_. @@ -1569,7 +1729,9 @@ Design default _ahccVfR_ per ton (12000 Btuh) of _ahhcCapTRat_. }) }} -**ahccAux=_float_** +### ahccAux + +Type: _float_ Auxiliary energy used by the cooling coil. @@ -1583,7 +1745,9 @@ Auxiliary energy used by the cooling coil. }) }} -**ahccAuxMtr=_mtrName_** +### ahccAuxMtr + +Type: _mtrName_ Specifies a meter for recording auxiliary energy use. End use category "Aux" is used. @@ -1601,7 +1765,9 @@ Specifies a meter for recording auxiliary energy use. End use category "Aux" is Outside air introduced into the air hander supply air can be controlled on two levels. First, a *minimum*fraction or volume of outside air may be specified. By default, a minimum volume of .15 cfm per square foot of zone area is used. Second, an _economizer_ may be specified. The simulated economizer increases the outside air above the minimum when the outside air is cooler or has lower enthalpy than the return air, in order to reduce cooling coil energy usage. By default, there is no economizer. -**oaMnCtrl=_choice_** +### oaMnCtrl + +Type: _choice_ Minimum outside air flow control method choice, VOLUME or FRACTION. Both computations are based on the minimum outside air flow, _oaVfDsMn_; if the control method is FRACTION, the outside air flow is pro-rated when the air handler is supplying less than its design cfm. In both cases the computed minimum cfm is multiplied by a schedulable fraction, _oaMnFrac_, to let you vary the outside air or turn in off when none is desired. @@ -1625,7 +1791,9 @@ If the minimum outside air flow is greater than the total requested by the termi }) }} -**oaVfDsMn=_float_** +### oaVfDsMn + +Type: _float_ Design minimum outside air flow. If _oaMnCtrl_ is FRACTION, then this is the minimum outside air flow at full air handler flow. See formulas in _oaMnCtrl_ description, just above. @@ -1639,7 +1807,9 @@ Design minimum outside air flow. If _oaMnCtrl_ is FRACTION, then this is the min }) }} -**oaMnFrac=_float_** +### oaMnFrac + +Type: _float_ Fraction of minimum outside air to use this hour, normally 1.0. Use a CSE expression that evaluates to 0 for hours you wish to disable the minimum outside air flow, for example to suppress ventilation during the night or during warm-up hours. Intermediate values may be used for intermediate outside air minima. See formulas in _oaMnCtrl_ description, above. @@ -1655,7 +1825,9 @@ Fraction of minimum outside air to use this hour, normally 1.0. Use a CSE expres CAUTION: the minimum outside air flow only applies when the supply fan is running; it won't assure meeting minimum ventilation requirements when used with ahFanCycles = YES (constant volume, fan cycling). -**oaZoneLeak=_float_** +### oaZoneLeak + +Type: _float_ For the purposes of airnet zone pressure modeling ONLY, _oaZoneLeak_ specifies the fraction of supply air that is assumed to leak from zone(s) (as opposed to returning to the airhandler via the return duct). For example, if the supply air volume is 500 cfm and _oaZoneLeak_ is 0.4, the values passed to airnet are 500 cfm inflow and 300 cfm outflow. The 200 cfm difference is distributed to other zone leaks according to their pressure/flow characteristics. @@ -1681,7 +1853,9 @@ Second, the economizer will operate even if the air handler is heating, resultin (ahEcoType includes the functionality of the Taylor coil_interlock variable??) --> -**oaEcoType=_choice_** +### oaEcoType + +Type: _choice_ Type of economizer. Choice of: @@ -1722,7 +1896,9 @@ Economizer outside air enthalpy high limit. The economizer is disabled (outside _oaOaLeak_ and _oaRaLeak_ specify leakages in the economizer dampers, when present. The leaks are constant-cfm flows, expressed as fractions of the maximum possible flow. Thus, when the current flow is less than the maximum possible, the range of operation of the economizer is reduced. When the two damper leakages add up to more than the current air handler flow, outside and return air are used in the ratio of the two leakages and the economizer, if enabled, is ineffective. -**oaOaLeak=_float_** +### oaOaLeak + +Type: _float_ Outside air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. If an economizer is present, _oaOaLeak_ is a fraction of the supply fan design cfm, _sfanVfDs_. Otherwise, _oaOaLeak_ is a fraction of the design minimum outside air flow _oaVfDsMn_. @@ -1736,7 +1912,9 @@ Outside air damper leakage to mixed air. Puts a minimum on return air flow and t }) }} -**oaRaLeak=_float_** +### oaRaLeak + +Type: _float_ Return air damper leakage to mixed air. Puts a minimum on return air flow and thus a maximum on outside air flow, to mixed air. Expressed as a fraction of the supply fan design cfm, _sfanVfDs_. Not used when no economizer is being modeled. @@ -1754,7 +1932,9 @@ Return air damper leakage to mixed air. Puts a minimum on return air flow and th The following data members are used to describe a heat exchanger for recovering heat from exhaust air. Heat recovery added to the model when a value for _oaHXSenEffHDs_ is provided. -**oaHXVfDs=_float_** +### oaHXVfDs + +Type: _float_ Heat exchanger design or rated flow. @@ -1768,7 +1948,9 @@ Heat exchanger design or rated flow. }) }} -**oaHXf2=_float_** +### oaHXf2 + +Type: _float_ Heat exchanger flow fraction (of design flow) used for second set of effectivenesses. @@ -1782,7 +1964,9 @@ Heat exchanger flow fraction (of design flow) used for second set of effectivene }) }} -**oaHXSenEffHDs=_float_** +### oaHXSenEffHDs + +Type: _float_ Heat exchanger sensible effectiveness in heating mode at the design flow rate. Specifying input triggers modeling of heat recovery. @@ -1795,7 +1979,9 @@ Heat exchanger sensible effectiveness in heating mode at the design flow rate. S }) }} -**oaHXSenEffHf2=_float_** +### oaHXSenEffHf2 + +Type: _float_ Heat exchanger sensible effectiveness in heating mode at the second flow rate (**oaHXf2**). @@ -1809,7 +1995,9 @@ Heat exchanger sensible effectiveness in heating mode at the second flow rate (* }) }} -**oaHXLatEffHDs=_float_** +### oaHXLatEffHDs + +Type: _float_ Heat exchanger latent effectiveness in heating mode at the design flow rate. @@ -1823,7 +2011,9 @@ Heat exchanger latent effectiveness in heating mode at the design flow rate. }) }} -**oaHXLatEffHf2=_float_** +### oaHXLatEffHf2 + +Type: _float_ Heat exchanger latent effectiveness in heating mode at the second flow rate (**oaHXf2**). @@ -1837,7 +2027,9 @@ Heat exchanger latent effectiveness in heating mode at the second flow rate (**o }) }} -**oaHXSenEffCDs=_float_** +### oaHXSenEffCDs + +Type: _float_ Heat exchanger sensible effectiveness in cooling mode at the design flow rate. @@ -1851,7 +2043,9 @@ Heat exchanger sensible effectiveness in cooling mode at the design flow rate. }) }} -**oaHXSenEffCf2=_float_** +### oaHXSenEffCf2 + +Type: _float_ Heat exchanger sensible effectiveness in cooling mode at the second flow rate (**oaHXf2**). @@ -1865,7 +2059,9 @@ Heat exchanger sensible effectiveness in cooling mode at the second flow rate (* }) }} -**oaHXLatEffCDs=_float_** +### oaHXLatEffCDs + +Type: _float_ Heat exchanger latent effectiveness in cooling mode at the design flow rate. @@ -1879,7 +2075,9 @@ Heat exchanger latent effectiveness in cooling mode at the design flow rate. }) }} -**oaHXLatEffCf2=_float_** +### oaHXLatEffCf2 + +Type: _float_ Heat exchanger latent effectiveness in cooling mode at the second flow rate (**oaHXf2**). @@ -1893,7 +2091,9 @@ Heat exchanger latent effectiveness in cooling mode at the second flow rate (**o }) }} -**oaHXBypass=_choice_** +### oaHXBypass + +Type: _choice_ Yes/No choice for enabling heat exchanger bypass. If selected, the outdoor air will bypass the heat exchanger when otherwise the heat exchanger would require more heating or cooling energy to meet the respective setpoints. @@ -1907,7 +2107,9 @@ Yes/No choice for enabling heat exchanger bypass. If selected, the outdoor air w }) }} -**oaHXAuxPwr=_float_** +### oaHXAuxPwr + +Type: _float_ Auxiliary power required to operate the heat recovery device (e.g., wheel motor, contorls). @@ -1921,7 +2123,9 @@ Auxiliary power required to operate the heat recovery device (e.g., wheel motor, }) }} -**oaHXAuxMtr=_mtrName_** +### oaHXAuxMtr + +Type: _mtrName_ Name of meter, if any, to record energy used by auxiliary components of the heat recovery system. @@ -1941,7 +2145,9 @@ _AhSOLeak_ and _ahRoLeak_ express air leaks in the common supply and return duct If unequal leaks are specified, at present (July 1992) CSE will use the average of the two specifications for both leaks, as the modeled supply and return flows must be equal. A future version may allow unequal flows, making up the difference in exfiltration or infiltration to the zones. -**ahSOLeak=_float_** +### ahSOLeak + +Type: _float_ Supply duct leakage to outdoors, expressed as a fraction of supply fan design flow (_sfanVfDs_). Use 0 if the duct is indoors. A constant-cfm leak is modeled, as the pressure is constant when the fan is on. @@ -1955,7 +2161,9 @@ Supply duct leakage to outdoors, expressed as a fraction of supply fan design fl }) }} -**ahROLeak=_float_** +### ahROLeak + +Type: _float_ Return duct leakage FROM outdoors, expressed as a fraction of _sfanVfDs_. Use 0 if the duct is indoors. @@ -1971,7 +2179,9 @@ Return duct leakage FROM outdoors, expressed as a fraction of _sfanVfDs_. Use 0 _AhSOLoss_ and _ahROLoss_ represent conductive losses from the common supply and return ducts to the outdoors. For an individual zone's conductive duct loss, see TERMINAL member _tuSRLoss_. Losses here are expressed as a fraction of the temperature difference which is lost. For example, if the supply air temperature is 120, the outdoor temperature is 60, and the pertinent loss is .1, the effect of the loss as modeled will be to reduce the supply air temperature by 6 degrees ( .1 \* (120 - 60) ) to 114 degrees. CSE currently models these losses a constant _TEMPERATURE LOSSes_ regardless of cfm. -**ahSOLoss=_float_** +### ahSOLoss + +Type: _float_ Supply duct loss/gain to the outdoors. @@ -1985,7 +2195,9 @@ Supply duct loss/gain to the outdoors. }) }} -**ahROLoss=_float_** +### ahROLoss + +Type: _float_ Return duct heat loss/gain to the outdoors. @@ -2009,7 +2221,9 @@ When modeling an air source heat pump (ahhcType = AHP), these variables should b Appropriateness of use of these inputs when specifying a DX system without associated heat pump heating is not clear to me (Rob) as of 10-23-92; on the one hand, the DX compressor probably has a crankcase heater; on the other hand, the rest of the DX model is supposed to be complete in itself, and adding a crankcase heater here might produce excessive energy input; on the third hand, the DX model does not include any energy input when the compressor is idle; ... . -**cchCM=_choice_** +### cchCM + +Type: _choice_ Crankcase heater presence and control method. Choice of: @@ -2032,7 +2246,9 @@ PTC_CLO, Same as corresponding choices above except zero crankcase heater input }) }} -**cchPMx=_float_** +### cchPMx + +Type: _float_ Crankcase resistance heater input power; maximum power if _cchCM_ is PTC or PTC_CLO. @@ -2046,7 +2262,9 @@ Crankcase resistance heater input power; maximum power if _cchCM_ is PTC or PTC_ }) }} -**cchPMn=_float_** +### cchPMn + +Type: _float_ Crankcase heater minimum input power if _cchCM_ is PTC or PTC_CLO, disallowed for other _cchCM's_. > 0. @@ -2060,9 +2278,13 @@ Crankcase heater minimum input power if _cchCM_ is PTC or PTC_CLO, disallowed fo }) }} -**cchTMx=_float_** +### cchTMx + +Type: _float_ + +### cchTMn -**cchTMn=_float_** +Type: _float_ For _cchCM_ = PTC or PTC_CLO, the low temperature (max power) and high temperature (min power) setpoints. In subhours when the compressor does not run, crankcase heater input is _cchPMx_ when oil temperature is at or below _cchTMx_, _cchPMn_ when oil temp is at or above _cchTMn_, and varies linearly (proportionally) in between. _cchTMn_ must be $\ge$ _cchTMx_. See _cchDT_ (next). @@ -2078,7 +2300,9 @@ For _cchCM_ = PTC or PTC_CLO, the low temperature (max power) and high temperatu }) }} -**cchDT=_float_** +### cchDT + +Type: _float_ For _cchCM_ = PTC or PTC_CLO, how much warmer than the outdoor temp CSE assumes the crankcase oil to be in subhours when the compressor does not run. If the compressor runs at all in the subhour, the oil is assumed to be warmer than _cchTMn_. @@ -2092,9 +2316,13 @@ For _cchCM_ = PTC or PTC_CLO, how much warmer than the outdoor temp CSE assumes }) }} -**cchTOn=_float_** +### cchTOn + +Type: _float_ + +### cchTOff -**cchTOff=_float_** +Type: _float_ For _cchCM_ = TSTAT, in subhours when compressor does not run, the crankcase heater turn-on and turn-off outdoor temperatures, respectively. Unequal values may be given to simulate thermostat differential. When the compressor runs at all in a subhour, the crankcase heater is off for the entire subhour. From 51ac3c2a6c2753e3a2f45ff4776a9d78023c530d Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 6 May 2025 11:48:52 -0600 Subject: [PATCH 048/117] Update bold headers to use actual md heading notation. Find: \n**(\w+)=*(\w+)***[\s]*\n Replace: \n### $1\n\nType: $2\n\n --- doc/src/docs/input-data/battery.md | 44 ++- doc/src/docs/input-data/boiler.md | 60 +++- doc/src/docs/input-data/chiller.md | 96 ++++-- doc/src/docs/input-data/construction.md | 4 +- doc/src/docs/input-data/coolplant.md | 16 +- doc/src/docs/input-data/descond.md | 32 +- doc/src/docs/input-data/dhwdayuse.md | 4 +- doc/src/docs/input-data/dhwheatrec.md | 32 +- doc/src/docs/input-data/dhwloop.md | 32 +- doc/src/docs/input-data/dhwloopbranch.md | 52 +++- doc/src/docs/input-data/dhwlooppump.md | 16 +- doc/src/docs/input-data/dhwloopseg.md | 32 +- doc/src/docs/input-data/dhwpump.md | 12 +- doc/src/docs/input-data/dhwsolarcollector.md | 68 +++-- doc/src/docs/input-data/dhwsolarsys.md | 44 ++- doc/src/docs/input-data/dhwsys.md | 220 ++++++++++---- doc/src/docs/input-data/dhwtank.md | 32 +- doc/src/docs/input-data/dhwuse.md | 32 +- doc/src/docs/input-data/doas.md | 148 ++++++--- doc/src/docs/input-data/door.md | 68 +++-- doc/src/docs/input-data/ductseg.md | 68 +++-- doc/src/docs/input-data/export.md | 60 +++- doc/src/docs/input-data/exportcol.md | 24 +- doc/src/docs/input-data/exportfile.md | 8 +- doc/src/docs/input-data/fndblock.md | 36 ++- doc/src/docs/input-data/foundation.md | 12 +- doc/src/docs/input-data/gain.md | 52 +++- doc/src/docs/input-data/glazetype.md | 52 +++- doc/src/docs/input-data/heatplant.md | 8 +- doc/src/docs/input-data/holiday.md | 12 +- doc/src/docs/input-data/importfile.md | 20 +- doc/src/docs/input-data/izxfer.md | 140 ++++++--- doc/src/docs/input-data/layer.md | 16 +- doc/src/docs/input-data/material.md | 28 +- doc/src/docs/input-data/meter.md | 8 +- doc/src/docs/input-data/performancemap.md | 12 +- doc/src/docs/input-data/perimeter.md | 8 +- doc/src/docs/input-data/pvarray.md | 64 +++- doc/src/docs/input-data/report.md | 68 +++-- doc/src/docs/input-data/reportcol.md | 28 +- doc/src/docs/input-data/reportfile.md | 12 +- doc/src/docs/input-data/rsys.md | 240 +++++++++++---- doc/src/docs/input-data/sgdist.md | 16 +- doc/src/docs/input-data/shade.md | 52 +++- doc/src/docs/input-data/shadex.md | 4 +- doc/src/docs/input-data/surface.md | 128 ++++++-- doc/src/docs/input-data/terminal.md | 116 +++++-- doc/src/docs/input-data/top-members.md | 300 ++++++++++++++----- doc/src/docs/input-data/towerplant.md | 96 ++++-- doc/src/docs/input-data/window.md | 112 +++++-- doc/src/docs/input-data/zone.md | 152 +++++++--- doc/src/extra/inverse.md | 24 +- doc/src/shared/dhwheater-doc.md | 136 ++++++--- 53 files changed, 2367 insertions(+), 789 deletions(-) diff --git a/doc/src/docs/input-data/battery.md b/doc/src/docs/input-data/battery.md index d7e1df2eb..922e2772c 100644 --- a/doc/src/docs/input-data/battery.md +++ b/doc/src/docs/input-data/battery.md @@ -18,7 +18,9 @@ Name of the battery system. Given after the word BATTERY. }) }} -**btMeter=*choice*** +### btMeter + +Type: choice Name of a METER to which the BATTERY's charge/discharge energy flows are recorded. Battery energy flows are accumulated to meter end use "BT". Battery energy flows are seen from the standpoint of a "load" on the electric grid, so charges to the BATTERY system are positive values while discharges from the BATTERY system are negative values. @@ -34,7 +36,9 @@ Note btMeter also determines the source for the probe value *loadSeen*. See dis }) }} -**btChgEff=*float*** +### btChgEff + +Type: float The charging efficiency of storing electricity into the BATTERY system. A value of 1.0 means that no energy is lost and 100% of charge energy enters and is stored in the battery. @@ -48,7 +52,9 @@ The charging efficiency of storing electricity into the BATTERY system. A value }) }} -**btDschgEff=*float*** +### btDschgEff + +Type: float The discharge efficiency for when the BATTERY system is discharging power. A value of 1.0 means that no energy is lost and 100% of discharge energy leaves the system. @@ -62,7 +68,9 @@ The discharge efficiency for when the BATTERY system is discharging power. A val }) }} -**btMaxCap=*float*** +### btMaxCap + +Type: float This is the maximum amount of energy that can be stored in the BATTERY system in kilowatt-hours. Once the BATTERY has reached its maximum capacity, no additional energy will be stored. @@ -76,7 +84,9 @@ This is the maximum amount of energy that can be stored in the BATTERY system in }) }} -**btInitSOE=*float*** +### btInitSOE + +Type: float The initial state of energy of the BATTERY system as a fraction of the total capacity. If `btInitSOE` is specified, the battery state-of-energy at the beginning of the actual simulation will be set to the amount specified, regardless of whether there was a warm-up period or not. If `btInitSOE` is NOT specififed, it will default to 1.0 (i.e., 100%) at the beginning of the warmup period (if any). @@ -90,7 +100,9 @@ The initial state of energy of the BATTERY system as a fraction of the total cap }) }} -**btInitCycles=*int*** +### btInitCycles + +Type: int The number of cycles on the battery at the beginning of the run. @@ -110,7 +122,9 @@ Note: a more robust life model will need not only cycle counts but cycles by dep }) }} -**btMaxChgPwr=*float*** +### btMaxChgPwr + +Type: float The maximum rate at which the BATTERY can be charged in kilowatts (i.e., energy flowing *into* the BATTERY). @@ -124,7 +138,9 @@ The maximum rate at which the BATTERY can be charged in kilowatts (i.e., energy }) }} -**btMaxDschgPwr=*float*** +### btMaxDschgPwr + +Type: float The maximum rate at which the BATTERY can be discharged in kilowatts (i.e., energy flowing *out of* the BATTERY). @@ -138,7 +154,9 @@ The maximum rate at which the BATTERY can be discharged in kilowatts (i.e., ener }) }} -**btControlAlg=*choice*** +### btControlAlg + +Type: choice Selects charge/discharge control algorithm. btChgReq (next) specifies the desired battery charge or discharge rate. btControlAlg allows selection of alternative algorithms for deriving btChgReq. @@ -159,7 +177,9 @@ Note btControlAlg has hourly variability, allowing dynamic algorithm selection. }) }} -**btChgReq=*float*** +### btChgReq + +Type: float The power request to charge (or discharge if negative) the battery. If omitted, the default strategy is used (attempt to satisfy all loads and absorb all available excess power). btChgReq and the default strategy requested power are literally *requests*: that is, more power will not be delivered than is available; more power will not be absorbed than capacity exits to store; and the battery's power limits will be respected. @@ -181,7 +201,9 @@ The sign conventions here are tricky. min(@BATTERY[ 1].loadSeen, 0) produces a }) }} -**btUseUsrChg=*choice*** +### btUseUsrChg + +Type: choice Former yes/no choice that currently has no effect. Deprecated, will be removed in a future version. diff --git a/doc/src/docs/input-data/boiler.md b/doc/src/docs/input-data/boiler.md index 74a3d345d..a8845f0e3 100644 --- a/doc/src/docs/input-data/boiler.md +++ b/doc/src/docs/input-data/boiler.md @@ -18,7 +18,9 @@ Name of BOILER object, given immediately after the word BOILER. The name is used }) }} -**blrCap=*float*** +### blrCap + +Type: float Heat output capacity of this BOILER. @@ -32,7 +34,9 @@ Heat output capacity of this BOILER. }) }} -**blrEffR=*float*** +### blrEffR + +Type: float Boiler efficiency at steady-state full load, as a fraction. 1.0 may be specified to model a 100% efficient boiler. @@ -46,7 +50,9 @@ Boiler efficiency at steady-state full load, as a fraction. 1.0 may be specified }) }} -**blrEirR=*float*** +### blrEirR + +Type: float Boiler Energy Input Ratio: alternate method of specifying efficiency. @@ -88,7 +94,9 @@ Meter to which Boiler's input energy is accumulated; if omitted, input energy is }) }} -**blrpGpm=*float*** +### blrpGpm + +Type: float Boiler pump flow in gallons per minute: amount of water pumped from this boiler through the hot water loop supplying the HEATPLANT's loads (HW coils and heat exchangers) whenever boiler is operating. @@ -102,7 +110,9 @@ Boiler pump flow in gallons per minute: amount of water pumped from this boiler }) }} -**blrpHdloss=*float*** +### blrpHdloss + +Type: float Boiler pump head loss (pressure). 0 may be specified to eliminate pump heat and pump energy input. @@ -118,7 +128,9 @@ Boiler pump head loss (pressure). 0 may be specified to eliminate pump heat and \* may be temporary value for 10-31-92 version; prior value of 35 may be restored. -**blrpMotEff=*float*** +### blrpMotEff + +Type: float Boiler pump motor efficiency. @@ -132,7 +144,9 @@ Boiler pump motor efficiency. }) }} -**blrpHydEff=*float*** +### blrpHydEff + +Type: float Boiler pump hydraulic efficiency @@ -181,7 +195,9 @@ blrAuxOnAtAll=*float*, Auxiliary power used in full value if boiler is on The following four allow specification of meters to record boiler auxiliary energy use through blrAuxOn, blrAuxOff, blrFullOff, and blrAuxOnAtAll, respectively. End use category "Aux" is used. -**blrAuxOn=*float*** +### blrAuxOn + +Type: float Additional input energy used in proportion to part load ratio when coil on, as for induced draft fan, hourly variable for unforeseen applications. @@ -195,7 +211,9 @@ Additional input energy used in proportion to part load ratio when coil on, as f }) }} -**blrAuxOnMtr=*mtrName*** +### blrAuxOnMtr + +Type: mtrName Meter to which to charge *auxOn*. @@ -209,7 +227,9 @@ Meter to which to charge *auxOn*. }) }} -**blrAuxOff=*float*** +### blrAuxOff + +Type: float Additional input energy when off for part or all of subhour. @@ -223,7 +243,9 @@ Additional input energy when off for part or all of subhour. }) }} -**blrAuxOffMtr=*mtrName*** +### blrAuxOffMtr + +Type: mtrName Meter to which to charge *auxOff*. @@ -237,7 +259,9 @@ Meter to which to charge *auxOff*. }) }} -**blrAuxFullOff=*float*** +### blrAuxFullOff + +Type: float Additional input energy when off for an entire subhour. @@ -251,7 +275,9 @@ Additional input energy when off for an entire subhour. }) }} -**blrAuxFullOffMtr=*mtrName*** +### blrAuxFullOffMtr + +Type: mtrName Meter to which to charge *blrAuxFullOff*. @@ -265,7 +291,9 @@ Meter to which to charge *blrAuxFullOff*. }) }} -**blrAuxOnAtall=*float*** +### blrAuxOnAtall + +Type: float Additional input energy used in coil on for any part of subhour, for unforeseen uses. @@ -279,7 +307,9 @@ Additional input energy used in coil on for any part of subhour, for unforeseen }) }} -**blrAuxOnAtAllMtr=*mtrName*** +### blrAuxOnAtAllMtr + +Type: mtrName MTR for "auxOnAtall" diff --git a/doc/src/docs/input-data/chiller.md b/doc/src/docs/input-data/chiller.md index db4ff47aa..8f395d85a 100644 --- a/doc/src/docs/input-data/chiller.md +++ b/doc/src/docs/input-data/chiller.md @@ -20,7 +20,9 @@ Name of CHILLER object, given immediately after the word CHILLER. This name is u The next four inputs allow specification of the CHILLER's capacity (amount of heat it can remove from the primary loop water) and how this capacity varies with the supply (leaving) temperature of the primary loop water and the entering temperature of the condenser (secondary loop) water. The chiller capacity at any supply and condenser temperatures is *chCapDs* times the value of *chPyCapT* at those temperatures. -**chCapDs=*float*** +### chCapDs + +Type: float Chiller design capacity, that is, the capacity at *chTsDs* and *chTcndDs* (next). @@ -34,7 +36,9 @@ Chiller design capacity, that is, the capacity at *chTsDs* and *chTcndDs* (next) }) }} -**chTsDs=*float*** +### chTsDs + +Type: float Design supply temperature: temperature of primary water leaving chiller at which capacity is *chCapDs*. @@ -48,7 +52,9 @@ Design supply temperature: temperature of primary water leaving chiller at which }) }} -**chTcndDs=*float*** +### chTcndDs + +Type: float Design condenser temperature: temperature of secondary water entering chiller condenser at which capacity is *chCapDs*. @@ -82,7 +88,9 @@ Up to six *float* values may be entered, separated by commas; CSE will use zero The next three inputs allow specification of the CHILLER's full-load energy input and how it varies with supply and condenser temperature. Only one of *chCop* and *chEirDs* should be given. The full-load energy input at any supply and condenser temperatures is the chiller's capacity at these temperatures, times *chEirDs* (or 1/*chCop*), times the value of *chPyEirT* at these temperatures. -**chCop=*float*** +### chCop + +Type: float Chiller full-load COP (Coefficient Of Performance) at *chTsDs*and *chTcndDs*. This is the output energy divided by the electrical input energy (in the same units) and reflects both motor and compressor efficiency. @@ -96,7 +104,9 @@ Chiller full-load COP (Coefficient Of Performance) at *chTsDs*and *chTcndDs*. Th }) }} -**chEirDs=*float*** +### chEirDs + +Type: float Alternate input for COP: Full-load Energy Input Ratio (electrical input energy divided by output energy) at design temperatures; the reciprocal of *chCop*. @@ -161,7 +171,9 @@ Up to four *float* values may be entered, separated by commas; CSE will use zero }) }} -**chMinUnldPlr=*float*** +### chMinUnldPlr + +Type: float Minimum compressor unloading part load ratio (plr); maximum false loading plr. See description above. @@ -175,7 +187,9 @@ Minimum compressor unloading part load ratio (plr); maximum false loading plr. S }) }} -**chMinFsldPlr=*float*** +### chMinFsldPlr + +Type: float Minimum compressor false loading part load ratio (plr); maximum cycling plr. See description above. @@ -189,7 +203,9 @@ Minimum compressor false loading part load ratio (plr); maximum cycling plr. See }) }} -**chMotEff=*float*** +### chMotEff + +Type: float Fraction of CHILLER compressor motor input power which goes to the condenser. For an open-frame motor and compressor, where the motor's waste heat goes to the air, enter the motor's efficiency: a fraction around .8 or .9. For a hermetic compressor, where the motor's waste heat goes to the refrigerant and thence to the condenser, use 1.0. @@ -203,7 +219,9 @@ Fraction of CHILLER compressor motor input power which goes to the condenser. Fo }) }} -**chMtr=*name*** +### chMtr + +Type: name Name of METER to which to accumulate CHILLER's electrical input energy. Category "Clg" is used. Note that two additional commands, *chppMtr* and *chcpMtr*, are used to specify meters for recording chiller pump input energy. @@ -219,7 +237,9 @@ Name of METER to which to accumulate CHILLER's electrical input energy. Category The next six inputs specify this CHILLER's *PRIMARY PUMP*, which pumps chilled water from the chiller through the CHW coils connected to the chiller's COOLPLANT. -**chppGpm=*float*** +### chppGpm + +Type: float Chiller primary pump flow in gallons per minute: amount of water pumped from this chiller through the primary loop supplying the COOLPLANT's loads (CHW coils) whenever chiller is operating. Any excess flow over that demanded by coils is assumed to go through a bypass valve. If coil flows exceed *chppGpm*, CSE assumes the pressure drops and the pump "overruns" to deliver the extra flow with the same energy input. The default is one gallon per minute for each 5000 Btuh of chiller design capacity. @@ -233,7 +253,9 @@ Chiller primary pump flow in gallons per minute: amount of water pumped from thi }) }} -**chppHdloss=*float*** +### chppHdloss + +Type: float Chiller primary pump head loss (pressure). 0 may be specified to eliminate pump heat and pump energy input. @@ -249,7 +271,9 @@ Chiller primary pump head loss (pressure). 0 may be specified to eliminate pump \* May be temporary default for 10-31-92 version; prior value (65) may be restored. -**chppMotEff=*float*** +### chppMotEff + +Type: float Chiller primary pump motor efficiency. @@ -263,7 +287,9 @@ Chiller primary pump motor efficiency. }) }} -**chppHydEff=*float*** +### chppHydEff + +Type: float Chiller primary pump hydraulic efficiency @@ -277,7 +303,9 @@ Chiller primary pump hydraulic efficiency }) }} -**chppOvrunF=*float*** +### chppOvrunF + +Type: float Chiller primary pump maximum overrun: factor by which flow demanded by coils can exceed *chppGpm*. The primary flow is not simulated in detail; *chppOvrun* is currently used only to issue an error message if the sum of the design flows of the coils connected to a COOLPLANT exceeds the sum of the products of *chppGpm* and *chppOvrun* for the chiller's in the plants most powerful stage. @@ -307,7 +335,9 @@ Meter to which primary pump electrical input energy is accumulated. If omitted, The next five inputs specify this CHILLER's *CONDENSER PUMP*, also known as the *SECONDARY PUMP* or the *HEAT REJECTION PUMP*. This pump pumps water from the chiller's condenser through the cooling towers in the COOLPLANT's TOWERPLANT. -**chcpGpm=*float*** +### chcpGpm + +Type: float Chiller condenser pump flow in gallons per minute: amount of water pumped from this chiller through the cooling towers when chiller is operating. @@ -321,7 +351,9 @@ Chiller condenser pump flow in gallons per minute: amount of water pumped from t }) }} -**chcpHdloss=*float*** +### chcpHdloss + +Type: float Chiller condenser pump head loss (pressure). 0 may be specified to eliminate pump heat and pump energy input. @@ -337,7 +369,9 @@ Chiller condenser pump head loss (pressure). 0 may be specified to eliminate pum \* May be temporary default for 10-31-92 version; prior value (45) may be restored. -**chcpMotEff=*float*** +### chcpMotEff + +Type: float Chiller condenser pump motor efficiency. @@ -351,7 +385,9 @@ Chiller condenser pump motor efficiency. }) }} -**chcpHydEff=*float*** +### chcpHydEff + +Type: float Chiller condenser pump hydraulic efficiency @@ -381,19 +417,27 @@ Meter to which condenser pump electrical input energy is accumulated. If omitted The following four members permit specification of auxiliary input power use associated with the chiller under the conditions indicated. -**chAuxOn=*float*** +### chAuxOn + +Type: float Auxiliary power used when chiller is running, in proportion to its subhour average part load ratio (plr). -**chAuxOff=*float*** +### chAuxOff + +Type: float Auxiliary power used when chiller is not running, in proportion to 1 - plr. -**chAuxFullOff=*float*** +### chAuxFullOff + +Type: float Auxiliary power used only when chiller is off for entire subhour; not used if the chiller is on at all during the subhour. -**chAuxOnAtAll=*float*** +### chAuxOnAtAll + +Type: float Auxiliary power used in full value if chiller is on for any fraction of subhour. @@ -409,11 +453,15 @@ Auxiliary power used in full value if chiller is on for any fraction of subhour. The following four allow specification of meters to record chiller auxiliary energy use through chAuxOn, chAuxOff, chFullOff, and chAuxOnAtAll, respectively. End use category "Aux" is used. -**chAuxOnMtr=*mtrName*** +### chAuxOnMtr + +Type: mtrName **chAuxOffMtr=*mtrName*** -**chAuxFullOffMtr=*mtrName*** +### chAuxFullOffMtr + +Type: mtrName **chAuxOnAtAllMtr=*mtrName*** diff --git a/doc/src/docs/input-data/construction.md b/doc/src/docs/input-data/construction.md index f54fe8989..ae20c3d93 100644 --- a/doc/src/docs/input-data/construction.md +++ b/doc/src/docs/input-data/construction.md @@ -16,7 +16,9 @@ Name of construction. Required for reference from SURFACE and DOOR objects, belo }) }} -**conU=*float*** +### conU + +Type: float U-value for the construction (NOT including surface (air film) conductances; see SURFACE statements). If omitted, one or more LAYERs must immediately follow to specify the LAYERs that make up the construction. If specified, no LAYERs can follow. diff --git a/doc/src/docs/input-data/coolplant.md b/doc/src/docs/input-data/coolplant.md index a00f6357d..2c1554d92 100644 --- a/doc/src/docs/input-data/coolplant.md +++ b/doc/src/docs/input-data/coolplant.md @@ -24,7 +24,9 @@ Name of COOLPLANT object, given immediately after the word COOLPLANT. This name }) }} -**cpSched=*choice*** +### cpSched + +Type: choice Coolplant schedule: hourly variable choice of OFF, AVAIL, or ON. @@ -44,7 +46,9 @@ ON, COOLPLANT runs unconditionally. When no load wants chilled water, }) }} -**cpTsSp=*float*** +### cpTsSp + +Type: float Coolplant primary loop supply temperature setpoint: setpoint temperature for chilled water supplied to coils. @@ -58,7 +62,9 @@ Coolplant primary loop supply temperature setpoint: setpoint temperature for chi }) }} -**cpPipeLossF=*float*** +### cpPipeLossF + +Type: float Coolplant pipe loss: heat assumed gained from primary loop piping connecting chillers to loads whenever the COOLPLANT is operating, expressed as a fraction of the chiller capacity of the plant's most powerful stage. @@ -72,7 +78,9 @@ Coolplant pipe loss: heat assumed gained from primary loop piping connecting chi }) }} -**cpTowerplant=*name*** +### cpTowerplant + +Type: name TOWERPLANT that cools the condenser water for the chillers in this COOLPLANT. diff --git a/doc/src/docs/input-data/descond.md b/doc/src/docs/input-data/descond.md index c0f8e80ef..8420d6b1e 100644 --- a/doc/src/docs/input-data/descond.md +++ b/doc/src/docs/input-data/descond.md @@ -16,7 +16,9 @@ Object name, given after “DESCOND”. Required for referencing from Top coolD }) }} -**dcDay=*date*** +### dcDay + +Type: date Calendar date for this design cooling condition. @@ -30,7 +32,9 @@ Calendar date for this design cooling condition. }) }} -**dcDB=*float*** +### dcDB + +Type: float Design dry-bulb temperature (maxiumum temperature on design day). @@ -45,7 +49,9 @@ Design dry-bulb temperature (maxiumum temperature on design day). }} -**dcMCDBR=*float*** +### dcMCDBR + +Type: float Coincident daily dry-bulb range. @@ -59,7 +65,9 @@ Coincident daily dry-bulb range. }) }} -**dcMCWB=*float*** +### dcMCWB + +Type: float Coincident wet-bulb design temperature. @@ -73,7 +81,9 @@ Coincident wet-bulb design temperature. }) }} -**dcMCWBR=*float*** +### dcMCWBR + +Type: float Coincident daily wet-bulb range. @@ -87,7 +97,9 @@ Coincident daily wet-bulb range. }) }} -**dcWindSpeed=*float*** +### dcWindSpeed + +Type: float Wind speed for design conditions. @@ -110,7 +122,9 @@ At most one of these methods can be used within a given DESCOND. If all solar-r **dcTauB=*float*** \ -**dcTauD=*float*** +### dcTauD + +Type: float ASHRAE clear sky model beam and diffuse pseudo optical depths. These values are available by month for many locations in ASHRAE design weather data. Cannot be given if dcEbnSlrNoon and dcEdhSlrNoon are specified. @@ -126,7 +140,9 @@ ASHRAE clear sky model beam and diffuse pseudo optical depths. These values are **dcEbnSlrNoon=*float*** \ -**dcEdhSlrNoon=*float*** +### dcEdhSlrNoon + +Type: float Solar noon direct beam and diffuse horizontal irradiance. Cannot be given if dcTauB and dcTauD are specified. diff --git a/doc/src/docs/input-data/dhwdayuse.md b/doc/src/docs/input-data/dhwdayuse.md index 4da532d3c..a2f9f1cdb 100644 --- a/doc/src/docs/input-data/dhwdayuse.md +++ b/doc/src/docs/input-data/dhwdayuse.md @@ -62,7 +62,9 @@ Object name, given after “DHWDAYUSE”. Required for referencing from DHWSYS. }) }} -**wduMult=*float*** +### wduMult + +Type: float Scale factor applied to all draws in this DHWDAYUSE. diff --git a/doc/src/docs/input-data/dhwheatrec.md b/doc/src/docs/input-data/dhwheatrec.md index 6dd218c3d..6e966ab49 100644 --- a/doc/src/docs/input-data/dhwheatrec.md +++ b/doc/src/docs/input-data/dhwheatrec.md @@ -16,7 +16,9 @@ Optional name of device; give after the word “DHWHEATREC” if desired. }) }} -**wrMult=*integer*** +### wrMult + +Type: integer Number of identical heat recovery devices of this type. Any value >1 is equivalent to repeated entry of the same DHWHEATREC. @@ -30,7 +32,9 @@ Number of identical heat recovery devices of this type. Any value >1 is equivale }) }} -**wrHWEndUse=*choice*** +### wrHWEndUse + +Type: choice Hot water end use to which this DHWHEATREC is applied: one of Shower, Bath, CWashr, DWashr, or Faucet. Selects DHWUSE draws for heat recovery calculations. Currently, only Shower is supported. @@ -45,7 +49,9 @@ Hot water end use to which this DHWHEATREC is applied: one of Shower, Bath, CWas }) }} -**wrCountFXDrain=*integer*** +### wrCountFXDrain + +Type: integer Number of fixtures (of type wrHWEndUse) whose drain lines pass through this heat recovery device. wrCountFXDrain=0 causes this DHWHEATREC to have no effect (that is, equivalent to omitting the DHWHEATREC command). @@ -59,7 +65,9 @@ Hot water end use to which this DHWHEATREC is applied: one of Shower, Bath, CWas }) }} -**wrCountFXCold=*integer*** +### wrCountFXCold + +Type: integer Number of fixtures (of type wrHWEndUse) with cold water supply connected to the DHWHEATREC potable-side outlet and thus use tempered water to mix with hot water. @@ -73,7 +81,9 @@ Hot water end use to which this DHWHEATREC is applied: one of Shower, Bath, CWas }) }} -**wrFeedsWH=*choice*** +### wrFeedsWH + +Type: choice Specifies whether the potable-side outlet of the DHWHEATREC is connected to the DHWHEATER(s) inlet. @@ -87,7 +97,9 @@ Specifies whether the potable-side outlet of the DHWHEATREC is connected to the }) }} -**wrType=*choice*** +### wrType + +Type: choice Specifies the type of heat recovery device: Vertical, Horizontal, or SetEF. Horizontal and Vertical derive effectiveness from wrCSARatedEF, flow rates, and water temperatures. As of Feb. 2019, the same correlation is used for both Horizontal and Vertical, so these choices have no effect on results. Choice SetEF uses wrCSARatedEF without modification as the effectiveness (note hourly variability). @@ -115,7 +127,9 @@ Specifies the heat recovery effectiveness, generally determined using CSA B55.2 }) }} -**wrTDInDiff=*float*** +### wrTDInDiff + +Type: float Temperature drop between the fixture drain and DHWHEATREC drain-side inlet. The drain-side inlet temperature is thus DHWUSE wuTemp - wrTDInDiff. @@ -129,7 +143,9 @@ Temperature drop between the fixture drain and DHWHEATREC drain-side inlet. The }) }} -**wrTDInWarmup=*float*** +### wrTDInWarmup + +Type: float Drain-side inlet water temperature during warmup. During the warmup portion of a draw (if any), the drain-side inlet temperature will initially be lower than that based on DHWUSE wuTemp. wrTDInWarmup allows input of user estimates for this temperature. Note wrTDInWarmup is *not* adjusted by wrTDInDiff. diff --git a/doc/src/docs/input-data/dhwloop.md b/doc/src/docs/input-data/dhwloop.md index eed95ef02..54343b994 100644 --- a/doc/src/docs/input-data/dhwloop.md +++ b/doc/src/docs/input-data/dhwloop.md @@ -16,7 +16,9 @@ Optional name of loop; give after the word “DHWLOOP” if desired. }) }} -**wlMult=*integer*** +### wlMult + +Type: integer Number of identical loops of this type. Any value $>1$ is equivalent to repeated entry of the same DHWLOOP (and all child objects). @@ -30,7 +32,9 @@ Number of identical loops of this type. Any value $>1$ is equivalent to repeated }) }} -**wlFlow=*float*** +### wlFlow + +Type: float Loop flow rate (when operating). @@ -44,7 +48,9 @@ Loop flow rate (when operating). }) }} -**wlTIn1=*float*** +### wlTIn1 + +Type: float Inlet temperature of first DHWLOOPSEG. @@ -58,7 +64,9 @@ Inlet temperature of first DHWLOOPSEG. }) }} -**wlRunF=*float*** +### wlRunF + +Type: float Fraction of hour that loop circulation operates. @@ -72,7 +80,9 @@ Fraction of hour that loop circulation operates. }) }} -**wlFUA=*float*** +### wlFUA + +Type: float DHWLOOPSEG pipe heat loss adjustment factor. DHWLOOPSEG UA is derived (from wgSize, wgLength, wgInsulK, wgInsulThk, and wgExH) and multiplied by wlFUA. Note: does not apply to child DHWLOOPBRANCHs (see wbFUA). @@ -86,7 +96,9 @@ DHWLOOPSEG pipe heat loss adjustment factor. DHWLOOPSEG UA is derived (from wgS }) }} -**wlLossMakeupPwr=*float*** +### wlLossMakeupPwr + +Type: float Specifies electrical power available to make up losses from DHWLOOPSEGs (loss from DHWLOOPBRANCHs is not included). Separate loss makeup is typically used in multi-unit HPWH systems to avoid inefficiencies associated with high condenser temperatures. Loss-makeup energy is calculated hourly and is the smaller of loop losses and wlLossMakeupPwr. The resulting electricity use (including the effect of wlLossMakeupEff) is accumulated to the METER specified by wlElecMtr (end use dhwMFL). No other effect, such as heat gain to surroundings, is modeled. @@ -100,7 +112,9 @@ Specifies electrical power available to make up losses from DHWLOOPSEGs (loss fr }) }} -**wlLossMakeupEff=*float*** +### wlLossMakeupEff + +Type: float Specifies the efficiency of loss makeup heating if any. No effect when wlLossMakeupPwr is 0. @@ -114,7 +128,9 @@ Specifies the efficiency of loss makeup heating if any. No effect when wlLossMa }) }} -**wlElecMtr=*mtrName*** +### wlElecMtr + +Type: mtrName Name of METER object, if any, to which DHWLOOP electrical energy use is recorded (under end use dhwMFL). diff --git a/doc/src/docs/input-data/dhwloopbranch.md b/doc/src/docs/input-data/dhwloopbranch.md index f74a5658d..b6d03f19a 100644 --- a/doc/src/docs/input-data/dhwloopbranch.md +++ b/doc/src/docs/input-data/dhwloopbranch.md @@ -16,7 +16,9 @@ Optional name of segment; give after the word “DHWLOOPBRANCH” if desired. }) }} -**wbMult=*float*** +### wbMult + +Type: float Specifies the number of identical DHWLOOPBRANCHs. Note may be non-integer. @@ -30,7 +32,9 @@ Specifies the number of identical DHWLOOPBRANCHs. Note may be non-integer. }) }} -**wbLength=*float*** +### wbLength + +Type: float Length of branch. @@ -44,7 +48,9 @@ Length of branch. }) }} -**wbSize=*float*** +### wbSize + +Type: float Nominal size of pipe. CSE assumes the pipe outside diameter = size + 0.125 in. @@ -58,7 +64,9 @@ Nominal size of pipe. CSE assumes the pipe outside diameter = size + 0.125 in. }) }} -**wbInsulK=*float*** +### wbInsulK + +Type: float Pipe insulation conductivity @@ -72,7 +80,9 @@ Pipe insulation conductivity }) }} -**wbInsulThk=*float*** +### wbInsulThk + +Type: float Pipe insulation thickness @@ -86,7 +96,9 @@ Pipe insulation thickness }) }} -**wbExH=*float*** +### wbExH + +Type: float Combined radiant/convective exterior surface conductance between insulation (or pipe if no insulation) and surround. @@ -100,7 +112,9 @@ Combined radiant/convective exterior surface conductance between insulation (or }) }} -**wbExCnd=*choice*** +### wbExCnd + +Type: choice Specify exterior conditions. @@ -123,7 +137,9 @@ GROUND, Ground conditions", True) }) }} -**wbAdjZn=*float*** +### wbAdjZn + +Type: float Boundary conditions for adjacent zones. @@ -137,7 +153,9 @@ Boundary conditions for adjacent zones. }) }} -**wbExTX=*float*** +### wbExTX + +Type: float External boundary conditions. @@ -151,7 +169,9 @@ External boundary conditions. }) }} -**wbFUA=*float*** +### wbFUA + +Type: float Adjustment factor applied to branch UA. UA is derived (from wbSize, wbLength, wbInsulK, wbInsulThk, and wbExH) and then multiplied by wbFUA. Used to represent e.g. imperfect insulation. Note that parent DHWLOOP wlFUA does not apply to DHWLOOPBRANCH (only DHWLOOPSEG) @@ -165,7 +185,9 @@ Adjustment factor applied to branch UA. UA is derived (from wbSize, wbLength, w }) }} -**wbExT=*float*** +### wbExT + +Type: float Surrounding equivalent temperature. @@ -179,7 +201,9 @@ Surrounding equivalent temperature. }) }} -**wbFlow=*float*** +### wbFlow + +Type: float Branch flow rate assumed during draw. @@ -193,7 +217,9 @@ Branch flow rate assumed during draw. }) }} -**wbFWaste=*float*** +### wbFWaste + +Type: float Number of times during the hour when the branch volume is discarded. diff --git a/doc/src/docs/input-data/dhwlooppump.md b/doc/src/docs/input-data/dhwlooppump.md index 29d7a6c00..c313ea862 100644 --- a/doc/src/docs/input-data/dhwlooppump.md +++ b/doc/src/docs/input-data/dhwlooppump.md @@ -16,7 +16,9 @@ Optional name of pump; give after the word “DHWLOOPPUMP” if desired. }) }} -**wlpMult=*integer*** +### wlpMult + +Type: integer Number of identical pumps of this type. Any value $>1$ is equivalent to repeated entry of the same DHWPUMP. @@ -30,7 +32,9 @@ Number of identical pumps of this type. Any value $>1$ is equivalent to repeated }) }} -**wlpPwr=*float*** +### wlpPwr + +Type: float Pump power. @@ -44,7 +48,9 @@ Pump power. }) }} -**wlpLiqHeatF=*float*** +### wlpLiqHeatF + +Type: float Fraction of pump power that heats circulating liquid. The remainder is discarded. @@ -58,7 +64,9 @@ Fraction of pump power that heats circulating liquid. The remainder is discarde }) }} -**wlpElecMtr=*mtrName*** +### wlpElecMtr + +Type: mtrName Name of METER object, if any, to which DHWLOOPPUMP electrical energy use is recorded (under end use dhwMFL). diff --git a/doc/src/docs/input-data/dhwloopseg.md b/doc/src/docs/input-data/dhwloopseg.md index 72e16b9f8..b868eddc8 100644 --- a/doc/src/docs/input-data/dhwloopseg.md +++ b/doc/src/docs/input-data/dhwloopseg.md @@ -16,7 +16,9 @@ Optional name of segment; give after the word “DHWLOOPSEG” if desired. }) }} -**wgTy=*choice*** +### wgTy + +Type: choice Specifies the type of segment. RETURN segments, if any, must follow SUPPLY segments. @@ -35,7 +37,9 @@ Specifies the type of segment. RETURN segments, if any, must follow SUPPLY segm }) }} -**wgLength=*float*** +### wgLength + +Type: float Length of segment. @@ -49,7 +53,9 @@ Length of segment. }) }} -**wgSize=*float*** +### wgSize + +Type: float Nominal size of pipe. CSE assumes the pipe outside diameter = size + 0.125 in. @@ -63,7 +69,9 @@ Nominal size of pipe. CSE assumes the pipe outside diameter = size + 0.125 in. }) }} -**wgInsulK=*float*** +### wgInsulK + +Type: float Pipe insulation conductivity @@ -77,7 +85,9 @@ Pipe insulation conductivity }) }} -**wgInsulThk=*float*** +### wgInsulThk + +Type: float Pipe insulation thickness @@ -91,7 +101,9 @@ Pipe insulation thickness }) }} -**wgExH=*float*** +### wgExH + +Type: float Combined radiant/convective exterior surface conductance between insulation (or pipe if no insulation) and surround. @@ -105,7 +117,9 @@ Combined radiant/convective exterior surface conductance between insulation (or }) }} -**wgExT=*float*** +### wgExT + +Type: float Surrounding equivalent temperature. @@ -119,7 +133,9 @@ Surrounding equivalent temperature. }) }} -**wgFNoDraw=*float*** +### wgFNoDraw + +Type: float Fraction of hour when no draw occurs. diff --git a/doc/src/docs/input-data/dhwpump.md b/doc/src/docs/input-data/dhwpump.md index 7d988eb28..d43063a7a 100644 --- a/doc/src/docs/input-data/dhwpump.md +++ b/doc/src/docs/input-data/dhwpump.md @@ -16,7 +16,9 @@ Optional name of pump; give after the word “DHWPUMP” if desired. }) }} -**wpMult=*integer*** +### wpMult + +Type: integer Number of identical pumps of this type. Any value $>1$ is equivalent to repeated entry of the same DHWPUMP. @@ -30,7 +32,9 @@ Number of identical pumps of this type. Any value $>1$ is equivalent to repeated }) }} -**wpPwr=*float*** +### wpPwr + +Type: float Pump power. @@ -44,7 +48,9 @@ Pump power. }) }} -**wpElecMtr=*mtrName*** +### wpElecMtr + +Type: mtrName Name of METER object, if any, to which DHWPUMP electrical energy use is recorded (under end use DHW). diff --git a/doc/src/docs/input-data/dhwsolarcollector.md b/doc/src/docs/input-data/dhwsolarcollector.md index 5b167d1df..61830b879 100644 --- a/doc/src/docs/input-data/dhwsolarcollector.md +++ b/doc/src/docs/input-data/dhwsolarcollector.md @@ -4,7 +4,9 @@ Solar Collector Array. May be multiple collectors on the same DHWSOLARSYS system Uses SRCC Ratings. -**scArea=*float*** +### scArea + +Type: float Collector area. @@ -32,7 +34,9 @@ Number of identical collectors, default 1 }) }} -**scTilt=*float*** +### scTilt + +Type: float Array tilt. @@ -46,7 +50,9 @@ Array tilt. }) }} -**scAzm=*float*** +### scAzm + +Type: float Array azimuth. @@ -60,7 +66,9 @@ Array azimuth. }) }} -**scFRUL=*float*** +### scFRUL + +Type: float Fit slope @@ -74,7 +82,9 @@ Fit slope }) }} -**scFRTA=*float*** +### scFRTA + +Type: float Fit y-intercept @@ -88,7 +98,9 @@ Fit y-intercept }) }} -**scTestMassFlow=*flaot*** +### scTestMassFlow + +Type: flaot Mass flow rate for collector loop SRCC rating. @@ -102,7 +114,9 @@ Mass flow rate for collector loop SRCC rating. }) }} -**scKta60=*float*** +### scKta60 + +Type: float Incident angle modifier at 60 degree, from SRCC rating. @@ -116,7 +130,9 @@ Incident angle modifier at 60 degree, from SRCC rating. }) }} -**scOprMassFlow=*float*** +### scOprMassFlow + +Type: float Collector loop operating mass flow rate. @@ -130,7 +146,9 @@ Collector loop operating mass flow rate. }) }} -**scPipingLength=*float*** +### scPipingLength + +Type: float Collector piping length. @@ -144,7 +162,9 @@ Collector piping length. }) }} -**scPipingInsulK=*float*** +### scPipingInsulK + +Type: float Collector piping insulation conductivity. @@ -158,7 +178,9 @@ Collector piping insulation conductivity. }) }} -**scPipingInsulThk=*float*** +### scPipingInsulThk + +Type: float Collector piping insulation thickness. @@ -172,7 +194,9 @@ Collector piping insulation thickness. }) }} -**scPipingExH=*float*** +### scPipingExH + +Type: float Collector piping heat transfer coefficient. @@ -186,7 +210,9 @@ Collector piping heat transfer coefficient. }) }} -**scPipingExT=*float*** +### scPipingExT + +Type: float Collector piping surround temperature. @@ -200,7 +226,9 @@ Collector piping surround temperature. }) }} -**scPumpPwr=*float*** +### scPumpPwr + +Type: float {{ member_table({ @@ -212,7 +240,9 @@ Collector piping surround temperature. }) }} -**scPumpLiqHeatF=*float*** +### scPumpLiqHeatF + +Type: float Fraction of scPumpPwr added to liquid stream, the remainder is discarded. @@ -226,7 +256,9 @@ Fraction of scPumpPwr added to liquid stream, the remainder is discarded. }) }} -**scPumpOnDeltaT=*float*** +### scPumpOnDeltaT + +Type: float Temperature difference between the tank and collector outlet where pump turns on @@ -240,7 +272,9 @@ Temperature difference between the tank and collector outlet where pump turns on }) }} -**scPumpOffDeltaT=*float*** +### scPumpOffDeltaT + +Type: float Temperature difference between the tank and collector outlet where pump turns off diff --git a/doc/src/docs/input-data/dhwsolarsys.md b/doc/src/docs/input-data/dhwsolarsys.md index f4e76acd9..0aaed127a 100644 --- a/doc/src/docs/input-data/dhwsolarsys.md +++ b/doc/src/docs/input-data/dhwsolarsys.md @@ -10,7 +10,9 @@ May have any number of solar collectors, but only one tank. May have no tank for direct system? What if system has multiple primary tanks? -**swElecMtr=*mtrName*** +### swElecMtr + +Type: mtrName Name of METER object, if any, to which DHWSOLARSYS electrical energy use is recorded (under end use ???). @@ -24,7 +26,9 @@ Name of METER object, if any, to which DHWSOLARSYS electrical energy use is reco }) }} -**swSCFluidSpHt=*float*** +### swSCFluidSpHt + +Type: float Specific heat for the collector fluid. @@ -38,7 +42,9 @@ Specific heat for the collector fluid. }) }} -**swSCFluidDens=*float*** +### swSCFluidDens + +Type: float Density for the collector fluid. @@ -56,7 +62,9 @@ Density for the collector fluid. End use of pump energy; defaults to "DHW". -**swParElec=*float*** +### swParElec + +Type: float {{ member_table({ @@ -68,7 +76,9 @@ End use of pump energy; defaults to "DHW". }) }} -**swTankHXEff=*float*** +### swTankHXEff + +Type: float Tank heat exchanger effectiveness. @@ -82,7 +92,9 @@ Tank heat exchanger effectiveness. }) }} -**swTankTHxLimit=*float*** +### swTankTHxLimit + +Type: float Temperature limit for the tank collector. @@ -96,7 +108,9 @@ Temperature limit for the tank collector. }) }} -**swTankUA=*float*** +### swTankUA + +Type: float Heat transfer coefficient for the tank multiplied by area. @@ -110,7 +124,9 @@ Heat transfer coefficient for the tank multiplied by area. }) }} -**swTankVol=*float*** +### swTankVol + +Type: float {{ member_table({ @@ -122,7 +138,9 @@ Heat transfer coefficient for the tank multiplied by area. }) }} -**swTankInsulR=*float*** +### swTankInsulR + +Type: float Total tank insulation resistance, built-in plus exterior wrap. @@ -136,7 +154,9 @@ Total tank insulation resistance, built-in plus exterior wrap. }) }} -**swTankZone=*znName*** +### swTankZone + +Type: znName Pointer to tank zone location, use sw_tankTEx if NULL @@ -150,7 +170,9 @@ Pointer to tank zone location, use sw_tankTEx if NULL }) }} -**swTankTEx=*float*** +### swTankTEx + +Type: float Surrounding temperature. diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index b0e385918..8c1647844 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -31,7 +31,9 @@ Optional name of system; give after the word “DHWSYS” if desired. }) }} -**wsCalcMode=*choice*** +### wsCalcMode + +Type: choice Enables preliminary simulation that derives values needed for simulation. @@ -61,7 +63,9 @@ This order avoids duplicate time-consuming simulation of the full building model }) }} -**wsCentralDHWSYS=*dhwsysName*** +### wsCentralDHWSYS + +Type: dhwsysName Name of the central DHWSYS that serves this DHWSYS, allowing representation of multiple units having distinct distribution configurations and/or water use patterns but served by a central DHWSYS. The child DHWSYS(s) may not include DHWHEATERs -- they are "loads only" systems. wsCentralDHWSYS and wsLoadShareDHWSYS cannot both be given. @@ -75,7 +79,9 @@ This order avoids duplicate time-consuming simulation of the full building model }) }} -**wsLoadShareDHWSYS=*dhwsysName*** +### wsLoadShareDHWSYS + +Type: dhwsysName Name of a DHWSYS that serves the same loads as this DHWSYS, allowing representation of multiple water heating systems within a unit. If given, wsUse and wsDayUse are not allowed, hot water requirements are derived from the referenced DHWSYS. wsCentralDHWSYS and wsLoadShareDHWSYS cannot both be given. @@ -94,7 +100,9 @@ This order avoids duplicate time-consuming simulation of the full building model }) }} -**wsMult=*float*** +### wsMult + +Type: float Number of identical systems of this type (including all child objects). Any value $> 1$ is equivalent to repeated entry of the same DHWSYS. A value of 0 is equivalent to omitting the DHWSYS. Non-integral values scale all results; this may be useful in parameterized models, for example. @@ -112,7 +120,9 @@ Number of identical systems of this type (including all child objects). Any valu **wsShowerCount=*integer***\ **wsBathCount=*integer***\ **wsCWashrCount=*integer***\ -**wsDWashrCount=*integer*** +### wsDWashrCount + +Type: integer Specifies the count of fixtures served by this DHWSYS that can accommodate draws of each end use (see DHWUSE). These counts are used for distributing draws in shared load configurations (multiple DHWSYSs serving the same loads, see wsLoadShareDHWSYS above). @@ -130,7 +140,9 @@ Unless this DHWSYS is part of a shared-load group or includes DHWHEATREC(s), the }) }} -**wsTInlet=*float*** +### wsTInlet + +Type: float Specifies cold (mains) water temperature supplying this DHWSYS. DHWHEATER supply water temperature wsTInlet adjusted (increased) by any DHWHEATREC recovered heat and application of wsSSF (approximating solar preheating). @@ -144,7 +156,9 @@ Specifies cold (mains) water temperature supplying this DHWSYS. DHWHEATER suppl }) }} -**wsTInletTest=*float*** +### wsTInletTest + +Type: float Overides at the substep interval the cold (mains) water temperature supplying this DHWSYS. @@ -160,7 +174,9 @@ CAUTION: wsTInletTest is intended for testing and model validation studies and s }) }} -**wsTInletDes=*float*** +### wsTInletDes + +Type: float Cold water inlet design temperature for sizing. @@ -174,7 +190,9 @@ Cold water inlet design temperature for sizing. }) }} -**wsUse=*float*** +### wsUse + +Type: float Hourly hot water use (at the point of use). See further info under wsDayUse. @@ -188,7 +206,9 @@ Hourly hot water use (at the point of use). See further info under wsDayUse. }) }} -**wsUseTest=*float*** +### wsUseTest + +Type: float Additional substep hot water use added to draw(s) specfied by wsHWUse and wsDayUse. @@ -204,7 +224,9 @@ CAUTION: wsUseTest is intended for testing and model validation studies and shou }) }} -**wsDayUse=*dhwdayuseName*** +### wsDayUse + +Type: dhwdayuseName Name of DHWDAYUSE object that specifies a detailed schedule of mixed water use at points of hot water use (that is, "at the tap"). The mixed water amounts are used to derive hot water requirements based on specified mixing fractions or mixed water temperature (see DHWDAYUSE and DHWUSE). @@ -229,7 +251,9 @@ CAUTION: wsUseTest is intended for testing and model validation studies and shou }) }} -**wsFaucetDrawDurF=*float*** +### wsFaucetDrawDurF + +Type: float Water heater draw duration factor for faucets. Defined as the ratio of the actual draw duration (including time waiting for hot water to arrive at the fixture) to the nominal draw duration (as though hot water was instantly available). @@ -243,7 +267,9 @@ Water heater draw duration factor for faucets. Defined as the ratio of the actua }) }} -**wsShowerDrawDurF=*float*** +### wsShowerDrawDurF + +Type: float Water heater draw duration factor for showers. Defined as the ratio of the actual draw duration (including time waiting for hot water to arrive at the fixture) to the nominal draw duration (as though hot water was instantly available). @@ -257,7 +283,9 @@ Water heater draw duration factor for showers. Defined as the ratio of the actua }) }} -**wsBathDrawDurF=*float*** +### wsBathDrawDurF + +Type: float Water heater draw duration factor for baths. Defined as the ratio of the actual draw duration (including time waiting for hot water to arrive at the fixture) to the nominal draw duration (as though hot water was instantly available). @@ -271,7 +299,9 @@ Water heater draw duration factor for baths. Defined as the ratio of the actual }) }} -**wsCWashrDrawDurF=*float*** +### wsCWashrDrawDurF + +Type: float Water heater draw duration factor for clothes washers. Defined as the ratio of the actual draw duration (including time waiting for hot water to arrive at the fixture) to the nominal draw duration (as though hot water was instantly available). @@ -285,7 +315,9 @@ Water heater draw duration factor for clothes washers. Defined as the ratio of t }) }} -**wsDWashrDurF=*float*** +### wsDWashrDurF + +Type: float Water heater draw duration factor for dishwashers. Defined as the ratio of the actual draw duration (including time waiting for hot water to arrive at the fixture) to the nominal draw duration (as though hot water was instantly available). @@ -299,7 +331,9 @@ Water heater draw duration factor for dishwashers. Defined as the ratio of the a }) }} -**wsUnkDrawDurF=*float*** +### wsUnkDrawDurF + +Type: float Water heater draw duration factor for unknown end use. Defined as the ratio of the actual draw duration (including time waiting for hot water to arrive at the fixture) to the nominal draw duration (as though hot water was instantly available). @@ -313,7 +347,9 @@ Water heater draw duration factor for unknown end use. Defined as the ratio of t }) }} -**wsFaucetDrawWaste=*float*** +### wsFaucetDrawWaste + +Type: float Draw water waste for faucets. Specifies additional draw volume per DHWUSE event (at fixture, by end use). This can be used to account for water discarded during warmup or otherwise adjust the draw volume. Because the values are at the fixture, the impact on hot water demand additionally depends on DHWUSE parameters. The value is applied by lengthening (or shortening) the draw duration. @@ -327,7 +363,9 @@ Draw water waste for faucets. Specifies additional draw volume per DHWUSE event }) }} -**wsShowerDrawWaste=*float*** +### wsShowerDrawWaste + +Type: float Draw water waste for showers. Specifies additional draw volume per DHWUSE event (at fixture, by end use). This can be used to account for water discarded during warmup or otherwise adjust the draw volume. Because the values are at the fixture, the impact on hot water demand additionally depends on DHWUSE parameters. The value is applied by lengthening (or shortening) the draw duration. @@ -341,7 +379,9 @@ Draw water waste for showers. Specifies additional draw volume per DHWUSE event }) }} -**wsBathDrawWaste=*float*** +### wsBathDrawWaste + +Type: float Draw water waste for baths. Specifies additional draw volume per DHWUSE event (at fixture, by end use). This can be used to account for water discarded during warmup or otherwise adjust the draw volume. Because the values are at the fixture, the impact on hot water demand additionally depends on DHWUSE parameters. The value is applied by lengthening (or shortening) the draw duration. @@ -355,7 +395,9 @@ Draw water waste for baths. Specifies additional draw volume per DHWUSE event (a }) }} -**wsCWashrDrawWaste=*float*** +### wsCWashrDrawWaste + +Type: float Draw water waste for clothes washers. Specifies additional draw volume per DHWUSE event (at fixture, by end use). This can be used to account for water discarded during warmup or otherwise adjust the draw volume. Because the values are at the fixture, the impact on hot water demand additionally depends on DHWUSE parameters. The value is applied by lengthening (or shortening) the draw duration. @@ -369,7 +411,9 @@ Draw water waste for clothes washers. Specifies additional draw volume per DHWUS }) }} -**wsDWashrDrawWaste=*float*** +### wsDWashrDrawWaste + +Type: float Draw water waste for dishwashers. Specifies additional draw volume per DHWUSE event (at fixture, by end use). This can be used to account for water discarded during warmup or otherwise adjust the draw volume. Because the values are at the fixture, the impact on hot water demand additionally depends on DHWUSE parameters. The value is applied by lengthening (or shortening) the draw duration. @@ -383,7 +427,9 @@ Draw water waste for dishwashers. Specifies additional draw volume per DHWUSE ev }) }} -**wsUnkDrawWaste=*float*** +### wsUnkDrawWaste + +Type: float Draw water waste for unknown end use. Specifies additional draw volume per DHWUSE event (at fixture, by end use). This can be used to account for water discarded during warmup or otherwise adjust the draw volume. Because the values are at the fixture, the impact on hot water demand additionally depends on DHWUSE parameters. The value is applied by lengthening (or shortening) the draw duration. @@ -397,7 +443,9 @@ Draw water waste for unknown end use. Specifies additional draw volume per DHWUS }) }} -**wsTRLTest=*float*** +### wsTRLTest + +Type: float Circulation loop return temperature for testing and validation. @@ -411,7 +459,9 @@ Circulation loop return temperature for testing and validation. }) }} -**wsVolRLTest=*float*** +### wsVolRLTest + +Type: float Circulation loop volume flow rate for testing and validation. @@ -426,7 +476,9 @@ Circulation loop volume flow rate for testing and validation. }} -**wsBranchModel=*choice*** +### wsBranchModel + +Type: choice Branch model selection. @@ -437,7 +489,9 @@ DRAWWASTE,Draw duration increase per draw waste DAYWASTE,draw duration increase per day waste", True) }} -**wsDayWasteVol=*float*** +### wsDayWasteVol + +Type: float Average amount of waste per day. @@ -451,7 +505,9 @@ Average amount of waste per day. }) }} -**wsDayWasteBranchVolF=*float*** +### wsDayWasteBranchVolF + +Type: float Day waste scaling factor. @@ -465,7 +521,9 @@ Day waste scaling factor. }) }} -**wsFaucetDayWasteF=*float*** +### wsFaucetDayWasteF + +Type: float Relative faucet water draw for day of waste scheme. @@ -479,7 +537,9 @@ Relative faucet water draw for day of waste scheme. }) }} -**wsShowerDayWasteF=*float*** +### wsShowerDayWasteF + +Type: float Relative shower water draw for day of waste scheme. @@ -493,7 +553,9 @@ Relative shower water draw for day of waste scheme. }) }} -**wsBathDayWasteF=*float*** +### wsBathDayWasteF + +Type: float Relative bath water draw for day of waste scheme. @@ -507,7 +569,9 @@ Relative bath water draw for day of waste scheme. }) }} -**wsCWashrDayWasteF=*float*** +### wsCWashrDayWasteF + +Type: float Relative clothes washer water draw for day of waste scheme. @@ -521,7 +585,9 @@ Relative clothes washer water draw for day of waste scheme. }) }} -**wsDWashrDayWasteF=*float*** +### wsDWashrDayWasteF + +Type: float Relative dish washer water draw for day of waste scheme. @@ -535,7 +601,9 @@ Relative dish washer water draw for day of waste scheme. }) }} -**wsUnkDayWasteF=*float*** +### wsUnkDayWasteF + +Type: float Unknown relative water draw for day of waste scheme. @@ -549,7 +617,9 @@ Unknown relative water draw for day of waste scheme. }) }} -**wsTUse=*float*** +### wsTUse + +Type: float Hot water delivery temperature (at output of water heater(s) and at point of use). Delivered water is mixed down to wsTUSe (with cold water) or heated to wsTUse (with extra electric resistance backup, see DHWHEATER whXBUEndUse). Note that draws defined via DHWDAYUSE / DHWUSE can specify mixing to a lower temperature. @@ -563,7 +633,9 @@ Hot water delivery temperature (at output of water heater(s) and at point of use }) }} -**wsTUseTest=*float*** +### wsTUseTest + +Type: float Overides at the substep interval the hot water delivery temperature. @@ -579,7 +651,9 @@ CAUTION: wsTUseTest is intended for testing and model validation studies and sho }) }} -**wsTSetPoint=*float*** +### wsTSetPoint + +Type: float Specifies the hot water setpoint temperature for all child DHWHEATERs. Used only for HPWH-based DHWHEATERs (HPWH models tank temperatures and heating controls), otherwise has no effect. wsTSetpoint can be modified hourly to achieve load-shifting effects. @@ -593,7 +667,9 @@ CAUTION: wsTUseTest is intended for testing and model validation studies and sho }) }} -**wsTSetPointLH=*float*** +### wsTSetPointLH + +Type: float Specifies the hot water set point temperature for all child DHWLOOPHEATERs. Used only for HPWH-based DHWHLOOPEATERs (HPWH explicitly models tank temperatures and heating controls), otherwise has no effect. @@ -607,7 +683,9 @@ CAUTION: wsTUseTest is intended for testing and model validation studies and sho }) }} -**wsTSetpointDes=*float*** +### wsTSetpointDes + +Type: float Specifies the design (sizing) set point temperature. @@ -621,7 +699,9 @@ Specifies the design (sizing) set point temperature. }) }} -**wsVolRunningDes=*float*** +### wsVolRunningDes + +Type: float Running volume for design. Active volume (above aquastat) equals to a full tank volume, defaults from EcoSizer at end of prerun if not input. No direct use, must be passed to DHWHEATER via ALTER. @@ -635,7 +715,9 @@ Running volume for design. Active volume (above aquastat) equals to a full tank }) }} -**wsASHPTSrcDes=*float*** +### wsASHPTSrcDes + +Type: float Design (sizing) source air temperature for HPWH DHWHEATERs. @@ -649,7 +731,9 @@ Design (sizing) source air temperature for HPWH DHWHEATERs. }) }} -**wsFxDes=*float*** +### wsFxDes + +Type: float Excess size factor for domestic hot water design. wsFxDes is applied when wsHeatingCapDes and/or wsVolRunningDes are defaulted from EcoSizer at the end of the prerun. There is no effect if those values are input. @@ -663,7 +747,9 @@ Excess size factor for domestic hot water design. wsFxDes is applied when wsHeat }) }} -**wsDRMethod=*choice*** +### wsDRMethod + +Type: choice Selects alternative control schemes for HPWH-based DHWHEATERs. These allow shifting primary heater (compressor or resistance element) operation to times of day that have load-management advantages. @@ -684,7 +770,9 @@ STATEOFCHARGE, State-of-charge (see wsTargetSOC)", True) }) }} -**wsDRSignal=*choice*** +### wsDRSignal + +Type: choice When (and only when) wsDRMethod=SCHEDULE, wsDRSignal allows hourly specification of modified control schemes. Available signals are: @@ -724,7 +812,9 @@ Note also that wsTSetpoint can be also be modified hourly to achieve load-shifti }) }} -**wsTargetSOC=*float*** +### wsTargetSOC + +Type: float When (and only when) wsDRMethod=STATEOFCHARGE, wsTargetSOC specifies the target fraction of maximum tank heat content. The tank is deemed fully charged when its entire contents is at wsTSetpoint and 0 charged at 110 ^o^F. Schedules are used to indicate anticipated heat requirements. The STATEOFCHARGE method can be used in combined heat / DHW systems (see RSYS rsType=COMBINEDHEATDHW) when there is excess capacity during summer months, as shown in the following: @@ -751,7 +841,9 @@ wsTargetSOC = select( }) }} -**wsSDLM=*float*** +### wsSDLM + +Type: float Specifies the standard distribution loss multiplier. See App B Eqn 4. To duplicate CEC 2019 methods, this value should be set according to the value derived with App B Eqn 5. @@ -765,7 +857,9 @@ Specifies the standard distribution loss multiplier. See App B Eqn 4. To duplica }) }} -**wsDSM=*float*** +### wsDSM + +Type: float Distribution system multiplier. See RACM App B Eqn 4. To duplicate CEC 2016 methods, wsDSM should be set to the appropriate value from App B Table B-2. Note the NCF (non-compliance factor) included in App B Eqn 4 is *not* a CSE input and thus must be applied externally to wsDSM. @@ -779,7 +873,9 @@ Distribution system multiplier. See RACM App B Eqn 4. To duplicate CEC 2016 meth }) }} -**wsWF=*float*** +### wsWF + +Type: float Waste factor. See RACM App B Eqn 1. wsWF is applied to hot water draws. The default value (1) reflects the inclusion of waste in draw amounts. App B specifies wsWF=0.9 when the system has a within-unit pumped loop that reduces waste due to immediate availability of hot water at fixtures. @@ -793,7 +889,9 @@ Waste factor. See RACM App B Eqn 1. wsWF is applied to hot water draws. The def }) }} -**wsSSF=*float*** +### wsSSF + +Type: float NOTE: Deprecated. Use wsSolarSys instead. @@ -814,7 +912,9 @@ where tInletAdj is the source cold water temperature *including any DHWHEATREC t }) }} -**wsSolarSys=*dhwSolarSys*** +### wsSolarSys + +Type: dhwSolarSys Name of DHWSOLARSYS object, if any, that supplies pre-heated water to this DHWSYS. @@ -828,7 +928,9 @@ Name of DHWSOLARSYS object, if any, that supplies pre-heated water to this DHWSY }) }} -**wsParElec=*float*** +### wsParElec + +Type: float Specifies electrical parasitic power to represent recirculation pumps or other system-level electrical devices. Calculated energy use is accumulated to the METER specified by wsElecMtr (end use DHW). No other effect, such as heat gain to surroundings, is modeled. @@ -842,7 +944,9 @@ Specifies electrical parasitic power to represent recirculation pumps or other s }) }} -**wsDrawMaxDur=*integer*** +### wsDrawMaxDur + +Type: integer Maximum draw duration for the sizing window. @@ -856,7 +960,9 @@ Maximum draw duration for the sizing window. }) }} -**wsLoadMaxDur=*integer*** +### wsLoadMaxDur + +Type: integer Maximum load duration for the sizing window. @@ -870,7 +976,9 @@ Maximum load duration for the sizing window. }) }} -**wsElecMtr=*mtrName*** +### wsElecMtr + +Type: mtrName Name of METER object, if any, to which DHWSYS electrical energy use is recorded (under end use DHW). In addition, wsElecMtr provides the default whElectMtr selection for all DHWHEATERs and DHWPUMPs in this DHWSYS. @@ -898,7 +1006,9 @@ Name of METER object, if any, to which DHWSYS fuel energy use is recorded (under }) }} -**wsWHhwMtr=*dhwmtrName*** +### wsWHhwMtr + +Type: dhwmtrName Name of DHWMETER object, if any, to which hot water quantities (at water heater) are recorded by hot water end use. diff --git a/doc/src/docs/input-data/dhwtank.md b/doc/src/docs/input-data/dhwtank.md index 50436a0ce..2cd7df457 100644 --- a/doc/src/docs/input-data/dhwtank.md +++ b/doc/src/docs/input-data/dhwtank.md @@ -16,7 +16,9 @@ Optional name of tank; give after the word “DHWTANK” if desired. }) }} -**wtMult=*integer*** +### wtMult + +Type: integer Number of identical tanks of this type. Any value $>1$ is equivalent to repeated entry of the same DHWTANK. @@ -34,7 +36,9 @@ Tank heat loss is calculated hourly (note that default heat loss is 0) -- $$\text{qLoss} = \text{wtMult} \cdot (\text{wtUA} \cdot (\text{wtTTank} - \text{wtTEx}) + \text{wtXLoss})$$ -**wtUA=*float*** +### wtUA + +Type: float Tank heat loss coefficient. @@ -48,7 +52,9 @@ Tank heat loss coefficient. }) }} -**wtVol=*float*** +### wtVol + +Type: float Specifies tank volume. @@ -62,7 +68,9 @@ Specifies tank volume. }) }} -**wtInsulR=*float*** +### wtInsulR + +Type: float Specifies total tank insulation resistance. The input value should represent the total resistance from the water to the surroundings, including both built-in insulation and additional exterior wrap insulation. @@ -76,7 +84,9 @@ Specifies total tank insulation resistance. The input value should represent the }) }} -**wtZone=*znName*** +### wtZone + +Type: znName Zone location of DHWTANK regarding tank loss. The value of zero only valid if wtTEx is being used. Half of the heat losses go to zone air and the other goes to half radiant. @@ -90,7 +100,9 @@ Zone location of DHWTANK regarding tank loss. The value of zero only valid if wt }) }} -**wtTEx=*float*** +### wtTEx + +Type: float Tank surround temperature. @@ -104,7 +116,9 @@ Tank surround temperature. }) }} -**wtTTank=*float*** +### wtTTank + +Type: float Tank average water temperature. @@ -118,7 +132,9 @@ Tank average water temperature. }) }} -**wtXLoss=*float*** +### wtXLoss + +Type: float Additional tank heat loss. To duplicate CEC 2016 procedures, this value should be used to specify the fitting loss of 61.4 Btuh. diff --git a/doc/src/docs/input-data/dhwuse.md b/doc/src/docs/input-data/dhwuse.md index fb6ae3a3d..faa73f27c 100644 --- a/doc/src/docs/input-data/dhwuse.md +++ b/doc/src/docs/input-data/dhwuse.md @@ -16,7 +16,9 @@ Optional name; give after the word “DHWUSE” if desired. }) }} -**wuStart=*float*** +### wuStart + +Type: float The starting time of the hot water draw. @@ -30,7 +32,9 @@ The starting time of the hot water draw. }) }} -**wuDuration=*float*** +### wuDuration + +Type: float Draw duration. wuDuration = 0 is equivalent to omitting the DHWUSE. Durations that extend beyond midnight are included in the current day. @@ -45,7 +49,9 @@ Durations that extend beyond midnight are included in the current day. }) }} -**wuFlow=*float*** +### wuFlow + +Type: float Draw flow rate at the point of use (in other words, the mixed-water flow rate). wuFlow = 0 is equivalent to omitting the DHWUSE. There is no enforced upper limit on wuFlow, however, unrealistically large values can cause runtime errors. @@ -59,7 +65,9 @@ Draw flow rate at the point of use (in other words, the mixed-water flow rate). }) }} -**wuHotF=*float*** +### wuHotF + +Type: float Fraction of draw that is hot water. Cannot be specified with wuTemp or wuHeatRecEF. @@ -73,7 +81,9 @@ Fraction of draw that is hot water. Cannot be specified with wuTemp or wuHeatRe }) }} -**wuTemp=*float*** +### wuTemp + +Type: float Mixed-water use temperature at the fixture. Cannot be specified when wuHotF is given. @@ -87,7 +97,9 @@ Mixed-water use temperature at the fixture. Cannot be specified when wuHotF is g }) }} -**wuHeatRecEF=*float*** +### wuHeatRecEF + +Type: float Heat recovery effectiveness, allows simple modeling of heat recovery devices such as drain water heat exchangers. @@ -105,7 +117,9 @@ If 0, detailed heat recovery modeling *may* apply, see [DHWHEATREC][dhwheatrec]. }) }} -**wuHWEndUse=*choice*** +### wuHWEndUse + +Type: choice Hot-water end use: one of Shower, Bath, CWashr, DWashr, or Faucet. wuHWEndUse has the following functions -- @@ -123,7 +137,9 @@ Hot-water end use: one of Shower, Bath, CWashr, DWashr, or Faucet. wuHWEndUse h }) }} -**wuEventID=*integer*** +### wuEventID + +Type: integer User-defined identifier that associates multiple DHWUSEs with a single event or activity. For example, a dishwasher uses water at several discrete times during a 90 minute cycle and all DHWUSEs would be assigned the same wuEventID. All DHWUSEs having the same wuEventID should have the same wuHWEndUse. diff --git a/doc/src/docs/input-data/doas.md b/doc/src/docs/input-data/doas.md index a186aceb2..21ccbd056 100644 --- a/doc/src/docs/input-data/doas.md +++ b/doc/src/docs/input-data/doas.md @@ -9,7 +9,9 @@ Name of DOAS. ## DOAS Supply Fan Data Members -**oaSupFanVfDs=*float*** +### oaSupFanVfDs + +Type: float Supply fan design or rated flow at rated pressure. @@ -23,7 +25,9 @@ Supply fan design or rated flow at rated pressure. }) }} -**oaSupFanPress=*float*** +### oaSupFanPress + +Type: float Design or rated fan pressure. @@ -39,7 +43,9 @@ Design or rated fan pressure. Only one of oaSupFanElecPwr, oaSupFanEff, and oaSupFanShaftBhp may be given. -**oaSupFanElecPwr=*float*** +### oaSupFanElecPwr + +Type: float Fan input power per unit air flow (at design flow and pressure). @@ -53,7 +59,9 @@ Fan input power per unit air flow (at design flow and pressure). }) }} -**oaSupFanEff=*float*** +### oaSupFanEff + +Type: float Fan efficiency at design flow and pressure, as a fraction. @@ -67,7 +75,9 @@ Fan efficiency at design flow and pressure, as a fraction. }) }} -**oaSupFanShaftBhp=*float*** +### oaSupFanShaftBhp + +Type: float Fan shaft brake horsepower at design flow and pressure. @@ -106,7 +116,9 @@ If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coeffici }) }} -**oaSupFanMtr=*mtrName*** +### oaSupFanMtr + +Type: mtrName Name of meter, if any, to record energy used by supply fan. End use category used is specified by oaSupFanEndUse (next). @@ -120,7 +132,9 @@ Name of meter, if any, to record energy used by supply fan. End use category use }) }} -**oaSupFanEndUse=*choice*** +### oaSupFanEndUse + +Type: choice End use to which fan energy is recorded (in METER specified by oaSupFanMtr). See METER for available end use choices. @@ -134,7 +148,9 @@ End use to which fan energy is recorded (in METER specified by oaSupFanMtr). Se }) }} -**oaTEx=*float*** +### oaTEx + +Type: float Alternative supply fan source air dry bulb temperature. If given, oaTEx overrides the outdoor dry-bulb temperature read from the weather file or derived from design conditions. @@ -150,7 +166,9 @@ Caution: oaTEx is not checked for reasonableness. }) }} -**oaWEx=*float*** +### oaWEx + +Type: float Alternative supply fan source air air humidity ratio. If given, oaWEx overrides the outdoor humidity ratio derived from weather file data or design conditions. @@ -168,7 +186,9 @@ Caution: oaWEx is not checked against saturation -- there is no verification tha ## DOAS Exhaust Fan Data Members -**oaExhFanVfDs=*float*** +### oaExhFanVfDs + +Type: float Exhaust fan design or rated flow at rated pressure. @@ -182,7 +202,9 @@ Exhaust fan design or rated flow at rated pressure. }) }} -**oaExhFanPress=*float*** +### oaExhFanPress + +Type: float Design or rated fan pressure. @@ -198,7 +220,9 @@ Design or rated fan pressure. Only one of oaExhFanElecPwr, oaExhFanEff, and oaExhFanShaftBhp may be given. -**oaExhFanElecPwr=*float*** +### oaExhFanElecPwr + +Type: float Fan input power per unit air flow (at design flow and pressure). @@ -212,7 +236,9 @@ Fan input power per unit air flow (at design flow and pressure). }) }} -**oaExhFanEff=*float*** +### oaExhFanEff + +Type: float Fan efficiency at design flow and pressure, as a fraction. @@ -226,7 +252,9 @@ Fan efficiency at design flow and pressure, as a fraction. }) }} -**oaExhFanShaftBhp=*float*** +### oaExhFanShaftBhp + +Type: float Fan shaft brake horsepower at design flow and pressure. @@ -265,7 +293,9 @@ If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coeffici }) }} -**oaExhFanMtr=*mtrName*** +### oaExhFanMtr + +Type: mtrName Name of meter, if any, to record energy used by exhaust fan. End use category used is specified by oaExhFanEndUse (next). @@ -279,7 +309,9 @@ Name of meter, if any, to record energy used by exhaust fan. End use category us }) }} -**oaExhFanEndUse=*choice*** +### oaExhFanEndUse + +Type: choice End use to which fan energy is recorded (in METER specified by oaExhFanMtr). See METER for available end use choices. @@ -295,7 +327,9 @@ End use to which fan energy is recorded (in METER specified by oaExhFanMtr). Se ## DOAS Tempering Coils Data Members -**oaSupTH=*float*** +### oaSupTH + +Type: float Heating setpoint for tempering and/or heat exchanger bypass. @@ -308,7 +342,9 @@ Heating setpoint for tempering and/or heat exchanger bypass. }) }} -**oaEIRH=*float*** +### oaEIRH + +Type: float Energy Input Ratio of the heating coil. This is the inverse of the coil efficiency or COP. A value of zero indicates that the coil does not use energy (e.g., hot water coils). Specifying input triggers the modeling of a heating coil. @@ -322,7 +358,9 @@ Energy Input Ratio of the heating coil. This is the inverse of the coil efficien }) }} -**oaCoilHMtr=*mtrName*** +### oaCoilHMtr + +Type: mtrName Name of meter, if any, to record energy used by the heating coil. @@ -336,7 +374,9 @@ Name of meter, if any, to record energy used by the heating coil. }) }} -**oaSupTC=*float*** +### oaSupTC + +Type: float Cooling setpoint for tempering and/or heat exchanger bypass. @@ -349,7 +389,9 @@ Cooling setpoint for tempering and/or heat exchanger bypass. }) }} -**oaEIRC=*float*** +### oaEIRC + +Type: float Energy Input Ratio of the cooling coil. This is the inverse of the coil efficiency or COP. A value of zero indicates that the coil does not use energy (e.g., chilled water coils). Specifying input triggers the modeling of a cooling coil. @@ -363,7 +405,9 @@ Energy Input Ratio of the cooling coil. This is the inverse of the coil efficien }) }} -**oaSHRtarget=*float*** +### oaSHRtarget + +Type: float Sensible Heat Ratio of the cooling coil. If the required sensible capacity of the coil and the entered SHR do not produce a valid psychrometric state, the SHR is adjusted and reported through the SHR probe. @@ -377,7 +421,9 @@ Sensible Heat Ratio of the cooling coil. If the required sensible capacity of th }) }} -**oaCoilCMtr=*mtrName*** +### oaCoilCMtr + +Type: mtrName Name of meter, if any, to record energy used by the cooling coil. @@ -391,7 +437,9 @@ Name of meter, if any, to record energy used by the cooling coil. }) }} -**oaLoadMtr=*ldMtrName*** +### oaLoadMtr + +Type: ldMtrName Name of load meter, if any, to record load met by the heating coil or cooling coil. @@ -408,7 +456,9 @@ Name of load meter, if any, to record load met by the heating coil or cooling co ## DOAS Heat Recovery Data Members -**oaHXVfDs=*float*** +### oaHXVfDs + +Type: float Heat exchanger design or rated flow. @@ -422,7 +472,9 @@ Heat exchanger design or rated flow. }) }} -**oaHXf2=*float*** +### oaHXf2 + +Type: float Heat exchanger flow fraction (of design flow) used for second set of effectivenesses. @@ -436,7 +488,9 @@ Heat exchanger flow fraction (of design flow) used for second set of effectivene }) }} -**oaHXSenEffHDs=*float*** +### oaHXSenEffHDs + +Type: float Heat exchanger sensible effectiveness in heating mode at the design flow rate. Specifying input triggers modeling of heat recovery. @@ -449,7 +503,9 @@ Heat exchanger sensible effectiveness in heating mode at the design flow rate. S }) }} -**oaHXSenEffHf2=*float*** +### oaHXSenEffHf2 + +Type: float Heat exchanger sensible effectiveness in heating mode at the second flow rate (**oaHXf2**). @@ -463,7 +519,9 @@ Heat exchanger sensible effectiveness in heating mode at the second flow rate (* }) }} -**oaHXLatEffHDs=*float*** +### oaHXLatEffHDs + +Type: float Heat exchanger latent effectiveness in heating mode at the design flow rate. @@ -477,7 +535,9 @@ Heat exchanger latent effectiveness in heating mode at the design flow rate. }) }} -**oaHXLatEffHf2=*float*** +### oaHXLatEffHf2 + +Type: float Heat exchanger latent effectiveness in heating mode at the second flow rate (**oaHXf2**). @@ -491,7 +551,9 @@ Heat exchanger latent effectiveness in heating mode at the second flow rate (**o }) }} -**oaHXSenEffCDs=*float*** +### oaHXSenEffCDs + +Type: float Heat exchanger sensible effectiveness in cooling mode at the design flow rate. @@ -505,7 +567,9 @@ Heat exchanger sensible effectiveness in cooling mode at the design flow rate. }) }} -**oaHXSenEffCf2=*float*** +### oaHXSenEffCf2 + +Type: float Heat exchanger sensible effectiveness in cooling mode at the second flow rate (**oaHXf2**). @@ -519,7 +583,9 @@ Heat exchanger sensible effectiveness in cooling mode at the second flow rate (* }) }} -**oaHXLatEffCDs=*float*** +### oaHXLatEffCDs + +Type: float Heat exchanger latent effectiveness in cooling mode at the design flow rate. @@ -533,7 +599,9 @@ Heat exchanger latent effectiveness in cooling mode at the design flow rate. }) }} -**oaHXLatEffCf2=*float*** +### oaHXLatEffCf2 + +Type: float Heat exchanger latent effectiveness in cooling mode at the second flow rate (**oaHXf2**). @@ -547,7 +615,9 @@ Heat exchanger latent effectiveness in cooling mode at the second flow rate (**o }) }} -**oaHXBypass=*choice*** +### oaHXBypass + +Type: choice Yes/No choice for enabling heat exchanger bypass. If selected, the outdoor air will bypass the heat exchanger when otherwise the heat exchanger would require more heating or cooling energy to meet the respective setpoints. @@ -561,7 +631,9 @@ Yes/No choice for enabling heat exchanger bypass. If selected, the outdoor air w }) }} -**oaHXAuxPwr=*float*** +### oaHXAuxPwr + +Type: float Auxiliary power required to operate the heat recovery device (e.g., wheel motor, contorls). @@ -575,7 +647,9 @@ Auxiliary power required to operate the heat recovery device (e.g., wheel motor, }) }} -**oaHXAuxMtr=*mtrName*** +### oaHXAuxMtr + +Type: mtrName Name of meter, if any, to record energy used by auxiliary components of the heat recovery system. diff --git a/doc/src/docs/input-data/door.md b/doc/src/docs/input-data/door.md index c733bff4e..061fdba64 100644 --- a/doc/src/docs/input-data/door.md +++ b/doc/src/docs/input-data/door.md @@ -16,7 +16,9 @@ Name of door. }) }} -**drArea=*float*** +### drArea + +Type: float Overall area of door. @@ -30,7 +32,9 @@ Overall area of door. }) }} -**drModel=*choice*** +### drModel + +Type: choice Provides user control over how CSE models conduction for this door: @@ -53,7 +57,9 @@ Provides user control over how CSE models conduction for this door: Either drU or drCon must be specified, but not both. -**drU=*float*** +### drU + +Type: float Door U-value, NOT including surface (air film) conductances. Allows direct entry of U-value, without defining a CONSTRUCTION, when no heat capacity effects are to be modeled. @@ -67,7 +73,9 @@ Door U-value, NOT including surface (air film) conductances. Allows direct entry }) }} -**drCon=*conName*** +### drCon + +Type: conName Name of construction for door. @@ -81,7 +89,9 @@ Name of construction for door. }) }} -**drLThkF=*float*** +### drLThkF + +Type: float Sublayer thickness adjustment factor for FORWARD\_DIFFERENCE conduction model used with drCon surfaces. Material layers in the construction are divided into sublayers as needed for numerical stability. drLThkF allows adjustment of the thickness criterion used for subdivision. A value of 0 prevents subdivision; the default value (0.5) uses layers with conservative thickness equal to half of an estimated safe value. Fewer (thicker) sublayers improves runtime at the expense of accurate representation of rapid changes. @@ -95,7 +105,9 @@ Sublayer thickness adjustment factor for FORWARD\_DIFFERENCE conduction model us }) }} -**drExAbs=*float*** +### drExAbs + +Type: float Door exterior solar absorptivity. Applicable only if sfExCnd of owning surface is AMBIENT or SPECIFIEDT. @@ -109,7 +121,9 @@ Door exterior solar absorptivity. Applicable only if sfExCnd of owning surface i }) }} -**drInAbs=*float*** +### drInAbs + +Type: float Door interior solar absorptivity. @@ -123,7 +137,9 @@ Door interior solar absorptivity. }) }} -**drExEpsLW=*float*** +### drExEpsLW + +Type: float Door exterior long wave (thermal) emittance. @@ -137,7 +153,9 @@ Door exterior long wave (thermal) emittance. }) }} -**drInEpsLW=*float*** +### drInEpsLW + +Type: float Door interior long wave (thermal) emittance. @@ -151,7 +169,9 @@ Door interior long wave (thermal) emittance. }) }} -**drInH=*float*** +### drInH + +Type: float Door interior surface (air film) conductance. Ignored if drModel = Forward\_Difference @@ -165,7 +185,9 @@ Door interior surface (air film) conductance. Ignored if drModel = Forward\_Diff }) }} -**drExH=*float*** +### drExH + +Type: float Door exterior surface (air film) conductance. Ignored if drModel = Forward\_Difference @@ -192,7 +214,9 @@ Door exterior surface (air film) conductance. Ignored if drModel = Forward\_Diff ASHRAE, n/a, ASHRAE handbook values", True) }} -**drExHcModel=*choice*** +### drExHcModel + +Type: choice Selects the model used for exterior surface convection when drModel = Forward\_Difference. @@ -206,7 +230,9 @@ Selects the model used for exterior surface convection when drModel = Forward\_D }) }} -**drExHcLChar=*float*** +### drExHcLChar + +Type: float Characteristic length of surface, used in derivation of forced exterior convection coefficients in some models when outside face is exposed to ambient (i.e. to wind). @@ -220,7 +246,9 @@ Characteristic length of surface, used in derivation of forced exterior convecti }) }} -**drExHcMult=*float*** +### drExHcMult + +Type: float Exterior convection coefficient adjustment factor. When drExHcModel=INPUT, hc=drExHcMult. For other drExHcModel choices, the model-derived hc is multiplied by drExHcMult. @@ -234,7 +262,9 @@ Exterior convection coefficient adjustment factor. When drExHcModel=INPUT, hc=d }) }} -**drExRf=*float*** +### drExRf + +Type: float Exterior roughness factor. Typical roughness values: @@ -258,7 +288,9 @@ Exterior roughness factor. Typical roughness values: }) }} -**drInHcModel=*choice*** +### drInHcModel + +Type: choice Selects the model used for the inside (zone) surface convection when drModel = Forward\_Difference. @@ -272,7 +304,9 @@ Selects the model used for the inside (zone) surface convection when drModel = F }) }} -**drInHcMult=*float*** +### drInHcMult + +Type: float Interior convection coefficient adjustment factor. When drInHcModel=INPUT, hc=drInHcMult. For other drInHcModel choices, the model-derived hc is multiplied by drInHcMult. diff --git a/doc/src/docs/input-data/ductseg.md b/doc/src/docs/input-data/ductseg.md index e42cd7a06..7f7e10258 100644 --- a/doc/src/docs/input-data/ductseg.md +++ b/doc/src/docs/input-data/ductseg.md @@ -16,7 +16,9 @@ Optional name of duct segment; give after the word “DUCTSEG” if desired. }) }} -**dsTy=*choice*** +### dsTy + +Type: choice Duct segment type. @@ -35,7 +37,9 @@ The surface area of a DUCTSEG depends on its shape. 0 surface area is legal (lea - dsExArea specified: Flat. Interior and exterior areas are assumed to be equal (duct surfaces are flat and corner effects are neglected). - dsExArea *not* specified: Round. Any two of dsInArea, dsDiameter, and dsLength must be given. Insulation thickness is derived from dsInsulR and dsInsulMat and this thickness is used to calculate the exterior surface area. Overall inside-to-outside conductance is also calculated including suitable adjustment for curvature. -**dsBranchLen=*float*** +### dsBranchLen + +Type: float Average branch length. @@ -49,7 +53,9 @@ Average branch length. }) }} -**dsBranchCount=*integer*** +### dsBranchCount + +Type: integer Number of branches. @@ -63,7 +69,9 @@ Number of branches. }) }} -**dsBranchCFA=*float*** +### dsBranchCFA + +Type: float Floor area served per branch @@ -77,7 +85,9 @@ Floor area served per branch }) }} -**dsAirVelDs=*float*** +### dsAirVelDs + +Type: float Specified air velocity design. @@ -91,7 +101,9 @@ Specified air velocity design. }) }} -**dsExArea=*float*** +### dsExArea + +Type: float Duct segment surface area at outside face of insulation for flat duct shape, see above. @@ -105,7 +117,9 @@ Duct segment surface area at outside face of insulation for flat duct shape, see }) }} -**dsInArea=*float*** +### dsInArea + +Type: float Duct segment inside surface area (at duct wall, duct wall thickness assumed negligible) for round shaped duct. @@ -120,7 +134,9 @@ Duct segment inside surface area (at duct wall, duct wall thickness assumed negl }} -**dsDiameter=*float*** +### dsDiameter + +Type: float Duct segment round duct diameter (duct wall thickness assumed negligible) @@ -134,7 +150,9 @@ Duct segment round duct diameter (duct wall thickness assumed negligible) }) }} -**dsLength=*float*** +### dsLength + +Type: float Duct segment length. @@ -148,7 +166,9 @@ Duct segment length. }) }} -**dsExCnd=*choice*** +### dsExCnd + +Type: choice Conditions surrounding duct segment. @@ -162,7 +182,9 @@ Conditions surrounding duct segment. }) }} -**dsAdjZn=*znName*** +### dsAdjZn + +Type: znName Name of zone surrounding duct segment; used only when dsExCon is ADJZN. Can be the same as a zone served by the RSYS owning the duct segment. @@ -176,7 +198,9 @@ Name of zone surrounding duct segment; used only when dsExCon is ADJZN. Can be t }) }} -**dsEpsLW=*float*** +### dsEpsLW + +Type: float Exposed (i.e. insulation) outside surface exterior long wave (thermal) emittance. @@ -190,7 +214,9 @@ Exposed (i.e. insulation) outside surface exterior long wave (thermal) emittance }) }} -**dsExT=*float*** +### dsExT + +Type: float Air dry-bulb temperature surrounding duct segment. @@ -204,7 +230,9 @@ Air dry-bulb temperature surrounding duct segment. Wall depth below slab. @@ -82,7 +86,9 @@ Wall depth below slab. }) }} -**fdFtCon=*conName*** +### fdFtCon + +Type: conName Name of CONSTRUCTION of the footing wall. Only required **IF** it is a slab foundation (i.e., no wall surfaces reference this FOUNDATION object). diff --git a/doc/src/docs/input-data/gain.md b/doc/src/docs/input-data/gain.md index bf5df76ad..fb1f677ba 100644 --- a/doc/src/docs/input-data/gain.md +++ b/doc/src/docs/input-data/gain.md @@ -29,7 +29,9 @@ Name of gain; follows the word GAIN if given. }) }} -**gnZone=*znName*** +### gnZone + +Type: znName Name of ZONE to which heat gains are added. Omitted when GAIN is given as a ZONE subobject. If a TOP subobject (i.e., not a ZONE subobject) and znZone is omitted, heat gains are discarded but energy use is still recorded to gnMeter. This feature can be used to represent energy uses that our outside of conditioned zones (e.g. exterior lighting). @@ -43,7 +45,9 @@ Name of ZONE to which heat gains are added. Omitted when GAIN is given as a ZON }) }} -**gnPower=*float*** +### gnPower + +Type: float Rate of heat addition/energy use. Negative gnPower values may be used to represent heat removal/energy generation. Expressions containing functions are commonly used with this member to schedule the gain power on a daily and/or hourly basis. Refer to the functions section in Section 4 for details and examples. @@ -59,7 +63,9 @@ All gains, including electrical, are specified in Btuh units unless associated w }) }} -**gnMeter=*choice*** +### gnMeter + +Type: choice Name of meter by which this GAIN's gnPower is recorded. If omitted, gain is assigned to no meter and energy use is not accounted in CSE simulation reports; thus, gnMeter should only be omitted for "free" energy sources. @@ -73,7 +79,9 @@ Name of meter by which this GAIN's gnPower is recorded. If omitted, gain is assi }) }} -**gnEndUse=*choice*** +### gnEndUse + +Type: choice Meter end use to which the GAIN's energy use should be accumulated. @@ -92,7 +100,9 @@ Meter end use to which the GAIN's energy use should be accumulated. The gnFrZn, gnFrPl, and gnFrRtn members allow you to allocate the gain among the zone, the zone's plenum, and the zone's return air flow. Values that total to more than 1.0 constitute an error. If they total less than 1, the unallocated portion of the gain is recorded by the meter (if specified) but not transferred into the building. By default, all of the gain not directed to the return or plenum goes to the zone. -**gnFrZn=*float*** +### gnFrZn + +Type: float Fraction of gain going to zone. gnFrLat (below) gives portion of this gain that is latent, if any; the remainder is sensible. @@ -122,7 +132,9 @@ Fraction of gain going to zone. gnFrLat (below) gives portion of this gain that <% end %> -**gnFrPl=*float*** +### gnFrPl + +Type: float Fraction of gain going to plenum. @@ -137,7 +149,9 @@ Fraction of gain going to plenum. }} -**gnFrRtn=*float*** +### gnFrRtn + +Type: float Fraction of gain going to return. @@ -151,7 +165,9 @@ Fraction of gain going to return. }) }} -**gnFrRad=*float*** +### gnFrRad + +Type: float Fraction of total gain going to zone (gnFrZn) that is radiant rather than convective or latent. @@ -165,7 +181,9 @@ Fraction of total gain going to zone (gnFrZn) that is radiant rather than convec }) }} -**gnFrLat=*float*** +### gnFrLat + +Type: float Fraction of total gain going to zone (gnFrZn) that is latent heat (moisture addition). @@ -179,7 +197,9 @@ Fraction of total gain going to zone (gnFrZn) that is latent heat (moisture addi }) }} -**gnDlFrPow=*float*** +### gnDlFrPow + +Type: float Hourly power reduction factor, typically used to modify lighting power to account for daylighting. @@ -195,7 +215,9 @@ daylighting. }} -**gnCtrlDHWSYS=*dhwsysName*** +### gnCtrlDHWSYS + +Type: dhwsysName Name of a DHWSYS whose water use modulates gnPower. For example, electricity use of water-using appliances (e.g. dishwasher or clothes washer) can be modeled based on water use, ensuring that the uses are synchronized. When this feature is used, gnPower should be specified in Btuh/gal. @@ -209,7 +231,9 @@ Name of a DHWSYS whose water use modulates gnPower. For example, electricity us }) }} -**gnCtrlDHWMETER=*dhwMtrName*** +### gnCtrlDHWMETER + +Type: dhwMtrName Allows gains to track water usage such as dishwashers, clothes washers, etc. @@ -223,7 +247,9 @@ Allows gains to track water usage such as dishwashers, clothes washers, etc. }) }} -**gnCtrlDHWEndUse=*dhwEndUseName*** +### gnCtrlDHWEndUse + +Type: dhwEndUseName Name of the DHWSYS end use consumption that modulates gnPower. See DHWMETER for DHW end use definitions. diff --git a/doc/src/docs/input-data/glazetype.md b/doc/src/docs/input-data/glazetype.md index 2e1303226..375278dd1 100644 --- a/doc/src/docs/input-data/glazetype.md +++ b/doc/src/docs/input-data/glazetype.md @@ -16,7 +16,9 @@ Name of glazetype. Required for reference from WINDOW objects, below. }) }} -**gtModel=*choice*** +### gtModel + +Type: choice Selects model to be used for WINDOWs based on this GLAZETYPE. @@ -30,7 +32,9 @@ Selects model to be used for WINDOWs based on this GLAZETYPE. }) }} -**gtU=*float*** +### gtU + +Type: float Glazing conductance (U-factor without surface films, therefore not actually a U-factor but a C-factor). Used as wnU default; an error message will be issued if the U value is not given in the window (wnU) nor in the glazeType (gtU). Preferred Approach: To use accurately with standard winter rated U-factor from ASHRAE or NFRC enter as: @@ -50,7 +54,9 @@ Approach 2. Enter gtU=U-factor and let the wnInH and wnExH default. This approac }) }} -**gtUNFRC=*float*** +### gtUNFRC + +Type: float Fenestration system (including frame) U-factor evaluated at NFRC heating conditions. For ASHWAT windows, a value for the NFRC U-factor is required, set via gtUNFRC or wnUNFRC. @@ -64,7 +70,9 @@ Fenestration system (including frame) U-factor evaluated at NFRC heating conditi }) }} -**gtSHGC=*float*** +### gtSHGC + +Type: float Glazing Solar Heat Gain Coefficient: fraction of normal beam insolation which gets through glass to space inside. We recommend using this to represent the glass normal transmissivity characteristic only, before shading and framing effects @@ -78,7 +86,9 @@ Glazing Solar Heat Gain Coefficient: fraction of normal beam insolation which ge }) }} -**gtSMSO=*float*** +### gtSMSO + +Type: float SHGC multiplier with shades open. May be overriden in the specific window input. @@ -92,7 +102,9 @@ SHGC multiplier with shades open. May be overriden in the specific window input. }) }} -**gtSMSC=*float*** +### gtSMSC + +Type: float SHGC multiplier with shades closed. May be overriden in the specific window input. @@ -106,7 +118,9 @@ SHGC multiplier with shades closed. May be overriden in the specific window inpu }) }} -**gtFMult=*float*** +### gtFMult + +Type: float Framing multiplier used if none given in window, for example .9 if frame and mullions reduce the solar gain by 10%. Default of 1.0 implies frame/mullion effects allowed for in gtSHGC's or always specified in Windows. @@ -142,7 +156,9 @@ Four float values separated by commas. Coefficients for incidence angle SHGC mul }) }} -**gtDMSHGC=*float*** +### gtDMSHGC + +Type: float SHGC diffuse multiplier, applied to gtSHGC to determine transmissivity for diffuse radiation. @@ -156,7 +172,9 @@ SHGC diffuse multiplier, applied to gtSHGC to determine transmissivity for diffu }) }} -**gtDMRBSol=*float*** +### gtDMRBSol + +Type: float SHGC diffuse multiplier, applied to qtSHGC to determine transmissivity for diffuse radiation reflected back out the window. Misnamed as a reflectance. Assume equal to DMSHGC if no other data available. @@ -170,7 +188,9 @@ SHGC diffuse multiplier, applied to qtSHGC to determine transmissivity for diffu }) }} -**gtNGlz=*int*** +### gtNGlz + +Type: int Number of glazings in the Glazetype (bare glass only, not including any interior or exterior shades). @@ -184,7 +204,9 @@ Number of glazings in the Glazetype (bare glass only, not including any interior }) }} -**gtExShd=*choice*** +### gtExShd + +Type: choice Exterior shading type (ASHWAT only). @@ -198,7 +220,9 @@ Exterior shading type (ASHWAT only). }) }} -**gtInShd=*choice*** +### gtInShd + +Type: choice Interior shade type (ASHWAT only). @@ -212,7 +236,9 @@ Interior shade type (ASHWAT only). }) }} -**gtDirtLoss=*float*** +### gtDirtLoss + +Type: float Glazing dirt loss factor. diff --git a/doc/src/docs/input-data/heatplant.md b/doc/src/docs/input-data/heatplant.md index 715248cc0..e1856adfc 100644 --- a/doc/src/docs/input-data/heatplant.md +++ b/doc/src/docs/input-data/heatplant.md @@ -22,7 +22,9 @@ Name of HEATPLANT object, given immediately after the word HEATPLANT. This name }) }} -**hpSched=*choice*** +### hpSched + +Type: choice Heat plant schedule: hourly variable choice of OFF, AVAIL, or ON. @@ -42,7 +44,9 @@ ON, HEATPLANT runs unconditionally. When no load wants heat, least po }) }} -**hpPipeLossF=*float*** +### hpPipeLossF + +Type: float Heat plant pipe loss: heat assumed lost from piping connecting boilers to loads whenever the HEATPLANT is operating, expressed as a fraction of the boiler capacity of the plant's most powerful stage. diff --git a/doc/src/docs/input-data/holiday.md b/doc/src/docs/input-data/holiday.md index 5bfad5426..9f8b2f253 100644 --- a/doc/src/docs/input-data/holiday.md +++ b/doc/src/docs/input-data/holiday.md @@ -51,7 +51,9 @@ The date that a holiday will be observed. Allowed only if hdDateTrue given and h }) }} -**hdOnMonday=*choice*** +### hdOnMonday + +Type: choice If YES, holiday is observed on the following Monday if the true date falls on a weekend. Allowed only if hdDateTrue given and hdDateObs not given. @@ -67,7 +69,9 @@ Note: there is no provision to celebrate a holiday that falls on a Saturday on * }) }} -**hdCase=*choice*** +### hdCase + +Type: choice Week of the month that the holiday is observed. hdCase, hdMon, and hdDow may be given only if hdDateTrue, hdDateObs, and hdOnMonday are not given. @@ -81,7 +85,9 @@ Week of the month that the holiday is observed. hdCase, hdMon, and hdDow may be }) }} -**hdMon=*choice*** +### hdMon + +Type: choice Month that the holiday is observed. diff --git a/doc/src/docs/input-data/importfile.md b/doc/src/docs/input-data/importfile.md index 17afc6cbd..f80701b51 100644 --- a/doc/src/docs/input-data/importfile.md +++ b/doc/src/docs/input-data/importfile.md @@ -66,7 +66,9 @@ Name of IMPORTFILE object (for reference from Import()). }) }} -**imFileName=*string*** +### imFileName + +Type: string Gives path name of file to be read. If directory is specified, CSE first looks for the file the current directory and searches include paths specified by the -I command line parameter (if any). @@ -80,7 +82,9 @@ Gives path name of file to be read. If directory is specified, CSE first looks f }) }} -**imTitle=*string*** +### imTitle + +Type: string Title expected to be found on line 3 of the import file. A warning is issued if a non-blank imTitle does not match the import file title. @@ -94,7 +98,9 @@ Title expected to be found on line 3 of the import file. A warning is issued if }) }} -**imFreq=*choice*** +### imFreq + +Type: choice Specifies the interval at which CSE reads from the import file. Data is read at the beginning of the indicated interval and buffered in memory for access in expressions via import() or importStr(). @@ -108,7 +114,9 @@ Specifies the interval at which CSE reads from the import file. Data is read at }) }} -**imHeader=*choice*** +### imHeader + +Type: choice Indicates whether the import file include a 4 line header, as described above. If NO, the import file should contain only comma-separated data rows and data items can be referenced only by 1-based column number. @@ -123,7 +131,9 @@ should contain only comma-separated data rows and data items can be referenced o }) }} -**imBinary=*choice*** +### imBinary + +Type: choice Adds the possibility to output the file as a binary option. diff --git a/doc/src/docs/input-data/izxfer.md b/doc/src/docs/input-data/izxfer.md index 57f80a178..d86c20bda 100644 --- a/doc/src/docs/input-data/izxfer.md +++ b/doc/src/docs/input-data/izxfer.md @@ -21,7 +21,9 @@ Optional name of interzone transfer; give after the word "IZXFER" if desired. }) }} -**izNVType=*choice*** +### izNVType + +Type: choice Choice specifying the type of ventilation or leakage model to be used. @@ -52,7 +54,9 @@ Note that optional inputs izTEx, izWEx, and izWindSpeed can override the outside }) }} -**izAFCat=*choice*** +### izAFCat + +Type: choice Choice indicating air flow category used *only* for recording air flow results to an AFMETER. izAFCat has no effect for non-AIRNET IZXFERs. izAFCat is not used unless the associated ZONE(s) specify znAFMtr. @@ -81,7 +85,9 @@ Default values for izAFCat are generally adequate *except* that natural ventilat }) }} -**izZn1=*znName*** +### izZn1 + +Type: znName Name of primary zone. Flow rates $>$ 0 are into the primary zone. @@ -95,7 +101,9 @@ Name of primary zone. Flow rates $>$ 0 are into the primary zone. }) }} -**izZn2=*znName*** +### izZn2 + +Type: znName Name of secondary zone. @@ -109,7 +117,9 @@ Name of secondary zone. }) }} -**izDOAS=*oaName*** +### izDOAS + +Type: oaName Name of DOAS where air is supplied from (**izVfMin** > 0), or exhausting to (**izVfMin** < 0). @@ -121,7 +131,9 @@ Name of DOAS where air is supplied from (**izVfMin** > 0), or exhausting to (**i }) }} -**izLinkedFlowMult=*float*** +### izLinkedFlowMult + +Type: float Specifies a multiplier applied to air flow to/from any associated DOAS. This supports use of a single modeled zone to represent multiple actual zones while preserving the total DOAS air flow and energy consumption. @@ -142,7 +154,9 @@ Note izLinkedFlowMult has no effect on the air flow to or from the zone specifie Give izHConst for a conductive transfer between zones. Give izNVType other than NONE and the following variables for a convective (air) transfer between the zones or between a zone and outdoors. Both may be given if desired. Not known to work properly as of July 2011 -**izHConst=*float*** +### izHConst + +Type: float Conductance between zones. @@ -156,7 +170,9 @@ Conductance between zones. }) }} -**izALo=*float*** +### izALo + +Type: float Area of low or only vent (typically VentOff) @@ -170,7 +186,9 @@ Area of low or only vent (typically VentOff) }) }} -**izAHi=*float*** +### izAHi + +Type: float Additional vent area (high vent or VentOn). If used in AIRNET, izAHi > izALo typically but this is not required. @@ -184,7 +202,9 @@ Additional vent area (high vent or VentOn). If used in AIRNET, izAHi > izALo }) }} -**izTEx=*float*** +### izTEx + +Type: float Alternative exterior air dry bulb temperature for this vent. Allowed only with izNVTypes that use outdoor air (AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, and AIRNETHERV). If given, izTEx overrides the outdoor dry-bulb temperature read from the weather file or derived from design conditions. @@ -206,7 +226,9 @@ This will allow Z1's pressure to be realistic without inducing thermal loads tha }) }} -**izWEx=*float*** +### izWEx + +Type: float Alternative exterior air humidity ratio seen by this vent. Allowed only with izNVTypes that use outdoor air (AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, and AIRNETHERV). If given, izWEx overrides the outdoor humidity ratio derived from weather file data or design conditions. @@ -224,7 +246,9 @@ See izTEx example just above. }) }} -**izWindSpeed=*float*** +### izWindSpeed + +Type: float Alternative windspeed seen by this vent. Allowed only with izNVTypes that use outdoor air (AIRNETEXT, AIRNETEXTFAN, AIRNETEXTFLOW, and AIRNETHERV). If given, izWindSpeed overrides the windspeed read from the weather file or derived from design conditions. @@ -242,7 +266,9 @@ Note that izCpr must be non-0 for izWindSpeed to have any effect. }) }} -**izL1=*float*** +### izL1 + +Type: float Length or width of AIRNETHORIZ opening. @@ -256,7 +282,9 @@ Length or width of AIRNETHORIZ opening. }) }} -**izL2=*float*** +### izL2 + +Type: float Width or length of AIRNETHORIZ opening. @@ -270,7 +298,9 @@ Width or length of AIRNETHORIZ opening. }) }} -**izStairAngle=*float*** +### izStairAngle + +Type: float Stairway angle for AIRNETHORIZ opening. Use 90 for an open hole. Note that 0 prevents flow. @@ -284,7 +314,9 @@ Stairway angle for AIRNETHORIZ opening. Use 90 for an open hole. Note that 0 pre }) }} -**izHD=*float*** +### izHD + +Type: float Vent center-to-center height difference (for TWOWAY) or vent height above nominal 0 level (for AirNet types) @@ -298,7 +330,9 @@ Vent center-to-center height difference (for TWOWAY) or vent height above nomina }) }} -**izNVEff=*float*** +### izNVEff + +Type: float Vent discharge coefficient. @@ -312,7 +346,9 @@ Vent discharge coefficient. }) }} -**izfanVfDs=*float*** +### izfanVfDs + +Type: float Fan design or rated flow at rated pressure. For AIRNETHERV, this is the net air flow into the zone, gross flow at the fan is derived using izEATR (see below). @@ -326,7 +362,9 @@ Fan design or rated flow at rated pressure. For AIRNETHERV, this is the net air }) }} -**izCpr=*float*** +### izCpr + +Type: float Wind pressure coefficient (for AIRNETEXT). @@ -340,7 +378,9 @@ Wind pressure coefficient (for AIRNETEXT). }) }} -**izExp=*float*** +### izExp + +Type: float Opening exponent (for AIRNETEXT). @@ -354,7 +394,9 @@ Opening exponent (for AIRNETEXT). }) }} -**izVfMin=*float*** +### izVfMin + +Type: float Minimum volume flow rate (VentOff mode). @@ -368,7 +410,9 @@ Minimum volume flow rate (VentOff mode). }) }} -**izVfMax=*float*** +### izVfMax + +Type: float Maximum volume flow rate (VentOn mode) @@ -382,7 +426,9 @@ Maximum volume flow rate (VentOn mode) }) }} -**izASEF=*float*** +### izASEF + +Type: float Apparent sensible effectiveness for AIRNETHERV ventilator. ASEF is a commonly-reported HERV rating and is calculated as (supplyT - sourceT) / (returnT - sourceT). This formulation includes fan heat (in supplyT), hence the term "apparent". Ignored if izSRE is given. CSE does not HRV exhaust-side condensation, so this model is approximate. @@ -396,7 +442,9 @@ Apparent sensible effectiveness for AIRNETHERV ventilator. ASEF is a commonly-r }) }} -**izSRE=*float*** +### izSRE + +Type: float Sensible recovery efficiency (SRE) for AIRNETHERV ventilator. Used as the sensible effectiveness in calculation of the supply air temperature. Note that values of SRE greater than approximately 0.6 imply exhaust-side condensation under HVI rating conditions. CSE does not adjust for these effects. High values of izSRE will produce unrealistic results under mild outdoor conditions and/or dry indoor conditions. @@ -410,7 +458,9 @@ Sensible recovery efficiency (SRE) for AIRNETHERV ventilator. Used as the sensi }) }} -**izASRE=*float*** +### izASRE + +Type: float Adjusted sensible recovery efficiency (ASRE) for AIRNETHERV ventilator. The difference izASRE - izSRE is used to calculate fan heat added to the supply air stream. See izSRE notes. No effect when izSRE is 0. @@ -424,7 +474,9 @@ Adjusted sensible recovery efficiency (ASRE) for AIRNETHERV ventilator. The dif }) }} -**izEATR=*float*** +### izEATR + +Type: float Exhaust air transfer ratio for AIRNETHERV ventilator. NetFlow = (1 - EATR)*(grossFlow). @@ -438,7 +490,9 @@ Exhaust air transfer ratio for AIRNETHERV ventilator. NetFlow = (1 - EATR)*(gro }) }} -**izLEF=*float*** +### izLEF + +Type: float Latent heat recovery effectiveness for AIRNETHERV ventilator. The default value (0) results in sensible-only heat recovery. @@ -452,7 +506,9 @@ Latent heat recovery effectiveness for AIRNETHERV ventilator. The default value }) }} -**izRVFanHeatF=*float*** +### izRVFanHeatF + +Type: float Fraction of fan heat added to supply air stream for AIRNETHERV ventilator. Used only when when izSRE is 0 (that is, when izASEF specifies the sensible effectiveness). @@ -466,7 +522,9 @@ Fraction of fan heat added to supply air stream for AIRNETHERV ventilator. Used }) }} -**izVfExhRat=*float*** +### izVfExhRat + +Type: float Exhaust volume flow ratio for AIRNETHERV ventilator = (exhaust flow) / (supply flow). Any value other than 1 indicates unbalanced flow that effects the zone pressure. @@ -481,7 +539,9 @@ value other than 1 indicates unbalanced flow that effects the zone pressure. }) }} -**izfanPress=*float*** +### izfanPress + +Type: float Design or rated fan pressure. @@ -497,7 +557,9 @@ Design or rated fan pressure. Only one of izfanElecPwr, izfanEff, and izfanShaftBhp may be given: together with izfanVfDs and izfanPress, any one is sufficient for CSE to determine the others and to compute the fan heat contribution to the air stream. -**izfanElecPwr=*float*** +### izfanElecPwr + +Type: float Fan input power per unit air flow (at design flow and pressure). @@ -511,7 +573,9 @@ Fan input power per unit air flow (at design flow and pressure). }) }} -**izfanEff=*float*** +### izfanEff + +Type: float Fan efficiency at design flow and pressure, as a fraction. @@ -525,7 +589,9 @@ Fan efficiency at design flow and pressure, as a fraction. }) }} -**izfanShaftBhp=*float*** +### izfanShaftBhp + +Type: float Fan shaft brake horsepower at design flow and pressure. @@ -564,7 +630,9 @@ If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coeffici }) }} -**izFanMtr=*mtrName*** +### izFanMtr + +Type: mtrName Name of meter, if any, to record energy used by supply fan. End use category used is specified by izFanEndUse (next). @@ -578,7 +646,9 @@ Name of meter, if any, to record energy used by supply fan. End use category use }) }} -**izFanEndUse=*choice*** +### izFanEndUse + +Type: choice End use to which fan energy is recorded (in METER specified by izFanMtr). See METER for available end use choices. diff --git a/doc/src/docs/input-data/layer.md b/doc/src/docs/input-data/layer.md index 6e60abd0b..9bbd46db3 100644 --- a/doc/src/docs/input-data/layer.md +++ b/doc/src/docs/input-data/layer.md @@ -20,7 +20,9 @@ Name of layer (follows "LAYER"). Required only if the LAYER is later referenced }) }} -**lrMat=*matName*** +### lrMat + +Type: matName Name of primary MATERIAL in layer. @@ -34,7 +36,9 @@ Name of primary MATERIAL in layer. }) }} -**lrThk=*float*** +### lrThk + +Type: float Thickness of layer. @@ -48,7 +52,9 @@ Thickness of layer. }) }} -**lrFrmMat=*matName*** +### lrFrmMat + +Type: matName Name of framing MATERIAL in layer, if any. At most one layer with lrFrmMat is allowed per CONSTRUCTION. See caution above regarding framed-layer model. @@ -62,7 +68,9 @@ Name of framing MATERIAL in layer, if any. At most one layer with lrFrmMat is al }) }} -**lrFrmFrac=*float*** +### lrFrmFrac + +Type: float Fraction of layer that is framing. Must be specified if frmMat is specified. See caution above regarding framed-layer model. diff --git a/doc/src/docs/input-data/material.md b/doc/src/docs/input-data/material.md index c4375b32d..c8518cb92 100644 --- a/doc/src/docs/input-data/material.md +++ b/doc/src/docs/input-data/material.md @@ -16,7 +16,9 @@ Name of material being defined; follows the word "MATERIAL". }) }} -**matThk=*float*** +### matThk + +Type: float Thickness of material. If specified, matThk indicates the discreet thickness of a component as used in construction assemblies. If omitted, matThk indicates that the material can be used in any thickness; the thickness is then specified in each LAYER using the material (see below). @@ -30,7 +32,9 @@ Thickness of material. If specified, matThk indicates the discreet thickness of }) }} -**matCond=*float*** +### matCond + +Type: float Conductivity of material. Note that conductivity is *always* stated for a 1 foot thickness, even when matThk is specified; if the conductance is known for a specific thickness, an expression can be used to derive matCond. @@ -44,7 +48,9 @@ Conductivity of material. Note that conductivity is *always* stated for a 1 foot }) }} -**matCondT=*float*** +### matCondT + +Type: float Temperature at which matCond is rated. See matCondCT (next). @@ -58,7 +64,9 @@ Temperature at which matCond is rated. See matCondCT (next). }) }} -**matCondCT=*float*** +### matCondCT + +Type: float Coefficient for temperature adjustment of matCond in the forward difference surface conduction model. Each hour (not subhour), the conductivity of layers using this material are adjusted as followslrCond = matCond \* (1 + matCondCT\*(T~layer~ – matCondT)) @@ -74,7 +82,9 @@ Coefficient for temperature adjustment of matCond in the forward difference surf Note: A typical value of matCondCT for fiberglass batt insulation is 0.00418 F^-1^ -**matSpHt=*float*** +### matSpHt + +Type: float Specific heat of material. @@ -88,7 +98,9 @@ Specific heat of material. }) }} -**matDens=*float*** +### matDens + +Type: float Density of material. @@ -102,7 +114,9 @@ Density of material. }) }} -**matRNom=*float*** +### matRNom + +Type: float Nominal R-value per foot of material. Appropriate for insulation materials only and *used for documentation only*. If specified, the current material is taken to have a nominal R-value that contributes to the reported nominal R-value for a construction. As with matCond, matRNom is *always* stated for a 1 foot thickness, even when matThk is specified; if the nominal R-value is known for a specific thickness, an expression can be used to derive matRNom. diff --git a/doc/src/docs/input-data/meter.md b/doc/src/docs/input-data/meter.md index 44252a45e..4631c5507 100644 --- a/doc/src/docs/input-data/meter.md +++ b/doc/src/docs/input-data/meter.md @@ -41,7 +41,9 @@ Name of meter: required for assigning energy uses to the meter elsewhere. }) }} -**mtrDemandRate=*float*** +### mtrDemandRate + +Type: float DmdCost per Btu of demand, for a month. @@ -55,7 +57,9 @@ DmdCost per Btu of demand, for a month. }) }} -**mtrRate=*float*** +### mtrRate + +Type: float Cost of energy use per Btu. diff --git a/doc/src/docs/input-data/performancemap.md b/doc/src/docs/input-data/performancemap.md index 07d83ffeb..0dacd4b1b 100644 --- a/doc/src/docs/input-data/performancemap.md +++ b/doc/src/docs/input-data/performancemap.md @@ -79,7 +79,9 @@ Name of grid axis; optionally given after the word "PMGRIDAXIS". Used in error }) }} -**pmGXType=*string*** +### pmGXType + +Type: string Documents the dimension of the axis, for example "OutdoorDBT", "Speed", or "AirFlow". @@ -107,7 +109,9 @@ Documents the dimension of the axis, for example "OutdoorDBT", "Speed", or "AirF }) }} -**pmGXRefValue=*float*** +### pmGXRefValue + +Type: float Defines the reference or nominal value of this PMGRIDAXIS. For example, when defining temperature points for a typical air conditioner, pmGXRefValue=95 might be used, since AC capacity is rated at 95 F. @@ -153,7 +157,9 @@ Name of lookup data; optionally given after the word "PMLOOKUPDATA". Used in er }) }} -**pmLUType=*string*** +### pmLUType + +Type: string Documents the current lookup value, e.g. "COP" or "CapacityRatio". diff --git a/doc/src/docs/input-data/perimeter.md b/doc/src/docs/input-data/perimeter.md index 204461859..33a8017d6 100644 --- a/doc/src/docs/input-data/perimeter.md +++ b/doc/src/docs/input-data/perimeter.md @@ -16,7 +16,9 @@ Optional name of perimeter. }) }} -**prLen=*float*** +### prLen + +Type: float Length of exposed perimeter. @@ -30,7 +32,9 @@ Length of exposed perimeter. }) }} -**prF2=*float*** +### prF2 + +Type: float Perimeter conduction per unit length. diff --git a/doc/src/docs/input-data/pvarray.md b/doc/src/docs/input-data/pvarray.md index 35b0bc4b4..52d01c82a 100644 --- a/doc/src/docs/input-data/pvarray.md +++ b/doc/src/docs/input-data/pvarray.md @@ -16,7 +16,9 @@ Name of photovoltaic array. Give after the word PVARRAY. }) }} -**pvElecMtr=*choice*** +### pvElecMtr + +Type: choice Name of meter by which this PVARRAY's AC power out is recorded. Generated power is expressed as a negative value. @@ -30,7 +32,9 @@ Name of meter by which this PVARRAY's AC power out is recorded. Generated power }) }} -**pvEndUse=*choice*** +### pvEndUse + +Type: choice Meter end use to which the PVARRAY's generated energy should be accumulated. @@ -46,7 +50,9 @@ Meter end use to which the PVARRAY's generated energy should be accumulated. }) }} -**pvDCSysSize=*float*** +### pvDCSysSize + +Type: float The rated photovoltaic system DC capacity/size as indicated by the nameplate. @@ -60,7 +66,9 @@ The rated photovoltaic system DC capacity/size as indicated by the nameplate. }) }} -**pvModuleType=*choice*** +### pvModuleType + +Type: choice Type of module to model. The module type determines the refraction index and temperature coefficient used in the simulation. Alternatively, the "Custom" module type may be used in conjunction with user-defined input for *pvCoverRefrInd* and *pvTempCoeff*. @@ -82,7 +90,9 @@ Type of module to model. The module type determines the refraction index and tem }) }} -**pvCoverRefrInd=*float*** +### pvCoverRefrInd + +Type: float The refraction index for the coating applied to the module cover. A value of 1.0 represents refraction through air. Coatings have higher refraction indexes that capture more solar at lower angles of incidence. @@ -96,7 +106,9 @@ The refraction index for the coating applied to the module cover. A value of 1.0 }) }} -**pvTempCoeff=*float*** +### pvTempCoeff + +Type: float The temperature coefficient how the efficiency of the module varies with the cell temperature. Values are typically negative. @@ -110,7 +122,9 @@ The temperature coefficient how the efficiency of the module varies with the cel }) }} -**pvArrayType=*choice*** +### pvArrayType + +Type: choice The type of array describes mounting and tracking options. Roof mounted arrays have a higher installed nominal operating cell temperature (INOCT) of 120 ^o^F compared to the default of 113 ^o^F. Array self-shading is not currently calculated for adjacent rows of modules within an array. @@ -124,7 +138,9 @@ The type of array describes mounting and tracking options. Roof mounted arrays h }) }} -**pvTilt=*float*** +### pvTilt + +Type: float The tilt of the photovoltaic array from horizontal. Values outside the range 0 to 360 are first normalized to that range. For one-axis tracking, defines the tilt of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. @@ -148,7 +164,9 @@ The following figures illustrate the use of both pvTilt and pvAzm for various co ![One-axis tracker, horizontal aligned East/West (less common)](../assets/images/pv_horiz_tracker_east.png) -**pvAzm=*float*** +### pvAzm + +Type: float Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the range 0^o^ $\leq$ *x* $<$ 360^o^ is given, it is normalized to that range. For one-axis tracking, defines the azimuth of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. @@ -184,7 +202,9 @@ Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the }) }} -**pvSIF=*float*** +### pvSIF + +Type: float Shading Impact Factor (SIF) of the array used to represent the disproportionate impact on array output of partially shaded modules at the sub-array level. This impact is applied to the effective beam irradiance on the array: @@ -204,7 +224,9 @@ Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the }} -**pvMounting=*choice*** +### pvMounting + +Type: choice Specified mounting location of this PVARRAY. pvMounting=Site indicates the array position is not altered by building rotation via [TOP bldgAzm][top-general-data-items], while PVARRAYs with pvMounting=Building are assumed to rotate with the building. @@ -218,7 +240,9 @@ Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the }) }} -**pvGrndRefl=*float*** +### pvGrndRefl + +Type: float Ground reflectance used for calculating reflected solar incidence on the array. @@ -233,7 +257,9 @@ Ground reflectance used for calculating reflected solar incidence on the array. }} -**pvDCtoACRatio=*float*** +### pvDCtoACRatio + +Type: float DC-to-AC ratio used to intentionally undersize the AC inverter. This is used to increase energy production in the beginning and end of the day despite the possibility of clipping peak sun hours. @@ -259,7 +287,9 @@ DC-to-AC ratio used to intentionally undersize the AC inverter. This is used to }) }} -**pvInverterEff=*float*** +### pvInverterEff + +Type: float AC inverter efficiency at rated DC power. @@ -273,7 +303,9 @@ AC inverter efficiency at rated DC power. }) }} -**pvSysLosses=*float*** +### pvSysLosses + +Type: float Fraction of total DC energy lost. The total loss from a system is aggregated from several possible causes as illustrated below: diff --git a/doc/src/docs/input-data/report.md b/doc/src/docs/input-data/report.md index d1a8064e9..4abd569ce 100644 --- a/doc/src/docs/input-data/report.md +++ b/doc/src/docs/input-data/report.md @@ -45,7 +45,9 @@ Name of report. Give after the word REPORT. }) }} -**rpReportfile=*rfname*** +### rpReportfile + +Type: rfname Name of report file to which current report will be written. If omitted, if REPORT is within a REPORTFILE object, report will be written to that report file, or else to REPORTFILE "Primary", which (as described in previous section) is automatically supplied and by default uses the file name of the input file with the extension .REP. @@ -59,7 +61,9 @@ Name of report file to which current report will be written. If omitted, if REPO }) }} -**rpType=*choice*** +### rpType + +Type: choice Choice indicating report type. Report types may be described at greater length, with examples, in Section 6. @@ -89,7 +93,9 @@ Choice indicating report type. Report types may be described at greater length, The next three members specify how frequently values are reported and the start and end dates for the REPORT. They are not allowed with *rpTypes* ERR, LOG, INP, SUM, and ZDD, which involve no time-varying data. -**rpFreq=*choice*** +### rpFreq + +Type: choice Report Frequency: specifies interval for generating rows of report data: @@ -118,7 +124,9 @@ We recommend using HOURly and more frequent reports sparingly, to report on only }) }} -**rpDayBeg=*date*** +### rpDayBeg + +Type: date Initial day of period to be reported. Reports for which *rpFreq* = YEAR do not allow specification of *rpDayBeg* and *rpDayEnd*; for MONTH reports, these members default to include all months in the run; for DAY and shorter-interval reports, *rpDayBeg* is required and *rpDayEnd* defaults to *rpDayBeg*. @@ -132,7 +140,9 @@ Initial day of period to be reported. Reports for which *rpFreq* = YEAR do not a }) }} -**rpDayEnd=*date*** +### rpDayEnd + +Type: date Final day of period to be reported, except for YEAR reports. @@ -146,7 +156,9 @@ Final day of period to be reported, except for YEAR reports. }) }} -**rpZone=*znName*** +### rpZone + +Type: znName Name of ZONE for which a ZEB, ZST, or ZDD report is being requested. For *rpType* ZEB or ZST, you may use *rpZone*=SUM to obtain a report showing only the sum of the data for all zones, or *rpZone*=ALL to obtain a report showing, for each time interval, a row of data for each zone plus a sum-of-zones row. @@ -160,7 +172,9 @@ Name of ZONE for which a ZEB, ZST, or ZDD report is being requested. For *rpType }) }} -**rpMeter=*mtrName*** +### rpMeter + +Type: mtrName Specifies meter(s) to be reported, for *rpType*=MTR. @@ -174,7 +188,9 @@ Specifies meter(s) to be reported, for *rpType*=MTR. }) }} -**rpDHWMeter=*dhwMtrName*** +### rpDHWMeter + +Type: dhwMtrName Specifies DHW meter(s) to be reported, for *rpType*=DHWMTR. @@ -188,7 +204,9 @@ Specifies DHW meter(s) to be reported, for *rpType*=DHWMTR. }) }} -**rpAFMeter=*afMtrName*** +### rpAFMeter + +Type: afMtrName Specifies air flow meter(s) to be reported, for *rpType*=AFMTR. @@ -202,7 +220,9 @@ Specifies air flow meter(s) to be reported, for *rpType*=AFMTR. }) }} -**rpAh=*ahName*** +### rpAh + +Type: ahName Specifies air handler(s) to be reported, for *rpType*=AH, AHSIZE, or AHLOAD. @@ -216,7 +236,9 @@ Specifies air handler(s) to be reported, for *rpType*=AH, AHSIZE, or AHLOAD. }) }} -**rpTu=*tuName*** +### rpTu + +Type: tuName Specifies air handler(s) to be reported, for *rpType*=TUSIZE or TULOAD. @@ -230,7 +252,9 @@ Specifies air handler(s) to be reported, for *rpType*=TUSIZE or TULOAD. }) }} -**rpBtuSf=*float*** +### rpBtuSf + +Type: float Scale factor to be used when reporting energy values. Internally, all energy values are represented in Btu. This member allows scaling to more convenient units for output. *rpBtuSf* is not shown in the output, so if you change it, be sure the readers of the report know the energy units being used. *rpBtuSf* is not applied in UDT reports, but column values can be scaled as needed with expressions. @@ -244,7 +268,9 @@ Scale factor to be used when reporting energy values. Internally, all energy val }) }} -**rpCond=*expression*** +### rpCond + +Type: expression Conditional reporting flag. If given, report rows are printed only when value of expression is non-0. Permits selective reporting according to any condition that can be expressed as a CSE expression. Such conditional reporting can be used to shorten output and make it easy to find data of interest when you are only interested in the information under exceptional conditions, such as excessive zone temperature. Allowed with *rpTypes* ZEB, ZST, MTR, AH, and UDT. @@ -258,7 +284,9 @@ Conditional reporting flag. If given, report rows are printed only when value of }) }} -**rpCPL=*int*** +### rpCPL + +Type: int Characters per line for a UDT (user-defined report). If widths specified in REPORTCOLs add up to more than this, a message occurs; if they total substantially less, additional whitespace is inserted between columns to make the report more readable. If rpCPL = -1, the report width determined based on required space with a single space between columns. rpCPL=0 uses the Top level *repCPL*. rpCPL is not allowed if *rpType* is not UDT. @@ -272,7 +300,9 @@ Characters per line for a UDT (user-defined report). If widths specified in REPO }) }} -**rpTitle=*string*** +### rpTitle + +Type: string Title for use in report header of User-Defined report. Disallowed if *rpType* is not UDT. @@ -286,7 +316,9 @@ Title for use in report header of User-Defined report. Disallowed if *rpType* is }) }} -**rpHeader=*choice*** +### rpHeader + +Type: choice Use NO to suppress the report header which gives the report type, zone, meter, or air handler being reported, time interval, column headings, etc. One reason to do this might be if you are putting only a single report in a report file and intend to later embed the report in a document or process it with some other program (but for the latter, see also EXPORT, below). @@ -304,7 +336,9 @@ See REPORTFILE member *rfPageFmt*, above, to control report *FILE* page headers }) }} -**rpFooter=*choice*** +### rpFooter + +Type: choice Use NO to suppress the report footers. The report footer is usually a row which sums hourly data for the day, daily data for the month, or monthly data for the year. For a report with *rpZone, rpMeter,*or *rpAh* = ALL, the footer row shows sums for all zones, meters, or air handlers. Sometimes the footer is merely a blank line. diff --git a/doc/src/docs/input-data/reportcol.md b/doc/src/docs/input-data/reportcol.md index 8b17375db..ee179a0fc 100644 --- a/doc/src/docs/input-data/reportcol.md +++ b/doc/src/docs/input-data/reportcol.md @@ -18,7 +18,9 @@ Name of REPORTCOL. }) }} -**colReport=*rpName*** +### colReport + +Type: rpName Name of report to which current report column belongs. If REPORTCOL is given within a REPORT object, then *colReport* defaults to that report. @@ -32,7 +34,9 @@ Name of report to which current report column belongs. If REPORTCOL is given wit }) }} -**colVal=*expression*** +### colVal + +Type: expression Value to show in this column of report. @@ -46,7 +50,9 @@ Value to show in this column of report. }) }} -**colHead=*string*** +### colHead + +Type: string Text used for column head. @@ -60,7 +66,9 @@ Text used for column head. }) }} -**colGap=*int*** +### colGap + +Type: int Space between (to left of) column, in character positions. Allows you to space columns unequally, to emphasize relations among columns or to improve readability. If the total of the *colGaps* and *colWids* in the report's REPORTCOLs is substantially less than the REPORT's *rpCPL* (characters per line, see REPORT), CSE will insert additional spaces between columns. To suppress these spaces, use a smaller *rpCPL* or use *rpCPL* = -1. @@ -74,7 +82,9 @@ Space between (to left of) column, in character positions. Allows you to space c }) }} -**colWid=*int*** +### colWid + +Type: int Column width. @@ -88,7 +98,9 @@ Column width. }) }} -**colDec=*int*** +### colDec + +Type: int Number of digits after decimal point. @@ -102,7 +114,9 @@ Number of digits after decimal point. }) }} -**colJust=*choice*** +### colJust + +Type: choice Specifies positioning of data within column: diff --git a/doc/src/docs/input-data/reportfile.md b/doc/src/docs/input-data/reportfile.md index 716d667ee..2604fb5c2 100644 --- a/doc/src/docs/input-data/reportfile.md +++ b/doc/src/docs/input-data/reportfile.md @@ -34,7 +34,9 @@ Name of REPORTFILE object, given immediately after the word REPORTFILE. Note tha }) }} -**rfFileName=*path*** +### rfFileName + +Type: path path name of file to be written. If no path is specified, the file is written in the current directory. The default extension is .REP. @@ -48,7 +50,9 @@ path name of file to be written. If no path is specified, the file is written in }) }} -**rfFileStat=*choice*** +### rfFileStat + +Type: choice Choice indicating what CSE should do if the file specified by *rfFileName*already exists: @@ -70,7 +74,9 @@ If the specified file does not exist, it is created and *rfFileStat* has no effe }) }} -**rfPageFmt=*Choice*** +### rfPageFmt + +Type: Choice Choice controlling page formatting. Page formatting consists of dividing the output into pages (with form feed characters), starting a new page before each report too long to fit on the current page, and putting headers and footers on each page. Page formatting makes attractive printed output but is a distraction when examining the output on the screen and may inappropriate if you are going to further process the output with another program. diff --git a/doc/src/docs/input-data/rsys.md b/doc/src/docs/input-data/rsys.md index d6def14f0..263052030 100644 --- a/doc/src/docs/input-data/rsys.md +++ b/doc/src/docs/input-data/rsys.md @@ -16,7 +16,9 @@ Optional name of HVAC system; give after the word “RSYS” if desired. }) }} -**rsType=*choice*** +### rsType + +Type: choice Type of system. @@ -54,7 +56,9 @@ FANCOIL, Coil-based heating and cooling. No primary (fuel-using) equipment is m }) }} -**rsDesc=*string*** +### rsDesc + +Type: string Text description of system, included as documentation in debugging reports such as those triggered by rsGeneratePerfMap=YES @@ -68,7 +72,9 @@ Text description of system, included as documentation in debugging reports such }) }} -**rsModeCtrl=*choice*** +### rsModeCtrl + +Type: choice Specifies systems heating/cooling availability during simulation. @@ -89,7 +95,9 @@ Specifies systems heating/cooling availability during simulation. }) }} -**rsGeneratePerfMap=*choice*** +### rsGeneratePerfMap + +Type: choice Generate performance map(s) for this RSYS. Comma-separated text is written to file PM\_[rsName].csv. This is a debugging capability that is not necessarily maintained. The format of the generated csv text file may change and is unrelated to the PERFORMANCEMAP input scheme used via *rsPerfMapHtg* and *rsPerfMapClg*. @@ -103,7 +111,9 @@ Generate performance map(s) for this RSYS. Comma-separated text is written to fi }) }} -**rsFanTy=*choice*** +### rsFanTy + +Type: choice Specifies fan (blower) position relative to primary heating or cooling source (i.e. heat exchanger or heat pump coil for heating and AC coil for cooling). The blower position determines where fan heat is added to the RSYS air stream and thus influences the coil entering air temperature. @@ -117,7 +127,9 @@ Specifies fan (blower) position relative to primary heating or cooling source (i }) }} -**rsFanMotTy=*choice*** +### rsFanMotTy + +Type: choice Specifies type of motor driving the fan (blower). This is used in the derivation of the coil-only cooling capacity for the RSYS. @@ -136,11 +148,15 @@ Specifies type of motor driving the fan (blower). This is used in the derivation }) }} -**rsAdjForFanHt=*choice*** +### rsAdjForFanHt + +Type: choice Fan heat adjustment with two options Yes or no. Yes: fanHtRtd derived from rsFanTy and removed from capacity and input values. No: no rated fan heat adjustments. -**rsElecMtr=*mtrName*** +### rsElecMtr + +Type: mtrName Name of METER object, if any, by which system’s electrical energy use is recorded (under appropriate end uses). @@ -208,7 +224,9 @@ rsSrcSideLoadMtr should not specify the same LOADMETER as rsHtgSrcSideLoadMtr or }) }} -**rsCHDHWSYS=*dhwsysName*** +### rsCHDHWSYS + +Type: dhwsysName DHWSYS hot water source for this RSYS, required when rsType is COMBINEDHEATDHW or ACCOMBINEDHEATDHW. The specified DHWSYS must include a DHWHEATER of whType=ASHPX or RESISTANCEX. @@ -222,7 +240,9 @@ DHWSYS hot water source for this RSYS, required when rsType is COMBINEDHEATDHW o }) }} -**rsAFUE=*float*** +### rsAFUE + +Type: float Heating Annual Fuel Utilization Efficiency (AFUE). @@ -236,7 +256,9 @@ Heating Annual Fuel Utilization Efficiency (AFUE). }) }} -**rsCapH=*float*** +### rsCapH + +Type: float Heating capacity, used when rsType is ACFURNACE, ACRESISTANCE, FURNACE, WSHP or RESISTANCE. @@ -252,7 +274,9 @@ If rsType=WSHP, rsCapH is at source fluid temperature = 68 ^o^F. }) }} -**rsTdDesH=*float*** +### rsTdDesH + +Type: float Nominal heating temperature rise (across system, not at zone) used during autosizing (when capacity is not yet known) and to derive heating air flow rate from heating capacity. @@ -266,7 +290,9 @@ Nominal heating temperature rise (across system, not at zone) used during autosi }) }} -**rsFxCapH=*float*** +### rsFxCapH + +Type: float Heating autosizing capacity factor. If AUTOSIZEd, rsCapH or rsCap47 is set to rsFxCapH $\times$ (peak design-day load). Peak design-day load is the heating capacity that holds zone temperature at the thermostat set point during the *last substep* of all hours of all design days. @@ -280,7 +306,9 @@ Heating autosizing capacity factor. If AUTOSIZEd, rsCapH or rsCap47 is set to rs }) }} -**rsFanPwrH=*float*** +### rsFanPwrH + +Type: float Heating operating fan power. For most rsTypes, heating air flow is calculated from heating capacity and rsTdDesH. The default value of rsFanPwrH is .365 W/cfm except 0.273 W/cfm is used when rsType=COMBINEDHEATDHW and rsType=ACCOMBINEDHEATDHW. @@ -294,7 +322,9 @@ Heating operating fan power. For most rsTypes, heating air flow is calculated fr }) }} -**rsHSPF=*float*** +### rsHSPF + +Type: float For rsType=ASHP, Heating Seasonal Performance Factor (HSPF). @@ -308,7 +338,9 @@ For rsType=ASHP, Heating Seasonal Performance Factor (HSPF). }) }} -**rsCap47=*float*** +### rsCap47 + +Type: float For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 47 ^o^F. @@ -324,7 +356,9 @@ If rsType=ASHP and both rsCapC and rsCap47 are autosized, both are set to the la }) }} -**rsCap35=*float*** +### rsCap35 + +Type: float For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 35 ^o^F. rsCap35 typically reflects reduced capacity due to reverse (cooling) heat pump operation for defrost. @@ -338,7 +372,9 @@ For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 35 ^o^ }) }} -**rsCap17=*float*** +### rsCap17 + +Type: float For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 17 ^o^F. @@ -352,7 +388,9 @@ For rsType=ASHP, rated heating capacity at outdoor dry-bulb temperature = 17 ^o^ }) }} -**rsCOP95=*float*** +### rsCOP95 + +Type: float For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 95 ^o^F. @@ -366,7 +404,9 @@ For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb te }) }} -**rsCOP47=*float*** +### rsCOP47 + +Type: float For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 47 ^o^F. For rsType=WSHP, rated heating coefficient of performance at source fluid temperature = 68 ^o^F. @@ -380,7 +420,9 @@ For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb te }) }} -**rsCOP35=*float*** +### rsCOP35 + +Type: float For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 35 ^o^F. @@ -394,7 +436,9 @@ For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb te }) }} -**rsCOP17=*float*** +### rsCOP17 + +Type: float For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb temperature = 17 ^o^F. @@ -408,7 +452,9 @@ For rsType=ASHP, rated heating coefficient of performance at outdoor dry-bulb te }) }} -**rsCapRat1747=*float*** +### rsCapRat1747 + +Type: float Ratio of rsCAP17 over rsCAP47. @@ -422,7 +468,9 @@ Ratio of rsCAP17 over rsCAP47. }) }} -**rsCapRat9547=*float*** +### rsCapRat9547 + +Type: float Ratio of rsCAP95 to rsCAP47. This ratio is used for inter-defaulting rsCap47 and rsCapC such that they have consistent values as is required given that a heat pump is a single device. If not given, rsCapRat9547 is determined during calculations using the relationship cap95 = 0.98 * cap47 + 180 (derived via correlation of capacities of a set of real units). @@ -436,7 +484,9 @@ Ratio of rsCAP95 to rsCAP47. This ratio is used for inter-defaulting rsCap47 an }) }} -**rsCapRatCH=*float*** +### rsCapRatCH + +Type: float For WSHP only: ratio of rsCapC to rsCapH. Used to derive capacity during autosizing or when only one capacity is specified. @@ -450,7 +500,9 @@ For WSHP only: ratio of rsCapC to rsCapH. Used to derive capacity during autosi }) }} -**rsPerfMapHtg=*performanceMapName*** +### rsPerfMapHtg + +Type: performanceMapName Specifies the heating performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM. The PERFORMANCEMAP must have grid variables outdoor drybulb and compressor speed (in that order) and lookup values of net capacity ratios and COP. See example in PERFORMANCEMAP. @@ -464,7 +516,9 @@ Specifies the heating performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM. }) }} -**rsPerfMapClg=*performanceMapName*** +### rsPerfMapClg + +Type: performanceMapName Specifies the cooling performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM, ACPM, ACPMFURNACE, ACPMRESISTANCE, or ACPMCOMBINEDHEATDHW. The PERFORMANCEMAP must have grid variables outdoor drybulb and compressor speed (in that order) and lookup values of net capacity ratios and COP. See example in PERFORMANCEMAP. @@ -478,7 +532,9 @@ Specifies the cooling performance PERFORMANCEMAP for RSYSs having rsType=ASHPPM, }) }} -**rsTypeAuxH=*choice*** +### rsTypeAuxH + +Type: choice For rsType=ASHP, type of auxiliary heat. Auxiliary heating is used when heatpump capacity is insufficient to maintain zone temperature and during reverse-cycle defrost operation (if rsDefrostModel=REVCYCLEAUX). If rsTypeAuxH=Furnace, energy use for auxiliary heat is accumulated to end use HPBU of meter rsFuelMtr (if specified). If rsTypeAuxH=Resistance, energy use for auxiliary heat is accumulated to end use HPBU of meter rsElecMtr (if specified). @@ -499,7 +555,9 @@ FURNACE, Fuel-fired", True) }) }} -**rsCtrlAuxH=*choice*** +### rsCtrlAuxH + +Type: choice For rsType=ASHP, type of auxiliary heating control. @@ -520,7 +578,9 @@ ALTERNATE, Alternates between compressor and auxiliary", True) }) }} -**rsCapAuxH=*float*** +### rsCapAuxH + +Type: float For rsType=ASHP, auxiliary heating capacity. If AUTOSIZEd, rsCapAuxH is set to the peak heating load evaluated at the heating design temperature (Top.heatDsTDbO). @@ -534,7 +594,9 @@ For rsType=ASHP, auxiliary heating capacity. If AUTOSIZEd, rsCapAuxH is set to t }) }} -**rsAFUEAuxH=*float*** +### rsAFUEAuxH + +Type: float For rsType=ASHP, auxiliary heat annualized fuel utilization efficiency. @@ -548,7 +610,9 @@ For rsType=ASHP, auxiliary heat annualized fuel utilization efficiency. }) }} -**rsDefrostModel=*choice*** +### rsDefrostModel + +Type: choice Selects modeling options for ASHP outdoor coil defrosting when 17 ^o^F < TDbO < 45 ^o^F. In this temperature range, heating capacity and/or efficiency are typically reduced due to frost accumulation on the outdoor coil. @@ -568,7 +632,9 @@ For rsType=ASHP, auxiliary heat annualized fuel utilization efficiency. }) }} -**rsSHRtarget=*float*** +### rsSHRtarget + +Type: float Nominal target for sensible heat ratio (for fancoil). @@ -582,7 +648,9 @@ Nominal target for sensible heat ratio (for fancoil). }) }} -**rsFxCapAuxH=*float*** +### rsFxCapAuxH + +Type: float Auxiliary heating autosizing capacity factor. If AUTOSIZEd, rsCapAuxH is set to rsFxCapAuxH $\times$ (peak design-day load). Peak design-day load is the heating capacity that holds zone temperature at the thermostat set point during the *last substep* of all hours of all design days. @@ -596,7 +664,9 @@ Nominal target for sensible heat ratio (for fancoil). }) }} -**rsSEER=*float*** +### rsSEER + +Type: float Cooling rated Seasonal Energy Efficiency Ratio (SEER). @@ -610,7 +680,9 @@ Cooling rated Seasonal Energy Efficiency Ratio (SEER). }) }} -**rsEER=*float*** +### rsEER + +Type: float Cooling Energy Efficiency Ratio (EER) at standard AHRI rating conditions (outdoor drybulb of 95 ^o^F and entering air at 80 ^o^F drybulb and 67 ^o^F wetbulb). For rsType=WSHP, rated EER at fluid source temperature = 86 ^o^F. @@ -624,7 +696,9 @@ Cooling Energy Efficiency Ratio (EER) at standard AHRI rating conditions (outdoo }) }} -**rsCapC=*float*** +### rsCapC + +Type: float Net cooling capacity at standard rating conditions (outdoor drybulb temperature = 95 ^o^F for air source or fluid source temperature = 86 ^o^F for water source). @@ -642,7 +716,9 @@ If rsType=WSHP and both rsCapC and rsCapH are autosized, both are set to the lar }) }} -**rsTdDesC=*float*** +### rsTdDesC + +Type: float Nominal cooling temperature fall (across system, not zone) used during autosizing (when capacity is not yet known). @@ -656,7 +732,9 @@ Nominal cooling temperature fall (across system, not zone) used during autosizin }) }} -**rsFxCapC=*float*** +### rsFxCapC + +Type: float Cooling autosizing capacity factor. rsCapC is set to rsFxCapC $\times$ (peak design-day load). Peak design-day load is the cooling capacity that holds zone temperature at the thermostat set point during the *last substep* of all hours of all design days. @@ -670,7 +748,9 @@ Cooling autosizing capacity factor. rsCapC is set to rsFxCapC $\times$ (peak des }) }} -**rsFChg=*float*** +### rsFChg + +Type: float Cooling compressor capacity factor. The gross cooling capacity is adjusted by the factor rsFChg as specified by California Title 24 procedures. @@ -685,7 +765,9 @@ Cooling compressor capacity factor. The gross cooling capacity is adjusted by t }) }} -**rsVFPerTon=*float*** +### rsVFPerTon + +Type: float Standard air volumetric flow rate per nominal ton of cooling capacity. @@ -699,7 +781,9 @@ Standard air volumetric flow rate per nominal ton of cooling capacity. }) }} -**rsFanPwrC=*float*** +### rsFanPwrC + +Type: float Cooling fan power. @@ -713,7 +797,9 @@ Cooling fan power. }) }} -**rsASHPLockOutT=*float*** +### rsASHPLockOutT + +Type: float Source air dry-bulb temperature below which the air source heat pump compressor does not operate. @@ -727,7 +813,9 @@ Cooling fan power. }) }} -**rsCdH=*float*** +### rsCdH + +Type: float Heating cyclic degradation coefficient, valid only for compressor-based heating (heat pumps). @@ -741,7 +829,9 @@ Cooling fan power. }) }} -**rsCdC=*float*** +### rsCdC + +Type: float Cooling cyclic degradation coefficient, valid for configurations having compressor-based cooling. @@ -755,7 +845,9 @@ Cooling cyclic degradation coefficient, valid for configurations having compress }) }} -**rsFEffH=*float*** +### rsFEffH + +Type: float Heating efficiency factor. At each time step, the heating efficiency is multiplied by rsFEffH. @@ -769,7 +861,9 @@ Heating efficiency factor. At each time step, the heating efficiency is multipl }) }} -**rsFEffAuxHBackup=*float*** +### rsFEffAuxHBackup + +Type: float Backup auxiliary heating efficiency factor. At each time step, the backup heating efficiency is multiplied by rsFEffAuxHBackup. Backup auxiliary heating is typically provided by electric resistance "strip heat" but may be provided by a furnace (see rsTypeAuxH). If rsTypeAuxH is not "none", backup heat operates when air source heat pump compressor capacity is insufficient to meet heating load. See also rsFEffAuxHDefrost. @@ -783,7 +877,9 @@ Backup auxiliary heating efficiency factor. At each time step, the backup heati }) }} -**rsFEffAuxHDefrost=*float*** +### rsFEffAuxHDefrost + +Type: float Defrost auxiliary heating efficiency factor. At each time step, the defrost auxiliary heating efficiency is multiplied by rsFEffAuxHDefrost. Defrost auxiliary heating is typically provided by electric resistance "strip heat" but may be provided by a furnace (see rsTypeAuxH). If rsDefrostModel=REVCYCLEAUX, defrost auxiliary heat operates during air source heat pump defrost mode. Since defrost and backup heating are generally provided by the same equipment, rsFEffAuxHDefrost and rsFEffAuxHBackup are usually set to the same value, but separate inputs are available for special cases. @@ -797,7 +893,9 @@ Defrost auxiliary heating efficiency factor. At each time step, the defrost aux }) }} -**rsFEffC=*float*** +### rsFEffC + +Type: float Cooling efficiency factor. At each time step, the cooling efficiency is multiplied by rsEffC. @@ -811,7 +909,9 @@ Cooling efficiency factor. At each time step, the cooling efficiency is multipl }) }} -**rsCapNomH=*float*** +### rsCapNomH + +Type: float Heating nominal capacity. Provides type-independent probe source for RSYS heating capacity. Daily variability is specified to support value changes during AUTOSIZEing. Values set via input are typically constant. @@ -825,7 +925,9 @@ Heating nominal capacity. Provides type-independent probe source for RSYS heati }) }} -**rsCapNomC=*float*** +### rsCapNomC + +Type: float Cooling nominal capacity. Provides type-independent probe source for RSYS cooling capacity. Daily variability is specified to support value changes during AUTOSIZEing. Values set via input are typically constant. @@ -839,7 +941,9 @@ Cooling nominal capacity. Provides type-independent probe source for RSYS cooli }) }} -**rsDSEH=*float*** +### rsDSEH + +Type: float Heating distribution system efficiency. If given, (1-rsDSEH) of RSYS heating output is discarded. Cannot be combined with more detailed DUCTSEG model. @@ -854,7 +958,9 @@ Heating distribution system efficiency. If given, (1-rsDSEH) of RSYS heating ou }) }} -**rsDSEC=*float*** +### rsDSEC + +Type: float Cooling distribution system efficiency. If given, (1-rsDSEC) of RSYS cooling output is discarded. Cannot be combined with more detailed DUCTSEG model. @@ -934,7 +1040,9 @@ VARIABLE, Variable-flow CFI (aka NightBreeze). Flow rate is determined at midn }) }} -**rsOAVTDbInlet=*float*** +### rsOAVTDbInlet + +Type: float OAV inlet (source) air temperature. Supply air temperature at the zone is generally higher due to fan heat. Duct losses, if any, also alter the supply air temperature. @@ -948,7 +1056,9 @@ OAV inlet (source) air temperature. Supply air temperature at the zone is gener }) }} -**rsOAVTdiff=*float*** +### rsOAVTdiff + +Type: float OAV temperature differential. When operating in OAV mode, the zone set point temperature is max( znTD, inletT+rsOAVTdiff). Small values can result in inadvertent zone heating, due to fan heat. @@ -962,7 +1072,9 @@ OAV inlet (source) air temperature. Supply air temperature at the zone is gener }) }} -**rsOAVReliefZn=*znName*** +### rsOAVReliefZn + +Type: znName Name of zone to which relief air is directed during RSYS OAV operation, typically an attic zone. Relief air flow is included in the target zone's pressure and thermal balance. @@ -976,7 +1088,9 @@ Name of zone to which relief air is directed during RSYS OAV operation, typicall }) }} -**rsParElec=*float*** +### rsParElec + +Type: float Parasitic electrical power. rsParElec is unconditionally accumulated to end use AUX of rsElecMtr (if specified) and has no other effect. @@ -990,7 +1104,9 @@ Parasitic electrical power. rsParElec is unconditionally accumulated to end use }) }} -**rsParFuel=*float*** +### rsParFuel + +Type: float Parasitic fuel use. rsParFuel is unconditionally accumulated to end use AUX of sFuelMtr (if specified) and has no other effect. @@ -1004,7 +1120,9 @@ Parasitic fuel use. rsParFuel is unconditionally accumulated to end use AUX of }) }} -**rsRhIn=*float*** +### rsRhIn + +Type: float Entering air relative humidity (for model testing). @@ -1018,7 +1136,9 @@ Entering air relative humidity (for model testing). }) }} -**rsTdbOut=*float*** +### rsTdbOut + +Type: float Air dry-bulb temperature at the outdoor portion of this system. diff --git a/doc/src/docs/input-data/sgdist.md b/doc/src/docs/input-data/sgdist.md index 5925a6a34..4244a42cd 100644 --- a/doc/src/docs/input-data/sgdist.md +++ b/doc/src/docs/input-data/sgdist.md @@ -18,7 +18,9 @@ Name of solar gain distribution (follows "SGDIST" if given). }) }} -**sgSurf=*sfName*** +### sgSurf + +Type: sfName Name of surface to which gain is targeted. @@ -39,7 +41,9 @@ The specified surface must be modeled with the Delayed model. If gain is targete }) }} -**sgSide=*choice*** +### sgSide + +Type: choice Designates the side of the surface to which the gain is to be targeted: @@ -62,7 +66,9 @@ EXTERIOR, Apply gain to exterior of surface") ??This can produce some strange arrangements; verify that energy balance can be properly defined in all cases. --> -**sgFSO=*float*** +### sgFSO + +Type: float Fraction of solar gain directed to specified surface when the owning window's interior shading is in the open position (when the window's zone's shade closure (znSC) is 0). @@ -76,7 +82,9 @@ Fraction of solar gain directed to specified surface when the owning window's in }) }} -**sgFSC=*float*** +### sgFSC + +Type: float Fraction of solar gain directed to specified surface when the owning window's interior shading is in the closed position. If the zone's shades are partly closed (znSC between 0 and 1), a proportional fraction between sgFSO and sgFSC is used. diff --git a/doc/src/docs/input-data/shade.md b/doc/src/docs/input-data/shade.md index 38aed5a18..251d2f5e0 100644 --- a/doc/src/docs/input-data/shade.md +++ b/doc/src/docs/input-data/shade.md @@ -19,7 +19,9 @@ Name of shade; follows the word "SHADE" if given. }) }} -**ohDepth=*float*** +### ohDepth + +Type: float Depth of overhang (from plane of window to outside edge of overhang). A zero value indicates no overhang. @@ -33,7 +35,9 @@ Depth of overhang (from plane of window to outside edge of overhang). A zero val }) }} -**ohDistUp=*float*** +### ohDistUp + +Type: float Distance from top of window to bottom of overhang. @@ -47,7 +51,9 @@ Distance from top of window to bottom of overhang. }) }} -**ohExL=*float*** +### ohExL + +Type: float Distance from left edge of window (as viewed from the outside) to the left end of the overhang. @@ -61,7 +67,9 @@ Distance from left edge of window (as viewed from the outside) to the left end o }) }} -**ohExR=*float*** +### ohExR + +Type: float Distance from right edge of window (as viewed from the outside) to the right end of the overhang. @@ -75,7 +83,9 @@ Distance from right edge of window (as viewed from the outside) to the right end }) }} -**ohFlap=*float*** +### ohFlap + +Type: float Height of flap hanging down from outer edge of overhang. @@ -89,7 +99,9 @@ Height of flap hanging down from outer edge of overhang. }) }} -**lfDepth=*float*** +### lfDepth + +Type: float Depth of left fin from plane of window. A zero value indicates no fin. @@ -103,7 +115,9 @@ Depth of left fin from plane of window. A zero value indicates no fin. }) }} -**lfTopUp=*float*** +### lfTopUp + +Type: float Vertical distance from top of window to top of left fin. @@ -117,7 +131,9 @@ Vertical distance from top of window to top of left fin. }) }} -**lfDistL=*float*** +### lfDistL + +Type: float Distance from left edge of window to left fin. @@ -131,7 +147,9 @@ Distance from left edge of window to left fin. }) }} -**lfBotUp=*float*** +### lfBotUp + +Type: float Vertical distance from bottom of window to bottom of left fin. @@ -145,7 +163,9 @@ Vertical distance from bottom of window to bottom of left fin. }) }} -**rfDepth=*float*** +### rfDepth + +Type: float Depth of right fin from plane of window. A 0 value indicates no fin. @@ -159,7 +179,9 @@ Depth of right fin from plane of window. A 0 value indicates no fin. }) }} -**rfTopUp=*float*** +### rfTopUp + +Type: float Vertical distance from top of window to top of right fin. @@ -173,7 +195,9 @@ Vertical distance from top of window to top of right fin. }) }} -**rfDistR=*float*** +### rfDistR + +Type: float Distance from right edge of window to right fin. @@ -187,7 +211,9 @@ Distance from right edge of window to right fin. }) }} -**rfBotUp=*float*** +### rfBotUp + +Type: float Vertical distance from bottom of window to bottom of right fin. diff --git a/doc/src/docs/input-data/shadex.md b/doc/src/docs/input-data/shadex.md index 669069bc0..3c3a62c6f 100644 --- a/doc/src/docs/input-data/shadex.md +++ b/doc/src/docs/input-data/shadex.md @@ -16,7 +16,9 @@ Name of photovoltaic array. Give after the word SHADEX. }) }} -**sxMounting=*choice*** +### sxMounting + +Type: choice Specifies the mounting location of the shade. sxMounting=Site indicates the SHADEX position is fixed and is not modified if the building is rotated. The position of SHADEXs with sxMounting=Building are modified to include the effect of building rotation specified via [Top bldgAz][bldgAzm] diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index d0d9b116b..78f74583d 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -16,7 +16,9 @@ Name of surface; give after the word SURFACE. }) }} -**sfType=*choice*** +### sfType + +Type: choice Type of surface: @@ -38,7 +40,9 @@ sfType is used extensively for default determination and input checking, but doe }) }} -**sfArea=*float*** +### sfArea + +Type: float Gross area of surface. (CSE computes the net area for simulation by subtracting the areas of any windows and doors in the surface.). @@ -52,7 +56,9 @@ Gross area of surface. (CSE computes the net area for simulation by subtracting }) }} -**sfTilt=*float*** +### sfTilt + +Type: float Surface tilt from horizontal. Values outside the range 0 to 360 are first normalized to that range. The default and allowed range depend on sfType, as follows: @@ -72,7 +78,9 @@ Surface tilt from horizontal. Values outside the range 0 to 360 are first normal }) }} -**sfAzm=*float*** +### sfAzm + +Type: float Azimuth of surface with respect to znAzm. The azimuth used in simulating a surface is bldgAzm + znAzm + sfAzm; the surface is rotated if any of those are changed. Values outside the range 0 to 360 are normalized to that range. Required for non-horizontal surfaces. @@ -86,7 +94,9 @@ Azimuth of surface with respect to znAzm. The azimuth used in simulating a surfa }) }} -**sfModel=*choice*** +### sfModel + +Type: choice Provides user control over how CSE models conduction for this surface. @@ -112,7 +122,9 @@ TODO: better sfModel desciptions --> Either sfU or sfCon must be specified, but not both. -**sfU=*float*** +### sfU + +Type: float Surface U-value (NOT including surface (air film) conductances). For surfaces for which no heat capacity is to be modeled, allows direct entry of U-value without defining a CONSTRUCTION. @@ -126,7 +138,9 @@ Surface U-value (NOT including surface (air film) conductances). For surfaces fo }) }} -**sfCon=*conName*** +### sfCon + +Type: conName Name of CONSTRUCTION of the surface. @@ -140,7 +154,9 @@ Name of CONSTRUCTION of the surface. }) }} -**sfLThkF=*float*** +### sfLThkF + +Type: float Sublayer thickness adjustment factor for FORWARD\_DIFFERENCE conduction model used with sfCon surfaces. Material layers in the construction are divided into sublayers as needed for numerical stability. sfLThkF allows adjustment of the thickness criterion used for subdivision. A value of 0 prevents subdivision; the default value (0.5) uses layers with conservative thickness equal to half of an estimated safe value. Fewer (thicker) sublayers improves runtime at the expense of accurate representation of rapid changes. @@ -154,7 +170,9 @@ Sublayer thickness adjustment factor for FORWARD\_DIFFERENCE conduction model us }) }} -**sfExCnd=*choice*** +### sfExCnd + +Type: choice Specifies the thermal conditions assumed at surface exterior, and at exterior of any subobjects (windows or doors) belonging to current surface. The conditions accounted for are dry bulb temperature and incident solar radiation. @@ -166,7 +184,9 @@ GROUND, The surface is in contact with the ground. Details of the two-di ADIABATIC, Exterior surface heat flow is 0. Thermal storage effects of delayed surfaces are modeled.") }} -**sfExAbs=*float*** +### sfExAbs + +Type: float Surface exterior absorptivity. @@ -180,7 +200,9 @@ Surface exterior absorptivity. }) }} -**sfInAbs=*float*** +### sfInAbs + +Type: float Surface interior solar absorptivity. @@ -194,7 +216,9 @@ Surface interior solar absorptivity. }) }} -**sfExEpsLW=*float*** +### sfExEpsLW + +Type: float Surface exterior long wave (thermal) emittance. @@ -208,7 +232,9 @@ Surface exterior long wave (thermal) emittance. }) }} -**sfInEpsLW=*float*** +### sfInEpsLW + +Type: float Surface interior long wave (thermal) emittance. @@ -222,7 +248,9 @@ Surface interior long wave (thermal) emittance. }) }} -**sfExT=*float*** +### sfExT + +Type: float Exterior air temperature. @@ -236,7 +264,9 @@ Exterior air temperature. }) }} -**sfAdjZn=*znName*** +### sfAdjZn + +Type: znName Name of adjacent zone; used only when sfExCnd is ADJZN. Can be the same as the current zone. @@ -250,7 +280,9 @@ Name of adjacent zone; used only when sfExCnd is ADJZN. Can be the same as the c }) }} -**sfGrndRefl=*float*** +### sfGrndRefl + +Type: float Ground reflectivity for this surface. @@ -264,7 +296,9 @@ Ground reflectivity for this surface. }) }} -**sfInH=*float*** +### sfInH + +Type: float Inside surface (air film) conductance. Ignored for sfModel = Forward\_Difference. Default depends on the surface type. @@ -283,7 +317,9 @@ other, 1.5") }) }} -**sfExH=*float*** +### sfExH + +Type: float Outside combined surface (air film) conductance. Ignored for sfModel = Forward\_Difference. The default value is dependent upon the exterior conditions: @@ -319,7 +355,9 @@ ASHRAE, n/a, ASHRAE handbook values TARP, n/a, TARP model", True) }} -**sfExHcModel=*choice*** +### sfExHcModel + +Type: choice @@ -335,7 +373,9 @@ Selects the model used for exterior surface convection when sfModel = Forward\_D }) }} -**sfExHcLChar=*float*** +### sfExHcLChar + +Type: float Characteristic length of surface, used in derivation of forced exterior convection coefficients in some models when outside surface is exposed to ambient. See sfExHcModel. @@ -349,7 +389,9 @@ Characteristic length of surface, used in derivation of forced exterior convecti }) }} -**sfExHcMult=*float*** +### sfExHcMult + +Type: float Exterior convection coefficient adjustment factor. When sfExHcModel=INPUT, hc=sfExHcMult. For other sfExHcModel choices, the model-derived hc is multiplied by sfExHcMult. @@ -363,7 +405,9 @@ Exterior convection coefficient adjustment factor. When sfExHcModel=INPUT, hc=s }) }} -**sfExRf=*float*** +### sfExRf + +Type: float Exterior surface roughness factor. Used only when surface is exposed to ambient (i.e. with wind exposure). Typical values: @@ -387,7 +431,9 @@ Exterior surface roughness factor. Used only when surface is exposed to ambient }) }} -**sfInHcModel=*choice*** +### sfInHcModel + +Type: choice @@ -419,7 +465,9 @@ Exterior surface roughness factor. Used only when surface is exposed to ambient The items below give values associated with CSE's model for below grade surfaces (sfExCnd=GROUND). See CSE Engineering Documentation for technical details. -**sfFnd=*fdName*** +### sfFnd + +Type: fdName Name of FOUNDATION applied to ground-contact Floor SURFACEs; used only for Floor SURFACEs when sfExCnd is GROUND. @@ -432,7 +480,9 @@ Name of FOUNDATION applied to ground-contact Floor SURFACEs; used only for Floor }) }} -**sfFndFloor=*sfName*** +### sfFndFloor + +Type: sfName Name of adjacent ground-contact Floor SURFACE; used only for Wall SURFACEs when sfExCnd is GROUND. @@ -445,7 +495,9 @@ Name of adjacent ground-contact Floor SURFACE; used only for Wall SURFACEs when }) }} -**sfHeight=*float*** +### sfHeight + +Type: float Needed for foundation wall height, otherwise ignored. Maybe combine with sfDepthBG? @@ -459,7 +511,9 @@ Needed for foundation wall height, otherwise ignored. Maybe combine with sfDepth }) }} -**sfExpPerim=*float*** +### sfExpPerim + +Type: float Exposed perimeter of foundation floors. @@ -474,7 +528,9 @@ Exposed perimeter of foundation floors. }} -**sfDepthBG=*float*** +### sfDepthBG + +Type: float *Note: sfDepthBG is used as part of the simple ground model, which is no longer supported. Use sfHeight with sfFnd instead.* @@ -492,15 +548,21 @@ Depth below grade of surface. For walls, sfDepthBG is measured to the lower edg *Note: The following data members are part of the simple ground model, which is no longer supported. Use sfFnd instead.* -**sfExCTGrnd=*float*** +### sfExCTGrnd + +Type: float **sfExCTaDbAvg07=*float*** -**sfExCTaDbAvg14=*float*** +### sfExCTaDbAvg14 + +Type: float **sfExCTaDbAvg31=*float*** -**sfExCTaDbAvgYr=*float*** +### sfExCTaDbAvgYr + +Type: float Conductances from outside face of surface to the weather file ground temperature and the moving average outdoor dry-bulb temperatures for 7, 14, 31, and 365 days. @@ -514,7 +576,9 @@ Conductances from outside face of surface to the weather file ground temperature }) }} -**sfExRConGrnd=*float*** +### sfExRConGrnd + +Type: float Resistance overall construction resistance. TODO: full documentation. diff --git a/doc/src/docs/input-data/terminal.md b/doc/src/docs/input-data/terminal.md index cdc7195a0..07a906656 100644 --- a/doc/src/docs/input-data/terminal.md +++ b/doc/src/docs/input-data/terminal.md @@ -30,7 +30,9 @@ These commands establish the TERMINAL's local heating capability and determine w *Either tuTLh or tuQMnLh must be given to establish the TERMINAL's local heat capability:* -**tuTLh=*float*** +### tuTLh + +Type: float Local heating thermostat setpoint. Hourly expression may be used to schedule as desired. Giving this implies *set temperature* local heat from this terminal; omitting implies no local heat or, if tuQMnLh is given, set output local heat. @@ -44,7 +46,9 @@ Local heating thermostat setpoint. Hourly expression may be used to schedule as }) }} -**tuQMnLh=*float*** +### tuQMnLh + +Type: float Minimum local heat output or set local heat output. If tuTLh is given, this is the minimum output, used when the thermostat is not calling for (local) heat. If tuTLh is not given, giving tuQMnLh implies *set output* local heat and specifies the set output level. An hourly expression may be used to schedule as desired. @@ -60,7 +64,9 @@ Minimum local heat output or set local heat output. If tuTLh is given, this is t The next three items are allowed only for thermostat controlled local heating (tuTLh given): -**tuQMxLh=*float*** +### tuQMxLh + +Type: float Maximum desired power, used when thermostat is calling for heat continuously, subject to coil capacity, and to HEATPLANT limitations where pertinent (see *tuhcCaptRat* description). If *tuQMxLh* is less than minimum power (tuQMnLh), the latter is used, effectively disabling setpoint control. @@ -74,7 +80,9 @@ Maximum desired power, used when thermostat is calling for heat continuously, su }) }} -**tuPriLh=*int*** +### tuPriLh + +Type: int Setpoint priority: when there is more than one capability with the same setpoint, that with the highest priority (lowest value) is used first. The defaults for tuPriLh (100) and tuPriH (1) cause maximum air heat to be used before local heat, if both are present and the setpoints are the same. Two or more equal setpoints with equal priorities in the ZONE cause an error, even if in different TERMINALs. @@ -88,7 +96,9 @@ Setpoint priority: when there is more than one capability with the same setpoint }) }} -**tuLhNeedsFlow=*choice*** +### tuLhNeedsFlow + +Type: choice {{ csv_table("YES, local heat being modeled requires terminal air flow (e.g. reheat coil). Local heat is then disabled when there is zero air flow through the terminal (when simulated VAV damper set to 0 flow, or when air handler fan and terminal fan both off) @@ -118,7 +128,9 @@ Note: To autosize air flows for a constant volume terminal, use the following AUTOSIZE tuVfMn tuVfMxHC = SAME -**tuAh=*ahName*** +### tuAh + +Type: ahName Name of air handler supplying this terminal. @@ -137,7 +149,9 @@ If both of the following (tuTH and tuTC) are specified, be careful not to accide Giving neither tuTH nor tuTC implies that the terminal has no *set temperature* air capability; it will then have *set output* air capability if tuVfMn is given. -**tuTH=*float*** +### tuTH + +Type: float Air heating thermostat set point; implies *set temperature* air capability. May be scheduled as desired with an hourly expression; to disable set temperature operation at certain times (as when air handler is scheduled to supply cold air), schedule a low temperature such as 1. @@ -151,7 +165,9 @@ Air heating thermostat set point; implies *set temperature* air capability. May }) }} -**tuTC=*float*** +### tuTC + +Type: float Air cooling thermostat set point; implies *set temperature* air capability. May be scheduled as desired; to disable at certain times, schedule an extreme temperature such as 199. @@ -165,7 +181,9 @@ Air cooling thermostat set point; implies *set temperature* air capability. May }) }} -**tuVfDs=*float*** +### tuVfDs + +Type: float Design air flow rate. ("Vf" in member names stands for "Volumetric Flow", to emphasize that flow is specified by volume at actual air temperature (cfm), not by mass (lb/hr), nor heat capacity (Btuh/F), etc.) @@ -184,7 +202,9 @@ CSE will default tuVfDs to the largest of tuVfMn, tuVfMxH, and tuVfMxC unless a }} -**tuFxVfHC=*float*** +### tuFxVfHC + +Type: float Sizing factor for autosized terminal air flows. Default value (1.1) specifies 10% oversizing. @@ -198,7 +218,9 @@ Sizing factor for autosized terminal air flows. Default value (1.1) specifies 1 }) }} -**tuVfMxHC=*choice*** +### tuVfMxHC + +Type: choice Determines autosizing strategy for heating and cooling air flows. @@ -217,7 +239,9 @@ Determines autosizing strategy for heating and cooling air flows. }) }} -**tuVfMn=*float*** +### tuVfMn + +Type: float Minimum terminal air flow rate or set output air flow rate. An hourly expression may be used to schedule the minimum or set output flow as desired. @@ -235,7 +259,9 @@ If either setpoint (tuTH or tuTC) is given, tuVfMn is the cfm used when the ther }) }} -**tuVfMxH=*float*** +### tuVfMxH + +Type: float Maximum heating air flow rate, subject to air handler limitations. This terminal flow is used when the thermostat is calling for heat continuously. Hourly schedulable. If not greater than tuVfMn, the latter flow is used, thus disabling thermostat control. @@ -249,7 +275,9 @@ Maximum heating air flow rate, subject to air handler limitations. This terminal }) }} -**tuVfMxC=*float*** +### tuVfMxC + +Type: float Maximum cooling air flow rate, before air handler limitations, used when the thermostat is calling for cooling continuously. tuVfMn overrides if larger. @@ -263,7 +291,9 @@ Maximum cooling air flow rate, before air handler limitations, used when the the }) }} -**tuPriC=*int*** +### tuPriC + +Type: int Cool setpoint priority. The lowest numbered priority is used first when there are equal setpoints in a zone; equal heat or cool setpoints with equal priority in same ZONE (even if on different TERMINALs) constitute an error. @@ -277,7 +307,9 @@ Cool setpoint priority. The lowest numbered priority is used first when there ar }) }} -**tuPriH=*int*** +### tuPriH + +Type: int Heat setpoint priority. Lowest numbered priority is used first when there are equal setpoints in a zone. Default for tuPriLh is larger, so that by default local heat is not used unless maximum air heat is insufficient, when both local heat and air heat are present in zone and have same setpoint. @@ -291,7 +323,9 @@ Heat setpoint priority. Lowest numbered priority is used first when there are eq }) }} -**tuSRLeak=*float*** +### tuSRLeak + +Type: float Leakage of supply air to return, increasing supply volume and return temperature. Note that this is a fraction of current cfm, whereas air handler leak (before VAV dampers) is a fraction of *maximum* cfm. TfanOffLeak is added to this if terminal has a fan that is not running (future, 7-92). @@ -305,7 +339,9 @@ Leakage of supply air to return, increasing supply volume and return temperature }) }} -**tuSRLoss=*float*** +### tuSRLoss + +Type: float Supply air to return plenum heat loss as a fraction of supply air to return air temperature difference. Not allowed if return is ducted (no plenum). @@ -325,7 +361,9 @@ Supply air to return plenum heat loss as a fraction of supply air to return air These members are disallowed if terminal has no local heating capability, that is, if neither tuTLh nor tuQMnLh is given. -**tuhcType=*choice*** +### tuhcType + +Type: choice Local heating coil type: @@ -344,7 +382,9 @@ Local heating coil type: }) }} -**tuhcCaptRat=*float*** +### tuhcCaptRat + +Type: float Rated capacity of the heating coil. The coil will never supply more heat than its capacity, even if tuQMxLh and/or tuQMnLh is greater. For an ELECTRIC coil, the capacity is always the rated capacity. For an HW coil, the capacity is the rated capacity when the HEATPLANT can supply it; when the total heat demanded from the HEATPLANT by all the HW coils in TERMINALs and AIRHANDLERs exceeds the HEATPLANT's capacity, CSE reduces the capacities of all HW coils proportionately until the plant is not overloaded. @@ -358,7 +398,9 @@ Rated capacity of the heating coil. The coil will never supply more heat than it }) }} -**tuhcFxCap=*float*** +### tuhcFxCap + +Type: float Capacity factor for autosized terminal heating coil. Default value (1.1) specifies 10% oversizing. @@ -372,7 +414,9 @@ Capacity factor for autosized terminal heating coil. Default value (1.1) specif }) }} -**tuhcMtr=*mtrName*** +### tuhcMtr + +Type: mtrName Name of meter, if any, which accumulates input energy for this coil. End use category used is "Htg". Not allowed when tuhcType is HW, as the energy for an HW coil comes through a HEATPLANT; the input energy is accumulated to a meter by the HEATPLANT. @@ -406,7 +450,9 @@ Presence of a terminal fan is indicated by specifying a tfanType value other tha Terminal fans are *NOT IMPLEMENTED* as of July 1992. -**tfanType=*choice*** +### tfanType + +Type: choice Choice of: @@ -427,7 +473,9 @@ Choice of: }) }} -**tfanSched=*choice*** +### tfanSched + +Type: choice Terminal fan schedule. May be scheduled with an hourly variable expression. @@ -450,7 +498,9 @@ A series fan (see tfanType) runs whenever on; a parallel fan runs only enough to }) }} -**tfanOffLeak=*float*** +### tfanOffLeak + +Type: float Backdraft leakage when terminal fan off., as a fraction of tfanVfDs. @@ -464,7 +514,9 @@ Backdraft leakage when terminal fan off., as a fraction of tfanVfDs. }) }} -**tfanVfDs=*float*** +### tfanVfDs + +Type: float Terminal fan design flow rate. To specify .x times zone or terminal cfm, use a CSE expression. @@ -478,7 +530,9 @@ Terminal fan design flow rate. To specify .x times zone or terminal cfm, use a C }) }} -**tfanPress=*float*** +### tfanPress + +Type: float Terminal fan external static pressure. @@ -492,7 +546,9 @@ Terminal fan external static pressure. }) }} -**tfanEff=*float*** +### tfanEff + +Type: float Terminal fan/motor/drive combined efficiency. @@ -531,7 +587,9 @@ If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coeffici }) }} -**tfanMtr=*mtrName*** +### tfanMtr + +Type: mtrName Name of meter, if any, which is to record energy used by this terminal fan. The "fans" category is used. diff --git a/doc/src/docs/input-data/top-members.md b/doc/src/docs/input-data/top-members.md index 31dfde3b1..1f83727b4 100644 --- a/doc/src/docs/input-data/top-members.md +++ b/doc/src/docs/input-data/top-members.md @@ -4,7 +4,9 @@ The top-level data items (TOP members) control the simulation process or contain ## TOP General Data Items -**doMainSim=*choice*** +### doMainSim + +Type: choice Specifies whether the simulation is performed when a Run command is encountered. See also doAutoSize. @@ -18,7 +20,9 @@ Specifies whether the simulation is performed when a Run command is encountered. }) }} -**begDay=*date*** +### begDay + +Type: date Date specifying the beginning day of the simulation performed when a Run command is encountered. See further discussion under endDay (next). @@ -32,7 +36,9 @@ Date specifying the beginning day of the simulation performed when a Run command }) }} -**endDay=*date*** +### endDay + +Type: date Date specifying the ending day of the simulation performed when a Run command is encountered. @@ -48,7 +54,9 @@ The program simulates 365 days at most. If begDay and endDay are the same, 1 day }) }} -**jan1DoW=*choice*** +### jan1DoW + +Type: choice Day of week on which January 1 falls. jan1DoW is used in the calculation of the day of the week. @@ -76,7 +84,9 @@ Note that "warm-up" days (see wuDays) occur before the start day specified by be }) }} -**wuDays=*int*** +### wuDays + +Type: int Number of "warm-up" days used to initialize the simulator. Simulator initialization is required because thermal mass temperatures are set to arbitrary values at the beginning of the simulation. Actual mass temperatures must be established through simulation of a few days before thermal loads are accumulated. Heavier buildings require more warm-up; the default values are adequate for conventional construction. @@ -90,7 +100,9 @@ Number of "warm-up" days used to initialize the simulator. Simulator initializat }) }} -**nSubSteps=*int*** +### nSubSteps + +Type: int Number of subhour steps used per hour in the simulation. 4 is the time-honored value for models using CNE zones. A value of 30 is typically for CSE zone models. @@ -104,7 +116,9 @@ Number of subhour steps used per hour in the simulation. 4 is the time-honored v }) }} -**nSubhrTicks=*int*** +### nSubhrTicks + +Type: int Number of subhour ticks used per *nSubSteps* for DHWSYS simulation. @@ -120,7 +134,9 @@ Number of subhour ticks used per *nSubSteps* for DHWSYS simulation. }) }} -**tol=*float*** +### tol + +Type: float Endtest convergence tolerance for internal iteration in CNE models (no effect for CSE models) Small values for the tolerance cause more accurate simulations but slower performance. The user may wish to use a high number during the initial design process (to quicken the runs) and then lower the tolerance for the final design (for better accuracy). Values other than .001 have not been explored. @@ -134,7 +150,9 @@ Endtest convergence tolerance for internal iteration in CNE models (no effect fo }) }} -**humTolF=*float*** +### humTolF + +Type: float Specifies the convergence tolerance for humidity calculations in CNE models (no effect in for CSE models), relative to the tolerance for temperature calculations. A value of .0001 says that a humidity difference of .0001 is about as significant as a temperature difference of one degree. Note that this is multiplied internally by "tol"; to make an overall change in tolerances, change "tol" only. @@ -148,7 +166,9 @@ Specifies the convergence tolerance for humidity calculations in CNE models (no }) }} -**ebTolMon=*float*** +### ebTolMon + +Type: float Monthly energy balance error tolerance for internal consistency checks. Smaller values are used for testing the internal consistency of the simulator; values somewhat larger than the default may be used to avoid error messages when it is desired to continue working despite a moderate degree of internal inconsistency. @@ -162,7 +182,9 @@ Monthly energy balance error tolerance for internal consistency checks. Smaller }) }} -**ebTolDay=*float*** +### ebTolDay + +Type: float Daily energy balance error tolerance. @@ -176,7 +198,9 @@ Daily energy balance error tolerance. }) }} -**ebTolHour=*float*** +### ebTolHour + +Type: float Hourly energy balance error tolerance. @@ -190,7 +214,9 @@ Hourly energy balance error tolerance. }) }} -**ebTolSubhr=*float*** +### ebTolSubhr + +Type: float Sub-hourly energy balance error tolerance. @@ -204,7 +230,9 @@ Sub-hourly energy balance error tolerance. }) }} -**unMetTzTol=*float*** +### unMetTzTol + +Type: float Zone temperature unmet load tolerance. At the end of each subhour, if a conditioned zone temperature is more than unMetTzTol below the current heating setpoint or more than unMetTzTol above the current cooling setpoint, "unmet load" time is accumulated. @@ -218,7 +246,9 @@ Zone temperature unmet load tolerance. At the end of each subhour, if a conditi }) }} -**unMetTzTolWarnHrs=*float*** +### unMetTzTolWarnHrs + +Type: float Unmet load warning threshold. A warning message is issued for each zone having more than unMetTzTolWarnHrs unmet heating or cooling loads. @@ -232,7 +262,9 @@ Unmet load warning threshold. A warning message is issued for each zone having }) }} -**grndMinDim=*float*** +### grndMinDim + +Type: float The minimum cell dimension used in the two-dimensional finite difference calculations for FOUNDATIONs. @@ -246,7 +278,9 @@ The minimum cell dimension used in the two-dimensional finite difference calcula }) }} -**grndMaxGrthCoeff=*float*** +### grndMaxGrthCoeff + +Type: float The maximum ratio of growth between neighboring cells in the direction away from the near-field area of interest. Used in the two-dimensional finite difference calculations for FOUNDATIONs. @@ -260,7 +294,9 @@ The maximum ratio of growth between neighboring cells in the direction away from }) }} -**grndTimeStep=*choice*** +### grndTimeStep + +Type: choice Allows the user to choose whether to calculate foundation conduction on hourly or subhourly intervals. Hourly intervals require less overall computation time, but with less accuracy. @@ -276,7 +312,9 @@ Allows the user to choose whether to calculate foundation conduction on hourly o -**humMeth=*choice*** +### humMeth + +Type: choice Developmental zone humidity computation method choice for CNE models (no effect for CSE models). @@ -295,7 +333,9 @@ PHIL, Phil's central difference method. Should be better if perfected*co }) }} -**dflExH=*float*** +### dflExH + +Type: float Default exterior surface (air film) conductance used for opaque and glazed surfaces exposed to ambient conditions in the absence of explicit specification. @@ -309,7 +349,9 @@ Default exterior surface (air film) conductance used for opaque and glazed surfa }) }} -**bldgAzm=*float*** +### bldgAzm + +Type: float Reference compass azimuth (0 = north, 90 = east, etc.). All zone orientations (and therefore surface orientations) are relative to this value, so the entire building can be rotated by changing bldgAzm only. If a value outside the range 0^o^ $\leq$ *x* $<$ 360^o^ is given, it is normalized to that range. @@ -323,7 +365,9 @@ Reference compass azimuth (0 = north, 90 = east, etc.). All zone orientations (a }) }} -**elevation=*float*** +### elevation + +Type: float Elevation of the building site. Used internally for the computation of barometric pressure and air density of the location. @@ -337,7 +381,9 @@ Elevation of the building site. Used internally for the computation of barometri }) }} -**runTitle=*string*** +### runTitle + +Type: string Run title for the simulation. Appears in report footers, export headers, and in the title lines to the INP, LOG, and ERR built-in reports (these appear by default in the primary report file; the ERR report also appears in the error message file, if one is created). @@ -351,7 +397,9 @@ Run title for the simulation. Appears in report footers, export headers, and in }) }} -**runSerial=*int*** +### runSerial + +Type: int Run serial number for the simulation. Increments on each run in a session; appears in report footers. @@ -369,7 +417,9 @@ Run serial number for the simulation. Increments on each run in a session; appea Daylight savings starts by default at 2:00 a.m. of the second Sunday in March. Internally, hour 3 (2:00-3:00 a.m.) is skipped and reports for this day show only 23 hours. Daylight savings ends by default at 2:00 a.m. of the first Sunday of November; for this day 25 hours are shown on reports. CSE fetches weather data using standard time but uses daylight savings time to calculate variable expressions (and thus all schedules). -**DT=*choice*** +### DT + +Type: choice Whether Daylight Savings Time is to be used for the current run. @@ -383,7 +433,9 @@ Whether Daylight Savings Time is to be used for the current run. }) }} -**DTbegDay=*date*** +### DTbegDay + +Type: date Start day for daylight saving time (assuming DT=Yes) @@ -397,7 +449,9 @@ Start day for daylight saving time (assuming DT=Yes) }) }} -**DTendDay=*date*** +### DTendDay + +Type: date End day for daylight saving time (assuming DT=Yes) @@ -413,7 +467,9 @@ End day for daylight saving time (assuming DT=Yes) ## TOP Model Control Items -**ventAvail=*choice*** +### ventAvail + +Type: choice Indicates availability of outdoor ventilation strategies. CSE cannot model simultaneously-operating alternative ventilation strategies. For example, an RSYS central fan integrated (CFI) OAV system is never modeled while whole house fan ventilation is available. ventAvail controls which ventilation mode, if any, is available for the current hour. Note that mode availability means that the strategy could operate but may not operate due to other control assumptions. @@ -440,7 +496,9 @@ As noted, ventAvail is evaluated hourly, permitting flexible control strategy mo }) }} -**exShadeModel=*choice*** +### exShadeModel + +Type: choice Specifies advanced exterior shading model used to evaluate shading of [PVARRAYs][pvarray] by [SHADEXs][shadex] or other PVARRAYs. Advanced shading is not implemented for building surfaces and this setting has no effect on walls or windows. @@ -460,7 +518,9 @@ NONE, Disable advanced shading calculations", True) }) }} -**slrInterpMeth=*choice*** +### slrInterpMeth + +Type: choice Solar interpolation method. @@ -480,7 +540,9 @@ TRNSYS", True) }) }} -**ANTolAbs=*float*** +### ANTolAbs + +Type: float AirNet absolute convergence tolerance. Ideally, calculated zone air pressures should be such that the net air flow into each zone is 0 -- that is, there should be a perfect mass balance. The iterative AirNet solution techniques are deemed converged when netAirMassFlow < max( ANTolAbs, ANTolRel*totAirMassFlow). @@ -494,7 +556,9 @@ AirNet absolute convergence tolerance. Ideally, calculated zone air pressures sh }) }} -**ANTolRel=*float*** +### ANTolRel + +Type: float AirNet relative convergence tolerance. See AnTolAbs just above. @@ -508,7 +572,9 @@ AirNet relative convergence tolerance. See AnTolAbs just above. }) }} -**ANPressWarn=*float*** +### ANPressWarn + +Type: float AirNet pressure warning threshold. A warning message is issued when the absolute value of the AirNet-calculated zone pressure exceeds ANPressWarn. Note the default for ANPressWarn conservatively large. 10 lb/ft2 is about 500 pascals -- a pressure that is probably impossible in a building. The intent of this value is to alert the user to incorrect modeling inputs while avoiding excessive messages. @@ -522,7 +588,9 @@ AirNet pressure warning threshold. A warning message is issued when the absolute }) }} -**ANPressErr=*float*** +### ANPressErr + +Type: float AirNet pressure error threshold. The simulation terminates with a message if the absolute value of any AirNet-calculated zone pressure exceeds ANPressErr. Note the default value for ANPressErr is physically unrealistic. 30 lb/ft2 is about 1500 pascals -- a pressure that would never be possible in a building. The intent of this value is to prevent simulation crashes due to numerical errors in AirNet calculations. @@ -539,7 +607,9 @@ AirNet pressure error threshold. The simulation terminates with a message if th The ASHWAT complex fenestration model used when WINDOW wnModel=ASHWAT yields several heat transfer results that are accurate over local ranges of conditions. Several values control when these value are recalculated. If any of the specified values changes more than the associated threshold, a full ASHWAT calculation is triggered. Otherwise, prior results are used. ASHWAT calculations are computationally expensive and conditions often change only incrementally between time steps. -**AWTrigT=*float*** +### AWTrigT + +Type: float ASHWAT temperature change threshold -- full calculation is triggered by a change of either indoor or outdoor environmental (combined air and radiant) temperature that exceeds AWTrigT. @@ -553,7 +623,9 @@ ASHWAT temperature change threshold -- full calculation is triggered by a change }) }} -**AWTrigSlr=*float*** +### AWTrigSlr + +Type: float ASHWAT solar change threshold -- full calculation is triggered by a fractional change of incident solar radiation that exceeds AWTrigSlr. @@ -567,7 +639,9 @@ ASHWAT solar change threshold -- full calculation is triggered by a fractional c }) }} -**AWTrigH=*float*** +### AWTrigH + +Type: float ASHWAT convection coefficient change threshold -- full calculation is triggered by a fractional change of inside surface convection coefficient that exceeds AWTrigH. @@ -601,7 +675,9 @@ The following are the terms determined from the weather file for internal use, a @Top.windSpeedSquaredWind speed squared (mph2). -**wfName=*string*** +### wfName + +Type: string Weather file path name for simulation. The file should be in the current directory, in the directory CSE.EXE was read from, or in a directory on the operating system PATH. Weather file formats supported are CSW, EPW, and ET1. Only full-year weather files are supported. @@ -617,7 +693,9 @@ Note: Backslash (\\) characters in path names must be doubled to work properly ( }) }} -**skyModel=*choice*** +### skyModel + +Type: choice Selects sky model used to determine relative amounts of direct and diffuse irradiance. @@ -636,7 +714,9 @@ ANISOTROPIC, Hay anisotropic model") }) }} -**skyModelLW=*choice*** +### skyModelLW + +Type: choice Selects the model used to derive sky temperature used in long-wave (thermal) radiant heat exchange calculations for SURFACEs exposed to ambient conditions. See the RACM alorithms documentation for technical details. @@ -661,7 +741,9 @@ IRHORIZ, Derives tSky from horizonal infrared data from the weather file The reference temperature and humidity are used to calculate a humidity ratio assumed in air specific heat calculations. The small effect of changing humidity on the specific heat of air is generally ignored in the interests of speed, but the user can control the humidity whose specific heat is used through the refTemp and refRH inputs. -**refTemp=*float*** +### refTemp + +Type: float Reference temperature (see above paragraph). @@ -675,7 +757,9 @@ Reference temperature (see above paragraph). }) }} -**refRH=*float*** +### refRH + +Type: float Reference relative humidity (see above). @@ -689,7 +773,9 @@ Reference relative humidity (see above). }) }} -**grndRefl=*float*** +### grndRefl + +Type: float Global ground reflectivity, used except where other value specified with sfGrndRefl or wnGrndRefl. This reflectivity is used in computing the reflected beam and diffuse radiation reaching the surface in question. It is also used to calculate the solar boundary conditions for the exterior grade surface in two-dimensional finite difference calculations for FOUNDATIONs. @@ -706,7 +792,9 @@ Global ground reflectivity, used except where other value specified with sfGrndR The following values modify weather file data, permitting varying the simulation without making up special weather files. For example, to simulate without the effects of wind, use windF = 0; to halve the effects of diffuse solar radiation, use radDiffF = 0.5. Note that the default values for windSpeedMin and windF result in modification of weather file wind values unless other values are specified. -**grndEmit=*float*** +### grndEmit + +Type: float Long-wave emittance of the exterior grade surface used in two-dimensional finite difference calculations for FOUNDATIONs. @@ -739,7 +827,9 @@ Ground surface roughness. Used for convection and wind speed corrections in two- -**windSpeedMin=*float*** +### windSpeedMin + +Type: float Minimum value for wind speed @@ -753,7 +843,9 @@ Minimum value for wind speed }) }} -**windF=*float*** +### windF + +Type: float Wind Factor: multiplier for wind speeds read from weather file. windF is applied *after* windSpeedMin. Note that windF does *not* effect infiltration rates calculated by the Sherman-Grimsrud model (see e.g. ZONE.infELA). However, windF does modify AirNet flows (see IZXFER). @@ -767,7 +859,9 @@ Wind Factor: multiplier for wind speeds read from weather file. windF is applied }) }} -**terrainClass=*int*** +### terrainClass + +Type: int Specifies characteristics of ground terrain in the project region. @@ -792,7 +886,9 @@ Specifies characteristics of ground terrain in the project region. -**radBeamF=*float*** +### radBeamF + +Type: float Multiplier for direct normal (beam) irradiance @@ -806,7 +902,9 @@ Multiplier for direct normal (beam) irradiance }) }} -**radDiffF=*float*** +### radDiffF + +Type: float Multiplier for diffuse horizonal irradiance. @@ -820,7 +918,9 @@ Multiplier for diffuse horizonal irradiance. }) }} -**hConvMod=*choice*** +### hConvMod + +Type: choice Enable/disable convection convective coefficient pressure modification factor. @@ -836,7 +936,9 @@ $$0.24 + 0.76 \cdot P_{Location}/P_{SeaLevel}$$ }) }} -**soilDiff=*float*** +### soilDiff + +Type: float *Note: soilDiff is used as part of the simple ground model, which is no longer supported. Use soilCond, soilSpHt, and SoilDens instead.* @@ -852,7 +954,9 @@ Soil diffusivity, used in derivation of ground temperature. CSE calculates a gr }) }} -**soilCond=*float*** +### soilCond + +Type: float Soil conductivity. Used in two-dimensional finite difference calculations for FOUNDATIONs. @@ -868,7 +972,9 @@ Soil conductivity. Used in two-dimensional finite difference calculations for FO -**soilSpHt=*float*** +### soilSpHt + +Type: float Soil specific heat. Used in two-dimensional finite difference calculations for FOUNDATIONs. @@ -884,7 +990,9 @@ Soil specific heat. Used in two-dimensional finite difference calculations for F -**soilDens=*float*** +### soilDens + +Type: float Soil density. Used in two-dimensional finite difference calculations for FOUNDATIONs. @@ -900,7 +1008,9 @@ Soil density. Used in two-dimensional finite difference calculations for FOUNDAT -**farFieldWidth=*float*** +### farFieldWidth + +Type: float Far-field width. Distance from foundation to the lateral, zero-flux boundary condition. Used in two-dimensional finite difference calculations for FOUNDATIONs. @@ -915,7 +1025,9 @@ Far-field width. Distance from foundation to the lateral, zero-flux boundary con }} -**deepGrndCnd=*choice*** +### deepGrndCnd + +Type: choice Deep-ground boundary condition type. Choices are WATERTABLE (i.e., a defined temperature) or ZEROFLUX. @@ -928,7 +1040,9 @@ Deep-ground boundary condition type. Choices are WATERTABLE (i.e., a defined tem }) }} -**deepGrndDepth=*float*** +### deepGrndDepth + +Type: float Deep-ground depth. Distance from exterior grade to the deep-ground boundary. Used in two-dimensional finite difference calculations for FOUNDATIONs. @@ -943,7 +1057,9 @@ Deep-ground depth. Distance from exterior grade to the deep-ground boundary. Use }} -**deepGrndT=*float*** +### deepGrndT + +Type: float Deep-ground temperature. Used when deepGrndCnd=WATERTABLE. @@ -1009,7 +1125,9 @@ The table below shows probes available for accessing TDV data in expressions. E @Top.tdvFName, Constant, TDV file full path", True) }} -**TDVfName=*string*** +### TDVfName + +Type: string Note: Backslash (\\) characters in path names must be doubled to work properly (e.g. "\\\\data\\\\mytdv.tdv"). Forward slash (/) may be used in place of backslash without doubling. @@ -1027,7 +1145,9 @@ Note: Backslash (\\) characters in path names must be doubled to work properly ( These items are used in page-formatted report output files. See REPORTFILE, Section 5.245.21, and REPORT, Section 5.25. -**repHdrL=*string*** +### repHdrL + +Type: string Report left header. Appears at the upper left of each report page unless page formatting (rfPageFmt) is OFF. If combined length of repHdrL and repHdrR is too large for the page width, one or both will be truncated. @@ -1041,7 +1161,9 @@ Report left header. Appears at the upper left of each report page unless page fo }) }} -**repHdrR=*string*** +### repHdrR + +Type: string Report right header. Appears at the upper right of each report page unless page formatting (rfPageFmt) is OFF. If combined length of repHdrL and repHdrR is too large for the page width, one or both will be truncated. @@ -1055,7 +1177,9 @@ Report right header. Appears at the upper right of each report page unless page }) }} -**repLPP=*int*** +### repLPP + +Type: int Total lines per page to be assumed for reports. Number of lines used for text (including headers and footers) is repLPP - repTopM - repBotM. @@ -1069,7 +1193,9 @@ Total lines per page to be assumed for reports. Number of lines used for text (i }) }} -**repTopM=*int*** +### repTopM + +Type: int Number of lines to be skipped at the top of each report page (prior to header). @@ -1083,7 +1209,9 @@ Number of lines to be skipped at the top of each report page (prior to header). }) }} -**repBotM=*int*** +### repBotM + +Type: int Number of lines reserved at the bottom of each report page. repBotM determines the position of the footer on the page (blank lines after the footer are not actually written). @@ -1097,7 +1225,9 @@ Number of lines reserved at the bottom of each report page. repBotM determines t }) }} -**repCPL=*int*** +### repCPL + +Type: int Characters per line for report headers and footers, user defined reports, and error messages. CSE writes simple ASCII files and assumes a fixed (not proportional) spaced printer font. Many of the built-in reports now (July 1992) assume a line width of 132 columns. @@ -1111,7 +1241,9 @@ Characters per line for report headers and footers, user defined reports, and er }) }} -**repTestPfx=*string*** +### repTestPfx + +Type: string Report test prefix. Appears at beginning of report lines that are expected to differ from prior runs. This is useful for "hiding" lines from text comparison utilities in automated testing schemes. Note: the value specified with command line -x takes precedence over this input. @@ -1127,7 +1259,9 @@ Report test prefix. Appears at beginning of report lines that are expected to di ## TOP Autosizing -**doAutoSize=*choice*** +### doAutoSize + +Type: choice Controls invocation of autosizing phase prior to simulation. @@ -1141,7 +1275,9 @@ Controls invocation of autosizing phase prior to simulation. }) }} -**auszTol=*float*** +### auszTol + +Type: float Autosize tolerance. Sized capacity results are deemed final when successive design day calculations produce results within auszTol of the prior iteration. @@ -1155,7 +1291,9 @@ Autosize tolerance. Sized capacity results are deemed final when successive des }) }} -**heatDsTDbO=*float*** +### heatDsTDbO + +Type: float Heating outdoor dry bulb design temperature used for autosizing heating equipment. @@ -1169,7 +1307,9 @@ Heating outdoor dry bulb design temperature used for autosizing heating equipmen }) }} -**heatDsTWbO=*float*** +### heatDsTWbO + +Type: float Heating outdoor design dry bulb temperature used for autosizing heating equipment. @@ -1234,7 +1374,9 @@ Deprecated method for specifying design days for cooling autosizing. Design con ## TOP Debug Reporting -**verbose=*int*** +### verbose + +Type: int Controls verbosity of screen remarks. Most possible remarks are generated during autosizing of CNE models. Little or no effect in CSE models. TODO: document options @@ -1250,7 +1392,9 @@ Controls verbosity of screen remarks. Most possible remarks are generated during The following dbgPrintMask values provide bitwise control of addition of semi-formated internal results to the run report file. The values and format of debugging reports are modified as required for testing purposes. -**dbgPrintMaskC=*int*** +### dbgPrintMaskC + +Type: int Constant portion of debug reporting control. @@ -1264,7 +1408,9 @@ Constant portion of debug reporting control. }) }} -**dbgPrintMask=*int*** +### dbgPrintMask + +Type: int Hourly portion of debug reporting control (generally an expression that evaluates to non-0 only on days or hours of interest). @@ -1278,7 +1424,9 @@ Hourly portion of debug reporting control (generally an expression that evaluate }) }} -**dbgFlag=*int*** +### dbgFlag + +Type: int Allows passing an input value to ad-hoc debugging code. No permanent use; no impact on results. @@ -1292,7 +1440,9 @@ Allows passing an input value to ad-hoc debugging code. No permanent use; no im }) }} -**doCoverage=*choice*** +### doCoverage + +Type: choice Enables expression code coverage reporting. Development aid. diff --git a/doc/src/docs/input-data/towerplant.md b/doc/src/docs/input-data/towerplant.md index 766339baf..255dd34a1 100644 --- a/doc/src/docs/input-data/towerplant.md +++ b/doc/src/docs/input-data/towerplant.md @@ -18,7 +18,9 @@ Name of TOWERPLANT object, given immediately after the word TOWERPLANT to begin ----------- ----------------- ------------- -------------- ----------------- *63 characters* Yes constant -**tpTsSp=*float*** +### tpTsSp + +Type: float Setpoint temperature for water leaving towers. @@ -34,7 +36,9 @@ METER object by which TOWERPLANT's fan input energy is to be recorded, in catego ----------- ------------------- ------------- -------------- ----------------- *name of a METER* *none* No constant -**tpStg=*choice*** +### tpStg + +Type: choice How tower fans are staged to meet the load: @@ -53,7 +57,9 @@ Whenever the heat rejection pump in a CHILLER or HPLOOP heat exchanger is on, th ----------- ----------------- ------------- -------------- ----------------- TOGETHER, LEAD TOGETHER No constant -**ctN=*integer*** +### ctN + +Type: integer Number of towers in the TOWERPLANT. @@ -61,7 +67,9 @@ Number of towers in the TOWERPLANT. ----------- ----------------- ------------- -------------- ----------------- *x* > 0 1 No constant -**ctType=*choice*** +### ctType + +Type: choice Cooling tower fan control type: ONESPEED, TWOSPEED, or VARIABLE. This applies to all towers under TOGETHER staging. For LEAD staging, *ctType* applies only to the lead tower; additional towers have ONESPEED fans. @@ -69,7 +77,9 @@ Cooling tower fan control type: ONESPEED, TWOSPEED, or VARIABLE. This applies to ----------- ------------------------------ ------------- -------------- ----------------- ONESPEED, TWOSPEED, VARIABLE ONESPEED No constant -**ctLoSpd=*float*** +### ctLoSpd + +Type: float Low speed for TWOSPEED fan, as a fraction of full speed cfm. @@ -83,7 +93,9 @@ The rest of the input variables apply to each tower in the group; the towers are The following two inputs permit computation of the tower fan electrical energy consumption: -**ctShaftBhp=*float*** +### ctShaftBhp + +Type: float Shaft brake horsepower of each tower fan motor. @@ -93,7 +105,9 @@ The default value is the sum of the rejected (condenser) heats (including pump h ----------- --------------- ----------------------------- ----------- ----------------- Bhp *x* > 0 (sum of loads)/290000/*cTn* No constant -**ctMotEff=*float*** +### ctMotEff + +Type: float Motor (and drive, if any) efficiency for tower fans. @@ -143,7 +157,9 @@ For VARIABLE speed fan, four *float* values for coefficients of cubic fan power The next six items specify the tower performance under one set of conditions, the "design conditions". The conditions should be chosen to be representative of full load operating conditions. -**ctCapDs=*float*** +### ctCapDs + +Type: float Design capacity: amount of heat extracted from water under design conditions by one tower. @@ -153,7 +169,9 @@ The default value is the sum of the rejected (condenser) heats (including pump h ----------- ----------------- ---------------------- -------------- ----------------- Btuh *x* $\neq$ 0 (sum of loads)/*ctN* No constant -**ctVfDs=*float*** +### ctVfDs + +Type: float Design air flow, per tower; also the fan full-speed cfm specification. @@ -163,7 +181,9 @@ The default value is the sum of the loads (computed as for *ctCapDs*, just above ----------- ----------------- ------------------------- -------------- ----------------- cfm *x* > 0 (sum of loads)/51/*ctN* No constant -**ctGpmDs=*float*** +### ctGpmDs + +Type: float Design water flow, per tower. @@ -173,7 +193,9 @@ The default is the sum of the flows of the connected heat rejection pumps, using ----------- ----------------- ---------------------- -------------- ----------------- gpm *x* > 0 (sum of pumps)/*ctN* No constant -**ctTDbODs=*float*** +### ctTDbODs + +Type: float Design outdoor drybulb temperature (needed to convert *ctVfDs* from cfm to lb/hr). @@ -181,7 +203,9 @@ Design outdoor drybulb temperature (needed to convert *ctVfDs* from cfm to lb/hr ----------- ----------------- ------------- -------------- ----------------- ^o^F *x* > 0 93.5 No constant -**ctTWbODs=*float*** +### ctTWbODs + +Type: float Design outdoor wetbulb temperature. @@ -189,7 +213,9 @@ Design outdoor wetbulb temperature. ----------- ----------------- ------------- -------------- ----------------- ^o^F *x* > 0 78 No constant -**ctTwoDs=*float*** +### ctTwoDs + +Type: float Design leaving water temperature. @@ -199,7 +225,9 @@ Design leaving water temperature. The following six items allow optional specification of tower performance under another set of conditions, the "off design" conditions. If given, they allow CSE to compute the tower's relation between flows and heat transfer; in this case, *ctK* (below) may not be given. -**ctCapOd=*float*** +### ctCapOd + +Type: float Off-design capacity, per tower. @@ -207,7 +235,9 @@ Off-design capacity, per tower. ----------- ----------------- ---------------------- -------------- ----------------- Btuh *x* $\neq$ 0 (sum of loads)/*ctN* No constant -**ctVfOd=*float*** +### ctVfOd + +Type: float Off-design air flow, per tower. Must differ from design air flow; thus *ctVfDs* and *ctVfOd* cannot both be defaulted if off-design conditions are being given. The off-design air and water flows must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. @@ -215,7 +245,9 @@ Off-design air flow, per tower. Must differ from design air flow; thus *ctVfDs* ----------- --------------------------------- ------------------------- -------------- ----------------- cfm *x* > 0; *x* $\neq$ *ctVfDs* (sum of loads)/51/*ctN* No constant -**ctGpmOd=*float*** +### ctGpmOd + +Type: float Off-design water flow, per tower. Must differ from design water flow; thus, both cannot be defaulted if off-design conditions are being given. Value must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. @@ -223,7 +255,9 @@ Off-design water flow, per tower. Must differ from design water flow; thus, both ----------- ---------------------------------- ---------------------- -------------- ----------------- gpm *x* > 0; *x* $\neq$ *ctGpmDs* (sum of pumps)/*ctN* No constant -**ctTDbOOd=*float*** +### ctTDbOOd + +Type: float Off-design outdoor drybulb temperature. @@ -231,7 +265,9 @@ Off-design outdoor drybulb temperature. ----------- ----------------- ------------- -------------- ----------------- ^o^F *x* > 0 93.5 No constant -**ctTWbOOd=*float*** +### ctTWbOOd + +Type: float Off-design outdoor wetbulb temperature. @@ -239,7 +275,9 @@ Off-design outdoor wetbulb temperature. ----------- ----------------- ------------- -------------- ----------------- ^o^F *x* > 0 78 No constant -**ctTwoOd=*float*** +### ctTwoOd + +Type: float Off-design leaving water temperature. @@ -249,7 +287,9 @@ Off-design leaving water temperature. The following item allows explicit specification of the relationship between flows and heat transfer, when the preceding "off design" inputs are not given. If omitted, it will be computed from the "off design" inputs if given, else the default value of 0.4 will be used. -**ctK=*float*** +### ctK + +Type: float Optional. Exponent in the formula @@ -261,7 +301,9 @@ where ntuA is the number of transfer units on the air side, mwi and ma are the w ----------- ------------------- ---------------------------------------- -------------- ----------------- 0 < *x* < 1 *from "Od" members if given, else* 0.4 No constant -**ctStkFlFr=*float*** +### ctStkFlFr + +Type: float Fraction of air flow which occurs when tower fan is off, due to stack effect (convection). Cooling due to this air flow occurs in all towers whenever the water flow is on, and may, by itself, cool the water below the setpoint *tpTsSp*. Additional flow, when fan is on, is proportional to fan speed. @@ -271,7 +313,9 @@ Fraction of air flow which occurs when tower fan is off, due to stack effect (co The following items allow CSE to compute the effect of makeup water on the leaving water temperature. -**ctBldn=*float*** +### ctBldn + +Type: float Blowdown rate: fraction of inflowing water that is bled from the sump down the drain, to reduce the buildup of impurities that don't evaporate. @@ -279,7 +323,9 @@ Blowdown rate: fraction of inflowing water that is bled from the sump down the d ----------- --------------------- ------------- -------------- ----------------- 0 $\le$ *x* $\le$ 1 .01 No constant -**ctDrft=*float*** +### ctDrft + +Type: float Drift rate: fraction of inflowing water that is blown out of tower as droplets without evaporating. @@ -287,7 +333,9 @@ Drift rate: fraction of inflowing water that is blown out of tower as droplets w ----------- --------------------- ------------- -------------- ----------------- 0 $\le$ *x* $\le$ 1 0 No constant -**ctTWm=*float*** +### ctTWm + +Type: float Temperature of makeup water from mains, used to replace water lost by blowdown, drift, and evaporation. Blowdown and drift are given by the preceding two inputs; evaporation is computed. diff --git a/doc/src/docs/input-data/window.md b/doc/src/docs/input-data/window.md index 8ae2e8bce..6ae914e48 100644 --- a/doc/src/docs/input-data/window.md +++ b/doc/src/docs/input-data/window.md @@ -18,7 +18,9 @@ Name of window: follows the word "WINDOW" if given. }) }} -**wnHeight=*float*** +### wnHeight + +Type: float Overall height of window (including frame). @@ -32,7 +34,9 @@ Overall height of window (including frame). }) }} -**wnWidth=*float*** +### wnWidth + +Type: float Overall width of window (including frame). @@ -46,7 +50,9 @@ Overall width of window (including frame). }) }} -**wnArea=*float*** +### wnArea + +Type: float Overall area of window (including frame). @@ -60,7 +66,9 @@ Overall area of window (including frame). }) }} -**wnMult=*float*** +### wnMult + +Type: float Area multiplier; can be used to represent multiple identical windows. @@ -74,7 +82,9 @@ Area multiplier; can be used to represent multiple identical windows. }) }} -**wnModel=*choice*** +### wnModel + +Type: choice Selects window model @@ -88,11 +98,15 @@ Selects window model }) }} -**wnGt=*choice*** +### wnGt + +Type: choice GLAZETYPE for window. Provides many defaults for window properties as cited below. -**wnU=*float*** +### wnU + +Type: float Window conductance (U-factor without surface films, therefore not actually a U-factor but a C-factor). @@ -114,7 +128,9 @@ Approach 2. Enter wnU=U-factor and let the wnInH and wnExH default. Tnormally th }) }} -**wnUNFRC=*float*** +### wnUNFRC + +Type: float Fenestration system (including frame) U-factor evaluated at NFRC heating conditions. @@ -128,7 +144,9 @@ Fenestration system (including frame) U-factor evaluated at NFRC heating conditi }) }} -**wnExEpsLW=*float*** +### wnExEpsLW + +Type: float Window exterior long wave (thermal) emittance. @@ -142,7 +160,9 @@ Window exterior long wave (thermal) emittance. }) }} -**wnInEpsLW=*float*** +### wnInEpsLW + +Type: float Window interior long wave (thermal) emittance. @@ -156,7 +176,9 @@ Window interior long wave (thermal) emittance. }) }} -**wnInH=*float*** +### wnInH + +Type: float Window interior surface (air film) conductance. @@ -178,7 +200,9 @@ The large default value of 10,000 represents a near-0 resistance, for the conven }) }} -**wnExH=*float*** +### wnExH + +Type: float Window exterior surface (air film) conductance. @@ -205,7 +229,9 @@ MILLS , n/a , Mills model ASHRAE , n/a , ASHRAE handbook values", True) }} -**wnExHcModel=*choice*** +### wnExHcModel + +Type: choice Selects the model used for exterior surface convection when wnModel = Forward\_Difference. @@ -219,7 +245,9 @@ Selects the model used for exterior surface convection when wnModel = Forward\_D }) }} -**wnExHcLChar=*float*** +### wnExHcLChar + +Type: float Characteristic length of surface, used in derivation of forced exterior convection coefficients in some models when outside face is exposed to ambient (i.e. to wind). @@ -233,7 +261,9 @@ Characteristic length of surface, used in derivation of forced exterior convecti }) }} -**wnExHcMult=*float*** +### wnExHcMult + +Type: float Exterior convection coefficient adjustment factor. When wnExHcModel=INPUT, hc=wnExHcMult. For other wnExHcModel choices, the model-derived hc is multiplied by wnExHcMult. @@ -247,7 +277,9 @@ Exterior convection coefficient adjustment factor. When wnExHcModel=INPUT, hc=w }) }} -**wnInHcModel=*choice*** +### wnInHcModel + +Type: choice Selects the model used for the inside (zone) surface convection when wnModel = Forward\_Difference. @@ -261,7 +293,9 @@ Selects the model used for the inside (zone) surface convection when wnModel = F }) }} -**wnInHcMult=*float*** +### wnInHcMult + +Type: float Interior convection coefficient adjustment factor. When wnInHcModel=INPUT, hc=wnInHcMult. For other wnInHcModel choices, the model-derived hc is multiplied by wnInHcMult. @@ -275,7 +309,9 @@ Interior convection coefficient adjustment factor. When wnInHcModel=INPUT, hc=w }) }} -**wnSHGC=*float*** +### wnSHGC + +Type: float Rated Solar Heat Gain Coefficient (SHGC) for the window assembly. @@ -289,7 +325,9 @@ Rated Solar Heat Gain Coefficient (SHGC) for the window assembly. }) }} -**wnFMult=*float*** +### wnFMult + +Type: float Frame area multiplier = areaGlaze / areaAssembly @@ -303,7 +341,9 @@ Frame area multiplier = areaGlaze / areaAssembly }) }} -**wnSMSO=*float*** +### wnSMSO + +Type: float SHGC multiplier with shades open. Overrides gtSMSO. @@ -317,7 +357,9 @@ SHGC multiplier with shades open. Overrides gtSMSO. }) }} -**wnSMSC=*float*** +### wnSMSC + +Type: float SHGC multiplier with shades closed. Overrides gtSMSC @@ -331,7 +373,9 @@ SHGC multiplier with shades closed. Overrides gtSMSC }) }} -**wnNGlz=*int*** +### wnNGlz + +Type: int Number of glazings in the window (bare glass only, not including any interior or exterior shades). @@ -345,7 +389,9 @@ Number of glazings in the window (bare glass only, not including any interior or }) }} -**wnExShd=*choice*** +### wnExShd + +Type: choice Exterior shading type (ASHWAT only). @@ -359,7 +405,9 @@ Exterior shading type (ASHWAT only). }) }} -**wnInShd=*choice*** +### wnInShd + +Type: choice Interior shade type (ASHWAT only). @@ -373,7 +421,9 @@ Interior shade type (ASHWAT only). }) }} -**wnDirtLoss=*float*** +### wnDirtLoss + +Type: float Glazing dirt loss factor. @@ -387,7 +437,9 @@ Glazing dirt loss factor. }) }} -**wnGrndRefl=*float*** +### wnGrndRefl + +Type: float Ground reflectivity for this window. @@ -401,7 +453,9 @@ Ground reflectivity for this window. }) }} -**wnVfSkyDf=*float*** +### wnVfSkyDf + +Type: float View factor from this window to sky for diffuse radiation. For the shading effects of an overhang, a wnVfSkyDf value smaller than the default would be used @@ -415,7 +469,9 @@ View factor from this window to sky for diffuse radiation. For the shading effec }) }} -**wnVfGrndDf=*float*** +### wnVfGrndDf + +Type: float View factor from this window to ground for diffuse radiation. For the shading effects of a fin(s), both wnVfSkyDf and wnVfGrndDf would be used. diff --git a/doc/src/docs/input-data/zone.md b/doc/src/docs/input-data/zone.md index e6a61a842..90cedc52b 100644 --- a/doc/src/docs/input-data/zone.md +++ b/doc/src/docs/input-data/zone.md @@ -18,7 +18,9 @@ Name of zone. Enter after the word ZONE; no "=" is used. }) }} -**znModel=*choice*** +### znModel + +Type: choice Selects model for zone. @@ -38,7 +40,9 @@ UZM, Unconditioned zone model. Identical to CZM except heating and cooling are n }) }} -**znArea=*float*** +### znArea + +Type: float Nominal zone floor area. @@ -52,7 +56,9 @@ Nominal zone floor area. }) }} -**znVol=*float*** +### znVol + +Type: float Nominal zone volume. @@ -66,7 +72,9 @@ Nominal zone volume. }) }} -**znAzm=*float*** +### znAzm + +Type: float Zone azimuth with respect to bldgAzm. All surface azimuths are relative to znAzm, so that the zone can be rotated by changing this member only. Values outside the range 0^o^ to 360^o^ are normalized to that range. @@ -80,7 +88,9 @@ Zone azimuth with respect to bldgAzm. All surface azimuths are relative to znAzm }) }} -**znFloorZ=*float*** +### znFloorZ + +Type: float Nominal zone floor height relative to arbitrary 0 level. Used re determination of vent heights @@ -94,7 +104,9 @@ Nominal zone floor height relative to arbitrary 0 level. Used re determination o }) }} -**znCeilingHt=*float*** +### znCeilingHt + +Type: float Nominal zone ceiling height relative to zone floor (typically 8 – 10 ft). @@ -108,7 +120,9 @@ Nominal zone ceiling height relative to zone floor (typically 8 – 10 ft). }) }} -**znEaveZ=*float*** +### znEaveZ + +Type: float Nominal eave height above ground level. Used re calculation of local surface wind speed. This in turn influences outside convection coefficients in some surface models and wind-driven air leakage. @@ -122,7 +136,9 @@ Nominal eave height above ground level. Used re calculation of local surface win }) }} -**znCAir=*float*** +### znCAir + +Type: float Zone "air" heat capacity: represents heat capacity of air, furniture, "light" walls, and everything in zone except surfaces having heat capacity (that is, non-QUICK surfaces). @@ -136,7 +152,9 @@ Zone "air" heat capacity: represents heat capacity of air, furniture, "light" wa }) }} -**znHcAirX=*float*** +### znHcAirX + +Type: float Zone air exchange rate used in determination of interior surface convective coefficients. This item is generally used only for model testing. @@ -150,7 +168,9 @@ Zone air exchange rate used in determination of interior surface convective coef }) }} -**znHcFrcF=*float*** +### znHcFrcF + +Type: float Zone surface forced convection factor. Interior surface convective transfer is modeled as a combination of forced and natural convection. hcFrc = znHcFrcF * znHcAirX^.8. See CSE Engineering Documentation. @@ -164,7 +184,9 @@ Zone surface forced convection factor. Interior surface convective transfer is }) }} -**znHIRatio=*float*** +### znHIRatio + +Type: float Zone hygric inertia ratio. In zone moisture balance calculations, the effective dry-air mass = znHIRatio * (zone dry air mass). This enhancement can be used to represente the moisture storage capacity of zone surfaces and contents. @@ -178,7 +200,9 @@ Zone hygric inertia ratio. In zone moisture balance calculations, the effective }) }} -**znSC=*float*** +### znSC + +Type: float Zone shade closure. Determines insolation through windows (see WINDOW members *wnSCSO* and *wnSCSC*) and solar gain distribution: see SGDIST members *sgFSO* and *sgFSC*. 0 represents shades open; 1 represents shades closed; intermediate values are allowed. An hourly variable CSE expression may be used to schedule shade closure as a function of weather, time of year, previous interval HVAC use or zone temperature, etc. @@ -192,7 +216,9 @@ Zone shade closure. Determines insolation through windows (see WINDOW members *w }) }} -**znTH=*float*** +### znTH + +Type: float Heating set point used (and required) when znModel=CZM and zone has no terminals. @@ -206,7 +232,9 @@ Heating set point used (and required) when znModel=CZM and zone has no terminals }) }} -**znTD=*float*** +### znTD + +Type: float Desired set point (temperature maintained with ventilation if possible) for znModel=CZM. Must be specified when zone ventilation is active. @@ -220,7 +248,9 @@ Desired set point (temperature maintained with ventilation if possible) for znMo }) }} -**znTC=*float*** +### znTC + +Type: float Cooling set point used (and required) when znModel=CZM and zone has no terminals. @@ -236,7 +266,9 @@ Cooling set point used (and required) when znModel=CZM and zone has no terminals znModel = CZM zone heating and cooling is provided either via an RSYS HVAC system, by "magic" heat transfers specified by znQxxx items, or via TERMINAL (s). One of these must be defined. -**znRSys=*rsysName*** +### znRSys + +Type: rsysName Name of RSYS providing heating, cooling, and optional central fan integrated ventilation to this zone. @@ -250,7 +282,9 @@ Name of RSYS providing heating, cooling, and optional central fan integrated ven }) }} -**znQMxH=*float*** +### znQMxH + +Type: float Heating capacity at current conditions @@ -264,7 +298,9 @@ Heating capacity at current conditions }) }} -**znQMxHRated=*float*** +### znQMxHRated + +Type: float Rated heating capacity @@ -278,7 +314,9 @@ Rated heating capacity }) }} -**znQMxC=*float*** +### znQMxC + +Type: float Cooling capacity at current conditions @@ -292,7 +330,9 @@ Cooling capacity at current conditions }) }} -**znQMxCRated=*float*** +### znQMxCRated + +Type: float Rated cooling capacity @@ -309,7 +349,9 @@ Rated cooling capacity <% if comfort_model %> The following provide parameters for comfort calculations -**znComfClo=*float*** +### znComfClo + +Type: float Occupant clothing resistance, used only when a comfort model is enabled. @@ -323,7 +365,9 @@ Occupant clothing resistance, used only when a comfort model is enabled. }) }} -**znComfMet=*float*** +### znComfMet + +Type: float Occupant metabolic rate, used only when a comfort model is enabled. @@ -337,7 +381,9 @@ Occupant metabolic rate, used only when a comfort model is enabled. }) }} -**znComfAirV=*float*** +### znComfAirV + +Type: float Nominal air velocity used for comfort model, used only when a comfort model is enabled. @@ -351,7 +397,9 @@ Nominal air velocity used for comfort model, used only when a comfort model is e }) }} -**znComfRh=*float*** +### znComfRh + +Type: float Nominal zone relative humidity used for comfort model, used only when a comfort model is enabled. @@ -371,7 +419,9 @@ Nominal zone relative humidity used for comfort model, used only when a comfort The following control a simplified air change plus leakage area model. The Sherman-Grimsrud model is used to derive air flow rate from leakage area and this rate is added to the air changes specified with infAC. Note that TOP.windF does *not* modify calculated infiltration rates, since the Sherman-Grimsrud model uses its own modifiers. See also AirNet models available via IZXFER. -**infAC=*float*** +### infAC + +Type: float Zone infiltration air changes per hour. @@ -385,7 +435,9 @@ Zone infiltration air changes per hour. }) }} -**infELA=*float*** +### infELA + +Type: float Zone effective leakage area (ELA). @@ -399,7 +451,9 @@ Zone effective leakage area (ELA). }) }} -**infShld=*int*** +### infShld + +Type: int Zone local shielding class, used in derivation of local wind speed for ELA infiltration model, wind-driven AirNet leakage, and exterior surface coefficients. infShld values are -- @@ -421,7 +475,9 @@ Zone local shielding class, used in derivation of local wind speed for ELA infil }) }} -**infStories=*int*** +### infStories + +Type: int Number of stories in zone, used in ELA model. @@ -435,7 +491,9 @@ Number of stories in zone, used in ELA model. }) }} -**znWindFLkg=*float*** +### znWindFLkg + +Type: float Wind speed modifier factor. The weather file wind speed is multiplied by this factor to yield a local wind speed for use in infiltration and convection models. @@ -449,7 +507,9 @@ Wind speed modifier factor. The weather file wind speed is multiplied by this f }) }} -**znAFMtr=*afMtrName*** +### znAFMtr + +Type: afMtrName Name of an AFMETER object, if any, to which zone AirNet air flows are recorded. *ZnAFMtr* defines a pressure boundary for accounting purposes. Multiple zones having the same AFMETER are treated as a single volume -- interzone flows within that volume are not recorded. For example, to obtain "building total" flow data, a common AFMETER could be assigned to several conditioned zones but not to adjacent unconditioned zones such as attic spaces. @@ -463,7 +523,9 @@ Name of an AFMETER object, if any, to which zone AirNet air flows are recorded. }) }} -**znLoadMtr=*ldMtrName*** +### znLoadMtr + +Type: ldMtrName Name of a LOADMETER object, if any, to which zone heating and cooling loads are recorded. @@ -483,7 +545,9 @@ Presence of an exhaust fan in a zone is indicated by specifying a non-zero desig Zone exhaust fan model implementation is incomplete as of July, 2011. The current code calculates energy use but does not account for the effects of air transfer on room heat balance. IZXFER provides a more complete implementation. -**xfanFOn=*float*** +### xfanFOn + +Type: float Exhaust fan on fraction. On/off control assumed, so electricity requirement is proportional to run time. @@ -503,7 +567,9 @@ Example: The following would run an exhaust fan 70% of the time between 8 AM and default, 0 ); -**xfanVfDs=*float*** +### xfanVfDs + +Type: float Exhaust fan design flow; 0 or not given indicates no fan. @@ -517,7 +583,9 @@ Exhaust fan design flow; 0 or not given indicates no fan. }) }} -**xfanPress=*float*** +### xfanPress + +Type: float Exhaust fan external static pressure. @@ -533,7 +601,9 @@ Exhaust fan external static pressure. Only one of xfanElecPwr, xfanEff, and xfanShaftBhp may be given: together with xfanVfDs and xfanPress, any one is sufficient for CSE to detemine the others and to compute the fan heat contribution to the air stream. -**xfanElecPwr=*float*** +### xfanElecPwr + +Type: float Fan input power per unit air flow (at design flow and pressure). @@ -547,7 +617,9 @@ Fan input power per unit air flow (at design flow and pressure). }) }} -**xfanEff=*float*** +### xfanEff + +Type: float Exhaust fan/motor/drive combined efficiency. @@ -561,7 +633,9 @@ Exhaust fan/motor/drive combined efficiency. }) }} -**xfanShaftBhp=*float*** +### xfanShaftBhp + +Type: float Fan shaft power at design flow and pressure. @@ -575,7 +649,9 @@ Fan shaft power at design flow and pressure. }) }} -**xfanMtr=*mtrName*** +### xfanMtr + +Type: mtrName Name of METER object, if any, by which fan's energy use is recorded (under end use category "fan"). diff --git a/doc/src/extra/inverse.md b/doc/src/extra/inverse.md index f5319aa4c..d28cf2c17 100644 --- a/doc/src/extra/inverse.md +++ b/doc/src/extra/inverse.md @@ -2,7 +2,9 @@ Function inverter -**ivFREQ=*Choice*** +### ivFREQ + +Type: Choice {{ member_table({ @@ -14,7 +16,9 @@ Function inverter }) }} -**ivX=*float*** +### ivX + +Type: float {{ member_table({ @@ -26,7 +30,9 @@ Function inverter }) }} -**ivX0=*float*** +### ivX0 + +Type: float {{ member_table({ @@ -38,7 +44,9 @@ Function inverter }) }} -**ivY=*float*** +### ivY + +Type: float {{ member_table({ @@ -50,7 +58,9 @@ Function inverter }) }} -**ivY0=*float*** +### ivY0 + +Type: float {{ member_table({ @@ -62,7 +72,9 @@ Function inverter }) }} -**ivYTarg=*float*** +### ivYTarg + +Type: float {{ member_table({ diff --git a/doc/src/shared/dhwheater-doc.md b/doc/src/shared/dhwheater-doc.md index 588d65459..4b244d2cc 100644 --- a/doc/src/shared/dhwheater-doc.md +++ b/doc/src/shared/dhwheater-doc.md @@ -12,7 +12,9 @@ Optional name of water heater; give after the word “DHWHEATER” if desired. }) }} -**whMult=*integer*** +### whMult + +Type: integer Number of identical water heaters of this type. Any value $>1$ is equivalent to repeated entry of the same DHWHEATER. @@ -26,7 +28,9 @@ Number of identical water heaters of this type. Any value $>1$ is equivalent to }) }} -**whType=*choice*** +### whType + +Type: choice Type of water heater. This categorization is based on CEC and federal rating standards that change from time to time. @@ -48,7 +52,9 @@ Type of water heater. This categorization is based on CEC and federal rating st }) }} -**whHeatSrc=*choice*** +### whHeatSrc + +Type: choice Heat source for water heater. CSE implements uses efficiency-based models for all whTypes (as documented in RACM, App. B). In addition, the detailed Ecotope HPWH model is @@ -72,7 +78,9 @@ available for electric (air source heat pump and resistance) SMALLSTORAGE water }) }} -**whResType=*choice*** +### whResType + +Type: choice Resistance heater type, valid only if whHeatSrc is equal to RESISTANCEX, else ignored. These choices are supported by the detailed HPWH model. Except for Generic, all heater characteristics are set by HPWH based on whResType. @@ -86,7 +94,9 @@ Resistance heater type, valid only if whHeatSrc is equal to RESISTANCEX, else ig }) }} -**whHeatingCap=*float*** +### whHeatingCap + +Type: float Nominal heating capacity, available only for a limited HPWH types. @@ -100,7 +110,9 @@ Nominal heating capacity, available only for a limited HPWH types. }) }} -**whVol=*float*** +### whVol + +Type: float Storage tank volume. Must be omitted or 0 for instantaneous whTypes. Used by HPWH model (whHeatSrc=RESISTANCEX or whHeatSrc=ASHPX). Required when whHeatSrc=RESISTANCEX or whHeatSrc=ASHPX with whASHPType=GENERIC. For all other configurations, whVol is documentation-only. @@ -114,7 +126,9 @@ Storage tank volume. Must be omitted or 0 for instantaneous whTypes. Used by HP }) }} -**whVolRunning=*float*** +### whVolRunning + +Type: float Running storage volume is the volume above aquastat. Requires the total volume based on aquastat position. Ecotope's HPWH tank and heater. @@ -129,7 +143,9 @@ Running storage volume is the volume above aquastat. Requires the total volume b }} -**whEF=*float*** +### whEF + +Type: float Rated energy factor that specifies DHWHEATER efficiency under test conditions. Used by CSE to derive annual water heating efficiency and/or other characteristics as described @@ -155,7 +171,9 @@ below. Calculation methods are documented in RACM, Appendix B. }) }} -**whLDEF=*float*** +### whLDEF + +Type: float Load-dependent energy factor for DHWHEATERs with whType=SMALLSTORAGE and whHeatSrc=FUEL or whHeatSrc=RESISTANCE. If not given, whLDEF is derived using a preliminary simulation @@ -171,7 +189,9 @@ activated via DHWSYS wsCalcMode=PRERUN. See RACM Appendix B. }) }} -**whUEF=*float*** +### whUEF + +Type: float Water heater Uniform Energy Factor efficiency rating, used when whType=INSTANTANEOUSUEF. @@ -185,7 +205,9 @@ Water heater Uniform Energy Factor efficiency rating, used when whType=INSTANTAN }) }} -**whAnnualElec=*float*** +### whAnnualElec + +Type: float Annual electricity use assumed in UEF rating derivation. Used when whType=INSTANTANEOUSUEF. @@ -199,7 +221,9 @@ Annual electricity use assumed in UEF rating derivation. Used when whType=INSTA }) }} -**whAnnualFuel=*float*** +### whAnnualFuel + +Type: float Annual fuel use assumd in UEF rating derivation, used when whType=INSTANTANEOUSUEF. @@ -213,7 +237,9 @@ Annual fuel use assumd in UEF rating derivation, used when whType=INSTANTANEOUSU }) }} -**whRatedFlow=*float*** +### whRatedFlow + +Type: float Maximum flow rate assumed in UEF rating derivation. Used when whType=INSTANTANEOUSUEF. @@ -227,7 +253,9 @@ Maximum flow rate assumed in UEF rating derivation. Used when whType=INSTANTANE }) }} -**whStbyElec=*float*** +### whStbyElec + +Type: float Instantaneous water heater standby power (electricity consumed when heater is not operating). Used when whType=INSTANTANEOUSUEF. @@ -241,7 +269,9 @@ Instantaneous water heater standby power (electricity consumed when heater is no }) }} -**whLoadCFwdF=*float*** +### whLoadCFwdF + +Type: float Instanteous water heater load carry forward factor -- approximate number of hours the heater is allowed to meet water heating demand that is unmet on a 1 minute basis, used when whType=INSTANTANEOUSUEF. @@ -255,7 +285,9 @@ Instanteous water heater load carry forward factor -- approximate number of hour }) }} -**whZone=*znName*** +### whZone + +Type: znName Name of zone where water heater is located, used only in detailed HPWH models (whHeatSrc=ASHPX or whHeatSrc=RESISTANCEX), otherwise no effect. Zone conditions are used for tank heat loss calculations. Heat losses from the DHWHEATER are included in the zone heat balance. whZone also provides the default for whASHPSrcZn (see below). @@ -271,7 +303,9 @@ whZone and whTEx cannot both be specified. }) }} -**whTEx=*float*** +### whTEx + +Type: float Water heater surround temperature, used only in detailed HPWH models (whHeatSrc=ASHPX or whHeatSrc=RESISTANCEX), otherwise no effect. When whTEx is specified, tank heat losses are calculated using whTEx and modify tank water temperatures, but the lost heat has no external effect. @@ -287,7 +321,9 @@ whZone and whTEx cannot both be specified. }) }} -**whASHPType=*choice*** +### whASHPType + +Type: choice Air source heat pump type, valid only if whHeatSrc=ASHPX. These choices are supported by the detailed HPWH model. Except for Generic, all heater characteristics are set by HPWH based on whASHPType. @@ -414,7 +450,9 @@ LG_APHWC80,LG 580-gal integrated HPWH", True) }) }} -**whASHPSrcZn=*znName*** +### whASHPSrcZn + +Type: znName Name of zone that serves as heat pump heat source used when whHeatSrc=ASHPX. Heat removed from the zone is added to the heated water and is included in zone heat balance (that is, heat pump operation cools the zone). @@ -430,7 +468,9 @@ whASHPSrcZn and whASHPSrcT cannot both be specified. }) }} -**whASHPSrcT=*float*** +### whASHPSrcT + +Type: float Heat pump source air temperature used when whHeatSrc=ASHPX. Heat removed from this source is added to the heated water but has no other effect. @@ -461,7 +501,9 @@ To model a heat pump that uses outdoor air as its heat source, omit whASHPSrcZn }) }} -**whASHPResUse=*float*** +### whASHPResUse + +Type: float Specifies activation temperature difference for resistance heating, used only when whHeatSrc=ASHPX and whASHPType=GENERIC. Refer to HPWH engineering documentation for model details. @@ -475,7 +517,9 @@ To model a heat pump that uses outdoor air as its heat source, omit whASHPSrcZn }) }} -**whResHtPwr=*float*** +### whResHtPwr + +Type: float Specifies resistance upper element power, used only with whHeatSrc=RESISTANCEX. @@ -489,7 +533,9 @@ To model a heat pump that uses outdoor air as its heat source, omit whASHPSrcZn }) }} -**whResHtPwr2=*float*** +### whResHtPwr2 + +Type: float Specifies resistance lower element power, used only with whHeatSrc=RESISTANCEX. @@ -503,7 +549,9 @@ To model a heat pump that uses outdoor air as its heat source, omit whASHPSrcZn }) }} -**whUA=*float*** +### whUA + +Type: float HPWH-type total UA (not per tank) @@ -517,7 +565,9 @@ HPWH-type total UA (not per tank) }) }} -**whInsulR=*float*** +### whInsulR + +Type: float Tank insulation resistance for heat pump water heater. @@ -532,7 +582,9 @@ Tank insulation resistance for heat pump water heater. }} **whInHtSupply=*float***\ -**whInHtLoopRet=*float*** +### whInHtLoopRet + +Type: float Fractional tank height of inlets for supply water and DHWLOOP return, used only with HPWH types (whHeatSrc=RESISTANCEX or whHeatSrc=ASHPX). 0 indicates the bottom of the water heater tank and 1 specifies the top. Inlet height influences tank layer mixing and can impact heat pump COP and/or heating activation frequency. @@ -546,7 +598,9 @@ Tank insulation resistance for heat pump water heater. }) }} -**whtankCount=*float*** +### whtankCount + +Type: float Number of storage tanks per DHWHEATER, re built-up whType=Builtup, does *not* reflect wh_mult (wh_mult=2, wh_tankCount=3 -> 6 tanks). @@ -560,7 +614,9 @@ Number of storage tanks per DHWHEATER, re built-up whType=Builtup, does *not* re }) }} -**whEff=*float*** +### whEff + +Type: float Water heating efficiency, used in modeling whType=LARGESTORAGE and whType=LARGEINSTANTANEOUS. @@ -574,7 +630,9 @@ Water heating efficiency, used in modeling whType=LARGESTORAGE and whType=LARGEI }) }} -**whSBL=*float*** +### whSBL + +Type: float Standby loss, used in modeling whType=LARGESTORAGE. @@ -588,7 +646,9 @@ Standby loss, used in modeling whType=LARGESTORAGE. }) }} -**whPilotPwr=*float*** +### whPilotPwr + +Type: float Pilot light consumption, included in fuel energy use of DHWHEATERs with whHeatSrc=FUEL. @@ -602,7 +662,9 @@ Pilot light consumption, included in fuel energy use of DHWHEATERs with whHeatSr }) }} -**whParElec=*float*** +### whParElec + +Type: float Parasitic electricity power, included in electrical energy use of all DHWHEATERs. @@ -617,7 +679,9 @@ Parasitic electricity power, included in electrical energy use of all DHWHEATERs }} **whFAdjElec=*float***\ -**whFAdjFuel=*float*** +### whFAdjFuel + +Type: float Water heater energy use modifiers. Multiplies calculated use of electricity (whFAdjElec) and fuel (whFAdjFuel). All components of energy use -- primary, backup, XBU (extra backup), and other auxiliary -- are modified before they are accumulated to whElecMtr and whFuelMtr. @@ -631,7 +695,9 @@ Water heater energy use modifiers. Multiplies calculated use of electricity (wh }) }} -**whElecMtr=*mtrName*** +### whElecMtr + +Type: mtrName Name of METER object, if any, by which DHWHEATER electrical energy use is recorded (under end use DHW). @@ -645,7 +711,9 @@ Name of METER object, if any, by which DHWHEATER electrical energy use is record }) }} -**whxBUEndUse=*choice*** +### whxBUEndUse + +Type: choice Specifies the whElecMtr end use, if any, to which extra backup energy is accumulated. In some water heater types, extra backup energy is modeled to maintain output temperature at wsTUse. By default, extra backup energy is included in end use dhwBU. whxBUEndUse allows specification of an alternative end use to which extra backup energy is accumulated. From 23f9fcc6d774ee5e2878e1f71a69235cde158197 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 6 May 2025 11:50:00 -0600 Subject: [PATCH 049/117] Update bold headers to use actual md heading notation. Find: \n**(\w+)*=(\w+)***[\s]*\n Replace: \n### $1\n\nType: $2\n\n --- doc/src/docs/input-data/airhandler.md | 12 +++++++++--- doc/src/docs/input-data/holiday.md | 12 +++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index 375768bec..a4ba8744e 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -337,7 +337,9 @@ We recommend giving 1.0 to eliminate overrun in constant volume modeling. }) }} -**sfanPress*=float*** +### sfanPress + +Type: float Design or rated pressure. The work done by the fan is computed as the product of this pressure and the current flow, except that the flow is limited to sfanVfDs. That is, in overrun (see _sfanVfMxF_) it is assumed that large VAV terminal damper openings allow the pressure to drop in proportion to the flow over rated. This work is added to the air as heat at the fan, and is termed "fan heat". Setting sfanPress to zero will eliminate simulated fan heat for theoretical simulation of a coil only. @@ -1244,7 +1246,9 @@ A cooling coil is an optional device that remove heat and humidity from the air The following five members are used for all cool coil types except as noted. Presence of a cool coil in the AIRHANDLER is indicated by giving an _ahccType value_ other than NONE. -**ahccType*=choice*** +### ahccType + +Type: choice Cool coil type choice: @@ -1265,7 +1269,9 @@ NONE, AIRHANDLER has no cooling coil and no cooling capability.") }) }} -**ahccSched*=choice*** +### ahccSched + +Type: choice Cooling coil schedule choice, hourly variable. Use a suitable CSE expression for ahccSched if cooling coil is to operate only at certain times, only in hot weather, etc. diff --git a/doc/src/docs/input-data/holiday.md b/doc/src/docs/input-data/holiday.md index 9f8b2f253..72bf5d396 100644 --- a/doc/src/docs/input-data/holiday.md +++ b/doc/src/docs/input-data/holiday.md @@ -23,7 +23,9 @@ Name of holiday: must follow the word HOLIDAY. ", "", text) + excluded_level = None for line in text.splitlines(): match = heading_re.match(line) if not match: continue + level = len(match.group(1)) heading = match.group(2).strip() + if heading in AUTOREF_CONFIG["exclude_headings"]: continue + if excluded_level: + if level > excluded_level: + continue + else: + excluded_level = None + + if heading in AUTOREF_CONFIG["exclude_subheadings_of"]: + excluded_level = level + slug = slugify(heading) text_to_slug[heading] = slug - slug_levels[slug] = len(match.group(1)) + slug_levels[slug] = level # Sort and compile all headings found by walking docs *.md files. escaped = sorted((re.escape(text) for text in text_to_slug), key=len, reverse=True) From 9d53a41af65b7a573d8200812e66d3479f3ecd4c Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 6 May 2025 14:40:27 -0600 Subject: [PATCH 051/117] Replace member_table-type pandoc tables with invokations of member_table(). --- doc/src/docs/input-data/towerplant.md | 367 +++++++++++++++++++------- 1 file changed, 272 insertions(+), 95 deletions(-) diff --git a/doc/src/docs/input-data/towerplant.md b/doc/src/docs/input-data/towerplant.md index 255dd34a1..46b2c6ca4 100644 --- a/doc/src/docs/input-data/towerplant.md +++ b/doc/src/docs/input-data/towerplant.md @@ -14,9 +14,16 @@ There is no provision for scheduling a TOWERPLANT: it operates whenever the heat Name of TOWERPLANT object, given immediately after the word TOWERPLANT to begin the object's input. The name is used to refer to the TOWERPLANT in COOLPLANTs and HPLOOPs. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *63 characters* Yes constant +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "", + "required": "Yes", + "variability": "constant" + }) +}} + ### tpTsSp @@ -24,17 +31,29 @@ Type: float Setpoint temperature for water leaving towers. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 85 No hourly +{{ + member_table({ + "units": "^o^F", + "legal_range": "*x* > 0", + "default": "85", + "required": "No", + "variability": "hourly" + }) +}} **tpMtr=*name of a METER*** METER object by which TOWERPLANT's fan input energy is to be recorded, in category "Aux". If omitted, energy use is not recorded, and thus cannot be reported. Towerplants have no modeled input energy other than for their fans (the heat rejection pumps are part of the CHILLER and HPLOOP objects). - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ------------- -------------- ----------------- - *name of a METER* *none* No constant +{{ + member_table({ + "units": "", + "legal_range": "*name of a METER*", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} ### tpStg @@ -53,9 +72,15 @@ How tower fans are staged to meet the load: Whenever the heat rejection pump in a CHILLER or HPLOOP heat exchanger is on, the water flows through all towers in the TOWERPLANT, regardless of the number of fans operating. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - TOGETHER, LEAD TOGETHER No constant +{{ + member_table({ + "units": "", + "legal_range": "TOGETHER, LEAD", + "default": "TOGETHER", + "required": "No", + "variability": "constant" + }) +}} ### ctN @@ -63,9 +88,15 @@ Type: integer Number of towers in the TOWERPLANT. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* > 0 1 No constant +{{ + member_table({ + "units": "", + "legal_range": "*x* > 0", + "default": "1", + "required": "No", + "variability": "constant" + }) +}} ### ctType @@ -73,9 +104,15 @@ Type: choice Cooling tower fan control type: ONESPEED, TWOSPEED, or VARIABLE. This applies to all towers under TOGETHER staging. For LEAD staging, *ctType* applies only to the lead tower; additional towers have ONESPEED fans. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------------------ ------------- -------------- ----------------- - ONESPEED, TWOSPEED, VARIABLE ONESPEED No constant +{{ + member_table({ + "units": "", + "legal_range": "ONESPEED, TWOSPEED, VARIABLE", + "default": "ONESPEED", + "required": "No", + "variability": "constant" + }) +}} ### ctLoSpd @@ -83,9 +120,15 @@ Type: float Low speed for TWOSPEED fan, as a fraction of full speed cfm. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- -------------------- ------------- -------------- ----------------- - 0 < *x* $\le$ 1 0.5 No constant +{{ + member_table({ + "units": "", + "legal_range": "0 < *x* $\le$ 1", + "default": "0.5", + "required": "No", + "variability": "constant" + }) +}} Note: full speed fan cfm is given by *ctVfDs*, below. @@ -101,9 +144,15 @@ Shaft brake horsepower of each tower fan motor. The default value is the sum of the rejected (condenser) heats (including pump heat) at design conditions of the most powerful stage of each connected COOLPLANT, plus the design capacity of each connected HPLOOP heat exchanger, all divided by 290,000 and by the number of cooling towers in the TOWERPLANT. - **Units** **Lgl Range** **Default** **Req'd** **Variability** - ----------- --------------- ----------------------------- ----------- ----------------- - Bhp *x* > 0 (sum of loads)/290000/*cTn* No constant +{{ + member_table({ + "units": "Bhp", + "legal_range": "*x* > 0", + "default": "(sum of loads)/290000/*cTn*", + "required": "No", + "variability": "constant" + }) +}} ### ctMotEff @@ -111,9 +160,15 @@ Type: float Motor (and drive, if any) efficiency for tower fans. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *x* > 0 .88 No constant +{{ + member_table({ + "units": "", + "legal_range": "*x* > 0", + "default": ".88", + "required": "No", + "variability": "constant" + }) +}} The next four items specify the coefficients of polynomial curves relating fan power consumption to average speed (cfm) for the various fan types. For the non-variable speed cases CSE uses linear polynomials of the form @@ -127,33 +182,57 @@ For each linear polynomial, two *float* expressions are given, separated by a co Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for ONESPEED fan. For the one-speed case, the relative average speed *spd* is the fraction of the time the fan is on. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *a + b = 1.0* 0, 1 No constant +{{ + member_table({ + "units": "", + "legal_range": "*a + b = 1.0*", + "default": "0, 1", + "required": "No", + "variability": "constant" + }) +}} **ctFcLo=*a, b*** Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for low speed of TWOSPEED fan, when *spd* $\le$ *ctLoSpd*. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ----------------- -------------- ----------------- - *a + b = 1.0* 0, *ctLoSpd^2^* No constant +{{ + member_table({ + "units": "", + "legal_range": "*a + b = 1.0*", + "default": "0, *ctLoSpd^2^*", + "required": "No", + "variability": "constant" + }) +}} **ctFcHi=*a, b*** Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for high speed of TWOSPEED fan, when *spd* > *ctLoSpd*. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- --------------------------------------------------- -------------- ----------------- - *a + b = 1.0* *-ctLoSpd^2^ - ctLoSpd, ctLoSpd^2^ + ctLoSpd + 1* No constant +{{ + member_table({ + "units": "", + "legal_range": "*a + b = 1.0*", + "default": "*-ctLoSpd^2^ - ctLoSpd, ctLoSpd^2^ + ctLoSpd + 1*", + "required": "No", + "variability": "constant" + }) +}} **ctFcVar=*a, b, c, d*** For VARIABLE speed fan, four *float* values for coefficients of cubic fan power consumption polynomial of the form $p = a + b \cdot \text{spd} + c \cdot \text{spd}^2 + d \cdot \text{spd}^3$. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------------- ------------- -------------- ----------------- - *a + b + c + d = 1.0* 0, 0, 0, 1 No constant +{{ + member_table({ + "units": "", + "legal_range": "*a + b + c + d = 1.0*", + "default": "0, 0, 0, 1", + "required": "No", + "variability": "constant" + }) +}} The next six items specify the tower performance under one set of conditions, the "design conditions". The conditions should be chosen to be representative of full load operating conditions. @@ -165,9 +244,15 @@ Design capacity: amount of heat extracted from water under design conditions by The default value is the sum of the rejected (condenser) heats (including pump heat) at design conditions of the most powerful stage of each connected COOLPLANT, plus the design capacity of each connected HPLOOP heat exchanger, all divided by the number of towers. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ---------------------- -------------- ----------------- - Btuh *x* $\neq$ 0 (sum of loads)/*ctN* No constant +{{ + member_table({ + "units": "Btuh", + "legal_range": "*x* $\neq$ 0", + "default": "(sum of loads)/*ctN*", + "required": "No", + "variability": "constant" + }) +}} ### ctVfDs @@ -177,9 +262,15 @@ Design air flow, per tower; also the fan full-speed cfm specification. The default value is the sum of the loads (computed as for *ctCapDs*, just above) divided by 51, divided by the number of cooling towers. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------------------- -------------- ----------------- - cfm *x* > 0 (sum of loads)/51/*ctN* No constant +{{ + member_table({ + "units": "cfm", + "legal_range": "*x* > 0", + "default": "(sum of loads)/51/*ctN*", + "required": "No", + "variability": "constant" + }) +}} ### ctGpmDs @@ -189,9 +280,15 @@ Design water flow, per tower. The default is the sum of the flows of the connected heat rejection pumps, using the largest stage for COOLPLANTs, divided by the number of towers. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ---------------------- -------------- ----------------- - gpm *x* > 0 (sum of pumps)/*ctN* No constant +{{ + member_table({ + "units": "gpm", + "legal_range": "*x* > 0", + "default": "(sum of pumps)/*ctN*", + "required": "No", + "variability": "constant" + }) +}} ### ctTDbODs @@ -199,9 +296,15 @@ Type: float Design outdoor drybulb temperature (needed to convert *ctVfDs* from cfm to lb/hr). - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 93.5 No constant +{{ + member_table({ + "units": "^o^F", + "legal_range": "*x* > 0", + "default": "93.5", + "required": "No", + "variability": "constant" + }) +}} ### ctTWbODs @@ -209,9 +312,15 @@ Type: float Design outdoor wetbulb temperature. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 78 No constant +{{ + member_table({ + "units": "^o^F", + "legal_range": "*x* > 0", + "default": "78", + "required": "No", + "variability": "constant" + }) +}} ### ctTwoDs @@ -219,9 +328,15 @@ Type: float Design leaving water temperature. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 85 No constant +{{ + member_table({ + "units": "^o^F", + "legal_range": "*x* > 0", + "default": "85", + "required": "No", + "variability": "constant" + }) +}} The following six items allow optional specification of tower performance under another set of conditions, the "off design" conditions. If given, they allow CSE to compute the tower's relation between flows and heat transfer; in this case, *ctK* (below) may not be given. @@ -231,9 +346,15 @@ Type: float Off-design capacity, per tower. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ---------------------- -------------- ----------------- - Btuh *x* $\neq$ 0 (sum of loads)/*ctN* No constant +{{ + member_table({ + "units": "Btuh", + "legal_range": "*x* $\neq$ 0", + "default": "(sum of loads)/*ctN*", + "required": "No", + "variability": "constant" + }) +}} ### ctVfOd @@ -241,9 +362,15 @@ Type: float Off-design air flow, per tower. Must differ from design air flow; thus *ctVfDs* and *ctVfOd* cannot both be defaulted if off-design conditions are being given. The off-design air and water flows must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------------------- ------------------------- -------------- ----------------- - cfm *x* > 0; *x* $\neq$ *ctVfDs* (sum of loads)/51/*ctN* No constant +{{ + member_table({ + "units": "cfm", + "legal_range": "*x* > 0; *x* $\neq$ *ctVfDs*", + "default": "(sum of loads)/51/*ctN*", + "required": "No", + "variability": "constant" + }) +}} ### ctGpmOd @@ -251,9 +378,15 @@ Type: float Off-design water flow, per tower. Must differ from design water flow; thus, both cannot be defaulted if off-design conditions are being given. Value must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ---------------------------------- ---------------------- -------------- ----------------- - gpm *x* > 0; *x* $\neq$ *ctGpmDs* (sum of pumps)/*ctN* No constant +{{ + member_table({ + "units": "gpm", + "legal_range": "*x* > 0; *x* $\neq$ *ctGpmDs*", + "default": "(sum of pumps)/*ctN*", + "required": "No", + "variability": "constant" + }) +}} ### ctTDbOOd @@ -261,9 +394,15 @@ Type: float Off-design outdoor drybulb temperature. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 93.5 No constant +{{ + member_table({ + "units": "^o^F", + "legal_range": "*x* > 0", + "default": "93.5", + "required": "No", + "variability": "constant" + }) +}} ### ctTWbOOd @@ -271,9 +410,15 @@ Type: float Off-design outdoor wetbulb temperature. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 78 No constant +{{ + member_table({ + "units": "^o^F", + "legal_range": "*x* > 0", + "default": "78", + "required": "No", + "variability": "constant" + }) +}} ### ctTwoOd @@ -281,9 +426,15 @@ Type: float Off-design leaving water temperature. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 85 No constant +{{ + member_table({ + "units": "^o^F", + "legal_range": "*x* > 0", + "default": "85", + "required": "No", + "variability": "constant" + }) +}} The following item allows explicit specification of the relationship between flows and heat transfer, when the preceding "off design" inputs are not given. If omitted, it will be computed from the "off design" inputs if given, else the default value of 0.4 will be used. @@ -297,9 +448,15 @@ $$\text{ntuA} = k \cdot (mwi/ma)^{ctK}$$ where ntuA is the number of transfer units on the air side, mwi and ma are the water and air flows respectively, and k is a constant. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ------------------- ---------------------------------------- -------------- ----------------- - 0 < *x* < 1 *from "Od" members if given, else* 0.4 No constant +{{ + member_table({ + "units": "", + "legal_range": "0 < *x* < 1", + "default": "*from "Od" members if given, else* 0.4", + "required": "No", + "variability": "constant" + }) +}} ### ctStkFlFr @@ -307,9 +464,15 @@ Type: float Fraction of air flow which occurs when tower fan is off, due to stack effect (convection). Cooling due to this air flow occurs in all towers whenever the water flow is on, and may, by itself, cool the water below the setpoint *tpTsSp*. Additional flow, when fan is on, is proportional to fan speed. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 .18 No constant +{{ + member_table({ + "units": "", + "legal_range": "0 $\le$ *x* $\le$ 1", + "default": ".18", + "required": "No", + "variability": "constant" + }) +}} The following items allow CSE to compute the effect of makeup water on the leaving water temperature. @@ -319,9 +482,15 @@ Type: float Blowdown rate: fraction of inflowing water that is bled from the sump down the drain, to reduce the buildup of impurities that don't evaporate. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 .01 No constant +{{ + member_table({ + "units": "", + "legal_range": "0 $\le$ *x* $\le$ 1", + "default": ".01", + "required": "No", + "variability": "constant" + }) +}} ### ctDrft @@ -329,9 +498,15 @@ Type: float Drift rate: fraction of inflowing water that is blown out of tower as droplets without evaporating. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- --------------------- ------------- -------------- ----------------- - 0 $\le$ *x* $\le$ 1 0 No constant +{{ + member_table({ + "units": "", + "legal_range": "0 $\le$ *x* $\le$ 1", + "default": "0", + "required": "No", + "variability": "constant" + }) +}} ### ctTWm @@ -339,18 +514,20 @@ Type: float Temperature of makeup water from mains, used to replace water lost by blowdown, drift, and evaporation. Blowdown and drift are given by the preceding two inputs; evaporation is computed. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - ^o^F *x* > 0 60 No constant +{{ + member_table({ + "units": "^o^F", + "legal_range": "*x* > 0", + "default": "60", + "required": "No", + "variability": "constant" + }) +}} ### endTowerplant Optionally indicates the end of the TOWERPLANT definition. Alternatively, the end of the definition can be indicated by END or by beginning another object. - **Units** **Legal Range** **Default** **Required** **Variability** - ----------- ----------------- ------------- -------------- ----------------- - *N/A* No constant - -**Related Probes:** +*Related Probes:** - @[towerPlant][p_towerplant] From c9cf6b375da91f11ec2d8e42e255827e642081ba Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 6 May 2025 15:23:24 -0600 Subject: [PATCH 052/117] Escape double quotes to fix a csv_table. --- doc/src/docs/input-data/towerplant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/docs/input-data/towerplant.md b/doc/src/docs/input-data/towerplant.md index 46b2c6ca4..4c536efc7 100644 --- a/doc/src/docs/input-data/towerplant.md +++ b/doc/src/docs/input-data/towerplant.md @@ -452,7 +452,7 @@ where ntuA is the number of transfer units on the air side, mwi and ma are the w member_table({ "units": "", "legal_range": "0 < *x* < 1", - "default": "*from "Od" members if given, else* 0.4", + "default": "*from \"Od\" members if given, else* 0.4", "required": "No", "variability": "constant" }) From 7f20455de3cc2d75a64d1221f26faf5bde59e16d Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Wed, 7 May 2025 10:33:28 -0600 Subject: [PATCH 053/117] Remove pandoc multiline tables from output-reports. --- doc/src/docs/output-reports.md | 271 ++++++++++----------------------- 1 file changed, 80 insertions(+), 191 deletions(-) diff --git a/doc/src/docs/output-reports.md b/doc/src/docs/output-reports.md index 46cd174be..0c631f9e7 100644 --- a/doc/src/docs/output-reports.md +++ b/doc/src/docs/output-reports.md @@ -6,11 +6,11 @@ CSE report data is accumulated during simulation and written to the report file The default units for CSE reports are: - ------------- --------------------------------------------------------- - Energy mBtu, millions of Btu (to convert to kWh divide by 292) - Temperature degrees Farenheit - Air Flow cfm (cubic feet per minute) - ------------- --------------------------------------------------------- +{{ + csv_table("Energy, mBtu, millions of Btu (to convert to kWh divide by 292) + Temperature, degrees Farenheit + Air Flow, cfm (cubic feet per minute)") +}} ## Time @@ -32,34 +32,21 @@ Flows are categorized by 1) direction of flow (+ = into zone(s), - = out of zone The following items are displayed (using the abbreviations shown in the report headings). The "+/-" notation indicates that two columns are included, one for each direction of flow. For example, "InfX+/-" means the report includes columns "InfX+" (infiltration flows into the zone) and "InfX-" (infiltration flows out of the zone). ----------- ------------------------------------------------------------- -Tot+/- Total flows - -Unkn+/- Uncategorized flows (generally this shows 0) - -InfX+/- Infiltration flows from/to ambient (izAFCat = InfilEx) - -VntX+/- Natural vent exchanges from/to ambient (izAFCat = VentEx) - -FanX+/- Forced vent and DOAS flows to/from ambient (izAFCat = FanEx) - -InfU+/- Infiltration flows from/to unconditioned zones (izAFCat = InfilIz) - -VntU+/- Natural vent flows from/to unconditioned zones (izAFCat = VentIz) - -FanU+/- Forced vent flows from/to unconditioned zones (izAFCat = FanIz) - -InfC+/- Infiltration flows from/to conditioned zones (izAFCat = InfilIz) - -VntC+/- Natural vent flows from/to conditioned zones (izAFCat = VentIz) - -FanC+/- Forced vent flows from/to conditioned zones (izAFCat = FanIz) - -Duct+/- Duct leakage flows - -HVAC+/- HVAC air flows at zone (i.e. at registers) ----------- ------------------------------------------------------------- - +{{ + csv_table("Tot+/-, Total flows +Unkn+/-, Uncategorized flows (generally this shows 0) +InfX+/-, Infiltration flows from/to ambient (izAFCat = InfilEx) +VntX+/-, Natural vent exchanges from/to ambient (izAFCat = VentEx) +FanX+/-, Forced vent and DOAS flows to/from ambient (izAFCat = FanEx) +InfU+/-, Infiltration flows from/to unconditioned zones (izAFCat = InfilIz) +VntU+/-, Natural vent flows from/to unconditioned zones (izAFCat = VentIz) +FanU+/-, Forced vent flows from/to unconditioned zones (izAFCat = FanIz) +InfC+/-, Infiltration flows from/to conditioned zones (izAFCat = InfilIz) +VntC+/-, Natural vent flows from/to conditioned zones (izAFCat = VentIz) +FanC+/-, Forced vent flows from/to conditioned zones (izAFCat = FanIz) +Duct+/-, Duct leakage flows +HVAC+/-, HVAC air flows at zone (i.e. at registers)") +}} ## Energy Balance Report @@ -69,174 +56,76 @@ In a real building zone energy and moisture flows must balance due to the laws o The following items are displayed (using the abbreviations shown in the report headings): - ---------- ------------------------------------------------------------- - Tair Air temperature in the zone (since CSE uses combined films - this is technically the effective temperature and includes - radiant effects). - - WBair Wet Bulb temperature in the zone. - - Cond Heat flow through light weight surfaces from or to the - outdoors. - - InfS Sensible infiltration heat flow from outdoors. - - Slr Solar gain through glazing (net) and solar gains absorbed by - light surfaces and transmitted into the zone air. - - IgnS Sensible internal gains from lights, equipment, people, etc. - - Mass Net heat flow to (negative) and from (positive) the mass - elements of the zone. - - Izone Net heat flows to other zones in the building. - - MechS Net heat flows from heating, cooling and ventilation. - - BALS The balance (error) calculated by summing the sensible gains - and losses. - - InfL Latent infiltration heat flow. - - IgnL Latent internal gains. - - AirL Latent heat absorbed (negative) or released (positive) by - changes in the room air moisture content. - - MechL Latent heat added or removed by cooling or ventilation. - - BalL The balance (error) calculated by summing the sensible gains - and losses. - ---------- ------------------------------------------------------------- +{{ + csv_table("Tair, Air temperature in the zone (since CSE uses combined films this is technically the effective temperature and includes radiant effects). + WBair, Wet Bulb temperature in the zone. + Cond, Heat flow through light weight surfaces from or to the outdoors. + InfS, Sensible infiltration heat flow from outdoors. + Slr, Solar gain through glazing (net) and solar gains absorbed by light surfaces and transmitted into the zone air. + IgnS, Sensible internal gains from lights, equipment, people, etc. + Mass, Net heat flow to (negative) and from (positive) the mass elements of the zone. + Izone, Net heat flows to other zones in the building. + MechS, Net heat flows from heating, cooling and ventilation. + BALS, The balance (error) calculated by summing the sensible gains and losses. + InfL, Latent infiltration heat flow. + IgnL, Latent internal gains. + AirL, Latent heat absorbed (negative) or released (positive) by changes in the room air moisture content. + MechL, Latent heat added or removed by cooling or ventilation. + BalL, The balance (error) calculated by summing the sensible gains and losses.") +}} ## Air Handler Load Report The Air Handler Load Report displays conditions and loads at the peak load hours for the air handler for a single zone. The following items are displayed: - ---------- ------------------------------------------------------------- - PkVf Peak flow (cfm) at supply fan - VfDs Supply fan design flow (same as peak for E10 systems) - PkQH Peak heat output from heating coil. - Hcapt Rated capacity of heat coil - ---------- ------------------------------------------------------------- +{{ + csv_table("PkVf, Peak flow (cfm) at supply fan + VfDs, Supply fan design flow (same as peak for E10 systems) + PkQH, Peak heat output from heating coil. + Hcapt, Rated capacity of heat coil") +}} The rest are about the cooling coil. Most of the columns are values at the time of peak part load ratio (plr). Note that, for example, the peak sensible load is the sensible load at the time of peak part load ratio, even if there was a higher sensible load at another time when the part load ratio was smaller. - ------ ----------------------------------------------------------------- - PkMo Month of cooling coil peak plr, 1-12 - - Dy Day of month 1-31 of peak - - Hr Hour of day 1-24 of cooling coil peak plr. - - Tout Outdoor drybulb temperature at time of cooling coil peak plr. - - Wbou Outdoor wetbulb similarly - - Ten Cooling coil entering air temperature at time of peak plr. - - Wben Entering wetbulb similarly - - Tex Exiting air temperature at plr peak - - WbexExiting air wetbulb similarly - - -PkQs Sensible load at time of peak plr, shown positive. - - -PkQl Latent load likewise - - -PkQC Total load -- sum of PkQs and PkQl - - CPlr Peak part load ratio: highest fraction of coil's capacity used, - reflecting both fraction of maximum output under current - conditions used when on and fraction of the time the fan is on. - The maximum output under actual conditions can vary considerably - from the rated capacity for DX coils. The fraction of maximum - output used can only be 1.0 if the sensible and total loads - happen to occur in the same ratio as the sensible and total - capacities. The time the fan is on can be less than 1.0 for - residential systems in which the fan cycles on with the - compressor. For example, if at the cooling peak the coil ran at - .8 power with the fan on .9 of the time, a CPlr of .72 would be - reported. The preceding 12 columns are values at the time this - peak occured. - - Ccapt Cooling coil rated total capacity - - Ccaps Rated sensible capacity. - ------ ----------------------------------------------------------------- +{{ + csv_table('PkMo, Month of cooling coil peak plr, 1-12 +Dy, Day of month 1-31 of peak +Hr, Hour of day 1-24 of cooling coil peak plr. +Tout, Outdoor drybulb temperature at time of cooling coil peak plr. +Wbou, Outdoor wetbulb similarly +Ten, Cooling coil entering air temperature at time of peak plr. +Wben, Entering wetbulb similarly +Tex, "Exiting air temperature at plr peak\nWbexExiting air wetbulb similarly" +-PkQs, Sensible load at time of peak plr, shown positive. +-PkQl, Latent load likewise +-PkQC, Total load -- sum of PkQs and PkQl +CPlr, Peak part load ratio: highest fraction of coil\'s capacity used, reflecting both fraction ofmaximum output under current conditions used when on and fraction of the time the fan is on. The maximumoutput under actual conditions can vary considerably from the rated capacity for DX coils. The fraction ofmaximum output used can only be 1.0 if the sensible and total loads happen to occur in the same ratio as thesensible and total capacities. The time the fan is on can be less than 1.0 for residential systems in whichthe fan cycles on with the compressor. For example, if at the cooling peak the coil ran at .8 powerwith the fan on .9 of the time, a CPlr of .72 would be reported. The preceding 12 columns are valuesat the time this peak occured. +Ccapt, Cooling coil rated total capacity +Ccaps, Rated sensible capacity.') +}} ## Air Handler Report The Air Handler Load Report displays conditions and heat flows in the air handler for the time period specified. It is important to note that the air handler report only accumulates data if the air handler is on during an hour. The daily and monthly values are averages of the hours the air handler was on and DO NOT INCLUDE OFF HOUR VALUES. The following items are displayed: - ---------- ------------------------------------------------------------- - Tout Outdoor drybulb temperature during hours the air handler was - on. - - Wbou Outdoor wetbulb temperature similarly. - - Tret Return air dry bulb temperature during hours the air handler - was on before return duct losses or leaks. - - Wbre Return air wetbulb similarly - - po Fraction outside air including economizer damper leakage, but - not return duct leakage. - - Tmix Mixed air dry bulb temperature -- after return air combined - with outside air; after return fan, but before supply fan and - coil(s). - - Wbmi Mixed air wet bulb temperature, similarly. - - Tsup Supply air dry bulb temperature to zone terminals -- after - coil(s) and air handler supply duct leak and loss; (without - in zone duct losses after terminals). - - WBsu Supply air wet bulb temperature similarly. - - HrsOn Hours during which the fan operated at least part of the - time. - - FOn Fraction of the time the fan was on during the hours it - operated (HrsOn). CHECK FOR VAV, IS IT FLOW OR TIME - - VF Volumetric flow, measured at mix point/supply fan/coils; - includes air that leaks out of supply duct and is thus non-0 - even when zone terminals are taking no flow - - Qheat Heat energy added to air stream by heat coil, if any, - MEASURED AT COIL not as delivered to zones (see Qload). - - Qsens, Sensible, latent, and total heat added to air stream - Qlat and (negative values) by cooling coil, MEASURED AT COIL, - Qcool including heat cancelled by fan heat and duct losses, and - heat added to air lost through supply duct leak. - - Qout Net heat taken from outdoor air. Sum of sensible and latent, - measured RELATIVE TO CURRENT RETURN AIR CONDITIONS. - - Qfan Heat added to air stream by supply fan, plus return fan if - any -- but not relief fan.. - - Qloss Heat added to air stream by supply and return duct leaks and - conductive loss. Computed in each case as the sensible and - latent heat in the air stream relative to return air - conditions after the leak or loss, less the same value before - the leak or loss. - - Qload Net energy delivered to the terminals -- Sensible and latent - energy, measured relative to return air conditions. INCLUDES - DUCT LOSSES after terminals; thus will differ from sum of - zone qMech's + qMecLat's. - - Qbal Sum of all the 'Q' columns, primarily a development aid. Zero - indicates consistent and accurate computation; the normal - printout is something like .0000, indicating that the value - was too small to print in the space alloted, but not - precisely zero, due to computational tolerances and internal - round-off errors. - ---------- ------------------------------------------------------------- - - +{{ + csv_table("Tout, Outdoor drybulb temperature during hours the air handler was on. +Wbou, Outdoor wetbulb temperature similarly. +Tret, Return air dry bulb temperature during hours the air handler was on before return duct losses or leaks. +Wbre, Return air wetbulb similarly +po, Fraction outside air including economizer damper leakage, but not return duct leakage. +Tmix, Mixed air dry bulb temperature -- after return air combined with outside air; after return fan, but before supply fan and coil(s). +Wbmi, Mixed air wet bulb temperature, similarly. +Tsup, Supply air dry bulb temperature to zone terminals -- after coil(s) and air handler supply duct leak and loss; (without in zone duct losses after terminals). +WBsu, Supply air wet bulb temperature similarly. +HrsOn, Hours during which the fan operated at least part of the time. +FOn, Fraction of the time the fan was on during the hours it operated (HrsOn). CHECK FOR VAV, IS IT FLOW OR TIME +VF, Volumetric flow, measured at mix point/supply fan/coils; includes air that leaks out of supply duct and is thus non-0 even when zone terminals are taking noflow +Qheat, Heat energy added to air stream by heat coil, if any, MEASURED AT COIL not as delivered to zone (see Qload). +Qsens, Qlat, Qcool, Sensible, latent, and total heat added to air stream, (negative values) by cooling coil, MEASURED AT COIL, including heat cancelled by fan heat and duct losses, and heat added to air lost through supply duct leak. +Qout, Net heat taken from outdoor air. Sum of sensible and latent, measured RELATIVE TO CURRENT RETURN AIR CONDITIONS. +Qfan, Heat added to air stream by supply fan, plus return fan if any -- but not relief fan.. +Qloss, Heat added to air stream by supply and return duct leaks and conductive loss. Computed in each case as the sensible and latent heat in the air streamrelative to return air conditions after the leak or loss, less the same value before the leak or loss. +Qload, Net energy delivered to the terminals -- Sensible and latent energy, measured relative to return air conditions. INCLUDES DUCT LOSSES after terminals; thus will differ from sum of zone qMech's + qMecLat's. +Qbal, Sum of all the 'Q' columns, primarily a development aid. Zero indicates consistent and accurate computation; the normal printout is something like .0000, indicating that the value was too small to print in the space alloted, but not precisely zero, due to computational tolerances and internal round-off errors.") +}} From 247dd57afeb12ee0ac8844d4084bafae3bbcd537 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Wed, 7 May 2025 10:35:35 -0600 Subject: [PATCH 054/117] Remove pandoc multiline tables from towerplant. --- doc/src/docs/input-data/towerplant.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/doc/src/docs/input-data/towerplant.md b/doc/src/docs/input-data/towerplant.md index 4c536efc7..37759ec86 100644 --- a/doc/src/docs/input-data/towerplant.md +++ b/doc/src/docs/input-data/towerplant.md @@ -61,14 +61,10 @@ Type: choice How tower fans are staged to meet the load: - ----------- ---------------------------------------------------------- - TOGETHER All fans operate at the same speed or cycle on and off - together. - - LEAD A single "Lead" tower's fan is modulated as required and - as many additional fans as necessary run at their (single) - full speed. - ----------- ---------------------------------------------------------- +{{ + csv_table("TOGETHER, All fans operate at the same speed or cycle on and off together. +LEAD, A single \"Lead\" tower's fan is modulated as required and as many additional fans as necessary run at their (single) full speed.") +}} Whenever the heat rejection pump in a CHILLER or HPLOOP heat exchanger is on, the water flows through all towers in the TOWERPLANT, regardless of the number of fans operating. From 68acf016dcb0e9afb2485bdd02a216aae3dd1f0d Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Wed, 7 May 2025 10:54:05 -0600 Subject: [PATCH 055/117] Remove pandoc multiline tables from surface. --- doc/src/docs/input-data/surface.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index 78f74583d..0fc0053fa 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -62,17 +62,17 @@ Type: float Surface tilt from horizontal. Values outside the range 0 to 360 are first normalized to that range. The default and allowed range depend on sfType, as follows: - ------------------ ------------------------------------------- - sfType = FLOOR *sfTilt*=180, default = 180 (fixed value) - sfType = WALL 60 $<$ *sfTilt* $<$ 180, default = 90 - sfType = CEILING 0 $\leq$ *sfTilt* $\leq$ 60, default = 0 - ------------------ ------------------------------------------- +{{ + csv_table("sfType = FLOOR, *sfTilt*=180, default = 180 (fixed value) +sfType = WALL, 60 $<$ *sfTilt* $<$ 180, default = 90 +sfType = CEILING, 0 $\leq$ *sfTilt* $\leq$ 60, default = 0") +}} {{ member_table({ "units": "degrees", - "legal_range": "Dependent upon *sfType* See above", - "default": "Dependent upon *sfType* See above", + "legal_range": "Dependent upon *sfType*. See above.", + "default": "Dependent upon *sfType*. See above.", "required": "No", "variability": "constant" }) From 734c8e94c8e3a51aa9897ba00d84168fed171834 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Wed, 7 May 2025 11:20:48 -0600 Subject: [PATCH 056/117] Fix issues with missing spaces and line breaks on output-reports. --- doc/src/docs/output-reports.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/docs/output-reports.md b/doc/src/docs/output-reports.md index 0c631f9e7..dd8f3ca7b 100644 --- a/doc/src/docs/output-reports.md +++ b/doc/src/docs/output-reports.md @@ -95,11 +95,11 @@ Tout, Outdoor drybulb temperature at time of cooling coil peak plr. Wbou, Outdoor wetbulb similarly Ten, Cooling coil entering air temperature at time of peak plr. Wben, Entering wetbulb similarly -Tex, "Exiting air temperature at plr peak\nWbexExiting air wetbulb similarly" +Tex, Exiting air temperature at plr peak
WbexExiting air wetbulb similarly -PkQs, Sensible load at time of peak plr, shown positive. -PkQl, Latent load likewise -PkQC, Total load -- sum of PkQs and PkQl -CPlr, Peak part load ratio: highest fraction of coil\'s capacity used, reflecting both fraction ofmaximum output under current conditions used when on and fraction of the time the fan is on. The maximumoutput under actual conditions can vary considerably from the rated capacity for DX coils. The fraction ofmaximum output used can only be 1.0 if the sensible and total loads happen to occur in the same ratio as thesensible and total capacities. The time the fan is on can be less than 1.0 for residential systems in whichthe fan cycles on with the compressor. For example, if at the cooling peak the coil ran at .8 powerwith the fan on .9 of the time, a CPlr of .72 would be reported. The preceding 12 columns are valuesat the time this peak occured. +CPlr, Peak part load ratio: highest fraction of coil\'s capacity used, reflecting both fraction of maximum output under current conditions used when on and fraction of the time the fan is on. The maximum output under actual conditions can vary considerably from the rated capacity for DX coils. The fraction of maximum output used can only be 1.0 if the sensible and total loads happen to occur in the same ratio as the sensible and total capacities. The time the fan is on can be less than 1.0 for residential systems in which the fan cycles on with the compressor.

For example, if at the cooling peak the coil ran at 0.8 powerwith the fan on 0.9 of the time, a CPlr of 0.72 would be reported. The preceding 12 columns are values at the time this peak occured. Ccapt, Cooling coil rated total capacity Ccaps, Rated sensible capacity.') }} From e97ce7f5a8a7459e79ad8b7be6bcdcc6f33b87cd Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Sat, 10 May 2025 22:28:50 -0600 Subject: [PATCH 057/117] Use csv module to parse csv_string. --- doc/src/main.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/src/main.py b/doc/src/main.py index c75d23c77..1770c5e8a 100644 --- a/doc/src/main.py +++ b/doc/src/main.py @@ -1,4 +1,6 @@ from pathlib import Path +from io import StringIO +import csv def define_env(env): @@ -7,8 +9,8 @@ def define_env(env): """ @env.macro - def csv_table(csv, header=False): - rows = [row.split(",") for row in csv.split("\n")] + def csv_table(csv_string, header=False): + rows = list(csv.reader(StringIO(csv_string))) max_length = max(len(row) for row in rows) padded_rows = [row + [""] * (max_length - len(row)) for row in rows] From 4372b7a9c5c647ed443dcb30552e9d8bd8a45ca2 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 12 May 2025 14:02:03 -0600 Subject: [PATCH 058/117] Replace all pandoc multiline tables with dl or csv_tables in input-structure.md Adds a new hook for injecting class names to dls that should be nested. --- doc/pyproject.toml | 1 + .../docs/assets/stylesheets/extra_styles.css | 62 +- doc/src/docs/input-structure.md | 1154 +++++++---------- doc/src/hooks.py | 37 + doc/uv.lock | 24 + 5 files changed, 624 insertions(+), 654 deletions(-) diff --git a/doc/pyproject.toml b/doc/pyproject.toml index c8f6863ee..971c146a3 100644 --- a/doc/pyproject.toml +++ b/doc/pyproject.toml @@ -14,6 +14,7 @@ dependencies = [ "mkdocs-awesome-nav>=3.1.1", "pyyaml>=6.0.2", "python-slugify>=8.0.4", + "beautifulsoup4>=4.13.4", ] diff --git a/doc/src/docs/assets/stylesheets/extra_styles.css b/doc/src/docs/assets/stylesheets/extra_styles.css index d5e75aae0..8fda20ebc 100644 --- a/doc/src/docs/assets/stylesheets/extra_styles.css +++ b/doc/src/docs/assets/stylesheets/extra_styles.css @@ -1,3 +1,7 @@ +.md-typeset .admonition, .md-typeset details { + font-size: 0.9em; +} + @media screen and (min-width: 76.25em) { .md-nav { transition: unset !important; @@ -21,4 +25,60 @@ display: table; table-layout: fixed; width: 100%; -} \ No newline at end of file +} + +/* General dl styling */ +.md-typeset dl, dl code { + font-size: 14.8px; +} + +.md-typeset dl dt, +.md-typeset dl dd, +.md-typeset dl dd > p, +.md-typeset dl dd > div { + margin-block: 0; +} + +.md-typeset dl * + dt { + margin-top: 1em; +} + +/* Nested dl styling customizations */ +.nested-dl, .nested-dl + .admonition { + margin-left: 1.875em; +} + +.nested-dl { + grid-template-columns: fit-content(25%) 1fr; + display: grid; + gap: 0.5em +} + +.nested-dl > dt { + grid-column: 1 / 2; + margin: 0 !important; + text-align: end; +} + +.nested-dl > dd { + grid-column: 2 / 3; + margin: 0 !important +} + + +/* Fix code block alignment if a code block appears (first) as the description value for a description item. + +Supported term +: Some text can come first + + ```Then a text block can appear. We don't want margin-top: 0 for this code block``` + +Unsupported term +: ```code block can't be the first part/block of a description value``` + +Workaround term requiring margin-top fix +: + ```code block as description value starts on the next line``` */ +.nested-dl dd > div:first-child > pre:has(code) { + margin-top: 0; +} diff --git a/doc/src/docs/input-structure.md b/doc/src/docs/input-structure.md index ea982418f..ca8fbcdf2 100644 --- a/doc/src/docs/input-structure.md +++ b/doc/src/docs/input-structure.md @@ -567,7 +567,7 @@ Any differences from the type, and any required information not given in the typ #### DEFTYPE -DEFTYPE is used to begin defining a TYPE for a class. When a TYPE is created, no object is created; rather, a partial or complete object description is stored for later use with DEFTYPE. TYPES facilitate creating multiple similar objects, as well as storing commonly used descriptions in a file to be \#included in several different files, or to be altered for multiple runs in comparative studies without changing the including files. Example (boldface for emphasis only): +DEFTYPE is used to begin defining a TYPE for a class. When a TYPE is created, no object is created; rather, a partial or complete object description is stored for later use with DEFTYPE. TYPES facilitate creating multiple similar objects, as well as storing commonly used descriptions in a file to be #included in several different files, or to be altered for multiple runs in comparative studies without changing the including files. Example (boldface for emphasis only): DEFTYPE SURFACE "BaseWall" // common characteristics of all walls @@ -681,75 +681,25 @@ Expressions in which all operands are known when the statement is being decoded The type of value to which an expression must evaluate is specified in each member description (see the [input data][input-data] section) or other context in which an expression can be used. Each expression may be a single constant or may be made up of operators and operands described in the rest of this section, so long as the result is the required type or can be converted to that type by CSE, and its variation is not too great for the context. The possible types are: - ------------------ ----------------------------------------------------- - *float* A real number (3.0, 5.34, -2., etc.). Approximately 7 - digits are carried internally. If an int is given - where a real is required, it is automatically - converted. - *int* An integer or whole number (-1, 0, 1, 2 etc.). If a - real is given, an error may result, but we should - change it to convert it (discarding any fractional - part). - *Boolean* Same as int; indicates that a 0 value will be - interpreted as "false" and any non-0 value will be - interpreted as "true". - - *string* A string of characters; for example, some text - enclosed in quotes. - - *object name* Name of an object of a specified class. Differs from - *string* in that the name need not be enclosed in - quotes if it consists only of letters, digits, \_, - and \$, begins with a non-digit, and is different - from all reserved words now in or later added to the - language (see [Object Names][object-names]). - - The object may be defined after it is referred to. An - expression using conditional operators, functions, - etc. may be used provided its value is known when the - RUN action command is reached.; no members requiring - object names accept values that vary during the - simulation. - - *choice* One of several choices; a list of the acceptable - values is given wherever a *choice* is required. The - choices are usually listed in CAPITALS but may be - entered in upper or lower case as desired. As with - object names, quotes are allowed but not required. - - Expressions may be used for choices, subject to the - variability of the context. - - *date* May be entered as a 3-letter month abbreviation - followed by an *int* for the day of the month, or an - *int* for the Julian day of the year (February is - assumed to have 28 days). Expressions may be used - subject to variability limitations. Examples: - - `Jan 23 // January 23` - - `23 // January 23` - - `32 // February 1` - ------------------ ----------------------------------------------------- +{{ + csv_table(" *float*, A real number (3.0, 5.34, -2., etc.). Approximately 7 digits are carried internally. If an int is given where a real is required , it is automatically converted. + *int*, An integer or whole number (-1, 0, 1, 2 etc.). If a real is given, an error may result, but we should change it to convert it (discarding any fractional part). + *Boolean*, Same as int; indicates that a 0 value will be interpreted as \"false\" and any non-0 value will be interpreted as \"true\". + *string*, A string of characters; for example, some text enclosed in quotes. + *object name*, Name of an object of a specified class. Differs from *string* in that the name need not be enclosed in quotes if it consists only of letters, digits, \_, and \$, begins with a non-digit, and is different from all reserved words now in or later added to the language (see [Object Names][object-names]).
The object may be defined after it is referred to. An expression using conditional operators, functions, etc. may be used provided its value is known when the RUN action command is reached.; no members requiring object names accept values that vary during the simulation. + *choice*, One of several choices; a list of the acceptable values is given wherever a *choice* is required. The choices are usually listed in CAPITALS but may be entered in upper or lower case as desired. As with object names, quotes are allowed but not required.
Expressions may be used for choices, subject to the variability of the context. + *date*, May be entered as a 3-letter month abbreviation followed by an *int* for the day of the month, or an *int* for the Julian day of the year (February is assumed to have 28 days). Expressions may be used subject to variability limitations. Examples:
    `Jan 23 // January 23`
    `23 // January 23`
    `32 // February 1`") +}} +[](){ #numeric-any-type } These words are used in following descriptions of contexts that can accept more than one basic type: - ------------------ ----------------------------------------------------- - *numeric* *float* or *int*. When floats and ints are intermixed - with the same operator or function, the result is - float. - - *anyType* Any type; the result is the same type as the - argument. If floats and ints are intermixed, the - result is float. If strings and valid choice names - are intermixed, the result is *choice*. Other - mixtures of types are generally illegal, except in - expressions for a few members that will accept either - one of several choices or a numeric value. - ------------------ ----------------------------------------------------- +{{ + csv_table("*numeric*, *float* or *int*; When floats and ints are intermixed with the same operator or function, the result is float. +*anyType*, Any type; the result is the same type as the argument. If floats and ints are intermixed, the result is float. If strings and valid choice names are intermixed, the result is *choice*. Other mixtures of types are generally illegal, except in expressions for a few members that will accept either one of several choices or a numeric value.") +}} The next section describes the syntax of constants of the various data types; then, we will describe the available operators, then other operand types such as system variables and built-in functions. @@ -757,742 +707,683 @@ The next section describes the syntax of constants of the various data types; th This section reviews how to enter ordinary non-varying numbers and other values. - ------------------ ----------------------------------------------------- - *int* optional - sign followed by digits. Don't use a - decimal point if your intent is to give an *int* - quantity -- the decimal point indicates a *float* to - CSE. Hexadecimal and Octal values may be given by - prefixing the value with 0x and 0O respectively (yes, - that really is a zero followed by an 'O'). +{{ + csv_table("*int*, optional - sign followed by digits. Don't use a decimal point if your intent is to give an *int* quantity -- the decimal point indicates a *float* to CSE. Hexadecimal and Octal values may be given by prefixing the value with `0x` and `0O` respectively (yes, that really is a zero followed by an 'O'). + *float*, optional - sign, digits, and decimal point. Very large or small values can be entered by following the number with an \"e\" and a power of ten. Examples:
    `1.0 1. .1 -5534.6 123.e25 4.56e-23`
The decimal point indicates a float as opposed to an int.
Generally it doesn't matter as CSE converts ints to floats as required, but be careful when dividing: CSE interprets \"2/3\" as integer two divided by integer 3, which will produce an integer 0 before CSE notices any need to convert to *float*. If you mean .6666667, say 2./3, 2/3., or .6666667. + *feet and inches*, Feet and inches may be entered where a *float* number of feet is required by typing the feet (or a 0 if none), a single quote ', then the inches. (Actually this is an operator meaning \"divide the following value by 12 and add it to the preceding value\", so expressions can work with it.) Examples:
    `3'6 0'.5 (10+20)'(2+3)` + *string*, \"Text\" -- desired characters enclosed in double quotes.
Maximum length 80 characters (make 132??). To put a \" within the \"'s, precede it with a backslash.
Certain control codes can be represented with letters preceded with a backslash as follows:
    `\\e escape`
    `\\t tab`
    `\\f form feed`
    `\\r carriage return`
    `\\n newline or line feed` + *object name*, Same as *string*, or without quotes if name consists only of letters, digits, \_, and \$, begins with a non-digit, and is different from all reserved words now in or later added to the language (see [Object Names][object-names]). Control character codes (ASCII 0-31) are not allowed. + *choice*, Same as string; quotes optional on choice words valid for the member. Capitalization does not matter. + *date*,Julian day of year (as *int* constant), or month abbreviation
    `Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec`
followed by the *int* day of month. (Actually, the month names are operators implemented to add the starting day of the month to the following *int* quantity).") +}} - *float* optional - sign, digits and decimal point. Very large - or small values can be entered by following the - number with an "e" and a power of ten. Examples; +### Operators -     `1.0 1. .1 -5534.6 123.e25 4.56e-23` +For *floats* and *ints*, the CSE input language recognizes a set of operators based closely on those found in the C programming language. The following table describes the available numeric operators. The operators are shown in the order of execution (precedence) when no ()'s are used to control the order of evaluation; thin lines separate operators of equal precedence. - The decimal point indicates a float as opposed to an - int. Generally it doesn't matter as CSE converts ints - to floats as required, but be careful when dividing: - CSE interprets "2/3" as integer two divided by - integer 3, which will produce an integer 0 before CSE - notices any need to convert to *float*. If you mean - .6666667, say 2./3, 2/3., or .6666667. +--- +**Feet-Inches Separator** `'` +: `a ' b` yields `a + b/12` - *feet and inches* Feet and inches may be entered where a *float* number - of feet is required by typing the feet (or a 0 if - none), a single quote ', then the inches. (Actually - this is an operator meaning "divide the following - value by 12 and add it to the preceding value", so - expressions can work with it.) Examples: + Example: `4'6 = 4.5` -     `3'6 0'.5 (10+20)'(2+3)` +**Unary plus** `+` +: The familiar "positive", as in `+3`. Does nothing; rarely used. - *string* "Text" -- desired characters enclosed in double - quotes. Maximum length 80 characters (make 132??). To - put a " within the "'s, precede it with a backslash. - Certain control codes can be represented with letters - preceded with a backslash as follows: +**Unary minus** `-` +: The familiar "minus", as in `-3`. + + Example: `-(-3) = +3` -     `\\e escape` +**Logical NOT** `!` +: Changes `0` to `1` and any non-`0` value to `0`. -     `\\t tab` + Examples: `!0 = 1`, `!17 = 0` -     `\\f form feed` +**One's Complement** `~` +: Complements each bit in an *int* value. -     `\\r carriage return` +**Multiplication** `*` +: Multiplication + + Examples: `3*4 = 12`, `3.24*18.54 = 60.07` -     `\\n newline or line feed` - *object name* Same as *string*, or without quotes if name consists - only of letters, digits, \_, and \$, begins with a - non-digit, and is different from all reserved words - now in or later added to the language (see - [Object Names][object-names]). Control character codes - (ASCII 0-31) are not allowed. +**Division** `/` +: Division + + Examples: `4/2 = 2`, `3.24/1.42 = 2.28` - *choice* Same as string; quotes optional on choice words valid - for the member. Capitalization does not matter. + !!! danger "CAUTION!" + Integer division truncates toward 0: `3/2 = 1`, `3/-2 = -1`, `-3/2 = -1`, `2/3 = 0` + +**Modulus** `%` +: Yields the remainder after division, e.g. `7%2 = 1`. The result has the same sign as the left operand (e.g.`(-7)%2 = -1`). `%` is defined for both integer and floating point operands (unlike ANSI C). - *date* Julian day of year (as *int* constant), or month - abbreviation +**Addition** `+` +: Yields the sum of the operands -     `Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec` + Example: `5+3=8` - followed by the *int* day of month. (Actually, the - month names are operators implemented to add the - starting day of the month to the following *int* - quantity). - ------------------ ----------------------------------------------------- +**Subtraction** `-` +: Yields the difference of the operands -### Operators + Example: `5-3=2` -For *floats* and *ints*, the CSE input language recognizes a set of operators based closely on those found in the C programming language. The following table describes the available numeric operators. The operators are shown in the order of execution (precedence) when no ()'s are used to control the order of evaluation; thin lines separate operators of equal precedence. +**Right Shift** `>>` +: `a >> b` yields `a` shifted right `b` bit positions - ------------------------------------------------------------------------ - **Operator** **Name** **Notes and Examples** - -------------- -------------------- ------------------------------------ - ' Feet-Inches a ' b yields a + b/12; thus 4'6 = - Separator 4.5. + Example: `8 >> 2 = 2` - + Unary plus The familiar "positive", as in +3. - Does nothing; rarely used. +**Left Shift** `<<` +: `a << b` yields `a` shifted left `b` bit positions + + Example: `8 << 2 = 32` - - Unary minus The familiar "minus", as in -3. - -(-3) = +3 etc. +**Less than** `<` +: `a < b` yields 1 if `a` is less than `b`, otherwise 0 - ! Logical NOT Changes 0 to 1 and any non-0 value - to 0. !0 = 1, !17 = 0. +**Less than or equal** `<=` +: `a <= b` yields 1 if `a` is less than or equal to `b`, otherwise 0 - \~ One's complement Complements each bit in an *int* - value. +**Greater than or equal** `>=` +: `a >= b` yields 1 if `a` is greater than or equal to `b`, otherwise 0 - \* Multiplication Multiplication, e.g. 3\*4 = 12; - 3.24\*18.54 = 60.07 +**Greater than** `>` +: `a > b` yields 1 if `a` is greater than `b`, otherwise 0 - / Division Division, e.g. 4/2 = 2, 3.24/1.42 = - 2.28. Integer division truncates - toward 0 (e.g. 3/2 = 1, 3/-2 = -1, - -3/2 = -1, 2/3 = 0) CAUTION! +**Equal** `==` +: `a == b` yields 1 if `a` is *exactly* (bit wise) equal to `b`, otherwise 0 - % Modulus Yields the remainder after division, - e.g. 7%2 = 1. The result has the - same sign as the left operand - (e.g.(-7)%2 = -1). % is defined for - both integer and floating point - operands (unlike ANSI C). +**Not equal** `==` +: `a != b` yields 1 if `a` is not equal to `b`, otherwise 0 - + Addition Yields the sum of the operands, e.g. - 5+3 = 8 +**Bitwise AND** `&` +: `a & b` yields the bitwise AND of the operands - - Subtraction Yields the difference of the - operands, e.g. 5-3 = 2 + Example: `6 & 2 = 2` - >> Right shift a >> b yields a shifted right - b bit positions, e.g. 8>>2 = 2 +**Bitwise EXCLUSIVE OR** `^` +: `a ^ b` yields the bitwise XOR of the operands - << Left shift a << b yields a shifted left b - bit positions, e.g. 8<<2 = 32 + Example: `6 ^ 2 = 4` - < Less than a < b yields 1 if a is less than - b, otherwise 0 +**Bitwise INCLUSIVE OR** `|` +: `a | b` yields the bitwise IOR of the operands - <= Less than or equal a <= b yields 1 if a is less than - or equal to b, otherwise 0 + Example: `6 | 2 = 6` - >= Greater than or a >= b yields 1 if a is greater - equal than or equal to b, otherwise 0 +**Logical AND** `&&` +: `a && b` yields 1 if both `a` and `b` are non-zero, otherwise 0. + `&&` guarantees left to right evaluation: if the first operand evaluates to 0, the second operand is not evaluated and the result is 0. - > Greater than a > b yields 1 if a is greater - than b, otherwise 0 +**Logical OR** `||` +: `a || b` yields 1 if either `a` or `b` is true (non-0), otherwise 0. + `||` guarantees left to right evaluation: if the first operand evaluates to non-zero, the second operand in not evaluated and the result is 1. - == Equal a == b yields 1 if a is *exactly* - (bit wise) equal to b, otherwise 0 +**Conditional** `?:` +: `a ? b : c` yields `b` if `a` is true (non-0), otherwise `c`. + +--- - != Not equal a != b yields 1 if a is not equal to - b, otherwise 0 +*Dates* are stored as *ints* (the value being the Julian day of the year), so all numeric operators could be used. The month abbreviations are implemented as operators that add the first day of the month to the following *int* value; CSE does not disallow their use in other numeric contexts. - & Bitwise and a & b yields the bitwise AND of the - operands, e.g. 6 & 2 = 2. +For *strings*, *object names*, and *choices*, the CSE input language currently has no operators except the `?:` conditional operator. A concatenation operator is being considered. Note, though, that the choose, choose1, select, and hourval functions described below work with strings, object names, and choice values as well as numbers. - \^ Bitwise exclusive or a \^ b yields the bitwise XOR of the - operands, e.g. 6 \^ 2 = 4. + +### System Variables - | Bitwise inclusive or a | b yields the bitwise IOR of the - operands, e.g. 6 | 2 = 6. +*System Variables* are built-in operands with useful values. To avoid confusion with other words, they begin with a `$`. Descriptions of the CSE system variables follow. Capitalization shown need not be matched. Most system variables change during a simulation run, resulting in the *variations* shown; they cannot be used where the context will not accept variation at least this fast. (The [Input Data Section][input-data] gives the *variability*, or maximum acceptable variation, for each object member.) + +{{ + csv_table("$dayOfYear, Day of year of simulation, 1 - 365; 1 corresponds to Jan-1. (Note that this is not the day of the simulation unless begDay is Jan-1.)
**Variation:** daily. +$month, Month of year, 1 - 12.
**Variation:** monthly. +$dayOfMonth, Day of month, 1 - 31.
**Variation:** daily. +$hour, Hour of day, 1 - 24, in local time; 1 corresponds to midnight - 1 AM.
**Variation:** hourly. +$hourST, Hour of day, 1 - 24, in standard time; 1 corresponds to midnight - 1 AM.
**Variation:** hourly. +$subhour, Subhour of hour, 1 - N (number of subhours).
**Variation:** subhourly. +$dayOfWeek, Day of week, 1 - 7; 1 corresponds to Sunday, 2 to Monday, etc.
**Variation:** daily. +$DOWH, Day of week 1-7 except 8 on every observed holiday.
**Variation:** daily. +$isHoliday, 1 on days that a holiday is observed (regardless of the true date of the holiday); 0 on other days.
**Variation:** daily. +$isHoliTrue, 1 on days that are the true date of a holiday, otherwise 0.
**Variation:** daily. +$isWeHol, 1 on weekend days or days that are observed as holidays.
**Variation:** daily. +$isWeekend, 1 on Saturday and Sunday, 0 on any day from Monday to Friday.
**Variation:** daily. +$isWeekday, 1 on Monday through Friday, 0 on Saturday and Sunday.
**Variation:** daily. +$isBegWeek, 1 for any day immediately following a weekend day or observed holiday that is neither a weekend day or an observed holiday.
**Variation:** daily. +$isWorkDay, 1 on non-holiday Monday through Friday, 0 on holidays, Saturday and Sunday.
**Variation:** daily. +$isNonWorkDay, 1 on Saturday, Sunday and observed holidays, 0 on non-holiday Monday through Friday.
**Variation:** daily. +$isBegWorkWeek, 1 on the first workday after a non-workday, 0 all other days.
**Variation:** daily. +$isDT, 1 if Daylight Saving time is in effect, 0 otherwise.
**Variation:** hourly. +$autoSizing, 1 during autosizing calculations, 0 during main simulation.
**Variation:** for each phase. +$dsDay, Design day type, 0 during main simulation, 1 during heating autosize, 2 during cool autosize.
**Variation:** daily.") +}} + +**Weather variables**: the following allow access to the current hour's weather conditions in you CSE expressions. Units of measure are shown in parentheses. All have **Variation:** hourly. + +{{ + csv_table("$radBeam, Solar beam irradiance (on a sun-tracking surface) this hour (Btu/ft2) +$radDiff, Solar diffuse irradiance (on horizontal surface) this hour (Btu/ft2) +$tDbO, Outdoor drybulb temperature this hour (degrees F) +$tWbO, Outdoor wetbulb temperature this hour (degrees F) +$wO, Outdoor humidity ratio this hour (lb H2O/lb dry air) +$windDirDeg, Wind direction (compass degrees) +$windSpeed, Wind speed (mph)") +}} + +@nested-dl +### Built-in Functions - && Logical AND a && b yields 1 if both a and b are - non-zero, otherwise 0. && guarantees - left to right evaluation: if the - first operand evaluates to 0, the - second operand is not evaluated and - the result is 0. +Built-in functions perform a number of useful scheduling and conditional operations in expressions. Built-in functions have the combined variation of their arguments; for *hourval*, the minimum result variation is hourly. For definitions of [*numeric*][numeric-any-type] and [*anyType*][numeric-any-type], see [Expression Types][expression-types]. - || Logical OR a || b yields 1 if either a or b is - true (non-0), otherwise 0. || - guarantees left to right evaluation: - if the first operand evaluates to - non-zero, the second operand in not - evaluated and the result is 1. +--- - ? : Conditional a ? b : c yields b if a is true - (non-0), otherwise c. - ------------------------------------------------------------------------ +#### `brkt` -*Dates* are stored as *ints* (the value being the Julian day of the year), so all numeric operators could be used. The month abbreviations are implemented as operators that add the first day of the month to the following *int* value; CSE does not disallow their use in other numeric contexts. +**Function** +: limits a value to be in a given range -For *strings*, *object names*, and *choices*, the CSE input language currently has no operators except the ?: conditional operator. A concatenation operator is being considered. Note, though, that the choose, choose1, select, and hourval functions described below work with strings, object names, and choice values as well as numbers. +**Syntax** +: *numeric* **brkt**( *numeric min, numeric val, numeric max* ) - -### System Variables +**Remark** +: If *val* is less than *min*, returns *min*; if *val* is greater than *max,* returns *max*; if *val* is in between, returns *val*. -*System Variables* are built-in operands with useful values. To avoid confusion with other words, they begin with a \$. Descriptions of the CSE system variables follow. Capitalization shown need not be matched. Most system variables change during a simulation run, resulting in the *variations* shown; they cannot be used where the context will not accept variation at least this fast. (The [Input Data Section][input-data] gives the *variability*, or maximum acceptable variation, for each object member.) +**Example** +: In an AIRHANDLER object, the following statement would specify a supply temperature equal to 130 minus the outdoor air temperature, but not less than 55 nor greater than 80: + + ``` + ahTsSp = brkt(55, 130 - $tDbO, 80); + ``` + + This would produce a 55-degree setpoint in hot weather, an 80-degree setpoint in cold weather, and a transition from 55 to 70 as the outdoor temperature moved from 75 to 50. - ---------------- --------------------------------------------------------- - \$dayOfYear Day of year of simulation, 1 - 365; 1 corresponds to - Jan-1. (Note that this is not the day of the simulation - unless begDay is Jan-1.) **Variation:** daily. +--- - \$month Month of year, 1 - 12. **Variation**: monthly. - \$dayOfMonth Day of month, 1 - 31. **Variation**: daily. +#### `fix` - \$hour Hour of day, 1 - 24, in local time; 1 corresponds to midnight - 1 AM. - **Variation**: hourly. +**Function** +: converts *float* to *int* - \$hourST Hour of day, 1 - 24, in standard time; 1 corresponds to midnight - 1 AM. - **Variation**: hourly. +**Syntax** +: *int* **fix**( *float val* ) - \$subhour Subhour of hour, 1 - N (number of subhours). - **Variation**: subhourly. +**Remark** +: *val* is converted to *int* by truncation. - \$dayOfWeek Day of week, 1 - 7; 1 corresponds to Sunday, 2 to - Monday, etc. **Variation:** daily. +**Examples** +: + ``` + fix(1.3) // 1 + fix(1.99) // 1 + fix(-4.4) // -4 + ``` - \$DOWH Day of week 1-7 except 8 on every observed holiday. - **Variation**: daily. +--- - \$isHoliday 1 on days that a holiday is observed (regardless of the - true date of the holiday); 0 on other days. - **Variation**: daily. +#### `toFloat` - \$isHoliTrue 1 on days that are the true date of a holiday, otherwise - 0. **Variation**: daily. +**Function** +: converts *int* to *float* - \$isWeHol 1 on weekend days or days that are observed as holidays. - **Variation:** daily. +**Syntax** +: *float* **toFloat**( *int val* ) - \$isWeekend 1 on Saturday and Sunday, 0 on any day from Monday to - Friday. **Variation:** daily. +--- - \$isWeekday 1 on Monday through Friday, 0 on Saturday and Sunday. - **Variation:** daily. +#### `min` - \$isBegWeek 1 for any day immediately following a weekend day or - observed holiday that is neither a weekend day or an - observed holiday. **Variation:** daily. +**Function** +: returns the lowest quantity from a list of values. - \$isWorkDay 1 on non-holiday Monday through Friday, 0 on holidays, - Saturday and Sunday. **Variation:** daily. - - \$isNonWorkDay 1 on Saturday, Sunday and observed holidays, 0 on - non-holiday Monday through Friday. **Variation:** - daily. - - \$isBegWorkWeek 1 on the first workday after a non-workday, 0 all - other days. **Variation:** daily. +**Syntax** +: *numeric* **min**( *numeric value1, numeric value2, ...* + *numeric valuen* ) - \$isDT 1 if Daylight Saving time is in effect, 0 otherwise. - **Variation:** hourly. +**Remark** +: there can be any number of arguments separated by commas; + if floats and ints are intermixed, the result is float. - \$autoSizing 1 during autosizing calculations, 0 during main - simulation. **Variation:** for each phase. +--- - \$dsDay Design day type, 0 during main simulation, 1 during - heating autosize, 2 during cool autosize. - **Variation:** daily. - ---------------- --------------------------------------------------------- +#### `max` -**Weather variables**: the following allow access to the current hour's weather conditions in you CSE expressions. Units of measure are shown in parentheses. All have **Variation**: hourly. +**Function** +: returns the highest quantity from a list of values. - ----------------- ------------------------------------------------------ - \$radBeam Solar beam irradiance (on a sun-tracking surface) this hour - (Btu/ft2) +**Syntax** +: *numeric* **max** ( *numeric value1, numeric value2,* ..., *numeric valuen* ) - \$radDiff Solar diffuse irradiance (on horizontal surface) this hour - (Btu/ft2) +--- - \$tDbO Outdoor drybulb temperature this hour (degrees F) +#### `choose` - \$tWbO Outdoor wetbulb temperature this hour (degrees F) +**Function** +: returns the nth value from a list. If *arg0* is 0, *value0* is returned; for 1, *value1* is returned, etc. - \$wO Outdoor humidity ratio this hour (lb H2O/lb dry air) - \$windDirDeg Wind direction (compass degrees) +**Syntax** +: *anyType* **choose** ( *int arg0, anyType value0, anyType* *value1, ... anyType valuen* ) or *anyType* **choose** ( *int arg0, anyType value0, ... anyType* *valuen*, **default** *valueDef*) - \$windSpeed Wind speed (mph) - ----------------- ------------------------------------------------------ -### Built-in Functions +**Remarks** +: Any number of *value* arguments may be given. If **default** and another value is given, this value will be used if *arg0* is less than 0 or too large; otherwise, an error will occur. -Built-in functions perform a number of useful scheduling and conditional operations in expressions. Built-in functions have the combined variation of their arguments; for *hourval*, the minimum result variation is hourly. For definitions of *numeric* and *anyType*, see [Expression Types][expression-types]. +--- -#### brkt +#### `choose1` - -------------- --------------------------------------------------------- - **Function** limits a value to be in a given range +**Function** +: same as choose except *arg0* is 1-based. Choose1 returns the second argument *value1* for *arg0* = 1, the third argument *value2* when *arg0* = 2, etc. - **Syntax** *numeric* **brkt**( *numeric min, numeric val, numeric - max*) +**Syntax** +: *anyType* **choose1** ( *int arg0, anyType value1, anyType* *value2, ... anyType valuen* ) or *anyType* **choose1** ( *int arg0, anyType value1,* ... *anyType valuen,* **default** *valueDef*) - **Remark** If *val* is less than *min*, returns *min*; if *val* is - greater than *max,* returns *max*; if *val* is in - between, returns *val*. +**Remarks** +: **choose1** is a function that is well suited for use with daily system variables. For example, if a user wanted to denote different values for different days of the week, the following use of **choose1** could be implemented: - **Example** In an AIRHANDLER object, the following statement would - specify a supply temperature equal to 130 minus the - outdoor air temperature, but not less than 55 nor greater - than 80: + `tuTC = choose1($dayOfWeek, MonTemp, TueTemp, ...)` -     `ahTsSp = brkt( 55, 130 - $tDbO, 80);` + !!! tip + For hourly data, the **hourval** function would be a better choice, because it doesn't require the explicit declaration of the `$hour` system variable. - This would produce a 55-degree setpoint in hot weather, - an 80-degree setpoint in cold weather, and a transition - from 55 to 70 as the outdoor temperature moved from 75 to - 50. - -------------- --------------------------------------------------------- +--- -#### fix +#### `select` - -------------- --------------------------------------------------------- - **Function** converts *float* to *int* +**Function** +: contains Boolean-value pairs; returns the value associated with the first Boolean that evaluates to true (non-0). - **Syntax** *int* **fix**( *float val* ) +**Syntax** +: *anyType* ( *Boolean arg1, anyType value1, Boolean arg2,* *anyType value2, ...* **default** *anyType*) (the **default** part is optional) - **Remark** *val* is converted to *int* by truncation -- **fix**( - 1.3) and **fix**( 1.99) both return 1. **fix**( -4.4) - returns -4. - -------------- --------------------------------------------------------- +**Remark** +: **select** is a function that simulates if-then logic during simulation (for people familiar with C, it works much like a series of imbedded conditionals: (a?b:(a?b:c)) ). -#### toFloat +**Example** +: `select` can be used to simulate a **dynamic** (run-time) **if-else** **statement**: - -------------- --------------------------------------------------------- - **Function** converts *int* to *float* - **Syntax** *float* **toFloat**( *int val* ) - -------------- --------------------------------------------------------- + gnPower = select( $isHoliday, HD_GAIN, // if ($isHoliday) + default WD_GAIN) // else -#### min + This technique can be combined with other functions to + schedule items on a hourly and daily basis. For example, an + internal gain that has different schedules for holidays, + weekdays, and weekends could be defined as follows: - -------------- --------------------------------------------------------- - **Function** returns the lowest quantity from a list of values. + // 24-hour lighting power schedules for weekend, weekday, holiday: + #define WE_LIGHT hourval( .024, .022, .021, .021, .021, .026, \ +              .038, .059, .056, .060, .059, .046, \ +              .045, .005, .005, .005, .057, .064, \ +              .064, .052, .050, .055, .044, .027 ) - **Syntax** *numeric* **min**( *numeric value1, numeric value2, ...* - *numeric valuen* ) + #define WD_LIGHT hourval( .024, .022, .021, .021, .021, .026, \ +              .038, .059, .056, .060, .059, .046, \ +              .045, .005, .005, .005, .057, .064, \ +              .064, .052, .050, .055, .044, .027 ) - **Remark** there can be any number of arguments separated by commas; - if floats and ints are intermixed, the result is float. - -------------- --------------------------------------------------------- + #define HD_LIGHT hourval( .024, .022, .021, .021, .021, .026, \ +              .038, .059, .056, .060, .059, .046, \ +              .045, .005, .500, .005, .057, .064, \ +              .064, .052, .050, .055, .044, .027 ) -#### max + // set power member of zone's GAIN object for lighting + gnPower = BTU_Elec( ZAREA*0.1 ) * // .1 kW/ft2 times... - -------------- --------------------------------------------------------- - **Function** returns the highest quantity from a list of values. +     select( $isHoliday, HD_LIGHT, // Holidays +         $isWeekend, WE_LIGHT, // Saturday & Sunday +         default WD_LIGHT ); // Week Days - **Syntax** *numeric* **max** ( *numeric value1, numeric value2,* ... - *numeric valuen* ) - -------------- --------------------------------------------------------- + In the above, three subexpressions using **hourval** (next) + are first defined as macros, for ease of reading and later + change. Then, gnPower (the power member of a GAIN object) + is set, using **select** to choose the appropriate one of + the three **hourval** calls for the type of day. The + expression for gnPower is a *live expression* with hourly + variation, that is, CSE will evaluate it an set gnPower to + the latest value each hour of the simulation. The variation + comes from **hourval**, which varies hourly (also, + `$isHoliday` and `$isWeekend` vary daily, but the faster + variation determines the variation of the result). -#### choose +--- - -------------- --------------------------------------------------------- - **Function** returns the nth value from a list. If *arg0* is 0, - *value0* is returned; for 1, *value1* is returned, etc. +#### `hourval` - **Syntax** *anyType* **choose** ( *int arg0, anyType value0, - anyType* *value1, ... anyType valuen* ) or *anyType* - **choose** ( *int arg0, anyType value0, ... anyType* - *valuen*, **default** *valueDef*) +**Function** +: from a list of 24 values, returns the value corresponding to the hour of day. - **Remarks** Any number of *value* arguments may be given. If - **default** and another value is given, this value will - be used if *arg0* is less than 0 or too large; otherwise, - an error will occur. - -------------- --------------------------------------------------------- +**Syntax** +: *anyType hourval ( anyType value1, anyType value2,* …, *anyType value24* ) -#### choose1 + *anyType hourval ( anyType value1, anyType value2*, …, **default** *anyType*) - ------------- ---------------------------------------------------------- - **Function** same as choose except *arg0* is 1-based. Choose1 returns - the second argument *value1* for *arg0* = 1, the third - argument *value2* when *arg0* = 2, etc. +**Remark** +: **hourval** is evaluated at runtime and uses the hour of the day being simulated to choose the corresponding value from the 24 suppplied values. - **Syntax** *anyType* **choose1** ( *int arg0, anyType value1, - anyType* *value2, ... anyType valuen* ) or *anyType* - **choose1** ( *int arg0, anyType value1,* ... *anyType - valuen,* **default** *valueDef*) + If less than 24 *value* arguments are given, **default** and another value (or expression) should be supplied to be used for hours not explicitly specified. - **Remarks** **choose1** is a function that is well suited for use with - daily system variables. For example, if a user wanted to - denote different values for different days of the week, - the following use of **choose1** could be implemented: +**Example** +: see **select**, just above. -     `tuTC = choose1(\$dayOfWeek, MonTemp, TueTemp, ...)` +--- - Note that for hourly data, the **hourval** function would - be a better choice, because it doesn't require the - explicit declaration of the \$hour system variable. - ------------- ---------------------------------------------------------- +#### `abs` -#### select +**Function** +: converts numeric to its absolute value - ------------ ----------------------------------------------------------- - **Function** contains Boolean-value pairs; returns the value associated - with the first Boolean that evaluates to true (non-0). +**Syntax** +: numeric **abs**( numeric val) - **Syntax** *anyType* ( *Boolean arg1, anyType value1, Boolean arg2,* - *anyType value2, ...* **default** *anyType*) (the - **default** part is optional) +--- - **Remark** **select** is a function that simulates if-then logic - during simulation (for people familiar with C, it works - much like a series of imbedded conditionals: (a?b:(a?b:c)) - ). +#### `sqrt` - **Examples** Select can be used to simulate a **dynamic** (run-time) - **if-else** **statement**: +**Function** +: Calculates and returns the positive square root of *val* ( *val* must be $\geq$ 0). - `gnPower = select( $isHoliday, HD_GAIN, // if ($isHoliday) - ` +**Syntax** +: *float* **sqrt** ( *float val*) - `default WD_GAIN) // else` +--- - This technique can be combined with other functions to - schedule items on a hourly and daily basis. For example, an - internal gain that has different schedules for holidays, - weekdays, and weekends could be defined as follows: +#### `exp` - `// 24-hour lighting power schedules for weekend, weekday, - holiday:` +**Function** +: Calculates and returns the exponential of *val* (=e*^val^*) - `#define WE_LIGHT hourval( .024, .022, .021, .021, .021, . - 026, \` +**Syntax** +: *float* **exp**( *float val*) -              `.038, .059, .056, .060, .059, .046, \` +--- -              `.045, .005, .005, .005, .057, .064, \` +#### `logE` -              `.064, .052, .050, .055, .044, .027 )` +**Function** +: Calculates and returns the base e logarithm of *val* ( *val* + must be $\geq$ 0). - `#define WD_LIGHT hourval( .024, .022, .021, .021, .021, . - 026, \` +**Syntax** +: *float* **logE**( *float val*) -              `.038, .059, .056, .060, .059, .046, \` +--- -              `.045, .005, .005, .005, .057, .064, \` +#### `log10` -              `.064, .052, .050, .055, .044, .027 )` +**Function** +: Calculates and returns the base 10 logarithm of *val* ( *val* must be $\geq$ 0). - `#define HD_LIGHT hourval( .024, .022, .021, .021, .021, . - 026, \` +**Syntax** +: *float* **log10**( *float val*) -              `.038, .059, .056, .060, .059, .046, \` +--- -              `.045, .005, .500, .005, .057, .064, \` +#### `sin` -              `.064, .052, .050, .055, .044, .027 )` +**Function** +: Calculates and returns the sine of *val* (val in radians) - `// set power member of zone's GAIN object for lighting` +**Syntax** +: *float* **sin**( *float val*) - `gnPower = BTU_Elec( ZAREA*0.1 ) * // .1 kW/ft2 ti - mes...` +--- -     `select( $isHoliday, HD_LIGHT, // Holidays` +#### `sind` -        `$isWeekend, WE_LIGHT, // Saturday & Sunday` +**Function** +: Calculates and returns the sine of *val* (val in degrees) -        `default WD_LIGHT ); // Week Days` +**Syntax** +: *float* **sind**( *float val*) - In the above, three subexpressions using **hourval** (next) - are first defined as macros, for ease of reading and later - change. Then, gnPower (the power member of a GAIN object) - is set, using **select** to choose the appropriate one of - the three **hourval** calls for the type of day. The - expression for gnPower is a *live expression* with hourly - variation, that is, CSE will evaluate it an set gnPower to - the latest value each hour of the simulation. The variation - comes from **hourval**, which varies hourly (also, - \$isHoliday and \$isWeekend vary daily, but the faster - variation determines the variation of the result). - ------------ ----------------------------------------------------------- +--- -#### hourval +#### `asin` - ------------ ----------------------------------------------------------- - **Function** from a list of 24 values, returns the value corresponding - to the hour of day. +**Function** +: Calculates and returns (in radians) the arcsine of *val* - **Syntax** *anyType hourval ( anyType value1, anyType value2,* … - *anyType value24* ) +**Syntax** +: *float* **asin**( *float val*) - *anyType hourval ( anyType value1, anyType value2*, … - **default** *anyType*) +--- - **Remark** **hourval** is evaluated at runtime and uses the hour of - the day being simulated to choose the corresponding value - from the 24 suppplied values. +#### `asind` - If less than 24 *value* arguments are given, **default** - and another value (or expression) should be supplied to be - used for hours not explicitly specified. +**Function** +: Calculates and returns (in degrees) the arcsine of *val* - **Example** see **select**, just above. - ------------ ----------------------------------------------------------- +**Syntax** +: *float* **asind**( *float val*) -#### abs +--- - ------------ ----------------------------------------------------------- - **Function** converts numeric to its absolute value - **Syntax** numeric **abs**( numeric val) - ------------ ----------------------------------------------------------- +#### `cos` -#### sqrt +**Function** +: Calculates and returns the cosine of *val* (val in radians) - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the positive square root of *val* - ( *val* must be $\geq$ 0). +**Syntax** +: *float* **cos**( *float val*) - **Syntax** *float* **sqrt** ( *float val*) - ------------ ----------------------------------------------------------- +--- -#### exp +#### `cosd` - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the exponential of *val* (= - e*^val^*) +**Function** +: Calculates and returns the cosine of *val* (val in degrees) - **Syntax** *float* **exp**( *float val*) - ------------ ----------------------------------------------------------- +**Syntax** +: *float* **cosd**( *float val*) -#### logE +--- - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the base e logarithm of *val* ( *val* - must be $\geq$ 0). +#### `acos` - **Syntax** *float* **logE**( *float val*) - ------------ ----------------------------------------------------------- +**Function** +: Calculates and returns (in radians) the arccosine of *val* -#### log10 +**Syntax** +: *float* **acos**( *float val*) - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the base 10 logarithm of *val* - ( *val* must be $\geq$ 0). +--- - **Syntax** *float* **log10**( *float val*) - ------------ ----------------------------------------------------------- +#### `acosd` -#### sin +**Function** +: Calculates and returns (in degrees) the arccosine of *val* - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the sine of *val* (val in radians) - **Syntax** *float* **sin**( *float val*) - ------------ ----------------------------------------------------------- +**Syntax** +: *float* **acosd**( *float val*) -#### sind +--- - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the sine of *val* (val in degrees) - **Syntax** *float* **sind**( *float val*) - ------------ ----------------------------------------------------------- +#### `tan` -#### asin +**Function** +: Calculates and returns the tangent of *val* (val in radians) - ------------ ----------------------------------------------------------- - **Function** Calculates and returns (in radians) the arcsine of *val* - **Syntax** *float* **asin**( *float val*) - ------------ ----------------------------------------------------------- +**Syntax** +: *float* **tan**( *float val*) -#### asind +--- - ------------ ----------------------------------------------------------- - **Function** Calculates and returns (in degrees) the arcsine of *val* - **Syntax** *float* **asind**( *float val*) - ------------ ----------------------------------------------------------- +#### `tand` -#### cos +**Function** +: Calculates and returns the tangent of *val* (val in degrees) - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the cosine of *val* (val in radians) - **Syntax** *float* **cos**( *float val*) - ------------ ----------------------------------------------------------- +**Syntax** +: *float* **tand**( *float val*) -#### cosd +--- - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the cosine of *val* (val in degrees) - **Syntax** *float* **cosd**( *float val*) - ------------ ----------------------------------------------------------- +#### `atan` -#### acos +**Function** +: Calculates and returns (in radians) the arctangent of *val* - ------------ ----------------------------------------------------------- - **Function** Calculates and returns (in radians) the arccosine of *val* - **Syntax** *float* **acos**( *float val*) - ------------ ----------------------------------------------------------- +**Syntax** +: *float* **atan**( *float val*) -#### acosd +--- - ------------ ----------------------------------------------------------- - **Function** Calculates and returns (in degrees) the arccosine of *val* - **Syntax** *float* **acosd**( *float val*) - ------------ ----------------------------------------------------------- +#### `atand` -#### tan +**Function** +: Calculates and returns (in degrees) the arctangent of *val* - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the tangent of *val* (val in - radians) +**Syntax** +: *float* **atand**( *float val*) - **Syntax** *float* **tan**( *float val*) - ------------ ----------------------------------------------------------- +--- -#### tand +#### `atan2` - ------------ ----------------------------------------------------------- - **Function** Calculates and returns the tangent of *val* (val in - degrees) +**Function** +: Calculates and returns (in radians) the arctangent of y/x (handling x = 0) - **Syntax** *float* **tand**( *float val*) - ------------ ----------------------------------------------------------- +**Syntax** +: *float* **atan2**( *float y, float x*) -#### atan +--- - ------------ ----------------------------------------------------------- - **Function** Calculates and returns (in radians) the arctangent of *val* - **Syntax** *float* **atan**( *float val*) - ------------ ----------------------------------------------------------- +#### `atan2d` -#### atand +**Function** +: Calculates and returns (in degrees) the arctangent of y/x (handling x = 0) - ------------ ----------------------------------------------------------- - **Function** Calculates and returns (in degrees) the arctangent of *val* - **Syntax** *float* **atand**( *float val*) - ------------ ----------------------------------------------------------- +**Syntax** +: *float* **atan2d**( *float y, float x*) -#### atan2 +--- - ------------ ----------------------------------------------------------- - **Function** Calculates and returns (in radians) the arctangent of y/x - (handling x = 0) +#### `pow` - **Syntax** *float* **atan2**( *float y, float x*) - ------------ ----------------------------------------------------------- +**Function** +: Calculates and returns *val* raised to the *x*th power (=*val*^x^). *val* and *x* cannot both be 0. If *val* < 0, *x* must be integral. -#### atan2d +**Syntax** +: *float* **pow**( *float val, numeric x*) - ------------ ----------------------------------------------------------- - **Function** Calculates and returns (in degrees) the arctangent of y/x - (handling x = 0) +--- - **Syntax** *float* **atan2d**( *float y, float x*) - ------------ ----------------------------------------------------------- +#### `enthalpy` -#### pow +**Function** +: Returns enthalpy of moist air (Btu/lb) for dry bulb temperature (F) and humidity ratio (lb/lb) - ------------ ----------------------------------------------------------- - **Function** Calculates and returns *val* raised to the *x*th power (= - *val*^x^). *val* and *x* cannot both be 0. If *val* < 0, - *x* must be integral. +**Syntax** +: *float* **enthalpy**( *float tDb, float w*) - **Syntax** *float* **pow**( *float val, numeric x*) - ------------ ----------------------------------------------------------- +--- -#### enthalpy +#### `wFromDbWb` - ------------ ----------------------------------------------------------- - **Function** Returns enthalpy of moist air (Btu/lb) for dry bulb - temperature (F) and humidity ratio (lb/lb) +**Function** +: Returns humidity ratio (lb/lb) of moist air from dry bulb and wet bulb temperatures (F) - **Syntax** *float* **enthalpy**( *float tDb, float w*) - ------------ ----------------------------------------------------------- +**Syntax** +: *float* **wFromDbWb**( *float tDb, float tWb*) -#### wFromDbWb +--- - ------------ ----------------------------------------------------------- - **Function** Returns humidity ratio (lb/lb) of moist air from dry bulb - and wet bulb temperatures (F) +#### `wFromDbRh` - **Syntax** *float* **wFromDbWb**( *float tDb, float tWb*) - ------------ ----------------------------------------------------------- +**Function** +: Returns humidity ratio (lb/lb) of moist air from dry bulb temperature (F) and relative humidity (0 – 1) -#### wFromDbRh +**Syntax** +: *float* **wFromDbRh**( *float tDb, float rh*) - ------------ ----------------------------------------------------------- - **Function** Returns humidity ratio (lb/lb) of moist air from dry bulb - temperature (F) and relative humidity (0 – 1) +--- - **Syntax** *float* **wFromDbRh**( *float tDb, float rh*) - ------------ ----------------------------------------------------------- +#### `rhFromDbW` -#### rhFromDbW +**Function** +: Returns relative humidity (0 – 1) of moist air from dry bulb temperature (F) and humidity ratio (lb/lb). - ------------ ----------------------------------------------------------- - **Function** Returns relative humidity (0 – 1) of moist air from dry bulb - temperature (F) and humidity ratio (lb/lb). +**Syntax** +: *float* **rhFromDbW**( *float tDb, float w*) - **Syntax** *float* **rhFromDbW**( *float tDb, float w*) +**Remark** +: The return value is constrained to 0 <= rh <= 1 (that is, physically impossible combinations of tDb and w are silently tolerated). - **Remark** The return value is constrained to 0 <= rh <= 1 - (that is, physically impossible combinations of tDb and w are silently tolerated). - ------------ ----------------------------------------------------------- +--- -#### import +#### `import` - ------------- ---------------------------------------------------------------- - **Function** Returns *float* read from an import file. +**Function** +: Returns *float* read from an import file. - **Syntax** *float* **import**( *string importFile, string colName*)\ - *float* **import**( *string importFile, int colN*) +**Syntax** +: *float* **import**( *string importFile, string colName*)\ + *float* **import**( *string importFile, int colN*) - **Remark** Columns can be referenced by name or 1-based index.\ - See [IMPORTFILE][importfile] for details on use of import() - ------------- --------------------------------------------------------------- +**Remark** +: Columns can be referenced by name or 1-based index. + + See [IMPORTFILE][importfile] for details on use of import() +--- -#### importStr +#### `importStr` - ------------ ----------------------------------------------------------------- - **Function** Returns *string* read from an import file. +**Function** +: Returns *string* read from an import file. - **Syntax** *string* **importStr**( *string importFile, string colName*)\ - *string* **importStr**( *string importFile, int colN*) +**Syntax** +: *string* **importStr**( *string importFile, string colName*)\ + *string* **importStr**( *string importFile, int colN*) - **Remark** See [IMPORTFILE][importfile] for details on use of importStr() - ------------ ----------------------------------------------------------------- +**Remark** +: See [IMPORTFILE][importfile] for details on use of importStr() -#### contin +--- - ------------ ----------------------------------------------------------- - **Function** Returns continuous control value, e.g. for lighting control +#### `contin` - **Syntax** *float* **contin**( *float* mpf, *float* mlf, *float* sp, - *float* val) +**Function** +: Returns continuous control value, e.g. for lighting control - **Remark** **contin** is evaluated at runtime and returns a value in - the range 0 – 1 ??? +**Syntax** +: *float* **contin**( *float* mpf, *float* mlf, *float* sp, *float* val) - **Example** -- - - ------------ ----------------------------------------------------------- +**Remark** +: **contin** is evaluated at runtime and returns a value in the range 0 – 1 ??? -#### stepped + - ------------ ----------------------------------------------------------- - **Function** Returns stepped reverse-acting control value, e.g. for - lighting control +--- - **Syntax** *float* **stepped**( *int* nsteps, *float* sp, *float* val) +#### `stepped` - **Remark** **stepped** is evaluated at runtime and returns a value in - the range 0 – 1. If val <= 0, 1 is returned; if val - >= sp, 0 is returned; otherwise, a stepped intermediate - value is returned (see example) - ------------ ----------------------------------------------------------- +**Function** +: Returns stepped reverse-acting control value, e.g. for lighting control -*example:* +**Syntax** +: *float* **stepped**( *int* nsteps, *float* sp, *float* val) -**stepped**( 3, 12, val) returns +**Remark** +: **stepped** is evaluated at runtime and returns a value in the range 0 – 1. If val <= 0, 1 is returned; if val >= sp, 0 is returned; otherwise, a stepped intermediate value is returned (see example) - *val* *result* - --------------------- ---------- - val $<$ 4 1 - 4 $\leq$ val $<$ 8 .667 - 8 $\leq$ val $<$ 12 .333 - val $\geq$ 12 0 +**Example** +: $$ + \textbf{stepped}(3, 12, \text{val}) = \begin{cases} + 1 & \text{if } \text{val} < 4 \\ + 0.667 & \text{if } 4 \leq \text{val} < 8 \\ + 0.333 & \text{if } 8 \leq \text{val} < 12 \\ + 0 & \text{if } \text{val} \geq 12 + \end{cases} + $$ + + + +--- ### User-defined Functions @@ -1519,7 +1410,7 @@ The tradeoffs between using a user-defined function and a preprocessor macro (`# 3. Type checking: the declared types of the function and its arguments allow CSE to perform additional checks. -Note that while macros require line-splicing ("\\")to extend over one line, functions do not require it: +Note that while macros require line-splicing ("\\") to extend over one line, functions do not require it: // Function returning number of days in ith month of year: DOY FUNCTION MonthLU (integer i) = choose1 ( i , Jan 31, Feb 28, Mar 31, @@ -1536,55 +1427,52 @@ Note that while macros require line-splicing ("\\")to extend over one line, func *Probes* provide a universal means of referencing data within the simulator. Probes permit using the inputtable members of each object, as described in the [Input Data][input-data] Section, as operands in expressions. In addition, most internal members can be probed; we will describe how to find their names shortly. -Three general ways of using probes are: +#### Ways To Use Probes -1. During input, to implement things like "make this window's width equal to 10% of the zone floor area" by using the zone's floor area in an expression: +The three general ways of using probes are: - +1. During input, to implement things like "make this window's width equal to 10% of the zone floor area" by using the zone's floor area in an expression: wnWidth = @zone[1].znArea * 0.1; -Here "`@zone[1].znArea`" is the probe. + Here "`@zone[1].znArea`" is the probe. 2. During simulation. Probing during simulation, to make inputs be functions of conditions in the building or HVAC systems, is limited because most of the members of interest are updated *after* CSE has evaluated the user's expressions for the subhour or other time interval -- this is logically necessary since the expressions are inputs. (An exception is the weather data, but this is also available through system variables such as \$tDbO.) -However, a number of *prior subhour* values are available for probing, making it possible to implement relationships like "the local heat output of this terminal is 1000 Btuh if the zone temperature last subhour was below 65, else 500": + However, a number of *prior subhour* values are available for probing, making it possible to implement relationships like "the local heat output of this terminal is 1000 Btuh if the zone temperature last subhour was below 65, else 500": tuMnLh = @znres["North"].S.prior.tAir < 65 ? 1000 : 500; 3. For output reports, allowing arbitrary data to be reported at subhourly, hourly, daily, monthly, or annual intervals. The REPORT class description describes the user-defined report type (UDT), for which you write the expression for the value to be reported. With probes, you can thus report almost any datum within CSE -- not just those values chosen for reporting when the program was designed. Even values calculated during the current subhour simulation can be probed and reported, because expressions for reports are evaluated after the subhour's calculations are performed. -Examples: - +!!! example colVal = @airHandler["Hot"].ts; // report air handler supply temp colVal = @terminal[NorthHot].cz; // terminal air flow to zone (Btuh/F) +#### General form + The general form of a probe is -    @ *className* \[ *objName* \] . *member* +    @ *className* [ *objName* ] . *member* + -The initial @ is always necessary. And don't miss the period after the \]. +`className` +: is the CLASS being probed -*className* is the CLASS being probed +`objName` +: is the name of the specific object of the class; alternately, a numeric subscript is allowed. Generally, the numbers correspond to the objects in the order created. \[ *objName* \] can be omitted for the TOP class, which has only one member, Top. - ------------ ----------------------------------------------------------- - *objName* is the name of the specific object of the class; - alternately, a numeric subscript is allowed. Generally, the - numbers correspond to the objects in the order created. \[ - *objName* \] can be omitted for the TOP class, which has - only one member, Top. +`member` +: is the name of the particular member being probed. This must be exactly correct. For some inputtable members, the probe name is not the same as the input name given in the [Input Data][input-data] Section, and there are many probe-able members not described in the [Input Data][input-data] section. - *member* is the name of the particular member being probed. This - must be exactly correct. For some inputtable members, the - probe name is not the same as the input name given in the - [Input Data][input-data] Section, and there are many - probe-able members not described in the - [Input Data][input-data] section. - ------------ ----------------------------------------------------------- +!!! tip + The initial `@` is always necessary. And don't miss the period after the `]`. + +#### probes.txt How do you find out what the probe-able member names are? CSE will display the a list of the latest class and member names if invoked with the -p switch. Use the command line - CSE -p >probes.txt + CSE -p > probes.txt to put the displayed information into the file PROBES.TXT, then print the file or examine it with a text editor. @@ -1635,57 +1523,17 @@ surface\[\].sgdist\[\].f\[\]: f\[0\] is winter solar coupling fraction; f\[1\] i At risk of beating the topic to death, we're going to review once more the frequencies with which a CSE value can change (*variations)*, with some comments on the corresponding *variabilities*. - ---------------- ------------------------------------------------------- - subhourly changes in each "subhour" used in simulation. Subhours - are commonly 15-minute intervals for models using - znModel=CNE or 2-minute intervals for CSE znModels. - - hourly changes every simulated hour. The simulated weather and - many other aspects of the simulation change hourly; it - is customary to schedule setpoint changes, HVAC system - operation, etc. in whole hours. - - daily changes at each simulated midnite. - - monthly changes between simulated months. - - monthly-hourly, changes once an hour on the first day of each month; - or "hourly on the 24 hourly values from the first day of the month - first day of are used for the rest of the month. This variation and - each month" variability is used for data dependent on the sun's - position, to save calculation time over computing it - every hour of every day. - - run start time value is derived from other inputs before simulation - begins, then does not change. - - Members that cannot change during the simulation but - which are not needed to derive other values before the - simulation begins have "run start time" *variability*. - - input time value is known before CSE starts to check data and - derive "run start time" values. - - Expressions with "input time" variation may be used in - many members that cannot accept any variation during - the run. Many members documented in the - [Input Data][input-data] Section as having "constant" - variability may actually accept expressions with - "input time" variation; to find out, try it: set the - member to an expression containing a proposed probe - and see if an error message results. - - "Input time" differs from "constant" in that it - includes object names (forward references are allowed, - and resolved just before other data checks) and probes - that are forward references to constant values. - - constant does not vary. But a "constant" member of a class - denoted as R (with no I) in the probes report produced - by CSE -p is actually not available until run start - time. - ---------------- ------------------------------------------------------- - +{{ + csv_table("subhourly, changes in each \"subhour\" used in simulation. Subhours are commonly 15-minute intervals for models using znModel=CNE or 2-minute intervals for CSE znModels. + hourly, changes every simulated hour. The simulated weather and many other aspects of the simulation change hourly; it is customary to schedule setpoint changes, HVAC system operation, etc. in whole hours. + daily, changes at each simulated midnite. + monthly, changes between simulated months. + monthly-hourly, or \"hourly on first day of each month\", changes once an hour on the first day of each month; the 24 hourly values from the first day of the month are used for the rest of the month. This variation and variability is used for data dependent on the sun's position, to save calculation time over computing it every hour of every day. + run start time, value is derived from other inputs before simulation begins, then does not change.
Members that cannot change during the simulation but which are not needed to derive other values before the simulation begins have \"run start time\" *variability*. + input time, value is known before CSE starts to check data and derive \"run start time\" values.
Expressions with \"input time\" variation may be used in many members that cannot accept any variation during the run. Many members documented in the [Input Data][input-data] Section as having \"constant\" variability may actually accept expressions with \"input time\" variation; to find out, try it: set the member to an expression containing a proposed probe and see if an error message results.
\"Input time\" differs from \"constant\" in that it includes object names (forward references are allowed, and resolved just before other data checks) and probes that are forward references to constant values. + constant, does not vary. But a \"constant\" member of a class denoted as R (with no I) in the probes report produced by CSE -p is actually not available until run start time.") +}} + Also there are end-of varieties of all of the above; these are values computed during simulation: end of each hour, end of run, etc. Such values may be reported (using a probe in a UDT report), but will produce an error message if probed in an expression for an input member value. continuous output at that flow regardless of zone temp. *h TEMP_GZ tuTH // air heating set point (F). hourly. default: no tstat-controlled air heating. *h TEMP_GZ tuTC // air cooling set point (F). hourly. default: no tstat-controlled air cooling. - *s *e AFLOW_GEZ - tuVfMn // min flow (cfm actual air); if no setpoints given, this is "specified output". hourly, dlf 0. + *s *e AFLOW_GEZ tuVfMn // min flow (cfm actual air); if no setpoints given, this is "specified output". hourly, dlf 0. *f AFLOW_GEZ tuVfMn_As // .. as autoSized (for constant volume), less variable, for probing. *f AFLOW_GEZ tuVfMn_AsNov // .. raw autoSized value before oversize added, for possible probes. //cnausz.cpp code ASSUMES x, x_As, x_AsNov together for access thru one ptr. cuprobe.cpp's name search also requires together. @@ -6629,8 +6627,8 @@ RECORD TU "terminal" *RAT // TERMINAL *i TI ai // 0 or AH ss (subscript) for air handler serving tu (input as air handler name). RQD if sp or Mn given. - *s *e // *s *e cuz autoSize changes it... inputtable hourly. 7-20-95. - AFLOW_GEZ tuVfMxH // heating max flow (cfm actual air) b4 ah limits, hourly, RQD if TuTH given else disallowed + *s *e AFLOW_GEZ tuVfMxH // *s *e cuz autoSize changes it... inputtable hourly. 7-20-95. + // heating max flow (cfm actual air) b4 ah limits, hourly, RQD if TuTH given else disallowed *f AFLOW_GEZ tuVfMxH_As // .. as determined by autoSizing, less variable, for probing. *f AFLOW_GEZ tuVfMxH_AsNov // .. raw autoSizing result before oversize added, for report/probes. //cnausz.cpp code ASSUMES x, x_As, x_AsNov together for access thru one ptr. cuprobe.cpp's name search also requires together. From 666437c71bbfe16f8e38342e62857d78d37aff60 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Fri, 11 Jul 2025 11:28:21 -0600 Subject: [PATCH 062/117] Delete old comments (e.g., debug print statements). --- doc/src/hooks.py | 10 ++-------- doc/src/main.py | 2 -- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/doc/src/hooks.py b/doc/src/hooks.py index 100366a7b..cc4a03711 100644 --- a/doc/src/hooks.py +++ b/doc/src/hooks.py @@ -302,7 +302,6 @@ def get_resolved_array_length(self, member, record_id): if len(defines) > 0: # added to make debugging easier. for item in defines: if value in item["define"]: - print(f"found value {value} in a defines: {item['define']}") return self.get_array_length_from_define_statement( item["define"], value ) @@ -488,13 +487,8 @@ def write_all_probes(self): def on_config(config, **kwargs): - # definitions = DefinitionsParser(path_to_cndefns).parse() - # fields = FieldsParser(path_to_cnfields).parse() - # cnrecs = RecordsParser(path_to_cnrecs, definitions, fields).parse() - - if True: - # with open(Path(__file__).parent.parent, "rw") - print("write cnrecs for comparison") + # if True: + # # with open(Path(__file__).parent.parent, "rw") docs_dir = Path(__file__).parent / "docs" probes_out_dir = docs_dir / "probe-definitions" diff --git a/doc/src/main.py b/doc/src/main.py index 1770c5e8a..c5820808e 100644 --- a/doc/src/main.py +++ b/doc/src/main.py @@ -35,7 +35,6 @@ def csv_table(csv_string, header=False): ) ) - # print(table) return table @env.macro @@ -81,5 +80,4 @@ def member_table(args): + " |\n" ) - # print(table) return table From defffb2cf8fae22c5dec7f33ffa1b2caa6bddb61 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Fri, 11 Jul 2025 11:30:14 -0600 Subject: [PATCH 063/117] Remove "from hooks" debug string. --- doc/src/hooks.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/doc/src/hooks.py b/doc/src/hooks.py index cc4a03711..c94e2ca06 100644 --- a/doc/src/hooks.py +++ b/doc/src/hooks.py @@ -465,7 +465,7 @@ def get_field_group_table_string( def write_probes_by_record(self, record: Record): - result = ["from-hooks"] + result = [] resolved_field_groups = self.get_field_groups_by_record(record, []) result += [ @@ -487,9 +487,6 @@ def write_all_probes(self): def on_config(config, **kwargs): - # if True: - # # with open(Path(__file__).parent.parent, "rw") - docs_dir = Path(__file__).parent / "docs" probes_out_dir = docs_dir / "probe-definitions" From 538ef1f7520226f03404b8d7716d1d259f757c31 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Fri, 11 Jul 2025 11:31:09 -0600 Subject: [PATCH 064/117] Remove unused dodo.py file. --- doc/dodo.py | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 doc/dodo.py diff --git a/doc/dodo.py b/doc/dodo.py deleted file mode 100644 index 16f49f623..000000000 --- a/doc/dodo.py +++ /dev/null @@ -1,21 +0,0 @@ -# TODO Render Jinja2 templates, then serve or build (or use a Jinja template plugin) - - -def task_get_probes(): - """Run `cse -p` to get all possible probes.""" - - -def render_templates(): - """Render Jinja2 templates into Markdown for use by Mkdocs""" - - -def serve(): - """Serve docs for local development""" - - -def build(): - """Build docs""" - - -def task_test(): - """Run unit tests""" From 35791c7054781b8986e4179d1e5971101a8d96c2 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Fri, 11 Jul 2025 11:32:16 -0600 Subject: [PATCH 065/117] Remove unused doit dependency. --- doc/pyproject.toml | 1 - doc/uv.lock | 49 +--------------------------------------------- 2 files changed, 1 insertion(+), 49 deletions(-) diff --git a/doc/pyproject.toml b/doc/pyproject.toml index 971c146a3..db9ae0927 100644 --- a/doc/pyproject.toml +++ b/doc/pyproject.toml @@ -20,7 +20,6 @@ dependencies = [ [tool.uv] dev-dependencies = [ - "doit", "ruff>=0.9.9", ] diff --git a/doc/uv.lock b/doc/uv.lock index 89d9c3233..9b573bd00 100644 --- a/doc/uv.lock +++ b/doc/uv.lock @@ -101,15 +101,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, ] -[[package]] -name = "cloudpickle" -version = "3.1.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992 }, -] - [[package]] name = "colorama" version = "0.4.6" @@ -135,7 +126,6 @@ dependencies = [ [package.dev-dependencies] dev = [ - { name = "doit" }, { name = "ruff" }, ] @@ -151,23 +141,7 @@ requires-dist = [ ] [package.metadata.requires-dev] -dev = [ - { name = "doit" }, - { name = "ruff", specifier = ">=0.9.9" }, -] - -[[package]] -name = "doit" -version = "0.36.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cloudpickle" }, - { name = "importlib-metadata" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5a/36/66b7dea1bb5688ba0d2d7bc113e9c0d57df697bd3f39ce2a139d9612aeee/doit-0.36.0.tar.gz", hash = "sha256:71d07ccc9514cb22fe59d98999577665eaab57e16f644d04336ae0b4bae234bc", size = 1448096 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/44/83/a2960d2c975836daa629a73995134fd86520c101412578c57da3d2aa71ee/doit-0.36.0-py3-none-any.whl", hash = "sha256:ebc285f6666871b5300091c26eafdff3de968a6bd60ea35dd1e3fc6f2e32479a", size = 85937 }, -] +dev = [{ name = "ruff", specifier = ">=0.9.9" }] [[package]] name = "ghp-import" @@ -199,18 +173,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, ] -[[package]] -name = "importlib-metadata" -version = "8.6.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "zipp" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/33/08/c1395a292bb23fd03bdf572a1357c5a733d3eecbab877641ceacab23db6e/importlib_metadata-8.6.1.tar.gz", hash = "sha256:310b41d755445d74569f993ccfc22838295d9fe005425094fad953d7f15c8580", size = 55767 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/79/9d/0fb148dc4d6fa4a7dd1d8378168d9b4cd8d4560a6fbf6f0121c5fc34eb68/importlib_metadata-8.6.1-py3-none-any.whl", hash = "sha256:02a89390c1e15fdfdc0d7c6b25cb3e62650d0494005c97d6f148bf5b9787525e", size = 26971 }, -] - [[package]] name = "jinja2" version = "3.1.5" @@ -774,12 +736,3 @@ sdist = { url = "https://files.pythonhosted.org/packages/41/ab/b3a52228538ccb983 wheels = [ { url = "https://files.pythonhosted.org/packages/ab/df/4ee467ab39cc1de4b852c212c1ed3becfec2e486a51ac1ce0091f85f38d7/wcmatch-10.0-py3-none-any.whl", hash = "sha256:0dd927072d03c0a6527a20d2e6ad5ba8d0380e60870c383bc533b71744df7b7a", size = 39347 }, ] - -[[package]] -name = "zipp" -version = "3.21.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/50/bad581df71744867e9468ebd0bcd6505de3b275e06f202c2cb016e3ff56f/zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4", size = 24545 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/1a/7e4798e9339adc931158c9d69ecc34f5e6791489d469f5e50ec15e35f458/zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931", size = 9630 }, -] From 18d4201d906990a42f0357ee8ca432c3d7a46f74 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Fri, 11 Jul 2025 11:34:17 -0600 Subject: [PATCH 066/117] Remove unused imports. --- doc/src/parsers/cnrecs.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/doc/src/parsers/cnrecs.py b/doc/src/parsers/cnrecs.py index c03ceec30..6cdf41a63 100644 --- a/doc/src/parsers/cnrecs.py +++ b/doc/src/parsers/cnrecs.py @@ -1,8 +1,7 @@ -import json import re from pathlib import Path -from typing import Literal, List, Set, Dict, TypedDict, Any +from typing import Literal, List, Set, Dict, TypedDict from .base import BaseParser from .cnfields import FieldsResult @@ -45,9 +44,7 @@ class Record(TypedDict, total=False): RECORD_BLOCK_PATTERN = re.compile( - r"^\s*(RECORD)\s+([a-zA-Z_0-9-]+)\s+" - r"(.*?)" - r"^\s*\*END.*?$", + r"^\s*(RECORD)\s+([a-zA-Z_0-9-]+)\s+" r"(.*?)" r"^\s*\*END.*?$", re.MULTILINE | re.DOTALL, ) From 76b6205cdbf67fad85c2ffb50db040d08b0d9766 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Fri, 11 Jul 2025 12:13:15 -0600 Subject: [PATCH 067/117] Add MD meta and probe anchors. --- doc/src/hooks.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/src/hooks.py b/doc/src/hooks.py index c94e2ca06..f0a4563f7 100644 --- a/doc/src/hooks.py +++ b/doc/src/hooks.py @@ -464,8 +464,8 @@ def get_field_group_table_string( return result def write_probes_by_record(self, record: Record): - - result = [] + result = [f"---\ntitle: {record['name']}\n---"] + result += [f"[](){{ #p_{record["name"].lower()} }}"] resolved_field_groups = self.get_field_groups_by_record(record, []) result += [ @@ -474,6 +474,7 @@ def write_probes_by_record(self, record: Record): ] filename = f"{record["name"]}.md" + with open(self.destination_dir / filename, "w") as file: file.write("\n\n".join(result)) From c75e9a20307d627f71fa6e6ba8b6d4849f0a9c64 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 14 Jul 2025 11:19:23 -0600 Subject: [PATCH 068/117] Add record aliases. --- doc/src/hooks.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/doc/src/hooks.py b/doc/src/hooks.py index f0a4563f7..f1b8122c8 100644 --- a/doc/src/hooks.py +++ b/doc/src/hooks.py @@ -24,6 +24,18 @@ class RecordPrefixClass(TypedDict, total=False): path_to_cnfields = Path(__file__).parent.parent.parent / "src" / "CNFIELDS.DEF" path_to_cnrecs = Path(__file__).parent.parent.parent / "src" / "CNRECS.DEF" +# Key: alias; value: record id for an RAT in CNRECS +RECORD_ALIASES = { + "door": "surface", + "window": "surface", + "export": "report", + "exportCol": "reportCol", + "exportFile": "reportFile", + "DHWLoopHeater": "DHWHeater", + "weatherNextHour": "weather", +} + + FOUND_CHOICE_TYPES = set() UNMAPPED_TYPES = set() TYPE_MAP = { @@ -479,7 +491,15 @@ def write_probes_by_record(self, record: Record): file.write("\n\n".join(result)) def write_all_probes(self): - records = self.cnrecs.values() + records = list(self.cnrecs.values()) + + for alias, name in RECORD_ALIASES.items(): + for record in records: + if record["name"] == name: + record_copy = copy.deepcopy(record) + record_copy["name"] = alias + records.append(record_copy) + break for record in filter( lambda r: r["type"] == "RAT" and "hideall" not in r, records From 95eb2ae54c1343a0814457c79ab331bc7c414035 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 14 Jul 2025 11:36:42 -0600 Subject: [PATCH 069/117] Fix buildingAzm link. --- doc/src/docs/input-data/shadex.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/docs/input-data/shadex.md b/doc/src/docs/input-data/shadex.md index 3c3a62c6f..9ff0448a1 100644 --- a/doc/src/docs/input-data/shadex.md +++ b/doc/src/docs/input-data/shadex.md @@ -20,7 +20,7 @@ Name of photovoltaic array. Give after the word SHADEX. Type: choice -Specifies the mounting location of the shade. sxMounting=Site indicates the SHADEX position is fixed and is not modified if the building is rotated. The position of SHADEXs with sxMounting=Building are modified to include the effect of building rotation specified via [Top bldgAz][bldgAzm] +Specifies the mounting location of the shade. sxMounting=Site indicates the SHADEX position is fixed and is not modified if the building is rotated. The position of SHADEXs with sxMounting=Building are modified to include the effect of building rotation specified via [Top bldgAzm][bldgazm] {{ member_table({ From fbea04cc678c8ca89adb291a3c18f98cf80058ca Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 14 Jul 2025 12:36:13 -0600 Subject: [PATCH 070/117] Add line break so the docs parser can understand the grouping. --- src/CNRECS.DEF | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CNRECS.DEF b/src/CNRECS.DEF index b20de65dd..937628d80 100644 --- a/src/CNRECS.DEF +++ b/src/CNRECS.DEF @@ -6868,6 +6868,7 @@ RECORD HEATPLANT "heatPlant" *RAT // heating plant: contains BOILERs, serves HW // autoSizing *s *e FLOAT qPk // peak load re error autosizing overload message *s *e FLOAT qPkAs // peak load on a converged autoSizing design day re error autosizing overload message + //prior values for runtime change-detection *s *e OFFONCH hpModePr *s *e POWER qPr From d5b75dfaa741303cbcf831a5740a18e48fc0ff2e Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 14 Jul 2025 12:51:49 -0600 Subject: [PATCH 071/117] Wrap system variables in code block to avoid two dollar signs on the same line causing a Latex equation to be rendered. Tried escaping with backslashes and using html entity $, but neither of those worked for me. --- doc/src/docs/input-data/holiday.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/docs/input-data/holiday.md b/doc/src/docs/input-data/holiday.md index 72bf5d396..2471cbd66 100644 --- a/doc/src/docs/input-data/holiday.md +++ b/doc/src/docs/input-data/holiday.md @@ -1,6 +1,6 @@ # HOLIDAY -HOLIDAY objects define holidays. Holidays have no inherent effect, but input expressions can test for holidays via the \$DOWH, \$isHoliday, \$isHoliTrue, \$isWeHol, and \$isBegWeek system variables (4.6.4). +HOLIDAY objects define holidays. Holidays have no inherent effect, but input expressions can test for holidays via the `$DOWH`, `$isHoliday`, `$isHoliTrue`, `$isWeHol`, and `$isBegWeek` system variables (4.6.4). Examples and the list of default holidays are given after the member descriptions. From 3aab01257b4d84a1af456c7487047cadbb0d87f6 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 14 Jul 2025 15:18:30 -0600 Subject: [PATCH 072/117] Fix stacked headings in DESCOND. --- doc/src/docs/input-data/descond.md | 6 ++---- doc/src/hooks.py | 7 ++++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/doc/src/docs/input-data/descond.md b/doc/src/docs/input-data/descond.md index 8420d6b1e..c304e7ec4 100644 --- a/doc/src/docs/input-data/descond.md +++ b/doc/src/docs/input-data/descond.md @@ -121,8 +121,7 @@ DESCOND provides two mutually-exclusive methods for specifying design day direct At most one of these methods can be used within a given DESCOND. If all solar-related values are omitted, the generated design day has 0 irradiance for all hours. -**dcTauB=*float*** \ -### dcTauD +### dcTauB, dcTauD Type: float @@ -139,8 +138,7 @@ ASHRAE clear sky model beam and diffuse pseudo optical depths. These values are }} -**dcEbnSlrNoon=*float*** \ -### dcEdhSlrNoon +### dcEbnSlrNoon, dcEdhSlrNoon Type: float diff --git a/doc/src/hooks.py b/doc/src/hooks.py index f1b8122c8..69d1b35c9 100644 --- a/doc/src/hooks.py +++ b/doc/src/hooks.py @@ -551,9 +551,10 @@ def on_config(config, **kwargs): "LIKE": slugify("LIKE clause"), "COPY": slugify("COPY clause"), "USETYPE": slugify("USETYPE clause"), - # TODO: Handling stacked headers? - # "dcTauB": slugify("dcTauB, dcTauD"), - # "dcTauD": slugify("dcTauB, dcTauD"), + "dcTauB": slugify("dcTauB, dcTauD"), + "dcTauD": slugify("dcTauB, dcTauD"), + "dcEbnSlrNoon": slugify("dcEbnSlrNoon, dcEdhSlrNoon"), + "dcEdhSlrNoon": slugify("dcEbnSlrNoon, dcEdhSlrNoon"), } # Walk all docs *.md files to find headings From ea2afa1cc690d60a15041f35e9a5d9d8fdfcb9d9 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 14 Jul 2025 15:33:20 -0600 Subject: [PATCH 073/117] Update more headings from bold to actual MD headings. --- doc/src/docs/input-data/airhandler.md | 52 +++++++++++++++++------ doc/src/docs/input-data/boiler.md | 12 ++++-- doc/src/docs/input-data/chiller.md | 20 ++++++--- doc/src/docs/input-data/dhwsys.md | 8 +++- doc/src/docs/input-data/doas.md | 8 +++- doc/src/docs/input-data/export.md | 4 +- doc/src/docs/input-data/glazetype.md | 4 +- doc/src/docs/input-data/izxfer.md | 4 +- doc/src/docs/input-data/loadmeter.md | 8 +++- doc/src/docs/input-data/meter.md | 8 +++- doc/src/docs/input-data/performancemap.md | 8 +++- doc/src/docs/input-data/pvarray.md | 4 +- doc/src/docs/input-data/rsys.md | 4 +- doc/src/docs/input-data/shadex.md | 4 +- doc/src/docs/input-data/terminal.md | 8 +++- doc/src/docs/input-data/top-members.md | 16 +++++-- doc/src/docs/input-data/towerplant.md | 20 ++++++--- doc/src/shared/dhwheater-doc.md | 8 +++- 18 files changed, 150 insertions(+), 50 deletions(-) diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index a4ba8744e..7b3d0eb6f 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -72,7 +72,9 @@ Fan flow rate multiplier for autosized fan(s). The default value (1.1) specifies ## AIRHANDLER Supply Air Temperature Controller -**ahTsSp=_float or choice_** +### ahTsSp + +Type: _float or choice_ Supply temperature setpoint numeric value OR\* choice of control method (WZ, CZ, RA, ZN, or ZN2): @@ -239,7 +241,9 @@ Heating design supply temperature, for sizing coil vs fan. }) }} -**ahCtu=_terminal name_** +### ahCtu + +Type: _terminal name_ Terminal monitored to determine whether to heat or cool under ZN and ZN2 supply temperature setpoint control. Development aid feature; believe there is no need to give this since ahTsSp = ZN or ZN2 should only be used with one zone. @@ -405,7 +409,9 @@ Fan shaft brake horsepower at design flow and pressure. }) }} -**sfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** +### sfanCurvePy + +Type: $k_0$, $k_1$, $k_2$, $k_3$, $x_0$ $k_0$ through $k_3$ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow $x_0$. Up to five _floats_ may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: @@ -598,7 +604,9 @@ Fan shaft brake horsepower at design flow and pressure. }) }} -**rfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** +### rfanCurvePy + +Type: $k_0$, $k_1$, $k_2$, $k_3$, $x_0$ $k_0$ through $k_3$ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow $x_0$. Up to five _floats_ may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: @@ -787,7 +795,9 @@ Name of meter to accumulate energy use by this heat coil. The input energy used The following input is used only when _ahhcType_ is HW: -**ahhcHeatplant=_Heatplant name_** +### ahhcHeatplant + +Type: _Heatplant name_ Name of HEATPLANT supporting hot water coil. @@ -837,7 +847,9 @@ Rated efficiency (output energy/input energy; 1/ahhcEirR) at full power }) }} -**ahhcPyEi=$k_0$, $k_1$, $k_2$, $k_3$** +### ahhcPyEi + +Type: $k_0$, $k_1$, $k_2$, $k_3$ Coefficients of cubic polynomial function of (subhour average) part-load-ratio (plrAv) to adjust the full-load furnace energy input for part load operation. Enter, separated by commas, in order, the constant part, the coefficient of plrAv, the coefficient of plrAv squared, and the coefficient of plrAv cubed. CSE will normalize the coefficients if necessary to make the polynomial value be 1.0 when the part load ratio is 1.0. @@ -1511,7 +1523,9 @@ where a, b, c, and d are user-inputtable coefficients, $x$ is the variable, and The default values for the polynomial coefficients are the DOE2 PTAC values. -**pydxCaptT=a, b, c, d, e, f** +### pydxCaptT + +Type: a, b, c, d, e, f Coefficients of biquadratic polynomial function of entering air wetbulb and condenser temperatures whose value is used to adjust _ahccCaptRat_ for the actual entering air temperatures. The condenser temperature is the outdoor drybulb, but not less than 70. See discussion in preceding paragraphs. @@ -1525,7 +1539,9 @@ Coefficients of biquadratic polynomial function of entering air wetbulb and cond }) }} -**pydxCaptF=a=a, b, c, d** +### pydxCaptF + +Type: a=a, b, c, d Coefficients of cubic polynomial function of relative flow (entering air cfm/_ahccVfR_) whose value is used to adjust _ahccCaptRat_ for the actual flow. See discussion in preceding paragraphs. @@ -1555,7 +1571,9 @@ Upper limit for value of pydxCaptF. }) }} -**pydxEirT=_a, b, c, d, e, f_** +### pydxEirT + +Type: _a, b, c, d, e, f_ Coefficients of biquadratic polynomial function of entering air wetbulb and condenser temperatures whose value is used to adjust _ahccEirR_ for the actual entering air temperatures. The condenser temperature is the outdoor air drybulb, but not less than 70. If the entering air wetbulb is less than 60, 60 is used, in this function only. See discussion in preceding paragraphs. @@ -1569,7 +1587,9 @@ Coefficients of biquadratic polynomial function of entering air wetbulb and cond }) }} -**pydxEirUl=_a, b, c, d_** +### pydxEirUl + +Type: _a, b, c, d_ Coefficients of cubic polynomial function of part load ratio used to adjust energy input to part load conditions, in the compressor unloading part load region (1 $\ge$ plr $\ge$ _ahccMinUnldPlr_) as described above. See discussion of polynomials in preceding paragraphs. @@ -1872,7 +1892,9 @@ NONINTEGRATED, Coil does not run when economizer is using all outside air: simul TWO_STAGE, Economizer is disabled when coil cycles on. _NOT IMPLEMENTED_ as of July 1992.") }} -**oaLimT=_float_ or _RA_** +### oaLimT + +Type: _float_ or _RA_ Economizer outside air temperature high limit. The economizer is disabled (outside air flow is reduced to a minimum) when the outside air temperature is greater than _oaLimT_. A number may be entered, or "RA" to specify the current Return Air temperature. _OaLimT_ may be scheduled to a low value, for example -99, if desired to disable the economizer at certain times. @@ -1886,7 +1908,9 @@ Economizer outside air temperature high limit. The economizer is disabled (outsi }) }} -**oaLimE=_float_ or _RA_** +### oaLimE + +Type: _float_ or _RA_ Economizer outside air enthalpy high limit. The economizer is disabled (outside air flow is reduced to a minimum) when the outside air enthalpy is greater than _oaLimE_. A number may be entered, or "RA" to specify the current Return Air enthalpy. _OaLimE_ may be scheduled to a low value, for example -99, if desired to disable the economizer at certain times. @@ -2342,7 +2366,9 @@ For _cchCM_ = TSTAT, in subhours when compressor does not run, the crankcase hea }) }} -**cchMtr=_name of a METER_** +### cchMtr + +Type: _name of a METER_ METER to record crankcase heater energy use, category "Aux"; not recorded if not given. diff --git a/doc/src/docs/input-data/boiler.md b/doc/src/docs/input-data/boiler.md index a8845f0e3..fa8487330 100644 --- a/doc/src/docs/input-data/boiler.md +++ b/doc/src/docs/input-data/boiler.md @@ -66,7 +66,9 @@ Boiler Energy Input Ratio: alternate method of specifying efficiency. }) }} -**blrPyEi=*a, b, c, d*** +### blrPyEi + +Type: *a, b, c, d* Coefficients of cubic polynomial function of part load ratio (load/capacity) to adjust full-load energy input for part load operation. Up to four floats may be given, separated by commas, lowest order (i.e. constant term) coefficient first. If the given coefficients result in a polynomial whose value is not 1.0 when the input variable, part load ratio, is 1.0, a warning message will be printed and the coefficients will be normalized to produce value 1.0 at input 1.0. @@ -80,7 +82,9 @@ Coefficients of cubic polynomial function of part load ratio (load/capacity) to }) }} -**blrMtr=*name of a METER*** +### blrMtr + +Type: *name of a METER* Meter to which Boiler's input energy is accumulated; if omitted, input energy is not recorded. @@ -160,7 +164,9 @@ Boiler pump hydraulic efficiency }) }} -**blrpMtr=*name of a METER*** +### blrpMtr + +Type: *name of a METER* Meter to which pump electrical input energy is accumulated. If omitted, pump input energy use is not recorded. diff --git a/doc/src/docs/input-data/chiller.md b/doc/src/docs/input-data/chiller.md index 8f395d85a..8b62df479 100644 --- a/doc/src/docs/input-data/chiller.md +++ b/doc/src/docs/input-data/chiller.md @@ -68,7 +68,9 @@ Design condenser temperature: temperature of secondary water entering chiller co }) }} -**chPyCapT=*a, b, c, d, e, f*** +### chPyCapT + +Type: *a, b, c, d, e, f* Coefficients of bi-quadratic polynomial function of supply (ts) and condenser (tcnd) temperatures that specifies how capacity varies with these temperatures. This polynomial is of the form @@ -120,7 +122,9 @@ Alternate input for COP: Full-load Energy Input Ratio (electrical input energy d }) }} -**chPyEirT=*a, b, c, d, e, f*** +### chPyEirT + +Type: *a, b, c, d, e, f* Coefficients of bi-quadratic polynomial function of supply (ts) and condenser (tcnd) temperatures that specifies how energy input varies with these temperatures. This polynomial is of the form @@ -153,7 +157,9 @@ cycling region, *chMinFsldPlr* > plr $\\ge$ 0 These plr regions are similar to those for a DX coil & compressor in an AIRHANDLER, Section 0. -**chPyEirUl=*a, b, c, d*** +### chPyEirUl + +Type: *a, b, c, d* Coefficients of cubic polynomial function of part load ratio (plr) that specifies how energy input varies with plr in the compressor unloading region (see above). This polynomial is of the form @@ -319,7 +325,9 @@ Chiller primary pump maximum overrun: factor by which flow demanded by coils can }) }} -**chppMtr=*name of a METER*** +### chppMtr + +Type: *name of a METER* Meter to which primary pump electrical input energy is accumulated. If omitted, pump input energy use is not recorded. @@ -401,7 +409,9 @@ Chiller condenser pump hydraulic efficiency }) }} -**chcpMtr=*name of a METER*** +### chcpMtr + +Type: *name of a METER* Meter to which condenser pump electrical input energy is accumulated. If omitted, pump input energy use is not recorded. diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index 8c1647844..743d4a34c 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -992,7 +992,9 @@ Name of METER object, if any, to which DHWSYS electrical energy use is recorded }) }} -**wsFuelMtr =*mtrName*** +### wsFuelMtr + +Type: *mtrName* Name of METER object, if any, to which DHWSYS fuel energy use is recorded (under end use DHW). DHWSYS fuel use is usually (always?) 0, so the primary use of this input is to specify the default whFuelMtr choice for DHWHEATERs in this DHWSYS. @@ -1022,7 +1024,9 @@ Name of DHWMETER object, if any, to which hot water quantities (at water heater) }) }} -**wsFXhwMtr =*dhwmtrName*** +### wsFXhwMtr + +Type: *dhwmtrName* Name of DHWMETER object, if any, to which mixed hot water use (at fixture) quantities are recorded by hot water end use. DHWDAYUSE and wsUse input can be verified using DHWMETER results. diff --git a/doc/src/docs/input-data/doas.md b/doc/src/docs/input-data/doas.md index 21ccbd056..3b2c8c30e 100644 --- a/doc/src/docs/input-data/doas.md +++ b/doc/src/docs/input-data/doas.md @@ -91,7 +91,9 @@ Fan shaft brake horsepower at design flow and pressure. }) }} -**oaSupFanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** +### oaSupFanCurvePy + +Type: $k_0$, $k_1$, $k_2$, $k_3$, $x_0$ $k_0$ through $k_3$ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow $x_0$. Up to five *floats* may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: @@ -268,7 +270,9 @@ Fan shaft brake horsepower at design flow and pressure. }) }} -**oaExhFanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** +### oaExhFanCurvePy + +Type: $k_0$, $k_1$, $k_2$, $k_3$, $x_0$ $k_0$ through $k_3$ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow $x_0$. Up to five *floats* may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: diff --git a/doc/src/docs/input-data/export.md b/doc/src/docs/input-data/export.md index f19a4afd7..c8b19b719 100644 --- a/doc/src/docs/input-data/export.md +++ b/doc/src/docs/input-data/export.md @@ -184,7 +184,9 @@ Air flow meter report. }) }} -**exAh=ah*Name*** +### exAh + +Type: ah*Name* Specifies air handler(s) to be exported, for *exType*=AH. diff --git a/doc/src/docs/input-data/glazetype.md b/doc/src/docs/input-data/glazetype.md index 375278dd1..3bea3a416 100644 --- a/doc/src/docs/input-data/glazetype.md +++ b/doc/src/docs/input-data/glazetype.md @@ -134,7 +134,9 @@ Framing multiplier used if none given in window, for example .9 if frame and mul }) }} -**gtPySHGC =*float*** +### gtPySHGC + +Type: *float* Four float values separated by commas. Coefficients for incidence angle SHGC multiplier polynomial applied to gtSHGC to determine beam transmissivity at angles of incidence other than 90 degrees. The values are coefficients for first through fourth powers of the cosine of the incidence angle; there is no constant part. An error message will be issued if the coefficients do not add to one. They are used in the following computation: diff --git a/doc/src/docs/input-data/izxfer.md b/doc/src/docs/input-data/izxfer.md index d86c20bda..546038fe8 100644 --- a/doc/src/docs/input-data/izxfer.md +++ b/doc/src/docs/input-data/izxfer.md @@ -605,7 +605,9 @@ Fan shaft brake horsepower at design flow and pressure. }) }} -**izfanCurvePy=$k_0$, $k_1$, $k_2$, $k_3$, $x_0$** +### izfanCurvePy + +Type: $k_0$, $k_1$, $k_2$, $k_3$, $x_0$ $k_0$ through $k_3$ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow $x_0$. Up to five *floats* may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: diff --git a/doc/src/docs/input-data/loadmeter.md b/doc/src/docs/input-data/loadmeter.md index 9a283cdc1..575f4fce2 100644 --- a/doc/src/docs/input-data/loadmeter.md +++ b/doc/src/docs/input-data/loadmeter.md @@ -26,7 +26,9 @@ Name of LOADMETER: required for assigning to ZONEs and RSYSs. }) }} -**lmtSubmeters=*list of up to 50 LOADMETERs*** +### lmtSubmeters + +Type: *list of up to 50 LOADMETERs* A comma-separate list of LOADMETERs that are accumulated into this LOADMETER with optional multipliers (see lmtSubmeterMults). Submeters facilitate flexible categorization of loads results. In addition, use of lmtSubmeterMults allows load results from a representative model to be scaled and included in overall results. For example, a typical zone could be used to represent 5 similar spaces. The loads calculated for the typical zone could be assigned to a dedicated LOADMETER and that LOADMETER accumulated to a main LOADMETER with a multiplier of 5. Rules -- @@ -44,7 +46,9 @@ A comma-separate list of LOADMETERs that are accumulated into this LOADMETER wit }) }} -**lmtSubmeterMults=*list of up to 50 floats*** +### lmtSubmeterMults + +Type: *list of up to 50 floats* Submeter multipliers. diff --git a/doc/src/docs/input-data/meter.md b/doc/src/docs/input-data/meter.md index 4631c5507..50fa6f5bb 100644 --- a/doc/src/docs/input-data/meter.md +++ b/doc/src/docs/input-data/meter.md @@ -73,7 +73,9 @@ Cost of energy use per Btu. }) }} -**mtrSubmeters=*list of up to 50 METERs*** +### mtrSubmeters + +Type: *list of up to 50 METERs* A comma-separate list of METERs that are accumulated into this METER with optional multipliers (see mtrSubmeterMults). Submeters facilitate flexible categorization of energy results. In addition, use of mtrSubmeterMults allows energy results from a representative model to be scaled and included in overall results. For example, a typical zone could be used to represent 5 similar spaces. The energy uses of the typical zone could be assigned to a dedicated METER that is accumulated to a main METER with a multiplier of 5. Rules -- @@ -91,7 +93,9 @@ A comma-separate list of METERs that are accumulated into this METER with option }) }} -**mtrSubmeterMults=*list of up to 50 floats*** +### mtrSubmeterMults + +Type: *list of up to 50 floats* Submeter multipliers. Use cases for multipliers include -- diff --git a/doc/src/docs/input-data/performancemap.md b/doc/src/docs/input-data/performancemap.md index 0dacd4b1b..0399bd7d3 100644 --- a/doc/src/docs/input-data/performancemap.md +++ b/doc/src/docs/input-data/performancemap.md @@ -95,7 +95,9 @@ Documents the dimension of the axis, for example "OutdoorDBT", "Speed", or "AirF }) }} -**pmGXValues=*float array*** +### pmGXValues + +Type: *float array* 1 to 10 comma-separated values specifying the data points of this axis. Must be in strictly ascending order. @@ -173,7 +175,9 @@ Documents the current lookup value, e.g. "COP" or "CapacityRatio". }) }} -**pmLUValues=*float array*** +### pmLUValues + +Type: *float array* Comma-separated values specifying the lookup data. The number of values required is the product of the size of all PMGRIDAXISs in the current PEFORMANCEMAP. In the example above, there are 4 OutdoorDBTs and 3 speeds, so 12 values must be provided. diff --git a/doc/src/docs/input-data/pvarray.md b/doc/src/docs/input-data/pvarray.md index 52d01c82a..c6d024de6 100644 --- a/doc/src/docs/input-data/pvarray.md +++ b/doc/src/docs/input-data/pvarray.md @@ -180,7 +180,9 @@ Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the }) }} -**pvVertices=*list of up to 36 floats*** +### pvVertices + +Type: *list of up to 36 floats* Vertices of an optional polygon representing the position and shape of the photovoltaic array. The polygon is used to calculate the shaded fraction using an advanced shading model. Only PVARRAYs and [SHADEXs][shadex] are considered in the advanced shading model -- PVARRAYs can be shaded by SHADEXs or other PVARRAYs. If pvVertices is omitted, the PVARRAY is assumed to be unshaded at all times. Advanced shading must be enabled via [TOP exShadeModel][top-model-control-items]. Note that the polygon is used only for evaluating shading; array capacity is specified by pvDCSysSize (above). diff --git a/doc/src/docs/input-data/rsys.md b/doc/src/docs/input-data/rsys.md index 263052030..8a0c11437 100644 --- a/doc/src/docs/input-data/rsys.md +++ b/doc/src/docs/input-data/rsys.md @@ -170,7 +170,9 @@ Name of METER object, if any, by which system’s electrical energy use is recor }) }} -**rsFuelMtr =*mtrName*** +### rsFuelMtr + +Type: *mtrName* Name of METER object, if any, by which system’s fuel energy use is recorded (under appropriate end uses). diff --git a/doc/src/docs/input-data/shadex.md b/doc/src/docs/input-data/shadex.md index 9ff0448a1..b83f7eaf8 100644 --- a/doc/src/docs/input-data/shadex.md +++ b/doc/src/docs/input-data/shadex.md @@ -32,7 +32,9 @@ Specifies the mounting location of the shade. sxMounting=Site indicates the SHA }) }} -**sxVertices=*list of up to 36 floats*** +### sxVertices + +Type: *list of up to 36 floats* Vertices of a polygon representing the shape of the shading object. diff --git a/doc/src/docs/input-data/terminal.md b/doc/src/docs/input-data/terminal.md index 07a906656..8af96072a 100644 --- a/doc/src/docs/input-data/terminal.md +++ b/doc/src/docs/input-data/terminal.md @@ -430,7 +430,9 @@ Name of meter, if any, which accumulates input energy for this coil. End use cat }) }} -**tuhcHeatplant=heat*plantName*** +### tuhcHeatplant + +Type: heat*plantName* Name of HEATPLANT for HW coil; disallowed for other coil types. @@ -562,7 +564,9 @@ Terminal fan/motor/drive combined efficiency. }) }} -**tfanCurvePy=*k0, k1, k2, k3, x0*** +### tfanCurvePy + +Type: *k0, k1, k2, k3, x0* *k0* through *k3* are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow *x0*. Up to five *floats* may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: diff --git a/doc/src/docs/input-data/top-members.md b/doc/src/docs/input-data/top-members.md index 1f83727b4..d821bea90 100644 --- a/doc/src/docs/input-data/top-members.md +++ b/doc/src/docs/input-data/top-members.md @@ -72,7 +72,9 @@ Note that "warm-up" days (see wuDays) occur before the start day specified by be }) }} -**workDayMask=*int* TODO** +### workDayMask + +Type: *int* TODO {{ member_table({ @@ -1329,7 +1331,9 @@ CSE provides 3 mutually-exclusive methods for specifying cooling design conditio - Design days (from weather file). One or more dates are specified. Actual days from the weather file are simulated. - Monthly design data. Deprecated method using conditions found in ET1 format weather files. -**coolDsCond=*list of up to 12 DESCONDs*** +### coolDsCond + +Type: *list of up to 12 DESCONDs* Specifies cooling design conditions for cooling autosizing. A comma-separated list of up to 12 DESCOND names can be provided. Each day will be simulated repeatedly using weather conditions generated from DESCOND values. @@ -1343,7 +1347,9 @@ Specifies cooling design conditions for cooling autosizing. A comma-separated l }) }} -**coolDsDay=*list of up to 12 days*** +### coolDsDay + +Type: *list of up to 12 days* Specifies cooling design days for cooling autosizing. Each day will be simulated repeatedly using weather file conditions for that day. @@ -1357,7 +1363,9 @@ Specifies cooling design days for cooling autosizing. Each day will be simulate }) }} -**coolDsMo=*list of up to 12 months*** +### coolDsMo + +Type: *list of up to 12 months* Deprecated method for specifying design days for cooling autosizing. Design conditions are taken from ET1 weather file header, however, the limited availale ET1 files do not contain design condition information. diff --git a/doc/src/docs/input-data/towerplant.md b/doc/src/docs/input-data/towerplant.md index 37759ec86..811e7fea3 100644 --- a/doc/src/docs/input-data/towerplant.md +++ b/doc/src/docs/input-data/towerplant.md @@ -41,7 +41,9 @@ Setpoint temperature for water leaving towers. }) }} -**tpMtr=*name of a METER*** +### tpMtr + +Type: *name of a METER* METER object by which TOWERPLANT's fan input energy is to be recorded, in category "Aux". If omitted, energy use is not recorded, and thus cannot be reported. Towerplants have no modeled input energy other than for their fans (the heat rejection pumps are part of the CHILLER and HPLOOP objects). @@ -174,7 +176,9 @@ where *p* is the power consumption as a fraction of full speed power consumption For each linear polynomial, two *float* expressions are given, separated by a comma. The first expression is the constant, *a*. The second expression is the coefficient of the average speed, *b*. Except for *ctFcLo*, *a* and *b* should add up to 1, to make the relative power consumption 1 when *spd* is 1; otherwise, CSE will issue a warning message and normalize them. -**ctFcOne=*a, b*** +### ctFcOne + +Type: *a, b* Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for ONESPEED fan. For the one-speed case, the relative average speed *spd* is the fraction of the time the fan is on. @@ -188,7 +192,9 @@ Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{s }) }} -**ctFcLo=*a, b*** +### ctFcLo + +Type: *a, b* Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for low speed of TWOSPEED fan, when *spd* $\le$ *ctLoSpd*. @@ -202,7 +208,9 @@ Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{s }) }} -**ctFcHi=*a, b*** +### ctFcHi + +Type: *a, b* Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for high speed of TWOSPEED fan, when *spd* > *ctLoSpd*. @@ -216,7 +224,9 @@ Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{s }) }} -**ctFcVar=*a, b, c, d*** +### ctFcVar + +Type: *a, b, c, d* For VARIABLE speed fan, four *float* values for coefficients of cubic fan power consumption polynomial of the form $p = a + b \cdot \text{spd} + c \cdot \text{spd}^2 + d \cdot \text{spd}^3$. diff --git a/doc/src/shared/dhwheater-doc.md b/doc/src/shared/dhwheater-doc.md index 4b244d2cc..d294150e9 100644 --- a/doc/src/shared/dhwheater-doc.md +++ b/doc/src/shared/dhwheater-doc.md @@ -727,7 +727,9 @@ Specifies the whElecMtr end use, if any, to which extra backup energy is accumul }) }} -**whFuelMtr =*mtrName*** +### whFuelMtr + +Type: *mtrName* Name of METER object, if any, by which DHWHEATER fuel energy use is recorded (under end use DHW). @@ -741,7 +743,9 @@ Name of METER object, if any, by which DHWHEATER fuel energy use is recorded (un }) }} -**whTankTInit =*comma-separated list of 12 floats*** +### whTankTInit + +Type: *comma-separated list of 12 floats* A list of 12 initial values for HPWH tank model layer temperatures, in bottom-to-top order. If given, these values are used to initialize tank layer temperatures at the beginning of the warmup period. Initialization is not repeated at the beginning of the main simulation. From a452009853b67414902127baa547c5e2946a5a2f Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 14 Jul 2025 15:47:05 -0600 Subject: [PATCH 074/117] Fix misc files with stacked headings. --- doc/src/docs/input-data/airhandler.md | 4 +-- doc/src/docs/input-data/chiller.md | 12 ++------- doc/src/docs/input-data/rsys.md | 12 ++++----- doc/src/docs/input-data/surface.md | 14 +--------- doc/src/hooks.py | 38 +++++++++++++++++++++++++++ 5 files changed, 49 insertions(+), 31 deletions(-) diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index 7b3d0eb6f..c7777517a 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -183,9 +183,9 @@ Maximum supply temperature. Also used as heating supply temperature setpoint val -**ahWzCzns=_zone names_ or _ALL_ or _ALL_BUT zone names_** +### ahWzCzns, ahCzCzns -**ahCzCzns=_zone names_ or _ALL_ or _ALL_BUT zone names_** +Type: _zone names_ or _ALL_ or _ALL_BUT zone names_** Specify zones monitored to determine supply temperature setpoint value (control zones), under _ahTsSp_=WZ and CZ respectively. diff --git a/doc/src/docs/input-data/chiller.md b/doc/src/docs/input-data/chiller.md index 8b62df479..13cbbe220 100644 --- a/doc/src/docs/input-data/chiller.md +++ b/doc/src/docs/input-data/chiller.md @@ -463,17 +463,9 @@ Auxiliary power used in full value if chiller is on for any fraction of subhour. The following four allow specification of meters to record chiller auxiliary energy use through chAuxOn, chAuxOff, chFullOff, and chAuxOnAtAll, respectively. End use category "Aux" is used. -### chAuxOnMtr +### chAuxOnMtr, chAuxOffMtr, chAuxFullOffMtr, chAuxOnAtAllMtr -Type: mtrName - -**chAuxOffMtr=*mtrName*** - -### chAuxFullOffMtr - -Type: mtrName - -**chAuxOnAtAllMtr=*mtrName*** +Type: *mtrName* {{ member_table({ diff --git a/doc/src/docs/input-data/rsys.md b/doc/src/docs/input-data/rsys.md index 8a0c11437..63e35cb2e 100644 --- a/doc/src/docs/input-data/rsys.md +++ b/doc/src/docs/input-data/rsys.md @@ -186,9 +186,9 @@ Name of METER object, if any, by which system’s fuel energy use is recorded (u }) }} -**rsLoadMtr =*ldMtrName***\ -**rsHtgLoadMtr =*ldMtrName***\ -**rsClgLoadMtr =*ldMtrName*** +### rsLoadMtr, rsHtgLoadMtr, rsClgLoadMtr + +Type: *ldMtrName* Names of LOADMETER objects, if any, to which the system’s heating and/or cooling loads are recorded. Loads are the gross heating and cooling energy added to (or removed from) the air stream. Fan heat, auxiliary heat, and duct losses are not included in loads values. @@ -206,9 +206,9 @@ rsLoadMtr should not specify the same LOADMETER as rsHtgLoadMtr or rsClgLoadMtr }) }} -**rsSrcSideLoadMtr=*ldMtrName***\ -**rsHtgSrcSideLoadMtr =*ldMtrName***\ -**rsClgSrcSideLoadMtr =*ldMtrName*** +### rsSrcSideLoadMtr, rsHtgSrcSideLoadMtr, rsClgSrcSideLoadMtr + +Type: *ldMtrName* Name of LOADMETER objects, if any, to which the system’s source-side heat transfers are recorded. For DX systems, this is the outdoor coil heat transfer. For other types, source-side values are the same as the indoor coil loads reported via rsLoadMtr. diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index 0fc0053fa..9de61676a 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -548,19 +548,7 @@ Depth below grade of surface. For walls, sfDepthBG is measured to the lower edg *Note: The following data members are part of the simple ground model, which is no longer supported. Use sfFnd instead.* -### sfExCTGrnd - -Type: float - -**sfExCTaDbAvg07=*float*** - -### sfExCTaDbAvg14 - -Type: float - -**sfExCTaDbAvg31=*float*** - -### sfExCTaDbAvgYr +### sfExCTGrnd, sfExCTaDbAvg07, sfExCTaDbAvg14, sfExCTaDbAvg31, sfExCTaDbAvgYr Type: float diff --git a/doc/src/hooks.py b/doc/src/hooks.py index 69d1b35c9..c32c2ac11 100644 --- a/doc/src/hooks.py +++ b/doc/src/hooks.py @@ -551,10 +551,48 @@ def on_config(config, **kwargs): "LIKE": slugify("LIKE clause"), "COPY": slugify("COPY clause"), "USETYPE": slugify("USETYPE clause"), + # Stacked headers "dcTauB": slugify("dcTauB, dcTauD"), "dcTauD": slugify("dcTauB, dcTauD"), "dcEbnSlrNoon": slugify("dcEbnSlrNoon, dcEdhSlrNoon"), "dcEdhSlrNoon": slugify("dcEbnSlrNoon, dcEdhSlrNoon"), + "ahWzCzns": slugify("ahWzCzns, ahCzCzns"), + "ahCzCzns": slugify("ahWzCzns, ahCzCzns"), + "chAuxOnMtr": slugify("chAuxOnMtr, chAuxOffMtr, chAuxFullOffMtr, chAuxOnAtAllMtr"), + "chAuxOffMtr": slugify("chAuxOnMtr, chAuxOffMtr, chAuxFullOffMtr, chAuxOnAtAllMtr"), + "chAuxFullOffMtr": slugify( + "chAuxOnMtr, chAuxOffMtr, chAuxFullOffMtr, chAuxOnAtAllMtr" + ), + "chAuxOnAtAllMtr": slugify( + "chAuxOnMtr, chAuxOffMtr, chAuxFullOffMtr, chAuxOnAtAllMtr" + ), + "rsLoadMtr": slugify("rsLoadMtr, rsHtgLoadMtr, rsClgLoadMtr"), + "rsHtgLoadMtr": slugify("rsLoadMtr, rsHtgLoadMtr, rsClgLoadMtr"), + "rsClgLoadMtr": slugify("rsLoadMtr, rsHtgLoadMtr, rsClgLoadMtr"), + "rsSrcSideLoadMtr": slugify( + "rsSrcSideLoadMtr, rsHtgSrcSideLoadMtr, rsClgSrcSideLoadMtr" + ), + "rsHtgSrcSideLoadMtr": slugify( + "rsSrcSideLoadMtr, rsHtgSrcSideLoadMtr, rsClgSrcSideLoadMtr" + ), + "rsClgSrcSideLoadMtr": slugify( + "rsSrcSideLoadMtr, rsHtgSrcSideLoadMtr, rsClgSrcSideLoadMtr" + ), + "sfExCTGrnd": slugify( + "sfExCTGrnd, sfExCTaDbAvg07, sfExCTaDbAvg14, sfExCTaDbAvg31, sfExCTaDbAvgYr" + ), + "sfExCTaDbAvg07": slugify( + "sfExCTGrnd, sfExCTaDbAvg07, sfExCTaDbAvg14, sfExCTaDbAvg31, sfExCTaDbAvgYr" + ), + "sfExCTaDbAvg14": slugify( + "sfExCTGrnd, sfExCTaDbAvg07, sfExCTaDbAvg14, sfExCTaDbAvg31, sfExCTaDbAvgYr" + ), + "sfExCTaDbAvg31": slugify( + "sfExCTGrnd, sfExCTaDbAvg07, sfExCTaDbAvg14, sfExCTaDbAvg31, sfExCTaDbAvgYr" + ), + "sfExCTaDbAvgYr": slugify( + "sfExCTGrnd, sfExCTaDbAvg07, sfExCTaDbAvg14, sfExCTaDbAvg31, sfExCTaDbAvgYr" + ), } # Walk all docs *.md files to find headings From f289e0d5e4b9e0be02a581bc5026c1b8f37324d2 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 15 Jul 2025 12:45:33 -0600 Subject: [PATCH 075/117] Add captions to images. --- doc/src/docs/input-data/airhandler.md | 5 ++++- doc/src/docs/input-data/fndblock.md | 9 +++++++++ doc/src/docs/input-data/foundation.md | 6 ++++++ doc/src/docs/input-data/terminal.md | 5 ++++- doc/src/mkdocs.yml | 1 + 5 files changed, 24 insertions(+), 2 deletions(-) diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index c7777517a..915641d6c 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -2,7 +2,10 @@ AIRHANDLER defines a central air handling system, containing a fan or fans, optional heating and cooling coils, and optional outside air intake and exhaust. AIRHANDLERs are subobjects of TOP, and deliver air to one or more ZONEs through TERMINAL(s). AIRHANDLER objects can be used to model fan ventilation and forced air heating and cooling. Dual duct systems are modeled with two AIRHANDLERs (one for hot air and one for cool air) and two TERMINALs in each zone. Figure 2 shows…. \[need a sentence that explains the figure.\] -![Insert Figure Title](../assets/images/image1.png) +![Air handler diagram](../assets/images/image1.png) +/// caption +Air handler diagram +/// AIRHANDLER is designed primarily to model a central system that supplies hot or cold air at a centrally determined temperature (the "Supply Temperature Setpoint") to Variable Air Volume (VAV) terminals in the zones. Some additional variations are also supported: diff --git a/doc/src/docs/input-data/fndblock.md b/doc/src/docs/input-data/fndblock.md index 5b5712225..ab2f9c3a5 100644 --- a/doc/src/docs/input-data/fndblock.md +++ b/doc/src/docs/input-data/fndblock.md @@ -13,16 +13,25 @@ Each block is represented as a rectangle in the domain by specifying the X (late Each corner point of a FNDBLOCK is defined relative to its reference point. The user may specify reference points to simplify the calculation of corner point coordinates. X and Z point values of zero imply that a point is the same as the reference point. The default for X and Z point values is zero since points will often align with one or both of the reference values. Options for X and Z references are illustrated in the figure below. ![Foundation block reference choices](../assets/images/fd_refs.png) +/// caption +Foundation block reference choices +/// The default X and Z references for the first corner point is WALLINT and WALLTOP, respectively. The second set of references default to the same reference as the first point. An example of defining FNDBLOCKs for a basement are shown below. ![Foundation block example for a basement with partial wall insulation](../assets/images/fd_block_basement.png) +/// caption +Foundation block example for a basement with partial wall insulation +/// The example for a slab foundation shown below illustrates how leveraging default values can simplify user input. ![Foundation block example for a slab with gap and inerior perimeter insulation](../assets/images/fd_block_slab.png) +/// caption +Foundation block example for a slab with gap and inerior perimeter insulation +/// ### fbMat diff --git a/doc/src/docs/input-data/foundation.md b/doc/src/docs/input-data/foundation.md index 6b14d511c..d9f4e9067 100644 --- a/doc/src/docs/input-data/foundation.md +++ b/doc/src/docs/input-data/foundation.md @@ -3,8 +3,14 @@ Foundation describes the two-dimensional relationship between ground-contact SURFACEs (i.e., **sfExCnd** = GROUND) and the surrounding ground. A FOUNDATION is referenced by ground-contact floor SURFACEs (see **sfFnd**). FOUNDATIONs are used to describe the two-dimensional features of foundation designs that cannot be captured by the typical one-dimensional CONSTRUCTIONs. The dimensions from the one-dimensional CONSTRUCTIONs associated with ground-contact floors and walls are automatically interpreted into the two-dimensional context. ![Two-dimensional context for a slab foundation](../assets/images/fd_context_slab.png) +/// caption +Two-dimensional context for a slab foundation +/// ![Two-dimensional context with below grade walls](../assets/images/fd_context_basement.png) +/// caption +Two-dimensional context with below grade walls +/// Any ground-contact wall SURFACEs in contact with the ground must refer to a Floor SURFACE object (see **sfFndFloor**) to indicate which floor shares the same ground boundary condition in the two-dimensional context. diff --git a/doc/src/docs/input-data/terminal.md b/doc/src/docs/input-data/terminal.md index 8af96072a..59e691f03 100644 --- a/doc/src/docs/input-data/terminal.md +++ b/doc/src/docs/input-data/terminal.md @@ -8,7 +8,10 @@ Each capability can be *set output*, in which the output is constant or determin Hourly variable expressions may be used as desired to schedule setpoints and flow limits. Figure 1 shows \[need sentence describing the figure.\] -![Insert Figure Title](../assets/images/image1.png) +![Air handler diagram](../assets/images/image1.png) +/// caption +Air handler diagram +/// ### tuName diff --git a/doc/src/mkdocs.yml b/doc/src/mkdocs.yml index 52b57857d..862a9e2fe 100644 --- a/doc/src/mkdocs.yml +++ b/doc/src/mkdocs.yml @@ -36,6 +36,7 @@ markdown_extensions: - def_list - pymdownx.arithmatex: generic: true + - pymdownx.blocks.caption - pymdownx.caret - pymdownx.critic - pymdownx.details From 791fffdc9cf63fc390f4f289c9e74a13dc009c62 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 15 Jul 2025 12:58:34 -0600 Subject: [PATCH 076/117] Replace more bold text with MD headings. --- doc/src/docs/input-data/dhwheatrec.md | 4 +++- doc/src/docs/input-data/dhwsys.md | 4 +++- doc/src/docs/input-data/rsys.md | 16 ++++++++++++---- doc/src/docs/input-data/surface.md | 8 ++++++-- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/doc/src/docs/input-data/dhwheatrec.md b/doc/src/docs/input-data/dhwheatrec.md index 6e966ab49..f2e1cbad7 100644 --- a/doc/src/docs/input-data/dhwheatrec.md +++ b/doc/src/docs/input-data/dhwheatrec.md @@ -113,7 +113,9 @@ Specifies the type of heat recovery device: Vertical, Horizontal, or SetEF. Hor }) }} - **wrCSARatedEF=*float*** +### wrCSARatedEF + +Type: float Specifies the heat recovery effectiveness, generally determined using CSA B55.2 rating conditions. This value is modified during simulation based on water flow rates and temperatures. If wrType=SetEF, wsCSARatedEF is used without modification. diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index 743d4a34c..7b39b7e93 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -1040,7 +1040,9 @@ Name of DHWMETER object, if any, to which mixed hot water use (at fixture) quant }) }} - **wsWriteDrawCSV=*choice*** +### wsWriteDrawCSV + +Type: choice If Yes, a comma-separated file is generated containing 1-minute interval hot water draw values for testing or linkage purposes. diff --git a/doc/src/docs/input-data/rsys.md b/doc/src/docs/input-data/rsys.md index 1f43307a7..07df4b2b1 100644 --- a/doc/src/docs/input-data/rsys.md +++ b/doc/src/docs/input-data/rsys.md @@ -994,7 +994,9 @@ Cooling distribution system efficiency. If given, (1-rsDSEC) of RSYS cooling ou }) }} - **rsOAVType=*choice*** +### rsOAVType + +Type: choice Type of central fan integrated (CFI) outside air ventilation (OAV) included in this RSYS. OAV systems use the central system fan to circulate outdoor air (e.g. for night ventilation). @@ -1016,7 +1018,9 @@ VARIABLE, Variable-flow CFI (aka NightBreeze). Flow rate is determined at midn }) }} - **rsOAVVfDs=*float*** +### rsOAVVfDs + +Type: float Design air volume flow rate when RSYS is operating in OAV mode. @@ -1031,7 +1035,9 @@ VARIABLE, Variable-flow CFI (aka NightBreeze). Flow rate is determined at midn }) }} - **rsOAVVfMinF=*float*** +### rsOAVVfMinF + +Type: float Minimum air volume flow rate fraction when RSYS is operating in OAV mode. When rsOAVType=VARIABLE, air flow rate is constrained to rsOAVVfMinF * rsOAVVfDs or greater. @@ -1045,7 +1051,9 @@ VARIABLE, Variable-flow CFI (aka NightBreeze). Flow rate is determined at midn }) }} - **rsOAVFanPwr=*float*** +### rsOAVFanPwr + +Type: float RSYS OAV-mode fan power. diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index c672e0c47..be3753aa6 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -454,7 +454,9 @@ Type: choice }) }} - **sfInHcMult=*float*** +### sfInHcMult + +Type: float Interior convection coefficient adjustment factor. When sfInHcModel=INPUT, hc=sfInHcMult. For other sfInHcModel choices, the model-derived hc is multiplied by sfInHcMult. When sfInHcModel=UNIFIED, natural (buoyancy-driven) and forced convection coefficient values are combined according to TOP inHcCombinationMethod, then sfInHcMult is applied. @@ -468,7 +470,9 @@ Type: choice }) }} -**sfInHcFrcCoeffs=*float array*** +### sfInHcFrcCoeffs + +Type: float array Specifies 3 coefficients for an alternative inside surface forced convection model (applicable only for sfInHCModel=UNIFIED). When given, the inside surface forced convection coefficient for this surface is derived as follows: From 212a46713ccb4b9bda7756ba0ed1c0f65c6d2796 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 15 Jul 2025 13:35:11 -0600 Subject: [PATCH 077/117] Simplify plant stage heading and type definition. --- doc/src/docs/input-data/coolplant.md | 7 +++---- doc/src/docs/input-data/heatplant.md | 5 ++--- doc/src/hooks.py | 2 ++ 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/src/docs/input-data/coolplant.md b/doc/src/docs/input-data/coolplant.md index 2c1554d92..4bc865ceb 100644 --- a/doc/src/docs/input-data/coolplant.md +++ b/doc/src/docs/input-data/coolplant.md @@ -94,11 +94,10 @@ TOWERPLANT that cools the condenser water for the chillers in this COOLPLANT. }) }} -**cpStage1=chillerName, chillerName, chillerName, ...** -**cpStage1=ALL\_BUT, chillerName, chillerName, chillerName, ...** +### cpStageN -**cpStage2 through cpStage7 same** +Type: chillerName list, ALL_BUT and chillerName list, or ALL The commands *cpStage1* through *cpStage7* allow specification of up to seven *STAGES* in which chillers are activated as the load increases. CSE will use the first stage that can meet the load; if no stage will meet the load (output the heat requested by the coils at *cpTsSp*), the last COOLPLANT stage is used. @@ -111,7 +110,7 @@ A comma must be entered between chiller names and after the word ALL\_BUT. {{ member_table({ "units": "", - "legal_range": "1 to 7 names; ALL\_BUT and 1 to 6 names; ALL", + "legal_range": "1 to 7 names;
ALL\_BUT and 1 to 6 names;
ALL", "default": "*cpStage1* = ALL", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/heatplant.md b/doc/src/docs/input-data/heatplant.md index e1856adfc..73bcbd487 100644 --- a/doc/src/docs/input-data/heatplant.md +++ b/doc/src/docs/input-data/heatplant.md @@ -60,11 +60,10 @@ Heat plant pipe loss: heat assumed lost from piping connecting boilers to loads }) }} -**hpStage1=boilerName, boilerName, boilerName, ...** -**hpStage1=ALL\_BUT, boilerName, boilerName, boilerName, ...** +### hpStageN -**hpStage2 through hpStage7 same** +Type: boilerName list, ALL_BUT and boilerName list, or ALL The commands *hpStage1* through *hpStage7* allow specification of up to seven *STAGES* in which BOILERs are activated as the load increases. Each stage may be specified with a list of up to seven names of BOILERs in the HEATPLANT, or with the word ALL, meaning all of the HEATPLANT's BOILERs, or with the word ALL\_BUT and a list of up to six names of BOILERs. Each stage should be more powerful than the preceding one. If you have less than seven stages, you may skip some of the commands *hpStage1* through *hpStage7* -- the used stage numbers need not be contiguous. diff --git a/doc/src/hooks.py b/doc/src/hooks.py index c32c2ac11..04b684578 100644 --- a/doc/src/hooks.py +++ b/doc/src/hooks.py @@ -593,6 +593,8 @@ def on_config(config, **kwargs): "sfExCTaDbAvgYr": slugify( "sfExCTGrnd, sfExCTaDbAvg07, sfExCTaDbAvg14, sfExCTaDbAvg31, sfExCTaDbAvgYr" ), + "cpStage": slugify("cpStageN"), + "hpStage": slugify("hpStageN"), } # Walk all docs *.md files to find headings From 0cd59c98078108e74f522cc39fbcebe83ef0023b Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 15 Jul 2025 13:35:33 -0600 Subject: [PATCH 078/117] Add alias so "TOP" links to "TOP members" heading. --- doc/src/hooks.py | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/src/hooks.py b/doc/src/hooks.py index 04b684578..b38253867 100644 --- a/doc/src/hooks.py +++ b/doc/src/hooks.py @@ -543,6 +543,7 @@ def on_config(config, **kwargs): # Prepopulate any custom keywords (key) to any custom autoref slugs (value) text_to_slug = { + "TOP": slugify("Top members"), "END": slugify("END and ENDxxxx"), "ENDxxxx": slugify("END and ENDxxxx"), "FROZEN": slugify("FREEZE"), From 65568fcc5694fe881228fa823cfc1b333fa9ceea Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 15 Jul 2025 13:39:03 -0600 Subject: [PATCH 079/117] Fix more stacked headings. --- doc/src/docs/input-data/dhwsys.md | 6 +----- doc/src/docs/input-data/rsys.md | 3 +-- doc/src/hooks.py | 17 +++++++++++++++++ doc/src/shared/dhwheater-doc.md | 6 ++---- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index 7b39b7e93..e70128fd5 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -116,11 +116,7 @@ Number of identical systems of this type (including all child objects). Any valu }) }} -**wsFaucetCount=*integer***\ -**wsShowerCount=*integer***\ -**wsBathCount=*integer***\ -**wsCWashrCount=*integer***\ -### wsDWashrCount +### wsFaucetCount, wsBathCount, wsCWashrCount, wsDWashrCount Type: integer diff --git a/doc/src/docs/input-data/rsys.md b/doc/src/docs/input-data/rsys.md index 07df4b2b1..12bb3dc1a 100644 --- a/doc/src/docs/input-data/rsys.md +++ b/doc/src/docs/input-data/rsys.md @@ -766,8 +766,7 @@ Cooling autosizing capacity factor. rsCapC is set to rsFxCapC $\times$ (peak des }) }} -**rsFChgC=*float***\ -### rsFChg +### rsFChgC, rsFChg Type: float diff --git a/doc/src/hooks.py b/doc/src/hooks.py index b38253867..63cdc31ca 100644 --- a/doc/src/hooks.py +++ b/doc/src/hooks.py @@ -596,8 +596,25 @@ def on_config(config, **kwargs): ), "cpStage": slugify("cpStageN"), "hpStage": slugify("hpStageN"), + "whFAdjElec": slugify("whFAdjElec, whFAdjFuel"), + "whFAdjFuel": slugify("whFAdjElec, whFAdjFuel"), + "whInHtSupply": slugify("whInHtSupply, whInHtLoopRet"), + "whInHtLoopRet": slugify("whInHtSupply, whInHtLoopRet"), + "rsFChgC": slugify("rsFChgC, rsFChg"), + "rsFChg": slugify("rsFChgC, rsFChg"), + "wsFaucetCount": slugify( + "wsFaucetCount, wsBathCount, wsCWashrCount, wsDWashrCount" + ), + "wsBathCount": slugify("wsFaucetCount, wsBathCount, wsCWashrCount, wsDWashrCount"), + "wsCWashrCount": slugify( + "wsFaucetCount, wsBathCount, wsCWashrCount, wsDWashrCount" + ), + "wsDWashrCount": slugify( + "wsFaucetCount, wsBathCount, wsCWashrCount, wsDWashrCount" + ), } + # Walk all docs *.md files to find headings for md in docs_dir.rglob("*.md"): rel = md.relative_to(Path(__file__).parent).as_posix() diff --git a/doc/src/shared/dhwheater-doc.md b/doc/src/shared/dhwheater-doc.md index 814f0511b..cc12e4dd2 100644 --- a/doc/src/shared/dhwheater-doc.md +++ b/doc/src/shared/dhwheater-doc.md @@ -586,8 +586,7 @@ Tank insulation resistance for heat pump water heater. }) }} -**whInHtSupply=*float***\ -### whInHtLoopRet +### whInHtSupply, whInHtLoopRet Type: float @@ -683,8 +682,7 @@ Parasitic electricity power, included in electrical energy use of all DHWHEATERs }) }} -**whFAdjElec=*float***\ -### whFAdjFuel +### whFAdjElec, whFAdjFuel Type: float From 8ff1ee32846779e8375d39ccc7a315f366d4b9db Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 15 Jul 2025 14:00:27 -0600 Subject: [PATCH 080/117] Add ability to check which data members do not have a frequency directive. --- doc/src/hooks.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/src/hooks.py b/doc/src/hooks.py index 63cdc31ca..49b3750e1 100644 --- a/doc/src/hooks.py +++ b/doc/src/hooks.py @@ -151,6 +151,10 @@ def __init__(self, paths: SourcePaths, destination_dir: Path): self.types = set() self.variability_combinations = set() + # This refers to no frequency directive AFTER any forwarded/inherited + # frequency directives are applied. + self.members_with_no_frequency_directive = set() + def strip_prefix(self, name: str, prefix: RecordPrefix): if not prefix: return name @@ -414,6 +418,11 @@ def get_resolved_variability_directives_string(self, member: Field) -> str: directives, AVAILABILITY_DIRECTIVES, fallback="b" ) + if not resolved_frequency: + self.members_with_no_frequency_directive.add( + f"{member['name'], member['type']}" + ) + self.variability_combinations.add( f"{resolved_frequency},{resolved_availability}" ) From 54411df8c325632595398e53ebfb5231bd19fb85 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 15 Jul 2025 15:05:53 -0600 Subject: [PATCH 081/117] Remove unused comfort model content. --- doc/src/docs/input-data/zone.md | 69 --------------------------------- 1 file changed, 69 deletions(-) diff --git a/doc/src/docs/input-data/zone.md b/doc/src/docs/input-data/zone.md index 29b234a35..54e77fbe9 100644 --- a/doc/src/docs/input-data/zone.md +++ b/doc/src/docs/input-data/zone.md @@ -346,75 +346,6 @@ Rated cooling capacity }) }} -<% if comfort_model %> -The following provide parameters for comfort calculations - -### znComfClo - -Type: float - -Occupant clothing resistance, used only when a comfort model is enabled. - -{{ - member_table({ - "units": "clo", - "legal_range": "x $\\geq$ 0", - "default": "*none*", - "required": "No", - "variability": "subhourly" - }) -}} - -### znComfMet - -Type: float - -Occupant metabolic rate, used only when a comfort model is enabled. - -{{ - member_table({ - "units": "met", - "legal_range": "x $\\geq$ 0", - "default": "*none*", - "required": "No", - "variability": "hourly" - }) -}} - -### znComfAirV - -Type: float - -Nominal air velocity used for comfort model, used only when a comfort model is enabled. - -{{ - member_table({ - "units": "", - "legal_range": "x $\\geq$ 0", - "default": "*none*", - "required": "No", - "variability": "Hourly" - }) -}} - -### znComfRh - -Type: float - -Nominal zone relative humidity used for comfort model, used only when a comfort model is enabled. - -{{ - member_table({ - "units": "", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", - "default": "*none*", - "required": "No", - "variability": "hourly" - }) -}} - -<% end %> - ## ZONE Infiltration The following control a simplified air change plus leakage area model. The Sherman-Grimsrud model is used to derive air flow rate from leakage area and this rate is added to the air changes specified with infAC. Note that TOP.windF does *not* modify calculated infiltration rates, since the Sherman-Grimsrud model uses its own modifiers. See also AirNet models available via IZXFER. From 1fd8684c66f060d7e44154aa348579b7fb62ed10 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 15 Jul 2025 15:08:53 -0600 Subject: [PATCH 082/117] Update sfInHcFrcCoeffs table with new member_table syntax. --- doc/src/docs/input-data/surface.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index be3753aa6..4c1486201 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -482,12 +482,15 @@ where hConvF is the convection adjustment factor (derived from elevation, see To The default hcFrc value (used when sfInHcFrCoeff is not provided) is hConvF * znHcFrcF * ACH ^ 0.8. -<%= member_table( - units: "Btuh/ft^2^-^o^F", - legal_range: "", - default: "*see above*", - required: "No", - variability: "subhourly") %> +{{ + member_table({ + "units": "Btuh/ft^2^-^o^F", + "legal_range": "", + "default": "*see above*", + "required": "No", + "variability": "subhourly" + }) +}} The items below give values associated with CSE's model for below grade surfaces (sfExCnd=GROUND). See CSE Engineering Documentation for technical details. From a21d04fbe0305406f7c18add45f51d9d773f1d8a Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 15 Jul 2025 15:12:18 -0600 Subject: [PATCH 083/117] Remove unused gnFrZn member_table inside not_yet_implemented ternary. --- doc/src/docs/input-data/gain.md | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/doc/src/docs/input-data/gain.md b/doc/src/docs/input-data/gain.md index fb1f677ba..d9aa66be8 100644 --- a/doc/src/docs/input-data/gain.md +++ b/doc/src/docs/input-data/gain.md @@ -106,20 +106,6 @@ Type: float Fraction of gain going to zone. gnFrLat (below) gives portion of this gain that is latent, if any; the remainder is sensible. -<% if not_yet_implemented %> - -{{ - member_table({ - "units": "", - "legal_range": "gnFrZn + gnFrPl + gnFrRtn $\leq$ 1", - "default": "*1 - gnFrPl - gnFrRtn*", - "required": "No", - "variability": "hourly" - }) -}} - -<% else %> - {{ member_table({ "units": "", @@ -130,7 +116,6 @@ Fraction of gain going to zone. gnFrLat (below) gives portion of this gain that }) }} -<% end %> ### gnFrPl From f360b9ebce02910e62044a1e530d46aaded893df Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 15 Jul 2025 15:14:24 -0600 Subject: [PATCH 084/117] Remove unused btInitCycles comment regarding fidelity of cycle degradation modeling. --- doc/src/docs/input-data/battery.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/doc/src/docs/input-data/battery.md b/doc/src/docs/input-data/battery.md index 922e2772c..afe7d819d 100644 --- a/doc/src/docs/input-data/battery.md +++ b/doc/src/docs/input-data/battery.md @@ -106,12 +106,6 @@ Type: int The number of cycles on the battery at the beginning of the run. -<% if show_comments %> - -Note: a more robust life model will need not only cycle counts but cycles by depth of discharge to capture "shallow cycling" vs "deep cycling". A further enhancement is to capture "time at temperature". We may want to look into the battery literature and also more into this application to better understand what kind of life model may be a good fit in terms of information requirements vs fidelity. - -<% end %> - {{ member_table({ "units": "number of cycles", From 8df667cfd491030ee59d0c883fd524d069387cb5 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 15 Jul 2025 15:15:54 -0600 Subject: [PATCH 085/117] Remove unused elements from hierarchy code block in input-structure. --- doc/src/docs/input-structure.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/doc/src/docs/input-structure.md b/doc/src/docs/input-structure.md index 5efbee999..bfd92f55f 100644 --- a/doc/src/docs/input-structure.md +++ b/doc/src/docs/input-structure.md @@ -57,16 +57,6 @@ TODO: review hierarchy SHADE SGDIST DOOR -<% if inactive_CNE_records %> - PERIMETER - TERMINAL - AIRHANDLER - HEATPLANT - BOILER - COOLPLANT - TOWERPLANT - HPLOOP -<% end %> REPORTFILE REPORT REPORTCOL From 8cb9f99bc7a7a183cab7916dfc91096c897bc275 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 15 Jul 2025 16:20:30 -0600 Subject: [PATCH 086/117] Update README with a draft for the new documentation system. --- doc/README.md | 390 +++++--------------------------------------------- 1 file changed, 38 insertions(+), 352 deletions(-) diff --git a/doc/README.md b/doc/README.md index 6e1bd2f14..cb2e75cda 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1,158 +1,48 @@ -# CSE User Manual Build Scripts +# CSE User Manual -The files in this folder are concerned with building the documentation and website for CSE; specifically, the CSE User Manual. The build process heavily leverages the [Ruby] programming language, the [Pandoc] documentation processing tool, and, [Node.js] for doing compression of html/css. The majority of the build process is contained in the `rakefile.rb` located in this directory with supporting code in the `lib` subdirectory. The "source code" for the documentation is written in [Pandoc-flavored Markdown] with the manifest of files located in [YAML] files, both in the `src` directory. Additional support files are located in the `config` directory. The `test` directory is test code specifically for the documentation build system -- it can be run using `rake test` from the command line. +The files in this folder are concerned with building the documentation and website for CSE; specifically, the CSE User Manual. The documentation is built using Material for Mkdocs, a popular theme for Mkdocs, which is built with Python. -The source files including both manifest files (in YAML) and markdown files (ending with a `.md` extension) are preprocessed by "embedded Ruby" or [ERB] prior to running through the rest of the documentation build pipeline. -[Pandoc-flavored Markdown]: http://pandoc.org/MANUAL.html#pandocs-markdown -[YAML]: http://yaml.org/ -[ERB]: http://ruby-doc.org/stdlib-2.3.1/libdoc/erb/rdoc/ERB.html +## Developing the Docs -## Dependencies for Website Generation +Mkdocs includes a dev server which can be helpful during development. -- the [Pandoc] markup language converter (use Pandoc version 1.17.2; other versions are not supported) -- (optional) for PDF output, you will need to install a LaTeX system (see below) -- (optional) for compression of HTML/CSS, a recent version of [Node.js] -- a recent version of the [Ruby] programming language (use any Ruby NOT at end-of-life, currently Ruby 2.4+) -- (optional) an internet connection (for installing node dependencies) -- the git version control manager (we are using 2.10.2) -- Microsoft C++ Build Tools (for Visual Studio 2017 or 2019) + > uv run mkdocs serve -Pandoc version 1.17.2 can be downloaded from [here](https://github.com/jgm/pandoc/releases). If you do not have version 1.17.2 installed, the build tool will stop immediately with instructions on how to install Pandoc 1.17.2. +The dev serve includes a file watcher, so the docs will be rebuilt when changes are saved. However, because probe definitions are written as part of the on_config hook, the files in the probe-definitions folder are recreated. This can cause an infinite loop of rebuilding. Future work should explore fixing this. One solution might be adding a flag to enable only writing new probe definitions (i.e., skip existing files in the probe-definitions folder). -One way to make it easier to set up Pandoc 1.17.2 (especially in the presence of potentially a newer Pandoc version), is to use the cross-platform [conda] package, dependency, and environment manager. To do this, install the [miniconda] tool and then create an environment called `cse-docs`: - # this only needs to be done once: - conda create --name cse-docs - # on windows: activate cse-docs - # on mac/linux: source activate cse-docs - conda install -c edurand pandoc=1.17.2 +## Building the Docs -This will install a managed [Pandoc] 1.17.2 on your computer. You can activate the [conda] environment and, therefore, the [Pandoc] version that comes with it by calling: +To build the documentation, use - # this needs to be done each time you want to activate Pandoc - source activate cse-docs + > uv run mkdocs build -[conda]: https://conda.io/docs/ -[miniconda]: https://conda.io/miniconda.html -For PDF generation, Pandoc creates LaTeX which is further processed to PDF. For Windows, [MiKTeX] is recommended. For Mac OS and Linux, please follow the instructions for recommended (La)TeX systems at [Pandoc's Install] page. Note that to build the PDF, you must change the value of the "build-pdf?" key to true in the `config.yaml` file in this directory. This configuration file is discussed more below. +## Inserting (Shared) File Content -[Pandoc]: http://pandoc.org/ -[Ruby]: https://www.ruby-lang.org/en/ -[Node.js]: https://nodejs.org/en/ -[MiKTeX]: https://miktex.org/ -[Pandoc's Install]: http://pandoc.org/installing.html +To include external files within a page, you may use the include directive: -With the above installed, the scripts in this directory should be able to download and install all other dependencies. -The specific dependencies for [Node.js] are listed in the `package.json` file. + {% include 'enduses.md' %} -With regard to the Microsoft Build Tools, the C++ preprocessor is required in the full build process to parse parameter names from the CSE source code. -This is accomplished with the `cl` program. -If you type `where cl` at your prompt and get a valid path, then `cl` is installed and reachable. -If not, the best way to get this is to set up your Visual Studio with C++ tools (you should have this if you are able to build CSE). -Then, to get a shell with `cl` and other tools on the path, go to `Start > Visual Studio 20XX > Developer Command Prompt for VS XX`. -You should have access to `cl` from that prompt. -If not, please check this [cl] article from Microsoft. - -[cl]: https://docs.microsoft.com/en-us/cpp/build/building-on-the-command-line?view=vs-2019 - -## Instructions for Building the Documentation - -Using [Node.js] enables us to compress the HTML and CSS for the website. It is an optional dependency but recommended if you plan to push to the live `gh-pages` branch. The [Node.js] dependencies are off by default: in order to use [Node.js], create a local `config.yaml` file in `doc/config.yaml` with the value of `use-node?:` as `true`: - - use-node?: true - -Your primary interaction with the build system will be through the [Rake] build tool (from the [Ruby] programming folks). [Rake] is a "make for Ruby". - -[Rake]: https://github.com/ruby/rake - -[Rake] comes installed with most [Ruby] installers. To see the build commands available, (after [Ruby] has been installed), type: - - > rake -T - -from this directory to see a list of commands. - -The default command is `build` which can be invoked either by: - - > rake build - -or, since it is the default command: - - > rake - -## The Configuration File - -Configuration parameters can be used to change how the documentation builds. The config defaults are located in `doc/config/defaults.yaml`. If a file named `doc/config.yaml` is placed in the `doc` directory, it will override the corresponding value in the defaults.yaml file. By default, the `doc/config.yaml` file is ignored by the version control system (see `doc/.gitignore`) allowing developers to customize the build process for their needs. The `doc/config/defaults.yaml` file is written in [YAML] format and is heavily documented with comments to help clarify the role of each parameter. - -A typical `doc/config.yaml` file for a developer planning to build the documentation for [GitHub Pages] would be as follows: - - use-node?: true - build-pdf?: true - context: - build_all: true - -Note in particular that the "context" attribute contains a dictionary (i.e., map or hash table) of values to define and pass into the embedded ruby ([ERB]) preprocessor. These attributes must be lower-case as discussed below. - -## Preprocessing files with Embedded Ruby - -Embedded Ruby or [ERB] is a technology originally developed for making web pages server-side "on the fly". Instead of a program consisting primarily of code with surrounding comments, [ERB] flips things around to where a file is string content with programming constructs embedded inside of it. This can be used for simple calculations and also for conditional inclusion of code: - - <% if dev_build %> - # Experimental Stuff - - lorem ipsum dolar ... - <% end %> - - # Stable stuff - - blah blah - -In the above code, assuming that the variable `dev_build` was defined, this snippet of [ERB] would include the "Experimental Stuff" section depending on whether the value was `true` (yes, include) or `false` (skip). You can define variable flags such as `dev_build` by adding a "context" section to your local `config.yaml` file. For example, a local user's `config.yaml` file for the above snippet might look as follows: - - build-pdf?: true - context: - dev_build: true - -**Note**: due to limitations with Ruby, your context variables need to start with either a lowercase letter or an underscore ("_"). A great way to test that ERB is doing the right thing for you is to use the `rake erb` task: - - set FILE=path\to\file.md & rake erb - -or, if you happen to be on a Unix, GNU/Linux, or Mac OS computer: - - rake erb FILE=path/to/file.md - -This will preprocess the file using [ERB] and write the results to `doc/erb-out.txt` for your perusal using the context variables you've defined in your local `doc/config.yaml` (which are merged with the context variables defined in `doc/config/defaults.yaml` -- your local context variables override the defaults). - -We recommend looking at an [ERB Tutorial] to get up to speed on using [ERB]. - -[ERB Tutorial]: http://www.stuartellis.name/articles/erb/ - -## Inserting File Content - -A special directive is available that allows one to insert any file directly into markdown documents (to avoid repetition) by specifying the file's relative path from the repository root. For example, to add the file: `\doc\src\enduses.md`, one would write: - - <%= insert_file('doc/src/enduses.md') %> - -Note: the `insert_file` method could be replaced by a direct call to `File.read(path_to_read)`. However, direct calls to `File.read` are fragile since the absolute paths won't build between multiple machines and the question with relative paths is what directory will be used. In contrast, the `insert_file` method always uses a path relative to the repository root. - -## Table Pre-processing Directives - -By setting the config variable "use-table-lang?" to `true` (note: it is `true` by default), we enable [ERB] to use a table pre-processing language. At the time of this writing, these table directives are used to transform imbedded CSV data (CSV = comma-separated value), in-file CSV data, or special tables to the "ascii-art" multi-line tables required by [Pandoc-flavored Markdown]. For general tables, external CSV files can be used (recommended). In this case, the source files may be edited with a spreadsheet program and saved to disk (in CSV format). By default, tables are stored in the directory relative to the `doc` directory as specified by the "table-path" variable specified in the `doc/config/defaults.yaml` file. At the time of this writing, that variable defaults to `doc/src/tables`. +## Tables The three table directives and their options and syntax are shown below: -### member\_table -- special syntax for Record Member Tables +### member_table -The `member_table` has the following syntax: +The `member_table` uses the following syntax: - <%= member_table( - units: "1/^o^F", - legal_range: "no restrictions", - default: "-0.0026", - required: "No", - variability: "constant") %> + {{ + member_table({ + "units": "1/^o^F", + "legal_range": "no restrictions", + "default": "-0.0026", + "required": "No", + "variability": "constant" + }) + }} This writes a Markdown table similar to the following: @@ -164,235 +54,31 @@ This writes a Markdown table similar to the following: restrictions --------------------------------------------------------------- -The arguments to `member_table` are a [Ruby] hash (also called a hash-table, dictionary, or map). An alternate valid [Ruby] syntax for the same thing is: - - <%= member_table( - :units => "1/^o^F", - :legal_range => "no restrictions", - :default => "-0.0026", - :required => "No", - :variability => "constant") %> - -or alternately to be very explicit (note the curly brackets `{` and `}` below): - - <%= member_table({ - :units => "1/^o^F", - :legal_range => "no restrictions", - :default => "-0.0026", - :required => "No", - :variability => "constant"}) %> - -In the call to `member_table`, each of the keys is checked for correct spelling. Keys that are elided are replaced with `--`, the markdown symbol for "--". - -### csv\_table -- inline csv tables - -CSV tables provide an alternate syntax for describing a multi-line table. Cell contents should be written in [Pandoc-flavored Markdown] to indicate boldness, links, etc. - -A simple CSV Table appears below: - - <%= csv_table(< false) - A,B,C - 1,2,3 - END - %> - -Here, we use [Ruby] syntax for ["here docs"](http://blog.jayfields.com/2006/12/ruby-multiline-strings-here-doc-or.html). Essentially, the CSV string gets escaped and placed where `< true) - A,B,C - 1,2,3 - END - %> - -... we get: +### csv_table -- inline csv tables - -------------------------------------------------------------------- - A B C - ---------------------- ---------------------- ---------------------- - 1 2 3 - -------------------------------------------------------------------- +CSV tables provide an alternate syntax for describing a multi-line table. A csv string is passed as the first argument. The second argument is a boolen for whether a header should be included. By default, no header is included in the table. -But what if we want to use a comma (",") in our strings? In this case, we must quote (i.e., surround with `"`) all of our cells. But what if we want to use a literal `"`? Then we double up the `"` character. See this example: + {{ + csv_table(csv_string, header=False) + }} - <%= csv_table(< true) - "Property","Value" - "*Units*","units of measure (lb., ft, Btu, etc.) where applicable" - "*Legal*","limits of valid range for numeric inputs; valid ""choices""" - END - %> +To add commas, we must (annoyingly) use the HTML comma entity, `,`. To add quotation marks, first escape the character: `\"`. -This yields: - -------------------------------------------------------------------- - Property Value - -------------- ----------------------------------------------------- - *Units* units of measure (lb., ft, Btu, etc.) where - applicable +### csv_table_from_file - *Legal* limits of valid range for numeric inputs; valid - "choices" - -------------------------------------------------------------------- - -So, all in all, it is relatively straight-forward to embed a csv table inline with the markdown. However, we recommend using the next directive for handling CSV tables: `csv_table_from_file` - -### csv\_table\_from\_file - -This last directive loads a CSV file from the file system and processes it into a multi-line Markdown table per [Pandoc-flavored Markdown]. - -An example of calling this directive lies below: - - <%= csv_table_from_file("input-data--member-table-definition.csv") %> - -This yields: - - -------------------------------------------------------------------- - *Units* units of measure (lb., ft, Btu, etc.) where applicable - ------------- ------------------------------------------------------ - *Legal* limits of valid range for numeric inputs; valid - choices - - *Range* for *choice* members, etc. - - *Default* value assumed if member not given; applicable only if - not required - - *Required* YES if you must give this member - - *Variability* how often the given expression can change: hourly, - daily, etc. See sections on - [expressions](#expressions-overview), - [statements](#member-statements), and [variation - frequencies](#variation-frequencies-revisited) - -------------------------------------------------------------------- - -Note that by default (same as `csv_table`), the value of `:row_header` is `true`. To turn that off, we use: - - <%= csv_table_from_file( - "input-data--member-table-definition.csv", row_header: false) %> - -which is equivalent to: - - <%= csv_table_from_file( - "input-data--member-table-definition.csv", :row_header => false) %> - -Both of the above yield: - - ------------- ------------------------------------------------------ - *Units* units of measure (lb., ft, Btu, etc.) where applicable - - *Legal* limits of valid range for numeric inputs; valid - choices - - *Range* for *choice* members, etc. - - *Default* value assumed if member not given; applicable only if - not required - - *Required* YES if you must give this member - - *Variability* how often the given expression can change: hourly, - daily, etc. See sections on - [expressions](#expressions-overview), - [statements](#member-statements), and [variation - frequencies](#variation-frequencies-revisited) - ------------- ------------------------------------------------------ - -The exciting thing about using `csv_table_from_file` is that the table data can live on the file system and be edited with a spreadsheet tool such as *Microsoft Excel* or *LibreOffice Calc*. - -## Updating the Documents: Support Files - -The `doc/config/` directory contains various support files used to help build the documents. The `defaults.yaml` holds default configuration parameters that are discussed in the [configuration section](#the-configuration-file). Specifically, the css used for html styling is in the `css` directory; the templates used for both HTML and LaTeX (a precursor for a pdf build) are located in the `template` directory; and finally we have a `reference` directory which holds the following files: - -- `probes.txt` is a file dump from the `cse -p` command -- `probes_input.yaml` is a yaml file of the above processed to include comments -- `record-index-exceptions.yaml` allows one to override settings when a record's "canonical location" in the documentation does **not** follow the "typical convention". The "typical convention" is that a record will have its own file located in the `doc/src/records` folder with a file name corresponding to the record's name (all in lowercase). Within that file, there will be a header with the same name as the record and this section header would be unique in all of the documentation sections. In other words, we would normally expect to find a record named "SOMETHING" in file `doc/src/records/something.md` where, opening that file, we would expect a header of `# SOMETHING` (Markdown). If that is **not** the case, then this file is where you would explicitly say where to locate the Record's "canonical location" in the documentation source. - -The format of the `record-index-exceptions.yaml` file is: - - AUTOGENERATED RECORD NAME: { "NAME TO REPLACE IT WITH": "filename.html#tag-name" } - -In the above, filename.html should be named with an `.html` extension (even though the "source" is `.md`) and we still expect to find it in the `doc/src/records` folder. - -## Updating the Documents: Adding a new Section or Record - -When adding a new section or record you generally just open up your text editor and write the new file and place it under `doc/src`. However, the following list a few "gotchas" to look out for: - -- be sure to save the file extension as `.md` -- the build tooling assumes markdown files are named with this extension -- write your file as if it were at the "top level". That is, even if you know the document will be nested several levels deep, make your top-most header a first-level header. -- be sure to enter the file's name and *actual* level in the document in the appropriate manifest.yaml file -- otherwise it won't get included in the documentation when you build! -- be sure to add your file to the version control sytem -- you don't need to explicitly link *any* RECORD names. If you uppercase record names per the document convention, the build process will automatically detect the name as a record name and cross-link the name to the "canonical location" where the record is defined -- all non-RECORD cross-links including section links **do** need to be added explicitly. The target for a section can be formed using [some straightforward rules] and would be written as `[link text](#identifier)`. Note: only use the `#identifier` syntax -- you don't need to specify the filename; even when the cross-link is in another physical file. The build process detects and fills in the filename depending on the type of build (pdf, single-page html, multi-page html, etc.) -- the [YAML] manifests for each document are located in the source. The section you will typically be adjusting is the `sections:` area. This is a list of two-tuples: the first is the "file level" and the second is the relative path from the "src/" directory. A "file level" indicates the level of indentation of that file in the documentation tree. "File levels" should **not** increase more than one at a time. - -[some straightforward rules]: http://pandoc.org/MANUAL.html#extension-auto_identifiers - -## Checking for Issues - -The document processing system contains two quality control checking mechanisms: documentation coverage and links checks. +`csv_table_from_file` is provided as a convenience wrapper for csv_table. This function takes a file_path as the first argument. The second arugment is a boolean flag for header, as in the regular csv_table. The file_path is expected to be a path to a csv file, so that when loaded, the content can be passed to csv_table as a csv string. + {{ + csv_table(file_path, header=False) + }} ### Coverage Report -The coverage report can be accessed via: - - > rake coverage - -The coverage report can be toggled to run by default or not using: - - > rake set_coverage_on_by_default - > rake set_coverage_off_by_default - -Whether coverage checks run or not by default can also be changed directly by editing your local `config.yaml` file. -Specifically, setting the `coverage?` key to true or false will set the coverage to run by default or not. -Either way, explicitly calling `rake coverage` will always run the coverage report. - -The `rake coverage` check returns a non-zero exit code if any coverage issues are found. -Certain records or fields of certain records can be ignored by specifying an `ignore-coverage` key in the YAML manifest file. -If specified, the `ignore-coverage` dictionary-structure can contain up to two sub-fields: - -* records: a list of the names of records to ignore. - Note: if a record is ignored, none of its data fields will be compared either. -* data-fields: a dictionary between record name and a list of data-fields to ignore - -An example structure appears below. - -```yaml -ignore-coverage: - records: - - "airHandler" - data-fields: - export: - - "exTu" -``` - -In the example above, the "airHandler" record is completely ignored. -In addition, the "exTu" data field of the "export" record is also ignored. -The coverage check is accomplished by comparing the result of `cse -c` with what is in the documentation. - -NOTE: the fields in ignore-coverage and the compared fields are NOT case sensitive at this time. -However, we recommend trying to respect the case where possible should case-sensitive compare be desired in the future. - - -### Link Check (i.e., Verify Links) - -The rake task `rake verify_links` will check the documentation for bad links. -This can be set up to run by default during a documentation build using the local `config.yaml` file. -Set the `verify-links?` field to true to run by default or false to disable by default. - - -## Pushing Built Documents to the Server +A coverage report has not yet been implemented for the current documentation system. -Documents are built by default into `doc/build/output`. This directory is a check-out of the remote repository's `gh-pages` branch which uses GitHub's [GitHub Pages] functionality. The remote repository URL can be configured in the `config.yaml` file under the key `remote-repo-url`. -[GitHub Pages]: https://pages.github.com/ +## Deploying Built Documents to GitHub Pages -Once you have built the documents and are satisfied with how they look, you can push to the remote repository's `gh-pages` branch for the github site you're interested in (by default, `origin` is set to the value in `config.yaml` under the key `remote-repo-url`). +The deploy process is not currently automated. A user must manually commit changes to the gh-pages branch to deploy the latest version of the docs. Future work could explore automating this process as well as leveraging mike to make different versions of the docs available to users. From 45e10aee894e3608aa59540715944fe8e65ab590 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Wed, 23 Jul 2025 15:45:57 -0600 Subject: [PATCH 087/117] Add footer navigation buttons. --- doc/src/mkdocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/src/mkdocs.yml b/doc/src/mkdocs.yml index 862a9e2fe..cb36938b0 100644 --- a/doc/src/mkdocs.yml +++ b/doc/src/mkdocs.yml @@ -14,6 +14,7 @@ theme: - toc.follow - navigation.instant - navigation.indexes + - navigation.footer # favicon: assets/favicon.ico # logo: assets/logo.svg # palette: From 6e15f8e6528d692e179410c36a91a0d61d8b1f5e Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Wed, 23 Jul 2025 16:12:08 -0600 Subject: [PATCH 088/117] Fix loop issue by unwatching probe-definitions in on_serve hook. Also adds check for exisiting probe-definitions files before writing. --- doc/src/hooks.py | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/doc/src/hooks.py b/doc/src/hooks.py index 49b3750e1..968da2f88 100644 --- a/doc/src/hooks.py +++ b/doc/src/hooks.py @@ -495,9 +495,27 @@ def write_probes_by_record(self, record: Record): ] filename = f"{record["name"]}.md" + path = self.destination_dir / filename - with open(self.destination_dir / filename, "w") as file: - file.write("\n\n".join(result)) + new_content = "".join(result) + current_content = "" + try: + with open(path, "r") as f: + current_content = f.read() + except FileNotFoundError: + # File doesn't exist, so write the new content + pass + except Exception: + # print(f"Error reading file {path}: {e}") + return + + if new_content == current_content: + # TODO: Add logging, so this can be added to a debug-level output. + # print(f"Content of {filename} is already identical, no write performed.") + pass + else: + with open(path, "w") as f: + f.write(new_content) def write_all_probes(self): records = list(self.cnrecs.values()) @@ -762,3 +780,17 @@ def on_page_content(html, page, config, files): sibling = sibling.find_next_sibling() return str(soup) + + +def on_serve(server, config, **kwargs): + docs_dir = Path(__file__).parent / "docs" + server.unwatch(docs_dir) + + for item in docs_dir.iterdir(): + if item.is_file() or item.name != "probe-definitions": + server.watch(docs_dir / item) + + server.watch(docs_dir / "probe-definitions" / ".nav.yml") + server.watch(docs_dir / "probe-definitions" / "index.md") + + return server From a0323588d0d35d928873dbf5f930032612e34166 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Thu, 24 Jul 2025 16:14:22 -0600 Subject: [PATCH 089/117] Fix missing "wsShowerCount" heading. --- doc/src/docs/input-data/dhwsys.md | 2 +- doc/src/hooks.py | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index e70128fd5..a51316a58 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -116,7 +116,7 @@ Number of identical systems of this type (including all child objects). Any valu }) }} -### wsFaucetCount, wsBathCount, wsCWashrCount, wsDWashrCount +### wsFaucetCount, wsShowerCount, wsBathCount, wsCWashrCount, wsDWashrCount Type: integer diff --git a/doc/src/hooks.py b/doc/src/hooks.py index 968da2f88..28caa24d0 100644 --- a/doc/src/hooks.py +++ b/doc/src/hooks.py @@ -630,14 +630,19 @@ def on_config(config, **kwargs): "rsFChgC": slugify("rsFChgC, rsFChg"), "rsFChg": slugify("rsFChgC, rsFChg"), "wsFaucetCount": slugify( - "wsFaucetCount, wsBathCount, wsCWashrCount, wsDWashrCount" + "wsFaucetCount, wsShowerCount, wsBathCount, wsCWashrCount, wsDWashrCount" + ), + "wsShowerCount": slugify( + "wsFaucetCount, wsShowerCount, wsBathCount, wsCWashrCount, wsDWashrCount" + ), + "wsBathCount": slugify( + "wsFaucetCount, wsShowerCount, wsBathCount, wsCWashrCount, wsDWashrCount" ), - "wsBathCount": slugify("wsFaucetCount, wsBathCount, wsCWashrCount, wsDWashrCount"), "wsCWashrCount": slugify( - "wsFaucetCount, wsBathCount, wsCWashrCount, wsDWashrCount" + "wsFaucetCount, wsShowerCount, wsBathCount, wsCWashrCount, wsDWashrCount" ), "wsDWashrCount": slugify( - "wsFaucetCount, wsBathCount, wsCWashrCount, wsDWashrCount" + "wsFaucetCount, wsShowerCount, wsBathCount, wsCWashrCount, wsDWashrCount" ), } From fa7ac18ae0fd8c536baafd6bf5c59584515c2686 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Fri, 25 Jul 2025 15:30:12 -0600 Subject: [PATCH 090/117] Set all images to have a max-width of 50%. Previous existing code sets inline margin to auto, so they are already centered. --- doc/src/docs/assets/stylesheets/extra_styles.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/src/docs/assets/stylesheets/extra_styles.css b/doc/src/docs/assets/stylesheets/extra_styles.css index fda727936..4dcc0b710 100644 --- a/doc/src/docs/assets/stylesheets/extra_styles.css +++ b/doc/src/docs/assets/stylesheets/extra_styles.css @@ -100,4 +100,8 @@ Workaround term requiring margin-top fix .probe-table-sibling + * table:not([class]) th:first-child { width: 25%; +} + +.md-typeset img { + max-width: 50%; } \ No newline at end of file From 4e240f0a04a1940aa61708ff8aee7780a1f26c73 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Fri, 25 Jul 2025 15:30:35 -0600 Subject: [PATCH 091/117] Fix syntax of name heading. --- doc/src/shared/dhwheater-doc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/shared/dhwheater-doc.md b/doc/src/shared/dhwheater-doc.md index cc12e4dd2..04a35b3cf 100644 --- a/doc/src/shared/dhwheater-doc.md +++ b/doc/src/shared/dhwheater-doc.md @@ -1,4 +1,4 @@ -**whName** +### whName Optional name of water heater; give after the word “DHWHEATER” if desired. From 6d9b5786b51a7a666be694ae33022f03007ad3a5 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Fri, 25 Jul 2025 15:31:33 -0600 Subject: [PATCH 092/117] Add probes/cullist txt files to .gitignore. --- doc/.gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/.gitignore b/doc/.gitignore index 0b154af86..360e6a803 100644 --- a/doc/.gitignore +++ b/doc/.gitignore @@ -12,4 +12,7 @@ dist/ **/probe-definitions/*.md !**/probe-definitions/index.md +probes.txt +cullist.txt + .DS_Store \ No newline at end of file From 4cba54351dabaacb2e4083cd2a41e7a03585b237 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 28 Jul 2025 11:09:08 -0600 Subject: [PATCH 093/117] Add first-draft of coverage checker. --- doc/src/coverage.py | 588 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 588 insertions(+) create mode 100644 doc/src/coverage.py diff --git a/doc/src/coverage.py b/doc/src/coverage.py new file mode 100644 index 000000000..602b6a75a --- /dev/null +++ b/doc/src/coverage.py @@ -0,0 +1,588 @@ +from pathlib import Path +import re +from typing import Dict, Set, Optional, Any, List +import copy +import subprocess + + +class CoverageCheck: + """ + A class for checking coverage between the output of "cse -c" and the markdown content in docs/input-data (or shared). + """ + + IGNORED_HEADERS = {"related probes", "inverse"} + + # Files in input-data directory that should not be analyzed for coverage. + IGNORED_INPUT_DATA_FILE_PATHS = [".nav.yml", "index.md"] + + # The key is a record name that will be enriched with data members from the content + # in the markdown file in the shared directory. + SHARED = { + "dhwheater": "dhwheater-doc.md", + "dhwloopheater": "dhwheater-doc.md", + } + + # cullist outputs enumerated data members. Docs aliases these with just the "N" postfix. + # For example, cullist outputs "cpStage1", etc. while docs uses "cpStageN". + ALIASES = { + "cpstagen": [ + "cpstage1", + "cpstage2", + "cpstage3", + "cpstage4", + "cpstage5", + "cpstage6", + "cpstage7", + ], + "hpstagen": [ + "hpstage1", + "hpstage2", + "hpstage3", + "hpstage4", + "hpstage5", + "hpstage6", + "hpstage7", + ], + } + + @staticmethod + def md_header(line: str, levels: List[int]) -> Optional[str]: + """ + Checks whether the given line is a heading at the level specified by levels. + + Args: + line: A line of markdown text + levels: List of heading levels (1-6) to match. Defaults to [1]. + + Returns: + The heading value if found and level matches, None otherwise + """ + match = re.match(r"^(#+)\s+(.*)$", line) + if match: + hash_count = len(match.group(1)) + if hash_count in levels: + return match.group(2).strip() + return None + + @staticmethod + def record_header(line: str) -> str | None: + """ + Thin wrapper of md_header for finding h1 record headers. + + Args: + line: A line of markdown text + + Returns: + The record header if found and not ignored, None otherwise + """ + + heading = CoverageCheck.md_header(line, [1]) + + return ( + heading.strip() if heading and not CoverageCheck.ignore(heading) else None + ) + + @staticmethod + def data_item_header(line: str) -> List[str]: + """ + Thin wrapper of md_header for finding h3 data item headers. + + Args: + line: A line of markdown text + + Returns: + The data item header(s) if found and not ignored, None otherwise + """ + + heading = CoverageCheck.md_header(line, [3]) + + if not heading: + return [] + + return [ + result.strip() + for result in heading.split(",") + if not CoverageCheck.ignore(result) + ] + + @staticmethod + def ignore(header: str) -> bool: + """ + Return True if the given header should be ignored. + + Args: + header: Header string to check + + Returns: + True if header should be ignored, False otherwise + """ + h = header.lower() + return h in CoverageCheck.IGNORED_HEADERS + + @staticmethod + def parse_record_document( + content: str, expect_orphan_data_items: Optional[bool] = False + ) -> Dict[str, Set[str]]: + """ + Given the content of a markdown document of a record and its input, return + a RecordInputSet for the records and input fields found in that document. + + Args: + content: The markdown document content + + Returns: + Dictionary mapping record names to sets of input field names + """ + output = {} + current_header = None + + for line in content.splitlines(): + line = line.rstrip() + h = CoverageCheck.record_header(line) + if h and not CoverageCheck.ignore(h): + current_header = h + if current_header not in output: + output[current_header] = set() + else: + input_hdr = CoverageCheck.data_item_header(line) + + if len(input_hdr) == 0: + continue + + if not current_header and "orphan_members" not in output: + output["orphan_members"] = set() + + for ih in input_hdr: + ih_lower_strip = ih.strip().lower() + resolved_heading = ( + CoverageCheck.ALIASES[ih_lower_strip] + if ih_lower_strip in CoverageCheck.ALIASES + else ih_lower_strip + ) + if type(resolved_heading) is list: + for item in resolved_heading: + output[current_header or "orphan_members"].add(item) + else: + output[current_header or "orphan_members"].add(resolved_heading) + + if not expect_orphan_data_items and "orphan_members" in output: + print(output["orphan_members"]) + raise Exception("Found orphan members but expect_orphan_data_items=False") + + return output + + @staticmethod + def read_record_document( + path: str, expect_orphan_data_items: Optional[bool] = False + ) -> Dict[str, Set[str]]: + """ + Given a file path to a markdown document containing record documentation, + return a RecordInputSet for the records and input fields found in that + document. + + Args: + path: Path to the markdown file + + Returns: + Dictionary mapping record names to sets of input field names + """ + with open(path, "r", encoding="utf-8") as f: + content = f.read() + + return CoverageCheck.parse_record_document(content, expect_orphan_data_items) + + @staticmethod + def read_all_record_documents(paths: List[str]) -> Dict[str, Set[str]]: + """ + Given an array of file paths to record documentation, consecutively + construct a RecordInputSet from all of the documents listed. Note: it is an + error for a document to define the same Record Name, Record Input Field + combination. + + Args: + paths: List of file paths to markdown documents + + Returns: + Dictionary mapping record names to sets of input field names + + Raises: + ValueError: If duplicate keys are found + """ + output = {} + for path in paths: + new_output = CoverageCheck.read_record_document(path) + for k in new_output.keys(): + if k in output: + raise ValueError(f"Duplicate keys found: {k} at {path}") + output.update(new_output) + return output + + @staticmethod + def parse_cul_list(content: str) -> Dict[str, Set[str]]: + """ + Given the string content of the results of `cse -c > cullist.txt`, + parse that into a RecordInputSet. + + Args: + content: Content of the cullist.txt file + + Returns: + Dictionary mapping record names to sets of field names + """ + output = {} + current_record = None + + lines = content.splitlines() + for idx, line in enumerate(lines): + if idx <= 3: # Skip first 4 lines + continue + + line = line.rstrip() + record_match = re.match(r"^(\S+).*$", line) + if record_match: + current_record = record_match.group(1).strip() + if current_record not in output: + output[current_record] = set() + elif current_record is not None: + field_match = re.match(r"^ (\S+).*$", line) + if field_match: + output[current_record].add(field_match.group(1).strip()) + + return output + + @staticmethod + def set_differences( + s1: Set[str], + s2: Set[str], + case_matters: bool = False, + keys_to_ignore: Optional[Set[str]] = None, + ) -> Optional[Dict[str, Set[str]]]: + """ + Given two sets and an optional flag that controls case sensitivity, + check for differences between the contents of set 1 and set 2. + + Args: + s1: First set + s2: Second set + case_matters: If True compare with case, else case-insensitive + keys_to_ignore: Set of keys to ignore + + Returns: + Dictionary with 'in_1st_not_2nd' and 'in_2nd_not_1st' keys, or None if no differences + """ + if keys_to_ignore is None: + keys_to_ignore = set() + + if s1 == s2: + return None + + if case_matters: + s1_ = s1 - keys_to_ignore + s2_ = s2 - keys_to_ignore + if s1_ == s2_: + return None + return {"in_1st_not_2nd": s1_ - s2_, "in_2nd_not_1st": s2_ - s1_} + else: + keys_to_ignore_dc = {k.lower() for k in keys_to_ignore} + m1 = {item.lower(): item for item in s1} + m2 = {item.lower(): item for item in s2} + s1_ = set(m1.keys()) - keys_to_ignore_dc + s2_ = set(m2.keys()) - keys_to_ignore_dc + + if s1_ == s2_: + return None + + return { + "in_1st_not_2nd": {m1[k] for k in (s1_ - s2_ - keys_to_ignore_dc)}, + "in_2nd_not_1st": {m2[k] for k in (s2_ - s1_ - keys_to_ignore_dc)}, + } + + @staticmethod + def adjust_map(m: Dict[str, Set[str]]) -> Dict[str, Set[str]]: + """ + Given a map from string to set of string, adjust the map so that fields + with spacing in them get collapsed to the record defined by the first word + through set union. + + Args: + m: Dictionary to adjust + + Returns: + Adjusted dictionary + """ + n = {} + for k, v in m.items(): + new_k = k.split()[0] if " " in k else k + if new_k in n: + n[new_k] = n[new_k].union(v) + else: + n[new_k] = v.copy() + return n + + @staticmethod + def downcase_record_input_set(ris: Dict[str, Set[str]]) -> Dict[str, Set[str]]: + """ + Downcase a record input set. + + Args: + ris: Record input set + + Returns: + Downcased record input set + """ + n = {} + for k, vs in ris.items(): + n[k.lower()] = {v.lower() for v in vs} + return n + + @staticmethod + def record_input_set_differences( + ris1: Dict[str, Set[str]], + ris2: Dict[str, Set[str]], + case_matters: bool = False, + records_to_ignore: Optional[List[str]] = None, + record_fields_to_ignore: Optional[Dict[str, Set[str]]] = None, + ) -> Optional[Dict[str, Any]]: + """ + Given two RecordInputSet objects, compare them and return any differences. + + Args: + ris1: First record input set + ris2: Second record input set + case_matters: Whether case matters in comparison + records_to_ignore: Set of record names to ignore + record_fields_to_ignore: Map of record names to sets of fields to ignore + + Returns: + Dictionary of differences or None if no differences + """ + if records_to_ignore is None: + records_to_ignore = set() + if record_fields_to_ignore is None: + record_fields_to_ignore = {} + + if not case_matters: + # Downcase everything if case doesn't matter + ris1 = {k.lower(): {v.lower() for v in vs} for k, vs in ris1.items()} + ris2 = {k.lower(): {v.lower() for v in vs} for k, vs in ris2.items()} + records_to_ignore = {k.lower() for k in records_to_ignore} + record_fields_to_ignore = { + k.lower(): v for k, v in record_fields_to_ignore.items() + } + + if ris1 == ris2: + return None + + ks1 = set(ris1.keys()) + ks2 = set(ris2.keys()) + key_diffs = CoverageCheck.set_differences( + ks1, ks2, case_matters, records_to_ignore + ) + + out = None + if key_diffs: + out = { + "records_in_1st_not_2nd": key_diffs["in_1st_not_2nd"], + "records_in_2nd_not_1st": key_diffs["in_2nd_not_1st"], + } + + # Check fields + ks = ks1 & ks2 + for k in ks: + if k in records_to_ignore: + continue + + field_ignores = record_fields_to_ignore.get(k, set()) + diffs = CoverageCheck.set_differences( + ris1.get(k, set()), ris2.get(k, set()), case_matters, field_ignores + ) + + if diffs: + if out is None: + out = { + "records_in_1st_not_2nd": None, + "records_in_2nd_not_1st": None, + } + if "field_set_differences" not in out: + out["field_set_differences"] = {} + out["field_set_differences"][k] = diffs + + return out + + @staticmethod + def diffs_to_string( + diffs: Optional[Dict[str, Set[str]]], + name: Optional[str], + k1: str, + k2: str, + a: str, + b: str, + indent: int = 0, + ) -> str: + """ + Given a map of differences, format them as a string report. + + Args: + diffs: Dictionary of differences + name: Name of what the map represents + k1, k2: Keys into the differences map + a, b: Names for the two variations being compared + indent: Number of spaces to indent + + Returns: + Formatted string report + """ + if diffs is None: + return "" + + ind = " " * indent + s = "" + + if name and diffs and (diffs.get(k1) or diffs.get(k2)): + s += f"{name}:\n" + + for k, x, y in [(k1, a, b), (k2, b, a)]: + if diffs.get(k) and diffs[k]: + s += f"{ind}in {x} but not in {y}:\n" + for r in sorted(diffs[k]): + s += f"{ind}- {r}\n" + + return s + + def __init__(self, path_to_cse: Path, path_to_input_data: Path): + self.path_to_cse = path_to_cse + self.path_to_input_data = path_to_input_data + + cullist_raw = subprocess.run( + [self.path_to_cse, "-c"], + capture_output=True, + text=True, + ).stdout + + self.cullist = self.parse_cul_list(cullist_raw) + self.check() + + def drop_name_fields( + self, + ris: Dict[str, Set[str]], + case_sensitive: bool = False, + ) -> Dict[str, Set[str]]: + """ + Given a record input set, drop all fields + that end with "Name" UNLESS they also appear in cullist. + + Args: + ris: Record input set to process + ref: Reference record input set + case_sensitive: Whether to compare case-sensitively + + Returns: + Processed record input set + """ + if not case_sensitive: + ref = self.downcase_record_input_set(self.cullist) + + name_suffix = "Name" if case_sensitive else "name" + n = {} + + for k, vs in ris.items(): + kk = k if case_sensitive else k.lower() + n[k] = set() + for v in vs: + w = v if case_sensitive else v.lower() + if w.endswith(name_suffix) and not (kk in ref and w in ref[kk]): + continue # Skip this field + n[k].add(v) + + return n + + def check(self): + all_file_paths_in_input_data = [ + path + for path in path_to_input_data.iterdir() + if path.is_file() and path.name not in self.IGNORED_INPUT_DATA_FILE_PATHS + ] + + input_data_headings = self.read_all_record_documents( + all_file_paths_in_input_data + ) + + shared_map = {} + for k, v in self.SHARED.items(): + path = self.path_to_input_data.parent.parent / "shared" / v + headings = self.read_record_document(path, expect_orphan_data_items=True) + shared_map[k] = headings["orphan_members"] + + docs_headings = copy.deepcopy(input_data_headings) + for k, v in shared_map.items(): + if k not in docs_headings: + docs_headings[k] = set() + for h in v: + docs_headings[k].add(h) + + docs_headings = self.drop_name_fields(self.adjust_map(docs_headings)) + self.diffs = self.record_input_set_differences( + self.cullist, docs_headings, records_to_ignore=self.IGNORED_HEADERS + ) + + self.passed = self.diffs is None + + return self.passed + + def record_input_set_differences_to_string(self) -> str: + """ + Given the output of record_input_set_differences, format it and return as a string. + + Args: + diffs: Output from record_input_set_differences + a: Name for first set (default: "First") + b: Name for second set (default: "Second") + + Returns: + Formatted string report + """ + a = "cullist" + b = "input-data" + + self.check() + diffs = self.diffs + + if diffs is None: + return f"No changes detected between {a} and {b}" + + s = "" + + if diffs.get("records_in_1st_not_2nd") or diffs.get("records_in_2nd_not_1st"): + s += "RECORD INCONSISTENCIES:\n" + s += CoverageCheck.diffs_to_string( + diffs, None, "records_in_1st_not_2nd", "records_in_2nd_not_1st", a, b, 4 + ) + + if diffs.get("field_set_differences"): + ks = sorted(diffs["field_set_differences"].keys()) + if ks: + s += "DATA FIELD INCONSISTENCIES:\n" + for k in ks: + s += CoverageCheck.diffs_to_string( + diffs["field_set_differences"][k], + k, + "in_1st_not_2nd", + "in_2nd_not_1st", + a, + b, + 4, + ) + + return s + + +if __name__ == "__main__": + path_to_cse = Path(__file__).parent.parent.parent / "builds" / "cse-appleclang-64" + path_to_input_data = Path(__file__).parent / "docs" / "input-data" + + coverage_checker = CoverageCheck(path_to_cse, path_to_input_data) + + if coverage_checker.passed: + print("Passed!") + else: + print(coverage_checker.record_input_set_differences_to_string()) From 353a71b313d7f7865b1dfe25b36d3d15ec078f14 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 28 Jul 2025 14:53:34 -0600 Subject: [PATCH 094/117] Move shared folder into docs folder. Although Mkdocs will issue a warning about unused files, it fixes an issue with running mkdocs serve outside of the src directory using the -f argument. --- doc/src/coverage.py | 2 +- doc/src/docs/input-data/dhwheater.md | 2 +- doc/src/docs/input-data/dhwloopheater.md | 2 +- doc/src/docs/input-data/gain.md | 2 +- doc/src/docs/input-data/meter.md | 2 +- doc/src/docs/input-data/pvarray.md | 2 +- doc/src/{ => docs}/shared/dhwheater-doc.md | 0 doc/src/{ => docs}/shared/enduses.md | 0 doc/src/mkdocs.yml | 4 +--- 9 files changed, 7 insertions(+), 9 deletions(-) rename doc/src/{ => docs}/shared/dhwheater-doc.md (100%) rename doc/src/{ => docs}/shared/enduses.md (100%) diff --git a/doc/src/coverage.py b/doc/src/coverage.py index 602b6a75a..60725e1bb 100644 --- a/doc/src/coverage.py +++ b/doc/src/coverage.py @@ -509,7 +509,7 @@ def check(self): shared_map = {} for k, v in self.SHARED.items(): - path = self.path_to_input_data.parent.parent / "shared" / v + path = self.path_to_input_data.parent / "shared" / v headings = self.read_record_document(path, expect_orphan_data_items=True) shared_map[k] = headings["orphan_members"] diff --git a/doc/src/docs/input-data/dhwheater.md b/doc/src/docs/input-data/dhwheater.md index eeb6f7423..01f652f07 100644 --- a/doc/src/docs/input-data/dhwheater.md +++ b/doc/src/docs/input-data/dhwheater.md @@ -2,4 +2,4 @@ DHWHEATER constructs an object representing a domestic hot water heater (or several if identical). -{% include 'dhwheater-doc.md' %} +{% include 'shared/dhwheater-doc.md' %} diff --git a/doc/src/docs/input-data/dhwloopheater.md b/doc/src/docs/input-data/dhwloopheater.md index a36efb006..99a741646 100644 --- a/doc/src/docs/input-data/dhwloopheater.md +++ b/doc/src/docs/input-data/dhwloopheater.md @@ -2,4 +2,4 @@ DHWHEATERLOOP constructs an object representing a hot water heater dedicated to heating DHWLOOP return water (or several if identical). -{% include 'dhwheater-doc.md' %} +{% include 'shared/dhwheater-doc.md' %} diff --git a/doc/src/docs/input-data/gain.md b/doc/src/docs/input-data/gain.md index d9aa66be8..d4a914b1f 100644 --- a/doc/src/docs/input-data/gain.md +++ b/doc/src/docs/input-data/gain.md @@ -85,7 +85,7 @@ Type: choice Meter end use to which the GAIN's energy use should be accumulated. -{% include 'enduses.md' %} +{% include 'shared/enduses.md' %} {{ diff --git a/doc/src/docs/input-data/meter.md b/doc/src/docs/input-data/meter.md index 50fa6f5bb..9d92801af 100644 --- a/doc/src/docs/input-data/meter.md +++ b/doc/src/docs/input-data/meter.md @@ -4,7 +4,7 @@ A METER object is a user-defined "device" that records energy consumption of equ Meters account for energy use in the following pre-defined categories, called *end uses*. The abbreviations in parentheses are used in MTR report headings (and for gnMeter input, below). You also get a column for the net total on the meter (abbreviated "Tot"). -{% include 'enduses.md' %} +{% include 'shared/enduses.md' %} The user has complete freedom over how many meters are defined and how equipment is assigned to them. At one extreme, a single meter "Electricity" could be defined and have all of electrical uses assigned to it. On the other hand, definition of separate meters "Elect\_Fan1", "Elect\_Fan2", and so forth allows accounting of the electricity use for individual pieces of equipment. Various groupings are possible: for example, in a building with several air handlers, one could separate the energy consumption of the fans from the coils, or one could separate the energy use by air handler, or both ways, depending on the information desired from the run. diff --git a/doc/src/docs/input-data/pvarray.md b/doc/src/docs/input-data/pvarray.md index c6d024de6..a94ac2a27 100644 --- a/doc/src/docs/input-data/pvarray.md +++ b/doc/src/docs/input-data/pvarray.md @@ -38,7 +38,7 @@ Type: choice Meter end use to which the PVARRAY's generated energy should be accumulated. -{% include 'enduses.md' %} +{% include 'shared/enduses.md' %} {{ member_table({ diff --git a/doc/src/shared/dhwheater-doc.md b/doc/src/docs/shared/dhwheater-doc.md similarity index 100% rename from doc/src/shared/dhwheater-doc.md rename to doc/src/docs/shared/dhwheater-doc.md diff --git a/doc/src/shared/enduses.md b/doc/src/docs/shared/enduses.md similarity index 100% rename from doc/src/shared/enduses.md rename to doc/src/docs/shared/enduses.md diff --git a/doc/src/mkdocs.yml b/doc/src/mkdocs.yml index cb36938b0..bc9f87d74 100644 --- a/doc/src/mkdocs.yml +++ b/doc/src/mkdocs.yml @@ -6,7 +6,6 @@ site_url: "https://cse-sim.github.io/cse/" copyright: "© 2025 The CSE Authors. All rights reserved." watch: - main.py - - shared theme: name: material features: @@ -25,8 +24,7 @@ repo_url: https://github.com/cse-sim/cse plugins: - autorefs: resolve_closest: true - - macros: - include_dir: shared + - macros - search - awesome-nav hooks: From 62b4c8d40a5326893a11f6fb1963bab72f490b18 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 28 Jul 2025 15:12:54 -0600 Subject: [PATCH 095/117] Update coverage.py to use command-line arguments for the path to cse and (optionally) the input data directory. --- doc/src/coverage.py | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/doc/src/coverage.py b/doc/src/coverage.py index 60725e1bb..4f8cc3cd3 100644 --- a/doc/src/coverage.py +++ b/doc/src/coverage.py @@ -3,6 +3,7 @@ from typing import Dict, Set, Optional, Any, List import copy import subprocess +import argparse class CoverageCheck: @@ -499,7 +500,7 @@ def drop_name_fields( def check(self): all_file_paths_in_input_data = [ path - for path in path_to_input_data.iterdir() + for path in self.path_to_input_data.iterdir() if path.is_file() and path.name not in self.IGNORED_INPUT_DATA_FILE_PATHS ] @@ -577,10 +578,27 @@ def record_input_set_differences_to_string(self) -> str: if __name__ == "__main__": - path_to_cse = Path(__file__).parent.parent.parent / "builds" / "cse-appleclang-64" - path_to_input_data = Path(__file__).parent / "docs" / "input-data" - - coverage_checker = CoverageCheck(path_to_cse, path_to_input_data) + parser = argparse.ArgumentParser( + description="Coverage Checker for CSE Documenation built with Mkdocs" + ) + parser.add_argument( + "--path_to_cse", + type=str, + help="The path to the CSE executable.", + ) + + parser.add_argument( + "--path_to_input_data", + type=str, + help="The path to the documentation's input-data folder.", + default=((Path(__file__).parent / "docs" / "input-data").resolve().absolute()), + ) + + args = parser.parse_args() + + coverage_checker = CoverageCheck( + Path(args.path_to_cse), Path(args.path_to_input_data) + ) if coverage_checker.passed: print("Passed!") From b7dba477ff123f070ccba2889ee7a833f8e7cdd7 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 28 Jul 2025 17:17:04 -0600 Subject: [PATCH 096/117] Update README. --- doc/README.md | 71 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 63 insertions(+), 8 deletions(-) diff --git a/doc/README.md b/doc/README.md index cb2e75cda..2b5bf2828 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1,15 +1,40 @@ # CSE User Manual -The files in this folder are concerned with building the documentation and website for CSE; specifically, the CSE User Manual. The documentation is built using Material for Mkdocs, a popular theme for Mkdocs, which is built with Python. +The files in this folder are concerned with building the documentation and website for CSE; specifically, the CSE User Manual. The documentation is built using Material for MkDocs, a popular theme for MkDocs, which is built with Python. + +## uv and Python environment + +This project uses [uv](https://docs.astral.sh/uv/) to manage dependencies and python environments. + +See the [uv installation guide](https://docs.astral.sh/uv/getting-started/installation/) to get set up with uv. There are many options for installing uv, including pip/pipx, Homebrew, WinGet, and more. + +## MkDocs CLI + +MkDocs handles most of the functions that are required for developing and building the documentation. See the official [MkDocs documentation](https://www.mkdocs.org/user-guide/cli) for more detail on possible options/configuration when using the MkDocs CLI. + +One option to highlight is the `-f` argument, which allows running MkDocs using the config specified in a location other than the current directory. + +From `cse/doc/src`: + + > uv run mkdocs serve + +From `cse`: + + > uv run mkdocs serve -f doc/src/mkdocs.yml + ## Developing the Docs -Mkdocs includes a dev server which can be helpful during development. +MkDocs includes a dev server which can be helpful during development. > uv run mkdocs serve -The dev serve includes a file watcher, so the docs will be rebuilt when changes are saved. However, because probe definitions are written as part of the on_config hook, the files in the probe-definitions folder are recreated. This can cause an infinite loop of rebuilding. Future work should explore fixing this. One solution might be adding a flag to enable only writing new probe definitions (i.e., skip existing files in the probe-definitions folder). +The dev serve includes a file watcher, so the docs will be rebuilt when changes are saved. + +To have MkDocs only rebuild dirty files, use the `--dirty` flag. WARNING: While the build process can be significantly faster, there are certain limitations to be aware of: +- Links and navigation headings may not work correctly. +- Content shared using the `{% include shared/file.md %}` directive might not trigger a rebuild and/or changes might not be reflected in the new build. ## Building the Docs @@ -21,8 +46,7 @@ To build the documentation, use ## Inserting (Shared) File Content -To include external files within a page, you may use the include directive: - +To include external files within a page, use the include directive: {% include 'enduses.md' %} @@ -71,14 +95,45 @@ To add commas, we must (annoyingly) use the HTML comma entity, `,`. To add `csv_table_from_file` is provided as a convenience wrapper for csv_table. This function takes a file_path as the first argument. The second arugment is a boolean flag for header, as in the regular csv_table. The file_path is expected to be a path to a csv file, so that when loaded, the content can be passed to csv_table as a csv string. {{ - csv_table(file_path, header=False) + csv_table(file_path, header=False) }} ### Coverage Report -A coverage report has not yet been implemented for the current documentation system. +The module `coverage.py` can be used to verify if the headings in the input-data directory contain exact matches (case-insensitive) to the output of `CSE -c`. + +#### Running the coverage check + +The python file can be run from anywhere in the cse directory by calling: + + > uv run path/to/coverage.py --path_to_cse [--path_to_input_data ] + +The coverage checker will internally call `CSE -c` and capture the stdout to a string, which is then parsed and compared with the contents of the input-data directory. If no matches are found, a pass message will be printed. Otherwise, differences in either direction are printed. + +#### Class Variables + +There are a few hard-coded constants (saved as class variables) specified at the top of the `coverage.py` file to be aware of. + +**IGNORED_HEADERS** specifices headers (e.g., record names) that are ignored for the purpose of checking if the docs have full coverage of the `CSE -c` output. + +**IGNORED_INPUT_DATA_FILE_PATHS** includes files in the input-data directory that are not analyzed as part of the coverage check. For example, it should be possible to define headings of any level in `index.md` without triggering a failure in the coverage check. + +**SHARED** is a dictionary/map for record names that contain data members from files shared using the `{% include shared/file.md%}` directive. The coverage check analyzes the raw markdown headings before any rendering by Jinja or other steps in the build process (i.e., before shared content is injected), thus the SHARED class variable allows the coverage check to account for this shared content. The keys are record names and the value is a file in the `shared` directory whose data member headings will be associated with the key/record name for the purpose of the coverage check. + +**ALIASES**: certain headings in the output of `CSE -c` are enumerated, but are simplified in the docs (e.g., **cpStage1, ..., cpStage7** in `CSE -c` output becomes **cpStageN** in the docs). Aliases account for these differences. ## Deploying Built Documents to GitHub Pages -The deploy process is not currently automated. A user must manually commit changes to the gh-pages branch to deploy the latest version of the docs. Future work could explore automating this process as well as leveraging mike to make different versions of the docs available to users. +The documentation can be deployed to GitHub Pages using either the built-in deploy command or by manually committing the built files. + +### Deploy with MkDocs + +The command: + + > uv run mkdocs gh-deploy + +will automatically build and deploy the docs to GitHub pages. + +### Deploy manually +Build the docs using `mkdocs build`, as described above. Then, paste the contents of the resulting `build` directory to the _gh-pages_ branch to manually deploy the latest version of the docs. From b1003d44ec65768be6ac46ea6e400fd12d56e50a Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Fri, 12 Sep 2025 11:59:34 -0600 Subject: [PATCH 097/117] Use Atheneum Forge to initialize python project at root level. Removes the python dependency from the doc folder. There are also a handful of tweaks to the python files to fix lint issues associated with bringing in AF's lint configuration. hooks.py and cnrecs.py both have 'mypy: ignore-errors' at top of file. They should be revisited later. --- .pre-commit-config.yaml | 18 + .python-version | 1 + doc/.pylintrc | 585 ----------------------- doc/pyproject.toml | 29 -- doc/src/coverage.py | 117 ++--- doc/src/hooks.py | 208 +++----- doc/src/main.py | 16 +- doc/src/parsers/base.py | 14 +- doc/src/parsers/cndefns.py | 22 +- doc/src/parsers/cnfields.py | 9 +- doc/src/parsers/cnrecs.py | 326 ++++++------- doc/uv.lock | 738 ----------------------------- forge.toml | 15 + pyproject.toml | 56 +++ uv.lock | 920 ++++++++++++++++++++++++++++++++++++ 15 files changed, 1298 insertions(+), 1776 deletions(-) create mode 100644 .pre-commit-config.yaml create mode 100644 .python-version delete mode 100644 doc/.pylintrc delete mode 100644 doc/pyproject.toml delete mode 100644 doc/uv.lock create mode 100644 forge.toml create mode 100644 pyproject.toml create mode 100644 uv.lock diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 000000000..9fa267e5f --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,18 @@ +repos: +- repo: https://github.com/astral-sh/ruff-pre-commit + # Ruff version. + rev: v0.9.9 + hooks: + # Run the formatter (automatically fixes in-place) + - id: ruff-format + # Run the linter + - id: ruff + args: [ --fix ] +- repo: local + hooks: + - id: mypy + name: mypy + entry: uv run mypy + require_serial: true + language: system + types: [python] \ No newline at end of file diff --git a/.python-version b/.python-version new file mode 100644 index 000000000..24ee5b1be --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.13 diff --git a/doc/.pylintrc b/doc/.pylintrc deleted file mode 100644 index 12335f318..000000000 --- a/doc/.pylintrc +++ /dev/null @@ -1,585 +0,0 @@ -[MASTER] - -# A comma-separated list of package or module names from where C extensions may -# be loaded. Extensions are loading into the active Python interpreter and may -# run arbitrary code. -extension-pkg-allow-list= - -# A comma-separated list of package or module names from where C extensions may -# be loaded. Extensions are loading into the active Python interpreter and may -# run arbitrary code. (This is an alternative name to extension-pkg-allow-list -# for backward compatibility.) -extension-pkg-whitelist= - -# Return non-zero exit code if any of these messages/categories are detected, -# even if score is above --fail-under value. Syntax same as enable. Messages -# specified are enabled, while categories only check already-enabled messages. -fail-on= - -# Specify a score threshold to be exceeded before program exits with error. -fail-under=10.0 - -# Files or directories to be skipped. They should be base names, not paths. -ignore=CVS - -# Add files or directories matching the regex patterns to the ignore-list. The -# regex matches against paths and can be in Posix or Windows format. -ignore-paths= - -# Files or directories matching the regex patterns are skipped. The regex -# matches against base names, not paths. The default value ignores emacs file -# locks -ignore-patterns=^\.# - -# Python code to execute, usually for sys.path manipulation such as -# pygtk.require(). -#init-hook= - -# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the -# number of processors available to use. -jobs=1 - -# Control the amount of potential inferred values when inferring a single -# object. This can help the performance when dealing with large functions or -# complex, nested conditions. -limit-inference-results=100 - -# List of plugins (as comma separated values of python module names) to load, -# usually to register additional checkers. -load-plugins= - -# Pickle collected data for later comparisons. -persistent=yes - -# Minimum Python version to use for version dependent checks. Will default to -# the version used to run pylint. -py-version=3.10 - -# Discover python modules and packages in the file system subtree. -recursive=no - -# When enabled, pylint would attempt to guess common misconfiguration and emit -# user-friendly hints instead of false-positive error messages. -suggestion-mode=yes - -# Allow loading of arbitrary C extensions. Extensions are imported into the -# active Python interpreter and may run arbitrary code. -unsafe-load-any-extension=no - - -[MESSAGES CONTROL] - -# Only show warnings with the listed confidence levels. Leave empty to show -# all. Valid levels: HIGH, CONTROL_FLOW, INFERENCE, INFERENCE_FAILURE, -# UNDEFINED. -confidence= - -# Disable the message, report, category or checker with the given id(s). You -# can either give multiple identifiers separated by comma (,) or put this -# option multiple times (only on the command line, not in the configuration -# file where it should appear only once). You can also use "--disable=all" to -# disable everything first and then re-enable specific checks. For example, if -# you want to run only the similarities checker, you can use "--disable=all -# --enable=similarities". If you want to run only the classes checker, but have -# no Warning level messages displayed, use "--disable=all --enable=classes -# --disable=W". -disable=raw-checker-failed, - bad-inline-option, - locally-disabled, - file-ignored, - suppressed-message, - useless-suppression, - deprecated-pragma, - use-symbolic-message-instead - -# Enable the message, report, category or checker with the given id(s). You can -# either give multiple identifier separated by comma (,) or put this option -# multiple time (only on the command line, not in the configuration file where -# it should appear only once). See also the "--disable" option for examples. -enable=c-extension-no-member - - -[REPORTS] - -# Python expression which should return a score less than or equal to 10. You -# have access to the variables 'fatal', 'error', 'warning', 'refactor', -# 'convention', and 'info' which contain the number of messages in each -# category, as well as 'statement' which is the total number of statements -# analyzed. This score is used by the global evaluation report (RP0004). -evaluation=max(0, 0 if fatal else 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)) - -# Template used to display messages. This is a python new-style format string -# used to format the message information. See doc for all details. -#msg-template= - -# Set the output format. Available formats are text, parseable, colorized, json -# and msvs (visual studio). You can also give a reporter class, e.g. -# mypackage.mymodule.MyReporterClass. -output-format=text - -# Tells whether to display a full report or only the messages. -reports=no - -# Activate the evaluation score. -score=yes - - -[REFACTORING] - -# Maximum number of nested blocks for function / method body -max-nested-blocks=5 - -# Complete name of functions that never returns. When checking for -# inconsistent-return-statements if a never returning function is called then -# it will be considered as an explicit return statement and no message will be -# printed. -never-returning-functions=sys.exit,argparse.parse_error - - -[LOGGING] - -# The type of string formatting that logging methods do. `old` means using % -# formatting, `new` is for `{}` formatting. -logging-format-style=old - -# Logging modules to check that the string format arguments are in logging -# function parameter format. -logging-modules=logging - - -[SPELLING] - -# Limits count of emitted suggestions for spelling mistakes. -max-spelling-suggestions=4 - -# Spelling dictionary name. Available dictionaries: none. To make it work, -# install the 'python-enchant' package. -spelling-dict= - -# List of comma separated words that should be considered directives if they -# appear and the beginning of a comment and should not be checked. -spelling-ignore-comment-directives=fmt: on,fmt: off,noqa:,noqa,nosec,isort:skip,mypy: - -# List of comma separated words that should not be checked. -spelling-ignore-words= - -# A path to a file that contains the private dictionary; one word per line. -spelling-private-dict-file= - -# Tells whether to store unknown words to the private dictionary (see the -# --spelling-private-dict-file option) instead of raising a message. -spelling-store-unknown-words=no - - -[MISCELLANEOUS] - -# List of note tags to take in consideration, separated by a comma. -notes=FIXME, - XXX, - TODO - -# Regular expression of note tags to take in consideration. -#notes-rgx= - - -[TYPECHECK] - -# List of decorators that produce context managers, such as -# contextlib.contextmanager. Add to this list to register other decorators that -# produce valid context managers. -contextmanager-decorators=contextlib.contextmanager - -# List of members which are set dynamically and missed by pylint inference -# system, and so shouldn't trigger E1101 when accessed. Python regular -# expressions are accepted. -generated-members= - -# Tells whether missing members accessed in mixin class should be ignored. A -# class is considered mixin if its name matches the mixin-class-rgx option. -ignore-mixin-members=yes - -# Tells whether to warn about missing members when the owner of the attribute -# is inferred to be None. -ignore-none=yes - -# This flag controls whether pylint should warn about no-member and similar -# checks whenever an opaque object is returned when inferring. The inference -# can return multiple potential results while evaluating a Python object, but -# some branches might not be evaluated, which results in partial inference. In -# that case, it might be useful to still emit no-member and other checks for -# the rest of the inferred objects. -ignore-on-opaque-inference=yes - -# List of class names for which member attributes should not be checked (useful -# for classes with dynamically set attributes). This supports the use of -# qualified names. -ignored-classes=optparse.Values,thread._local,_thread._local - -# List of module names for which member attributes should not be checked -# (useful for modules/projects where namespaces are manipulated during runtime -# and thus existing member attributes cannot be deduced by static analysis). It -# supports qualified module names, as well as Unix pattern matching. -ignored-modules= - -# Show a hint with possible names when a member name was not found. The aspect -# of finding the hint is based on edit distance. -missing-member-hint=yes - -# The minimum edit distance a name should have in order to be considered a -# similar match for a missing member name. -missing-member-hint-distance=1 - -# The total number of similar names that should be taken in consideration when -# showing a hint for a missing member. -missing-member-max-choices=1 - -# Regex pattern to define which classes are considered mixins ignore-mixin- -# members is set to 'yes' -mixin-class-rgx=.*[Mm]ixin - -# List of decorators that change the signature of a decorated function. -signature-mutators= - - -[VARIABLES] - -# List of additional names supposed to be defined in builtins. Remember that -# you should avoid defining new builtins when possible. -additional-builtins= - -# Tells whether unused global variables should be treated as a violation. -allow-global-unused-variables=yes - -# List of names allowed to shadow builtins -allowed-redefined-builtins= - -# List of strings which can identify a callback function by name. A callback -# name must start or end with one of those strings. -callbacks=cb_, - _cb - -# A regular expression matching the name of dummy variables (i.e. expected to -# not be used). -dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ - -# Argument names that match this expression will be ignored. Default to name -# with leading underscore. -ignored-argument-names=_.*|^ignored_|^unused_ - -# Tells whether we should check for unused import in __init__ files. -init-import=no - -# List of qualified module names which can have objects that can redefine -# builtins. -redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io - - -[FORMAT] - -# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. -expected-line-ending-format= - -# Regexp for a line that is allowed to be longer than the limit. -ignore-long-lines=^\s*(# )??$ - -# Number of spaces of indent required inside a hanging or continued line. -indent-after-paren=4 - -# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 -# tab). -indent-string=' ' - -# Maximum number of characters on a single line. -max-line-length=120 - -# Maximum number of lines in a module. -max-module-lines=1000 - -# Allow the body of a class to be on the same line as the declaration if body -# contains single statement. -single-line-class-stmt=no - -# Allow the body of an if to be on the same line as the test if there is no -# else. -single-line-if-stmt=no - - -[SIMILARITIES] - -# Comments are removed from the similarity computation -ignore-comments=yes - -# Docstrings are removed from the similarity computation -ignore-docstrings=yes - -# Imports are removed from the similarity computation -ignore-imports=no - -# Signatures are removed from the similarity computation -ignore-signatures=no - -# Minimum lines number of a similarity. -min-similarity-lines=4 - - -[STRING] - -# This flag controls whether inconsistent-quotes generates a warning when the -# character used as a quote delimiter is used inconsistently within a module. -check-quote-consistency=no - -# This flag controls whether the implicit-str-concat should generate a warning -# on implicit string concatenation in sequences defined over several lines. -check-str-concat-over-line-jumps=no - - -[BASIC] - -# Naming style matching correct argument names. -argument-naming-style=snake_case - -# Regular expression matching correct argument names. Overrides argument- -# naming-style. If left empty, argument names will be checked with the set -# naming style. -#argument-rgx= - -# Naming style matching correct attribute names. -attr-naming-style=snake_case - -# Regular expression matching correct attribute names. Overrides attr-naming- -# style. If left empty, attribute names will be checked with the set naming -# style. -#attr-rgx= - -# Bad variable names which should always be refused, separated by a comma. -bad-names=foo, - bar, - baz, - toto, - tutu, - tata - -# Bad variable names regexes, separated by a comma. If names match any regex, -# they will always be refused -bad-names-rgxs= - -# Naming style matching correct class attribute names. -class-attribute-naming-style=any - -# Regular expression matching correct class attribute names. Overrides class- -# attribute-naming-style. If left empty, class attribute names will be checked -# with the set naming style. -#class-attribute-rgx= - -# Naming style matching correct class constant names. -class-const-naming-style=UPPER_CASE - -# Regular expression matching correct class constant names. Overrides class- -# const-naming-style. If left empty, class constant names will be checked with -# the set naming style. -#class-const-rgx= - -# Naming style matching correct class names. -class-naming-style=PascalCase - -# Regular expression matching correct class names. Overrides class-naming- -# style. If left empty, class names will be checked with the set naming style. -#class-rgx= - -# Naming style matching correct constant names. -const-naming-style=UPPER_CASE - -# Regular expression matching correct constant names. Overrides const-naming- -# style. If left empty, constant names will be checked with the set naming -# style. -#const-rgx= - -# Minimum line length for functions/classes that require docstrings, shorter -# ones are exempt. -docstring-min-length=-1 - -# Naming style matching correct function names. -function-naming-style=snake_case - -# Regular expression matching correct function names. Overrides function- -# naming-style. If left empty, function names will be checked with the set -# naming style. -#function-rgx= - -# Good variable names which should always be accepted, separated by a comma. -good-names=i, - j, - k, - ex, - Run, - _ - -# Good variable names regexes, separated by a comma. If names match any regex, -# they will always be accepted -good-names-rgxs= - -# Include a hint for the correct naming format with invalid-name. -include-naming-hint=no - -# Naming style matching correct inline iteration names. -inlinevar-naming-style=any - -# Regular expression matching correct inline iteration names. Overrides -# inlinevar-naming-style. If left empty, inline iteration names will be checked -# with the set naming style. -#inlinevar-rgx= - -# Naming style matching correct method names. -method-naming-style=snake_case - -# Regular expression matching correct method names. Overrides method-naming- -# style. If left empty, method names will be checked with the set naming style. -#method-rgx= - -# Naming style matching correct module names. -module-naming-style=snake_case - -# Regular expression matching correct module names. Overrides module-naming- -# style. If left empty, module names will be checked with the set naming style. -#module-rgx= - -# Colon-delimited sets of names that determine each other's naming style when -# the name regexes allow several styles. -name-group= - -# Regular expression which should only match function or class names that do -# not require a docstring. -no-docstring-rgx=^_ - -# List of decorators that produce properties, such as abc.abstractproperty. Add -# to this list to register other decorators that produce valid properties. -# These decorators are taken in consideration only for invalid-name. -property-classes=abc.abstractproperty - -# Regular expression matching correct type variable names. If left empty, type -# variable names will be checked with the set naming style. -#typevar-rgx= - -# Naming style matching correct variable names. -variable-naming-style=snake_case - -# Regular expression matching correct variable names. Overrides variable- -# naming-style. If left empty, variable names will be checked with the set -# naming style. -variable-rgx=[a-z] # Allow single-letter variables (useful in list comprehensions, exception propagation, etc.) - - -[CLASSES] - -# Warn about protected attribute access inside special methods -check-protected-access-in-special-methods=no - -# List of method names used to declare (i.e. assign) instance attributes. -defining-attr-methods=__init__, - __new__, - setUp, - __post_init__ - -# List of member names, which should be excluded from the protected access -# warning. -exclude-protected=_asdict, - _fields, - _replace, - _source, - _make - -# List of valid names for the first argument in a class method. -valid-classmethod-first-arg=cls - -# List of valid names for the first argument in a metaclass class method. -valid-metaclass-classmethod-first-arg=cls - - -[IMPORTS] - -# List of modules that can be imported at any level, not just the top level -# one. -allow-any-import-level= - -# Allow wildcard imports from modules that define __all__. -allow-wildcard-with-all=no - -# Analyse import fallback blocks. This can be used to support both Python 2 and -# 3 compatible code, which means that the block might have code that exists -# only in one or another interpreter, leading to false positives when analysed. -analyse-fallback-blocks=no - -# Deprecated modules which should not be used, separated by a comma. -deprecated-modules= - -# Output a graph (.gv or any supported image format) of external dependencies -# to the given file (report RP0402 must not be disabled). -ext-import-graph= - -# Output a graph (.gv or any supported image format) of all (i.e. internal and -# external) dependencies to the given file (report RP0402 must not be -# disabled). -import-graph= - -# Output a graph (.gv or any supported image format) of internal dependencies -# to the given file (report RP0402 must not be disabled). -int-import-graph= - -# Force import order to recognize a module as part of the standard -# compatibility libraries. -known-standard-library= - -# Force import order to recognize a module as part of a third party library. -known-third-party=enchant - -# Couples of modules and preferred modules, separated by a comma. -preferred-modules= - - -[DESIGN] - -# List of regular expressions of class ancestor names to ignore when counting -# public methods (see R0903) -exclude-too-few-public-methods= - -# List of qualified class names to ignore when counting class parents (see -# R0901) -ignored-parents= - -# Maximum number of arguments for function / method. -max-args=5 - -# Maximum number of attributes for a class (see R0902). -max-attributes=7 - -# Maximum number of boolean expressions in an if statement (see R0916). -max-bool-expr=5 - -# Maximum number of branch for function / method body. -max-branches=12 - -# Maximum number of locals for function / method body. -max-locals=15 - -# Maximum number of parents for a class (see R0901). -max-parents=7 - -# Maximum number of public methods for a class (see R0904). -max-public-methods=20 - -# Maximum number of return / yield for function / method body. -max-returns=6 - -# Maximum number of statements in function / method body. -max-statements=50 - -# Minimum number of public methods for a class (see R0903). -min-public-methods=2 - - -[EXCEPTIONS] - -# Exceptions that will emit a warning when being caught. Defaults to -# "BaseException, Exception". -overgeneral-exceptions=BaseException, - Exception diff --git a/doc/pyproject.toml b/doc/pyproject.toml deleted file mode 100644 index db9ae0927..000000000 --- a/doc/pyproject.toml +++ /dev/null @@ -1,29 +0,0 @@ -[project] -name = "CSE-documentation" -version = "0.1.0" -description = "Source code for CSE documentation website" -authors = [{ name = "The CSE Authors" }] -license = "BSD-3" -readme = "README.md" -keywords = ["cse", "energy-modeling", "simulation", "documentation"] -requires-python = ">=3.12" -dependencies = [ - "mkdocs-material", - "mkdocs-autorefs>=1.3.1", - "mkdocs-macros-plugin>=1.3.7", - "mkdocs-awesome-nav>=3.1.1", - "pyyaml>=6.0.2", - "python-slugify>=8.0.4", - "beautifulsoup4>=4.13.4", -] - - -[tool.uv] -dev-dependencies = [ - "ruff>=0.9.9", -] - -[tool.mypy] -disallow_incomplete_defs = true -no_implicit_optional = true -check_untyped_defs = true diff --git a/doc/src/coverage.py b/doc/src/coverage.py index 4f8cc3cd3..7f170ffdd 100644 --- a/doc/src/coverage.py +++ b/doc/src/coverage.py @@ -1,17 +1,20 @@ -from pathlib import Path -import re -from typing import Dict, Set, Optional, Any, List +import argparse import copy +import re import subprocess -import argparse +from pathlib import Path +from typing import Any, Dict, List, Optional, Set + +SKIP_LINE_COUNT = 4 class CoverageCheck: """ - A class for checking coverage between the output of "cse -c" and the markdown content in docs/input-data (or shared). + A class for checking coverage between the output of "cse -c", + and the markdown content in docs/input-data (or shared). """ - IGNORED_HEADERS = {"related probes", "inverse"} + IGNORED_HEADERS = ["related probes", "inverse"] # Files in input-data directory that should not be analyzed for coverage. IGNORED_INPUT_DATA_FILE_PATHS = [".nav.yml", "index.md"] @@ -79,9 +82,7 @@ def record_header(line: str) -> str | None: heading = CoverageCheck.md_header(line, [1]) - return ( - heading.strip() if heading and not CoverageCheck.ignore(heading) else None - ) + return heading.strip() if heading and not CoverageCheck.ignore(heading) else None @staticmethod def data_item_header(line: str) -> List[str]: @@ -100,11 +101,7 @@ def data_item_header(line: str) -> List[str]: if not heading: return [] - return [ - result.strip() - for result in heading.split(",") - if not CoverageCheck.ignore(result) - ] + return [result.strip() for result in heading.split(",") if not CoverageCheck.ignore(result)] @staticmethod def ignore(header: str) -> bool: @@ -121,9 +118,7 @@ def ignore(header: str) -> bool: return h in CoverageCheck.IGNORED_HEADERS @staticmethod - def parse_record_document( - content: str, expect_orphan_data_items: Optional[bool] = False - ) -> Dict[str, Set[str]]: + def parse_record_document(content: str, expect_orphan_data_items: Optional[bool] = False) -> Dict[str, Set[str]]: """ Given the content of a markdown document of a record and its input, return a RecordInputSet for the records and input fields found in that document. @@ -134,18 +129,18 @@ def parse_record_document( Returns: Dictionary mapping record names to sets of input field names """ - output = {} + output: Dict[str, Set[str]] = {} current_header = None for line in content.splitlines(): - line = line.rstrip() - h = CoverageCheck.record_header(line) + stripped_line = line.rstrip() + h = CoverageCheck.record_header(stripped_line) if h and not CoverageCheck.ignore(h): current_header = h if current_header not in output: output[current_header] = set() else: - input_hdr = CoverageCheck.data_item_header(line) + input_hdr = CoverageCheck.data_item_header(stripped_line) if len(input_hdr) == 0: continue @@ -163,7 +158,7 @@ def parse_record_document( if type(resolved_heading) is list: for item in resolved_heading: output[current_header or "orphan_members"].add(item) - else: + elif type(resolved_heading) is str: output[current_header or "orphan_members"].add(resolved_heading) if not expect_orphan_data_items and "orphan_members" in output: @@ -173,9 +168,7 @@ def parse_record_document( return output @staticmethod - def read_record_document( - path: str, expect_orphan_data_items: Optional[bool] = False - ) -> Dict[str, Set[str]]: + def read_record_document(path: Path, expect_orphan_data_items: Optional[bool] = False) -> Dict[str, Set[str]]: """ Given a file path to a markdown document containing record documentation, return a RecordInputSet for the records and input fields found in that @@ -193,7 +186,7 @@ def read_record_document( return CoverageCheck.parse_record_document(content, expect_orphan_data_items) @staticmethod - def read_all_record_documents(paths: List[str]) -> Dict[str, Set[str]]: + def read_all_record_documents(paths: List[Path]) -> Dict[str, Set[str]]: """ Given an array of file paths to record documentation, consecutively construct a RecordInputSet from all of the documents listed. Note: it is an @@ -230,22 +223,22 @@ def parse_cul_list(content: str) -> Dict[str, Set[str]]: Returns: Dictionary mapping record names to sets of field names """ - output = {} + output: Dict[str, Set[str]] = {} current_record = None lines = content.splitlines() for idx, line in enumerate(lines): - if idx <= 3: # Skip first 4 lines + if idx < SKIP_LINE_COUNT: # Skip first 4 lines continue - line = line.rstrip() - record_match = re.match(r"^(\S+).*$", line) + stripped_line = line.rstrip() + record_match = re.match(r"^(\S+).*$", stripped_line) if record_match: current_record = record_match.group(1).strip() if current_record not in output: output[current_record] = set() elif current_record is not None: - field_match = re.match(r"^ (\S+).*$", line) + field_match = re.match(r"^ (\S+).*$", stripped_line) if field_match: output[current_record].add(field_match.group(1).strip()) @@ -311,7 +304,7 @@ def adjust_map(m: Dict[str, Set[str]]) -> Dict[str, Set[str]]: Returns: Adjusted dictionary """ - n = {} + n: Dict[str, Set[str]] = {} for k, v in m.items(): new_k = k.split()[0] if " " in k else k if new_k in n: @@ -358,7 +351,7 @@ def record_input_set_differences( Dictionary of differences or None if no differences """ if records_to_ignore is None: - records_to_ignore = set() + records_to_ignore = [] if record_fields_to_ignore is None: record_fields_to_ignore = {} @@ -366,21 +359,17 @@ def record_input_set_differences( # Downcase everything if case doesn't matter ris1 = {k.lower(): {v.lower() for v in vs} for k, vs in ris1.items()} ris2 = {k.lower(): {v.lower() for v in vs} for k, vs in ris2.items()} - records_to_ignore = {k.lower() for k in records_to_ignore} - record_fields_to_ignore = { - k.lower(): v for k, v in record_fields_to_ignore.items() - } + records_to_ignore_set = {k.lower() for k in records_to_ignore} + record_fields_to_ignore = {k.lower(): v for k, v in record_fields_to_ignore.items()} if ris1 == ris2: return None ks1 = set(ris1.keys()) ks2 = set(ris2.keys()) - key_diffs = CoverageCheck.set_differences( - ks1, ks2, case_matters, records_to_ignore - ) + key_diffs = CoverageCheck.set_differences(ks1, ks2, case_matters, records_to_ignore_set) - out = None + out: Optional[Dict[str, Any]] = None if key_diffs: out = { "records_in_1st_not_2nd": key_diffs["in_1st_not_2nd"], @@ -394,9 +383,7 @@ def record_input_set_differences( continue field_ignores = record_fields_to_ignore.get(k, set()) - diffs = CoverageCheck.set_differences( - ris1.get(k, set()), ris2.get(k, set()), case_matters, field_ignores - ) + diffs = CoverageCheck.set_differences(ris1.get(k, set()), ris2.get(k, set()), case_matters, field_ignores) if diffs: if out is None: @@ -411,7 +398,7 @@ def record_input_set_differences( return out @staticmethod - def diffs_to_string( + def diffs_to_string( # noqa: PLR0913 diffs: Optional[Dict[str, Set[str]]], name: Optional[str], k1: str, @@ -454,11 +441,7 @@ def __init__(self, path_to_cse: Path, path_to_input_data: Path): self.path_to_cse = path_to_cse self.path_to_input_data = path_to_input_data - cullist_raw = subprocess.run( - [self.path_to_cse, "-c"], - capture_output=True, - text=True, - ).stdout + cullist_raw = subprocess.run([self.path_to_cse, "-c"], capture_output=True, text=True, check=True).stdout self.cullist = self.parse_cul_list(cullist_raw) self.check() @@ -484,7 +467,7 @@ def drop_name_fields( ref = self.downcase_record_input_set(self.cullist) name_suffix = "Name" if case_sensitive else "name" - n = {} + n: Dict[str, Set[str]] = {} for k, vs in ris.items(): kk = k if case_sensitive else k.lower() @@ -504,22 +487,20 @@ def check(self): if path.is_file() and path.name not in self.IGNORED_INPUT_DATA_FILE_PATHS ] - input_data_headings = self.read_all_record_documents( - all_file_paths_in_input_data - ) + input_data_headings = self.read_all_record_documents(all_file_paths_in_input_data) shared_map = {} - for k, v in self.SHARED.items(): - path = self.path_to_input_data.parent / "shared" / v + for k_shared, v_shared in self.SHARED.items(): + path = self.path_to_input_data.parent / "shared" / v_shared headings = self.read_record_document(path, expect_orphan_data_items=True) - shared_map[k] = headings["orphan_members"] + shared_map[k_shared] = headings["orphan_members"] docs_headings = copy.deepcopy(input_data_headings) - for k, v in shared_map.items(): - if k not in docs_headings: - docs_headings[k] = set() - for h in v: - docs_headings[k].add(h) + for k_map, v_map in shared_map.items(): + if k_map not in docs_headings: + docs_headings[k_map] = set() + for h in v_map: + docs_headings[k_map].add(h) docs_headings = self.drop_name_fields(self.adjust_map(docs_headings)) self.diffs = self.record_input_set_differences( @@ -555,9 +536,7 @@ def record_input_set_differences_to_string(self) -> str: if diffs.get("records_in_1st_not_2nd") or diffs.get("records_in_2nd_not_1st"): s += "RECORD INCONSISTENCIES:\n" - s += CoverageCheck.diffs_to_string( - diffs, None, "records_in_1st_not_2nd", "records_in_2nd_not_1st", a, b, 4 - ) + s += CoverageCheck.diffs_to_string(diffs, None, "records_in_1st_not_2nd", "records_in_2nd_not_1st", a, b, 4) if diffs.get("field_set_differences"): ks = sorted(diffs["field_set_differences"].keys()) @@ -578,9 +557,7 @@ def record_input_set_differences_to_string(self) -> str: if __name__ == "__main__": - parser = argparse.ArgumentParser( - description="Coverage Checker for CSE Documenation built with Mkdocs" - ) + parser = argparse.ArgumentParser(description="Coverage Checker for CSE Documenation built with Mkdocs") parser.add_argument( "--path_to_cse", type=str, @@ -596,9 +573,7 @@ def record_input_set_differences_to_string(self) -> str: args = parser.parse_args() - coverage_checker = CoverageCheck( - Path(args.path_to_cse), Path(args.path_to_input_data) - ) + coverage_checker = CoverageCheck(Path(args.path_to_cse), Path(args.path_to_input_data)) if coverage_checker.passed: print("Passed!") diff --git a/doc/src/hooks.py b/doc/src/hooks.py index 28caa24d0..88830769a 100644 --- a/doc/src/hooks.py +++ b/doc/src/hooks.py @@ -1,16 +1,16 @@ -# Note: Edits to hooks do not get captured by MkDocs' built-in reloading mechanism. +# mypy: ignore-errors +# # Note: Edits to hooks do not get captured by MkDocs' built-in reloading mechanism. # If you change the hooks, you must manually stop and restart the server. import copy import re - -from bs4 import BeautifulSoup from pathlib import Path -from slugify import slugify -from typing import Optional, TypedDict, List +from typing import List, Optional, TypedDict +from bs4 import BeautifulSoup from parsers.cndefns import DefinitionsParser from parsers.cnfields import FieldsParser from parsers.cnrecs import Field, FieldGroup, Record, RecordsParser +from slugify import slugify class RecordPrefixClass(TypedDict, total=False): @@ -75,7 +75,7 @@ class SourcePaths(TypedDict): cnrecs: Path -def get_visible_data_members_by_group(group: FieldGroup): +def get_visible_data_members_by_group(group: FieldGroup) -> list[Field]: members = group.get("members", []) return list( @@ -86,14 +86,14 @@ def get_visible_data_members_by_group(group: FieldGroup): ) -def get_resolved_probe_name(member, prefix: Optional[str] = None): +def get_resolved_probe_name(member: Field, prefix: Optional[str] = None) -> str: # TODO: Fix at parser level. clean_name = member["name"].replace(";", "") return f"{prefix + '.' if prefix else ''}{clean_name}{'[index]' if 'array' in member else ''}" -def get_resolved_comment_string(comments: list[str]): +def get_resolved_comment_string(comments: list[str]) -> str: if len(comments) == 0: return "" elif len(comments) == 1: @@ -103,23 +103,15 @@ def get_resolved_comment_string(comments: list[str]): return f"
    \n{items}\n
" -def is_visible_noname_nest_member(member): - return ( - member.get("nest", None) is not None - and member.get("noname", False) - and not member.get("hide", False) - ) +def is_visible_noname_nest_member(member: Field) -> bool: + return member.get("nest", None) is not None and member.get("noname", False) and not member.get("hide", False) -def is_visible_named_nest_member(member): - return ( - member.get("nest", None) is not None - and not member.get("noname", False) - and not member.get("hide", False) - ) +def is_visible_named_nest_member(member: Field) -> bool: + return member.get("nest", None) is not None and not member.get("noname", False) and not member.get("hide", False) -def attach_forward_variability_directives(member, forward_variability_directives): +def attach_forward_variability_directives(member: Field, forward_variability_directives: set[str]) -> Field | None: if "hide" in member: return None @@ -141,9 +133,7 @@ class ProbeWriter: def __init__(self, paths: SourcePaths, destination_dir: Path): self.cndefns = DefinitionsParser(paths["cndefns"]).parse() self.cnfields = FieldsParser(paths["cnfields"]).parse() - self.cnrecs = RecordsParser( - paths["cnrecs"], self.cndefns, self.cnfields - ).parse() + self.cnrecs = RecordsParser(paths["cnrecs"], self.cndefns, self.cnfields).parse() self.process_cnrecs() self.destination_dir = destination_dir @@ -161,9 +151,7 @@ def strip_prefix(self, name: str, prefix: RecordPrefix): resolved_prefix = prefix if isinstance(prefix, str) else prefix["value"] - return ( - name[len(resolved_prefix) :] if name.startswith(resolved_prefix) else name - ) + return name[len(resolved_prefix) :] if name.startswith(resolved_prefix) else name def process_cnrecs(self): """Strips all record prefixes.""" @@ -179,13 +167,11 @@ def process_cnrecs(self): for member in data_members: if "name" not in member: - raise Exception( - f"Could not find name for data member: {member}" - ) + raise Exception(f"Could not find name for data member: {member}") member["name"] = self.strip_prefix(member["name"], prefix) - def get_field_groups_by_record( + def get_field_groups_by_record( # noqa: PLR0912 self, record: Record, forward_variability_directives: Optional[str] = [] ) -> List[FieldGroup]: if not record: @@ -200,9 +186,7 @@ def get_field_groups_by_record( if not baseclass: raise Exception(f"Could not find baseclass: {baseclass_id}") - new_field_groups += self.get_field_groups_by_record( - baseclass, forward_variability_directives - ) + new_field_groups += self.get_field_groups_by_record(baseclass, forward_variability_directives) field_groups = record.get("field_groups", []) for field_group in field_groups: @@ -228,25 +212,18 @@ def get_field_groups_by_record( # New forwarded directives include any previous forwards plus any # directives attached to the current noname nest record - merged_variability_directives = set( - member.get("variability_directives", []) - ) - merged_variability_directives.update( - forward_variability_directives - ) + merged_variability_directives = set(member.get("variability_directives", [])) + merged_variability_directives.update(forward_variability_directives) new_field_groups += self.get_field_groups_by_record( nest_record, list(merged_variability_directives) ) + elif "hide" in member: + continue else: - if "hide" in member: - continue - else: - enriched_member = attach_forward_variability_directives( - member, forward_variability_directives - ) - new_members.append(enriched_member) + enriched_member = attach_forward_variability_directives(member, forward_variability_directives) + new_members.append(enriched_member) if len(new_members) > 0: new_field_group = {"members": new_members} @@ -263,9 +240,7 @@ def get_field_groups_by_record( if "hide" in member: continue else: - enriched_member = attach_forward_variability_directives( - member, forward_variability_directives - ) + enriched_member = attach_forward_variability_directives(member, forward_variability_directives) new_members.append(enriched_member) new_field_group: FieldGroup = {"members": new_members} @@ -301,9 +276,7 @@ def get_array_length_from_define_statement(self, definition, value): def get_resolved_array_length(self, member, record_id): if "array" not in member: - raise Exception( - "To get resolved array length, the data member must be an array." - ) + raise Exception("To get resolved array length, the data member must be an array.") try: return int(member["array"]) @@ -318,9 +291,7 @@ def get_resolved_array_length(self, member, record_id): if len(defines) > 0: # added to make debugging easier. for item in defines: if value in item["define"]: - return self.get_array_length_from_define_statement( - item["define"], value - ) + return self.get_array_length_from_define_statement(item["define"], value) # If we couldn't parse the value as a number or find the corresponding definiton in the data member's defines or # in the definitions in cndefn.h, simply return the string that is present. @@ -346,13 +317,9 @@ def get_resolved_probe_type(self, member, record_id): self.types.add(base_probe_type or "") - resolved_array_length = ( - self.get_resolved_array_length(member, record_id) - if "array" in member - else None - ) + resolved_array_length = self.get_resolved_array_length(member, record_id) if "array" in member else None - return f"{mapped_probe_type}{" " if mapped_probe_type and resolved_array_length else ""}{f'Array [{resolved_array_length}]' if 'array' in member else ''}" + return f"{mapped_probe_type}{' ' if mapped_probe_type and resolved_array_length else ''}{f'Array [{resolved_array_length}]' if 'array' in member else ''}" # noqa: E501 def get_appended_record( self, @@ -381,11 +348,9 @@ def get_appended_record( - """ + """ # noqa: E501 - def resolve_directive( - self, args: list[str], options: list[str], fallback: str | None = None - ) -> str: + def resolve_directive(self, args: list[str], options: list[str], fallback: str | None = None) -> str: for opt in options: if opt in args: return opt @@ -414,36 +379,23 @@ def get_resolved_variability_directives_string(self, member: Field) -> str: return "" resolved_frequency = self.resolve_directive(directives, FREQUENCY_DIRECTIVES) - resolved_availability = self.resolve_directive( - directives, AVAILABILITY_DIRECTIVES, fallback="b" - ) + resolved_availability = self.resolve_directive(directives, AVAILABILITY_DIRECTIVES, fallback="b") if not resolved_frequency: - self.members_with_no_frequency_directive.add( - f"{member['name'], member['type']}" - ) + self.members_with_no_frequency_directive.add(f"{member['name'], member['type']}") - self.variability_combinations.add( - f"{resolved_frequency},{resolved_availability}" - ) + self.variability_combinations.add(f"{resolved_frequency},{resolved_availability}") try: return DESCRIPTION_MAP[resolved_frequency][resolved_availability] except KeyError: return "Unknown" - def get_data_member_row( - self, member: Field, record_id, probe_name_prefix: Optional[str] - ): - + def get_data_member_row(self, member: Field, record_id, probe_name_prefix: Optional[str]): resolved_name = get_resolved_probe_name(member, probe_name_prefix) resolved_type = self.get_resolved_probe_type(member, record_id) - resolved_variability_directives_string = ( - self.get_resolved_variability_directives_string(member) - ) - resolved_comment_string = get_resolved_comment_string( - member.get("comments", []) - ) + resolved_variability_directives_string = self.get_resolved_variability_directives_string(member) + resolved_comment_string = get_resolved_comment_string(member.get("comments", [])) appended_record = self.get_appended_record(member, resolved_name) @@ -457,9 +409,7 @@ def get_data_member_row( + appended_record ) - def get_field_group_table_string( - self, group, record_id, probe_name_prefix: Optional[str] - ): + def get_field_group_table_string(self, group, record_id, probe_name_prefix: Optional[str]): visible_data_members = get_visible_data_members_by_group(group) if len(visible_data_members) == 0: @@ -486,15 +436,12 @@ def get_field_group_table_string( def write_probes_by_record(self, record: Record): result = [f"---\ntitle: {record['name']}\n---"] - result += [f"[](){{ #p_{record["name"].lower()} }}"] + result += [f"[](){{ #p_{record['name'].lower()} }}"] resolved_field_groups = self.get_field_groups_by_record(record, []) - result += [ - self.get_field_group_table_string(group, record["id"], None) - for group in resolved_field_groups - ] + result += [self.get_field_group_table_string(group, record["id"], None) for group in resolved_field_groups] - filename = f"{record["name"]}.md" + filename = f"{record['name']}.md" path = self.destination_dir / filename new_content = "".join(result) @@ -528,9 +475,7 @@ def write_all_probes(self): records.append(record_copy) break - for record in filter( - lambda r: r["type"] == "RAT" and "hideall" not in r, records - ): + for record in filter(lambda r: r["type"] == "RAT" and "hideall" not in r, records): self.write_probes_by_record(record) @@ -588,39 +533,19 @@ def on_config(config, **kwargs): "ahCzCzns": slugify("ahWzCzns, ahCzCzns"), "chAuxOnMtr": slugify("chAuxOnMtr, chAuxOffMtr, chAuxFullOffMtr, chAuxOnAtAllMtr"), "chAuxOffMtr": slugify("chAuxOnMtr, chAuxOffMtr, chAuxFullOffMtr, chAuxOnAtAllMtr"), - "chAuxFullOffMtr": slugify( - "chAuxOnMtr, chAuxOffMtr, chAuxFullOffMtr, chAuxOnAtAllMtr" - ), - "chAuxOnAtAllMtr": slugify( - "chAuxOnMtr, chAuxOffMtr, chAuxFullOffMtr, chAuxOnAtAllMtr" - ), + "chAuxFullOffMtr": slugify("chAuxOnMtr, chAuxOffMtr, chAuxFullOffMtr, chAuxOnAtAllMtr"), + "chAuxOnAtAllMtr": slugify("chAuxOnMtr, chAuxOffMtr, chAuxFullOffMtr, chAuxOnAtAllMtr"), "rsLoadMtr": slugify("rsLoadMtr, rsHtgLoadMtr, rsClgLoadMtr"), "rsHtgLoadMtr": slugify("rsLoadMtr, rsHtgLoadMtr, rsClgLoadMtr"), "rsClgLoadMtr": slugify("rsLoadMtr, rsHtgLoadMtr, rsClgLoadMtr"), - "rsSrcSideLoadMtr": slugify( - "rsSrcSideLoadMtr, rsHtgSrcSideLoadMtr, rsClgSrcSideLoadMtr" - ), - "rsHtgSrcSideLoadMtr": slugify( - "rsSrcSideLoadMtr, rsHtgSrcSideLoadMtr, rsClgSrcSideLoadMtr" - ), - "rsClgSrcSideLoadMtr": slugify( - "rsSrcSideLoadMtr, rsHtgSrcSideLoadMtr, rsClgSrcSideLoadMtr" - ), - "sfExCTGrnd": slugify( - "sfExCTGrnd, sfExCTaDbAvg07, sfExCTaDbAvg14, sfExCTaDbAvg31, sfExCTaDbAvgYr" - ), - "sfExCTaDbAvg07": slugify( - "sfExCTGrnd, sfExCTaDbAvg07, sfExCTaDbAvg14, sfExCTaDbAvg31, sfExCTaDbAvgYr" - ), - "sfExCTaDbAvg14": slugify( - "sfExCTGrnd, sfExCTaDbAvg07, sfExCTaDbAvg14, sfExCTaDbAvg31, sfExCTaDbAvgYr" - ), - "sfExCTaDbAvg31": slugify( - "sfExCTGrnd, sfExCTaDbAvg07, sfExCTaDbAvg14, sfExCTaDbAvg31, sfExCTaDbAvgYr" - ), - "sfExCTaDbAvgYr": slugify( - "sfExCTGrnd, sfExCTaDbAvg07, sfExCTaDbAvg14, sfExCTaDbAvg31, sfExCTaDbAvgYr" - ), + "rsSrcSideLoadMtr": slugify("rsSrcSideLoadMtr, rsHtgSrcSideLoadMtr, rsClgSrcSideLoadMtr"), + "rsHtgSrcSideLoadMtr": slugify("rsSrcSideLoadMtr, rsHtgSrcSideLoadMtr, rsClgSrcSideLoadMtr"), + "rsClgSrcSideLoadMtr": slugify("rsSrcSideLoadMtr, rsHtgSrcSideLoadMtr, rsClgSrcSideLoadMtr"), + "sfExCTGrnd": slugify("sfExCTGrnd, sfExCTaDbAvg07, sfExCTaDbAvg14, sfExCTaDbAvg31, sfExCTaDbAvgYr"), + "sfExCTaDbAvg07": slugify("sfExCTGrnd, sfExCTaDbAvg07, sfExCTaDbAvg14, sfExCTaDbAvg31, sfExCTaDbAvgYr"), + "sfExCTaDbAvg14": slugify("sfExCTGrnd, sfExCTaDbAvg07, sfExCTaDbAvg14, sfExCTaDbAvg31, sfExCTaDbAvgYr"), + "sfExCTaDbAvg31": slugify("sfExCTGrnd, sfExCTaDbAvg07, sfExCTaDbAvg14, sfExCTaDbAvg31, sfExCTaDbAvgYr"), + "sfExCTaDbAvgYr": slugify("sfExCTGrnd, sfExCTaDbAvg07, sfExCTaDbAvg14, sfExCTaDbAvg31, sfExCTaDbAvgYr"), "cpStage": slugify("cpStageN"), "hpStage": slugify("hpStageN"), "whFAdjElec": slugify("whFAdjElec, whFAdjFuel"), @@ -629,21 +554,11 @@ def on_config(config, **kwargs): "whInHtLoopRet": slugify("whInHtSupply, whInHtLoopRet"), "rsFChgC": slugify("rsFChgC, rsFChg"), "rsFChg": slugify("rsFChgC, rsFChg"), - "wsFaucetCount": slugify( - "wsFaucetCount, wsShowerCount, wsBathCount, wsCWashrCount, wsDWashrCount" - ), - "wsShowerCount": slugify( - "wsFaucetCount, wsShowerCount, wsBathCount, wsCWashrCount, wsDWashrCount" - ), - "wsBathCount": slugify( - "wsFaucetCount, wsShowerCount, wsBathCount, wsCWashrCount, wsDWashrCount" - ), - "wsCWashrCount": slugify( - "wsFaucetCount, wsShowerCount, wsBathCount, wsCWashrCount, wsDWashrCount" - ), - "wsDWashrCount": slugify( - "wsFaucetCount, wsShowerCount, wsBathCount, wsCWashrCount, wsDWashrCount" - ), + "wsFaucetCount": slugify("wsFaucetCount, wsShowerCount, wsBathCount, wsCWashrCount, wsDWashrCount"), + "wsShowerCount": slugify("wsFaucetCount, wsShowerCount, wsBathCount, wsCWashrCount, wsDWashrCount"), + "wsBathCount": slugify("wsFaucetCount, wsShowerCount, wsBathCount, wsCWashrCount, wsDWashrCount"), + "wsCWashrCount": slugify("wsFaucetCount, wsShowerCount, wsBathCount, wsCWashrCount, wsDWashrCount"), + "wsDWashrCount": slugify("wsFaucetCount, wsShowerCount, wsBathCount, wsCWashrCount, wsDWashrCount"), } @@ -690,8 +605,9 @@ def on_config(config, **kwargs): \b ({"|".join(escaped)}) # group(1) = base heading # TODO: Also allow trailing (s)? - # TODO: Do we even need to capture this? Maybe we can simply remove word boundary, then only the keyword has that anchor? - # (i.e., then the link [ABCs][abc] would be updated to [ABC][abc]s, so the ending 's' is not part of the link.) + # TODO: Do we even need to capture this? Maybe we can simply remove word boundary, + # then only the keyword has that anchor? + # (i.e., then the link [ABCs][abc] would be updated to [ABC][abc]s,so the ending 's' is not part of the link.) ((?:s|ing|))? # group(2) = optional trailing 's' or 'ing' \b (?!\]) # not followed by ] @@ -761,9 +677,7 @@ def on_page_content(html, page, config, files): for directive_p in directive_paragraphs: if directive_p.string and DIRECTIVE_REGEX.match(directive_p.string): - start_heading = directive_p.find_next( - lambda tag: tag.name in {"h1", "h2", "h3", "h4", "h5", "h6"} - ) + start_heading = directive_p.find_next(lambda tag: tag.name in {"h1", "h2", "h3", "h4", "h5", "h6"}) if not start_heading: continue diff --git a/doc/src/main.py b/doc/src/main.py index c5820808e..be4332b1e 100644 --- a/doc/src/main.py +++ b/doc/src/main.py @@ -1,6 +1,6 @@ -from pathlib import Path -from io import StringIO import csv +from io import StringIO +from pathlib import Path def define_env(env): @@ -27,9 +27,7 @@ def csv_table(csv_string, header=False): + " | ".join("------" for _ in header_row) + " |\n" + ( - "\n".join( - ("| " + " | ".join(f"{c}" for c in row) + " |") for row in body_rows - ) + "\n".join(("| " + " | ".join(f"{c}" for c in row) + " |") for row in body_rows) if len(body_rows) > 0 else "" ) @@ -64,18 +62,14 @@ def member_table(args): table = ( '
\n' + "| " - + " | ".join( - f"{c}" - for c in ["Units", "Legal Range", "Default", "Required", "Variability"] - ) + + " | ".join(f"{c}" for c in ["Units", "Legal Range", "Default", "Required", "Variability"]) + " |\n" + "| " + " | ".join("------" for _ in 5 * [""]) + " |\n" + "| " + " | ".join( - f"{c if c is not None else fallback}" - for c in [units, legal_range, default, required, variability] + f"{c if c is not None else fallback}" for c in [units, legal_range, default, required, variability] ) + " |\n" ) diff --git a/doc/src/parsers/base.py b/doc/src/parsers/base.py index a4797b360..a3ecd91b3 100644 --- a/doc/src/parsers/base.py +++ b/doc/src/parsers/base.py @@ -1,10 +1,10 @@ import json import re -import yaml - from abc import ABC, abstractmethod from pathlib import Path -from typing import TypeVar, Generic +from typing import Generic, TypeVar + +import yaml T = TypeVar("T") @@ -17,19 +17,19 @@ def __init__(self, path: Path): self.path = path self.raw_text = "" self.clean_text = "" - self.result = None + self.result: T | None = None def read(self): with open(self.path, "r") as f: self.raw_text = f.read() - def strip_falsy_blocks(self, text: str): + def strip_falsy_blocks(self, text: str) -> str: return re.sub(r"^\s*#if\s+0\b.*?^\s*#endif\b.*?$", "", text, flags=re.MULTILINE) - def strip_block_comments(self, text: str): + def strip_block_comments(self, text: str) -> str: return re.sub(r"/\*.*?\*/", "", text, flags=re.DOTALL | re.MULTILINE) - def strip_inline_comments(self, text: str): + def strip_inline_comments(self, text: str) -> str: return re.sub(r"//.*$", "", text) def prepare_clean_text(self): diff --git a/doc/src/parsers/cndefns.py b/doc/src/parsers/cndefns.py index 4998e9c06..ab74c74fb 100644 --- a/doc/src/parsers/cndefns.py +++ b/doc/src/parsers/cndefns.py @@ -1,6 +1,5 @@ import re - -from typing import Literal, Dict, List, TypedDict, Tuple +from typing import Dict, List, Literal, Tuple, TypedDict, cast from .base import BaseParser @@ -15,7 +14,7 @@ class DefinitionsResult(TypedDict): class DefinitionsParser(BaseParser[DefinitionsResult]): - def get_block_by_key(self, key: BlockKey, text: str): + def get_block_by_key(self, key: BlockKey, text: str) -> str: pattern = re.compile( rf"^//-{{10,}}\s*{re.escape(key)}\s*-{{10,}}.*?\n" r"(.*?)" @@ -29,7 +28,7 @@ def get_block_by_key(self, key: BlockKey, text: str): return match.group(1).strip() - def parse_define_line(self, line) -> Tuple[str, int | str]: + def parse_define_line(self, line: str) -> Tuple[str, int | str | bool] | Tuple[None, None]: line = self.strip_inline_comments(line).strip() match = re.match(r"^#define\s+(\w+)(?:\s+(.*))?$", line) @@ -37,13 +36,14 @@ def parse_define_line(self, line) -> Tuple[str, int | str]: if not match: return None, None - key, raw_value = match.groups() + raw_key, raw_value = match.groups() + key = cast(str, raw_key) + raw_value = cast(str | None, raw_value) if raw_value is None: return key, True - raw_value = raw_value.strip() - + value: str | int | None = None try: value = int(raw_value) except ValueError: @@ -67,9 +67,13 @@ def _parse(self): if not parsed_key: continue - if parsed_value: + if type(parsed_value) is bool: result["bool"].append(parsed_key) else: - result["kvp"][parsed_key] = parsed_value + # parsed_value can't be None, but Python type system doesn't realize that + # It is only None when parsed_key is also None, but then "if not parsed_key: continue" + # would prevent us from getting here. + cast_value = cast(int | str, parsed_value) + result["kvp"][parsed_key] = cast_value return result diff --git a/doc/src/parsers/cnfields.py b/doc/src/parsers/cnfields.py index 6a5e44a97..c3a7ec009 100644 --- a/doc/src/parsers/cnfields.py +++ b/doc/src/parsers/cnfields.py @@ -1,5 +1,4 @@ import re - from typing import List, TypedDict from .base import BaseParser @@ -18,6 +17,8 @@ class Field(BaseField, total=False): type FieldsResult = List[Field] +EXPECTED_COLUMN_COUNT = 4 + class FieldsParser(BaseParser[FieldsResult]): def _prepare_clean_text(self): @@ -33,16 +34,16 @@ def _parse(self): tokens: List[str] = re.split(r"\s+", stripped, maxsplit=4) # A line must have a value for each of the four named columns. - if len(tokens) < 4: + if len(tokens) < EXPECTED_COLUMN_COUNT: continue typename, datatype, limits, units = tokens[:4] - comment = None + comment: str | None = None # TODO: Support for comments longer than one end-of-line? comment_match = re.search(r"//(.*)$", line) if comment_match: - comment: str = comment_match.group(1).strip() + comment = comment_match.group(1).strip() field: Field = { "typename": typename.upper(), diff --git a/doc/src/parsers/cnrecs.py b/doc/src/parsers/cnrecs.py index 6cdf41a63..bc51c7399 100644 --- a/doc/src/parsers/cnrecs.py +++ b/doc/src/parsers/cnrecs.py @@ -1,11 +1,11 @@ +# mypy: ignore-errors import re - from pathlib import Path -from typing import Literal, List, Set, Dict, TypedDict +from typing import Dict, List, Literal, Optional, Set, Tuple, TypedDict, cast from .base import BaseParser -from .cnfields import FieldsResult from .cndefns import DefinitionsResult +from .cnfields import FieldsResult # TODO:Better definition for Field @@ -93,12 +93,12 @@ class Record(TypedDict, total=False): ) -def parse_content_and_comments(line: str, in_block_comment=False): - content = [] - comments = [] +def parse_content_and_comments(line: str, in_block_comment: bool = False) -> Tuple[List[str], List[str], bool]: # noqa: PLR0912 + content: List[str] = [] + comments: List[str] = [] if line.strip() == "": - return [], [], in_block_comment + return content, comments, in_block_comment for match in COMMENT_TOKEN_PATTERN.finditer(line): if in_block_comment: @@ -110,9 +110,7 @@ def parse_content_and_comments(line: str, in_block_comment=False): # so the actual value (without .strip()) is stored. if leading_comment.strip(): comments += [leading_comment] - nested_content, nested_comments, in_block_comment = ( - parse_content_and_comments(line[match.end() :]) - ) + nested_content, nested_comments, in_block_comment = parse_content_and_comments(line[match.end() :]) comments += nested_comments content += nested_content in_block_comment = False @@ -121,46 +119,41 @@ def parse_content_and_comments(line: str, in_block_comment=False): comments += [line] break - else: - if match.group("inline_start"): - leading_content = line[: match.start()].strip() - trailing_comment = line[match.start() + 2 :] - - if leading_content: - content += [leading_content] - - if trailing_comment.strip(): - comments += [trailing_comment] - break - elif match.group("inline_block"): - leading_content = line[: match.start()].strip() - middle_comment = line[match.start() + 2 : match.end() - 2] - - if leading_content: - content += [leading_content] - - if middle_comment.strip(): - comments += [middle_comment] - - nested_content, nested_comments, in_block_comment = ( - parse_content_and_comments(line[match.end() :]) - ) - content += nested_content - comments += nested_comments - elif match.group("block_start"): - leading_content = line[: match.start()].strip() - trailing_comment = line[match.start() + 2 :] - - if leading_content: - content += [leading_content] - - if trailing_comment.strip(): - comments += [trailing_comment] - in_block_comment = True - elif match.group("block_end"): - raise Exception( - "End block comment token cannot appear first if not already in a block comment." - ) + elif match.group("inline_start"): + leading_content = line[: match.start()].strip() + trailing_comment = line[match.start() + 2 :] + + if leading_content: + content += [leading_content] + + if trailing_comment.strip(): + comments += [trailing_comment] + break + elif match.group("inline_block"): + leading_content = line[: match.start()].strip() + middle_comment = line[match.start() + 2 : match.end() - 2] + + if leading_content: + content += [leading_content] + + if middle_comment.strip(): + comments += [middle_comment] + + nested_content, nested_comments, in_block_comment = parse_content_and_comments(line[match.end() :]) + content += nested_content + comments += nested_comments + elif match.group("block_start"): + leading_content = line[: match.start()].strip() + trailing_comment = line[match.start() + 2 :] + + if leading_content: + content += [leading_content] + + if trailing_comment.strip(): + comments += [trailing_comment] + in_block_comment = True + elif match.group("block_end"): + raise Exception("End block comment token cannot appear first if not already in a block comment.") break # ensure that if there are no matches from pattern.find_iter that we go to else block else: if in_block_comment and line.strip(): @@ -198,103 +191,98 @@ def make_field_dict_from_pending_tokens( def parse_field_directives( - line: str, field_pattern: re.Pattern, member_types: Set[str], first_line_of_record -): + line: str, field_pattern: re.Pattern, member_types: Set[str], first_line_of_record: str +) -> List[Dict] | None: field_match = field_pattern.match(line) - if field_match: - field_data = {} - tokens = [t for t in line.split(" ") if t.strip()] + if not field_match: + return None - variability_directives = [] - boolean_directives = [] - kvp_directives = [] + field_data = {} + tokens = [t for t in line.split(" ") if t.strip()] - field_array = [] + variability_directives = [] + boolean_directives = [] + kvp_directives = [] - i = 0 - while i < len(tokens): - token = tokens[i] - next_token = tokens[i + 1] if i + 1 < len(tokens) else None + field_array = [] - if ( - token.startswith("*") - and token[1:].lower() in FIELD_VARIABILITY_DIRECTIVES - ): - # could use set, but would prefer to maintain order in list. Probably an ordered set is a thing in python? - if token[1:].lower() in variability_directives: - i += 1 - continue + i = 0 + while i < len(tokens): + token = tokens[i] + next_token = tokens[i + 1] if i + 1 < len(tokens) else None - variability_directives.append(token[1:].lower()) + if token.startswith("*") and token[1:].lower() in FIELD_VARIABILITY_DIRECTIVES: + # could use set, but would prefer to maintain order in list. + # Probably an ordered set is a thing in python? + if token[1:].lower() in variability_directives: + i += 1 + continue - elif token.startswith("*") and token[1:].lower() in FIELD_BOOL_DIRECTIVES: - boolean_directives.append(token[1:].lower()) + variability_directives.append(token[1:].lower()) - elif token.startswith("*") and token[1:].lower() in FIELD_KVP_DIRECTIVES: - if next_token is None: - raise Exception( - "A kvp directive appeared without a corresponding value." - ) + elif token.startswith("*") and token[1:].lower() in FIELD_BOOL_DIRECTIVES: + boolean_directives.append(token[1:].lower()) - kvp_directives.append({token[1:].lower(): next_token}) - i += 1 + elif token.startswith("*") and token[1:].lower() in FIELD_KVP_DIRECTIVES: + if next_token is None: + raise Exception("A kvp directive appeared without a corresponding value.") - elif token.upper() in member_types: - field_data["type"] = token.upper() - if next_token is None: - raise Exception( - "A field type appeared without a corresponding field name." - ) - - field_array.append( - make_field_dict_from_pending_tokens( - {token.upper(): next_token}, - variability_directives, - boolean_directives, - kvp_directives, - ) - ) - variability_directives = [] - boolean_directives = [] - kvp_directives = [] - - i += 1 + kvp_directives.append({token[1:].lower(): next_token}) + i += 1 - else: - field_array.append( - make_field_dict_from_pending_tokens( - {"": token}, - variability_directives, - boolean_directives, - kvp_directives, - ) + elif token.upper() in member_types: + field_data["type"] = token.upper() + if next_token is None: + raise Exception("A field type appeared without a corresponding field name.") + + field_array.append( + make_field_dict_from_pending_tokens( + {token.upper(): next_token}, + variability_directives, + boolean_directives, + kvp_directives, ) - variability_directives = [] - boolean_directives = [] - kvp_directives = [] + ) + variability_directives = [] + boolean_directives = [] + kvp_directives = [] i += 1 - if any( - [ - len(variability_directives) > 0, - len(boolean_directives) > 0, - len(kvp_directives) > 0, - ] - ): - raise Exception( - f"If a line containes variability, boolean, or kvp directives, it must also contain a field name and/or type.\n{line}\n{first_line_of_record}" + else: + field_array.append( + make_field_dict_from_pending_tokens( + {"": token}, + variability_directives, + boolean_directives, + kvp_directives, + ) ) + variability_directives = [] + boolean_directives = [] + kvp_directives = [] + + i += 1 + + if any( + [ + len(variability_directives) > 0, + len(boolean_directives) > 0, + len(kvp_directives) > 0, + ] + ): + raise Exception( + f"""If a line containes variability, boolean, or kvp directives, + it must also contain a field name and/or type.\n{line}\n{first_line_of_record}""" + ) - return field_array + return field_array def get_field_start_pattern(field_types: Set[str]) -> re.Pattern: # Combine known directives and member types into a single list - directives = FIELD_BOOL_DIRECTIVES.union( - FIELD_KVP_DIRECTIVES, FIELD_VARIABILITY_DIRECTIVES - ) + directives = FIELD_BOOL_DIRECTIVES.union(FIELD_KVP_DIRECTIVES, FIELD_VARIABILITY_DIRECTIVES) # Prefix directives with literal * directive_patterns = [r"\*" + re.escape(d) for d in directives] @@ -307,70 +295,72 @@ def get_field_start_pattern(field_types: Set[str]) -> re.Pattern: return re.compile(pattern, re.IGNORECASE) -def remove_multiline_comments(text: str): +def remove_multiline_comments(text: str) -> str: """Remove all multiline comments (i.e., /*...*/).""" pattern = re.compile(r"/\*.*?\*/", re.DOTALL) return pattern.sub(" ", text) -def remove_inline_comments(text: str): +def remove_inline_comments(text: str) -> str: cleaned_lines = [line.split("//", 1)[0].rstrip() for line in text.splitlines()] return "\n".join(cleaned_lines) -def remove_comments(text: str): +def remove_comments(text: str) -> str: return remove_inline_comments(remove_multiline_comments(text)) def parse_directives( text: str, bool_directives: Set[str], kvp_directives: Set[str] -) -> dict: - directives = {} +) -> Dict[str, str | bool | None] | None: + directives: Dict[str, str | bool | None] = {} tokens = re.findall(r"\*([a-zA-Z0-9_]+)(?:\s+([a-zA-Z0-9_]+))?", text) for key, value in tokens: - key_lower = key.lower() + key_lower = cast(str, key).lower() if key_lower in bool_directives: directives[key_lower] = True elif key_lower in kvp_directives: - directives[key_lower] = value.strip() if value else None + directives[key_lower] = cast(str, value).strip() if value else None return directives if len(tokens) > 0 else None -def parse_declare_directive(text: str): +def parse_declare_directive(text: str) -> Optional[Dict[str, str]]: match = re.match(r'\s*\*declare\s+"(.*?)"', text) if match: return {"declare": match.group(1)} + else: + return None -def parse_define_statement(text: str): +def parse_define_statement(text: str) -> Optional[Dict[str, str]]: match = re.match(r"#define\s+(.*)", text) if match: return {"define": match.group(1)} + else: + return None -def parse_record(text, field_types: Set[str]): - data = {} +def parse_record(text: str, field_types: Set[str]) -> Record: # noqa: PLR0912, PLR0915 + data: Record = {} lines = text.splitlines() index = 0 in_block_comment = False - pending_comments = [] - pending_fields = [] + pending_comments: List[str] = [] + pending_fields: List[dict] = [] elapsed_lines = 0 while index < len(lines): line = lines[index] - content, comments, in_block_comment = parse_content_and_comments( - line, in_block_comment - ) + content, comments, in_block_comment = parse_content_and_comments(line, in_block_comment) merged_line_content = " ".join(content) @@ -378,7 +368,7 @@ def parse_record(text, field_types: Set[str]): if header_match: data["id"] = header_match.group("id") data["name"] = header_match.group("name") - data["type"] = header_match.group("type") + data["type"] = cast(RecordType, header_match.group("type")) parsed_record_header_directives = parse_directives( merged_line_content, @@ -386,21 +376,22 @@ def parse_record(text, field_types: Set[str]): RECORD_HEADER_KVP_DIRECTIVES, ) - data = {**data, **parsed_record_header_directives} + if parsed_record_header_directives: + data = {**data, **parsed_record_header_directives} if len(comments) > 0: data["record_comments"] = comments next_in_block_comment = in_block_comment while index + 1 < len(lines): - next_line_content, next_line_comments, next_in_block_comment = ( - parse_content_and_comments(lines[index + 1], next_in_block_comment) + next_line_content, next_line_comments, next_in_block_comment = parse_content_and_comments( + lines[index + 1], next_in_block_comment ) # Capture all comments until either a blank line or line with real content is encountered. if len(next_line_content) == 0 and len(next_line_comments) > 0: if "record_comments" in data: - data["record_comments"] += next_line_comments + data["record_comments"] = data["record_comments"] + next_line_comments else: data["record_comments"] = next_line_comments in_block_comment = next_in_block_comment @@ -415,7 +406,6 @@ def parse_record(text, field_types: Set[str]): continue if len(content) == 0 and len(comments) == 0: - # if "field_groups" not in data: data["field_groups"] = [] @@ -436,14 +426,10 @@ def parse_record(text, field_types: Set[str]): pending_comments = [] elapsed_lines = 0 - record_directive = parse_directives( - merged_line_content, RECORD_BOOL_DIRECTIVES, RECORD_KVP_DIRECTIVES - ) + record_directive = parse_directives(merged_line_content, RECORD_BOOL_DIRECTIVES, RECORD_KVP_DIRECTIVES) if record_directive and len(record_directive.keys()) > 1: - raise Exception( - "Parser expects at most one record directive (or declare directive) per line" - ) + raise Exception("Parser expects at most one record directive (or declare directive) per line") if record_directive: if len(pending_comments) > 0 and len(pending_fields) == 0: @@ -451,8 +437,8 @@ def parse_record(text, field_types: Set[str]): next_in_block_comment = in_block_comment while index + 1 < len(lines): - next_line_content, next_line_comments, next_in_block_comment = ( - parse_content_and_comments(lines[index + 1], next_in_block_comment) + next_line_content, next_line_comments, next_in_block_comment = parse_content_and_comments( + lines[index + 1], next_in_block_comment ) # Capture all comments until either a blank line or line with real content is encountered. @@ -475,8 +461,8 @@ def parse_record(text, field_types: Set[str]): if define_statement: next_in_block_comment = in_block_comment while index + 1 < len(lines): - next_line_content, next_line_comments, next_in_block_comment = ( - parse_content_and_comments(lines[index + 1], next_in_block_comment) + next_line_content, next_line_comments, next_in_block_comment = parse_content_and_comments( + lines[index + 1], next_in_block_comment ) # Capture all comments until either a blank line or line with real content is encountered. @@ -498,8 +484,8 @@ def parse_record(text, field_types: Set[str]): if declare_directive: next_in_block_comment = in_block_comment while index + 1 < len(lines): - next_line_content, next_line_comments, next_in_block_comment = ( - parse_content_and_comments(lines[index + 1], next_in_block_comment) + next_line_content, next_line_comments, next_in_block_comment = parse_content_and_comments( + lines[index + 1], next_in_block_comment ) # Capture all comments until either a blank line or line with real content is encountered. @@ -517,14 +503,12 @@ def parse_record(text, field_types: Set[str]): field_pattern = get_field_start_pattern(field_types) - field_directives = parse_field_directives( - merged_line_content, field_pattern, field_types, lines[0] - ) + field_directives = parse_field_directives(merged_line_content, field_pattern, field_types, lines[0]) if len(field_directives or []) > 0: next_in_block_comment = in_block_comment while index + 1 < len(lines): - next_line_content, next_line_comments, next_in_block_comment = ( - parse_content_and_comments(lines[index + 1], next_in_block_comment) + next_line_content, next_line_comments, next_in_block_comment = parse_content_and_comments( + lines[index + 1], next_in_block_comment ) # Capture all comments until either a blank line or line with real content is encountered. @@ -543,10 +527,7 @@ def parse_record(text, field_types: Set[str]): # If line is empty or we are at end of record block, attach any pending # fields as a new field group. - if (len(content) == 0 and len(comments) == 0) or ( - index == len(lines) - 1 and len(pending_fields) > 0 - ): - # + if (len(content) == 0 and len(comments) == 0) or (index == len(lines) - 1 and len(pending_fields) > 0): if "field_groups" not in data: data["field_groups"] = [] @@ -566,9 +547,7 @@ def parse_record(text, field_types: Set[str]): class RecordsParser(BaseParser[RecordsResult]): - def __init__( - self, path: Path, definitions: DefinitionsResult, fields: FieldsResult - ): + def __init__(self, path: Path, definitions: DefinitionsResult, fields: FieldsResult): super().__init__(path) self.definition_flags = definitions["bool"] self.field_types = {field["typename"] for field in fields} @@ -602,10 +581,7 @@ def _prepare_clean_text(self): else_block = match.group("else_block") or "" # Case-insensitive "startswith" matching - if not any( - def_name.lower().startswith(allowed.lower()) - for allowed in self.definition_flags - ): + if not any(def_name.lower().startswith(allowed.lower()) for allowed in self.definition_flags): replacement = else_block else: replacement = if_block diff --git a/doc/uv.lock b/doc/uv.lock deleted file mode 100644 index 9b573bd00..000000000 --- a/doc/uv.lock +++ /dev/null @@ -1,738 +0,0 @@ -version = 1 -requires-python = ">=3.12" -resolution-markers = [ - "python_full_version >= '3.13'", - "python_full_version < '3.13'", -] - -[[package]] -name = "annotated-types" -version = "0.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, -] - -[[package]] -name = "babel" -version = "2.17.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, -] - -[[package]] -name = "beautifulsoup4" -version = "4.13.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "soupsieve" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285 }, -] - -[[package]] -name = "bracex" -version = "2.5.post1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/6c/57418c4404cd22fe6275b8301ca2b46a8cdaa8157938017a9ae0b3edf363/bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6", size = 26641 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4b/02/8db98cdc1a58e0abd6716d5e63244658e6e63513c65f469f34b6f1053fd0/bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6", size = 11558 }, -] - -[[package]] -name = "certifi" -version = "2025.1.31" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1c/ab/c9f1e32b7b1bf505bf26f0ef697775960db7932abeb7b516de930ba2705f/certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", size = 167577 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe", size = 166393 }, -] - -[[package]] -name = "charset-normalizer" -version = "3.4.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105 }, - { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404 }, - { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423 }, - { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184 }, - { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268 }, - { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601 }, - { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098 }, - { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520 }, - { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852 }, - { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488 }, - { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192 }, - { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550 }, - { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785 }, - { url = "https://files.pythonhosted.org/packages/38/94/ce8e6f63d18049672c76d07d119304e1e2d7c6098f0841b51c666e9f44a0/charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda", size = 195698 }, - { url = "https://files.pythonhosted.org/packages/24/2e/dfdd9770664aae179a96561cc6952ff08f9a8cd09a908f259a9dfa063568/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313", size = 140162 }, - { url = "https://files.pythonhosted.org/packages/24/4e/f646b9093cff8fc86f2d60af2de4dc17c759de9d554f130b140ea4738ca6/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9", size = 150263 }, - { url = "https://files.pythonhosted.org/packages/5e/67/2937f8d548c3ef6e2f9aab0f6e21001056f692d43282b165e7c56023e6dd/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b", size = 142966 }, - { url = "https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11", size = 144992 }, - { url = "https://files.pythonhosted.org/packages/96/2c/d49710a6dbcd3776265f4c923bb73ebe83933dfbaa841c5da850fe0fd20b/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f", size = 147162 }, - { url = "https://files.pythonhosted.org/packages/b4/41/35ff1f9a6bd380303dea55e44c4933b4cc3c4850988927d4082ada230273/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd", size = 140972 }, - { url = "https://files.pythonhosted.org/packages/fb/43/c6a0b685fe6910d08ba971f62cd9c3e862a85770395ba5d9cad4fede33ab/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2", size = 149095 }, - { url = "https://files.pythonhosted.org/packages/4c/ff/a9a504662452e2d2878512115638966e75633519ec11f25fca3d2049a94a/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886", size = 152668 }, - { url = "https://files.pythonhosted.org/packages/6c/71/189996b6d9a4b932564701628af5cee6716733e9165af1d5e1b285c530ed/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601", size = 150073 }, - { url = "https://files.pythonhosted.org/packages/e4/93/946a86ce20790e11312c87c75ba68d5f6ad2208cfb52b2d6a2c32840d922/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd", size = 145732 }, - { url = "https://files.pythonhosted.org/packages/cd/e5/131d2fb1b0dddafc37be4f3a2fa79aa4c037368be9423061dccadfd90091/charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407", size = 95391 }, - { url = "https://files.pythonhosted.org/packages/27/f2/4f9a69cc7712b9b5ad8fdb87039fd89abba997ad5cbe690d1835d40405b0/charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971", size = 102702 }, - { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 }, -] - -[[package]] -name = "click" -version = "8.1.8" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, -] - -[[package]] -name = "colorama" -version = "0.4.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, -] - -[[package]] -name = "cse-documentation" -version = "0.1.0" -source = { virtual = "." } -dependencies = [ - { name = "beautifulsoup4" }, - { name = "mkdocs-autorefs" }, - { name = "mkdocs-awesome-nav" }, - { name = "mkdocs-macros-plugin" }, - { name = "mkdocs-material" }, - { name = "python-slugify" }, - { name = "pyyaml" }, -] - -[package.dev-dependencies] -dev = [ - { name = "ruff" }, -] - -[package.metadata] -requires-dist = [ - { name = "beautifulsoup4", specifier = ">=4.13.4" }, - { name = "mkdocs-autorefs", specifier = ">=1.3.1" }, - { name = "mkdocs-awesome-nav", specifier = ">=3.1.1" }, - { name = "mkdocs-macros-plugin", specifier = ">=1.3.7" }, - { name = "mkdocs-material" }, - { name = "python-slugify", specifier = ">=8.0.4" }, - { name = "pyyaml", specifier = ">=6.0.2" }, -] - -[package.metadata.requires-dev] -dev = [{ name = "ruff", specifier = ">=0.9.9" }] - -[[package]] -name = "ghp-import" -version = "2.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "python-dateutil" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, -] - -[[package]] -name = "hjson" -version = "3.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/e5/0b56d723a76ca67abadbf7fb71609fb0ea7e6926e94fcca6c65a85b36a0e/hjson-3.1.0.tar.gz", hash = "sha256:55af475a27cf83a7969c808399d7bccdec8fb836a07ddbd574587593b9cdcf75", size = 40541 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1f/7f/13cd798d180af4bf4c0ceddeefba2b864a63c71645abc0308b768d67bb81/hjson-3.1.0-py3-none-any.whl", hash = "sha256:65713cdcf13214fb554eb8b4ef803419733f4f5e551047c9b711098ab7186b89", size = 54018 }, -] - -[[package]] -name = "idna" -version = "3.10" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, -] - -[[package]] -name = "jinja2" -version = "3.1.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markupsafe" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/af/92/b3130cbbf5591acf9ade8708c365f3238046ac7cb8ccba6e81abccb0ccff/jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb", size = 244674 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/0f/2ba5fbcd631e3e88689309dbe978c5769e883e4b84ebfe7da30b43275c5a/jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb", size = 134596 }, -] - -[[package]] -name = "markdown" -version = "3.7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/28/3af612670f82f4c056911fbbbb42760255801b3068c48de792d354ff4472/markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2", size = 357086 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/08/83871f3c50fc983b88547c196d11cf8c3340e37c32d2e9d6152abe2c61f7/Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803", size = 106349 }, -] - -[[package]] -name = "markupsafe" -version = "3.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, - { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, - { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, - { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, - { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, - { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, - { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, - { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, - { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, - { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, - { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, - { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, - { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, - { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, - { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, - { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, - { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, - { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, - { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, - { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, - { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, - { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, - { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, - { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, - { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, - { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, - { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, - { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, -] - -[[package]] -name = "mergedeep" -version = "1.3.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, -] - -[[package]] -name = "mkdocs" -version = "1.6.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "ghp-import" }, - { name = "jinja2" }, - { name = "markdown" }, - { name = "markupsafe" }, - { name = "mergedeep" }, - { name = "mkdocs-get-deps" }, - { name = "packaging" }, - { name = "pathspec" }, - { name = "pyyaml" }, - { name = "pyyaml-env-tag" }, - { name = "watchdog" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, -] - -[[package]] -name = "mkdocs-autorefs" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markdown" }, - { name = "markupsafe" }, - { name = "mkdocs" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/52/f4/77e3cf5e7ba54dca168bc718688127844721982ae88b08684669c5b5752d/mkdocs_autorefs-1.3.1.tar.gz", hash = "sha256:a6d30cbcccae336d622a66c2418a3c92a8196b69782774529ad441abb23c0902", size = 2056416 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/db/19/f20edc082c1de2987dbaf30fcc514ed7a908d465a15aba7cba595c3b245a/mkdocs_autorefs-1.3.1-py3-none-any.whl", hash = "sha256:18c504ae4d3ee7f344369bb26cb31d4105569ee252aab7d75ec2734c2c8b0474", size = 2837887 }, -] - -[[package]] -name = "mkdocs-awesome-nav" -version = "3.1.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mkdocs" }, - { name = "natsort" }, - { name = "pydantic" }, - { name = "wcmatch" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2d/e0/b2185370a35ecc042f648beec27a6d1a5d15d2ad46255d68201d2ba9cc38/mkdocs_awesome_nav-3.1.1.tar.gz", hash = "sha256:0665ab290a3c22b49e07151e3aca82d5d28a42aecf6e940bf295546565d156b5", size = 8656 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/03/84bdfc698c5307259b269c5c20b8d62c7f2f36667f0a10d4d311dc604546/mkdocs_awesome_nav-3.1.1-py3-none-any.whl", hash = "sha256:50eafd8042274feff2b995ecaa50c55c07807ff33210a064877f6f1aa8d6ee40", size = 12356 }, -] - -[[package]] -name = "mkdocs-get-deps" -version = "0.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mergedeep" }, - { name = "platformdirs" }, - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, -] - -[[package]] -name = "mkdocs-macros-plugin" -version = "1.3.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "hjson" }, - { name = "jinja2" }, - { name = "mkdocs" }, - { name = "packaging" }, - { name = "pathspec" }, - { name = "python-dateutil" }, - { name = "pyyaml" }, - { name = "super-collections" }, - { name = "termcolor" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/43/65/61a746c56788867221aebf07fe4b6b4c08ac99cf341fd51d728c89d1456e/mkdocs_macros_plugin-1.3.7.tar.gz", hash = "sha256:17c7fd1a49b94defcdb502fd453d17a1e730f8836523379d21292eb2be4cb523", size = 33466 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/55/cf/f03331298ee50a4da6fb72ccec79078041158c1f8b5fc24835c1be42232e/mkdocs_macros_plugin-1.3.7-py3-none-any.whl", hash = "sha256:02432033a5b77fb247d6ec7924e72fc4ceec264165b1644ab8d0dc159c22ce59", size = 37799 }, -] - -[[package]] -name = "mkdocs-material" -version = "9.6.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "babel" }, - { name = "colorama" }, - { name = "jinja2" }, - { name = "markdown" }, - { name = "mkdocs" }, - { name = "mkdocs-material-extensions" }, - { name = "paginate" }, - { name = "pygments" }, - { name = "pymdown-extensions" }, - { name = "regex" }, - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0f/1e/65b4fda4debf5e337b2ad4e692423dba4f5c77f49c4dee170c47a7dbac25/mkdocs_material-9.6.3.tar.gz", hash = "sha256:c87f7d1c39ce6326da5e10e232aed51bae46252e646755900f4b0fc9192fa832", size = 3942608 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/11/a4/e0da0bc6a7dbfda6a786427f82a0caa4dd1f163249a5a5e5dccbb50c5f1e/mkdocs_material-9.6.3-py3-none-any.whl", hash = "sha256:1125622067e26940806701219303b27c0933e04533560725d97ec26fd16a39cf", size = 8688709 }, -] - -[[package]] -name = "mkdocs-material-extensions" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, -] - -[[package]] -name = "natsort" -version = "8.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e2/a9/a0c57aee75f77794adaf35322f8b6404cbd0f89ad45c87197a937764b7d0/natsort-8.4.0.tar.gz", hash = "sha256:45312c4a0e5507593da193dedd04abb1469253b601ecaf63445ad80f0a1ea581", size = 76575 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/82/7a9d0550484a62c6da82858ee9419f3dd1ccc9aa1c26a1e43da3ecd20b0d/natsort-8.4.0-py3-none-any.whl", hash = "sha256:4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c", size = 38268 }, -] - -[[package]] -name = "packaging" -version = "24.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, -] - -[[package]] -name = "paginate" -version = "0.5.7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, -] - -[[package]] -name = "pathspec" -version = "0.12.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, -] - -[[package]] -name = "platformdirs" -version = "4.3.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 }, -] - -[[package]] -name = "pydantic" -version = "2.11.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "annotated-types" }, - { name = "pydantic-core" }, - { name = "typing-extensions" }, - { name = "typing-inspection" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/10/2e/ca897f093ee6c5f3b0bee123ee4465c50e75431c3d5b6a3b44a47134e891/pydantic-2.11.3.tar.gz", hash = "sha256:7471657138c16adad9322fe3070c0116dd6c3ad8d649300e3cbdfe91f4db4ec3", size = 785513 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b0/1d/407b29780a289868ed696d1616f4aad49d6388e5a77f567dcd2629dcd7b8/pydantic-2.11.3-py3-none-any.whl", hash = "sha256:a082753436a07f9ba1289c6ffa01cd93db3548776088aa917cc43b63f68fa60f", size = 443591 }, -] - -[[package]] -name = "pydantic-core" -version = "2.33.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/17/19/ed6a078a5287aea7922de6841ef4c06157931622c89c2a47940837b5eecd/pydantic_core-2.33.1.tar.gz", hash = "sha256:bcc9c6fdb0ced789245b02b7d6603e17d1563064ddcfc36f046b61c0c05dd9df", size = 434395 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/ce/3cb22b07c29938f97ff5f5bb27521f95e2ebec399b882392deb68d6c440e/pydantic_core-2.33.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1293d7febb995e9d3ec3ea09caf1a26214eec45b0f29f6074abb004723fc1de8", size = 2026640 }, - { url = "https://files.pythonhosted.org/packages/19/78/f381d643b12378fee782a72126ec5d793081ef03791c28a0fd542a5bee64/pydantic_core-2.33.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:99b56acd433386c8f20be5c4000786d1e7ca0523c8eefc995d14d79c7a081498", size = 1852649 }, - { url = "https://files.pythonhosted.org/packages/9d/2b/98a37b80b15aac9eb2c6cfc6dbd35e5058a352891c5cce3a8472d77665a6/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35a5ec3fa8c2fe6c53e1b2ccc2454398f95d5393ab398478f53e1afbbeb4d939", size = 1892472 }, - { url = "https://files.pythonhosted.org/packages/4e/d4/3c59514e0f55a161004792b9ff3039da52448f43f5834f905abef9db6e4a/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b172f7b9d2f3abc0efd12e3386f7e48b576ef309544ac3a63e5e9cdd2e24585d", size = 1977509 }, - { url = "https://files.pythonhosted.org/packages/a9/b6/c2c7946ef70576f79a25db59a576bce088bdc5952d1b93c9789b091df716/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9097b9f17f91eea659b9ec58148c0747ec354a42f7389b9d50701610d86f812e", size = 2128702 }, - { url = "https://files.pythonhosted.org/packages/88/fe/65a880f81e3f2a974312b61f82a03d85528f89a010ce21ad92f109d94deb/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc77ec5b7e2118b152b0d886c7514a4653bcb58c6b1d760134a9fab915f777b3", size = 2679428 }, - { url = "https://files.pythonhosted.org/packages/6f/ff/4459e4146afd0462fb483bb98aa2436d69c484737feaceba1341615fb0ac/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3d15245b08fa4a84cefc6c9222e6f37c98111c8679fbd94aa145f9a0ae23d", size = 2008753 }, - { url = "https://files.pythonhosted.org/packages/7c/76/1c42e384e8d78452ededac8b583fe2550c84abfef83a0552e0e7478ccbc3/pydantic_core-2.33.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef99779001d7ac2e2461d8ab55d3373fe7315caefdbecd8ced75304ae5a6fc6b", size = 2114849 }, - { url = "https://files.pythonhosted.org/packages/00/72/7d0cf05095c15f7ffe0eb78914b166d591c0eed72f294da68378da205101/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fc6bf8869e193855e8d91d91f6bf59699a5cdfaa47a404e278e776dd7f168b39", size = 2069541 }, - { url = "https://files.pythonhosted.org/packages/b3/69/94a514066bb7d8be499aa764926937409d2389c09be0b5107a970286ef81/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:b1caa0bc2741b043db7823843e1bde8aaa58a55a58fda06083b0569f8b45693a", size = 2239225 }, - { url = "https://files.pythonhosted.org/packages/84/b0/e390071eadb44b41f4f54c3cef64d8bf5f9612c92686c9299eaa09e267e2/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ec259f62538e8bf364903a7d0d0239447059f9434b284f5536e8402b7dd198db", size = 2248373 }, - { url = "https://files.pythonhosted.org/packages/d6/b2/288b3579ffc07e92af66e2f1a11be3b056fe1214aab314748461f21a31c3/pydantic_core-2.33.1-cp312-cp312-win32.whl", hash = "sha256:e14f369c98a7c15772b9da98987f58e2b509a93235582838bd0d1d8c08b68fda", size = 1907034 }, - { url = "https://files.pythonhosted.org/packages/02/28/58442ad1c22b5b6742b992ba9518420235adced665513868f99a1c2638a5/pydantic_core-2.33.1-cp312-cp312-win_amd64.whl", hash = "sha256:1c607801d85e2e123357b3893f82c97a42856192997b95b4d8325deb1cd0c5f4", size = 1956848 }, - { url = "https://files.pythonhosted.org/packages/a1/eb/f54809b51c7e2a1d9f439f158b8dd94359321abcc98767e16fc48ae5a77e/pydantic_core-2.33.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d13f0276806ee722e70a1c93da19748594f19ac4299c7e41237fc791d1861ea", size = 1903986 }, - { url = "https://files.pythonhosted.org/packages/7a/24/eed3466a4308d79155f1cdd5c7432c80ddcc4530ba8623b79d5ced021641/pydantic_core-2.33.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70af6a21237b53d1fe7b9325b20e65cbf2f0a848cf77bed492b029139701e66a", size = 2033551 }, - { url = "https://files.pythonhosted.org/packages/ab/14/df54b1a0bc9b6ded9b758b73139d2c11b4e8eb43e8ab9c5847c0a2913ada/pydantic_core-2.33.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:282b3fe1bbbe5ae35224a0dbd05aed9ccabccd241e8e6b60370484234b456266", size = 1852785 }, - { url = "https://files.pythonhosted.org/packages/fa/96/e275f15ff3d34bb04b0125d9bc8848bf69f25d784d92a63676112451bfb9/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b315e596282bbb5822d0c7ee9d255595bd7506d1cb20c2911a4da0b970187d3", size = 1897758 }, - { url = "https://files.pythonhosted.org/packages/b7/d8/96bc536e975b69e3a924b507d2a19aedbf50b24e08c80fb00e35f9baaed8/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1dfae24cf9921875ca0ca6a8ecb4bb2f13c855794ed0d468d6abbec6e6dcd44a", size = 1986109 }, - { url = "https://files.pythonhosted.org/packages/90/72/ab58e43ce7e900b88cb571ed057b2fcd0e95b708a2e0bed475b10130393e/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6dd8ecfde08d8bfadaea669e83c63939af76f4cf5538a72597016edfa3fad516", size = 2129159 }, - { url = "https://files.pythonhosted.org/packages/dc/3f/52d85781406886c6870ac995ec0ba7ccc028b530b0798c9080531b409fdb/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f593494876eae852dc98c43c6f260f45abdbfeec9e4324e31a481d948214764", size = 2680222 }, - { url = "https://files.pythonhosted.org/packages/f4/56/6e2ef42f363a0eec0fd92f74a91e0ac48cd2e49b695aac1509ad81eee86a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:948b73114f47fd7016088e5186d13faf5e1b2fe83f5e320e371f035557fd264d", size = 2006980 }, - { url = "https://files.pythonhosted.org/packages/4c/c0/604536c4379cc78359f9ee0aa319f4aedf6b652ec2854953f5a14fc38c5a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e11f3864eb516af21b01e25fac915a82e9ddad3bb0fb9e95a246067398b435a4", size = 2120840 }, - { url = "https://files.pythonhosted.org/packages/1f/46/9eb764814f508f0edfb291a0f75d10854d78113fa13900ce13729aaec3ae/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:549150be302428b56fdad0c23c2741dcdb5572413776826c965619a25d9c6bde", size = 2072518 }, - { url = "https://files.pythonhosted.org/packages/42/e3/fb6b2a732b82d1666fa6bf53e3627867ea3131c5f39f98ce92141e3e3dc1/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:495bc156026efafd9ef2d82372bd38afce78ddd82bf28ef5276c469e57c0c83e", size = 2248025 }, - { url = "https://files.pythonhosted.org/packages/5c/9d/fbe8fe9d1aa4dac88723f10a921bc7418bd3378a567cb5e21193a3c48b43/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ec79de2a8680b1a67a07490bddf9636d5c2fab609ba8c57597e855fa5fa4dacd", size = 2254991 }, - { url = "https://files.pythonhosted.org/packages/aa/99/07e2237b8a66438d9b26482332cda99a9acccb58d284af7bc7c946a42fd3/pydantic_core-2.33.1-cp313-cp313-win32.whl", hash = "sha256:ee12a7be1742f81b8a65b36c6921022301d466b82d80315d215c4c691724986f", size = 1915262 }, - { url = "https://files.pythonhosted.org/packages/8a/f4/e457a7849beeed1e5defbcf5051c6f7b3c91a0624dd31543a64fc9adcf52/pydantic_core-2.33.1-cp313-cp313-win_amd64.whl", hash = "sha256:ede9b407e39949d2afc46385ce6bd6e11588660c26f80576c11c958e6647bc40", size = 1956626 }, - { url = "https://files.pythonhosted.org/packages/20/d0/e8d567a7cff7b04e017ae164d98011f1e1894269fe8e90ea187a3cbfb562/pydantic_core-2.33.1-cp313-cp313-win_arm64.whl", hash = "sha256:aa687a23d4b7871a00e03ca96a09cad0f28f443690d300500603bd0adba4b523", size = 1909590 }, - { url = "https://files.pythonhosted.org/packages/ef/fd/24ea4302d7a527d672c5be06e17df16aabfb4e9fdc6e0b345c21580f3d2a/pydantic_core-2.33.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:401d7b76e1000d0dd5538e6381d28febdcacb097c8d340dde7d7fc6e13e9f95d", size = 1812963 }, - { url = "https://files.pythonhosted.org/packages/5f/95/4fbc2ecdeb5c1c53f1175a32d870250194eb2fdf6291b795ab08c8646d5d/pydantic_core-2.33.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aeb055a42d734c0255c9e489ac67e75397d59c6fbe60d155851e9782f276a9c", size = 1986896 }, - { url = "https://files.pythonhosted.org/packages/71/ae/fe31e7f4a62431222d8f65a3bd02e3fa7e6026d154a00818e6d30520ea77/pydantic_core-2.33.1-cp313-cp313t-win_amd64.whl", hash = "sha256:338ea9b73e6e109f15ab439e62cb3b78aa752c7fd9536794112e14bee02c8d18", size = 1931810 }, -] - -[[package]] -name = "pygments" -version = "2.19.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, -] - -[[package]] -name = "pymdown-extensions" -version = "10.14.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markdown" }, - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7c/44/e6de2fdc880ad0ec7547ca2e087212be815efbc9a425a8d5ba9ede602cbb/pymdown_extensions-10.14.3.tar.gz", hash = "sha256:41e576ce3f5d650be59e900e4ceff231e0aed2a88cf30acaee41e02f063a061b", size = 846846 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/f5/b9e2a42aa8f9e34d52d66de87941ecd236570c7ed2e87775ed23bbe4e224/pymdown_extensions-10.14.3-py3-none-any.whl", hash = "sha256:05e0bee73d64b9c71a4ae17c72abc2f700e8bc8403755a00580b49a4e9f189e9", size = 264467 }, -] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, -] - -[[package]] -name = "python-slugify" -version = "8.0.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "text-unidecode" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051 }, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, - { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, - { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, - { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, - { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, - { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, - { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, - { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, - { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, - { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, -] - -[[package]] -name = "pyyaml-env-tag" -version = "0.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fb/8e/da1c6c58f751b70f8ceb1eb25bc25d524e8f14fe16edcce3f4e3ba08629c/pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", size = 5631 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/66/bbb1dd374f5c870f59c5bb1db0e18cbe7fa739415a24cbd95b2d1f5ae0c4/pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069", size = 3911 }, -] - -[[package]] -name = "regex" -version = "2024.11.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519", size = 399494 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a", size = 483781 }, - { url = "https://files.pythonhosted.org/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9", size = 288455 }, - { url = "https://files.pythonhosted.org/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2", size = 284759 }, - { url = "https://files.pythonhosted.org/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4", size = 794976 }, - { url = "https://files.pythonhosted.org/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577", size = 833077 }, - { url = "https://files.pythonhosted.org/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3", size = 823160 }, - { url = "https://files.pythonhosted.org/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e", size = 796896 }, - { url = "https://files.pythonhosted.org/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe", size = 783997 }, - { url = "https://files.pythonhosted.org/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e", size = 781725 }, - { url = "https://files.pythonhosted.org/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29", size = 789481 }, - { url = "https://files.pythonhosted.org/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39", size = 852896 }, - { url = "https://files.pythonhosted.org/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51", size = 860138 }, - { url = "https://files.pythonhosted.org/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad", size = 787692 }, - { url = "https://files.pythonhosted.org/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54", size = 262135 }, - { url = "https://files.pythonhosted.org/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b", size = 273567 }, - { url = "https://files.pythonhosted.org/packages/90/73/bcb0e36614601016552fa9344544a3a2ae1809dc1401b100eab02e772e1f/regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84", size = 483525 }, - { url = "https://files.pythonhosted.org/packages/0f/3f/f1a082a46b31e25291d830b369b6b0c5576a6f7fb89d3053a354c24b8a83/regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4", size = 288324 }, - { url = "https://files.pythonhosted.org/packages/09/c9/4e68181a4a652fb3ef5099e077faf4fd2a694ea6e0f806a7737aff9e758a/regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0", size = 284617 }, - { url = "https://files.pythonhosted.org/packages/fc/fd/37868b75eaf63843165f1d2122ca6cb94bfc0271e4428cf58c0616786dce/regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0", size = 795023 }, - { url = "https://files.pythonhosted.org/packages/c4/7c/d4cd9c528502a3dedb5c13c146e7a7a539a3853dc20209c8e75d9ba9d1b2/regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7", size = 833072 }, - { url = "https://files.pythonhosted.org/packages/4f/db/46f563a08f969159c5a0f0e722260568425363bea43bb7ae370becb66a67/regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7", size = 823130 }, - { url = "https://files.pythonhosted.org/packages/db/60/1eeca2074f5b87df394fccaa432ae3fc06c9c9bfa97c5051aed70e6e00c2/regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c", size = 796857 }, - { url = "https://files.pythonhosted.org/packages/10/db/ac718a08fcee981554d2f7bb8402f1faa7e868c1345c16ab1ebec54b0d7b/regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3", size = 784006 }, - { url = "https://files.pythonhosted.org/packages/c2/41/7da3fe70216cea93144bf12da2b87367590bcf07db97604edeea55dac9ad/regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07", size = 781650 }, - { url = "https://files.pythonhosted.org/packages/a7/d5/880921ee4eec393a4752e6ab9f0fe28009435417c3102fc413f3fe81c4e5/regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e", size = 789545 }, - { url = "https://files.pythonhosted.org/packages/dc/96/53770115e507081122beca8899ab7f5ae28ae790bfcc82b5e38976df6a77/regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6", size = 853045 }, - { url = "https://files.pythonhosted.org/packages/31/d3/1372add5251cc2d44b451bd94f43b2ec78e15a6e82bff6a290ef9fd8f00a/regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4", size = 860182 }, - { url = "https://files.pythonhosted.org/packages/ed/e3/c446a64984ea9f69982ba1a69d4658d5014bc7a0ea468a07e1a1265db6e2/regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d", size = 787733 }, - { url = "https://files.pythonhosted.org/packages/2b/f1/e40c8373e3480e4f29f2692bd21b3e05f296d3afebc7e5dcf21b9756ca1c/regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff", size = 262122 }, - { url = "https://files.pythonhosted.org/packages/45/94/bc295babb3062a731f52621cdc992d123111282e291abaf23faa413443ea/regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a", size = 273545 }, -] - -[[package]] -name = "requests" -version = "2.32.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "charset-normalizer" }, - { name = "idna" }, - { name = "urllib3" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, -] - -[[package]] -name = "ruff" -version = "0.9.9" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6f/c3/418441a8170e8d53d05c0b9dad69760dbc7b8a12c10dbe6db1e1205d2377/ruff-0.9.9.tar.gz", hash = "sha256:0062ed13f22173e85f8f7056f9a24016e692efeea8704d1a5e8011b8aa850933", size = 3717448 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bc/c3/2c4afa9ba467555d074b146d9aed0633a56ccdb900839fb008295d037b89/ruff-0.9.9-py3-none-linux_armv6l.whl", hash = "sha256:628abb5ea10345e53dff55b167595a159d3e174d6720bf19761f5e467e68d367", size = 10027252 }, - { url = "https://files.pythonhosted.org/packages/33/d1/439e58487cf9eac26378332e25e7d5ade4b800ce1eec7dc2cfc9b0d7ca96/ruff-0.9.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b6cd1428e834b35d7493354723543b28cc11dc14d1ce19b685f6e68e07c05ec7", size = 10840721 }, - { url = "https://files.pythonhosted.org/packages/50/44/fead822c38281ba0122f1b76b460488a175a9bd48b130650a6fb6dbcbcf9/ruff-0.9.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5ee162652869120ad260670706f3cd36cd3f32b0c651f02b6da142652c54941d", size = 10161439 }, - { url = "https://files.pythonhosted.org/packages/11/ae/d404a2ab8e61ddf6342e09cc6b7f7846cce6b243e45c2007dbe0ca928a5d/ruff-0.9.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3aa0f6b75082c9be1ec5a1db78c6d4b02e2375c3068438241dc19c7c306cc61a", size = 10336264 }, - { url = "https://files.pythonhosted.org/packages/6a/4e/7c268aa7d84cd709fb6f046b8972313142cffb40dfff1d2515c5e6288d54/ruff-0.9.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:584cc66e89fb5f80f84b05133dd677a17cdd86901d6479712c96597a3f28e7fe", size = 9908774 }, - { url = "https://files.pythonhosted.org/packages/cc/26/c618a878367ef1b76270fd027ca93692657d3f6122b84ba48911ef5f2edc/ruff-0.9.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf3369325761a35aba75cd5c55ba1b5eb17d772f12ab168fbfac54be85cf18c", size = 11428127 }, - { url = "https://files.pythonhosted.org/packages/d7/9a/c5588a93d9bfed29f565baf193fe802fa676a0c837938137ea6cf0576d8c/ruff-0.9.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:3403a53a32a90ce929aa2f758542aca9234befa133e29f4933dcef28a24317be", size = 12133187 }, - { url = "https://files.pythonhosted.org/packages/3e/ff/e7980a7704a60905ed7e156a8d73f604c846d9bd87deda9cabfa6cba073a/ruff-0.9.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:18454e7fa4e4d72cffe28a37cf6a73cb2594f81ec9f4eca31a0aaa9ccdfb1590", size = 11602937 }, - { url = "https://files.pythonhosted.org/packages/24/78/3690444ad9e3cab5c11abe56554c35f005b51d1d118b429765249095269f/ruff-0.9.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fadfe2c88724c9617339f62319ed40dcdadadf2888d5afb88bf3adee7b35bfb", size = 13771698 }, - { url = "https://files.pythonhosted.org/packages/6e/bf/e477c2faf86abe3988e0b5fd22a7f3520e820b2ee335131aca2e16120038/ruff-0.9.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6df104d08c442a1aabcfd254279b8cc1e2cbf41a605aa3e26610ba1ec4acf0b0", size = 11249026 }, - { url = "https://files.pythonhosted.org/packages/f7/82/cdaffd59e5a8cb5b14c408c73d7a555a577cf6645faaf83e52fe99521715/ruff-0.9.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d7c62939daf5b2a15af48abbd23bea1efdd38c312d6e7c4cedf5a24e03207e17", size = 10220432 }, - { url = "https://files.pythonhosted.org/packages/fe/a4/2507d0026225efa5d4412b6e294dfe54725a78652a5c7e29e6bd0fc492f3/ruff-0.9.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:9494ba82a37a4b81b6a798076e4a3251c13243fc37967e998efe4cce58c8a8d1", size = 9874602 }, - { url = "https://files.pythonhosted.org/packages/d5/be/f3aab1813846b476c4bcffe052d232244979c3cd99d751c17afb530ca8e4/ruff-0.9.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:4efd7a96ed6d36ef011ae798bf794c5501a514be369296c672dab7921087fa57", size = 10851212 }, - { url = "https://files.pythonhosted.org/packages/8b/45/8e5fd559bea0d2f57c4e12bf197a2fade2fac465aa518284f157dfbca92b/ruff-0.9.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:ab90a7944c5a1296f3ecb08d1cbf8c2da34c7e68114b1271a431a3ad30cb660e", size = 11327490 }, - { url = "https://files.pythonhosted.org/packages/42/55/e6c90f13880aeef327746052907e7e930681f26a164fe130ddac28b08269/ruff-0.9.9-py3-none-win32.whl", hash = "sha256:6b4c376d929c25ecd6d87e182a230fa4377b8e5125a4ff52d506ee8c087153c1", size = 10227912 }, - { url = "https://files.pythonhosted.org/packages/35/b2/da925693cb82a1208aa34966c0f36cb222baca94e729dd22a587bc22d0f3/ruff-0.9.9-py3-none-win_amd64.whl", hash = "sha256:837982ea24091d4c1700ddb2f63b7070e5baec508e43b01de013dc7eff974ff1", size = 11355632 }, - { url = "https://files.pythonhosted.org/packages/31/d8/de873d1c1b020d668d8ec9855d390764cb90cf8f6486c0983da52be8b7b7/ruff-0.9.9-py3-none-win_arm64.whl", hash = "sha256:3ac78f127517209fe6d96ab00f3ba97cafe38718b23b1db3e96d8b2d39e37ddf", size = 10435860 }, -] - -[[package]] -name = "six" -version = "1.17.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, -] - -[[package]] -name = "soupsieve" -version = "2.7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677 }, -] - -[[package]] -name = "super-collections" -version = "0.5.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "hjson" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b8/05/d1b50919a0d206d77255217d96dea9ab34bd1eb965a21559380c48f9517e/super_collections-0.5.3.tar.gz", hash = "sha256:94c1ec96c0a0d5e8e7d389ed8cde6882ac246940507c5e6b86e91945c2968d46", size = 10178 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/6d/58de58c521e7fb79bceb4da90d55250070bb4adfa3c870b82519a561c79d/super_collections-0.5.3-py3-none-any.whl", hash = "sha256:907d35b25dc4070910e8254bf2f5c928348af1cf8a1f1e8259e06c666e902cff", size = 8436 }, -] - -[[package]] -name = "termcolor" -version = "2.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/37/72/88311445fd44c455c7d553e61f95412cf89054308a1aa2434ab835075fc5/termcolor-2.5.0.tar.gz", hash = "sha256:998d8d27da6d48442e8e1f016119076b690d962507531df4890fcd2db2ef8a6f", size = 13057 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7f/be/df630c387a0a054815d60be6a97eb4e8f17385d5d6fe660e1c02750062b4/termcolor-2.5.0-py3-none-any.whl", hash = "sha256:37b17b5fc1e604945c2642c872a3764b5d547a48009871aea3edd3afa180afb8", size = 7755 }, -] - -[[package]] -name = "text-unidecode" -version = "1.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154 }, -] - -[[package]] -name = "typing-extensions" -version = "4.13.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, -] - -[[package]] -name = "typing-inspection" -version = "0.4.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125 }, -] - -[[package]] -name = "urllib3" -version = "2.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/aa/63/e53da845320b757bf29ef6a9062f5c669fe997973f966045cb019c3f4b66/urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d", size = 307268 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", size = 128369 }, -] - -[[package]] -name = "watchdog" -version = "6.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, - { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, - { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, - { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480 }, - { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451 }, - { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057 }, - { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, - { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, - { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, - { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, - { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, -] - -[[package]] -name = "wcmatch" -version = "10.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "bracex" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/41/ab/b3a52228538ccb983653c446c1656eddf1d5303b9cb8b9aef6a91299f862/wcmatch-10.0.tar.gz", hash = "sha256:e72f0de09bba6a04e0de70937b0cf06e55f36f37b3deb422dfaf854b867b840a", size = 115578 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ab/df/4ee467ab39cc1de4b852c212c1ed3becfec2e486a51ac1ce0091f85f38d7/wcmatch-10.0-py3-none-any.whl", hash = "sha256:0dd927072d03c0a6527a20d2e6ad5ba8d0380e60870c383bc533b71744df7b7a", size = 39347 }, -] diff --git a/forge.toml b/forge.toml new file mode 100644 index 000000000..d033197e8 --- /dev/null +++ b/forge.toml @@ -0,0 +1,15 @@ +project_name = "cse" +# project_short_description = "" +project_type = "python" +# start_year = 2025 +# use_app = false +# version_major = 0 +# version_minor = 1 +# version_patch = 0 +# year = 2025 +# [[deps]] +# name = "" # <- name of the dependency; vendor/ +# git_url = "" # <- add the url used to checkout this repository +# git_checkout = "" # <- add the branch, sha, or tag to check out +# add_to_cmake = true # <- if true, add to CMakeLists.txt files +# link_library_spec = "" # <- how library should appear in target_link_library(.); if blank, use project name \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..158d67d41 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,56 @@ +[project] +name = "cse" +version = "0.1.0" +description = "Source code for the California Simulation Engine and documentation" +requires-python = "~=3.12" +readme = "README.md" +keywords = ["cse", "energy-modeling", "simulation"] +dependencies = [ + "beautifulsoup4>=4.13.4", + "mkdocs-autorefs>=1.4.2", + "mkdocs-awesome-nav>=3.1.2", + "mkdocs-macros-plugin>=1.3.7", + "mkdocs-material>=9.6.16", + "python-slugify>=8.0.4", + "pyyaml>=6.0.2", + "types-pyyaml>=6.0.12.20250516", +] + +[dependency-groups] +dev = ["ruff", "pytest", "doit", "pre-commit", "mypy"] + +[tool.ruff] +line-length = 120 + +[tool.ruff.lint] +select = [ + "E", # pycodestyle errors (see https://docs.astral.sh/ruff/rules/#pycodestyle-e-w) + "F", # pyflakes (see https://docs.astral.sh/ruff/rules/#pyflakes-f) + "PL", # Pylint (see https://docs.astral.sh/ruff/rules/#pylint-pl) + "I001", # isort unsorted-imports (see https://docs.astral.sh/ruff/rules/#isort-i) +] +ignore = [ + "F405", # undefined-local-with-import-star-usage +] + +[tool.ruff.lint.pylint] +max-args = 6 + +[tool.mypy] +disallow_incomplete_defs = true +no_implicit_optional = true +check_untyped_defs = true + +[[tool.mypy.overrides]] +module = "cse.*" +disable_error_code = ["annotation-unchecked", "import"] + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.build.targets.wheel] +packages = ["cse"] + +[tool.uv] +[tool.uv.sources] diff --git a/uv.lock b/uv.lock new file mode 100644 index 000000000..837edb7e0 --- /dev/null +++ b/uv.lock @@ -0,0 +1,920 @@ +version = 1 +requires-python = ">=3.12, <4" +resolution-markers = [ + "python_full_version >= '3.13'", + "python_full_version < '3.13'", +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, +] + +[[package]] +name = "babel" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, +] + +[[package]] +name = "backrefs" +version = "5.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/a7/312f673df6a79003279e1f55619abbe7daebbb87c17c976ddc0345c04c7b/backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59", size = 5765857 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/4d/798dc1f30468134906575156c089c492cf79b5a5fd373f07fe26c4d046bf/backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f", size = 380267 }, + { url = "https://files.pythonhosted.org/packages/55/07/f0b3375bf0d06014e9787797e6b7cc02b38ac9ff9726ccfe834d94e9991e/backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf", size = 392072 }, + { url = "https://files.pythonhosted.org/packages/9d/12/4f345407259dd60a0997107758ba3f221cf89a9b5a0f8ed5b961aef97253/backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa", size = 397947 }, + { url = "https://files.pythonhosted.org/packages/10/bf/fa31834dc27a7f05e5290eae47c82690edc3a7b37d58f7fb35a1bdbf355b/backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b", size = 399843 }, + { url = "https://files.pythonhosted.org/packages/fc/24/b29af34b2c9c41645a9f4ff117bae860291780d73880f449e0b5d948c070/backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9", size = 411762 }, + { url = "https://files.pythonhosted.org/packages/41/ff/392bff89415399a979be4a65357a41d92729ae8580a66073d8ec8d810f98/backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60", size = 380265 }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285 }, +] + +[[package]] +name = "bracex" +version = "2.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/63/9a/fec38644694abfaaeca2798b58e276a8e61de49e2e37494ace423395febc/bracex-2.6.tar.gz", hash = "sha256:98f1347cd77e22ee8d967a30ad4e310b233f7754dbf31ff3fceb76145ba47dc7", size = 26642 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/2a/9186535ce58db529927f6cf5990a849aa9e052eea3e2cfefe20b9e1802da/bracex-2.6-py3-none-any.whl", hash = "sha256:0b0049264e7340b3ec782b5cb99beb325f36c3782a32e36e876452fd49a09952", size = 11508 }, +] + +[[package]] +name = "certifi" +version = "2025.7.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/76/52c535bcebe74590f296d6c77c86dabf761c41980e1347a2422e4aa2ae41/certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995", size = 163981 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/52/34c6cf5bb9285074dc3531c437b3919e825d976fde097a7a73f79e726d03/certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2", size = 162722 }, +] + +[[package]] +name = "cfgv" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249 }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936 }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790 }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924 }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626 }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567 }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957 }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408 }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399 }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815 }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537 }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565 }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357 }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776 }, + { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622 }, + { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435 }, + { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653 }, + { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231 }, + { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243 }, + { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442 }, + { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147 }, + { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057 }, + { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454 }, + { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174 }, + { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166 }, + { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064 }, + { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641 }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626 }, +] + +[[package]] +name = "click" +version = "8.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215 }, +] + +[[package]] +name = "cloudpickle" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992 }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "cse" +version = "0.1.0" +source = { editable = "." } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "mkdocs-autorefs" }, + { name = "mkdocs-awesome-nav" }, + { name = "mkdocs-macros-plugin" }, + { name = "mkdocs-material" }, + { name = "python-slugify" }, + { name = "pyyaml" }, + { name = "types-pyyaml" }, +] + +[package.dev-dependencies] +dev = [ + { name = "doit" }, + { name = "mypy" }, + { name = "pre-commit" }, + { name = "pytest" }, + { name = "ruff" }, +] + +[package.metadata] +requires-dist = [ + { name = "beautifulsoup4", specifier = ">=4.13.4" }, + { name = "mkdocs-autorefs", specifier = ">=1.4.2" }, + { name = "mkdocs-awesome-nav", specifier = ">=3.1.2" }, + { name = "mkdocs-macros-plugin", specifier = ">=1.3.7" }, + { name = "mkdocs-material", specifier = ">=9.6.16" }, + { name = "python-slugify", specifier = ">=8.0.4" }, + { name = "pyyaml", specifier = ">=6.0.2" }, + { name = "types-pyyaml", specifier = ">=6.0.12.20250516" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "doit" }, + { name = "mypy" }, + { name = "pre-commit" }, + { name = "pytest" }, + { name = "ruff" }, +] + +[[package]] +name = "distlib" +version = "0.3.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973 }, +] + +[[package]] +name = "doit" +version = "0.36.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cloudpickle" }, + { name = "importlib-metadata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5a/36/66b7dea1bb5688ba0d2d7bc113e9c0d57df697bd3f39ce2a139d9612aeee/doit-0.36.0.tar.gz", hash = "sha256:71d07ccc9514cb22fe59d98999577665eaab57e16f644d04336ae0b4bae234bc", size = 1448096 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/83/a2960d2c975836daa629a73995134fd86520c101412578c57da3d2aa71ee/doit-0.36.0-py3-none-any.whl", hash = "sha256:ebc285f6666871b5300091c26eafdff3de968a6bd60ea35dd1e3fc6f2e32479a", size = 85937 }, +] + +[[package]] +name = "filelock" +version = "3.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215 }, +] + +[[package]] +name = "ghp-import" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, +] + +[[package]] +name = "hjson" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/e5/0b56d723a76ca67abadbf7fb71609fb0ea7e6926e94fcca6c65a85b36a0e/hjson-3.1.0.tar.gz", hash = "sha256:55af475a27cf83a7969c808399d7bccdec8fb836a07ddbd574587593b9cdcf75", size = 40541 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/7f/13cd798d180af4bf4c0ceddeefba2b864a63c71645abc0308b768d67bb81/hjson-3.1.0-py3-none-any.whl", hash = "sha256:65713cdcf13214fb554eb8b4ef803419733f4f5e551047c9b711098ab7186b89", size = 54018 }, +] + +[[package]] +name = "identify" +version = "2.6.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9b/98/a71ab060daec766acc30fb47dfca219d03de34a70d616a79a38c6066c5bf/identify-2.6.9.tar.gz", hash = "sha256:d40dfe3142a1421d8518e3d3985ef5ac42890683e32306ad614a29490abeb6bf", size = 99249 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/ce/0845144ed1f0e25db5e7a79c2354c1da4b5ce392b8966449d5db8dca18f1/identify-2.6.9-py2.py3-none-any.whl", hash = "sha256:c98b4322da415a8e5a70ff6e51fbc2d2932c015532d77e9f8537b4ba7813b150", size = 99101 }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, +] + +[[package]] +name = "importlib-metadata" +version = "8.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/08/c1395a292bb23fd03bdf572a1357c5a733d3eecbab877641ceacab23db6e/importlib_metadata-8.6.1.tar.gz", hash = "sha256:310b41d755445d74569f993ccfc22838295d9fe005425094fad953d7f15c8580", size = 55767 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/9d/0fb148dc4d6fa4a7dd1d8378168d9b4cd8d4560a6fbf6f0121c5fc34eb68/importlib_metadata-8.6.1-py3-none-any.whl", hash = "sha256:02a89390c1e15fdfdc0d7c6b25cb3e62650d0494005c97d6f148bf5b9787525e", size = 26971 }, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, +] + +[[package]] +name = "markdown" +version = "3.8.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/c2/4ab49206c17f75cb08d6311171f2d65798988db4360c4d1485bd0eedd67c/markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45", size = 362071 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/2b/34cc11786bc00d0f04d0f5fdc3a2b1ae0b6239eef72d3d345805f9ad92a1/markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24", size = 106827 }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, +] + +[[package]] +name = "mergedeep" +version = "1.3.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, +] + +[[package]] +name = "mkdocs" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "ghp-import" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "markupsafe" }, + { name = "mergedeep" }, + { name = "mkdocs-get-deps" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "pyyaml" }, + { name = "pyyaml-env-tag" }, + { name = "watchdog" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, +] + +[[package]] +name = "mkdocs-autorefs" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown" }, + { name = "markupsafe" }, + { name = "mkdocs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/47/0c/c9826f35b99c67fa3a7cddfa094c1a6c43fafde558c309c6e4403e5b37dc/mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749", size = 54961 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/dc/fc063b78f4b769d1956319351704e23ebeba1e9e1d6a41b4b602325fd7e4/mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13", size = 24969 }, +] + +[[package]] +name = "mkdocs-awesome-nav" +version = "3.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mkdocs" }, + { name = "natsort" }, + { name = "pydantic" }, + { name = "wcmatch" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6c/18/21f1e8e72b5e2133fba743741f7f0b9eb0b6f2def9e5c141c189a52a62ca/mkdocs_awesome_nav-3.1.2.tar.gz", hash = "sha256:98c5300330ad8e9b665b3f0b38e0116ddc14ce26ac7f3f8c31af5e0faa685a37", size = 8752 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/23/2ae189f4bbb5d35bf6dbd202a534b3f7f929c404d056fb0b20e826b9b643/mkdocs_awesome_nav-3.1.2-py3-none-any.whl", hash = "sha256:2ae0e0bd8494c38277a88cb11b70a0e7e2731c1a3bf9c9c3cfcfd2e1b51a4b87", size = 12470 }, +] + +[[package]] +name = "mkdocs-get-deps" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mergedeep" }, + { name = "platformdirs" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, +] + +[[package]] +name = "mkdocs-macros-plugin" +version = "1.3.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "hjson" }, + { name = "jinja2" }, + { name = "mkdocs" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "python-dateutil" }, + { name = "pyyaml" }, + { name = "super-collections" }, + { name = "termcolor" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/43/65/61a746c56788867221aebf07fe4b6b4c08ac99cf341fd51d728c89d1456e/mkdocs_macros_plugin-1.3.7.tar.gz", hash = "sha256:17c7fd1a49b94defcdb502fd453d17a1e730f8836523379d21292eb2be4cb523", size = 33466 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/cf/f03331298ee50a4da6fb72ccec79078041158c1f8b5fc24835c1be42232e/mkdocs_macros_plugin-1.3.7-py3-none-any.whl", hash = "sha256:02432033a5b77fb247d6ec7924e72fc4ceec264165b1644ab8d0dc159c22ce59", size = 37799 }, +] + +[[package]] +name = "mkdocs-material" +version = "9.6.16" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "backrefs" }, + { name = "colorama" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "mkdocs" }, + { name = "mkdocs-material-extensions" }, + { name = "paginate" }, + { name = "pygments" }, + { name = "pymdown-extensions" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dd/84/aec27a468c5e8c27689c71b516fb5a0d10b8fca45b9ad2dd9d6e43bc4296/mkdocs_material-9.6.16.tar.gz", hash = "sha256:d07011df4a5c02ee0877496d9f1bfc986cfb93d964799b032dd99fe34c0e9d19", size = 4028828 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/65/f4/90ad67125b4dd66e7884e4dbdfab82e3679eb92b751116f8bb25ccfe2f0c/mkdocs_material-9.6.16-py3-none-any.whl", hash = "sha256:8d1a1282b892fe1fdf77bfeb08c485ba3909dd743c9ba69a19a40f637c6ec18c", size = 9223743 }, +] + +[[package]] +name = "mkdocs-material-extensions" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, +] + +[[package]] +name = "mypy" +version = "1.15.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981 }, + { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175 }, + { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675 }, + { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020 }, + { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582 }, + { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614 }, + { url = "https://files.pythonhosted.org/packages/6a/9b/fd2e05d6ffff24d912f150b87db9e364fa8282045c875654ce7e32fffa66/mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445", size = 10788592 }, + { url = "https://files.pythonhosted.org/packages/74/37/b246d711c28a03ead1fd906bbc7106659aed7c089d55fe40dd58db812628/mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d", size = 9753611 }, + { url = "https://files.pythonhosted.org/packages/a6/ac/395808a92e10cfdac8003c3de9a2ab6dc7cde6c0d2a4df3df1b815ffd067/mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5", size = 11438443 }, + { url = "https://files.pythonhosted.org/packages/d2/8b/801aa06445d2de3895f59e476f38f3f8d610ef5d6908245f07d002676cbf/mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036", size = 12402541 }, + { url = "https://files.pythonhosted.org/packages/c7/67/5a4268782eb77344cc613a4cf23540928e41f018a9a1ec4c6882baf20ab8/mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357", size = 12494348 }, + { url = "https://files.pythonhosted.org/packages/83/3e/57bb447f7bbbfaabf1712d96f9df142624a386d98fb026a761532526057e/mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf", size = 9373648 }, + { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777 }, +] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, +] + +[[package]] +name = "natsort" +version = "8.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e2/a9/a0c57aee75f77794adaf35322f8b6404cbd0f89ad45c87197a937764b7d0/natsort-8.4.0.tar.gz", hash = "sha256:45312c4a0e5507593da193dedd04abb1469253b601ecaf63445ad80f0a1ea581", size = 76575 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/82/7a9d0550484a62c6da82858ee9419f3dd1ccc9aa1c26a1e43da3ecd20b0d/natsort-8.4.0-py3-none-any.whl", hash = "sha256:4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c", size = 38268 }, +] + +[[package]] +name = "nodeenv" +version = "1.9.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, +] + +[[package]] +name = "packaging" +version = "24.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, +] + +[[package]] +name = "paginate" +version = "0.5.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, +] + +[[package]] +name = "platformdirs" +version = "4.3.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/2d/7d512a3913d60623e7eb945c6d1b4f0bddf1d0b7ada5225274c87e5b53d1/platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351", size = 21291 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/45/59578566b3275b8fd9157885918fcd0c4d74162928a5310926887b856a51/platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94", size = 18499 }, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, +] + +[[package]] +name = "pre-commit" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cfgv" }, + { name = "identify" }, + { name = "nodeenv" }, + { name = "pyyaml" }, + { name = "virtualenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707 }, +] + +[[package]] +name = "pydantic" +version = "2.11.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782 }, +] + +[[package]] +name = "pydantic-core" +version = "2.33.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000 }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996 }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957 }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199 }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296 }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109 }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028 }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044 }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881 }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034 }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187 }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628 }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866 }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894 }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688 }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808 }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580 }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859 }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810 }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498 }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611 }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924 }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196 }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389 }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223 }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473 }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269 }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921 }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162 }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560 }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777 }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217 }, +] + +[[package]] +name = "pymdown-extensions" +version = "10.16.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/b3/6d2b3f149bc5413b0a29761c2c5832d8ce904a1d7f621e86616d96f505cc/pymdown_extensions-10.16.1.tar.gz", hash = "sha256:aace82bcccba3efc03e25d584e6a22d27a8e17caa3f4dd9f207e49b787aa9a91", size = 853277 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e4/06/43084e6cbd4b3bc0e80f6be743b2e79fbc6eed8de9ad8c629939fa55d972/pymdown_extensions-10.16.1-py3-none-any.whl", hash = "sha256:d6ba157a6c03146a7fb122b2b9a121300056384eafeec9c9f9e584adfdb2a32d", size = 266178 }, +] + +[[package]] +name = "pytest" +version = "8.3.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, +] + +[[package]] +name = "python-slugify" +version = "8.0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "text-unidecode" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051 }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, +] + +[[package]] +name = "pyyaml-env-tag" +version = "1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722 }, +] + +[[package]] +name = "requests" +version = "2.32.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847 }, +] + +[[package]] +name = "ruff" +version = "0.11.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/61/fb87430f040e4e577e784e325351186976516faef17d6fcd921fe28edfd7/ruff-0.11.2.tar.gz", hash = "sha256:ec47591497d5a1050175bdf4e1a4e6272cddff7da88a2ad595e1e326041d8d94", size = 3857511 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/99/102578506f0f5fa29fd7e0df0a273864f79af044757aef73d1cae0afe6ad/ruff-0.11.2-py3-none-linux_armv6l.whl", hash = "sha256:c69e20ea49e973f3afec2c06376eb56045709f0212615c1adb0eda35e8a4e477", size = 10113146 }, + { url = "https://files.pythonhosted.org/packages/74/ad/5cd4ba58ab602a579997a8494b96f10f316e874d7c435bcc1a92e6da1b12/ruff-0.11.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2c5424cc1c4eb1d8ecabe6d4f1b70470b4f24a0c0171356290b1953ad8f0e272", size = 10867092 }, + { url = "https://files.pythonhosted.org/packages/fc/3e/d3f13619e1d152c7b600a38c1a035e833e794c6625c9a6cea6f63dbf3af4/ruff-0.11.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:ecf20854cc73f42171eedb66f006a43d0a21bfb98a2523a809931cda569552d9", size = 10224082 }, + { url = "https://files.pythonhosted.org/packages/90/06/f77b3d790d24a93f38e3806216f263974909888fd1e826717c3ec956bbcd/ruff-0.11.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c543bf65d5d27240321604cee0633a70c6c25c9a2f2492efa9f6d4b8e4199bb", size = 10394818 }, + { url = "https://files.pythonhosted.org/packages/99/7f/78aa431d3ddebfc2418cd95b786642557ba8b3cb578c075239da9ce97ff9/ruff-0.11.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:20967168cc21195db5830b9224be0e964cc9c8ecf3b5a9e3ce19876e8d3a96e3", size = 9952251 }, + { url = "https://files.pythonhosted.org/packages/30/3e/f11186d1ddfaca438c3bbff73c6a2fdb5b60e6450cc466129c694b0ab7a2/ruff-0.11.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:955a9ce63483999d9f0b8f0b4a3ad669e53484232853054cc8b9d51ab4c5de74", size = 11563566 }, + { url = "https://files.pythonhosted.org/packages/22/6c/6ca91befbc0a6539ee133d9a9ce60b1a354db12c3c5d11cfdbf77140f851/ruff-0.11.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:86b3a27c38b8fce73bcd262b0de32e9a6801b76d52cdb3ae4c914515f0cef608", size = 12208721 }, + { url = "https://files.pythonhosted.org/packages/19/b0/24516a3b850d55b17c03fc399b681c6a549d06ce665915721dc5d6458a5c/ruff-0.11.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3b66a03b248c9fcd9d64d445bafdf1589326bee6fc5c8e92d7562e58883e30f", size = 11662274 }, + { url = "https://files.pythonhosted.org/packages/d7/65/76be06d28ecb7c6070280cef2bcb20c98fbf99ff60b1c57d2fb9b8771348/ruff-0.11.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0397c2672db015be5aa3d4dac54c69aa012429097ff219392c018e21f5085147", size = 13792284 }, + { url = "https://files.pythonhosted.org/packages/ce/d2/4ceed7147e05852876f3b5f3fdc23f878ce2b7e0b90dd6e698bda3d20787/ruff-0.11.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:869bcf3f9abf6457fbe39b5a37333aa4eecc52a3b99c98827ccc371a8e5b6f1b", size = 11327861 }, + { url = "https://files.pythonhosted.org/packages/c4/78/4935ecba13706fd60ebe0e3dc50371f2bdc3d9bc80e68adc32ff93914534/ruff-0.11.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2a2b50ca35457ba785cd8c93ebbe529467594087b527a08d487cf0ee7b3087e9", size = 10276560 }, + { url = "https://files.pythonhosted.org/packages/81/7f/1b2435c3f5245d410bb5dc80f13ec796454c21fbda12b77d7588d5cf4e29/ruff-0.11.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7c69c74bf53ddcfbc22e6eb2f31211df7f65054bfc1f72288fc71e5f82db3eab", size = 9945091 }, + { url = "https://files.pythonhosted.org/packages/39/c4/692284c07e6bf2b31d82bb8c32f8840f9d0627d92983edaac991a2b66c0a/ruff-0.11.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6e8fb75e14560f7cf53b15bbc55baf5ecbe373dd5f3aab96ff7aa7777edd7630", size = 10977133 }, + { url = "https://files.pythonhosted.org/packages/94/cf/8ab81cb7dd7a3b0a3960c2769825038f3adcd75faf46dd6376086df8b128/ruff-0.11.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:842a472d7b4d6f5924e9297aa38149e5dcb1e628773b70e6387ae2c97a63c58f", size = 11378514 }, + { url = "https://files.pythonhosted.org/packages/d9/3a/a647fa4f316482dacf2fd68e8a386327a33d6eabd8eb2f9a0c3d291ec549/ruff-0.11.2-py3-none-win32.whl", hash = "sha256:aca01ccd0eb5eb7156b324cfaa088586f06a86d9e5314b0eb330cb48415097cc", size = 10319835 }, + { url = "https://files.pythonhosted.org/packages/86/54/3c12d3af58012a5e2cd7ebdbe9983f4834af3f8cbea0e8a8c74fa1e23b2b/ruff-0.11.2-py3-none-win_amd64.whl", hash = "sha256:3170150172a8f994136c0c66f494edf199a0bbea7a409f649e4bc8f4d7084080", size = 11373713 }, + { url = "https://files.pythonhosted.org/packages/d6/d4/dd813703af8a1e2ac33bf3feb27e8a5ad514c9f219df80c64d69807e7f71/ruff-0.11.2-py3-none-win_arm64.whl", hash = "sha256:52933095158ff328f4c77af3d74f0379e34fd52f175144cefc1b192e7ccd32b4", size = 10441990 }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, +] + +[[package]] +name = "soupsieve" +version = "2.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677 }, +] + +[[package]] +name = "super-collections" +version = "0.5.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "hjson" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b8/05/d1b50919a0d206d77255217d96dea9ab34bd1eb965a21559380c48f9517e/super_collections-0.5.3.tar.gz", hash = "sha256:94c1ec96c0a0d5e8e7d389ed8cde6882ac246940507c5e6b86e91945c2968d46", size = 10178 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6d/58de58c521e7fb79bceb4da90d55250070bb4adfa3c870b82519a561c79d/super_collections-0.5.3-py3-none-any.whl", hash = "sha256:907d35b25dc4070910e8254bf2f5c928348af1cf8a1f1e8259e06c666e902cff", size = 8436 }, +] + +[[package]] +name = "termcolor" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/6c/3d75c196ac07ac8749600b60b03f4f6094d54e132c4d94ebac6ee0e0add0/termcolor-3.1.0.tar.gz", hash = "sha256:6a6dd7fbee581909eeec6a756cff1d7f7c376063b14e4a298dc4980309e55970", size = 14324 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/bd/de8d508070629b6d84a30d01d57e4a65c69aa7f5abe7560b8fad3b50ea59/termcolor-3.1.0-py3-none-any.whl", hash = "sha256:591dd26b5c2ce03b9e43f391264626557873ce1d379019786f99b0c2bee140aa", size = 7684 }, +] + +[[package]] +name = "text-unidecode" +version = "1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154 }, +] + +[[package]] +name = "types-pyyaml" +version = "6.0.12.20250516" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4e/22/59e2aeb48ceeee1f7cd4537db9568df80d62bdb44a7f9e743502ea8aab9c/types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba", size = 17378 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530", size = 20312 }, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 }, +] + +[[package]] +name = "urllib3" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795 }, +] + +[[package]] +name = "virtualenv" +version = "20.29.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "distlib" }, + { name = "filelock" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/9c/57d19fa093bcf5ac61a48087dd44d00655f85421d1aa9722f8befbf3f40a/virtualenv-20.29.3.tar.gz", hash = "sha256:95e39403fcf3940ac45bc717597dba16110b74506131845d9b687d5e73d947ac", size = 4320280 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/eb/c6db6e3001d58c6a9e67c74bb7b4206767caa3ccc28c6b9eaf4c23fb4e34/virtualenv-20.29.3-py3-none-any.whl", hash = "sha256:3e3d00f5807e83b234dfb6122bf37cfadf4be216c53a49ac059d02414f819170", size = 4301458 }, +] + +[[package]] +name = "watchdog" +version = "6.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, + { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480 }, + { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451 }, + { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057 }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, +] + +[[package]] +name = "wcmatch" +version = "10.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "bracex" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/79/3e/c0bdc27cf06f4e47680bd5803a07cb3dfd17de84cde92dd217dcb9e05253/wcmatch-10.1.tar.gz", hash = "sha256:f11f94208c8c8484a16f4f48638a85d771d9513f4ab3f37595978801cb9465af", size = 117421 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/d8/0d1d2e9d3fabcf5d6840362adcf05f8cf3cd06a73358140c3a97189238ae/wcmatch-10.1-py3-none-any.whl", hash = "sha256:5848ace7dbb0476e5e55ab63c6bbd529745089343427caa5537f230cc01beb8a", size = 39854 }, +] + +[[package]] +name = "zipp" +version = "3.21.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/50/bad581df71744867e9468ebd0bcd6505de3b275e06f202c2cb016e3ff56f/zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4", size = 24545 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/1a/7e4798e9339adc931158c9d69ecc34f5e6791489d469f5e50ec15e35f458/zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931", size = 9630 }, +] From ae10fabefbc29738c49199ace31b70afbee06bfe Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Fri, 12 Sep 2025 14:36:51 -0600 Subject: [PATCH 098/117] Update to latest Mkdocs-material. --- pyproject.toml | 2 +- uv.lock | 90 +++++++++++++++++++++++++++----------------------- 2 files changed, 50 insertions(+), 42 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 158d67d41..57bb704ff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ dependencies = [ "mkdocs-autorefs>=1.4.2", "mkdocs-awesome-nav>=3.1.2", "mkdocs-macros-plugin>=1.3.7", - "mkdocs-material>=9.6.16", + "mkdocs-material>=9.6.19", "python-slugify>=8.0.4", "pyyaml>=6.0.2", "types-pyyaml>=6.0.12.20250516", diff --git a/uv.lock b/uv.lock index 837edb7e0..97feef5cb 100644 --- a/uv.lock +++ b/uv.lock @@ -61,11 +61,11 @@ wheels = [ [[package]] name = "certifi" -version = "2025.7.14" +version = "2025.8.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b3/76/52c535bcebe74590f296d6c77c86dabf761c41980e1347a2422e4aa2ae41/certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995", size = 163981 } +sdist = { url = "https://files.pythonhosted.org/packages/dc/67/960ebe6bf230a96cda2e0abcf73af550ec4f090005363542f0765df162e0/certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407", size = 162386 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4f/52/34c6cf5bb9285074dc3531c437b3919e825d976fde097a7a73f79e726d03/certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2", size = 162722 }, + { url = "https://files.pythonhosted.org/packages/e5/48/1549795ba7742c948d2ad169c1c8cdbae65bc450d6cd753d124b17c8cd32/certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5", size = 161216 }, ] [[package]] @@ -79,37 +79,44 @@ wheels = [ [[package]] name = "charset-normalizer" -version = "3.4.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936 }, - { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790 }, - { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924 }, - { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626 }, - { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567 }, - { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957 }, - { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408 }, - { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399 }, - { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815 }, - { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537 }, - { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565 }, - { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357 }, - { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776 }, - { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622 }, - { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435 }, - { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653 }, - { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231 }, - { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243 }, - { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442 }, - { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147 }, - { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057 }, - { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454 }, - { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174 }, - { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166 }, - { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064 }, - { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641 }, - { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626 }, +version = "3.4.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/2d/5fd176ceb9b2fc619e63405525573493ca23441330fcdaee6bef9460e924/charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14", size = 122371 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/5e/14c94999e418d9b87682734589404a25854d5f5d0408df68bc15b6ff54bb/charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1", size = 205655 }, + { url = "https://files.pythonhosted.org/packages/7d/a8/c6ec5d389672521f644505a257f50544c074cf5fc292d5390331cd6fc9c3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884", size = 146223 }, + { url = "https://files.pythonhosted.org/packages/fc/eb/a2ffb08547f4e1e5415fb69eb7db25932c52a52bed371429648db4d84fb1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018", size = 159366 }, + { url = "https://files.pythonhosted.org/packages/82/10/0fd19f20c624b278dddaf83b8464dcddc2456cb4b02bb902a6da126b87a1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392", size = 157104 }, + { url = "https://files.pythonhosted.org/packages/16/ab/0233c3231af734f5dfcf0844aa9582d5a1466c985bbed6cedab85af9bfe3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f", size = 151830 }, + { url = "https://files.pythonhosted.org/packages/ae/02/e29e22b4e02839a0e4a06557b1999d0a47db3567e82989b5bb21f3fbbd9f/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154", size = 148854 }, + { url = "https://files.pythonhosted.org/packages/05/6b/e2539a0a4be302b481e8cafb5af8792da8093b486885a1ae4d15d452bcec/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491", size = 160670 }, + { url = "https://files.pythonhosted.org/packages/31/e7/883ee5676a2ef217a40ce0bffcc3d0dfbf9e64cbcfbdf822c52981c3304b/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93", size = 158501 }, + { url = "https://files.pythonhosted.org/packages/c1/35/6525b21aa0db614cf8b5792d232021dca3df7f90a1944db934efa5d20bb1/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f", size = 153173 }, + { url = "https://files.pythonhosted.org/packages/50/ee/f4704bad8201de513fdc8aac1cabc87e38c5818c93857140e06e772b5892/charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37", size = 99822 }, + { url = "https://files.pythonhosted.org/packages/39/f5/3b3836ca6064d0992c58c7561c6b6eee1b3892e9665d650c803bd5614522/charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc", size = 107543 }, + { url = "https://files.pythonhosted.org/packages/65/ca/2135ac97709b400c7654b4b764daf5c5567c2da45a30cdd20f9eefe2d658/charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe", size = 205326 }, + { url = "https://files.pythonhosted.org/packages/71/11/98a04c3c97dd34e49c7d247083af03645ca3730809a5509443f3c37f7c99/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8", size = 146008 }, + { url = "https://files.pythonhosted.org/packages/60/f5/4659a4cb3c4ec146bec80c32d8bb16033752574c20b1252ee842a95d1a1e/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9", size = 159196 }, + { url = "https://files.pythonhosted.org/packages/86/9e/f552f7a00611f168b9a5865a1414179b2c6de8235a4fa40189f6f79a1753/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31", size = 156819 }, + { url = "https://files.pythonhosted.org/packages/7e/95/42aa2156235cbc8fa61208aded06ef46111c4d3f0de233107b3f38631803/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f", size = 151350 }, + { url = "https://files.pythonhosted.org/packages/c2/a9/3865b02c56f300a6f94fc631ef54f0a8a29da74fb45a773dfd3dcd380af7/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927", size = 148644 }, + { url = "https://files.pythonhosted.org/packages/77/d9/cbcf1a2a5c7d7856f11e7ac2d782aec12bdfea60d104e60e0aa1c97849dc/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9", size = 160468 }, + { url = "https://files.pythonhosted.org/packages/f6/42/6f45efee8697b89fda4d50580f292b8f7f9306cb2971d4b53f8914e4d890/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5", size = 158187 }, + { url = "https://files.pythonhosted.org/packages/70/99/f1c3bdcfaa9c45b3ce96f70b14f070411366fa19549c1d4832c935d8e2c3/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc", size = 152699 }, + { url = "https://files.pythonhosted.org/packages/a3/ad/b0081f2f99a4b194bcbb1934ef3b12aa4d9702ced80a37026b7607c72e58/charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce", size = 99580 }, + { url = "https://files.pythonhosted.org/packages/9a/8f/ae790790c7b64f925e5c953b924aaa42a243fb778fed9e41f147b2a5715a/charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef", size = 107366 }, + { url = "https://files.pythonhosted.org/packages/8e/91/b5a06ad970ddc7a0e513112d40113e834638f4ca1120eb727a249fb2715e/charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15", size = 204342 }, + { url = "https://files.pythonhosted.org/packages/ce/ec/1edc30a377f0a02689342f214455c3f6c2fbedd896a1d2f856c002fc3062/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db", size = 145995 }, + { url = "https://files.pythonhosted.org/packages/17/e5/5e67ab85e6d22b04641acb5399c8684f4d37caf7558a53859f0283a650e9/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d", size = 158640 }, + { url = "https://files.pythonhosted.org/packages/f1/e5/38421987f6c697ee3722981289d554957c4be652f963d71c5e46a262e135/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096", size = 156636 }, + { url = "https://files.pythonhosted.org/packages/a0/e4/5a075de8daa3ec0745a9a3b54467e0c2967daaaf2cec04c845f73493e9a1/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa", size = 150939 }, + { url = "https://files.pythonhosted.org/packages/02/f7/3611b32318b30974131db62b4043f335861d4d9b49adc6d57c1149cc49d4/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049", size = 148580 }, + { url = "https://files.pythonhosted.org/packages/7e/61/19b36f4bd67f2793ab6a99b979b4e4f3d8fc754cbdffb805335df4337126/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0", size = 159870 }, + { url = "https://files.pythonhosted.org/packages/06/57/84722eefdd338c04cf3030ada66889298eaedf3e7a30a624201e0cbe424a/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92", size = 157797 }, + { url = "https://files.pythonhosted.org/packages/72/2a/aff5dd112b2f14bcc3462c312dce5445806bfc8ab3a7328555da95330e4b/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16", size = 152224 }, + { url = "https://files.pythonhosted.org/packages/b7/8c/9839225320046ed279c6e839d51f028342eb77c91c89b8ef2549f951f3ec/charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce", size = 100086 }, + { url = "https://files.pythonhosted.org/packages/ee/7a/36fbcf646e41f710ce0a563c1c9a343c6edf9be80786edeb15b6f62e17db/charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c", size = 107400 }, + { url = "https://files.pythonhosted.org/packages/8a/1f/f041989e93b001bc4e44bb1669ccdcf54d3f00e628229a85b08d330615c5/charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a", size = 53175 }, ] [[package]] @@ -172,7 +179,7 @@ requires-dist = [ { name = "mkdocs-autorefs", specifier = ">=1.4.2" }, { name = "mkdocs-awesome-nav", specifier = ">=3.1.2" }, { name = "mkdocs-macros-plugin", specifier = ">=1.3.7" }, - { name = "mkdocs-material", specifier = ">=9.6.16" }, + { name = "mkdocs-material", specifier = ">=9.6.19" }, { name = "python-slugify", specifier = ">=8.0.4" }, { name = "pyyaml", specifier = ">=6.0.2" }, { name = "types-pyyaml", specifier = ">=6.0.12.20250516" }, @@ -435,11 +442,12 @@ wheels = [ [[package]] name = "mkdocs-material" -version = "9.6.16" +version = "9.6.19" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "babel" }, { name = "backrefs" }, + { name = "click" }, { name = "colorama" }, { name = "jinja2" }, { name = "markdown" }, @@ -450,9 +458,9 @@ dependencies = [ { name = "pymdown-extensions" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/dd/84/aec27a468c5e8c27689c71b516fb5a0d10b8fca45b9ad2dd9d6e43bc4296/mkdocs_material-9.6.16.tar.gz", hash = "sha256:d07011df4a5c02ee0877496d9f1bfc986cfb93d964799b032dd99fe34c0e9d19", size = 4028828 } +sdist = { url = "https://files.pythonhosted.org/packages/44/94/eb0fca39b19c2251b16bc759860a50f232655c4377116fa9c0e7db11b82c/mkdocs_material-9.6.19.tar.gz", hash = "sha256:80e7b3f9acabfee9b1f68bd12c26e59c865b3d5bbfb505fd1344e970db02c4aa", size = 4038202 } wheels = [ - { url = "https://files.pythonhosted.org/packages/65/f4/90ad67125b4dd66e7884e4dbdfab82e3679eb92b751116f8bb25ccfe2f0c/mkdocs_material-9.6.16-py3-none-any.whl", hash = "sha256:8d1a1282b892fe1fdf77bfeb08c485ba3909dd743c9ba69a19a40f637c6ec18c", size = 9223743 }, + { url = "https://files.pythonhosted.org/packages/02/23/a2551d1038bedc2771366f65ff3680bb3a89674cd7ca6140850c859f1f71/mkdocs_material-9.6.19-py3-none-any.whl", hash = "sha256:7492d2ac81952a467ca8a10cac915d6ea5c22876932f44b5a0f4f8e7d68ac06f", size = 9240205 }, ] [[package]] @@ -735,7 +743,7 @@ wheels = [ [[package]] name = "requests" -version = "2.32.4" +version = "2.32.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, @@ -743,9 +751,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258 } +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847 }, + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738 }, ] [[package]] From e98bdaccd4498c329969267f12ba267f10bd8434 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 16 Sep 2025 15:38:15 -0600 Subject: [PATCH 099/117] Exclude vendor directory from mypy checking. Fixes issue where mypy would crash in code editor when configured to run on-save. --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 57bb704ff..a47f605fc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,6 +40,7 @@ max-args = 6 disallow_incomplete_defs = true no_implicit_optional = true check_untyped_defs = true +exclude = ["vendor/"] [[tool.mypy.overrides]] module = "cse.*" From ee13bcfdb8e10d2e490919819a33701deb27970e Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Tue, 16 Sep 2025 15:39:35 -0600 Subject: [PATCH 100/117] Install mkdocs-material research-preview-2 for improved search behavior. --- pyproject.toml | 3 +- uv.lock | 77 +++++++++++++++++++++++++++++++++++--------------- 2 files changed, 56 insertions(+), 24 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index a47f605fc..9ff831f06 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ dependencies = [ "mkdocs-autorefs>=1.4.2", "mkdocs-awesome-nav>=3.1.2", "mkdocs-macros-plugin>=1.3.7", - "mkdocs-material>=9.6.19", + "mkdocs-material", "python-slugify>=8.0.4", "pyyaml>=6.0.2", "types-pyyaml>=6.0.12.20250516", @@ -55,3 +55,4 @@ packages = ["cse"] [tool.uv] [tool.uv.sources] +mkdocs-material = { git = "https://github.com/squidfunk/mkdocs-material.git", rev = "6af73667b36c2c1043252d3bc9f772a665295ae6" } diff --git a/uv.lock b/uv.lock index 97feef5cb..1f31fbdee 100644 --- a/uv.lock +++ b/uv.lock @@ -23,20 +23,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, ] -[[package]] -name = "backrefs" -version = "5.9" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/eb/a7/312f673df6a79003279e1f55619abbe7daebbb87c17c976ddc0345c04c7b/backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59", size = 5765857 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/19/4d/798dc1f30468134906575156c089c492cf79b5a5fd373f07fe26c4d046bf/backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f", size = 380267 }, - { url = "https://files.pythonhosted.org/packages/55/07/f0b3375bf0d06014e9787797e6b7cc02b38ac9ff9726ccfe834d94e9991e/backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf", size = 392072 }, - { url = "https://files.pythonhosted.org/packages/9d/12/4f345407259dd60a0997107758ba3f221cf89a9b5a0f8ed5b961aef97253/backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa", size = 397947 }, - { url = "https://files.pythonhosted.org/packages/10/bf/fa31834dc27a7f05e5290eae47c82690edc3a7b37d58f7fb35a1bdbf355b/backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b", size = 399843 }, - { url = "https://files.pythonhosted.org/packages/fc/24/b29af34b2c9c41645a9f4ff117bae860291780d73880f449e0b5d948c070/backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9", size = 411762 }, - { url = "https://files.pythonhosted.org/packages/41/ff/392bff89415399a979be4a65357a41d92729ae8580a66073d8ec8d810f98/backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60", size = 380265 }, -] - [[package]] name = "beautifulsoup4" version = "4.13.4" @@ -179,7 +165,7 @@ requires-dist = [ { name = "mkdocs-autorefs", specifier = ">=1.4.2" }, { name = "mkdocs-awesome-nav", specifier = ">=3.1.2" }, { name = "mkdocs-macros-plugin", specifier = ">=1.3.7" }, - { name = "mkdocs-material", specifier = ">=9.6.19" }, + { name = "mkdocs-material", git = "https://github.com/squidfunk/mkdocs-material.git?rev=6af73667b36c2c1043252d3bc9f772a665295ae6" }, { name = "python-slugify", specifier = ">=8.0.4" }, { name = "pyyaml", specifier = ">=6.0.2" }, { name = "types-pyyaml", specifier = ">=6.0.12.20250516" }, @@ -442,12 +428,10 @@ wheels = [ [[package]] name = "mkdocs-material" -version = "9.6.19" -source = { registry = "https://pypi.org/simple" } +version = "9.4.10" +source = { git = "https://github.com/squidfunk/mkdocs-material.git?rev=6af73667b36c2c1043252d3bc9f772a665295ae6#6af73667b36c2c1043252d3bc9f772a665295ae6" } dependencies = [ { name = "babel" }, - { name = "backrefs" }, - { name = "click" }, { name = "colorama" }, { name = "jinja2" }, { name = "markdown" }, @@ -456,12 +440,9 @@ dependencies = [ { name = "paginate" }, { name = "pygments" }, { name = "pymdown-extensions" }, + { name = "regex" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/44/94/eb0fca39b19c2251b16bc759860a50f232655c4377116fa9c0e7db11b82c/mkdocs_material-9.6.19.tar.gz", hash = "sha256:80e7b3f9acabfee9b1f68bd12c26e59c865b3d5bbfb505fd1344e970db02c4aa", size = 4038202 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/02/23/a2551d1038bedc2771366f65ff3680bb3a89674cd7ca6140850c859f1f71/mkdocs_material-9.6.19-py3-none-any.whl", hash = "sha256:7492d2ac81952a467ca8a10cac915d6ea5c22876932f44b5a0f4f8e7d68ac06f", size = 9240205 }, -] [[package]] name = "mkdocs-material-extensions" @@ -741,6 +722,56 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722 }, ] +[[package]] +name = "regex" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/5a/4c63457fbcaf19d138d72b2e9b39405954f98c0349b31c601bfcb151582c/regex-2025.9.1.tar.gz", hash = "sha256:88ac07b38d20b54d79e704e38aa3bd2c0f8027432164226bdee201a1c0c9c9ff", size = 400852 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/ef/a0372febc5a1d44c1be75f35d7e5aff40c659ecde864d7fa10e138f75e74/regex-2025.9.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:84a25164bd8dcfa9f11c53f561ae9766e506e580b70279d05a7946510bdd6f6a", size = 486317 }, + { url = "https://files.pythonhosted.org/packages/b5/25/d64543fb7eb41a1024786d518cc57faf1ce64aa6e9ddba097675a0c2f1d2/regex-2025.9.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:645e88a73861c64c1af558dd12294fb4e67b5c1eae0096a60d7d8a2143a611c7", size = 289698 }, + { url = "https://files.pythonhosted.org/packages/d8/dc/fbf31fc60be317bd9f6f87daa40a8a9669b3b392aa8fe4313df0a39d0722/regex-2025.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:10a450cba5cd5409526ee1d4449f42aad38dd83ac6948cbd6d7f71ca7018f7db", size = 287242 }, + { url = "https://files.pythonhosted.org/packages/0f/74/f933a607a538f785da5021acf5323961b4620972e2c2f1f39b6af4b71db7/regex-2025.9.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e9dc5991592933a4192c166eeb67b29d9234f9c86344481173d1bc52f73a7104", size = 797441 }, + { url = "https://files.pythonhosted.org/packages/89/d0/71fc49b4f20e31e97f199348b8c4d6e613e7b6a54a90eb1b090c2b8496d7/regex-2025.9.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a32291add816961aab472f4fad344c92871a2ee33c6c219b6598e98c1f0108f2", size = 862654 }, + { url = "https://files.pythonhosted.org/packages/59/05/984edce1411a5685ba9abbe10d42cdd9450aab4a022271f9585539788150/regex-2025.9.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:588c161a68a383478e27442a678e3b197b13c5ba51dbba40c1ccb8c4c7bee9e9", size = 910862 }, + { url = "https://files.pythonhosted.org/packages/b2/02/5c891bb5fe0691cc1bad336e3a94b9097fbcf9707ec8ddc1dce9f0397289/regex-2025.9.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:47829ffaf652f30d579534da9085fe30c171fa2a6744a93d52ef7195dc38218b", size = 801991 }, + { url = "https://files.pythonhosted.org/packages/f1/ae/fd10d6ad179910f7a1b3e0a7fde1ef8bb65e738e8ac4fd6ecff3f52252e4/regex-2025.9.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e978e5a35b293ea43f140c92a3269b6ab13fe0a2bf8a881f7ac740f5a6ade85", size = 786651 }, + { url = "https://files.pythonhosted.org/packages/30/cf/9d686b07bbc5bf94c879cc168db92542d6bc9fb67088d03479fef09ba9d3/regex-2025.9.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4cf09903e72411f4bf3ac1eddd624ecfd423f14b2e4bf1c8b547b72f248b7bf7", size = 856556 }, + { url = "https://files.pythonhosted.org/packages/91/9d/302f8a29bb8a49528abbab2d357a793e2a59b645c54deae0050f8474785b/regex-2025.9.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:d016b0f77be63e49613c9e26aaf4a242f196cd3d7a4f15898f5f0ab55c9b24d2", size = 849001 }, + { url = "https://files.pythonhosted.org/packages/93/fa/b4c6dbdedc85ef4caec54c817cd5f4418dbfa2453214119f2538082bf666/regex-2025.9.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:656563e620de6908cd1c9d4f7b9e0777e3341ca7db9d4383bcaa44709c90281e", size = 788138 }, + { url = "https://files.pythonhosted.org/packages/4a/1b/91ee17a3cbf87f81e8c110399279d0e57f33405468f6e70809100f2ff7d8/regex-2025.9.1-cp312-cp312-win32.whl", hash = "sha256:df33f4ef07b68f7ab637b1dbd70accbf42ef0021c201660656601e8a9835de45", size = 264524 }, + { url = "https://files.pythonhosted.org/packages/92/28/6ba31cce05b0f1ec6b787921903f83bd0acf8efde55219435572af83c350/regex-2025.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:5aba22dfbc60cda7c0853516104724dc904caa2db55f2c3e6e984eb858d3edf3", size = 275489 }, + { url = "https://files.pythonhosted.org/packages/bd/ed/ea49f324db00196e9ef7fe00dd13c6164d5173dd0f1bbe495e61bb1fb09d/regex-2025.9.1-cp312-cp312-win_arm64.whl", hash = "sha256:ec1efb4c25e1849c2685fa95da44bfde1b28c62d356f9c8d861d4dad89ed56e9", size = 268589 }, + { url = "https://files.pythonhosted.org/packages/98/25/b2959ce90c6138c5142fe5264ee1f9b71a0c502ca4c7959302a749407c79/regex-2025.9.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bc6834727d1b98d710a63e6c823edf6ffbf5792eba35d3fa119531349d4142ef", size = 485932 }, + { url = "https://files.pythonhosted.org/packages/49/2e/6507a2a85f3f2be6643438b7bd976e67ad73223692d6988eb1ff444106d3/regex-2025.9.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c3dc05b6d579875719bccc5f3037b4dc80433d64e94681a0061845bd8863c025", size = 289568 }, + { url = "https://files.pythonhosted.org/packages/c7/d8/de4a4b57215d99868f1640e062a7907e185ec7476b4b689e2345487c1ff4/regex-2025.9.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:22213527df4c985ec4a729b055a8306272d41d2f45908d7bacb79be0fa7a75ad", size = 286984 }, + { url = "https://files.pythonhosted.org/packages/03/15/e8cb403403a57ed316e80661db0e54d7aa2efcd85cb6156f33cc18746922/regex-2025.9.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8e3f6e3c5a5a1adc3f7ea1b5aec89abfc2f4fbfba55dafb4343cd1d084f715b2", size = 797514 }, + { url = "https://files.pythonhosted.org/packages/e4/26/2446f2b9585fed61faaa7e2bbce3aca7dd8df6554c32addee4c4caecf24a/regex-2025.9.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bcb89c02a0d6c2bec9b0bb2d8c78782699afe8434493bfa6b4021cc51503f249", size = 862586 }, + { url = "https://files.pythonhosted.org/packages/fd/b8/82ffbe9c0992c31bbe6ae1c4b4e21269a5df2559102b90543c9b56724c3c/regex-2025.9.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b0e2f95413eb0c651cd1516a670036315b91b71767af83bc8525350d4375ccba", size = 910815 }, + { url = "https://files.pythonhosted.org/packages/2f/d8/7303ea38911759c1ee30cc5bc623ee85d3196b733c51fd6703c34290a8d9/regex-2025.9.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:09a41dc039e1c97d3c2ed3e26523f748e58c4de3ea7a31f95e1cf9ff973fff5a", size = 802042 }, + { url = "https://files.pythonhosted.org/packages/fc/0e/6ad51a55ed4b5af512bb3299a05d33309bda1c1d1e1808fa869a0bed31bc/regex-2025.9.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f0b4258b161094f66857a26ee938d3fe7b8a5063861e44571215c44fbf0e5df", size = 786764 }, + { url = "https://files.pythonhosted.org/packages/8d/d5/394e3ffae6baa5a9217bbd14d96e0e5da47bb069d0dbb8278e2681a2b938/regex-2025.9.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bf70e18ac390e6977ea7e56f921768002cb0fa359c4199606c7219854ae332e0", size = 856557 }, + { url = "https://files.pythonhosted.org/packages/cd/80/b288d3910c41194ad081b9fb4b371b76b0bbfdce93e7709fc98df27b37dc/regex-2025.9.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b84036511e1d2bb0a4ff1aec26951caa2dea8772b223c9e8a19ed8885b32dbac", size = 849108 }, + { url = "https://files.pythonhosted.org/packages/d1/cd/5ec76bf626d0d5abdc277b7a1734696f5f3d14fbb4a3e2540665bc305d85/regex-2025.9.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c2e05dcdfe224047f2a59e70408274c325d019aad96227ab959403ba7d58d2d7", size = 788201 }, + { url = "https://files.pythonhosted.org/packages/b5/36/674672f3fdead107565a2499f3007788b878188acec6d42bc141c5366c2c/regex-2025.9.1-cp313-cp313-win32.whl", hash = "sha256:3b9a62107a7441b81ca98261808fed30ae36ba06c8b7ee435308806bd53c1ed8", size = 264508 }, + { url = "https://files.pythonhosted.org/packages/83/ad/931134539515eb64ce36c24457a98b83c1b2e2d45adf3254b94df3735a76/regex-2025.9.1-cp313-cp313-win_amd64.whl", hash = "sha256:b38afecc10c177eb34cfae68d669d5161880849ba70c05cbfbe409f08cc939d7", size = 275469 }, + { url = "https://files.pythonhosted.org/packages/24/8c/96d34e61c0e4e9248836bf86d69cb224fd222f270fa9045b24e218b65604/regex-2025.9.1-cp313-cp313-win_arm64.whl", hash = "sha256:ec329890ad5e7ed9fc292858554d28d58d56bf62cf964faf0aa57964b21155a0", size = 268586 }, + { url = "https://files.pythonhosted.org/packages/21/b1/453cbea5323b049181ec6344a803777914074b9726c9c5dc76749966d12d/regex-2025.9.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:72fb7a016467d364546f22b5ae86c45680a4e0de6b2a6f67441d22172ff641f1", size = 486111 }, + { url = "https://files.pythonhosted.org/packages/f6/0e/92577f197bd2f7652c5e2857f399936c1876978474ecc5b068c6d8a79c86/regex-2025.9.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:c9527fa74eba53f98ad86be2ba003b3ebe97e94b6eb2b916b31b5f055622ef03", size = 289520 }, + { url = "https://files.pythonhosted.org/packages/af/c6/b472398116cca7ea5a6c4d5ccd0fc543f7fd2492cb0c48d2852a11972f73/regex-2025.9.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c905d925d194c83a63f92422af7544ec188301451b292c8b487f0543726107ca", size = 287215 }, + { url = "https://files.pythonhosted.org/packages/cf/11/f12ecb0cf9ca792a32bb92f758589a84149017467a544f2f6bfb45c0356d/regex-2025.9.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:74df7c74a63adcad314426b1f4ea6054a5ab25d05b0244f0c07ff9ce640fa597", size = 797855 }, + { url = "https://files.pythonhosted.org/packages/46/88/bbb848f719a540fb5997e71310f16f0b33a92c5d4b4d72d4311487fff2a3/regex-2025.9.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4f6e935e98ea48c7a2e8be44494de337b57a204470e7f9c9c42f912c414cd6f5", size = 863363 }, + { url = "https://files.pythonhosted.org/packages/54/a9/2321eb3e2838f575a78d48e03c1e83ea61bd08b74b7ebbdeca8abc50fc25/regex-2025.9.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4a62d033cd9ebefc7c5e466731a508dfabee827d80b13f455de68a50d3c2543d", size = 910202 }, + { url = "https://files.pythonhosted.org/packages/33/07/d1d70835d7d11b7e126181f316f7213c4572ecf5c5c97bdbb969fb1f38a2/regex-2025.9.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef971ebf2b93bdc88d8337238be4dfb851cc97ed6808eb04870ef67589415171", size = 801808 }, + { url = "https://files.pythonhosted.org/packages/13/d1/29e4d1bed514ef2bf3a4ead3cb8bb88ca8af94130239a4e68aa765c35b1c/regex-2025.9.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d936a1db208bdca0eca1f2bb2c1ba1d8370b226785c1e6db76e32a228ffd0ad5", size = 786824 }, + { url = "https://files.pythonhosted.org/packages/33/27/20d8ccb1bee460faaa851e6e7cc4cfe852a42b70caa1dca22721ba19f02f/regex-2025.9.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:7e786d9e4469698fc63815b8de08a89165a0aa851720eb99f5e0ea9d51dd2b6a", size = 857406 }, + { url = "https://files.pythonhosted.org/packages/74/fe/60c6132262dc36430d51e0c46c49927d113d3a38c1aba6a26c7744c84cf3/regex-2025.9.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:6b81d7dbc5466ad2c57ce3a0ddb717858fe1a29535c8866f8514d785fdb9fc5b", size = 848593 }, + { url = "https://files.pythonhosted.org/packages/cc/ae/2d4ff915622fabbef1af28387bf71e7f2f4944a348b8460d061e85e29bf0/regex-2025.9.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:cd4890e184a6feb0ef195338a6ce68906a8903a0f2eb7e0ab727dbc0a3156273", size = 787951 }, + { url = "https://files.pythonhosted.org/packages/85/37/dc127703a9e715a284cc2f7dbdd8a9776fd813c85c126eddbcbdd1ca5fec/regex-2025.9.1-cp314-cp314-win32.whl", hash = "sha256:34679a86230e46164c9e0396b56cab13c0505972343880b9e705083cc5b8ec86", size = 269833 }, + { url = "https://files.pythonhosted.org/packages/83/bf/4bed4d3d0570e16771defd5f8f15f7ea2311edcbe91077436d6908956c4a/regex-2025.9.1-cp314-cp314-win_amd64.whl", hash = "sha256:a1196e530a6bfa5f4bde029ac5b0295a6ecfaaffbfffede4bbaf4061d9455b70", size = 278742 }, + { url = "https://files.pythonhosted.org/packages/cf/3e/7d7ac6fd085023312421e0d69dfabdfb28e116e513fadbe9afe710c01893/regex-2025.9.1-cp314-cp314-win_arm64.whl", hash = "sha256:f46d525934871ea772930e997d577d48c6983e50f206ff7b66d4ac5f8941e993", size = 271860 }, +] + [[package]] name = "requests" version = "2.32.5" From 90d2f64053f6dc0e518ae9bc170d085d87f4d803 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Wed, 17 Sep 2025 15:18:38 -0600 Subject: [PATCH 101/117] Restore line-breaks required for docs parser. --- src/CNRECS.DEF | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/CNRECS.DEF b/src/CNRECS.DEF index 582de8284..ece2d8822 100644 --- a/src/CNRECS.DEF +++ b/src/CNRECS.DEF @@ -1371,16 +1371,15 @@ RECORD XSURF "xsurf sub" *SUBSTRUCT // for PRI, SFI, XSRAT. // solar gain distributions: [partly] based on SGDIST inputs *r SI nsgdist // Number of SG distributions // SGDIST sgdist[ HSMXSGDIST]: - *array HSMXSGDIST // =8 (2-95), cndefns.h. explicit solar gain distribs - *r // min variation here: no members set at input time - *nest SGDIST sgdist // solar gain distribution (struct just above). set: cncult3.cpp:cnuSgDist(). + *r *array HSMXSGDIST *nest SGDIST sgdist // =8 (2-95), cndefns.h. explicit solar gain distribs + // *r -> min variation here: no members set at input time + // *nest SGDIST sgdist -> solar gain distribution (struct just above). set: cncult3.cpp:cnuSgDist(). // runtime values *s *e FLOAT xs_glzTrans // ASHWAT windows: transmitted solar gain, Btuh (w/o cavity absorp adjustment) *s *e FLOAT xs_glzInward // ASHWAT windows: inward flowing convective and LW radiant gain to zone, Btuh - *array XSMXTLRB *h *e - FLOAT xs_tLrB // layer boundary temps re probes + *array XSMXTLRB *h *e FLOAT xs_tLrB // layer boundary temps re probes // populated at end of hour *END // XSURF From 0b3f3de8ff7e9831a27d53640e4cd7b7f83449dc Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Wed, 17 Sep 2025 15:18:51 -0600 Subject: [PATCH 102/117] Add accumulator to input-data nav. --- doc/src/docs/input-data/.nav.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/src/docs/input-data/.nav.yml b/doc/src/docs/input-data/.nav.yml index b8da25d59..dc61637aa 100644 --- a/doc/src/docs/input-data/.nav.yml +++ b/doc/src/docs/input-data/.nav.yml @@ -14,6 +14,7 @@ nav: - DHWMETER: dhwmeter.md - AFMETER: afmeter.md - LOADMETER: loadmeter.md + - ACCUMULATOR: accumulator.md - ZONE: zone.md - GAIN: gain.md - SURFACE: surface.md From 6f1203a3a12a9f4debabd4a4eec58db7c6097c7a Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Wed, 17 Sep 2025 15:21:45 -0600 Subject: [PATCH 103/117] Update syntax for member tables and use MD headings for member names in new accumulator.md file. --- doc/src/docs/input-data/accumulator.md | 55 +++++++++++++++----------- 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/doc/src/docs/input-data/accumulator.md b/doc/src/docs/input-data/accumulator.md index b88b4144a..409a34287 100644 --- a/doc/src/docs/input-data/accumulator.md +++ b/doc/src/docs/input-data/accumulator.md @@ -12,40 +12,51 @@ ACCUMULATOR results must be reported using user-defined REPORTs or EXPORTs. For REPORTCOL colHead="Average" colVal=@Accumulator[ 1].M.acmMean colDec=0 colWid=10 -**acmName** +### acmName Name of ACCUMULATOR: required for referencing in reports. -<%= member_table( - units: "", - legal_range: "*63 characters*", - default: "*none*", - required: "Yes", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "*63 characters*", + "default": "*none*", + "required": "Yes", + "variability": "constant" + }) +}} -**acmValue=*float*** +### acmValue + +Type: *float* The value being accumulated. Generally expression. -<%= member_table( - units: "any", - legal_range: "", - default: "", - required: "Yes", - variability: "subhourly") %> +{{ + member_table({ + "units": "any", + "legal_range": "", + "default": "", + "required": "Yes", + "variability": "subhourly" + }) +}} -**endACCUMULATOR** +### endACCUMULATOR Indicates the end of the ACCUMULATOR definition. Alternatively, the end of the definition can be indicated by the declaration of another object or by END. -<%= member_table( - units: "", - legal_range: "", - default: "*none*", - required: "No", - variability: "constant") %> +{{ + member_table({ + "units": "", + "legal_range": "", + "default": "*none*", + "required": "No", + "variability": "constant" + }) +}} **Related Probes:** -- @[accumulator](#p_accumulator) \ No newline at end of file +- @[accumulator][p_accumulator] \ No newline at end of file From 6d2e3426b06e0738c18ac63e20482d14e4daa82d Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Thu, 25 Sep 2025 12:27:39 -0600 Subject: [PATCH 104/117] Automate documentation generation through CMake. --- .github/actions/build-docs/action.yml | 24 - .../actions/download-cse-artifact/action.yml | 10 - .github/workflows/build-and-test.yml | 54 +- .github/workflows/release.yml | 10 +- CMakeLists.txt | 13 + cmake/CSEVersion.cmake | 1 - cmake/configure.cmake | 4 + doc/src/coverage.py | 8 +- pyproject.toml | 2 +- uv.lock | 655 +++++++++--------- vendor/CMakeLists.txt | 1 + 11 files changed, 372 insertions(+), 410 deletions(-) delete mode 100644 .github/actions/build-docs/action.yml delete mode 100644 .github/actions/download-cse-artifact/action.yml diff --git a/.github/actions/build-docs/action.yml b/.github/actions/build-docs/action.yml deleted file mode 100644 index b975a6e30..000000000 --- a/.github/actions/build-docs/action.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: "Build docs" -description: "Install prerequisites and build CSE documentation" -runs: - using: composite - steps: - - name: Install pandoc - run: 'choco install -y pandoc --version=1.17.2 --ia=ALLUSERS=1' - shell: bash - - name: Add pandoc to path - run: echo "C:\Program Files (x86)\Pandoc" >> $GITHUB_PATH - shell: bash - - name: Add MSVC developer commands to PATH - uses: ilammy/msvc-dev-cmd@v1 - - name: Set build to NOT do coverage check by default - run: rake set_coverage_off_by_default - shell: bash - working-directory: doc - - name: Build docs - run: rake - shell: bash - working-directory: doc - env: - CSE_EXE_PATH: ..\\build\\CSE.exe - diff --git a/.github/actions/download-cse-artifact/action.yml b/.github/actions/download-cse-artifact/action.yml deleted file mode 100644 index 6cb503be6..000000000 --- a/.github/actions/download-cse-artifact/action.yml +++ /dev/null @@ -1,10 +0,0 @@ -name: "Download CSE artifact" -description: "Download CSE executable built and uploaded in a previous job" -runs: - using: composite - steps: - - name: Download executable artifact - uses: actions/download-artifact@v4 - with: - name: CSE_windows-2022-32bit_Release - path: build diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 93f9fb6b0..ea7d79611 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -53,14 +53,16 @@ jobs: - name: Get number of CPU cores # Can replace when CMake is upgraded to 3.29 uses: SimenB/github-actions-cpu-cores@v2 id: cpu-cores - - name: Build CSE - uses: ./.github/actions/build-cse + # - name: Setup Mesa3D + # uses: bigladder/github-actions/setup-mesa3d@main + # with: + # install-directory: msvc + - name: Install uv and set the python version + uses: astral-sh/setup-uv@v5 with: - arch: ${{ matrix.arch }} - config: ${{ matrix.config }} - compiler: ${{ matrix.compiler }} - - name: Build cse_tests.exe (unit tests) - run: cmake -DBUILD_ARCHITECTURE=${{ matrix.arch }} -DCONFIGURATION=${{ matrix.config }} -DTARGET_NAME=cse_tests -DBUILD_DIRECTORY=build -P cmake/build.cmake + python-version: "3.13" + - name: Build CSE + run: cmake -DBUILD_ARCHITECTURE=${{ matrix.arch }} -DCOMPILER_ID=${{ matrix.compiler }} -DCONFIGURATION=${{ matrix.config }} -DBUILD_DIRECTORY=build -DBUILD_DOCS_WITH_ALL -P cmake/configure-and-build.cmake - name: Upload executable artifact uses: actions/upload-artifact@v4 with: @@ -68,12 +70,6 @@ jobs: path: | build/CSE* build/cse* - - name: Build wcmp executable - run: cmake -DBUILD_ARCHITECTURE=${{ matrix.arch }} -DCONFIGURATION=${{ matrix.config }} -DTARGET_NAME=wcmp -DBUILD_DIRECTORY=build -P cmake/build.cmake - # - name: Setup Mesa3D - # uses: bigladder/github-actions/setup-mesa3d@main - # with: - # install-directory: msvc - name: Test id: test run: ctest -C ${{ matrix.config }} -j ${{ steps.cpu-cores.outputs.count }} --output-on-failure -E shadetest # CI can't do GPU calcs at this time (the steps above get us close, but throws an exception on destruction) @@ -87,34 +83,12 @@ jobs: path: | test/*.rep test/*.REP - - name: Check test failure - if: steps.test.outcome == 'failure' - run: exit 1 - build-doc: - strategy: - fail-fast: false - name: Build CSE documentation - needs: build-cse - if: ${{ always() }} - runs-on: windows-2022 - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Configure CMake - run: cmake -P cmake/configure.cmake - - name: Download CSE artifact - uses: ./.github/actions/download-cse-artifact - - name: Build docs - uses: ./.github/actions/build-docs - - name: Run coverage check - run: rake coverage - working-directory: doc - env: - CSE_EXE_PATH: ..\\build\\CSE.exe - name: Upload documentation uses: actions/upload-artifact@v4 with: - name: Documentation + name: Documentation-${{ matrix.os }}-${{ matrix.os_ver }} path: | - doc/output - !doc/output/.git + doc/build + - name: Check test failure + if: steps.test.outcome == 'failure' + run: exit 1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 31b562c50..ce465d9c6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,19 +18,21 @@ jobs: with: fetch-depth: 0 submodules: recursive + - name: Install uv and set the python version + uses: astral-sh/setup-uv@v5 + with: + python-version: "3.13" - name: Build CSE - uses: ./.github/actions/build-cse + run: cmake -DBUILD_ARCHITECTURE=32 -DCOMPILER_ID=msvc -DCONFIGURATION=Release -DBUILD_DIRECTORY=build -DBUILD_DOCS_WITH_ALL -P cmake/configure-and-build.cmake - name: Upload executable to release assets uses: softprops/action-gh-release@v2 with: files: build/CSE.exe - - name: Build docs - uses: ./.github/actions/build-docs - name: Update gh-pages uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: doc/output + publish_dir: doc/build user_name: 'cse-ci' user_email: 'ci@cse.org' full_commit_message: "Update docs for ${{ github.event.release.tag_name }}." diff --git a/CMakeLists.txt b/CMakeLists.txt index a2426cc4c..923d508e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,3 +92,16 @@ set_directory_properties(PROPERTIES VS_STARTUP_PROJECT CSE) enable_testing() add_subdirectory(test) + +# Documentation +set(cse_documentation_build_options "DoNotBuild;BuildWithAll;BuildSeparately") +set(CSE_BUILD_DOCUMENTATION "BuildSeparately" CACHE STRING "Choose when/if to build documentation (${cse_documentation_build_options}).") +set_property(CACHE CSE_BUILD_DOCUMENTATION PROPERTY STRINGS ${cse_documentation_build_options}) + +if(NOT CSE_BUILD_DOCUMENTATION IN_LIST cse_documentation_build_options) + message(FATAL_ERROR "CSE_BUILD_DOCUMENTATION must be one of ${cse_documentation_build_options}") +endif() + +if(NOT CSE_BUILD_DOCUMENTATION STREQUAL "DoNotBuild") + add_subdirectory(doc) +endif() \ No newline at end of file diff --git a/cmake/CSEVersion.cmake b/cmake/CSEVersion.cmake index a179397c9..ee726bf07 100644 --- a/cmake/CSEVersion.cmake +++ b/cmake/CSEVersion.cmake @@ -45,7 +45,6 @@ if (GIT_TAG MATCHES "^v[0-9]+\\.[0-9]+\\.[0-9]+(\\-[0-9A-Za-z-]+)?$") string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+)(\\-[0-9A-Za-z-]+)?$" "\\1" CSEVRSN_PATCH "${GIT_TAG}") if (GIT_TAG MATCHES "^v[0-9]+\\.[0-9]+\\.[0-9]+(\\-[0-9A-Za-z-]+)$") string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.[0-9]+(\\-[0-9A-Za-z-]+)$" "\\1" CSEVRSN_PRERELEASE "${GIT_TAG}") - message(STATUS "CSEVRSN_PRERELEASE is ${CSEVRSN_PRERELEASE}") endif() elseif(GIT_TAG MATCHES "^cse\\.[0-9]+$") # old version scheme diff --git a/cmake/configure.cmake b/cmake/configure.cmake index a563c1adf..7fea63559 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -14,6 +14,10 @@ if (DEFINED EXECUTABLE_DIRECTORY) set(configure_command ${configure_command} -DCSE_EXECUTABLE_DIRECTORY=${EXECUTABLE_DIRECTORY}) endif () +if (DEFINED BUILD_DOCS_WITH_ALL) + set(configure_command ${configure_command} -DCSE_BUILD_DOCUMENTATION=BuildWithAll) +endif () + if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") if (${COMPILER_ID} STREQUAL "msvc") # Explicitly set versions to guarantee computational stability diff --git a/doc/src/coverage.py b/doc/src/coverage.py index 7f170ffdd..a91585c80 100644 --- a/doc/src/coverage.py +++ b/doc/src/coverage.py @@ -4,6 +4,7 @@ import subprocess from pathlib import Path from typing import Any, Dict, List, Optional, Set +from sys import exit SKIP_LINE_COUNT = 4 @@ -575,7 +576,8 @@ def record_input_set_differences_to_string(self) -> str: coverage_checker = CoverageCheck(Path(args.path_to_cse), Path(args.path_to_input_data)) - if coverage_checker.passed: - print("Passed!") - else: + if not coverage_checker.passed: print(coverage_checker.record_input_set_differences_to_string()) + exit(1) + + print("Documentation Coverage Complete!") diff --git a/pyproject.toml b/pyproject.toml index 9ff831f06..82007dade 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ name = "cse" version = "0.1.0" description = "Source code for the California Simulation Engine and documentation" -requires-python = "~=3.12" +requires-python = ">=3.12" readme = "README.md" keywords = ["cse", "energy-modeling", "simulation"] dependencies = [ diff --git a/uv.lock b/uv.lock index 1f31fbdee..637acf318 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,6 @@ version = 1 -requires-python = ">=3.12, <4" +revision = 2 +requires-python = ">=3.12" resolution-markers = [ "python_full_version >= '3.13'", "python_full_version < '3.13'", @@ -9,18 +10,18 @@ resolution-markers = [ name = "annotated-types" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] [[package]] name = "babel" version = "2.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, ] [[package]] @@ -31,78 +32,78 @@ dependencies = [ { name = "soupsieve" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload-time = "2025-04-15T17:05:13.836Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285 }, + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload-time = "2025-04-15T17:05:12.221Z" }, ] [[package]] name = "bracex" version = "2.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/63/9a/fec38644694abfaaeca2798b58e276a8e61de49e2e37494ace423395febc/bracex-2.6.tar.gz", hash = "sha256:98f1347cd77e22ee8d967a30ad4e310b233f7754dbf31ff3fceb76145ba47dc7", size = 26642 } +sdist = { url = "https://files.pythonhosted.org/packages/63/9a/fec38644694abfaaeca2798b58e276a8e61de49e2e37494ace423395febc/bracex-2.6.tar.gz", hash = "sha256:98f1347cd77e22ee8d967a30ad4e310b233f7754dbf31ff3fceb76145ba47dc7", size = 26642, upload-time = "2025-06-22T19:12:31.254Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9d/2a/9186535ce58db529927f6cf5990a849aa9e052eea3e2cfefe20b9e1802da/bracex-2.6-py3-none-any.whl", hash = "sha256:0b0049264e7340b3ec782b5cb99beb325f36c3782a32e36e876452fd49a09952", size = 11508 }, + { url = "https://files.pythonhosted.org/packages/9d/2a/9186535ce58db529927f6cf5990a849aa9e052eea3e2cfefe20b9e1802da/bracex-2.6-py3-none-any.whl", hash = "sha256:0b0049264e7340b3ec782b5cb99beb325f36c3782a32e36e876452fd49a09952", size = 11508, upload-time = "2025-06-22T19:12:29.781Z" }, ] [[package]] name = "certifi" version = "2025.8.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/dc/67/960ebe6bf230a96cda2e0abcf73af550ec4f090005363542f0765df162e0/certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407", size = 162386 } +sdist = { url = "https://files.pythonhosted.org/packages/dc/67/960ebe6bf230a96cda2e0abcf73af550ec4f090005363542f0765df162e0/certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407", size = 162386, upload-time = "2025-08-03T03:07:47.08Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/48/1549795ba7742c948d2ad169c1c8cdbae65bc450d6cd753d124b17c8cd32/certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5", size = 161216 }, + { url = "https://files.pythonhosted.org/packages/e5/48/1549795ba7742c948d2ad169c1c8cdbae65bc450d6cd753d124b17c8cd32/certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5", size = 161216, upload-time = "2025-08-03T03:07:45.777Z" }, ] [[package]] name = "cfgv" version = "3.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114 } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114, upload-time = "2023-08-12T20:38:17.776Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249 }, + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249, upload-time = "2023-08-12T20:38:16.269Z" }, ] [[package]] name = "charset-normalizer" version = "3.4.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/83/2d/5fd176ceb9b2fc619e63405525573493ca23441330fcdaee6bef9460e924/charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14", size = 122371 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/5e/14c94999e418d9b87682734589404a25854d5f5d0408df68bc15b6ff54bb/charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1", size = 205655 }, - { url = "https://files.pythonhosted.org/packages/7d/a8/c6ec5d389672521f644505a257f50544c074cf5fc292d5390331cd6fc9c3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884", size = 146223 }, - { url = "https://files.pythonhosted.org/packages/fc/eb/a2ffb08547f4e1e5415fb69eb7db25932c52a52bed371429648db4d84fb1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018", size = 159366 }, - { url = "https://files.pythonhosted.org/packages/82/10/0fd19f20c624b278dddaf83b8464dcddc2456cb4b02bb902a6da126b87a1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392", size = 157104 }, - { url = "https://files.pythonhosted.org/packages/16/ab/0233c3231af734f5dfcf0844aa9582d5a1466c985bbed6cedab85af9bfe3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f", size = 151830 }, - { url = "https://files.pythonhosted.org/packages/ae/02/e29e22b4e02839a0e4a06557b1999d0a47db3567e82989b5bb21f3fbbd9f/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154", size = 148854 }, - { url = "https://files.pythonhosted.org/packages/05/6b/e2539a0a4be302b481e8cafb5af8792da8093b486885a1ae4d15d452bcec/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491", size = 160670 }, - { url = "https://files.pythonhosted.org/packages/31/e7/883ee5676a2ef217a40ce0bffcc3d0dfbf9e64cbcfbdf822c52981c3304b/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93", size = 158501 }, - { url = "https://files.pythonhosted.org/packages/c1/35/6525b21aa0db614cf8b5792d232021dca3df7f90a1944db934efa5d20bb1/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f", size = 153173 }, - { url = "https://files.pythonhosted.org/packages/50/ee/f4704bad8201de513fdc8aac1cabc87e38c5818c93857140e06e772b5892/charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37", size = 99822 }, - { url = "https://files.pythonhosted.org/packages/39/f5/3b3836ca6064d0992c58c7561c6b6eee1b3892e9665d650c803bd5614522/charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc", size = 107543 }, - { url = "https://files.pythonhosted.org/packages/65/ca/2135ac97709b400c7654b4b764daf5c5567c2da45a30cdd20f9eefe2d658/charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe", size = 205326 }, - { url = "https://files.pythonhosted.org/packages/71/11/98a04c3c97dd34e49c7d247083af03645ca3730809a5509443f3c37f7c99/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8", size = 146008 }, - { url = "https://files.pythonhosted.org/packages/60/f5/4659a4cb3c4ec146bec80c32d8bb16033752574c20b1252ee842a95d1a1e/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9", size = 159196 }, - { url = "https://files.pythonhosted.org/packages/86/9e/f552f7a00611f168b9a5865a1414179b2c6de8235a4fa40189f6f79a1753/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31", size = 156819 }, - { url = "https://files.pythonhosted.org/packages/7e/95/42aa2156235cbc8fa61208aded06ef46111c4d3f0de233107b3f38631803/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f", size = 151350 }, - { url = "https://files.pythonhosted.org/packages/c2/a9/3865b02c56f300a6f94fc631ef54f0a8a29da74fb45a773dfd3dcd380af7/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927", size = 148644 }, - { url = "https://files.pythonhosted.org/packages/77/d9/cbcf1a2a5c7d7856f11e7ac2d782aec12bdfea60d104e60e0aa1c97849dc/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9", size = 160468 }, - { url = "https://files.pythonhosted.org/packages/f6/42/6f45efee8697b89fda4d50580f292b8f7f9306cb2971d4b53f8914e4d890/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5", size = 158187 }, - { url = "https://files.pythonhosted.org/packages/70/99/f1c3bdcfaa9c45b3ce96f70b14f070411366fa19549c1d4832c935d8e2c3/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc", size = 152699 }, - { url = "https://files.pythonhosted.org/packages/a3/ad/b0081f2f99a4b194bcbb1934ef3b12aa4d9702ced80a37026b7607c72e58/charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce", size = 99580 }, - { url = "https://files.pythonhosted.org/packages/9a/8f/ae790790c7b64f925e5c953b924aaa42a243fb778fed9e41f147b2a5715a/charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef", size = 107366 }, - { url = "https://files.pythonhosted.org/packages/8e/91/b5a06ad970ddc7a0e513112d40113e834638f4ca1120eb727a249fb2715e/charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15", size = 204342 }, - { url = "https://files.pythonhosted.org/packages/ce/ec/1edc30a377f0a02689342f214455c3f6c2fbedd896a1d2f856c002fc3062/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db", size = 145995 }, - { url = "https://files.pythonhosted.org/packages/17/e5/5e67ab85e6d22b04641acb5399c8684f4d37caf7558a53859f0283a650e9/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d", size = 158640 }, - { url = "https://files.pythonhosted.org/packages/f1/e5/38421987f6c697ee3722981289d554957c4be652f963d71c5e46a262e135/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096", size = 156636 }, - { url = "https://files.pythonhosted.org/packages/a0/e4/5a075de8daa3ec0745a9a3b54467e0c2967daaaf2cec04c845f73493e9a1/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa", size = 150939 }, - { url = "https://files.pythonhosted.org/packages/02/f7/3611b32318b30974131db62b4043f335861d4d9b49adc6d57c1149cc49d4/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049", size = 148580 }, - { url = "https://files.pythonhosted.org/packages/7e/61/19b36f4bd67f2793ab6a99b979b4e4f3d8fc754cbdffb805335df4337126/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0", size = 159870 }, - { url = "https://files.pythonhosted.org/packages/06/57/84722eefdd338c04cf3030ada66889298eaedf3e7a30a624201e0cbe424a/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92", size = 157797 }, - { url = "https://files.pythonhosted.org/packages/72/2a/aff5dd112b2f14bcc3462c312dce5445806bfc8ab3a7328555da95330e4b/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16", size = 152224 }, - { url = "https://files.pythonhosted.org/packages/b7/8c/9839225320046ed279c6e839d51f028342eb77c91c89b8ef2549f951f3ec/charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce", size = 100086 }, - { url = "https://files.pythonhosted.org/packages/ee/7a/36fbcf646e41f710ce0a563c1c9a343c6edf9be80786edeb15b6f62e17db/charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c", size = 107400 }, - { url = "https://files.pythonhosted.org/packages/8a/1f/f041989e93b001bc4e44bb1669ccdcf54d3f00e628229a85b08d330615c5/charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a", size = 53175 }, +sdist = { url = "https://files.pythonhosted.org/packages/83/2d/5fd176ceb9b2fc619e63405525573493ca23441330fcdaee6bef9460e924/charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14", size = 122371, upload-time = "2025-08-09T07:57:28.46Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/5e/14c94999e418d9b87682734589404a25854d5f5d0408df68bc15b6ff54bb/charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1", size = 205655, upload-time = "2025-08-09T07:56:08.475Z" }, + { url = "https://files.pythonhosted.org/packages/7d/a8/c6ec5d389672521f644505a257f50544c074cf5fc292d5390331cd6fc9c3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884", size = 146223, upload-time = "2025-08-09T07:56:09.708Z" }, + { url = "https://files.pythonhosted.org/packages/fc/eb/a2ffb08547f4e1e5415fb69eb7db25932c52a52bed371429648db4d84fb1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018", size = 159366, upload-time = "2025-08-09T07:56:11.326Z" }, + { url = "https://files.pythonhosted.org/packages/82/10/0fd19f20c624b278dddaf83b8464dcddc2456cb4b02bb902a6da126b87a1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392", size = 157104, upload-time = "2025-08-09T07:56:13.014Z" }, + { url = "https://files.pythonhosted.org/packages/16/ab/0233c3231af734f5dfcf0844aa9582d5a1466c985bbed6cedab85af9bfe3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f", size = 151830, upload-time = "2025-08-09T07:56:14.428Z" }, + { url = "https://files.pythonhosted.org/packages/ae/02/e29e22b4e02839a0e4a06557b1999d0a47db3567e82989b5bb21f3fbbd9f/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154", size = 148854, upload-time = "2025-08-09T07:56:16.051Z" }, + { url = "https://files.pythonhosted.org/packages/05/6b/e2539a0a4be302b481e8cafb5af8792da8093b486885a1ae4d15d452bcec/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491", size = 160670, upload-time = "2025-08-09T07:56:17.314Z" }, + { url = "https://files.pythonhosted.org/packages/31/e7/883ee5676a2ef217a40ce0bffcc3d0dfbf9e64cbcfbdf822c52981c3304b/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93", size = 158501, upload-time = "2025-08-09T07:56:18.641Z" }, + { url = "https://files.pythonhosted.org/packages/c1/35/6525b21aa0db614cf8b5792d232021dca3df7f90a1944db934efa5d20bb1/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f", size = 153173, upload-time = "2025-08-09T07:56:20.289Z" }, + { url = "https://files.pythonhosted.org/packages/50/ee/f4704bad8201de513fdc8aac1cabc87e38c5818c93857140e06e772b5892/charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37", size = 99822, upload-time = "2025-08-09T07:56:21.551Z" }, + { url = "https://files.pythonhosted.org/packages/39/f5/3b3836ca6064d0992c58c7561c6b6eee1b3892e9665d650c803bd5614522/charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc", size = 107543, upload-time = "2025-08-09T07:56:23.115Z" }, + { url = "https://files.pythonhosted.org/packages/65/ca/2135ac97709b400c7654b4b764daf5c5567c2da45a30cdd20f9eefe2d658/charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe", size = 205326, upload-time = "2025-08-09T07:56:24.721Z" }, + { url = "https://files.pythonhosted.org/packages/71/11/98a04c3c97dd34e49c7d247083af03645ca3730809a5509443f3c37f7c99/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8", size = 146008, upload-time = "2025-08-09T07:56:26.004Z" }, + { url = "https://files.pythonhosted.org/packages/60/f5/4659a4cb3c4ec146bec80c32d8bb16033752574c20b1252ee842a95d1a1e/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9", size = 159196, upload-time = "2025-08-09T07:56:27.25Z" }, + { url = "https://files.pythonhosted.org/packages/86/9e/f552f7a00611f168b9a5865a1414179b2c6de8235a4fa40189f6f79a1753/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31", size = 156819, upload-time = "2025-08-09T07:56:28.515Z" }, + { url = "https://files.pythonhosted.org/packages/7e/95/42aa2156235cbc8fa61208aded06ef46111c4d3f0de233107b3f38631803/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f", size = 151350, upload-time = "2025-08-09T07:56:29.716Z" }, + { url = "https://files.pythonhosted.org/packages/c2/a9/3865b02c56f300a6f94fc631ef54f0a8a29da74fb45a773dfd3dcd380af7/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927", size = 148644, upload-time = "2025-08-09T07:56:30.984Z" }, + { url = "https://files.pythonhosted.org/packages/77/d9/cbcf1a2a5c7d7856f11e7ac2d782aec12bdfea60d104e60e0aa1c97849dc/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9", size = 160468, upload-time = "2025-08-09T07:56:32.252Z" }, + { url = "https://files.pythonhosted.org/packages/f6/42/6f45efee8697b89fda4d50580f292b8f7f9306cb2971d4b53f8914e4d890/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5", size = 158187, upload-time = "2025-08-09T07:56:33.481Z" }, + { url = "https://files.pythonhosted.org/packages/70/99/f1c3bdcfaa9c45b3ce96f70b14f070411366fa19549c1d4832c935d8e2c3/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc", size = 152699, upload-time = "2025-08-09T07:56:34.739Z" }, + { url = "https://files.pythonhosted.org/packages/a3/ad/b0081f2f99a4b194bcbb1934ef3b12aa4d9702ced80a37026b7607c72e58/charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce", size = 99580, upload-time = "2025-08-09T07:56:35.981Z" }, + { url = "https://files.pythonhosted.org/packages/9a/8f/ae790790c7b64f925e5c953b924aaa42a243fb778fed9e41f147b2a5715a/charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef", size = 107366, upload-time = "2025-08-09T07:56:37.339Z" }, + { url = "https://files.pythonhosted.org/packages/8e/91/b5a06ad970ddc7a0e513112d40113e834638f4ca1120eb727a249fb2715e/charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15", size = 204342, upload-time = "2025-08-09T07:56:38.687Z" }, + { url = "https://files.pythonhosted.org/packages/ce/ec/1edc30a377f0a02689342f214455c3f6c2fbedd896a1d2f856c002fc3062/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db", size = 145995, upload-time = "2025-08-09T07:56:40.048Z" }, + { url = "https://files.pythonhosted.org/packages/17/e5/5e67ab85e6d22b04641acb5399c8684f4d37caf7558a53859f0283a650e9/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d", size = 158640, upload-time = "2025-08-09T07:56:41.311Z" }, + { url = "https://files.pythonhosted.org/packages/f1/e5/38421987f6c697ee3722981289d554957c4be652f963d71c5e46a262e135/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096", size = 156636, upload-time = "2025-08-09T07:56:43.195Z" }, + { url = "https://files.pythonhosted.org/packages/a0/e4/5a075de8daa3ec0745a9a3b54467e0c2967daaaf2cec04c845f73493e9a1/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa", size = 150939, upload-time = "2025-08-09T07:56:44.819Z" }, + { url = "https://files.pythonhosted.org/packages/02/f7/3611b32318b30974131db62b4043f335861d4d9b49adc6d57c1149cc49d4/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049", size = 148580, upload-time = "2025-08-09T07:56:46.684Z" }, + { url = "https://files.pythonhosted.org/packages/7e/61/19b36f4bd67f2793ab6a99b979b4e4f3d8fc754cbdffb805335df4337126/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0", size = 159870, upload-time = "2025-08-09T07:56:47.941Z" }, + { url = "https://files.pythonhosted.org/packages/06/57/84722eefdd338c04cf3030ada66889298eaedf3e7a30a624201e0cbe424a/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92", size = 157797, upload-time = "2025-08-09T07:56:49.756Z" }, + { url = "https://files.pythonhosted.org/packages/72/2a/aff5dd112b2f14bcc3462c312dce5445806bfc8ab3a7328555da95330e4b/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16", size = 152224, upload-time = "2025-08-09T07:56:51.369Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8c/9839225320046ed279c6e839d51f028342eb77c91c89b8ef2549f951f3ec/charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce", size = 100086, upload-time = "2025-08-09T07:56:52.722Z" }, + { url = "https://files.pythonhosted.org/packages/ee/7a/36fbcf646e41f710ce0a563c1c9a343c6edf9be80786edeb15b6f62e17db/charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c", size = 107400, upload-time = "2025-08-09T07:56:55.172Z" }, + { url = "https://files.pythonhosted.org/packages/8a/1f/f041989e93b001bc4e44bb1669ccdcf54d3f00e628229a85b08d330615c5/charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a", size = 53175, upload-time = "2025-08-09T07:57:26.864Z" }, ] [[package]] @@ -112,27 +113,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342 } +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215 }, + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, ] [[package]] name = "cloudpickle" version = "3.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113 } +sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113, upload-time = "2025-01-14T17:02:05.085Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992 }, + { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992, upload-time = "2025-01-14T17:02:02.417Z" }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] [[package]] @@ -184,9 +185,9 @@ dev = [ name = "distlib" version = "0.3.9" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923 } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923, upload-time = "2024-10-09T18:35:47.551Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973 }, + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload-time = "2024-10-09T18:35:44.272Z" }, ] [[package]] @@ -197,18 +198,18 @@ dependencies = [ { name = "cloudpickle" }, { name = "importlib-metadata" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5a/36/66b7dea1bb5688ba0d2d7bc113e9c0d57df697bd3f39ce2a139d9612aeee/doit-0.36.0.tar.gz", hash = "sha256:71d07ccc9514cb22fe59d98999577665eaab57e16f644d04336ae0b4bae234bc", size = 1448096 } +sdist = { url = "https://files.pythonhosted.org/packages/5a/36/66b7dea1bb5688ba0d2d7bc113e9c0d57df697bd3f39ce2a139d9612aeee/doit-0.36.0.tar.gz", hash = "sha256:71d07ccc9514cb22fe59d98999577665eaab57e16f644d04336ae0b4bae234bc", size = 1448096, upload-time = "2022-04-22T15:33:12.886Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/44/83/a2960d2c975836daa629a73995134fd86520c101412578c57da3d2aa71ee/doit-0.36.0-py3-none-any.whl", hash = "sha256:ebc285f6666871b5300091c26eafdff3de968a6bd60ea35dd1e3fc6f2e32479a", size = 85937 }, + { url = "https://files.pythonhosted.org/packages/44/83/a2960d2c975836daa629a73995134fd86520c101412578c57da3d2aa71ee/doit-0.36.0-py3-none-any.whl", hash = "sha256:ebc285f6666871b5300091c26eafdff3de968a6bd60ea35dd1e3fc6f2e32479a", size = 85937, upload-time = "2022-04-22T15:33:23.165Z" }, ] [[package]] name = "filelock" version = "3.18.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload-time = "2025-03-14T07:11:40.47Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215 }, + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload-time = "2025-03-14T07:11:39.145Z" }, ] [[package]] @@ -218,36 +219,36 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943, upload-time = "2022-05-02T15:47:16.11Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034, upload-time = "2022-05-02T15:47:14.552Z" }, ] [[package]] name = "hjson" version = "3.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/e5/0b56d723a76ca67abadbf7fb71609fb0ea7e6926e94fcca6c65a85b36a0e/hjson-3.1.0.tar.gz", hash = "sha256:55af475a27cf83a7969c808399d7bccdec8fb836a07ddbd574587593b9cdcf75", size = 40541 } +sdist = { url = "https://files.pythonhosted.org/packages/82/e5/0b56d723a76ca67abadbf7fb71609fb0ea7e6926e94fcca6c65a85b36a0e/hjson-3.1.0.tar.gz", hash = "sha256:55af475a27cf83a7969c808399d7bccdec8fb836a07ddbd574587593b9cdcf75", size = 40541, upload-time = "2022-08-13T02:53:01.919Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1f/7f/13cd798d180af4bf4c0ceddeefba2b864a63c71645abc0308b768d67bb81/hjson-3.1.0-py3-none-any.whl", hash = "sha256:65713cdcf13214fb554eb8b4ef803419733f4f5e551047c9b711098ab7186b89", size = 54018 }, + { url = "https://files.pythonhosted.org/packages/1f/7f/13cd798d180af4bf4c0ceddeefba2b864a63c71645abc0308b768d67bb81/hjson-3.1.0-py3-none-any.whl", hash = "sha256:65713cdcf13214fb554eb8b4ef803419733f4f5e551047c9b711098ab7186b89", size = 54018, upload-time = "2022-08-13T02:52:59.899Z" }, ] [[package]] name = "identify" version = "2.6.9" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9b/98/a71ab060daec766acc30fb47dfca219d03de34a70d616a79a38c6066c5bf/identify-2.6.9.tar.gz", hash = "sha256:d40dfe3142a1421d8518e3d3985ef5ac42890683e32306ad614a29490abeb6bf", size = 99249 } +sdist = { url = "https://files.pythonhosted.org/packages/9b/98/a71ab060daec766acc30fb47dfca219d03de34a70d616a79a38c6066c5bf/identify-2.6.9.tar.gz", hash = "sha256:d40dfe3142a1421d8518e3d3985ef5ac42890683e32306ad614a29490abeb6bf", size = 99249, upload-time = "2025-03-08T15:54:13.632Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/ce/0845144ed1f0e25db5e7a79c2354c1da4b5ce392b8966449d5db8dca18f1/identify-2.6.9-py2.py3-none-any.whl", hash = "sha256:c98b4322da415a8e5a70ff6e51fbc2d2932c015532d77e9f8537b4ba7813b150", size = 99101 }, + { url = "https://files.pythonhosted.org/packages/07/ce/0845144ed1f0e25db5e7a79c2354c1da4b5ce392b8966449d5db8dca18f1/identify-2.6.9-py2.py3-none-any.whl", hash = "sha256:c98b4322da415a8e5a70ff6e51fbc2d2932c015532d77e9f8537b4ba7813b150", size = 99101, upload-time = "2025-03-08T15:54:12.026Z" }, ] [[package]] name = "idna" version = "3.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, ] [[package]] @@ -257,18 +258,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/33/08/c1395a292bb23fd03bdf572a1357c5a733d3eecbab877641ceacab23db6e/importlib_metadata-8.6.1.tar.gz", hash = "sha256:310b41d755445d74569f993ccfc22838295d9fe005425094fad953d7f15c8580", size = 55767 } +sdist = { url = "https://files.pythonhosted.org/packages/33/08/c1395a292bb23fd03bdf572a1357c5a733d3eecbab877641ceacab23db6e/importlib_metadata-8.6.1.tar.gz", hash = "sha256:310b41d755445d74569f993ccfc22838295d9fe005425094fad953d7f15c8580", size = 55767, upload-time = "2025-01-20T22:21:30.429Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/9d/0fb148dc4d6fa4a7dd1d8378168d9b4cd8d4560a6fbf6f0121c5fc34eb68/importlib_metadata-8.6.1-py3-none-any.whl", hash = "sha256:02a89390c1e15fdfdc0d7c6b25cb3e62650d0494005c97d6f148bf5b9787525e", size = 26971 }, + { url = "https://files.pythonhosted.org/packages/79/9d/0fb148dc4d6fa4a7dd1d8378168d9b4cd8d4560a6fbf6f0121c5fc34eb68/importlib_metadata-8.6.1-py3-none-any.whl", hash = "sha256:02a89390c1e15fdfdc0d7c6b25cb3e62650d0494005c97d6f148bf5b9787525e", size = 26971, upload-time = "2025-01-20T22:21:29.177Z" }, ] [[package]] name = "iniconfig" version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, ] [[package]] @@ -278,65 +279,65 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, ] [[package]] name = "markdown" version = "3.8.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/c2/4ab49206c17f75cb08d6311171f2d65798988db4360c4d1485bd0eedd67c/markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45", size = 362071 } +sdist = { url = "https://files.pythonhosted.org/packages/d7/c2/4ab49206c17f75cb08d6311171f2d65798988db4360c4d1485bd0eedd67c/markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45", size = 362071, upload-time = "2025-06-19T17:12:44.483Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/2b/34cc11786bc00d0f04d0f5fdc3a2b1ae0b6239eef72d3d345805f9ad92a1/markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24", size = 106827 }, + { url = "https://files.pythonhosted.org/packages/96/2b/34cc11786bc00d0f04d0f5fdc3a2b1ae0b6239eef72d3d345805f9ad92a1/markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24", size = 106827, upload-time = "2025-06-19T17:12:42.994Z" }, ] [[package]] name = "markupsafe" version = "3.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, - { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, - { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, - { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, - { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, - { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, - { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, - { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, - { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, - { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, - { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, - { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, - { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, - { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, - { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, - { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, - { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, - { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, - { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, - { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, - { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, - { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, - { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, - { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, - { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, - { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, - { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, - { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload-time = "2024-10-18T15:21:13.777Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload-time = "2024-10-18T15:21:14.822Z" }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload-time = "2024-10-18T15:21:15.642Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload-time = "2024-10-18T15:21:17.133Z" }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload-time = "2024-10-18T15:21:18.064Z" }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload-time = "2024-10-18T15:21:18.859Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload-time = "2024-10-18T15:21:19.671Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload-time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload-time = "2024-10-18T15:21:24.577Z" }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload-time = "2024-10-18T15:21:25.382Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload-time = "2024-10-18T15:21:26.199Z" }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload-time = "2024-10-18T15:21:27.029Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload-time = "2024-10-18T15:21:27.846Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload-time = "2024-10-18T15:21:28.744Z" }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload-time = "2024-10-18T15:21:29.545Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload-time = "2024-10-18T15:21:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload-time = "2024-10-18T15:21:31.207Z" }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload-time = "2024-10-18T15:21:32.032Z" }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload-time = "2024-10-18T15:21:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload-time = "2024-10-18T15:21:34.611Z" }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload-time = "2024-10-18T15:21:35.398Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload-time = "2024-10-18T15:21:36.231Z" }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload-time = "2024-10-18T15:21:37.073Z" }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload-time = "2024-10-18T15:21:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload-time = "2024-10-18T15:21:39.799Z" }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload-time = "2024-10-18T15:21:40.813Z" }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload-time = "2024-10-18T15:21:41.814Z" }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload-time = "2024-10-18T15:21:42.784Z" }, ] [[package]] name = "mergedeep" version = "1.3.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661, upload-time = "2021-02-05T18:55:30.623Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354, upload-time = "2021-02-05T18:55:29.583Z" }, ] [[package]] @@ -358,9 +359,9 @@ dependencies = [ { name = "pyyaml-env-tag" }, { name = "watchdog" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159, upload-time = "2024-08-30T12:24:06.899Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451, upload-time = "2024-08-30T12:24:05.054Z" }, ] [[package]] @@ -372,9 +373,9 @@ dependencies = [ { name = "markupsafe" }, { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/47/0c/c9826f35b99c67fa3a7cddfa094c1a6c43fafde558c309c6e4403e5b37dc/mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749", size = 54961 } +sdist = { url = "https://files.pythonhosted.org/packages/47/0c/c9826f35b99c67fa3a7cddfa094c1a6c43fafde558c309c6e4403e5b37dc/mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749", size = 54961, upload-time = "2025-05-20T13:09:09.886Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/87/dc/fc063b78f4b769d1956319351704e23ebeba1e9e1d6a41b4b602325fd7e4/mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13", size = 24969 }, + { url = "https://files.pythonhosted.org/packages/87/dc/fc063b78f4b769d1956319351704e23ebeba1e9e1d6a41b4b602325fd7e4/mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13", size = 24969, upload-time = "2025-05-20T13:09:08.237Z" }, ] [[package]] @@ -387,9 +388,9 @@ dependencies = [ { name = "pydantic" }, { name = "wcmatch" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6c/18/21f1e8e72b5e2133fba743741f7f0b9eb0b6f2def9e5c141c189a52a62ca/mkdocs_awesome_nav-3.1.2.tar.gz", hash = "sha256:98c5300330ad8e9b665b3f0b38e0116ddc14ce26ac7f3f8c31af5e0faa685a37", size = 8752 } +sdist = { url = "https://files.pythonhosted.org/packages/6c/18/21f1e8e72b5e2133fba743741f7f0b9eb0b6f2def9e5c141c189a52a62ca/mkdocs_awesome_nav-3.1.2.tar.gz", hash = "sha256:98c5300330ad8e9b665b3f0b38e0116ddc14ce26ac7f3f8c31af5e0faa685a37", size = 8752, upload-time = "2025-05-18T19:12:38.451Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/23/2ae189f4bbb5d35bf6dbd202a534b3f7f929c404d056fb0b20e826b9b643/mkdocs_awesome_nav-3.1.2-py3-none-any.whl", hash = "sha256:2ae0e0bd8494c38277a88cb11b70a0e7e2731c1a3bf9c9c3cfcfd2e1b51a4b87", size = 12470 }, + { url = "https://files.pythonhosted.org/packages/d7/23/2ae189f4bbb5d35bf6dbd202a534b3f7f929c404d056fb0b20e826b9b643/mkdocs_awesome_nav-3.1.2-py3-none-any.whl", hash = "sha256:2ae0e0bd8494c38277a88cb11b70a0e7e2731c1a3bf9c9c3cfcfd2e1b51a4b87", size = 12470, upload-time = "2025-05-18T19:12:36.96Z" }, ] [[package]] @@ -401,9 +402,9 @@ dependencies = [ { name = "platformdirs" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239, upload-time = "2023-11-20T17:51:09.981Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521, upload-time = "2023-11-20T17:51:08.587Z" }, ] [[package]] @@ -421,9 +422,9 @@ dependencies = [ { name = "super-collections" }, { name = "termcolor" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/43/65/61a746c56788867221aebf07fe4b6b4c08ac99cf341fd51d728c89d1456e/mkdocs_macros_plugin-1.3.7.tar.gz", hash = "sha256:17c7fd1a49b94defcdb502fd453d17a1e730f8836523379d21292eb2be4cb523", size = 33466 } +sdist = { url = "https://files.pythonhosted.org/packages/43/65/61a746c56788867221aebf07fe4b6b4c08ac99cf341fd51d728c89d1456e/mkdocs_macros_plugin-1.3.7.tar.gz", hash = "sha256:17c7fd1a49b94defcdb502fd453d17a1e730f8836523379d21292eb2be4cb523", size = 33466, upload-time = "2024-10-26T15:15:54.925Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/55/cf/f03331298ee50a4da6fb72ccec79078041158c1f8b5fc24835c1be42232e/mkdocs_macros_plugin-1.3.7-py3-none-any.whl", hash = "sha256:02432033a5b77fb247d6ec7924e72fc4ceec264165b1644ab8d0dc159c22ce59", size = 37799 }, + { url = "https://files.pythonhosted.org/packages/55/cf/f03331298ee50a4da6fb72ccec79078041158c1f8b5fc24835c1be42232e/mkdocs_macros_plugin-1.3.7-py3-none-any.whl", hash = "sha256:02432033a5b77fb247d6ec7924e72fc4ceec264165b1644ab8d0dc159c22ce59", size = 37799, upload-time = "2024-10-26T15:15:53.31Z" }, ] [[package]] @@ -448,9 +449,9 @@ dependencies = [ name = "mkdocs-material-extensions" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847, upload-time = "2023-11-22T19:09:45.208Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728, upload-time = "2023-11-22T19:09:43.465Z" }, ] [[package]] @@ -461,93 +462,93 @@ dependencies = [ { name = "mypy-extensions" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717 } +sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717, upload-time = "2025-02-05T03:50:34.655Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981 }, - { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175 }, - { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675 }, - { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020 }, - { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582 }, - { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614 }, - { url = "https://files.pythonhosted.org/packages/6a/9b/fd2e05d6ffff24d912f150b87db9e364fa8282045c875654ce7e32fffa66/mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445", size = 10788592 }, - { url = "https://files.pythonhosted.org/packages/74/37/b246d711c28a03ead1fd906bbc7106659aed7c089d55fe40dd58db812628/mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d", size = 9753611 }, - { url = "https://files.pythonhosted.org/packages/a6/ac/395808a92e10cfdac8003c3de9a2ab6dc7cde6c0d2a4df3df1b815ffd067/mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5", size = 11438443 }, - { url = "https://files.pythonhosted.org/packages/d2/8b/801aa06445d2de3895f59e476f38f3f8d610ef5d6908245f07d002676cbf/mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036", size = 12402541 }, - { url = "https://files.pythonhosted.org/packages/c7/67/5a4268782eb77344cc613a4cf23540928e41f018a9a1ec4c6882baf20ab8/mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357", size = 12494348 }, - { url = "https://files.pythonhosted.org/packages/83/3e/57bb447f7bbbfaabf1712d96f9df142624a386d98fb026a761532526057e/mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf", size = 9373648 }, - { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777 }, + { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981, upload-time = "2025-02-05T03:50:28.25Z" }, + { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175, upload-time = "2025-02-05T03:50:13.411Z" }, + { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675, upload-time = "2025-02-05T03:50:31.421Z" }, + { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020, upload-time = "2025-02-05T03:48:48.705Z" }, + { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582, upload-time = "2025-02-05T03:49:03.628Z" }, + { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614, upload-time = "2025-02-05T03:50:00.313Z" }, + { url = "https://files.pythonhosted.org/packages/6a/9b/fd2e05d6ffff24d912f150b87db9e364fa8282045c875654ce7e32fffa66/mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445", size = 10788592, upload-time = "2025-02-05T03:48:55.789Z" }, + { url = "https://files.pythonhosted.org/packages/74/37/b246d711c28a03ead1fd906bbc7106659aed7c089d55fe40dd58db812628/mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d", size = 9753611, upload-time = "2025-02-05T03:48:44.581Z" }, + { url = "https://files.pythonhosted.org/packages/a6/ac/395808a92e10cfdac8003c3de9a2ab6dc7cde6c0d2a4df3df1b815ffd067/mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5", size = 11438443, upload-time = "2025-02-05T03:49:25.514Z" }, + { url = "https://files.pythonhosted.org/packages/d2/8b/801aa06445d2de3895f59e476f38f3f8d610ef5d6908245f07d002676cbf/mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036", size = 12402541, upload-time = "2025-02-05T03:49:57.623Z" }, + { url = "https://files.pythonhosted.org/packages/c7/67/5a4268782eb77344cc613a4cf23540928e41f018a9a1ec4c6882baf20ab8/mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357", size = 12494348, upload-time = "2025-02-05T03:48:52.361Z" }, + { url = "https://files.pythonhosted.org/packages/83/3e/57bb447f7bbbfaabf1712d96f9df142624a386d98fb026a761532526057e/mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf", size = 9373648, upload-time = "2025-02-05T03:49:11.395Z" }, + { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777, upload-time = "2025-02-05T03:50:08.348Z" }, ] [[package]] name = "mypy-extensions" version = "1.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } +sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433, upload-time = "2023-02-04T12:11:27.157Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, + { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695, upload-time = "2023-02-04T12:11:25.002Z" }, ] [[package]] name = "natsort" version = "8.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e2/a9/a0c57aee75f77794adaf35322f8b6404cbd0f89ad45c87197a937764b7d0/natsort-8.4.0.tar.gz", hash = "sha256:45312c4a0e5507593da193dedd04abb1469253b601ecaf63445ad80f0a1ea581", size = 76575 } +sdist = { url = "https://files.pythonhosted.org/packages/e2/a9/a0c57aee75f77794adaf35322f8b6404cbd0f89ad45c87197a937764b7d0/natsort-8.4.0.tar.gz", hash = "sha256:45312c4a0e5507593da193dedd04abb1469253b601ecaf63445ad80f0a1ea581", size = 76575, upload-time = "2023-06-20T04:17:19.925Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/82/7a9d0550484a62c6da82858ee9419f3dd1ccc9aa1c26a1e43da3ecd20b0d/natsort-8.4.0-py3-none-any.whl", hash = "sha256:4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c", size = 38268 }, + { url = "https://files.pythonhosted.org/packages/ef/82/7a9d0550484a62c6da82858ee9419f3dd1ccc9aa1c26a1e43da3ecd20b0d/natsort-8.4.0-py3-none-any.whl", hash = "sha256:4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c", size = 38268, upload-time = "2023-06-20T04:17:17.522Z" }, ] [[package]] name = "nodeenv" version = "1.9.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437 } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload-time = "2024-06-04T18:44:11.171Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" }, ] [[package]] name = "packaging" version = "24.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } +sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950, upload-time = "2024-11-08T09:47:47.202Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, + { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451, upload-time = "2024-11-08T09:47:44.722Z" }, ] [[package]] name = "paginate" version = "0.5.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252, upload-time = "2024-08-25T14:17:24.139Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746, upload-time = "2024-08-25T14:17:22.55Z" }, ] [[package]] name = "pathspec" version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, ] [[package]] name = "platformdirs" version = "4.3.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b6/2d/7d512a3913d60623e7eb945c6d1b4f0bddf1d0b7ada5225274c87e5b53d1/platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351", size = 21291 } +sdist = { url = "https://files.pythonhosted.org/packages/b6/2d/7d512a3913d60623e7eb945c6d1b4f0bddf1d0b7ada5225274c87e5b53d1/platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351", size = 21291, upload-time = "2025-03-19T20:36:10.989Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/45/59578566b3275b8fd9157885918fcd0c4d74162928a5310926887b856a51/platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94", size = 18499 }, + { url = "https://files.pythonhosted.org/packages/6d/45/59578566b3275b8fd9157885918fcd0c4d74162928a5310926887b856a51/platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94", size = 18499, upload-time = "2025-03-19T20:36:09.038Z" }, ] [[package]] name = "pluggy" version = "1.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955, upload-time = "2024-04-20T21:34:42.531Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556, upload-time = "2024-04-20T21:34:40.434Z" }, ] [[package]] @@ -561,9 +562,9 @@ dependencies = [ { name = "pyyaml" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424 } +sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424, upload-time = "2025-03-18T21:35:20.987Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707 }, + { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707, upload-time = "2025-03-18T21:35:19.343Z" }, ] [[package]] @@ -576,9 +577,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350 } +sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload-time = "2025-06-14T08:33:17.137Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782 }, + { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload-time = "2025-06-14T08:33:14.905Z" }, ] [[package]] @@ -588,48 +589,48 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000 }, - { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996 }, - { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957 }, - { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199 }, - { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296 }, - { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109 }, - { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028 }, - { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044 }, - { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881 }, - { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034 }, - { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187 }, - { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628 }, - { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866 }, - { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894 }, - { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688 }, - { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808 }, - { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580 }, - { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859 }, - { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810 }, - { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498 }, - { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611 }, - { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924 }, - { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196 }, - { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389 }, - { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223 }, - { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473 }, - { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269 }, - { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921 }, - { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162 }, - { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560 }, - { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777 }, +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload-time = "2025-04-23T18:31:53.175Z" }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload-time = "2025-04-23T18:31:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload-time = "2025-04-23T18:31:57.393Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload-time = "2025-04-23T18:31:59.065Z" }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload-time = "2025-04-23T18:32:00.78Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload-time = "2025-04-23T18:32:02.418Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload-time = "2025-04-23T18:32:04.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload-time = "2025-04-23T18:32:06.129Z" }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload-time = "2025-04-23T18:32:08.178Z" }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload-time = "2025-04-23T18:32:10.242Z" }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload-time = "2025-04-23T18:32:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload-time = "2025-04-23T18:32:14.034Z" }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload-time = "2025-04-23T18:32:15.783Z" }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload-time = "2025-04-23T18:32:18.473Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload-time = "2025-04-23T18:32:20.188Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload-time = "2025-04-23T18:32:22.354Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload-time = "2025-04-23T18:32:25.088Z" }, ] [[package]] name = "pygments" version = "2.19.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631 } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217 }, + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, ] [[package]] @@ -640,9 +641,9 @@ dependencies = [ { name = "markdown" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/b3/6d2b3f149bc5413b0a29761c2c5832d8ce904a1d7f621e86616d96f505cc/pymdown_extensions-10.16.1.tar.gz", hash = "sha256:aace82bcccba3efc03e25d584e6a22d27a8e17caa3f4dd9f207e49b787aa9a91", size = 853277 } +sdist = { url = "https://files.pythonhosted.org/packages/55/b3/6d2b3f149bc5413b0a29761c2c5832d8ce904a1d7f621e86616d96f505cc/pymdown_extensions-10.16.1.tar.gz", hash = "sha256:aace82bcccba3efc03e25d584e6a22d27a8e17caa3f4dd9f207e49b787aa9a91", size = 853277, upload-time = "2025-07-28T16:19:34.167Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/06/43084e6cbd4b3bc0e80f6be743b2e79fbc6eed8de9ad8c629939fa55d972/pymdown_extensions-10.16.1-py3-none-any.whl", hash = "sha256:d6ba157a6c03146a7fb122b2b9a121300056384eafeec9c9f9e584adfdb2a32d", size = 266178 }, + { url = "https://files.pythonhosted.org/packages/e4/06/43084e6cbd4b3bc0e80f6be743b2e79fbc6eed8de9ad8c629939fa55d972/pymdown_extensions-10.16.1-py3-none-any.whl", hash = "sha256:d6ba157a6c03146a7fb122b2b9a121300056384eafeec9c9f9e584adfdb2a32d", size = 266178, upload-time = "2025-07-28T16:19:31.401Z" }, ] [[package]] @@ -655,9 +656,9 @@ dependencies = [ { name = "packaging" }, { name = "pluggy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload-time = "2025-03-02T12:54:52.069Z" }, ] [[package]] @@ -667,9 +668,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] [[package]] @@ -679,35 +680,35 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "text-unidecode" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921 } +sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921, upload-time = "2024-02-08T18:32:45.488Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051 }, + { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051, upload-time = "2024-02-08T18:32:43.911Z" }, ] [[package]] name = "pyyaml" version = "6.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, - { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, - { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, - { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, - { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, - { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, - { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, - { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, - { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, - { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload-time = "2024-08-06T20:32:25.131Z" }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload-time = "2024-08-06T20:32:26.511Z" }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload-time = "2024-08-06T20:32:28.363Z" }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload-time = "2024-08-06T20:32:30.058Z" }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload-time = "2024-08-06T20:32:31.881Z" }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload-time = "2024-08-06T20:32:37.083Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload-time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload-time = "2024-08-06T20:32:43.4Z" }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload-time = "2024-08-06T20:32:44.801Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload-time = "2024-08-06T20:32:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, ] [[package]] @@ -717,59 +718,59 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737 } +sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737, upload-time = "2025-05-13T15:24:01.64Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722 }, + { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722, upload-time = "2025-05-13T15:23:59.629Z" }, ] [[package]] name = "regex" version = "2025.9.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/5a/4c63457fbcaf19d138d72b2e9b39405954f98c0349b31c601bfcb151582c/regex-2025.9.1.tar.gz", hash = "sha256:88ac07b38d20b54d79e704e38aa3bd2c0f8027432164226bdee201a1c0c9c9ff", size = 400852 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/39/ef/a0372febc5a1d44c1be75f35d7e5aff40c659ecde864d7fa10e138f75e74/regex-2025.9.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:84a25164bd8dcfa9f11c53f561ae9766e506e580b70279d05a7946510bdd6f6a", size = 486317 }, - { url = "https://files.pythonhosted.org/packages/b5/25/d64543fb7eb41a1024786d518cc57faf1ce64aa6e9ddba097675a0c2f1d2/regex-2025.9.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:645e88a73861c64c1af558dd12294fb4e67b5c1eae0096a60d7d8a2143a611c7", size = 289698 }, - { url = "https://files.pythonhosted.org/packages/d8/dc/fbf31fc60be317bd9f6f87daa40a8a9669b3b392aa8fe4313df0a39d0722/regex-2025.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:10a450cba5cd5409526ee1d4449f42aad38dd83ac6948cbd6d7f71ca7018f7db", size = 287242 }, - { url = "https://files.pythonhosted.org/packages/0f/74/f933a607a538f785da5021acf5323961b4620972e2c2f1f39b6af4b71db7/regex-2025.9.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e9dc5991592933a4192c166eeb67b29d9234f9c86344481173d1bc52f73a7104", size = 797441 }, - { url = "https://files.pythonhosted.org/packages/89/d0/71fc49b4f20e31e97f199348b8c4d6e613e7b6a54a90eb1b090c2b8496d7/regex-2025.9.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a32291add816961aab472f4fad344c92871a2ee33c6c219b6598e98c1f0108f2", size = 862654 }, - { url = "https://files.pythonhosted.org/packages/59/05/984edce1411a5685ba9abbe10d42cdd9450aab4a022271f9585539788150/regex-2025.9.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:588c161a68a383478e27442a678e3b197b13c5ba51dbba40c1ccb8c4c7bee9e9", size = 910862 }, - { url = "https://files.pythonhosted.org/packages/b2/02/5c891bb5fe0691cc1bad336e3a94b9097fbcf9707ec8ddc1dce9f0397289/regex-2025.9.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:47829ffaf652f30d579534da9085fe30c171fa2a6744a93d52ef7195dc38218b", size = 801991 }, - { url = "https://files.pythonhosted.org/packages/f1/ae/fd10d6ad179910f7a1b3e0a7fde1ef8bb65e738e8ac4fd6ecff3f52252e4/regex-2025.9.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e978e5a35b293ea43f140c92a3269b6ab13fe0a2bf8a881f7ac740f5a6ade85", size = 786651 }, - { url = "https://files.pythonhosted.org/packages/30/cf/9d686b07bbc5bf94c879cc168db92542d6bc9fb67088d03479fef09ba9d3/regex-2025.9.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4cf09903e72411f4bf3ac1eddd624ecfd423f14b2e4bf1c8b547b72f248b7bf7", size = 856556 }, - { url = "https://files.pythonhosted.org/packages/91/9d/302f8a29bb8a49528abbab2d357a793e2a59b645c54deae0050f8474785b/regex-2025.9.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:d016b0f77be63e49613c9e26aaf4a242f196cd3d7a4f15898f5f0ab55c9b24d2", size = 849001 }, - { url = "https://files.pythonhosted.org/packages/93/fa/b4c6dbdedc85ef4caec54c817cd5f4418dbfa2453214119f2538082bf666/regex-2025.9.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:656563e620de6908cd1c9d4f7b9e0777e3341ca7db9d4383bcaa44709c90281e", size = 788138 }, - { url = "https://files.pythonhosted.org/packages/4a/1b/91ee17a3cbf87f81e8c110399279d0e57f33405468f6e70809100f2ff7d8/regex-2025.9.1-cp312-cp312-win32.whl", hash = "sha256:df33f4ef07b68f7ab637b1dbd70accbf42ef0021c201660656601e8a9835de45", size = 264524 }, - { url = "https://files.pythonhosted.org/packages/92/28/6ba31cce05b0f1ec6b787921903f83bd0acf8efde55219435572af83c350/regex-2025.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:5aba22dfbc60cda7c0853516104724dc904caa2db55f2c3e6e984eb858d3edf3", size = 275489 }, - { url = "https://files.pythonhosted.org/packages/bd/ed/ea49f324db00196e9ef7fe00dd13c6164d5173dd0f1bbe495e61bb1fb09d/regex-2025.9.1-cp312-cp312-win_arm64.whl", hash = "sha256:ec1efb4c25e1849c2685fa95da44bfde1b28c62d356f9c8d861d4dad89ed56e9", size = 268589 }, - { url = "https://files.pythonhosted.org/packages/98/25/b2959ce90c6138c5142fe5264ee1f9b71a0c502ca4c7959302a749407c79/regex-2025.9.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bc6834727d1b98d710a63e6c823edf6ffbf5792eba35d3fa119531349d4142ef", size = 485932 }, - { url = "https://files.pythonhosted.org/packages/49/2e/6507a2a85f3f2be6643438b7bd976e67ad73223692d6988eb1ff444106d3/regex-2025.9.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c3dc05b6d579875719bccc5f3037b4dc80433d64e94681a0061845bd8863c025", size = 289568 }, - { url = "https://files.pythonhosted.org/packages/c7/d8/de4a4b57215d99868f1640e062a7907e185ec7476b4b689e2345487c1ff4/regex-2025.9.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:22213527df4c985ec4a729b055a8306272d41d2f45908d7bacb79be0fa7a75ad", size = 286984 }, - { url = "https://files.pythonhosted.org/packages/03/15/e8cb403403a57ed316e80661db0e54d7aa2efcd85cb6156f33cc18746922/regex-2025.9.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8e3f6e3c5a5a1adc3f7ea1b5aec89abfc2f4fbfba55dafb4343cd1d084f715b2", size = 797514 }, - { url = "https://files.pythonhosted.org/packages/e4/26/2446f2b9585fed61faaa7e2bbce3aca7dd8df6554c32addee4c4caecf24a/regex-2025.9.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bcb89c02a0d6c2bec9b0bb2d8c78782699afe8434493bfa6b4021cc51503f249", size = 862586 }, - { url = "https://files.pythonhosted.org/packages/fd/b8/82ffbe9c0992c31bbe6ae1c4b4e21269a5df2559102b90543c9b56724c3c/regex-2025.9.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b0e2f95413eb0c651cd1516a670036315b91b71767af83bc8525350d4375ccba", size = 910815 }, - { url = "https://files.pythonhosted.org/packages/2f/d8/7303ea38911759c1ee30cc5bc623ee85d3196b733c51fd6703c34290a8d9/regex-2025.9.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:09a41dc039e1c97d3c2ed3e26523f748e58c4de3ea7a31f95e1cf9ff973fff5a", size = 802042 }, - { url = "https://files.pythonhosted.org/packages/fc/0e/6ad51a55ed4b5af512bb3299a05d33309bda1c1d1e1808fa869a0bed31bc/regex-2025.9.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f0b4258b161094f66857a26ee938d3fe7b8a5063861e44571215c44fbf0e5df", size = 786764 }, - { url = "https://files.pythonhosted.org/packages/8d/d5/394e3ffae6baa5a9217bbd14d96e0e5da47bb069d0dbb8278e2681a2b938/regex-2025.9.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bf70e18ac390e6977ea7e56f921768002cb0fa359c4199606c7219854ae332e0", size = 856557 }, - { url = "https://files.pythonhosted.org/packages/cd/80/b288d3910c41194ad081b9fb4b371b76b0bbfdce93e7709fc98df27b37dc/regex-2025.9.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b84036511e1d2bb0a4ff1aec26951caa2dea8772b223c9e8a19ed8885b32dbac", size = 849108 }, - { url = "https://files.pythonhosted.org/packages/d1/cd/5ec76bf626d0d5abdc277b7a1734696f5f3d14fbb4a3e2540665bc305d85/regex-2025.9.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c2e05dcdfe224047f2a59e70408274c325d019aad96227ab959403ba7d58d2d7", size = 788201 }, - { url = "https://files.pythonhosted.org/packages/b5/36/674672f3fdead107565a2499f3007788b878188acec6d42bc141c5366c2c/regex-2025.9.1-cp313-cp313-win32.whl", hash = "sha256:3b9a62107a7441b81ca98261808fed30ae36ba06c8b7ee435308806bd53c1ed8", size = 264508 }, - { url = "https://files.pythonhosted.org/packages/83/ad/931134539515eb64ce36c24457a98b83c1b2e2d45adf3254b94df3735a76/regex-2025.9.1-cp313-cp313-win_amd64.whl", hash = "sha256:b38afecc10c177eb34cfae68d669d5161880849ba70c05cbfbe409f08cc939d7", size = 275469 }, - { url = "https://files.pythonhosted.org/packages/24/8c/96d34e61c0e4e9248836bf86d69cb224fd222f270fa9045b24e218b65604/regex-2025.9.1-cp313-cp313-win_arm64.whl", hash = "sha256:ec329890ad5e7ed9fc292858554d28d58d56bf62cf964faf0aa57964b21155a0", size = 268586 }, - { url = "https://files.pythonhosted.org/packages/21/b1/453cbea5323b049181ec6344a803777914074b9726c9c5dc76749966d12d/regex-2025.9.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:72fb7a016467d364546f22b5ae86c45680a4e0de6b2a6f67441d22172ff641f1", size = 486111 }, - { url = "https://files.pythonhosted.org/packages/f6/0e/92577f197bd2f7652c5e2857f399936c1876978474ecc5b068c6d8a79c86/regex-2025.9.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:c9527fa74eba53f98ad86be2ba003b3ebe97e94b6eb2b916b31b5f055622ef03", size = 289520 }, - { url = "https://files.pythonhosted.org/packages/af/c6/b472398116cca7ea5a6c4d5ccd0fc543f7fd2492cb0c48d2852a11972f73/regex-2025.9.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c905d925d194c83a63f92422af7544ec188301451b292c8b487f0543726107ca", size = 287215 }, - { url = "https://files.pythonhosted.org/packages/cf/11/f12ecb0cf9ca792a32bb92f758589a84149017467a544f2f6bfb45c0356d/regex-2025.9.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:74df7c74a63adcad314426b1f4ea6054a5ab25d05b0244f0c07ff9ce640fa597", size = 797855 }, - { url = "https://files.pythonhosted.org/packages/46/88/bbb848f719a540fb5997e71310f16f0b33a92c5d4b4d72d4311487fff2a3/regex-2025.9.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4f6e935e98ea48c7a2e8be44494de337b57a204470e7f9c9c42f912c414cd6f5", size = 863363 }, - { url = "https://files.pythonhosted.org/packages/54/a9/2321eb3e2838f575a78d48e03c1e83ea61bd08b74b7ebbdeca8abc50fc25/regex-2025.9.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4a62d033cd9ebefc7c5e466731a508dfabee827d80b13f455de68a50d3c2543d", size = 910202 }, - { url = "https://files.pythonhosted.org/packages/33/07/d1d70835d7d11b7e126181f316f7213c4572ecf5c5c97bdbb969fb1f38a2/regex-2025.9.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef971ebf2b93bdc88d8337238be4dfb851cc97ed6808eb04870ef67589415171", size = 801808 }, - { url = "https://files.pythonhosted.org/packages/13/d1/29e4d1bed514ef2bf3a4ead3cb8bb88ca8af94130239a4e68aa765c35b1c/regex-2025.9.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d936a1db208bdca0eca1f2bb2c1ba1d8370b226785c1e6db76e32a228ffd0ad5", size = 786824 }, - { url = "https://files.pythonhosted.org/packages/33/27/20d8ccb1bee460faaa851e6e7cc4cfe852a42b70caa1dca22721ba19f02f/regex-2025.9.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:7e786d9e4469698fc63815b8de08a89165a0aa851720eb99f5e0ea9d51dd2b6a", size = 857406 }, - { url = "https://files.pythonhosted.org/packages/74/fe/60c6132262dc36430d51e0c46c49927d113d3a38c1aba6a26c7744c84cf3/regex-2025.9.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:6b81d7dbc5466ad2c57ce3a0ddb717858fe1a29535c8866f8514d785fdb9fc5b", size = 848593 }, - { url = "https://files.pythonhosted.org/packages/cc/ae/2d4ff915622fabbef1af28387bf71e7f2f4944a348b8460d061e85e29bf0/regex-2025.9.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:cd4890e184a6feb0ef195338a6ce68906a8903a0f2eb7e0ab727dbc0a3156273", size = 787951 }, - { url = "https://files.pythonhosted.org/packages/85/37/dc127703a9e715a284cc2f7dbdd8a9776fd813c85c126eddbcbdd1ca5fec/regex-2025.9.1-cp314-cp314-win32.whl", hash = "sha256:34679a86230e46164c9e0396b56cab13c0505972343880b9e705083cc5b8ec86", size = 269833 }, - { url = "https://files.pythonhosted.org/packages/83/bf/4bed4d3d0570e16771defd5f8f15f7ea2311edcbe91077436d6908956c4a/regex-2025.9.1-cp314-cp314-win_amd64.whl", hash = "sha256:a1196e530a6bfa5f4bde029ac5b0295a6ecfaaffbfffede4bbaf4061d9455b70", size = 278742 }, - { url = "https://files.pythonhosted.org/packages/cf/3e/7d7ac6fd085023312421e0d69dfabdfb28e116e513fadbe9afe710c01893/regex-2025.9.1-cp314-cp314-win_arm64.whl", hash = "sha256:f46d525934871ea772930e997d577d48c6983e50f206ff7b66d4ac5f8941e993", size = 271860 }, +sdist = { url = "https://files.pythonhosted.org/packages/b2/5a/4c63457fbcaf19d138d72b2e9b39405954f98c0349b31c601bfcb151582c/regex-2025.9.1.tar.gz", hash = "sha256:88ac07b38d20b54d79e704e38aa3bd2c0f8027432164226bdee201a1c0c9c9ff", size = 400852, upload-time = "2025-09-01T22:10:10.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/ef/a0372febc5a1d44c1be75f35d7e5aff40c659ecde864d7fa10e138f75e74/regex-2025.9.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:84a25164bd8dcfa9f11c53f561ae9766e506e580b70279d05a7946510bdd6f6a", size = 486317, upload-time = "2025-09-01T22:08:34.529Z" }, + { url = "https://files.pythonhosted.org/packages/b5/25/d64543fb7eb41a1024786d518cc57faf1ce64aa6e9ddba097675a0c2f1d2/regex-2025.9.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:645e88a73861c64c1af558dd12294fb4e67b5c1eae0096a60d7d8a2143a611c7", size = 289698, upload-time = "2025-09-01T22:08:36.162Z" }, + { url = "https://files.pythonhosted.org/packages/d8/dc/fbf31fc60be317bd9f6f87daa40a8a9669b3b392aa8fe4313df0a39d0722/regex-2025.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:10a450cba5cd5409526ee1d4449f42aad38dd83ac6948cbd6d7f71ca7018f7db", size = 287242, upload-time = "2025-09-01T22:08:37.794Z" }, + { url = "https://files.pythonhosted.org/packages/0f/74/f933a607a538f785da5021acf5323961b4620972e2c2f1f39b6af4b71db7/regex-2025.9.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e9dc5991592933a4192c166eeb67b29d9234f9c86344481173d1bc52f73a7104", size = 797441, upload-time = "2025-09-01T22:08:39.108Z" }, + { url = "https://files.pythonhosted.org/packages/89/d0/71fc49b4f20e31e97f199348b8c4d6e613e7b6a54a90eb1b090c2b8496d7/regex-2025.9.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a32291add816961aab472f4fad344c92871a2ee33c6c219b6598e98c1f0108f2", size = 862654, upload-time = "2025-09-01T22:08:40.586Z" }, + { url = "https://files.pythonhosted.org/packages/59/05/984edce1411a5685ba9abbe10d42cdd9450aab4a022271f9585539788150/regex-2025.9.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:588c161a68a383478e27442a678e3b197b13c5ba51dbba40c1ccb8c4c7bee9e9", size = 910862, upload-time = "2025-09-01T22:08:42.416Z" }, + { url = "https://files.pythonhosted.org/packages/b2/02/5c891bb5fe0691cc1bad336e3a94b9097fbcf9707ec8ddc1dce9f0397289/regex-2025.9.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:47829ffaf652f30d579534da9085fe30c171fa2a6744a93d52ef7195dc38218b", size = 801991, upload-time = "2025-09-01T22:08:44.072Z" }, + { url = "https://files.pythonhosted.org/packages/f1/ae/fd10d6ad179910f7a1b3e0a7fde1ef8bb65e738e8ac4fd6ecff3f52252e4/regex-2025.9.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e978e5a35b293ea43f140c92a3269b6ab13fe0a2bf8a881f7ac740f5a6ade85", size = 786651, upload-time = "2025-09-01T22:08:46.079Z" }, + { url = "https://files.pythonhosted.org/packages/30/cf/9d686b07bbc5bf94c879cc168db92542d6bc9fb67088d03479fef09ba9d3/regex-2025.9.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4cf09903e72411f4bf3ac1eddd624ecfd423f14b2e4bf1c8b547b72f248b7bf7", size = 856556, upload-time = "2025-09-01T22:08:48.376Z" }, + { url = "https://files.pythonhosted.org/packages/91/9d/302f8a29bb8a49528abbab2d357a793e2a59b645c54deae0050f8474785b/regex-2025.9.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:d016b0f77be63e49613c9e26aaf4a242f196cd3d7a4f15898f5f0ab55c9b24d2", size = 849001, upload-time = "2025-09-01T22:08:50.067Z" }, + { url = "https://files.pythonhosted.org/packages/93/fa/b4c6dbdedc85ef4caec54c817cd5f4418dbfa2453214119f2538082bf666/regex-2025.9.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:656563e620de6908cd1c9d4f7b9e0777e3341ca7db9d4383bcaa44709c90281e", size = 788138, upload-time = "2025-09-01T22:08:51.933Z" }, + { url = "https://files.pythonhosted.org/packages/4a/1b/91ee17a3cbf87f81e8c110399279d0e57f33405468f6e70809100f2ff7d8/regex-2025.9.1-cp312-cp312-win32.whl", hash = "sha256:df33f4ef07b68f7ab637b1dbd70accbf42ef0021c201660656601e8a9835de45", size = 264524, upload-time = "2025-09-01T22:08:53.75Z" }, + { url = "https://files.pythonhosted.org/packages/92/28/6ba31cce05b0f1ec6b787921903f83bd0acf8efde55219435572af83c350/regex-2025.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:5aba22dfbc60cda7c0853516104724dc904caa2db55f2c3e6e984eb858d3edf3", size = 275489, upload-time = "2025-09-01T22:08:55.037Z" }, + { url = "https://files.pythonhosted.org/packages/bd/ed/ea49f324db00196e9ef7fe00dd13c6164d5173dd0f1bbe495e61bb1fb09d/regex-2025.9.1-cp312-cp312-win_arm64.whl", hash = "sha256:ec1efb4c25e1849c2685fa95da44bfde1b28c62d356f9c8d861d4dad89ed56e9", size = 268589, upload-time = "2025-09-01T22:08:56.369Z" }, + { url = "https://files.pythonhosted.org/packages/98/25/b2959ce90c6138c5142fe5264ee1f9b71a0c502ca4c7959302a749407c79/regex-2025.9.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bc6834727d1b98d710a63e6c823edf6ffbf5792eba35d3fa119531349d4142ef", size = 485932, upload-time = "2025-09-01T22:08:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/49/2e/6507a2a85f3f2be6643438b7bd976e67ad73223692d6988eb1ff444106d3/regex-2025.9.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c3dc05b6d579875719bccc5f3037b4dc80433d64e94681a0061845bd8863c025", size = 289568, upload-time = "2025-09-01T22:08:59.258Z" }, + { url = "https://files.pythonhosted.org/packages/c7/d8/de4a4b57215d99868f1640e062a7907e185ec7476b4b689e2345487c1ff4/regex-2025.9.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:22213527df4c985ec4a729b055a8306272d41d2f45908d7bacb79be0fa7a75ad", size = 286984, upload-time = "2025-09-01T22:09:00.835Z" }, + { url = "https://files.pythonhosted.org/packages/03/15/e8cb403403a57ed316e80661db0e54d7aa2efcd85cb6156f33cc18746922/regex-2025.9.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8e3f6e3c5a5a1adc3f7ea1b5aec89abfc2f4fbfba55dafb4343cd1d084f715b2", size = 797514, upload-time = "2025-09-01T22:09:02.538Z" }, + { url = "https://files.pythonhosted.org/packages/e4/26/2446f2b9585fed61faaa7e2bbce3aca7dd8df6554c32addee4c4caecf24a/regex-2025.9.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bcb89c02a0d6c2bec9b0bb2d8c78782699afe8434493bfa6b4021cc51503f249", size = 862586, upload-time = "2025-09-01T22:09:04.322Z" }, + { url = "https://files.pythonhosted.org/packages/fd/b8/82ffbe9c0992c31bbe6ae1c4b4e21269a5df2559102b90543c9b56724c3c/regex-2025.9.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b0e2f95413eb0c651cd1516a670036315b91b71767af83bc8525350d4375ccba", size = 910815, upload-time = "2025-09-01T22:09:05.978Z" }, + { url = "https://files.pythonhosted.org/packages/2f/d8/7303ea38911759c1ee30cc5bc623ee85d3196b733c51fd6703c34290a8d9/regex-2025.9.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:09a41dc039e1c97d3c2ed3e26523f748e58c4de3ea7a31f95e1cf9ff973fff5a", size = 802042, upload-time = "2025-09-01T22:09:07.865Z" }, + { url = "https://files.pythonhosted.org/packages/fc/0e/6ad51a55ed4b5af512bb3299a05d33309bda1c1d1e1808fa869a0bed31bc/regex-2025.9.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f0b4258b161094f66857a26ee938d3fe7b8a5063861e44571215c44fbf0e5df", size = 786764, upload-time = "2025-09-01T22:09:09.362Z" }, + { url = "https://files.pythonhosted.org/packages/8d/d5/394e3ffae6baa5a9217bbd14d96e0e5da47bb069d0dbb8278e2681a2b938/regex-2025.9.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bf70e18ac390e6977ea7e56f921768002cb0fa359c4199606c7219854ae332e0", size = 856557, upload-time = "2025-09-01T22:09:11.129Z" }, + { url = "https://files.pythonhosted.org/packages/cd/80/b288d3910c41194ad081b9fb4b371b76b0bbfdce93e7709fc98df27b37dc/regex-2025.9.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b84036511e1d2bb0a4ff1aec26951caa2dea8772b223c9e8a19ed8885b32dbac", size = 849108, upload-time = "2025-09-01T22:09:12.877Z" }, + { url = "https://files.pythonhosted.org/packages/d1/cd/5ec76bf626d0d5abdc277b7a1734696f5f3d14fbb4a3e2540665bc305d85/regex-2025.9.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c2e05dcdfe224047f2a59e70408274c325d019aad96227ab959403ba7d58d2d7", size = 788201, upload-time = "2025-09-01T22:09:14.561Z" }, + { url = "https://files.pythonhosted.org/packages/b5/36/674672f3fdead107565a2499f3007788b878188acec6d42bc141c5366c2c/regex-2025.9.1-cp313-cp313-win32.whl", hash = "sha256:3b9a62107a7441b81ca98261808fed30ae36ba06c8b7ee435308806bd53c1ed8", size = 264508, upload-time = "2025-09-01T22:09:16.193Z" }, + { url = "https://files.pythonhosted.org/packages/83/ad/931134539515eb64ce36c24457a98b83c1b2e2d45adf3254b94df3735a76/regex-2025.9.1-cp313-cp313-win_amd64.whl", hash = "sha256:b38afecc10c177eb34cfae68d669d5161880849ba70c05cbfbe409f08cc939d7", size = 275469, upload-time = "2025-09-01T22:09:17.462Z" }, + { url = "https://files.pythonhosted.org/packages/24/8c/96d34e61c0e4e9248836bf86d69cb224fd222f270fa9045b24e218b65604/regex-2025.9.1-cp313-cp313-win_arm64.whl", hash = "sha256:ec329890ad5e7ed9fc292858554d28d58d56bf62cf964faf0aa57964b21155a0", size = 268586, upload-time = "2025-09-01T22:09:18.948Z" }, + { url = "https://files.pythonhosted.org/packages/21/b1/453cbea5323b049181ec6344a803777914074b9726c9c5dc76749966d12d/regex-2025.9.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:72fb7a016467d364546f22b5ae86c45680a4e0de6b2a6f67441d22172ff641f1", size = 486111, upload-time = "2025-09-01T22:09:20.734Z" }, + { url = "https://files.pythonhosted.org/packages/f6/0e/92577f197bd2f7652c5e2857f399936c1876978474ecc5b068c6d8a79c86/regex-2025.9.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:c9527fa74eba53f98ad86be2ba003b3ebe97e94b6eb2b916b31b5f055622ef03", size = 289520, upload-time = "2025-09-01T22:09:22.249Z" }, + { url = "https://files.pythonhosted.org/packages/af/c6/b472398116cca7ea5a6c4d5ccd0fc543f7fd2492cb0c48d2852a11972f73/regex-2025.9.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c905d925d194c83a63f92422af7544ec188301451b292c8b487f0543726107ca", size = 287215, upload-time = "2025-09-01T22:09:23.657Z" }, + { url = "https://files.pythonhosted.org/packages/cf/11/f12ecb0cf9ca792a32bb92f758589a84149017467a544f2f6bfb45c0356d/regex-2025.9.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:74df7c74a63adcad314426b1f4ea6054a5ab25d05b0244f0c07ff9ce640fa597", size = 797855, upload-time = "2025-09-01T22:09:25.197Z" }, + { url = "https://files.pythonhosted.org/packages/46/88/bbb848f719a540fb5997e71310f16f0b33a92c5d4b4d72d4311487fff2a3/regex-2025.9.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4f6e935e98ea48c7a2e8be44494de337b57a204470e7f9c9c42f912c414cd6f5", size = 863363, upload-time = "2025-09-01T22:09:26.705Z" }, + { url = "https://files.pythonhosted.org/packages/54/a9/2321eb3e2838f575a78d48e03c1e83ea61bd08b74b7ebbdeca8abc50fc25/regex-2025.9.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4a62d033cd9ebefc7c5e466731a508dfabee827d80b13f455de68a50d3c2543d", size = 910202, upload-time = "2025-09-01T22:09:28.906Z" }, + { url = "https://files.pythonhosted.org/packages/33/07/d1d70835d7d11b7e126181f316f7213c4572ecf5c5c97bdbb969fb1f38a2/regex-2025.9.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef971ebf2b93bdc88d8337238be4dfb851cc97ed6808eb04870ef67589415171", size = 801808, upload-time = "2025-09-01T22:09:30.733Z" }, + { url = "https://files.pythonhosted.org/packages/13/d1/29e4d1bed514ef2bf3a4ead3cb8bb88ca8af94130239a4e68aa765c35b1c/regex-2025.9.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d936a1db208bdca0eca1f2bb2c1ba1d8370b226785c1e6db76e32a228ffd0ad5", size = 786824, upload-time = "2025-09-01T22:09:32.61Z" }, + { url = "https://files.pythonhosted.org/packages/33/27/20d8ccb1bee460faaa851e6e7cc4cfe852a42b70caa1dca22721ba19f02f/regex-2025.9.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:7e786d9e4469698fc63815b8de08a89165a0aa851720eb99f5e0ea9d51dd2b6a", size = 857406, upload-time = "2025-09-01T22:09:34.117Z" }, + { url = "https://files.pythonhosted.org/packages/74/fe/60c6132262dc36430d51e0c46c49927d113d3a38c1aba6a26c7744c84cf3/regex-2025.9.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:6b81d7dbc5466ad2c57ce3a0ddb717858fe1a29535c8866f8514d785fdb9fc5b", size = 848593, upload-time = "2025-09-01T22:09:35.598Z" }, + { url = "https://files.pythonhosted.org/packages/cc/ae/2d4ff915622fabbef1af28387bf71e7f2f4944a348b8460d061e85e29bf0/regex-2025.9.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:cd4890e184a6feb0ef195338a6ce68906a8903a0f2eb7e0ab727dbc0a3156273", size = 787951, upload-time = "2025-09-01T22:09:37.139Z" }, + { url = "https://files.pythonhosted.org/packages/85/37/dc127703a9e715a284cc2f7dbdd8a9776fd813c85c126eddbcbdd1ca5fec/regex-2025.9.1-cp314-cp314-win32.whl", hash = "sha256:34679a86230e46164c9e0396b56cab13c0505972343880b9e705083cc5b8ec86", size = 269833, upload-time = "2025-09-01T22:09:39.245Z" }, + { url = "https://files.pythonhosted.org/packages/83/bf/4bed4d3d0570e16771defd5f8f15f7ea2311edcbe91077436d6908956c4a/regex-2025.9.1-cp314-cp314-win_amd64.whl", hash = "sha256:a1196e530a6bfa5f4bde029ac5b0295a6ecfaaffbfffede4bbaf4061d9455b70", size = 278742, upload-time = "2025-09-01T22:09:40.651Z" }, + { url = "https://files.pythonhosted.org/packages/cf/3e/7d7ac6fd085023312421e0d69dfabdfb28e116e513fadbe9afe710c01893/regex-2025.9.1-cp314-cp314-win_arm64.whl", hash = "sha256:f46d525934871ea772930e997d577d48c6983e50f206ff7b66d4ac5f8941e993", size = 271860, upload-time = "2025-09-01T22:09:42.413Z" }, ] [[package]] @@ -782,52 +783,52 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517 } +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738 }, + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, ] [[package]] name = "ruff" version = "0.11.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/61/fb87430f040e4e577e784e325351186976516faef17d6fcd921fe28edfd7/ruff-0.11.2.tar.gz", hash = "sha256:ec47591497d5a1050175bdf4e1a4e6272cddff7da88a2ad595e1e326041d8d94", size = 3857511 } +sdist = { url = "https://files.pythonhosted.org/packages/90/61/fb87430f040e4e577e784e325351186976516faef17d6fcd921fe28edfd7/ruff-0.11.2.tar.gz", hash = "sha256:ec47591497d5a1050175bdf4e1a4e6272cddff7da88a2ad595e1e326041d8d94", size = 3857511, upload-time = "2025-03-21T13:31:17.419Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/99/102578506f0f5fa29fd7e0df0a273864f79af044757aef73d1cae0afe6ad/ruff-0.11.2-py3-none-linux_armv6l.whl", hash = "sha256:c69e20ea49e973f3afec2c06376eb56045709f0212615c1adb0eda35e8a4e477", size = 10113146 }, - { url = "https://files.pythonhosted.org/packages/74/ad/5cd4ba58ab602a579997a8494b96f10f316e874d7c435bcc1a92e6da1b12/ruff-0.11.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2c5424cc1c4eb1d8ecabe6d4f1b70470b4f24a0c0171356290b1953ad8f0e272", size = 10867092 }, - { url = "https://files.pythonhosted.org/packages/fc/3e/d3f13619e1d152c7b600a38c1a035e833e794c6625c9a6cea6f63dbf3af4/ruff-0.11.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:ecf20854cc73f42171eedb66f006a43d0a21bfb98a2523a809931cda569552d9", size = 10224082 }, - { url = "https://files.pythonhosted.org/packages/90/06/f77b3d790d24a93f38e3806216f263974909888fd1e826717c3ec956bbcd/ruff-0.11.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c543bf65d5d27240321604cee0633a70c6c25c9a2f2492efa9f6d4b8e4199bb", size = 10394818 }, - { url = "https://files.pythonhosted.org/packages/99/7f/78aa431d3ddebfc2418cd95b786642557ba8b3cb578c075239da9ce97ff9/ruff-0.11.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:20967168cc21195db5830b9224be0e964cc9c8ecf3b5a9e3ce19876e8d3a96e3", size = 9952251 }, - { url = "https://files.pythonhosted.org/packages/30/3e/f11186d1ddfaca438c3bbff73c6a2fdb5b60e6450cc466129c694b0ab7a2/ruff-0.11.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:955a9ce63483999d9f0b8f0b4a3ad669e53484232853054cc8b9d51ab4c5de74", size = 11563566 }, - { url = "https://files.pythonhosted.org/packages/22/6c/6ca91befbc0a6539ee133d9a9ce60b1a354db12c3c5d11cfdbf77140f851/ruff-0.11.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:86b3a27c38b8fce73bcd262b0de32e9a6801b76d52cdb3ae4c914515f0cef608", size = 12208721 }, - { url = "https://files.pythonhosted.org/packages/19/b0/24516a3b850d55b17c03fc399b681c6a549d06ce665915721dc5d6458a5c/ruff-0.11.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3b66a03b248c9fcd9d64d445bafdf1589326bee6fc5c8e92d7562e58883e30f", size = 11662274 }, - { url = "https://files.pythonhosted.org/packages/d7/65/76be06d28ecb7c6070280cef2bcb20c98fbf99ff60b1c57d2fb9b8771348/ruff-0.11.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0397c2672db015be5aa3d4dac54c69aa012429097ff219392c018e21f5085147", size = 13792284 }, - { url = "https://files.pythonhosted.org/packages/ce/d2/4ceed7147e05852876f3b5f3fdc23f878ce2b7e0b90dd6e698bda3d20787/ruff-0.11.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:869bcf3f9abf6457fbe39b5a37333aa4eecc52a3b99c98827ccc371a8e5b6f1b", size = 11327861 }, - { url = "https://files.pythonhosted.org/packages/c4/78/4935ecba13706fd60ebe0e3dc50371f2bdc3d9bc80e68adc32ff93914534/ruff-0.11.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2a2b50ca35457ba785cd8c93ebbe529467594087b527a08d487cf0ee7b3087e9", size = 10276560 }, - { url = "https://files.pythonhosted.org/packages/81/7f/1b2435c3f5245d410bb5dc80f13ec796454c21fbda12b77d7588d5cf4e29/ruff-0.11.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7c69c74bf53ddcfbc22e6eb2f31211df7f65054bfc1f72288fc71e5f82db3eab", size = 9945091 }, - { url = "https://files.pythonhosted.org/packages/39/c4/692284c07e6bf2b31d82bb8c32f8840f9d0627d92983edaac991a2b66c0a/ruff-0.11.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6e8fb75e14560f7cf53b15bbc55baf5ecbe373dd5f3aab96ff7aa7777edd7630", size = 10977133 }, - { url = "https://files.pythonhosted.org/packages/94/cf/8ab81cb7dd7a3b0a3960c2769825038f3adcd75faf46dd6376086df8b128/ruff-0.11.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:842a472d7b4d6f5924e9297aa38149e5dcb1e628773b70e6387ae2c97a63c58f", size = 11378514 }, - { url = "https://files.pythonhosted.org/packages/d9/3a/a647fa4f316482dacf2fd68e8a386327a33d6eabd8eb2f9a0c3d291ec549/ruff-0.11.2-py3-none-win32.whl", hash = "sha256:aca01ccd0eb5eb7156b324cfaa088586f06a86d9e5314b0eb330cb48415097cc", size = 10319835 }, - { url = "https://files.pythonhosted.org/packages/86/54/3c12d3af58012a5e2cd7ebdbe9983f4834af3f8cbea0e8a8c74fa1e23b2b/ruff-0.11.2-py3-none-win_amd64.whl", hash = "sha256:3170150172a8f994136c0c66f494edf199a0bbea7a409f649e4bc8f4d7084080", size = 11373713 }, - { url = "https://files.pythonhosted.org/packages/d6/d4/dd813703af8a1e2ac33bf3feb27e8a5ad514c9f219df80c64d69807e7f71/ruff-0.11.2-py3-none-win_arm64.whl", hash = "sha256:52933095158ff328f4c77af3d74f0379e34fd52f175144cefc1b192e7ccd32b4", size = 10441990 }, + { url = "https://files.pythonhosted.org/packages/62/99/102578506f0f5fa29fd7e0df0a273864f79af044757aef73d1cae0afe6ad/ruff-0.11.2-py3-none-linux_armv6l.whl", hash = "sha256:c69e20ea49e973f3afec2c06376eb56045709f0212615c1adb0eda35e8a4e477", size = 10113146, upload-time = "2025-03-21T13:30:26.68Z" }, + { url = "https://files.pythonhosted.org/packages/74/ad/5cd4ba58ab602a579997a8494b96f10f316e874d7c435bcc1a92e6da1b12/ruff-0.11.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2c5424cc1c4eb1d8ecabe6d4f1b70470b4f24a0c0171356290b1953ad8f0e272", size = 10867092, upload-time = "2025-03-21T13:30:37.949Z" }, + { url = "https://files.pythonhosted.org/packages/fc/3e/d3f13619e1d152c7b600a38c1a035e833e794c6625c9a6cea6f63dbf3af4/ruff-0.11.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:ecf20854cc73f42171eedb66f006a43d0a21bfb98a2523a809931cda569552d9", size = 10224082, upload-time = "2025-03-21T13:30:39.962Z" }, + { url = "https://files.pythonhosted.org/packages/90/06/f77b3d790d24a93f38e3806216f263974909888fd1e826717c3ec956bbcd/ruff-0.11.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c543bf65d5d27240321604cee0633a70c6c25c9a2f2492efa9f6d4b8e4199bb", size = 10394818, upload-time = "2025-03-21T13:30:42.551Z" }, + { url = "https://files.pythonhosted.org/packages/99/7f/78aa431d3ddebfc2418cd95b786642557ba8b3cb578c075239da9ce97ff9/ruff-0.11.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:20967168cc21195db5830b9224be0e964cc9c8ecf3b5a9e3ce19876e8d3a96e3", size = 9952251, upload-time = "2025-03-21T13:30:45.196Z" }, + { url = "https://files.pythonhosted.org/packages/30/3e/f11186d1ddfaca438c3bbff73c6a2fdb5b60e6450cc466129c694b0ab7a2/ruff-0.11.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:955a9ce63483999d9f0b8f0b4a3ad669e53484232853054cc8b9d51ab4c5de74", size = 11563566, upload-time = "2025-03-21T13:30:47.516Z" }, + { url = "https://files.pythonhosted.org/packages/22/6c/6ca91befbc0a6539ee133d9a9ce60b1a354db12c3c5d11cfdbf77140f851/ruff-0.11.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:86b3a27c38b8fce73bcd262b0de32e9a6801b76d52cdb3ae4c914515f0cef608", size = 12208721, upload-time = "2025-03-21T13:30:49.56Z" }, + { url = "https://files.pythonhosted.org/packages/19/b0/24516a3b850d55b17c03fc399b681c6a549d06ce665915721dc5d6458a5c/ruff-0.11.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3b66a03b248c9fcd9d64d445bafdf1589326bee6fc5c8e92d7562e58883e30f", size = 11662274, upload-time = "2025-03-21T13:30:52.055Z" }, + { url = "https://files.pythonhosted.org/packages/d7/65/76be06d28ecb7c6070280cef2bcb20c98fbf99ff60b1c57d2fb9b8771348/ruff-0.11.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0397c2672db015be5aa3d4dac54c69aa012429097ff219392c018e21f5085147", size = 13792284, upload-time = "2025-03-21T13:30:54.24Z" }, + { url = "https://files.pythonhosted.org/packages/ce/d2/4ceed7147e05852876f3b5f3fdc23f878ce2b7e0b90dd6e698bda3d20787/ruff-0.11.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:869bcf3f9abf6457fbe39b5a37333aa4eecc52a3b99c98827ccc371a8e5b6f1b", size = 11327861, upload-time = "2025-03-21T13:30:56.757Z" }, + { url = "https://files.pythonhosted.org/packages/c4/78/4935ecba13706fd60ebe0e3dc50371f2bdc3d9bc80e68adc32ff93914534/ruff-0.11.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2a2b50ca35457ba785cd8c93ebbe529467594087b527a08d487cf0ee7b3087e9", size = 10276560, upload-time = "2025-03-21T13:30:58.881Z" }, + { url = "https://files.pythonhosted.org/packages/81/7f/1b2435c3f5245d410bb5dc80f13ec796454c21fbda12b77d7588d5cf4e29/ruff-0.11.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7c69c74bf53ddcfbc22e6eb2f31211df7f65054bfc1f72288fc71e5f82db3eab", size = 9945091, upload-time = "2025-03-21T13:31:01.45Z" }, + { url = "https://files.pythonhosted.org/packages/39/c4/692284c07e6bf2b31d82bb8c32f8840f9d0627d92983edaac991a2b66c0a/ruff-0.11.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6e8fb75e14560f7cf53b15bbc55baf5ecbe373dd5f3aab96ff7aa7777edd7630", size = 10977133, upload-time = "2025-03-21T13:31:04.013Z" }, + { url = "https://files.pythonhosted.org/packages/94/cf/8ab81cb7dd7a3b0a3960c2769825038f3adcd75faf46dd6376086df8b128/ruff-0.11.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:842a472d7b4d6f5924e9297aa38149e5dcb1e628773b70e6387ae2c97a63c58f", size = 11378514, upload-time = "2025-03-21T13:31:06.166Z" }, + { url = "https://files.pythonhosted.org/packages/d9/3a/a647fa4f316482dacf2fd68e8a386327a33d6eabd8eb2f9a0c3d291ec549/ruff-0.11.2-py3-none-win32.whl", hash = "sha256:aca01ccd0eb5eb7156b324cfaa088586f06a86d9e5314b0eb330cb48415097cc", size = 10319835, upload-time = "2025-03-21T13:31:10.7Z" }, + { url = "https://files.pythonhosted.org/packages/86/54/3c12d3af58012a5e2cd7ebdbe9983f4834af3f8cbea0e8a8c74fa1e23b2b/ruff-0.11.2-py3-none-win_amd64.whl", hash = "sha256:3170150172a8f994136c0c66f494edf199a0bbea7a409f649e4bc8f4d7084080", size = 11373713, upload-time = "2025-03-21T13:31:13.148Z" }, + { url = "https://files.pythonhosted.org/packages/d6/d4/dd813703af8a1e2ac33bf3feb27e8a5ad514c9f219df80c64d69807e7f71/ruff-0.11.2-py3-none-win_arm64.whl", hash = "sha256:52933095158ff328f4c77af3d74f0379e34fd52f175144cefc1b192e7ccd32b4", size = 10441990, upload-time = "2025-03-21T13:31:15.206Z" }, ] [[package]] name = "six" version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] [[package]] name = "soupsieve" version = "2.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418 } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload-time = "2025-04-20T18:50:08.518Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677 }, + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, ] [[package]] @@ -837,45 +838,45 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "hjson" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b8/05/d1b50919a0d206d77255217d96dea9ab34bd1eb965a21559380c48f9517e/super_collections-0.5.3.tar.gz", hash = "sha256:94c1ec96c0a0d5e8e7d389ed8cde6882ac246940507c5e6b86e91945c2968d46", size = 10178 } +sdist = { url = "https://files.pythonhosted.org/packages/b8/05/d1b50919a0d206d77255217d96dea9ab34bd1eb965a21559380c48f9517e/super_collections-0.5.3.tar.gz", hash = "sha256:94c1ec96c0a0d5e8e7d389ed8cde6882ac246940507c5e6b86e91945c2968d46", size = 10178, upload-time = "2024-10-12T05:11:19.888Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/6d/58de58c521e7fb79bceb4da90d55250070bb4adfa3c870b82519a561c79d/super_collections-0.5.3-py3-none-any.whl", hash = "sha256:907d35b25dc4070910e8254bf2f5c928348af1cf8a1f1e8259e06c666e902cff", size = 8436 }, + { url = "https://files.pythonhosted.org/packages/07/6d/58de58c521e7fb79bceb4da90d55250070bb4adfa3c870b82519a561c79d/super_collections-0.5.3-py3-none-any.whl", hash = "sha256:907d35b25dc4070910e8254bf2f5c928348af1cf8a1f1e8259e06c666e902cff", size = 8436, upload-time = "2024-10-12T05:11:18.626Z" }, ] [[package]] name = "termcolor" version = "3.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/6c/3d75c196ac07ac8749600b60b03f4f6094d54e132c4d94ebac6ee0e0add0/termcolor-3.1.0.tar.gz", hash = "sha256:6a6dd7fbee581909eeec6a756cff1d7f7c376063b14e4a298dc4980309e55970", size = 14324 } +sdist = { url = "https://files.pythonhosted.org/packages/ca/6c/3d75c196ac07ac8749600b60b03f4f6094d54e132c4d94ebac6ee0e0add0/termcolor-3.1.0.tar.gz", hash = "sha256:6a6dd7fbee581909eeec6a756cff1d7f7c376063b14e4a298dc4980309e55970", size = 14324, upload-time = "2025-04-30T11:37:53.791Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4f/bd/de8d508070629b6d84a30d01d57e4a65c69aa7f5abe7560b8fad3b50ea59/termcolor-3.1.0-py3-none-any.whl", hash = "sha256:591dd26b5c2ce03b9e43f391264626557873ce1d379019786f99b0c2bee140aa", size = 7684 }, + { url = "https://files.pythonhosted.org/packages/4f/bd/de8d508070629b6d84a30d01d57e4a65c69aa7f5abe7560b8fad3b50ea59/termcolor-3.1.0-py3-none-any.whl", hash = "sha256:591dd26b5c2ce03b9e43f391264626557873ce1d379019786f99b0c2bee140aa", size = 7684, upload-time = "2025-04-30T11:37:52.382Z" }, ] [[package]] name = "text-unidecode" version = "1.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885, upload-time = "2019-08-30T21:36:45.405Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154 }, + { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload-time = "2019-08-30T21:37:03.543Z" }, ] [[package]] name = "types-pyyaml" version = "6.0.12.20250516" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4e/22/59e2aeb48ceeee1f7cd4537db9568df80d62bdb44a7f9e743502ea8aab9c/types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba", size = 17378 } +sdist = { url = "https://files.pythonhosted.org/packages/4e/22/59e2aeb48ceeee1f7cd4537db9568df80d62bdb44a7f9e743502ea8aab9c/types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba", size = 17378, upload-time = "2025-05-16T03:08:04.897Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530", size = 20312 }, + { url = "https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530", size = 20312, upload-time = "2025-05-16T03:08:04.019Z" }, ] [[package]] name = "typing-extensions" version = "4.12.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321, upload-time = "2024-06-07T18:52:15.995Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438, upload-time = "2024-06-07T18:52:13.582Z" }, ] [[package]] @@ -885,18 +886,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726 } +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 }, + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, ] [[package]] name = "urllib3" version = "2.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185 } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795 }, + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, ] [[package]] @@ -908,33 +909,33 @@ dependencies = [ { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c7/9c/57d19fa093bcf5ac61a48087dd44d00655f85421d1aa9722f8befbf3f40a/virtualenv-20.29.3.tar.gz", hash = "sha256:95e39403fcf3940ac45bc717597dba16110b74506131845d9b687d5e73d947ac", size = 4320280 } +sdist = { url = "https://files.pythonhosted.org/packages/c7/9c/57d19fa093bcf5ac61a48087dd44d00655f85421d1aa9722f8befbf3f40a/virtualenv-20.29.3.tar.gz", hash = "sha256:95e39403fcf3940ac45bc717597dba16110b74506131845d9b687d5e73d947ac", size = 4320280, upload-time = "2025-03-06T19:54:19.055Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/eb/c6db6e3001d58c6a9e67c74bb7b4206767caa3ccc28c6b9eaf4c23fb4e34/virtualenv-20.29.3-py3-none-any.whl", hash = "sha256:3e3d00f5807e83b234dfb6122bf37cfadf4be216c53a49ac059d02414f819170", size = 4301458 }, + { url = "https://files.pythonhosted.org/packages/c2/eb/c6db6e3001d58c6a9e67c74bb7b4206767caa3ccc28c6b9eaf4c23fb4e34/virtualenv-20.29.3-py3-none-any.whl", hash = "sha256:3e3d00f5807e83b234dfb6122bf37cfadf4be216c53a49ac059d02414f819170", size = 4301458, upload-time = "2025-03-06T19:54:16.923Z" }, ] [[package]] name = "watchdog" version = "6.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload-time = "2024-11-01T14:07:13.037Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, - { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, - { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, - { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480 }, - { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451 }, - { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057 }, - { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, - { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, - { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, - { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, - { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471, upload-time = "2024-11-01T14:06:37.745Z" }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449, upload-time = "2024-11-01T14:06:39.748Z" }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054, upload-time = "2024-11-01T14:06:41.009Z" }, + { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480, upload-time = "2024-11-01T14:06:42.952Z" }, + { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451, upload-time = "2024-11-01T14:06:45.084Z" }, + { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057, upload-time = "2024-11-01T14:06:47.324Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload-time = "2024-11-01T14:06:59.472Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload-time = "2024-11-01T14:07:01.431Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload-time = "2024-11-01T14:07:02.568Z" }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload-time = "2024-11-01T14:07:03.893Z" }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload-time = "2024-11-01T14:07:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload-time = "2024-11-01T14:07:06.376Z" }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload-time = "2024-11-01T14:07:07.547Z" }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload-time = "2024-11-01T14:07:09.525Z" }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload-time = "2024-11-01T14:07:10.686Z" }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload-time = "2024-11-01T14:07:11.845Z" }, ] [[package]] @@ -944,16 +945,16 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "bracex" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/79/3e/c0bdc27cf06f4e47680bd5803a07cb3dfd17de84cde92dd217dcb9e05253/wcmatch-10.1.tar.gz", hash = "sha256:f11f94208c8c8484a16f4f48638a85d771d9513f4ab3f37595978801cb9465af", size = 117421 } +sdist = { url = "https://files.pythonhosted.org/packages/79/3e/c0bdc27cf06f4e47680bd5803a07cb3dfd17de84cde92dd217dcb9e05253/wcmatch-10.1.tar.gz", hash = "sha256:f11f94208c8c8484a16f4f48638a85d771d9513f4ab3f37595978801cb9465af", size = 117421, upload-time = "2025-06-22T19:14:02.49Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/d8/0d1d2e9d3fabcf5d6840362adcf05f8cf3cd06a73358140c3a97189238ae/wcmatch-10.1-py3-none-any.whl", hash = "sha256:5848ace7dbb0476e5e55ab63c6bbd529745089343427caa5537f230cc01beb8a", size = 39854 }, + { url = "https://files.pythonhosted.org/packages/eb/d8/0d1d2e9d3fabcf5d6840362adcf05f8cf3cd06a73358140c3a97189238ae/wcmatch-10.1-py3-none-any.whl", hash = "sha256:5848ace7dbb0476e5e55ab63c6bbd529745089343427caa5537f230cc01beb8a", size = 39854, upload-time = "2025-06-22T19:14:00.978Z" }, ] [[package]] name = "zipp" version = "3.21.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/50/bad581df71744867e9468ebd0bcd6505de3b275e06f202c2cb016e3ff56f/zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4", size = 24545 } +sdist = { url = "https://files.pythonhosted.org/packages/3f/50/bad581df71744867e9468ebd0bcd6505de3b275e06f202c2cb016e3ff56f/zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4", size = 24545, upload-time = "2024-11-10T15:05:20.202Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/1a/7e4798e9339adc931158c9d69ecc34f5e6791489d469f5e50ec15e35f458/zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931", size = 9630 }, + { url = "https://files.pythonhosted.org/packages/b7/1a/7e4798e9339adc931158c9d69ecc34f5e6791489d469f5e50ec15e35f458/zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931", size = 9630, upload-time = "2024-11-10T15:05:19.275Z" }, ] diff --git a/vendor/CMakeLists.txt b/vendor/CMakeLists.txt index 1a3c32c60..550306554 100644 --- a/vendor/CMakeLists.txt +++ b/vendor/CMakeLists.txt @@ -30,6 +30,7 @@ set(KIVA_TESTING OFF CACHE BOOL "" FORCE) set(KIVA_EXE_BUILD OFF CACHE BOOL "" FORCE) set(KIVA_COVERAGE OFF CACHE BOOL "" FORCE) set(KIVA_3D OFF CACHE BOOL "" FORCE) +set(BUILD_TESTING OFF CACHE BOOL "" FORCE) # Polution from eigen option( KIVA_GROUND_PLOT "Build ground plotting library" OFF ) From ec62514edfe2416e8064a8087bdb3b927bbd9ff9 Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Thu, 25 Sep 2025 12:28:15 -0600 Subject: [PATCH 105/117] Add doc CMake file. --- doc/CMakeLists.txt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 doc/CMakeLists.txt diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 000000000..f12f03f48 --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,17 @@ +find_program(UV_EXECUTABLE NAMES uv REQUIRED) + +if(CSE_BUILD_DOCUMENTATION STREQUAL "BuildWithAll") + set(build_with_all_string "ALL") +endif() + +add_custom_target( + cse_documentation + ${build_with_all_string} + COMMAND ${UV_EXECUTABLE} run mkdocs build + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src" +) + +add_test(NAME documentation.coverage + COMMAND ${UV_EXECUTABLE} run coverage.py --path_to_cse $ --path_to_input_data "docs/input-data" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src" +) \ No newline at end of file From d6ef563d4b422934d38e6550b6eec5dd54d05042 Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Thu, 25 Sep 2025 12:36:10 -0600 Subject: [PATCH 106/117] Fix defined argument passed to CMake command. --- .github/actions/build-cse/action.yml | 31 ---------------------------- .github/workflows/build-and-test.yml | 2 +- .github/workflows/release.yml | 2 +- 3 files changed, 2 insertions(+), 33 deletions(-) delete mode 100644 .github/actions/build-cse/action.yml diff --git a/.github/actions/build-cse/action.yml b/.github/actions/build-cse/action.yml deleted file mode 100644 index 0b0365ce7..000000000 --- a/.github/actions/build-cse/action.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: "Build CSE" -description: "Get git info (for version) and build CSE executable" -inputs: - arch: - description: Target architecture ("32" or "64" bit) - default: "32" - config: - description: Configuration (Release or Debug) - default: Release - compiler: - description: Compiler used for windows builds (clang or msvc) - default: msvc - build_dir: - description: Relative path to the build directory - default: build -runs: - using: composite - steps: - - name: Get branch name - uses: tj-actions/branch-names@v6.4 - id: branch-name - - name: Install Linux Libraries - if: runner.os == 'Linux' - shell: bash - run: sudo apt-get update && sudo apt-get -y install xorg-dev libgl1-mesa-dev - - name: Save branch name - run: echo "CI_GIT_BRANCH=${{steps.branch-name.outputs.current_branch}}" >> $GITHUB_ENV - shell: bash - - name: Build and Configure - shell: bash - run: cmake -DBUILD_ARCHITECTURE=${{ inputs.arch }} -DCOMPILER_ID=${{ inputs.compiler }} -DCONFIGURATION=${{ inputs.config }} -DTARGET_NAME=CSE -DBUILD_DIRECTORY=${{ inputs.build_dir }} -P cmake/configure-and-build.cmake diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index ea7d79611..e7bda3b04 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -62,7 +62,7 @@ jobs: with: python-version: "3.13" - name: Build CSE - run: cmake -DBUILD_ARCHITECTURE=${{ matrix.arch }} -DCOMPILER_ID=${{ matrix.compiler }} -DCONFIGURATION=${{ matrix.config }} -DBUILD_DIRECTORY=build -DBUILD_DOCS_WITH_ALL -P cmake/configure-and-build.cmake + run: cmake -DBUILD_ARCHITECTURE=${{ matrix.arch }} -DCOMPILER_ID=${{ matrix.compiler }} -DCONFIGURATION=${{ matrix.config }} -DBUILD_DIRECTORY=build -DBUILD_DOCS_WITH_ALL=ON -P cmake/configure-and-build.cmake - name: Upload executable artifact uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ce465d9c6..fe714ebdb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,7 +23,7 @@ jobs: with: python-version: "3.13" - name: Build CSE - run: cmake -DBUILD_ARCHITECTURE=32 -DCOMPILER_ID=msvc -DCONFIGURATION=Release -DBUILD_DIRECTORY=build -DBUILD_DOCS_WITH_ALL -P cmake/configure-and-build.cmake + run: cmake -DBUILD_ARCHITECTURE=32 -DCOMPILER_ID=msvc -DCONFIGURATION=Release -DBUILD_DIRECTORY=build -DBUILD_DOCS_WITH_ALL=ON -P cmake/configure-and-build.cmake - name: Upload executable to release assets uses: softprops/action-gh-release@v2 with: From 6c6d2bec614b50638960debef596fdb9332f629d Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Thu, 25 Sep 2025 13:14:02 -0600 Subject: [PATCH 107/117] Make distinct document uploads for each runner. --- .github/workflows/build-and-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index e7bda3b04..2cc1aa4c7 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -66,7 +66,7 @@ jobs: - name: Upload executable artifact uses: actions/upload-artifact@v4 with: - name: CSE_${{ matrix.os }}-${{ matrix.os_ver }}-${{ matrix.arch }}bit_${{ matrix.config }} + name: CSE-${{ matrix.os }}-${{ matrix.os_ver }}-${{ matrix.arch }}bit-${{ matrix.config }} path: | build/CSE* build/cse* @@ -86,7 +86,7 @@ jobs: - name: Upload documentation uses: actions/upload-artifact@v4 with: - name: Documentation-${{ matrix.os }}-${{ matrix.os_ver }} + name: Documentation-${{ matrix.os }}-${{ matrix.os_ver }}-${{ matrix.arch }} path: | doc/build - name: Check test failure From 7da379e51f3851d5d525d46a1557a72183e37a89 Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Thu, 25 Sep 2025 15:50:25 -0600 Subject: [PATCH 108/117] Clean up invalid escape character warnings. --- doc/src/docs/input-data/airhandler.md | 217 ++++++++++--------- doc/src/docs/input-data/battery.md | 14 +- doc/src/docs/input-data/boiler.md | 28 +-- doc/src/docs/input-data/chiller.md | 60 ++--- doc/src/docs/input-data/construction.md | 2 +- doc/src/docs/input-data/coolplant.md | 10 +- doc/src/docs/input-data/descond.md | 4 +- doc/src/docs/input-data/dhwdayuse.md | 2 +- doc/src/docs/input-data/dhwheatrec.md | 12 +- doc/src/docs/input-data/dhwloop.md | 14 +- doc/src/docs/input-data/dhwloopbranch.md | 12 +- doc/src/docs/input-data/dhwlooppump.md | 6 +- doc/src/docs/input-data/dhwloopseg.md | 14 +- doc/src/docs/input-data/dhwpump.md | 4 +- doc/src/docs/input-data/dhwsolarcollector.md | 14 +- doc/src/docs/input-data/dhwsolarsys.md | 10 +- doc/src/docs/input-data/dhwsys.md | 94 ++++---- doc/src/docs/input-data/dhwtank.md | 16 +- doc/src/docs/input-data/dhwuse.md | 14 +- doc/src/docs/input-data/doas.md | 56 ++--- doc/src/docs/input-data/door.md | 36 +-- doc/src/docs/input-data/ductseg.md | 24 +- doc/src/docs/input-data/exportcol.md | 4 +- doc/src/docs/input-data/foundation.md | 4 +- doc/src/docs/input-data/gain.md | 18 +- doc/src/docs/input-data/glazetype.md | 28 +-- doc/src/docs/input-data/heatplant.md | 8 +- doc/src/docs/input-data/holiday.md | 12 +- doc/src/docs/input-data/index.md | 4 +- doc/src/docs/input-data/izxfer.md | 62 +++--- doc/src/docs/input-data/layer.md | 4 +- doc/src/docs/input-data/material.md | 14 +- doc/src/docs/input-data/meter.md | 2 +- doc/src/docs/input-data/perimeter.md | 4 +- doc/src/docs/input-data/pvarray.md | 14 +- doc/src/docs/input-data/report.md | 8 +- doc/src/docs/input-data/reportcol.md | 6 +- doc/src/docs/input-data/rsys.md | 46 ++-- doc/src/docs/input-data/sgdist.md | 4 +- doc/src/docs/input-data/shade.md | 26 +-- doc/src/docs/input-data/surface.md | 62 +++--- doc/src/docs/input-data/terminal.md | 52 ++--- doc/src/docs/input-data/top-members.md | 74 ++++--- doc/src/docs/input-data/towerplant.md | 30 +-- doc/src/docs/input-data/window.md | 44 ++-- doc/src/docs/input-data/zone.md | 53 +++-- doc/src/docs/input-structure.md | 6 +- 47 files changed, 642 insertions(+), 610 deletions(-) diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index 915641d6c..3120e7083 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -44,8 +44,7 @@ ON, supply fan runs, at varying volume according to TERMINAL demand (excep The following might be used to run an air handler between 8 AM and 5 PM: - ahSched = select( (\$hour > 8 && \$hour <= 5), ON, - default, OFF ); + ahSched = select( ($hour > 8 && $hour <= 5), ON, default, OFF ); {{ member_table({ @@ -66,7 +65,7 @@ Fan flow rate multiplier for autosized fan(s). The default value (1.1) specifies {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "1.1", "required": "No", "variability": "constant" @@ -79,11 +78,11 @@ Fan flow rate multiplier for autosized fan(s). The default value (1.1) specifies Type: _float or choice_ -Supply temperature setpoint numeric value OR\* choice of control method (WZ, CZ, RA, ZN, or ZN2): +Supply temperature setpoint numeric value OR* choice of control method (WZ, CZ, RA, ZN, or ZN2): {{ csv_table("_float_, A numeric value specifies the supply temperature setpoint. An expression can be used to make dependent on time, weather, etc. -WZ, Warmest Zone: for cooling, sets the supply temperature setpoint each sub??hour so that the control zone (see*ahWzCzns*) requiring the coolest supply temperature can meet its load with its VAV damper 90% of the way from its minimum opening to its maximum, that is, at a flow of: _tuVfMn_ + .9(_tuVfMxC_ - \* tuVfMn\*). +WZ, Warmest Zone: for cooling, sets the supply temperature setpoint each sub??hour so that the control zone (see*ahWzCzns*) requiring the coolest supply temperature can meet its load with its VAV damper 90% of the way from its minimum opening to its maximum, that is, at a flow of: _tuVfMn_ + .9(_tuVfMxC_ - * tuVfMn*). CZ, Coolest Zone: analogous to WZ, but for heating RA, Supply temperature setpoint value is controlled by return air temperature (this cannot be done with a CSE expression without lagging a subhour). See _ahTsRaMn_ and _ahTsRaMx_. ZN, Causes air handler to switch between heating, OFF, and cooling as required by the load of a single zone. When the zone thermostat (modeled through the _tuTC_ and _tuTH_ inputs) calls for neither heating nor cooling, the air handler shuts down, including stopping its fan(s). Changes _ahFanCycles_ default to YES, to simulate a constant volume, fan cycling system. @@ -102,16 +101,16 @@ Giving _ahTsSp_ is disallowed for an air handler with no economizer, no heat coi {{ member_table({ "units": "^o^F", - "legal_range": "_number_, RA\*, WZ, CZ, ZN\*\*, ZN2\*\*,", + "legal_range": "_number_, RA^*^, WZ, CZ, ZN^**^, ZN2^**^,", "default": "0", "required": "Yes, if coil(s) or economizer present", "variability": "hourly" }) }} -\* ahTsRaMn, ahTsRaMx, ahTsMn, and ahTsMx are _required_ input for this choice. +^*^ ahTsRaMn, ahTsRaMx, ahTsMn, and ahTsMx are _required_ input for this choice. -\*\* only a single ZONE may be used with these choices. +^**^ only a single ZONE may be used with these choices. {{ csv_table("**To Model**, **Use**, **Comments** @@ -120,7 +119,7 @@ VAV system that both heats and cools (single duct), Use a conditional expression Dual duct heating cooling system, Use two AIRHANDLERs Single zone VAV system that heats or cools per zone thermostat, _ahTsSp_ = ZN2, Supply fan runs, at flow _tuVfMn_, even when neither heating nor cooling. Supply temp setpoint determined as for CZ or WZ. Single zone constant volume system that heats or cools per zone thermostat, e.g. PSZ., _ahTsSp_ = _ZN2_; _tuVfMn_ = _tuVfMxH_ = _tuVfMxC_, Supply fan circulates air even if neither heating nor cooling. Supply temp setpoint determined as for CZ or WZ. All _tuVf_'s same forces constant volume. -Single zone constant volume, fan cycling system that heats or cools per zone thermostat, e.g. PTAC, RESYS, or furnace., _ahTsSp_= ZN; _ahTsMx_ = heat supply temp setpoint; _ahTsMn_ = cool supply temp setpoint; _tuVfMn_= 0; tuVfMxH = tuVfMxC normally; _sfanVfDs_ >= max( _tuVfMxH, tuVfMxC)_ to minimize confusion about flow modeled., _AhFanCycles_ defaults to YES. Supply fan off when not heating or cooling. Flow when fan on is _tuVfMxH_ or _tuVfMxC_ as applicable (or _sfanVfDs \* sfanVfMxF_ if smaller).", True) +Single zone constant volume, fan cycling system that heats or cools per zone thermostat, e.g. PTAC, RESYS, or furnace., _ahTsSp_= ZN; _ahTsMx_ = heat supply temp setpoint; _ahTsMn_ = cool supply temp setpoint; _tuVfMn_= 0; tuVfMxH = tuVfMxC normally; _sfanVfDs_ >= max( _tuVfMxH, tuVfMxC)_ to minimize confusion about flow modeled., _AhFanCycles_ defaults to YES. Supply fan off when not heating or cooling. Flow when fan on is _tuVfMxH_ or _tuVfMxC_ as applicable (or _sfanVfDs * sfanVfMxF_ if smaller).", True) }} : Using AIRHANDLER to Model Various Systems @@ -159,7 +158,7 @@ Minimum supply temperature. Also used as cooling supply temperature setpoint val {{ member_table({ "units": "^o^F", - "legal_range": "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", + "legal_range": "_no limit_; typically: 40 ≤ _x_ ≤ 140^o^", "default": "0^o^F", "required": "Only for _ahTsSp_=RA", "variability": "hourly" @@ -171,7 +170,7 @@ Minimum supply temperature. Also used as cooling supply temperature setpoint val {{ member_table({ "units": "^o^F", - "legal_range": "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", + "legal_range": "_no limit_; typically: 40 ≤ _x_ ≤ 140^o^", "default": "999^o^ F", "required": "Only for _asTsSp_=RA; recommend giving for _ahTsSp_=ZN", "variability": "hourly" @@ -221,7 +220,7 @@ Cooling design supply temperature, for sizing coil vs fan. {{ member_table({ "units": "^o^F", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "_ahTsMn_", "required": "No", "variability": "hourly" @@ -283,7 +282,7 @@ If return air moves outside the range _ahTsRaMn_ to _ahTsRaMx_, the supply tempe {{ member_table({ "units": "^o^F", - "legal_range": "_no limit_; typically: 40 $\\le$ _x_ $\\le$ 140^o^", + "legal_range": "_no limit_; typically: 40 ≤ _x_ ≤ 140^o^", "default": "_none_", "required": " Only for _ahTsSp_=RA", "variability": "hourly" @@ -319,7 +318,7 @@ Design or rated (volumetric) air flow at rated pressure. Many fans will actually {{ member_table({ "units": "cfm", - "legal_range": "_AUTOSIZE_ or _x_ $\\ge$ 0", + "legal_range": "_AUTOSIZE_ or _x_ ≥ 0", "default": "_none_", "required": "Yes", "variability": "constant" @@ -330,14 +329,14 @@ Design or rated (volumetric) air flow at rated pressure. Many fans will actually Type: _float_ -Overrun factor: maximum factor by which fan will exceed rated flow (at reduced pressure, not explicitly modeled). CSE delivers flows demanded by terminals until total flow at supply fan reaches sfanVfDs \* sfanVsMxF, then reduces maximum flows to terminals, keeping them in proportion to terminal design flows, to keep total flow at that value. +Overrun factor: maximum factor by which fan will exceed rated flow (at reduced pressure, not explicitly modeled). CSE delivers flows demanded by terminals until total flow at supply fan reaches sfanVfDs * sfanVsMxF, then reduces maximum flows to terminals, keeping them in proportion to terminal design flows, to keep total flow at that value. We recommend giving 1.0 to eliminate overrun in constant volume modeling. {{ member_table({ "units": "", - "legal_range": "_x_ $\\ge$ 1.0", + "legal_range": "_x_ ≥ 1.0", "default": "1.3", "required": "No", "variability": "constant" @@ -353,7 +352,7 @@ Design or rated pressure. The work done by the fan is computed as the product of {{ member_table({ "units": "inches H~2~O", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "3", "required": "No", "variability": "constant" @@ -373,7 +372,7 @@ Fan input power per unit air flow (at design flow and pressure). {{ member_table({ "units": "W/cfm", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "derived from sfanEff and sfanShaftBhp", "required": "If sfanEff and sfanShaftBhp not present", "variability": "constant" @@ -389,7 +388,7 @@ Fan efficiency at design flow and pressure, as a fraction. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "derived from _sfanShaftBhp_ if given, else 0.65", "required": "No", "variability": "constant" @@ -405,7 +404,7 @@ Fan shaft brake horsepower at design flow and pressure. {{ member_table({ "units": "bhp", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "derived from _sfanEff_.", "required": "No", "variability": "constant" @@ -418,11 +417,13 @@ Type: $k_0$, $k_1$, $k_2$, $k_3$, $x_0$ $k_0$ through $k_3$ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow $x_0$. Up to five _floats_ may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: -$$z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3$$ +$$ +z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3 +$$ where: -- $x$ is the relative fan air flow (as fraction of _sfanVfDs_; 0 $\le$ x $\le$ 1); +- $x$ is the relative fan air flow (as fraction of _sfanVfDs_; 0 ≤ x ≤ 1); - $x_0$ is the minimum relative air flow (default 0); - $(x - x_0)|$ is the "positive difference", i.e. $(x - x_0)$ if $x > x_0$; else 0; - $z$ is the relative energy consumption. @@ -448,7 +449,7 @@ Motor/drive efficiency. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "0.9", "required": "No", "variability": "constant" @@ -518,7 +519,7 @@ design or rated (volumetric) air flow. {{ member_table({ "units": "cfm", - "legal_range": "_AUTOSIZE_ or _x_ $\\gt$ 0", + "legal_range": "_AUTOSIZE_ or _x_ > 0", "default": "_sfanVfDs - oaVfDsMn_", "required": "No", "variability": "constant" @@ -534,7 +535,7 @@ factor by which fan will exceed design flow (at reduced pressure). {{ member_table({ "units": "", - "legal_range": "_x_ $\\ge$ 1.0", + "legal_range": "_x_ ≥ 1.0", "default": "1.3", "required": "No", "variability": "constant" @@ -550,7 +551,7 @@ design or rated pressure. {{ member_table({ "units": "inches H~2~O", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "0.75", "required": "No", "variability": "constant" @@ -584,7 +585,7 @@ Fan efficiency at design flow and pressure. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "derived from _rfanShaftBhp_ if given, else 0.65", "required": "No", "variability": "constant" @@ -600,7 +601,7 @@ Fan shaft brake horsepower at design flow and pressure. {{ member_table({ "units": "bhp", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "derived from _rfanEff_", "required": "No", "variability": "constant" @@ -613,11 +614,13 @@ Type: $k_0$, $k_1$, $k_2$, $k_3$, $x_0$ $k_0$ through $k_3$ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow $x_0$. Up to five _floats_ may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: -$$z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3$$ +$$ +z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3 +$$ where: -- $x$ is the relative fan air flow (as fraction of _rfanVfDs_; 0 $\le$ x $\le$ 1); +- $x$ is the relative fan air flow (as fraction of _rfanVfDs_; 0 ≤ x ≤ 1); - $x_0$ is the minimum relative air flow (default 0); - $(x - x_0)|$ is the "positive difference", i.e. $(x - x_0)$ if $x > x_0$; else 0; - $z$ is the relative energy consumption. @@ -643,7 +646,7 @@ Motor/drive efficiency. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "0.9", "required": "No", "variability": "constant" @@ -757,7 +760,7 @@ Total heating (output) capacity. For an ELECTRIC, AHP, GAS, or OIL coil, this ca {{ member_table({ "units": "Btuh", - "legal_range": "_AUTOSIZE_ or _x_ $\\ge$ 0", + "legal_range": "_AUTOSIZE_ or _x_ ≥ 0", "default": "_none_", "required": "Yes, if coil present", "variability": "hourly" @@ -784,7 +787,7 @@ Capacity sizing multiplier for autoSized heating coils. The default value (1.1) Type: _mtrName_ -Name of meter to accumulate energy use by this heat coil. The input energy used by the coil is accumulated in the end use category "Htg"; for a heat pump, the energy used by the supplemental resistance heaters (regular and defrost) is accumulated under the category "hp". Not allowed when\*ahhcType\* is HW, as an HW coil's energy comes from its HEATPLANT, and the HEATPLANT's BOILERs accumulate input energy to meters. +Name of meter to accumulate energy use by this heat coil. The input energy used by the coil is accumulated in the end use category "Htg"; for a heat pump, the energy used by the supplemental resistance heaters (regular and defrost) is accumulated under the category "hp". Not allowed when ahhcType is HW, as an HW coil's energy comes from its HEATPLANT, and the HEATPLANT's BOILERs accumulate input energy to meters. {{ member_table({ @@ -827,7 +830,7 @@ Rated energy input ratio (input energy/output energy) at full power. {{ member_table({ "units": "", - "legal_range": "_x_ $\\ge$ 1", + "legal_range": "_x_ ≥ 1", "default": "_none_", "required": "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", "variability": "hourly" @@ -843,7 +846,7 @@ Rated efficiency (output energy/input energy; 1/ahhcEirR) at full power {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "_none_", "required": "if _ahhcEirR_ not given and _ahhcType_ is GAS or OIL", "variability": "hourly" @@ -862,7 +865,9 @@ The default, from DOE2, is equivalent to: which corresponds to the quadratic polynomial: -$$\text{pyEi}(\text{plrAv}) = 0.01861 + 1.094209 \cdot \textbf{plrAv} - 0.112819 \cdot \textbf{plrAv}^2$$ +$$ +\text{pyEi}(\text{plrAv}) = 0.01861 + 1.094209 \cdot \textbf{plrAv} - 0.112819 \cdot \textbf{plrAv}^2 +$$ Note that the value of this polynomial adjusts the energy input, not the energy input ratio, for part load operation. @@ -904,7 +909,7 @@ The divisor "`/ (10*68*sqrt(200))`" is to make the value 0.1 when tDbO is 0, tha {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "0", "required": "No", "variability": "hourly" @@ -922,7 +927,7 @@ AHRI steady state (continuous operation) rated capacity at 70 degrees F indoor ( {{ member_table({ "units": "Btuh", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "_none_", "required": "Yes, for AHP coil", "variability": "constant" @@ -938,7 +943,7 @@ The ratio of AHRI steady state (continuous operation) rated capacities at 17 and {{ member_table({ "units": "", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "0.6184", "required": "No", "variability": "constant" @@ -949,7 +954,7 @@ The ratio of AHRI steady state (continuous operation) rated capacities at 17 and Type: _float_ -Ratio of ahccCapTRat to ahhcCapTRat. This ratio is used for defaulting of AUTOSIZEd heat pump heating and cooling capacities such that they have consistent values as is required given that a heat pump is a single device. If not given, ahpCapRat9547 is determined during calculations using the relationship ahccCapTRat = 0.98 \* ahhcCapTRat + 180 (derived via correlation of capacities of a set of real units). +Ratio of ahccCapTRat to ahhcCapTRat. This ratio is used for defaulting of AUTOSIZEd heat pump heating and cooling capacities such that they have consistent values as is required given that a heat pump is a single device. If not given, ahpCapRat9547 is determined during calculations using the relationship ahccCapTRat = 0.98 * ahhcCapTRat + 180 (derived via correlation of capacities of a set of real units). {{ member_table({ @@ -970,7 +975,7 @@ AHRI steady state (continuous operation) rated capacity at 35 F outdoor temp, re {{ member_table({ "units": "Btuh", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "from ahpFd35Df", "required": "No", "variability": "constant" @@ -986,7 +991,7 @@ Default frost/defrost degradation factor at 35 F: reduction of output at unchang {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "0.85", "required": "No", "variability": "constant" @@ -1002,7 +1007,7 @@ Capacity correction factor for indoor (return) air temperature, expressed as a f {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "0.004", "required": "No", "variability": "constant" @@ -1018,7 +1023,7 @@ Output capacity of the supplemental reheat coil used when heat pump alone cannot {{ member_table({ "units": "Btu/hr", - "legal_range": "_x_ $\\ge$ 0", + "legal_range": "_x_ ≥ 0", "default": "0", "required": "No", "variability": "constant" @@ -1034,7 +1039,7 @@ Efficiency of the supplemental reheat coil. Use values other than the default fo {{ member_table({ "units": "", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "1.0", "required": "No", "variability": "hourly" @@ -1090,7 +1095,7 @@ An error will occur unless _ahpTFrMn_ < _ahpTFrPk_ < _ahpTFrMx_ and _ahpTF {{ member_table({ "units": "^o^F", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "_ahpTFrMn_: 17, _ahpTFrMx_: 47, _ahpTFrPk_: 42", "required": "No", "variability": "constant" @@ -1119,12 +1124,12 @@ During the fraction of the time spent defrosting, the heat pump's input remains - An additional resistance heater is operated; and its heat output is delivered to load. See _ahpDfrRh_. -The program will issue an error message if _ahpDfrFMx_ $\le$ _ahpDfrFMn_. +The program will issue an error message if _ahpDfrFMx_ ≤ _ahpDfrFMn_. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "_ahpDfrFMn_: .0222, (2 minutes/90 minutes), _ahpDfrFMx_:.0889, (8 minutes / 90 minutes)", "required": "No", "variability": "constant" @@ -1140,8 +1145,8 @@ Cooling capacity (to air handler supply air) during defrosting. Program separate {{ member_table({ "units": "Btuh", - "legal_range": "_x_ $\\neq$ 0", - "default": "2 $\\cdot$ _ahpCap17_", + "legal_range": "_x_ ≠ 0", + "default": "2 * _ahpCap17_", "required": "No", "variability": "constant" }) @@ -1155,7 +1160,7 @@ Type: _float_ Type: _float_ -Heat pump low temperature cutout setpoints. Heat pump is disabled (only the supplemental resistance heater operates) when outdoor temperature falls below _ahpTOff_, and is re-enabled when temperature rises above _ahpTOn_. Different values may be given to simulate thermostat differential. _ahpTOff_ must be $\le$ _ahpTOn_; equal values are accepted. +Heat pump low temperature cutout setpoints. Heat pump is disabled (only the supplemental resistance heater operates) when outdoor temperature falls below _ahpTOff_, and is re-enabled when temperature rises above _ahpTOn_. Different values may be given to simulate thermostat differential. _ahpTOff_ must be ≤ _ahpTOn_; equal values are accepted. {{ member_table({ @@ -1182,7 +1187,7 @@ Steady state (full power, no cycling) coeffient of performance for compressor an {{ member_table({ "units": "kW", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "_none_", "required": "Yes, for AHP coil", "variability": "constant" @@ -1198,7 +1203,7 @@ Indoor (return) air temp power input correction factor: fraction increase in ste {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "0.004", "required": "No", "variability": "constant" @@ -1209,12 +1214,12 @@ Indoor (return) air temp power input correction factor: fraction increase in ste Type: _float_ -AHRI cycling degradation coefficient: ratio of fraction drop in system coefficient of performance (COP) to fraction drop in capacity when cycling, from steady-state values, in AHRI 47 F cycling performance tests. A value of .25 means that if the heat pump is cycled to drop its output to 20% of full capacity (i.e. by the fraction .8), its COP will drop by .8 \* .25 = .2. Here COP includes all energy inputs: compressor, crankcase heater, defrost operation, etc. +AHRI cycling degradation coefficient: ratio of fraction drop in system coefficient of performance (COP) to fraction drop in capacity when cycling, from steady-state values, in AHRI 47 F cycling performance tests. A value of .25 means that if the heat pump is cycled to drop its output to 20% of full capacity (i.e. by the fraction .8), its COP will drop by .8 * .25 = .2. Here COP includes all energy inputs: compressor, crankcase heater, defrost operation, etc. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "0.25", "required": "No", "variability": "constant" @@ -1232,7 +1237,7 @@ Auxiliary energy used by the heating coil. {{ member_table({ "units": "Btu/hr", - "legal_range": "_x_ $\\ge$ 0", + "legal_range": "_x_ ≥ 0", "default": "0", "required": "No", "variability": "hourly" @@ -1309,7 +1314,7 @@ OFF, Cooling coil will not operate no matter how hot the supply air is. To avoid Type: _float_ -Total rated capacity of coil: sum of its "sensible" (heat-removing) and "latent" (moisture removing) capacities. Not used with CHW coils, for which capacity is implicitly specified by water flow (ahccGpmDs*) and transfer unit (*ahccNtuoDs\* and _ahccNtuiDs_) inputs, described below. +Total rated capacity of coil: sum of its "sensible" (heat-removing) and "latent" (moisture removing) capacities. Not used with CHW coils, for which capacity is implicitly specified by water flow (ahccGpmDs*) and transfer unit (ahccNtuoDs and ahccNtuiDs) inputs, described below. For coil specification conditions (a.k.a. rating conditions or design conditions), see _ahccDsTDbEn_, _ahccDsTWbEn_, *ahccDsTDbCnd*and *ahccVfR*below (see index). @@ -1409,7 +1414,7 @@ Minimum (effective surface) temperature of coil (evaporator). Represents refrige Type: _float_ -Exponent in power relationship expressing coil effectiveness as a function of relative air flow. Used as K1 in the relationship ntu = ntuR \* relCfmk1, which says that the "number of transfer units" (on the coil outside or air side) varies with the relative air flow raised to the K1 power. Used with CHW as well as DX coils; for a CHW coil, ntuR in the formula is _ahccNtuoDs_. +Exponent in power relationship expressing coil effectiveness as a function of relative air flow. Used as K1 in the relationship ntu = ntuR * relCfmk1, which says that the "number of transfer units" (on the coil outside or air side) varies with the relative air flow raised to the K1 power. Used with CHW as well as DX coils; for a CHW coil, ntuR in the formula is _ahccNtuoDs_. {{ member_table({ @@ -1430,7 +1435,7 @@ Fraction of air flow which does NOT flow through DX cooling coil, for better hum {{ member_table({ "units": "", - "legal_range": "0 $\\lt$ _x_ $\\le$ 1", + "legal_range": "0 < _x_ ≤ 1", "default": "0", "required": "No", "variability": "constant" @@ -1442,12 +1447,12 @@ The next three members are used in determining the energy input to a DX coil und {{ csv_table("full load, plr (part load ratio) = 1.0 , Full-load power input is power output times _ahhcEirR._ -compressor unloading region, 1.0 > plr $\\ge$ _ahhcMinUnldPlr_ +compressor unloading region, 1.0 > plr ≥ _ahhcMinUnldPlr_ , Power input is the full-load input times the value of the _pydxEirUl_ polynomial (below) for the current plr, i.e. pydxEirUl(plr). -false loading region, _ahccMinUnldPlr_ > plr $\\ge$ _ahccMinFsldPlr_ +false loading region, _ahccMinUnldPlr_ > plr ≥ _ahccMinFsldPlr_ , Power input in this region is constant at the value for the low end of the compressor unloading region, i.e. pydxEirUl(ahccMinUnldPlr). -cycling region, _ahccMinFsldPlr_ > plr $\\ge$ 0 -, In this region the compressor runs at the low end of the false loading region for the necessary fraction of the time, and the power input is the false loading value correspondingly prorated, i.e. pydxEirUl(ahccMinUnldPlr) \* plr / ahccMinFsldPlr.") +cycling region, _ahccMinFsldPlr_ > plr ≥ 0 +, In this region the compressor runs at the low end of the false loading region for the necessary fraction of the time, and the power input is the false loading value correspondingly prorated, i.e. pydxEirUl(ahccMinUnldPlr) * plr / ahccMinFsldPlr.") }} The default values for the following three members are the DOE2 PTAC (Window air conditioner) values. @@ -1477,7 +1482,7 @@ Compressor part load ratio (total current load/current capacity) at/above which {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "1 (no unloading)", "required": "No", "variability": "constant" @@ -1493,7 +1498,7 @@ Type: _float_ {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ _ahccMinUnldPlr_", + "legal_range": "0 ≤ _x_ ≤ _ahccMinUnldPlr_", "default": "_ahccMinUnldPlr_ (no false loading)", "required": "No", "variability": "constant" @@ -1514,13 +1519,17 @@ If the polynomial does not evaluate to 1.0 when its inputs are equal to the rati Some of the polynomials are biquadratic polynomials whose variables are the entering air wetbulb and drybulb temperatures. These are of the form -$$z = a + bx + cx^2 + dy + ey^2 + fxy$$ +$$ +z = a + bx + cx^2 + dy + ey^2 + fxy +$$ where a through f are user-inputtable coefficients, x is the entering wetbulb temperature, y is the entering drybulb temperature, and the polynomial value, z, is a factor by which the coil's capacity, power input, etc. at rated conditions is multiplied to adjust it for the actual entering air temperatures. Other polynomials are cubic polynomials whose variable is the air flow or load as a fraction of full flow or load.. These are of the form -$$z = a + bx + cx^2+ dx^3$$ +$$ +z = a + bx + cx^2+ dx^3 +$$ where a, b, c, and d are user-inputtable coefficients, $x$ is the variable, and the value $z$ is a factor by which the coil's capacity, power input, etc. at rated conditions is multiplied to adjust it for the actual flow or load. @@ -1594,7 +1603,7 @@ Coefficients of biquadratic polynomial function of entering air wetbulb and cond Type: _a, b, c, d_ -Coefficients of cubic polynomial function of part load ratio used to adjust energy input to part load conditions, in the compressor unloading part load region (1 $\ge$ plr $\ge$ _ahccMinUnldPlr_) as described above. See discussion of polynomials in preceding paragraphs. +Coefficients of cubic polynomial function of part load ratio used to adjust energy input to part load conditions, in the compressor unloading part load region (1 ≥ plr ≥ _ahccMinUnldPlr_) as described above. See discussion of polynomials in preceding paragraphs. This polynomial adjusts the full load energy input to part load, not the ratio of input to output, despite the "Eir" in its name. @@ -1635,7 +1644,7 @@ Design (i.e. maximum) water flow through CHW coil. {{ member_table({ "units": "gpm", - "legal_range": "_x_ $\\ge$ 0", + "legal_range": "_x_ ≥ 0", "default": "_none_", "required": "Yes, for CHW coil", "variability": "constant" @@ -1646,12 +1655,12 @@ Design (i.e. maximum) water flow through CHW coil. Type: _float_ -CHW coil outside number of transfer units at design air flow (ahccVfR*, below). See*ahccK1\* above with regard to transfer units at other air flows. +CHW coil outside number of transfer units at design air flow (ahccVfR*, below). See ahccK1 above with regard to transfer units at other air flows. {{ member_table({ "units": "", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "2", "required": "No", "variability": "constant" @@ -1667,7 +1676,7 @@ CHW coil inside number of transfer units at design water flow (ahccGpmDs, above) {{ member_table({ "units": "", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "2", "required": "No", "variability": "constant" @@ -1685,7 +1694,7 @@ Design (rating) entering air dry bulb temperature, used with DX and CHW cooling {{ member_table({ "units": "^o^F", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "80^o^F (AHRI)", "required": "No", "variability": "constant" @@ -1701,7 +1710,7 @@ Design (rating) entering air wet bulb temperature, for CHW coils. {{ member_table({ "units": "^o^F", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "67^o^F (AHRI)", "required": "No", "variability": "constant" @@ -1717,7 +1726,7 @@ Design (rating) condenser temperature (outdoor air temperature) for DX coils. {{ member_table({ "units": "^o^F", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "95^o^F (AHRI)", "required": "No", "variability": "constant" @@ -1733,7 +1742,7 @@ Design (rating) (volumetric) air flow rate for DX or CHW cooling coil. The AHRI {{ member_table({ "units": "cfm", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "DX coil: _ahccVfRperTon_ CHW coil: _sfanVfDs_", "required": "No", "variability": "constant" @@ -1767,7 +1776,7 @@ Auxiliary energy used by the cooling coil. {{ member_table({ "units": "Btu/hr", - "legal_range": "_x_ $\\ge$ 0", + "legal_range": "_x_ ≥ 0", "default": "0", "required": "No", "variability": "hourly" @@ -1802,9 +1811,9 @@ Minimum outside air flow control method choice, VOLUME or FRACTION. Both computa {{ csv_table("VOLUME, Volume (cfm) of outside air is regulated: -, min_oa_flow = oaMnFrac \* oaVfDsMn +, min_oa_flow = oaMnFrac * oaVfDsMn FRACTION, Fraction of outside air in supply air is regulated. The fraction is oaVfDsMn divided by sfanVfDs, the air handler supply fan design flow. The minimum cfm of outside air is thus computed as -, min_oa_flow = oaMnFrac \* curr_flow \* oaVfDsMn / sfanVfDs +, min_oa_flow = oaMnFrac * curr_flow * oaVfDsMn / sfanVfDs , where curr_flow is the current air handler cfm.") }} @@ -1829,7 +1838,7 @@ Design minimum outside air flow. If _oaMnCtrl_ is FRACTION, then this is the min {{ member_table({ "units": "cfm", - "legal_range": "_x_ $\\ge$ 0", + "legal_range": "_x_ ≥ 0", "default": "0.15 times total area of zones served", "required": "No", "variability": "constant" @@ -1845,7 +1854,7 @@ Fraction of minimum outside air to use this hour, normally 1.0. Use a CSE expres {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "1.0", "required": "No", "variability": "hourly" @@ -1865,7 +1874,7 @@ The default assumption is that airhandlers with return or relief fans provide ba {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "no return/relief fan: 0.5 else 0", "required": "No", "variability": "hourly" @@ -1938,7 +1947,7 @@ Outside air damper leakage to mixed air. Puts a minimum on return air flow and t {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "legal_range": "0 ≤ _x_ ≤ 1.0", "default": "0.1", "required": "No", "variability": "constant" @@ -1954,7 +1963,7 @@ Return air damper leakage to mixed air. Puts a minimum on return air flow and th {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "legal_range": "0 ≤ _x_ ≤ 1.0", "default": "0.1", "required": "No", "variability": "constant" @@ -1974,7 +1983,7 @@ Heat exchanger design or rated flow. {{ member_table({ "units": "cfm", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": "_oaVfDsMn_", "required": "No", "variability": "constant" @@ -1990,7 +1999,7 @@ Heat exchanger flow fraction (of design flow) used for second set of effectivene {{ member_table({ "units": "", - "legal_range": "0 $\\lt$ _x_ $\\lt$ 1.0", + "legal_range": "0 < _x_ < 1.0", "default": "0.75", "required": "No", "variability": "constant" @@ -2006,7 +2015,7 @@ Heat exchanger sensible effectiveness in heating mode at the design flow rate. S {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "legal_range": "0 ≤ _x_ ≤ 1.0", "required": "when modeling heat recovery", "variability": "constant" }) @@ -2021,7 +2030,7 @@ Heat exchanger sensible effectiveness in heating mode at the second flow rate (* {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "legal_range": "0 ≤ _x_ ≤ 1.0", "default": "0", "required": "No", "variability": "constant" @@ -2037,7 +2046,7 @@ Heat exchanger latent effectiveness in heating mode at the design flow rate. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "legal_range": "0 ≤ _x_ ≤ 1.0", "default": "0", "required": "No", "variability": "constant" @@ -2053,7 +2062,7 @@ Heat exchanger latent effectiveness in heating mode at the second flow rate (**o {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "legal_range": "0 ≤ _x_ ≤ 1.0", "default": "0", "required": "No", "variability": "constant" @@ -2069,7 +2078,7 @@ Heat exchanger sensible effectiveness in cooling mode at the design flow rate. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "legal_range": "0 ≤ _x_ ≤ 1.0", "default": "0", "required": "No", "variability": "constant" @@ -2085,7 +2094,7 @@ Heat exchanger sensible effectiveness in cooling mode at the second flow rate (* {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "legal_range": "0 ≤ _x_ ≤ 1.0", "default": "0", "required": "No", "variability": "constant" @@ -2101,7 +2110,7 @@ Heat exchanger latent effectiveness in cooling mode at the design flow rate. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "legal_range": "0 ≤ _x_ ≤ 1.0", "default": "0", "required": "No", "variability": "constant" @@ -2117,7 +2126,7 @@ Heat exchanger latent effectiveness in cooling mode at the second flow rate (**o {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1.0", + "legal_range": "0 ≤ _x_ ≤ 1.0", "default": "0", "required": "No", "variability": "constant" @@ -2149,7 +2158,7 @@ Auxiliary power required to operate the heat recovery device (e.g., wheel motor, {{ member_table({ "units": "W", - "legal_range": "_x_ $\\ge$ 0", + "legal_range": "_x_ ≥ 0", "default": "0", "required": "No", "variability": "subhourly" @@ -2187,7 +2196,7 @@ Supply duct leakage to outdoors, expressed as a fraction of supply fan design fl {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "0.01", "required": "No", "variability": "constant" @@ -2203,14 +2212,14 @@ Return duct leakage FROM outdoors, expressed as a fraction of _sfanVfDs_. Use 0 {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "0.01", "required": "No", "variability": "constant" }) }} -_AhSOLoss_ and _ahROLoss_ represent conductive losses from the common supply and return ducts to the outdoors. For an individual zone's conductive duct loss, see TERMINAL member _tuSRLoss_. Losses here are expressed as a fraction of the temperature difference which is lost. For example, if the supply air temperature is 120, the outdoor temperature is 60, and the pertinent loss is .1, the effect of the loss as modeled will be to reduce the supply air temperature by 6 degrees ( .1 \* (120 - 60) ) to 114 degrees. CSE currently models these losses a constant _TEMPERATURE LOSSes_ regardless of cfm. +_AhSOLoss_ and _ahROLoss_ represent conductive losses from the common supply and return ducts to the outdoors. For an individual zone's conductive duct loss, see TERMINAL member _tuSRLoss_. Losses here are expressed as a fraction of the temperature difference which is lost. For example, if the supply air temperature is 120, the outdoor temperature is 60, and the pertinent loss is .1, the effect of the loss as modeled will be to reduce the supply air temperature by 6 degrees ( .1 * (120 - 60) ) to 114 degrees. CSE currently models these losses a constant _TEMPERATURE LOSSes_ regardless of cfm. ### ahSOLoss @@ -2221,7 +2230,7 @@ Supply duct loss/gain to the outdoors. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "0.1", "required": "No", "variability": "constant" @@ -2237,7 +2246,7 @@ Return duct heat loss/gain to the outdoors. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ _x_ $\\le$ 1", + "legal_range": "0 ≤ _x_ ≤ 1", "default": "0.1", "required": "No", "variability": "constant" @@ -2288,7 +2297,7 @@ Crankcase resistance heater input power; maximum power if _cchCM_ is PTC or PTC_ {{ member_table({ "units": "kW", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": ".4 kW", "required": "No", "variability": "constant" @@ -2304,7 +2313,7 @@ Crankcase heater minimum input power if _cchCM_ is PTC or PTC_CLO, disallowed fo {{ member_table({ "units": "kW", - "legal_range": "_x_ $\\gt$ 0", + "legal_range": "_x_ > 0", "default": ".04 kW", "required": "No", "variability": "constant" @@ -2319,7 +2328,7 @@ Type: _float_ Type: _float_ -For _cchCM_ = PTC or PTC_CLO, the low temperature (max power) and high temperature (min power) setpoints. In subhours when the compressor does not run, crankcase heater input is _cchPMx_ when oil temperature is at or below _cchTMx_, _cchPMn_ when oil temp is at or above _cchTMn_, and varies linearly (proportionally) in between. _cchTMn_ must be $\ge$ _cchTMx_. See _cchDT_ (next). +For _cchCM_ = PTC or PTC_CLO, the low temperature (max power) and high temperature (min power) setpoints. In subhours when the compressor does not run, crankcase heater input is _cchPMx_ when oil temperature is at or below _cchTMx_, _cchPMn_ when oil temp is at or above _cchTMn_, and varies linearly (proportionally) in between. _cchTMn_ must be ≥ _cchTMx_. See _cchDT_ (next). (Note that actual thermostat setpoints probably cannot be used for _cchTMx_ and _cchTMn_ inputs, because the model assumes the difference between the oil temperature and the outdoor temperature is constant (_cchDT_) regardless of the heater power. @@ -2362,7 +2371,7 @@ For _cchCM_ = TSTAT, in subhours when compressor does not run, the crankcase hea {{ member_table({ "units": "^o^F", - "legal_range": "_cchTOff_ $\\ge$ _cchTOn_", + "legal_range": "_cchTOff_ ≥ _cchTOn_", "default": "_cchTOn_: 72^o^F; _chcTOff_: _chcTOn_", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/battery.md b/doc/src/docs/input-data/battery.md index afe7d819d..ccf8df6d1 100644 --- a/doc/src/docs/input-data/battery.md +++ b/doc/src/docs/input-data/battery.md @@ -45,7 +45,7 @@ The charging efficiency of storing electricity into the BATTERY system. A value {{ member_table({ "units": "", - "legal_range": "0 < x $\\le$ 1", + "legal_range": "0 < x ≤ 1", "default": "0.975", "required": "No", "variability": "hourly" @@ -61,7 +61,7 @@ The discharge efficiency for when the BATTERY system is discharging power. A val {{ member_table({ "units": "", - "legal_range": "0 < x $\\le$ 1", + "legal_range": "0 < x ≤ 1", "default": "0.975", "required": "No", "variability": "hourly" @@ -77,7 +77,7 @@ This is the maximum amount of energy that can be stored in the BATTERY system in {{ member_table({ "units": "kWh", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "16", "required": "No", "variability": "constant" @@ -93,7 +93,7 @@ The initial state of energy of the BATTERY system as a fraction of the total cap {{ member_table({ "units": "", - "legal_range": "0 $\\le$ x $\\le$ 0", + "legal_range": "0 ≤ x ≤ 0", "default": "1.0", "required": "No", "variability": "constant" @@ -109,7 +109,7 @@ The number of cycles on the battery at the beginning of the run. {{ member_table({ "units": "number of cycles", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "0", "required": "No", "variability": "runly" @@ -125,7 +125,7 @@ The maximum rate at which the BATTERY can be charged in kilowatts (i.e., energy {{ member_table({ "units": "kW", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "4", "required": "No", "variability": "hourly" @@ -141,7 +141,7 @@ The maximum rate at which the BATTERY can be discharged in kilowatts (i.e., ener {{ member_table({ "units": "kW", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "4", "required": "No", "variability": "hourly" diff --git a/doc/src/docs/input-data/boiler.md b/doc/src/docs/input-data/boiler.md index fa8487330..1f4b6607b 100644 --- a/doc/src/docs/input-data/boiler.md +++ b/doc/src/docs/input-data/boiler.md @@ -27,7 +27,7 @@ Heat output capacity of this BOILER. {{ member_table({ "units": "Btuh", - "legal_range": "*x* $\\gt$ 0", + "legal_range": "*x* > 0", "default": "*none*", "required": "Yes", "variability": "constant" @@ -43,7 +43,7 @@ Boiler efficiency at steady-state full load, as a fraction. 1.0 may be specified {{ member_table({ "units": "", - "legal_range": "0 $\\lt$ *x* $\\le$ 1.0", + "legal_range": "0 < *x* ≤ 1.0", "default": "0.8", "required": "No", "variability": "constant" @@ -59,7 +59,7 @@ Boiler Energy Input Ratio: alternate method of specifying efficiency. {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 1.0", + "legal_range": "*x* ≥ 1.0", "default": "1/*blrEffR*", "required": "No", "variability": "constant" @@ -107,7 +107,7 @@ Boiler pump flow in gallons per minute: amount of water pumped from this boiler {{ member_table({ "units": "gpm", - "legal_range": "*x* $\\gt$ 0", + "legal_range": "*x* > 0", "default": "blrCap/10000", "required": "No", "variability": "constant" @@ -123,14 +123,14 @@ Boiler pump head loss (pressure). 0 may be specified to eliminate pump heat and {{ member_table({ "units": "ft H2O", - "legal_range": "*x* $\\ge$ 0", - "default": "114.45\*", + "legal_range": "*x* ≥ 0", + "default": "114.45^*^", "required": "No", "variability": "constant" }) }} -\* may be temporary value for 10-31-92 version; prior value of 35 may be restored. +^*^ may be temporary value for 10-31-92 version; prior value of 35 may be restored. ### blrpMotEff @@ -141,7 +141,7 @@ Boiler pump motor efficiency. {{ member_table({ "units": "", - "legal_range": "0 $\\lt$ *x* $\\le$ 1.0", + "legal_range": "0 < *x* ≤ 1.0", "default": ".88", "required": "No", "variability": "constant" @@ -157,7 +157,7 @@ Boiler pump hydraulic efficiency {{ member_table({ "units": "", - "legal_range": "0 $\\lt$ *x* $\\le$ 1.0", + "legal_range": "0 < *x* ≤ 1.0", "default": ".70", "required": "No", "variability": "constant" @@ -192,7 +192,7 @@ blrAuxOnAtAll=*float*, Auxiliary power used in full value if boiler is on {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "hourly" @@ -210,7 +210,7 @@ Additional input energy used in proportion to part load ratio when coil on, as f {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "hourly" @@ -242,7 +242,7 @@ Additional input energy when off for part or all of subhour. {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "hourly" @@ -274,7 +274,7 @@ Additional input energy when off for an entire subhour. {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "hourly" @@ -306,7 +306,7 @@ Additional input energy used in coil on for any part of subhour, for unforeseen {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "hourly" diff --git a/doc/src/docs/input-data/chiller.md b/doc/src/docs/input-data/chiller.md index 13cbbe220..bfd0c0361 100644 --- a/doc/src/docs/input-data/chiller.md +++ b/doc/src/docs/input-data/chiller.md @@ -29,7 +29,7 @@ Chiller design capacity, that is, the capacity at *chTsDs* and *chTcndDs* (next) {{ member_table({ "units": "Btuh", - "legal_range": "*x* $\\neq$ 0", + "legal_range": "*x* ≠ 0", "default": "*none*", "required": "Yes", "variability": "constant" @@ -45,7 +45,7 @@ Design supply temperature: temperature of primary water leaving chiller at which {{ member_table({ "units": "^o^F", - "legal_range": "*x* $\\gt$ 0", + "legal_range": "*x* > 0", "default": "44", "required": "No", "variability": "constant" @@ -61,7 +61,7 @@ Design condenser temperature: temperature of secondary water entering chiller co {{ member_table({ "units": "^o^F", - "legal_range": "*x* $\\gt$ 0", + "legal_range": "*x* > 0", "default": "85", "required": "No", "variability": "constant" @@ -74,7 +74,9 @@ Type: *a, b, c, d, e, f* Coefficients of bi-quadratic polynomial function of supply (ts) and condenser (tcnd) temperatures that specifies how capacity varies with these temperatures. This polynomial is of the form -$$a + b \cdot ts + c \cdot ts^2 + d \cdot tcnd + e \cdot tcnd^2 + f \cdot ts \cdot tcnd$$ +$$ +a + b \cdot ts + c \cdot ts^2 + d \cdot tcnd + e \cdot tcnd^2 + f \cdot ts \cdot tcnd +$$ Up to six *float* values may be entered, separated by commas; CSE will use zero for omitted trailing values. If the polynomial does not evaluate to 1.0 when ts is chTsDs and tcnd is chTcndDs, a warning message will be issued and the coefficients will be adjusted (normalized) to make the value 1.0. @@ -99,7 +101,7 @@ Chiller full-load COP (Coefficient Of Performance) at *chTsDs*and *chTcndDs*. Th {{ member_table({ "units": "", - "legal_range": "*x* $\\gt$ 0", + "legal_range": "*x* > 0", "default": "4.2", "required": "No", "variability": "constant" @@ -115,7 +117,7 @@ Alternate input for COP: Full-load Energy Input Ratio (electrical input energy d {{ member_table({ "units": "", - "legal_range": "*x* $\\gt$ 0", + "legal_range": "*x* > 0", "default": "*chCop* is defaulted", "required": "No", "variability": "constant" @@ -128,7 +130,9 @@ Type: *a, b, c, d, e, f* Coefficients of bi-quadratic polynomial function of supply (ts) and condenser (tcnd) temperatures that specifies how energy input varies with these temperatures. This polynomial is of the form -$$a + b \cdot ts + c \cdot ts^2 + d \cdot tcnd + e \cdot tcnd^2 + f \cdot ts \cdot tcnd$$ +$$ +a + b \cdot ts + c \cdot ts^2 + d \cdot tcnd + e \cdot tcnd^2 + f \cdot ts \cdot tcnd +$$ Up to six *float* values may be entered, separated by commas; CSE will use zero for omitted trailing values. If the polynomial does not evaluate to 1.0 when ts is chTsDs and tcnd is chTcndDs, a warning message will be issued and the coefficients will be adjusted (normalized) to make the value 1.0. @@ -147,11 +151,11 @@ The next three inputs permit specification of the CHILLER's part load energy inp {{ csv_table("full, loadplr (part load ratio) = 1.0 , Power input is full-load input, as described above. -compressor unloading region, 1.0 > plr $\\ge$ *chMinUnldPlr* +compressor unloading region, 1.0 > plr ≥ *chMinUnldPlr* , Power input is the full-load input times the value of the *chPyEirUl* polynomial for the current plr, that is, *chPyEirUl*(plr). false loading region, *chMinUnldPlr* > plr > *chMinFsldPlr* , Power input in this region is constant at the value for the low end of the compressor unloading region, i.e. *chPyEirUl*(*chMinUnldPlr*). -cycling region, *chMinFsldPlr* > plr $\\ge$ 0 +cycling region, *chMinFsldPlr* > plr ≥ 0 , In this region the chiller runs at the low end of the false loading region for the necessary fraction of the time, and the power input is the false loading value correspondingly prorated, i.e. *chPyEirUl*(*chMinUnldPlr*) plr / *chMinFsldPlr*.") }} @@ -163,7 +167,9 @@ Type: *a, b, c, d* Coefficients of cubic polynomial function of part load ratio (plr) that specifies how energy input varies with plr in the compressor unloading region (see above). This polynomial is of the form -$$a + b \cdot plr + c \cdot plr^2 + d \cdot plr^3$$ +$$ +a + b \cdot plr + c \cdot plr^2 + d \cdot plr^3 +$$ Up to four *float* values may be entered, separated by commas; CSE will use zero for omitted trailing values. If the polynomial does not evaluate to 1.0 when plr is 1.0, a warning message will be issued and the coefficients will be adjusted (normalized) to make the value 1.0. @@ -186,7 +192,7 @@ Minimum compressor unloading part load ratio (plr); maximum false loading plr. S {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.1", "required": "No", "variability": "constant" @@ -202,7 +208,7 @@ Minimum compressor false loading part load ratio (plr); maximum cycling plr. See {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ *chMinFsldPlr*", + "legal_range": "0 ≤ *x* ≤ *chMinFsldPlr*", "default": "0.1", "required": "No", "variability": "constant" @@ -218,7 +224,7 @@ Fraction of CHILLER compressor motor input power which goes to the condenser. Fo {{ member_table({ "units": "", - "legal_range": "0 < *x* $\\le$ 1", + "legal_range": "0 < *x* ≤ 1", "default": "1.0", "required": "No", "variability": "constant" @@ -252,7 +258,7 @@ Chiller primary pump flow in gallons per minute: amount of water pumped from thi {{ member_table({ "units": "gpm", - "legal_range": "*x* $\\gt$ 0", + "legal_range": "*x* > 0", "default": "*chCapDs* / 5000", "required": "No", "variability": "constant" @@ -268,14 +274,14 @@ Chiller primary pump head loss (pressure). 0 may be specified to eliminate pump {{ member_table({ "units": "ft H2O", - "legal_range": "*x* $\\ge$ 0", - "default": "57.22\*", + "legal_range": "*x* ≥ 0", + "default": "57.22^*^", "required": "No", "variability": "constant" }) }} -\* May be temporary default for 10-31-92 version; prior value (65) may be restored. +^*^May be temporary default for 10-31-92 version; prior value (65) may be restored. ### chppMotEff @@ -286,7 +292,7 @@ Chiller primary pump motor efficiency. {{ member_table({ "units": "", - "legal_range": "0 < *x* $\\le$ 1.0", + "legal_range": "0 < *x* ≤ 1.0", "default": ".88", "required": "No", "variability": "constant" @@ -302,7 +308,7 @@ Chiller primary pump hydraulic efficiency {{ member_table({ "units": "", - "legal_range": "0 < *x* $\\le$ 1.0", + "legal_range": "0 < *x* ≤ 1.0", "default": "0.7", "required": "No", "variability": "constant" @@ -318,7 +324,7 @@ Chiller primary pump maximum overrun: factor by which flow demanded by coils can {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 1.0", + "legal_range": "*x* ≥ 1.0", "default": "1.3", "required": "No", "variability": "constant" @@ -352,7 +358,7 @@ Chiller condenser pump flow in gallons per minute: amount of water pumped from t {{ member_table({ "units": "gpm", - "legal_range": "*x* $\\gt$ 0", + "legal_range": "*x* > 0", "default": "*chCapDs* / 4000", "required": "No", "variability": "constant" @@ -368,14 +374,14 @@ Chiller condenser pump head loss (pressure). 0 may be specified to eliminate pum {{ member_table({ "units": "ft H2O", - "legal_range": "*x* $\\ge$ 0", - "default": "45.78\*", + "legal_range": "*x* ≥ 0", + "default": "45.78^*^", "required": "No", "variability": "constant" }) }} -\* May be temporary default for 10-31-92 version; prior value (45) may be restored. +^*^May be temporary default for 10-31-92 version; prior value (45) may be restored. ### chcpMotEff @@ -386,7 +392,7 @@ Chiller condenser pump motor efficiency. {{ member_table({ "units": "", - "legal_range": "0 < *x* $\\le$ 1.0", + "legal_range": "0 < *x* ≤ 1.0", "default": ".88", "required": "No", "variability": "constant" @@ -402,7 +408,7 @@ Chiller condenser pump hydraulic efficiency {{ member_table({ "units": "", - "legal_range": "0 < *x* $\\le$ 1.0", + "legal_range": "0 < *x* ≤ 1.0", "default": "0.7", "required": "No", "variability": "constant" @@ -454,7 +460,7 @@ Auxiliary power used in full value if chiller is on for any fraction of subhour. {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/construction.md b/doc/src/docs/input-data/construction.md index ae20c3d93..c9b8ddfb7 100644 --- a/doc/src/docs/input-data/construction.md +++ b/doc/src/docs/input-data/construction.md @@ -25,7 +25,7 @@ U-value for the construction (NOT including surface (air film) conductances; see {{ member_table({ "units": "Btuh/ft^2^-^o^F", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "calculated from LAYERs", "required": "if omitted, LAYERs must follow", "variability": "constant" diff --git a/doc/src/docs/input-data/coolplant.md b/doc/src/docs/input-data/coolplant.md index 4bc865ceb..ef90641f9 100644 --- a/doc/src/docs/input-data/coolplant.md +++ b/doc/src/docs/input-data/coolplant.md @@ -55,7 +55,7 @@ Coolplant primary loop supply temperature setpoint: setpoint temperature for chi {{ member_table({ "units": "^o^F", - "legal_range": "*x* $\\gt$ 0", + "legal_range": "*x* > 0", "default": "44", "required": "No", "variability": "hourly" @@ -71,7 +71,7 @@ Coolplant pipe loss: heat assumed gained from primary loop piping connecting chi {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": ".01", "required": "No", "variability": "constant" @@ -101,16 +101,16 @@ Type: chillerName list, ALL_BUT and chillerName list, or ALL The commands *cpStage1* through *cpStage7* allow specification of up to seven *STAGES* in which chillers are activated as the load increases. CSE will use the first stage that can meet the load; if no stage will meet the load (output the heat requested by the coils at *cpTsSp*), the last COOLPLANT stage is used. -Each stage may be specified with a list of up to seven names of CHILLERs in the COOLPLANT, or with the word ALL, meaning all of the COOLPLANT's CHILLERs, or with the word ALL\_BUT and a list of up to six names of CHILLERs. Each stage should be more powerful than the preceding one. If you have less than seven stages, you may skip some of the commands *cpStage1* through *cpStage7* -- the used stage numbers need not be contiguous. +Each stage may be specified with a list of up to seven names of CHILLERs in the COOLPLANT, or with the word ALL, meaning all of the COOLPLANT's CHILLERs, or with the word ALL_BUT and a list of up to six names of CHILLERs. Each stage should be more powerful than the preceding one. If you have less than seven stages, you may skip some of the commands *cpStage1* through *cpStage7* -- the used stage numbers need not be contiguous. If none of *cpStage1* through *cpStage7* are given, CSE supplies a single default stage containing all chillers. -A comma must be entered between chiller names and after the word ALL\_BUT. +A comma must be entered between chiller names and after the word ALL_BUT. {{ member_table({ "units": "", - "legal_range": "1 to 7 names;
ALL\_BUT and 1 to 6 names;
ALL", + "legal_range": "1 to 7 names;
ALL_BUT and 1 to 6 names;
ALL", "default": "*cpStage1* = ALL", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/descond.md b/doc/src/docs/input-data/descond.md index c304e7ec4..e15d27ee3 100644 --- a/doc/src/docs/input-data/descond.md +++ b/doc/src/docs/input-data/descond.md @@ -106,7 +106,7 @@ Wind speed for design conditions. {{ member_table({ "units": "mph", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "constant" @@ -147,7 +147,7 @@ Solar noon direct beam and diffuse horizontal irradiance. Cannot be given if dcT {{ member_table({ "units": "Btuh/ft^2^", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0 irradiance", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/dhwdayuse.md b/doc/src/docs/input-data/dhwdayuse.md index a2f9f1cdb..1094fce1f 100644 --- a/doc/src/docs/input-data/dhwdayuse.md +++ b/doc/src/docs/input-data/dhwdayuse.md @@ -71,7 +71,7 @@ Scale factor applied to all draws in this DHWDAYUSE. {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "1", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/dhwheatrec.md b/doc/src/docs/input-data/dhwheatrec.md index f2e1cbad7..6b490d981 100644 --- a/doc/src/docs/input-data/dhwheatrec.md +++ b/doc/src/docs/input-data/dhwheatrec.md @@ -25,7 +25,7 @@ Number of identical heat recovery devices of this type. Any value >1 is equivale {{ member_table({ "units": "", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "1", "required": "No", "variability": "constant" @@ -58,7 +58,7 @@ Type: integer {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "1", "required": "No", "variability": "constant" @@ -74,7 +74,7 @@ Type: integer {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "1", "required": "No", "variability": "constant" @@ -122,7 +122,7 @@ Specifies the heat recovery effectiveness, generally determined using CSA B55.2 {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "*none*", "required": "Yes", "variability": "hourly" @@ -138,7 +138,7 @@ Temperature drop between the fixture drain and DHWHEATREC drain-side inlet. The {{ member_table({ "units": "^o^F", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "4.6 ^o^F", "required": "No", "variability": "hourly" @@ -154,7 +154,7 @@ Drain-side inlet water temperature during warmup. During the warmup portion of {{ member_table({ "units": "^o^F", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "65 ^o^F", "required": "No", "variability": "hourly" diff --git a/doc/src/docs/input-data/dhwloop.md b/doc/src/docs/input-data/dhwloop.md index 54343b994..2d59de624 100644 --- a/doc/src/docs/input-data/dhwloop.md +++ b/doc/src/docs/input-data/dhwloop.md @@ -25,7 +25,7 @@ Number of identical loops of this type. Any value $>1$ is equivalent to repeated {{ member_table({ "units": "", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "1", "required": "No", "variability": "constant" @@ -41,7 +41,7 @@ Loop flow rate (when operating). {{ member_table({ "units": "gpm", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "6", "required": "No", "variability": "hourly" @@ -57,7 +57,7 @@ Inlet temperature of first DHWLOOPSEG. {{ member_table({ "units": "^o^F", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "DHWSYS wsTUse", "required": "No", "variability": "hourly" @@ -73,7 +73,7 @@ Fraction of hour that loop circulation operates. {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "1", "required": "No", "variability": "hourly" @@ -89,7 +89,7 @@ DHWLOOPSEG pipe heat loss adjustment factor. DHWLOOPSEG UA is derived (from wgS {{ member_table({ "units": "", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "1", "required": "No", "variability": "constant" @@ -105,7 +105,7 @@ Specifies electrical power available to make up losses from DHWLOOPSEGs (loss fr {{ member_table({ "units": "W", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "hourly" @@ -121,7 +121,7 @@ Specifies the efficiency of loss makeup heating if any. No effect when wlLossMa {{ member_table({ "units": "", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "1", "required": "No", "variability": "hourly" diff --git a/doc/src/docs/input-data/dhwloopbranch.md b/doc/src/docs/input-data/dhwloopbranch.md index b6d03f19a..ea64c26de 100644 --- a/doc/src/docs/input-data/dhwloopbranch.md +++ b/doc/src/docs/input-data/dhwloopbranch.md @@ -25,7 +25,7 @@ Specifies the number of identical DHWLOOPBRANCHs. Note may be non-integer. {{ member_table({ "units": "", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "1", "required": "No", "variability": "constant" @@ -41,7 +41,7 @@ Length of branch. {{ member_table({ "units": "ft", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "constant" @@ -89,7 +89,7 @@ Pipe insulation thickness {{ member_table({ "units": "in", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "1", "required": "No", "variability": "constant" @@ -178,7 +178,7 @@ Adjustment factor applied to branch UA. UA is derived (from wbSize, wbLength, w {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "1", "required": "No", "variability": "constant" @@ -210,7 +210,7 @@ Branch flow rate assumed during draw. {{ member_table({ "units": "gpm", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "2", "required": "No", "variability": "hourly" @@ -226,7 +226,7 @@ Number of times during the hour when the branch volume is discarded. {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "hourly" diff --git a/doc/src/docs/input-data/dhwlooppump.md b/doc/src/docs/input-data/dhwlooppump.md index c313ea862..1252cb533 100644 --- a/doc/src/docs/input-data/dhwlooppump.md +++ b/doc/src/docs/input-data/dhwlooppump.md @@ -25,7 +25,7 @@ Number of identical pumps of this type. Any value $>1$ is equivalent to repeated {{ member_table({ "units": "", - "legal_range": "x $>$ 0 ", + "legal_range": "x > 0 ", "default": "1", "required": "No", "variability": "constant" @@ -41,7 +41,7 @@ Pump power. {{ member_table({ "units": "W", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "0", "required": "No", "variability": "hourly" @@ -57,7 +57,7 @@ Fraction of pump power that heats circulating liquid. The remainder is discarde {{ member_table({ "units": "", - "legal_range": "0 $\\le$ x $\\le$ 1", + "legal_range": "0 ≤ x ≤ 1", "default": "1", "required": "No", "variability": "hourly" diff --git a/doc/src/docs/input-data/dhwloopseg.md b/doc/src/docs/input-data/dhwloopseg.md index b868eddc8..0cb3469cf 100644 --- a/doc/src/docs/input-data/dhwloopseg.md +++ b/doc/src/docs/input-data/dhwloopseg.md @@ -46,7 +46,7 @@ Length of segment. {{ member_table({ "units": "ft", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "0", "required": "No", "variability": "constant" @@ -62,7 +62,7 @@ Nominal size of pipe. CSE assumes the pipe outside diameter = size + 0.125 in. {{ member_table({ "units": "in", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "1", "required": "Yes", "variability": "constant" @@ -78,7 +78,7 @@ Pipe insulation conductivity {{ member_table({ "units": "Btuh-ft/ft^2^-^o^F", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "0.02167", "required": "No", "variability": "constant" @@ -94,7 +94,7 @@ Pipe insulation thickness {{ member_table({ "units": "in", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "1", "required": "No", "variability": "constant" @@ -110,7 +110,7 @@ Combined radiant/convective exterior surface conductance between insulation (or {{ member_table({ "units": "Btuh/ft^2^-^o^F", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "1.5", "required": "No", "variability": "hourly" @@ -126,7 +126,7 @@ Surrounding equivalent temperature. {{ member_table({ "units": "^o^F", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "70", "required": "No", "variability": "hourly" @@ -142,7 +142,7 @@ Fraction of hour when no draw occurs. {{ member_table({ "units": "^o^F", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "70", "required": "No", "variability": "hourly" diff --git a/doc/src/docs/input-data/dhwpump.md b/doc/src/docs/input-data/dhwpump.md index d43063a7a..d85b54ca4 100644 --- a/doc/src/docs/input-data/dhwpump.md +++ b/doc/src/docs/input-data/dhwpump.md @@ -25,7 +25,7 @@ Number of identical pumps of this type. Any value $>1$ is equivalent to repeated {{ member_table({ "units": "", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "1", "required": "No", "variability": "constant" @@ -41,7 +41,7 @@ Pump power. {{ member_table({ "units": "W", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "0", "required": "No", "variability": "hourly" diff --git a/doc/src/docs/input-data/dhwsolarcollector.md b/doc/src/docs/input-data/dhwsolarcollector.md index 61830b879..7c19b22ea 100644 --- a/doc/src/docs/input-data/dhwsolarcollector.md +++ b/doc/src/docs/input-data/dhwsolarcollector.md @@ -13,7 +13,7 @@ Collector area. {{ member_table({ "units": "ft^2", - "legal_range": "$>$ 0", + "legal_range": "> 0", "default": "0", "required": "Yes", "variability": "constant" @@ -123,7 +123,7 @@ Incident angle modifier at 60 degree, from SRCC rating. {{ member_table({ "units": "", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.72", "required": "No", "variability": "constant" @@ -155,7 +155,7 @@ Collector piping length. {{ member_table({ "units": "ft", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "Hourly and at the end of interval" @@ -187,7 +187,7 @@ Collector piping insulation thickness. {{ member_table({ "units": "", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "1.0", "required": "No", "variability": "Hourly and at the end of interval" @@ -219,7 +219,7 @@ Collector piping surround temperature. {{ member_table({ "units": "^o^F", - "legal_range": "x $\\geq$ 32", + "legal_range": "x ≥ 32", "default": "70.0", "required": "No", "variability": "hourly" @@ -233,7 +233,7 @@ Type: float {{ member_table({ "units": "Btu/h", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "from *scPumpflow*", "required": "No", "variability": "constant" @@ -249,7 +249,7 @@ Fraction of scPumpPwr added to liquid stream, the remainder is discarded. {{ member_table({ "units": "", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "1.0", "required": "No", "variability": "Every run" diff --git a/doc/src/docs/input-data/dhwsolarsys.md b/doc/src/docs/input-data/dhwsolarsys.md index 0aaed127a..9248907d8 100644 --- a/doc/src/docs/input-data/dhwsolarsys.md +++ b/doc/src/docs/input-data/dhwsolarsys.md @@ -35,7 +35,7 @@ Specific heat for the collector fluid. {{ member_table({ "units": "Btu/lbm-^o^F", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "0.9", "required": "No", "variability": "constant" @@ -51,7 +51,7 @@ Density for the collector fluid. {{ member_table({ "units": "lb/ft^3^", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "64.0", "required": "No", "variability": "constant" @@ -69,7 +69,7 @@ Type: float {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "0", "required": "No", "variability": "hourly" @@ -85,7 +85,7 @@ Tank heat exchanger effectiveness. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ x $\\le$ 0.99", + "legal_range": "0 ≤ x ≤ 0.99", "default": "0", "required": "No", "variability": "hourly" @@ -101,7 +101,7 @@ Temperature limit for the tank collector. {{ member_table({ "units": "^o^F", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "180.0", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index a51316a58..d61c8dd5d 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -109,7 +109,7 @@ Number of identical systems of this type (including all child objects). Any valu {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "1", "required": "No", "variability": "constant" @@ -129,7 +129,7 @@ Unless this DHWSYS is part of a shared-load group or includes DHWHEATREC(s), the {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "1", "required": "No", "variability": "constant" @@ -145,7 +145,7 @@ Specifies cold (mains) water temperature supplying this DHWSYS. DHWHEATER suppl {{ member_table({ "units": "^o^F", - "legal_range": "$>$ 32 ^o^F", + "legal_range": "> 32 ^o^F", "default": "Mains temp from weather file", "required": "No", "variability": "hourly" @@ -163,7 +163,7 @@ CAUTION: wsTInletTest is intended for testing and model validation studies and s {{ member_table({ "units": "^o^F", - "legal_range": "$>$ 32 ^o^F", + "legal_range": "> 32 ^o^F", "default": "", "required": "No", "variability": "subhourly" @@ -179,7 +179,7 @@ Cold water inlet design temperature for sizing. {{ member_table({ "units": "^o^F", - "legal_range": "x $>$ 32 ^o^F", + "legal_range": "x > 32 ^o^F", "default": "Annual minimums mains temperature", "required": "No", "variability": "constant" @@ -195,7 +195,7 @@ Hourly hot water use (at the point of use). See further info under wsDayUse. {{ member_table({ "units": "gal", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "0", "required": "No", "variability": "hourly" @@ -213,7 +213,7 @@ CAUTION: wsUseTest is intended for testing and model validation studies and shou {{ member_table({ "units": "gal", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "", "required": "No", "variability": "subhourly" @@ -256,7 +256,7 @@ Water heater draw duration factor for faucets. Defined as the ratio of the actua {{ member_table({ "units": "", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "Hourly" @@ -272,7 +272,7 @@ Water heater draw duration factor for showers. Defined as the ratio of the actua {{ member_table({ "units": "", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "Hourly" @@ -288,7 +288,7 @@ Water heater draw duration factor for baths. Defined as the ratio of the actual {{ member_table({ "units": "", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "Hourly" @@ -304,7 +304,7 @@ Water heater draw duration factor for clothes washers. Defined as the ratio of t {{ member_table({ "units": "", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "1.0", "required": "No", "variability": "Hourly" @@ -320,7 +320,7 @@ Water heater draw duration factor for dishwashers. Defined as the ratio of the a {{ member_table({ "units": "", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "1.0", "required": "No", "variability": "Hourly" @@ -336,7 +336,7 @@ Water heater draw duration factor for unknown end use. Defined as the ratio of t {{ member_table({ "units": "", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "Hourly" @@ -352,7 +352,7 @@ Draw water waste for faucets. Specifies additional draw volume per DHWUSE event {{ member_table({ "units": "gal/draw", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "Hourly" @@ -368,7 +368,7 @@ Draw water waste for showers. Specifies additional draw volume per DHWUSE event {{ member_table({ "units": "gal/draw", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "Hourly" @@ -384,7 +384,7 @@ Draw water waste for baths. Specifies additional draw volume per DHWUSE event (a {{ member_table({ "units": "gal/draw", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "Hourly" @@ -400,7 +400,7 @@ Draw water waste for clothes washers. Specifies additional draw volume per DHWUS {{ member_table({ "units": "gal/draw", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "Hourly" @@ -416,7 +416,7 @@ Draw water waste for dishwashers. Specifies additional draw volume per DHWUSE ev {{ member_table({ "units": "gal/draw", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "Hourly" @@ -432,7 +432,7 @@ Draw water waste for unknown end use. Specifies additional draw volume per DHWUS {{ member_table({ "units": "gal/draw", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "Hourly" @@ -448,7 +448,7 @@ Circulation loop return temperature for testing and validation. {{ member_table({ "units": "F", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "Subhourly" @@ -464,7 +464,7 @@ Circulation loop volume flow rate for testing and validation. {{ member_table({ "units": "gpm", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "Subhourly" @@ -494,7 +494,7 @@ Average amount of waste per day. {{ member_table({ "units": "gal/day", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "wsDayWasteBranchVolF * (Total DHWLOOPBRANCH vol)", "required": "No", "variability": "constant" @@ -510,7 +510,7 @@ Day waste scaling factor. {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "1", "required": "No", "variability": "constant" @@ -526,7 +526,7 @@ Relative faucet water draw for day of waste scheme. {{ member_table({ "units": "", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "0.0", "required": "No", "variability": "subhourly" @@ -542,7 +542,7 @@ Relative shower water draw for day of waste scheme. {{ member_table({ "units": "", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "0.0", "required": "No", "variability": "subhourly" @@ -558,7 +558,7 @@ Relative bath water draw for day of waste scheme. {{ member_table({ "units": "", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "0.0", "required": "No", "variability": "subhourly" @@ -574,7 +574,7 @@ Relative clothes washer water draw for day of waste scheme. {{ member_table({ "units": "", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "0.0", "required": "No", "variability": "subhourly" @@ -590,7 +590,7 @@ Relative dish washer water draw for day of waste scheme. {{ member_table({ "units": "", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "0.0", "required": "No", "variability": "subhourly" @@ -606,7 +606,7 @@ Unknown relative water draw for day of waste scheme. {{ member_table({ "units": "", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "0.0", "required": "No", "variability": "subhourly" @@ -622,7 +622,7 @@ Hot water delivery temperature (at output of water heater(s) and at point of use {{ member_table({ "units": "^o^F", - "legal_range": "$>$ 32 ^o^F", + "legal_range": "> 32 ^o^F", "default": "120", "required": "No", "variability": "hourly" @@ -640,7 +640,7 @@ CAUTION: wsTUseTest is intended for testing and model validation studies and sho {{ member_table({ "units": "^o^F", - "legal_range": "$>$ 32 ^o^F", + "legal_range": "> 32 ^o^F", "default": "", "required": "No", "variability": "subhourly" @@ -656,7 +656,7 @@ Type: float {{ member_table({ "units": "^o^F", - "legal_range": "$>$ 32 ^o^F", + "legal_range": "> 32 ^o^F", "default": "wsTUse", "required": "No", "variability": "hourly" @@ -672,7 +672,7 @@ Type: float {{ member_table({ "units": "^o^F", - "legal_range": "$>$ 32 ^o^F", + "legal_range": "> 32 ^o^F", "default": "wsTSetPoint", "required": "No", "variability": "hourly" @@ -688,7 +688,7 @@ Specifies the design (sizing) set point temperature. {{ member_table({ "units": "^o^F", - "legal_range": "x $>$ 32 ^o^F", + "legal_range": "x > 32 ^o^F", "default": "wsTUse", "required": "No", "variability": "constant" @@ -704,7 +704,7 @@ Running volume for design. Active volume (above aquastat) equals to a full tank {{ member_table({ "units": "gal", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "0.0", "required": "No", "variability": "constant" @@ -720,7 +720,7 @@ Design (sizing) source air temperature for HPWH DHWHEATERs. {{ member_table({ "units": "^o^F", - "legal_range": "x $>$ 32 ^o^F", + "legal_range": "x > 32 ^o^F", "default": "Heating design temperature", "required": "No", "variability": "At the start and at the end of interval" @@ -736,7 +736,7 @@ Excess size factor for domestic hot water design. wsFxDes is applied when wsHeat {{ member_table({ "units": "", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "1.0", "required": "No", "variability": "constant" @@ -830,7 +830,7 @@ wsTargetSOC = select( {{ member_table({ "units": "", - "legal_range": "0 $\\lt$ x $\\le$ 1", + "legal_range": "0 < x ≤ 1", "default": "0.9", "required": "No", "variability": "hourly" @@ -846,7 +846,7 @@ Specifies the standard distribution loss multiplier. See App B Eqn 4. To duplica {{ member_table({ "units": "", - "legal_range": "$>$ 0", + "legal_range": "> 0", "default": "1", "required": "No", "variability": "constant" @@ -862,7 +862,7 @@ Distribution system multiplier. See RACM App B Eqn 4. To duplicate CEC 2016 meth {{ member_table({ "units": "", - "legal_range": "$>$ 0", + "legal_range": "> 0", "default": "1", "required": "No", "variability": "constant" @@ -878,7 +878,7 @@ Waste factor. See RACM App B Eqn 1. wsWF is applied to hot water draws. The def {{ member_table({ "units": "", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "1", "required": "No", "variability": "hourly" @@ -893,7 +893,9 @@ NOTE: Deprecated. Use wsSolarSys instead. Specifies the solar savings fraction, allowing recognition of externally-calculated solar water heating energy contributions. The contributions are modeled by deriving an increased water heater feed temperature -- -$$tWHFeed = tInletAdj + wsSSF*(wsTUse-tInletAdj)$$ +$$ +tWHFeed = tInletAdj + wsSSF*(wsTUse-tInletAdj) +$$ where tInletAdj is the source cold water temperature *including any DHWHEATREC tempering* (that is, wsTInlet + heat recovery temperature increase, if any). This model approximates the diminishing returns associated with combined preheat strategies such as drain water heat recovery and solar. @@ -901,7 +903,7 @@ where tInletAdj is the source cold water temperature *including any DHWHEATREC t {{ member_table({ "units": "", - "legal_range": "0 $\\le$ x $\\le$ 0.99", + "legal_range": "0 ≤ x ≤ 0.99", "default": "", "required": "No", "variability": "hourly" @@ -933,7 +935,7 @@ Specifies electrical parasitic power to represent recirculation pumps or other s {{ member_table({ "units": "W", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "0", "required": "No", "variability": "hourly" @@ -949,7 +951,7 @@ Maximum draw duration for the sizing window. {{ member_table({ "units": "Hr", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "4", "required": "No", "variability": "constant" @@ -965,7 +967,7 @@ Maximum load duration for the sizing window. {{ member_table({ "units": "Hr", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "12", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/dhwtank.md b/doc/src/docs/input-data/dhwtank.md index 2cd7df457..2d861f1b3 100644 --- a/doc/src/docs/input-data/dhwtank.md +++ b/doc/src/docs/input-data/dhwtank.md @@ -25,7 +25,7 @@ Number of identical tanks of this type. Any value $>1$ is equivalent to repeated {{ member_table({ "units": "", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "1", "required": "No", "variability": "constant" @@ -34,7 +34,9 @@ Number of identical tanks of this type. Any value $>1$ is equivalent to repeated Tank heat loss is calculated hourly (note that default heat loss is 0) -- -$$\text{qLoss} = \text{wtMult} \cdot (\text{wtUA} \cdot (\text{wtTTank} - \text{wtTEx}) + \text{wtXLoss})$$ +$$ +\text{qLoss} = \text{wtMult} \cdot (\text{wtUA} \cdot (\text{wtTTank} - \text{wtTEx}) + \text{wtXLoss}) +$$ ### wtUA @@ -45,7 +47,7 @@ Tank heat loss coefficient. {{ member_table({ "units": "Btuh/^o^F", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "Derived from wtVol and wtInsulR", "required": "No", "variability": "constant" @@ -61,7 +63,7 @@ Specifies tank volume. {{ member_table({ "units": "gal", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "0", "required": "No", "variability": "constant" @@ -77,7 +79,7 @@ Specifies total tank insulation resistance. The input value should represent the {{ member_table({ "units": "ft^2^-^o^F/Btuh", - "legal_range": "x $\\ge$ 0.01", + "legal_range": "x ≥ 0.01", "default": "0", "required": "No", "variability": "constant" @@ -109,7 +111,7 @@ Tank surround temperature. {{ member_table({ "units": "^o^F", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "70", "required": "No", "variability": "hourly" @@ -125,7 +127,7 @@ Tank average water temperature. {{ member_table({ "units": "^o^F", - "legal_range": "$>$ 32 ^o^F", + "legal_range": "> 32 ^o^F", "default": "Parent DHWSYSTEM wsTUse", "required": "No", "variability": "hourly" diff --git a/doc/src/docs/input-data/dhwuse.md b/doc/src/docs/input-data/dhwuse.md index faa73f27c..cf3ae2527 100644 --- a/doc/src/docs/input-data/dhwuse.md +++ b/doc/src/docs/input-data/dhwuse.md @@ -25,7 +25,7 @@ The starting time of the hot water draw. {{ member_table({ "units": "hr", - "legal_range": "0 $\\le$ x $\\le$ 24", + "legal_range": "0 ≤ x ≤ 24", "default": "*none*", "required": "Yes", "variability": "constant" @@ -42,7 +42,7 @@ Durations that extend beyond midnight are included in the current day. {{ member_table({ "units": "min", - "legal_range": "0 $\\le$ x $\\le$ 1440", + "legal_range": "0 ≤ x ≤ 1440", "default": "0", "required": "No", "variability": "hourly" @@ -58,7 +58,7 @@ Draw flow rate at the point of use (in other words, the mixed-water flow rate). {{ member_table({ "units": "gpm", - "legal_range": "x $\\le$ 0", + "legal_range": "x ≤ 0", "default": "0", "required": "No", "variability": "hourly" @@ -74,7 +74,7 @@ Fraction of draw that is hot water. Cannot be specified with wuTemp or wuHeatRe {{ member_table({ "units": "", - "legal_range": "0 $\\le$ x $\\le$ 1", + "legal_range": "0 ≤ x ≤ 1", "default": "1", "required": "No", "variability": "hourly" @@ -90,7 +90,7 @@ Mixed-water use temperature at the fixture. Cannot be specified when wuHotF is g {{ member_table({ "units": "^o^F", - "legal_range": "x $\\le$ 0", + "legal_range": "x ≤ 0", "default": "0", "required": "when wuHeatRecEF is given or parent DHWSYS includes DHWHEATREC(s)", "variability": "hourly" @@ -110,7 +110,7 @@ If 0, detailed heat recovery modeling *may* apply, see [DHWHEATREC][dhwheatrec]. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ x $\\le$ 0.9", + "legal_range": "0 ≤ x ≤ 0.9", "default": "0", "required": "No", "variability": "hourly" @@ -146,7 +146,7 @@ User-defined identifier that associates multiple DHWUSEs with a single event or {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/doas.md b/doc/src/docs/input-data/doas.md index 3b2c8c30e..63e6dfcad 100644 --- a/doc/src/docs/input-data/doas.md +++ b/doc/src/docs/input-data/doas.md @@ -18,7 +18,7 @@ Supply fan design or rated flow at rated pressure. {{ member_table({ "units": "cfm", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "Sum of referencing IZXFER supply flows", "required": "No", "variability": "constant" @@ -34,7 +34,7 @@ Design or rated fan pressure. {{ member_table({ "units": "inches H~2~O", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "0.3", "required": "No", "variability": "constant" @@ -68,7 +68,7 @@ Fan efficiency at design flow and pressure, as a fraction. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "derived from *oaSupFanShaftBhp* if given, else 0.08", "required": "No", "variability": "constant" @@ -97,11 +97,13 @@ Type: $k_0$, $k_1$, $k_2$, $k_3$, $x_0$ $k_0$ through $k_3$ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow $x_0$. Up to five *floats* may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: -$$z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3$$ +$$ +z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3 +$$ where: -- $x$ is the relative fan air flow (as fraction of oaSupFanVfDs; 0 $\le$ $x$ $\le$ 1); +- $x$ is the relative fan air flow (as fraction of oaSupFanVfDs; 0 ≤ $x$ ≤ 1); - $x_0$ is the minimum relative air flow (default 0); - $(x - x_0)|$ is the "positive difference", i.e. $(x - x_0)$ if $x > x_0$; else 0; - $z$ is the relative energy consumption. @@ -111,7 +113,7 @@ If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coeffici {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "*0, 1, 0, 0, 0 (linear)*", "required": "No", "variability": "constant" @@ -179,7 +181,7 @@ Caution: oaWEx is not checked against saturation -- there is no verification tha {{ member_table({ "units": "", - "legal_range": "$\\gt$ 0", + "legal_range": "> 0", "default": "Outdoor humidity ratio", "required": "No", "variability": "subhourly" @@ -197,7 +199,7 @@ Exhaust fan design or rated flow at rated pressure. {{ member_table({ "units": "cfm", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "Sum of referencing IZXFER exhaust flows", "required": "No", "variability": "constant" @@ -247,7 +249,7 @@ Fan efficiency at design flow and pressure, as a fraction. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "derived from *oaExhFanShaftBhp* if given, else 0.08", "required": "No", "variability": "constant" @@ -276,11 +278,13 @@ Type: $k_0$, $k_1$, $k_2$, $k_3$, $x_0$ $k_0$ through $k_3$ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow $x_0$. Up to five *floats* may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: -$$z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3$$ +$$ +z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3 +$$ where: -- $x$ is the relative fan air flow (as fraction of oaExhFanVfDs; 0 $\le$ $x$ $\le$ 1); +- $x$ is the relative fan air flow (as fraction of oaExhFanVfDs; 0 ≤ $x$ ≤ 1); - $x_0$ is the minimum relative air flow (default 0); - $(x - x_0)|$ is the "positive difference", i.e. $(x - x_0)$ if $x > x_0$; else 0; - $z$ is the relative energy consumption. @@ -290,7 +294,7 @@ If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coeffici {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "*0, 1, 0, 0, 0 (linear)*", "required": "No", "variability": "constant" @@ -355,7 +359,7 @@ Energy Input Ratio of the heating coil. This is the inverse of the coil efficien {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "when modeling heating coil", "variability": "subhourly" @@ -402,7 +406,7 @@ Energy Input Ratio of the cooling coil. This is the inverse of the coil efficien {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "when modeling cooling coil", "variability": "subhourly" @@ -418,7 +422,7 @@ Sensible Heat Ratio of the cooling coil. If the required sensible capacity of th {{ member_table({ "units": "", - "legal_range": "*x* $\\gt$ 0", + "legal_range": "*x* > 0", "default": "1.0", "required": "No", "variability": "subhourly" @@ -469,7 +473,7 @@ Heat exchanger design or rated flow. {{ member_table({ "units": "cfm", - "legal_range": "*x* $\\gt$ 0", + "legal_range": "*x* > 0", "default": "Average of supply and exhaust fan design flows", "required": "No", "variability": "constant" @@ -485,7 +489,7 @@ Heat exchanger flow fraction (of design flow) used for second set of effectivene {{ member_table({ "units": "", - "legal_range": "0 $\\lt$ *x* $\\lt$ 1.0", + "legal_range": "0 < *x* < 1.0", "default": "0.75", "required": "No", "variability": "constant" @@ -501,7 +505,7 @@ Heat exchanger sensible effectiveness in heating mode at the design flow rate. S {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1.0", + "legal_range": "0 ≤ *x* ≤ 1.0", "required": "when modeling heat recovery", "variability": "constant" }) @@ -516,7 +520,7 @@ Heat exchanger sensible effectiveness in heating mode at the second flow rate (* {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1.0", + "legal_range": "0 ≤ *x* ≤ 1.0", "default": "0", "required": "No", "variability": "constant" @@ -532,7 +536,7 @@ Heat exchanger latent effectiveness in heating mode at the design flow rate. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1.0", + "legal_range": "0 ≤ *x* ≤ 1.0", "default": "0", "required": "No", "variability": "constant" @@ -548,7 +552,7 @@ Heat exchanger latent effectiveness in heating mode at the second flow rate (**o {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1.0", + "legal_range": "0 ≤ *x* ≤ 1.0", "default": "0", "required": "No", "variability": "constant" @@ -564,7 +568,7 @@ Heat exchanger sensible effectiveness in cooling mode at the design flow rate. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1.0", + "legal_range": "0 ≤ *x* ≤ 1.0", "default": "0", "required": "No", "variability": "constant" @@ -580,7 +584,7 @@ Heat exchanger sensible effectiveness in cooling mode at the second flow rate (* {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1.0", + "legal_range": "0 ≤ *x* ≤ 1.0", "default": "0", "required": "No", "variability": "constant" @@ -596,7 +600,7 @@ Heat exchanger latent effectiveness in cooling mode at the design flow rate. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1.0", + "legal_range": "0 ≤ *x* ≤ 1.0", "default": "0", "required": "No", "variability": "constant" @@ -612,7 +616,7 @@ Heat exchanger latent effectiveness in cooling mode at the second flow rate (**o {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1.0", + "legal_range": "0 ≤ *x* ≤ 1.0", "default": "0", "required": "No", "variability": "constant" @@ -644,7 +648,7 @@ Auxiliary power required to operate the heat recovery device (e.g., wheel motor, {{ member_table({ "units": "W", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "subhourly" diff --git a/doc/src/docs/input-data/door.md b/doc/src/docs/input-data/door.md index f3276a960..45e699555 100644 --- a/doc/src/docs/input-data/door.md +++ b/doc/src/docs/input-data/door.md @@ -25,7 +25,7 @@ Overall area of door. {{ member_table({ "units": "ft^2^", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "*none*", "required": "Yes", "variability": "constant" @@ -40,9 +40,9 @@ Provides user control over how CSE models conduction for this door: {{ csv_table("QUICK, Surface is modeled using a simple conductance. Heat capacity effects are ignored. Either drCon or drU (next) can be specified. - DELAYED, DELAYED\_HOUR, DELAYED\_SUBOUR, Surface is modeled using a multi-layer finite difference technique which represents heat capacity effects. If the time constant of the door is too short to accurately simulate, a warning message is issued and the Quick model is used. drCon (next) must be specified -- the program cannot use the finite difference model if drU rather than drCon is specified. + DELAYED, DELAYED_HOUR, DELAYED_SUBOUR, Surface is modeled using a multi-layer finite difference technique which represents heat capacity effects. If the time constant of the door is too short to accurately simulate, a warning message is issued and the Quick model is used. drCon (next) must be specified -- the program cannot use the finite difference model if drU rather than drCon is specified. AUTO, Program selects Quick or appropriate Delayed automatically according to the time constant of the surface (if drU is specified, Quick is selected). - FD or FORWARD\_DIFFERENCE, Selects the forward difference model (used with short time steps and the CZM/UZM zone models)") + FD or FORWARD_DIFFERENCE, Selects the forward difference model (used with short time steps and the CZM/UZM zone models)") }} {{ @@ -66,7 +66,7 @@ Door U-value, NOT including surface (air film) conductances. Allows direct entry {{ member_table({ "units": "Btuh/ft^2^-^o^F", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "Determined from *drCon*", "required": "if *drCon* not given", "variability": "constant" @@ -93,12 +93,12 @@ Name of construction for door. Type: float -Sublayer thickness adjustment factor for FORWARD\_DIFFERENCE conduction model used with drCon surfaces. Material layers in the construction are divided into sublayers as needed for numerical stability. drLThkF allows adjustment of the thickness criterion used for subdivision. A value of 0 prevents subdivision; the default value (0.5) uses layers with conservative thickness equal to half of an estimated safe value. Fewer (thicker) sublayers improves runtime at the expense of accurate representation of rapid changes. +Sublayer thickness adjustment factor for FORWARD_DIFFERENCE conduction model used with drCon surfaces. Material layers in the construction are divided into sublayers as needed for numerical stability. drLThkF allows adjustment of the thickness criterion used for subdivision. A value of 0 prevents subdivision; the default value (0.5) uses layers with conservative thickness equal to half of an estimated safe value. Fewer (thicker) sublayers improves runtime at the expense of accurate representation of rapid changes. {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "0.5", "required": "No", "variability": "constant" @@ -114,7 +114,7 @@ Door exterior solar absorptivity. Applicable only if sfExCnd of owning surface i {{ member_table({ "units": "Btuh/ft^2^-^o^F", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "same as owning surface", "required": "No", "variability": "monthly-hourly" @@ -130,7 +130,7 @@ Door interior solar absorptivity. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.5", "required": "No", "variability": "monthly-hourly" @@ -146,7 +146,7 @@ Door exterior long wave (thermal) emittance. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.9", "required": "No", "variability": "constant" @@ -162,7 +162,7 @@ Door interior long wave (thermal) emittance. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.9", "required": "No", "variability": "constant" @@ -173,12 +173,12 @@ Door interior long wave (thermal) emittance. Type: float -Door interior surface (air film) conductance. Ignored if drModel = Forward\_Difference +Door interior surface (air film) conductance. Ignored if drModel = Forward_Difference {{ member_table({ "units": "Btuh/ft^2^-^o^F", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "same as owning surface", "required": "No", "variability": "constant" @@ -189,7 +189,7 @@ Door interior surface (air film) conductance. Ignored if drModel = Forward\_Diff Type: float -Door exterior surface (air film) conductance. Ignored if drModel = Forward\_Difference +Door exterior surface (air film) conductance. Ignored if drModel = Forward_Difference {{ member_table({ @@ -201,7 +201,7 @@ Door exterior surface (air film) conductance. Ignored if drModel = Forward\_Diff }) }} - When drModel = Forward\_Difference, several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on drExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. + When drModel = Forward_Difference, several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on drExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. {{ csv_table("Model, Exposed to ambient, Exposed to zone @@ -218,7 +218,7 @@ Door exterior surface (air film) conductance. Ignored if drModel = Forward\_Diff Type: choice -Selects the model used for exterior surface convection when drModel = Forward\_Difference. +Selects the model used for exterior surface convection when drModel = Forward_Difference. {{ member_table({ @@ -255,7 +255,7 @@ Exterior convection coefficient adjustment factor. When drExHcModel=INPUT, hc=d {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "1", "required": "No", "variability": "subhourly" @@ -292,7 +292,7 @@ Exterior roughness factor. Typical roughness values: Type: choice -Selects the model used for the inside (zone) surface convection when drModel = Forward\_Difference. +Selects the model used for the inside (zone) surface convection when drModel = Forward_Difference. {{ member_table({ @@ -313,7 +313,7 @@ Interior convection coefficient adjustment factor. When drInHcModel=INPUT, hc=d {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "1", "required": "No", "variability": "subhourly" diff --git a/doc/src/docs/input-data/ductseg.md b/doc/src/docs/input-data/ductseg.md index 7f7e10258..07c944332 100644 --- a/doc/src/docs/input-data/ductseg.md +++ b/doc/src/docs/input-data/ductseg.md @@ -46,7 +46,7 @@ Average branch length. {{ member_table({ "units": "ft", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "-1.0", "required": "No", "variability": "constant" @@ -62,7 +62,7 @@ Number of branches. {{ member_table({ "units": "", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "-1", "required": "No", "variability": "constant" @@ -78,7 +78,7 @@ Floor area served per branch {{ member_table({ "units": "ft^2^", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "-1.0", "required": "No", "variability": "constant" @@ -94,7 +94,7 @@ Specified air velocity design. {{ member_table({ "units": "fpm", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "-1.0", "required": "No", "variability": "constant" @@ -110,7 +110,7 @@ Duct segment surface area at outside face of insulation for flat duct shape, see {{ member_table({ "units": "ft^2^", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "*none*", "required": "No", "variability": "constant" @@ -126,7 +126,7 @@ Duct segment inside surface area (at duct wall, duct wall thickness assumed negl {{ member_table({ "units": "ft^2^", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "Derived from dsDiameter and dsLength", "required": "(see above reduct shape)", "variability": "constant" @@ -143,7 +143,7 @@ Duct segment round duct diameter (duct wall thickness assumed negligible) {{ member_table({ "units": "ft", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "Derived from dsInArea and dsLength", "required": "(see above reduct shape)", "variability": "constant" @@ -159,7 +159,7 @@ Duct segment length. {{ member_table({ "units": "ft", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "Derived from dsInArea and dsDiameter", "required": "(see above reduct shape)", "variability": "constant" @@ -207,7 +207,7 @@ Exposed (i.e. insulation) outside surface exterior long wave (thermal) emittance {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.9", "required": "No", "variability": "constant" @@ -239,7 +239,7 @@ Insulation thermal resistance *not including* surface conductances. dsInsulR and {{ member_table({ "units": "ft^2^-^o^F-hr / Btu", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "0", "required": "No", "variability": "constant" @@ -271,7 +271,7 @@ Duct leakage. Return duct leakage is modeled as if it all occurs at the segment {{ member_table({ "units": "", - "legal_range": "0 $<$ x $\\le$ 1", + "legal_range": "0 $<$ x ≤ 1", "default": "*none*", "required": "No", "variability": "constant" @@ -287,7 +287,7 @@ Outside (exposed) surface convection coefficient. {{ member_table({ "units": "Btuh/ft^2^-^o^F", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": ".54", "required": "No", "variability": "subhourly" diff --git a/doc/src/docs/input-data/exportcol.md b/doc/src/docs/input-data/exportcol.md index 5d7cb469c..5beb78771 100644 --- a/doc/src/docs/input-data/exportcol.md +++ b/doc/src/docs/input-data/exportcol.md @@ -79,7 +79,7 @@ Maximum width. Leading and trailing spaces and non-significant zeroes are remove {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "13", "required": "No", "variability": "constant" @@ -95,7 +95,7 @@ Number of digits after decimal point. {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "*flexible format*", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/foundation.md b/doc/src/docs/input-data/foundation.md index d9f4e9067..215c9a000 100644 --- a/doc/src/docs/input-data/foundation.md +++ b/doc/src/docs/input-data/foundation.md @@ -66,7 +66,7 @@ Distance between the grade level and the top of the foundation wall. {{ member_table({ "units": "ft", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.5", "required": "No", "variability": "constant" @@ -82,7 +82,7 @@ Distance between the bottom of the slab and the bottom of the foundation wall. F {{ member_table({ "units": "ft", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/gain.md b/doc/src/docs/input-data/gain.md index d4a914b1f..2c7f2559f 100644 --- a/doc/src/docs/input-data/gain.md +++ b/doc/src/docs/input-data/gain.md @@ -8,11 +8,9 @@ Each gain has an amount of power (gnPower), which may optionally be accumulated The gain to the zone may be further divided into convective sensible, radiant sensible and latent heat via the gnFrRad and gnFrLat members; the plenum and return gains are assumed all convective sensible. - +In the CSE zone mode, the radiant internal gain is distributed to the surfaces in the zone, rather than going directly to the zone "air" heat capacity (znCAir). A simple model is used -- all surfaces are assumed to be opaque and to have the same (infrared) absorptivity -- even windows. Along with the assumption that the zone is spherical (implicit in the current treatment of solar gains), this allows distribution of gains to surfaces in proportion to their area, without any absorptivity or transmissivity calculations. The gain for windows and quick-model surfaces is assigned to the znCAir, except for the portion which conducts through the surface to the other side rather than through the surface film to the adjacent zone air; the gain to massive (delayed-model) surfaces is assigned to the side of surface in the zone with the gain. -In the CNE zone mode, the radiant internal gain is distributed to the surfaces in the zone, rather than going directly to the zone "air" heat capacity (znCAir). A simple model is used -- all surfaces are assumed to be opaque and to have the same (infrared) absorptivity -- even windows. Along with the assumption that the zone is spherical (implicit in the current treatment of solar gains), this allows distribution of gains to surfaces in proportion to their area, without any absorptivity or transmissivity calculations. The gain for windows and quick-model surfaces is assigned to the znCAir, except for the portion which conducts through the surface to the other side rather than through the surface film to the adjacent zone air; the gain to massive (delayed-model) surfaces is assigned to the side of surface in the zone with the gain. - -Radiant internal gains are included in the IgnS (Sensible Internal Gain) column in the zone energy balance reports. (They could easily be shown in a separate IgnR column if desired.) Any energy transfer shows two places in the ZEB report, with opposite signs, so that the result is zero -- otherwise it wouldn't be an energy balance. The rest of the reporting story for radiant internal gains turns out to be complex. The specified value of the radiant gain (gnPower \* gnFrZn \* gnFrRad) shows in the IgnS column. To the extent that the gain heats the zone, it also shows negatively in the Masses column, because the zone CAir is lumped with the other masses. To the extent that the gain heats massive surfaces, it also shows negatively in the masses column. To the extent that the gain conducts through windows and quick-model surfaces, it shows negatively in the Conduction column. If the gain conducts through a quick-model surface to another zone, it shows negatively in the Izone (Interzone) column, positively in the Izone column of the receiving zone, and negatively in the receiving zone's Masses or Cond column. +Radiant internal gains are included in the IgnS (Sensible Internal Gain) column in the zone energy balance reports. (They could easily be shown in a separate IgnR column if desired.) Any energy transfer shows two places in the ZEB report, with opposite signs, so that the result is zero -- otherwise it wouldn't be an energy balance. The rest of the reporting story for radiant internal gains turns out to be complex. The specified value of the radiant gain (gnPower * gnFrZn * gnFrRad) shows in the IgnS column. To the extent that the gain heats the zone, it also shows negatively in the Masses column, because the zone CAir is lumped with the other masses. To the extent that the gain heats massive surfaces, it also shows negatively in the masses column. To the extent that the gain conducts through windows and quick-model surfaces, it shows negatively in the Conduction column. If the gain conducts through a quick-model surface to another zone, it shows negatively in the Izone (Interzone) column, positively in the Izone column of the receiving zone, and negatively in the receiving zone's Masses or Cond column. ### gnName @@ -109,7 +107,7 @@ Fraction of gain going to zone. gnFrLat (below) gives portion of this gain that {{ member_table({ "units": "", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "1.", "required": "No", "variability": "hourly" @@ -126,7 +124,7 @@ Fraction of gain going to plenum. {{ member_table({ "units": "", - "legal_range": "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", + "legal_range": "gnFrZn + gnFrPl + gnFrRtn ≤ 1", "default": "0.", "required": "No", "variability": "hourly" @@ -143,7 +141,7 @@ Fraction of gain going to return. {{ member_table({ "units": "", - "legal_range": "gnFrZn + gnFrPl + gnFrRtn $\\leq$ 1", + "legal_range": "gnFrZn + gnFrPl + gnFrRtn ≤ 1", "default": "0.", "required": "No", "variability": "hourly" @@ -159,7 +157,7 @@ Fraction of total gain going to zone (gnFrZn) that is radiant rather than convec {{ member_table({ "units": "", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.0", "required": "No", "variability": "hourly" @@ -175,7 +173,7 @@ Fraction of total gain going to zone (gnFrZn) that is latent heat (moisture addi {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.0", "required": "No", "variability": "hourly" @@ -192,7 +190,7 @@ daylighting. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "1.0", "required": "No", "variability": "hourly" diff --git a/doc/src/docs/input-data/glazetype.md b/doc/src/docs/input-data/glazetype.md index 3bea3a416..bd4391ed6 100644 --- a/doc/src/docs/input-data/glazetype.md +++ b/doc/src/docs/input-data/glazetype.md @@ -47,7 +47,7 @@ Approach 2. Enter gtU=U-factor and let the wnInH and wnExH default. This approac {{ member_table({ "units": "Btuh/ft^2^-^o^F", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "*none*", "required": "No", "variability": "constant" @@ -63,7 +63,7 @@ Fenestration system (including frame) U-factor evaluated at NFRC heating conditi {{ member_table({ "units": "Btuh/ft^2^-^o^F", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "*none*", "required": "No", "variability": "constant" @@ -79,7 +79,7 @@ Glazing Solar Heat Gain Coefficient: fraction of normal beam insolation which ge {{ member_table({ "units": "fraction", - "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "legal_range": "*0* ≤ *x* ≤ *1*", "default": "*none*", "required": "Yes", "variability": "constant" @@ -95,7 +95,7 @@ SHGC multiplier with shades open. May be overriden in the specific window input. {{ member_table({ "units": "fraction", - "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "legal_range": "*0* ≤ *x* ≤ *1*", "default": "1.0", "required": "No", "variability": "Monthly - Hourly" @@ -111,7 +111,7 @@ SHGC multiplier with shades closed. May be overriden in the specific window inpu {{ member_table({ "units": "fraction", - "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "legal_range": "*0* ≤ *x* ≤ *1*", "default": "gtSMSO (no shades)", "required": "No", "variability": "Monthly - Hourly" @@ -127,7 +127,7 @@ Framing multiplier used if none given in window, for example .9 if frame and mul {{ member_table({ "units": "fraction", - "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "legal_range": "*0* ≤ *x* ≤ *1*", "default": "gtSHGCO", "required": "No", "variability": "Monthly - Hourly" @@ -140,13 +140,13 @@ Type: *float* Four float values separated by commas. Coefficients for incidence angle SHGC multiplier polynomial applied to gtSHGC to determine beam transmissivity at angles of incidence other than 90 degrees. The values are coefficients for first through fourth powers of the cosine of the incidence angle; there is no constant part. An error message will be issued if the coefficients do not add to one. They are used in the following computation: -    angle = incidence angle of beam radiation, measured from normal to glass. +angle = incidence angle of beam radiation, measured from normal to glass. -    cosI = cos( angle) +cosI = cos(angle) -    angMult = a\*cosI + b\*cosI\^2 + c\*cosI\^3 + d\*cosI\^4 +angMult = a\*cosI + b\*cosI^2^ + c\*cosI^3^ + d\*cosI^4^ -    beamXmisvty = gtSHGCO \* angMult (shades open) +beamXmisvty = gtSHGCO * angMult (shades open) {{ member_table({ @@ -167,7 +167,7 @@ SHGC diffuse multiplier, applied to gtSHGC to determine transmissivity for diffu {{ member_table({ "units": "fraction", - "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "legal_range": "*0* ≤ *x* ≤ *1*", "default": "*none*", "required": "Yes", "variability": "constant" @@ -183,7 +183,7 @@ SHGC diffuse multiplier, applied to qtSHGC to determine transmissivity for diffu {{ member_table({ "units": "fraction", - "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "legal_range": "*0* ≤ *x* ≤ *1*", "default": "*none*", "required": "Yes", "variability": "constant" @@ -199,7 +199,7 @@ Number of glazings in the Glazetype (bare glass only, not including any interior {{ member_table({ "units": "", - "legal_range": "*0* $<$ *x* $\\leq$ *4*", + "legal_range": "*0* $<$ *x* ≤ *4*", "default": "2", "required": "No", "variability": "constant" @@ -247,7 +247,7 @@ Glazing dirt loss factor. {{ member_table({ "units": "fraction", - "legal_range": "*0* $\\leq$ *x* $\\leq$ *1*", + "legal_range": "*0* ≤ *x* ≤ *1*", "default": "0", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/heatplant.md b/doc/src/docs/input-data/heatplant.md index 73bcbd487..a978798f3 100644 --- a/doc/src/docs/input-data/heatplant.md +++ b/doc/src/docs/input-data/heatplant.md @@ -53,7 +53,7 @@ Heat plant pipe loss: heat assumed lost from piping connecting boilers to loads {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.01", "required": "No", "variability": "constant" @@ -65,16 +65,16 @@ Heat plant pipe loss: heat assumed lost from piping connecting boilers to loads Type: boilerName list, ALL_BUT and boilerName list, or ALL -The commands *hpStage1* through *hpStage7* allow specification of up to seven *STAGES* in which BOILERs are activated as the load increases. Each stage may be specified with a list of up to seven names of BOILERs in the HEATPLANT, or with the word ALL, meaning all of the HEATPLANT's BOILERs, or with the word ALL\_BUT and a list of up to six names of BOILERs. Each stage should be more powerful than the preceding one. If you have less than seven stages, you may skip some of the commands *hpStage1* through *hpStage7* -- the used stage numbers need not be contiguous. +The commands *hpStage1* through *hpStage7* allow specification of up to seven *STAGES* in which BOILERs are activated as the load increases. Each stage may be specified with a list of up to seven names of BOILERs in the HEATPLANT, or with the word ALL, meaning all of the HEATPLANT's BOILERs, or with the word ALL_BUT and a list of up to six names of BOILERs. Each stage should be more powerful than the preceding one. If you have less than seven stages, you may skip some of the commands *hpStage1* through *hpStage7* -- the used stage numbers need not be contiguous. If none of *hpStage1* through *hpStage7* are given, CSE supplies a single default stage containing all boilers. -A comma must be entered between boiler names and after the word ALL\_BUT. +A comma must be entered between boiler names and after the word ALL_BUT. {{ member_table({ "units": "", - "legal_range": "1 to 7 names;ALL\_BUT and 1 to 6 names;ALL", + "legal_range": "1 to 7 names;ALL_BUT and 1 to 6 names;ALL", "default": "*hpStage1* = ALL", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/holiday.md b/doc/src/docs/input-data/holiday.md index 2471cbd66..9e31ffc18 100644 --- a/doc/src/docs/input-data/holiday.md +++ b/doc/src/docs/input-data/holiday.md @@ -168,19 +168,19 @@ Examples of valid HOLIDAY object specifications: As with reports, Holidays are automatically generated for a standard set of Holidays. The following are the default holidays automatically defined by CSE: {{ - csv_table("New Year's Day, \*January 1 - M L King Day, \*January 15 + csv_table("New Year's Day, ^*^January 1 + M L King Day, ^*^January 15 President's Day, 3rd Monday in February Memorial Day, last Monday in May - Fourth of July, \*July 4 + Fourth of July, ^*^July 4 Labor Day, 1st Monday in September Columbus Day, 2nd Monday in October - Veterans Day, \*November 11 + Veterans Day, ^*^November 11 Thanksgiving, 4th Thursday in November - Christmas, \*December 25") + Christmas, ^*^December 25") }} -\* *observed on the following Monday if falls on a weekend, except as otherwise noted:* +^*^observed on the following Monday if falls on a weekend, except as otherwise noted: If a particular default holiday is not desired, it can be removed with a DELETE statement: diff --git a/doc/src/docs/input-data/index.md b/doc/src/docs/input-data/index.md index 6febb3f6f..0ac50aa30 100644 --- a/doc/src/docs/input-data/index.md +++ b/doc/src/docs/input-data/index.md @@ -10,7 +10,7 @@ After the object name, each member's description is introduced with a line of th - *string* -- \_\_\_\_*name* (object name for specified type of object) +- ____*name* (object name for specified type of object) - *choice* @@ -24,7 +24,7 @@ Each member's description continues with a table of the form: member_table({ "units": "ft^2^", "legal_range": "x > 0", - "default": "wnHeight \\\* wnWidth", + "default": "wnHeight \\_ wnWidth", "required": "No", "variability": "constant" }) diff --git a/doc/src/docs/input-data/izxfer.md b/doc/src/docs/input-data/izxfer.md index 27dccb4ae..8a33d0797 100644 --- a/doc/src/docs/input-data/izxfer.md +++ b/doc/src/docs/input-data/izxfer.md @@ -92,7 +92,7 @@ Default values for izAFCat are generally adequate *except* that natural ventilat Type: znName -Name of primary zone. Flow rates $>$ 0 are into the primary zone. +Name of primary zone. Flow rates > 0 are into the primary zone. {{ member_table({ @@ -147,7 +147,7 @@ Note izLinkedFlowMult has no effect on the air flow to or from the zone specifie {{ member_table({ "units": "--", - "legal_range": "*x* $\\gt$ 0", + "legal_range": "*x* > 0", "default": "1", "required": "No", "variability": "constant" @@ -166,7 +166,7 @@ Conductance between zones. {{ member_table({ "units": "Btu/^o^F", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "hourly" @@ -182,7 +182,7 @@ Area of low or only vent (typically VentOff) {{ member_table({ "units": "ft^2^", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "hourly" @@ -198,7 +198,7 @@ Additional vent area (high vent or VentOn). If used in AIRNET, izAHi > izALo {{ member_table({ "units": "ft^2^", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "izALo", "required": "No", "variability": "hourly" @@ -242,7 +242,7 @@ See izTEx example just above. {{ member_table({ "units": "", - "legal_range": "$\\gt$ 0", + "legal_range": "> 0", "default": "Outdoor humidity ratio", "required": "No", "variability": "subhourly" @@ -262,7 +262,7 @@ Note that izCpr must be non-0 for izWindSpeed to have any effect. {{ member_table({ "units": "mph", - "legal_range": "$\\ge$ 0", + "legal_range": "≥ 0", "default": "Zone adjusted windspeed", "required": "No", "variability": "subhourly" @@ -278,7 +278,7 @@ Length or width of AIRNETHORIZ opening. {{ member_table({ "units": "ft", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "*none*", "required": "if izNVType = AIRNETHORIZ", "variability": "constant" @@ -294,7 +294,7 @@ Width or length of AIRNETHORIZ opening. {{ member_table({ "units": "ft", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "*none*", "required": "if izNVType = AIRNETHORIZ", "variability": "constant" @@ -310,7 +310,7 @@ Stairway angle for AIRNETHORIZ opening. Use 90 for an open hole. Note that 0 pre {{ member_table({ "units": "^o^ degrees", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "34", "required": "No", "variability": "constant" @@ -342,7 +342,7 @@ Vent discharge coefficient. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.8", "required": "No", "variability": "constant" @@ -358,7 +358,7 @@ Fan design or rated flow at rated pressure. For AIRNETHERV, this is the net air {{ member_table({ "units": "cfm", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0 (no fan)", "required": "If fan present", "variability": "constant" @@ -374,7 +374,7 @@ Wind pressure coefficient (for AIRNETEXT). {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "constant" @@ -390,7 +390,7 @@ Opening exponent (for AIRNETEXT). {{ member_table({ "units": "", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "0.5", "required": "No", "variability": "constant" @@ -406,7 +406,7 @@ Minimum volume flow rate (VentOff mode). {{ member_table({ "units": "cfm", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "izfanVfDs", "required": "No", "variability": "subhourly" @@ -422,7 +422,7 @@ Maximum volume flow rate (VentOn mode) {{ member_table({ "units": "cfm", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "izVfMin", "required": "No", "variability": "subhourly" @@ -438,7 +438,7 @@ Apparent sensible effectiveness for AIRNETHERV ventilator. ASEF is a commonly-r {{ member_table({ "units": "", - "legal_range": "0 $\\le$ x $\\le$ 1", + "legal_range": "0 ≤ x ≤ 1", "default": "0", "required": "No", "variability": "subhourly" @@ -454,7 +454,7 @@ Sensible recovery efficiency (SRE) for AIRNETHERV ventilator. Used as the sensi {{ member_table({ "units": "", - "legal_range": "0 $\\le$ x $\\le$ 1", + "legal_range": "0 ≤ x ≤ 1", "default": "0", "required": "No", "variability": "subhourly" @@ -470,7 +470,7 @@ Adjusted sensible recovery efficiency (ASRE) for AIRNETHERV ventilator. The dif {{ member_table({ "units": "", - "legal_range": "0 $\\le$ x $\\le$ izSRE", + "legal_range": "0 ≤ x ≤ izSRE", "default": "0", "required": "No", "variability": "subhourly" @@ -486,7 +486,7 @@ Exhaust air transfer ratio for AIRNETHERV ventilator. NetFlow = (1 - EATR)*(gro {{ member_table({ "units": "cfm", - "legal_range": "0 $\\le$ x $\\le$ 1", + "legal_range": "0 ≤ x ≤ 1", "default": "0", "required": "No", "variability": "subhourly" @@ -502,7 +502,7 @@ Latent heat recovery effectiveness for AIRNETHERV ventilator. The default value {{ member_table({ "units": "", - "legal_range": "0 $\\le$ x $\\le$ 1", + "legal_range": "0 ≤ x ≤ 1", "default": "0", "required": "No", "variability": "subhourly" @@ -518,7 +518,7 @@ Fraction of fan heat added to supply air stream for AIRNETHERV ventilator. Used {{ member_table({ "units": "", - "legal_range": "0 $\\le$ x $\\le$ 1", + "legal_range": "0 ≤ x ≤ 1", "default": "0", "required": "No", "variability": "subhourly" @@ -535,7 +535,7 @@ value other than 1 indicates unbalanced flow that effects the zone pressure. {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "1 (balanced)", "required": "No", "variability": "constant" @@ -551,7 +551,7 @@ Design or rated fan pressure. {{ member_table({ "units": "inches H~2~O", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "0.3", "required": "No", "variability": "constant" @@ -569,7 +569,7 @@ Fan input power per unit air flow (at design flow and pressure). {{ member_table({ "units": "W/cfm", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "derived from izfanEff and izfanShaftBhp", "required": "If izfanEff and izfanShaftBhp not present", "variability": "constant" @@ -585,7 +585,7 @@ Fan efficiency at design flow and pressure, as a fraction. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "derived from *izfanShaftBhp* if given, else 0.08", "required": "No", "variability": "constant" @@ -601,7 +601,7 @@ Fan shaft brake horsepower at design flow and pressure. {{ member_table({ "units": "bhp", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "derived from *izfanEff*.", "required": "No", "variability": "constant" @@ -614,11 +614,13 @@ Type: $k_0$, $k_1$, $k_2$, $k_3$, $x_0$ $k_0$ through $k_3$ are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow $x_0$. Up to five *floats* may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: -$$z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3$$ +$$ +z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3 +$$ where: -- $x$ is the relative fan air flow (as fraction of izfan*VfDs*; 0 $\le$ $x$ $\le$ 1); +- $x$ is the relative fan air flow (as fraction of izfan*VfDs*; 0 ≤ $x$ ≤ 1); - $x_0$ is the minimum relative air flow (default 0); - $(x - x_0)|$ is the "positive difference", i.e. $(x - x_0)$ if $x > x_0$; else 0; - $z$ is the relative energy consumption. @@ -628,7 +630,7 @@ If $z$ is not 1.0 for $x$ = 1.0, a warning message is displayed and the coeffici {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "*0, 1, 0, 0, 0 (linear)*", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/layer.md b/doc/src/docs/input-data/layer.md index 9bbd46db3..e9eebc913 100644 --- a/doc/src/docs/input-data/layer.md +++ b/doc/src/docs/input-data/layer.md @@ -45,7 +45,7 @@ Thickness of layer. {{ member_table({ "units": "ft", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "Required if *matThk* not specified in referenced *lrMat*", "required": "No", "variability": "constant" @@ -77,7 +77,7 @@ Fraction of layer that is framing. Must be specified if frmMat is specified. See {{ member_table({ "units": "", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "*no framed layer*", "required": "Required if *lrFrmMat* specified, else disallowed", "variability": "constant" diff --git a/doc/src/docs/input-data/material.md b/doc/src/docs/input-data/material.md index c8518cb92..459e7f7c9 100644 --- a/doc/src/docs/input-data/material.md +++ b/doc/src/docs/input-data/material.md @@ -25,7 +25,7 @@ Thickness of material. If specified, matThk indicates the discreet thickness of {{ member_table({ "units": "ft", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "*none*", "required": "No", "variability": "constant" @@ -41,7 +41,7 @@ Conductivity of material. Note that conductivity is *always* stated for a 1 foot {{ member_table({ "units": "Btuh-ft/ft^2^-^o^F", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "*none*", "required": "Yes", "variability": "constant" @@ -57,7 +57,7 @@ Temperature at which matCond is rated. See matCondCT (next). {{ member_table({ "units": "^o^F", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "70 ^o^F", "required": "No", "variability": "constant" @@ -68,7 +68,7 @@ Temperature at which matCond is rated. See matCondCT (next). Type: float -Coefficient for temperature adjustment of matCond in the forward difference surface conduction model. Each hour (not subhour), the conductivity of layers using this material are adjusted as followslrCond = matCond \* (1 + matCondCT\*(T~layer~ – matCondT)) +Coefficient for temperature adjustment of matCond in the forward difference surface conduction model. Each hour (not subhour), the conductivity of layers using this material are adjusted as followslrCond = matCond * (1 + matCondCT*(T~layer~ – matCondT)) {{ member_table({ @@ -91,7 +91,7 @@ Specific heat of material. {{ member_table({ "units": "Btu/lb-^o^F", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0 (thermally massless)", "required": "No", "variability": "constant" @@ -107,7 +107,7 @@ Density of material. {{ member_table({ "units": "lb/ft^3^", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0 (massless)", "required": "No", "variability": "constant" @@ -123,7 +123,7 @@ Nominal R-value per foot of material. Appropriate for insulation materials only {{ member_table({ "units": "ft^2^-^o^F/Btuh", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "*none*", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/meter.md b/doc/src/docs/input-data/meter.md index 9d92801af..4645539cd 100644 --- a/doc/src/docs/input-data/meter.md +++ b/doc/src/docs/input-data/meter.md @@ -6,7 +6,7 @@ Meters account for energy use in the following pre-defined categories, called *e {% include 'shared/enduses.md' %} -The user has complete freedom over how many meters are defined and how equipment is assigned to them. At one extreme, a single meter "Electricity" could be defined and have all of electrical uses assigned to it. On the other hand, definition of separate meters "Elect\_Fan1", "Elect\_Fan2", and so forth allows accounting of the electricity use for individual pieces of equipment. Various groupings are possible: for example, in a building with several air handlers, one could separate the energy consumption of the fans from the coils, or one could separate the energy use by air handler, or both ways, depending on the information desired from the run. +The user has complete freedom over how many meters are defined and how equipment is assigned to them. At one extreme, a single meter "Electricity" could be defined and have all of electrical uses assigned to it. On the other hand, definition of separate meters "Elect_Fan1", "Elect_Fan2", and so forth allows accounting of the electricity use for individual pieces of equipment. Various groupings are possible: for example, in a building with several air handlers, one could separate the energy consumption of the fans from the coils, or one could separate the energy use by air handler, or both ways, depending on the information desired from the run. The members that assign energy use to meters include: diff --git a/doc/src/docs/input-data/perimeter.md b/doc/src/docs/input-data/perimeter.md index 33a8017d6..ff8afb012 100644 --- a/doc/src/docs/input-data/perimeter.md +++ b/doc/src/docs/input-data/perimeter.md @@ -25,7 +25,7 @@ Length of exposed perimeter. {{ member_table({ "units": "ft", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "*none*", "required": "Yes", "variability": "constant" @@ -41,7 +41,7 @@ Perimeter conduction per unit length. {{ member_table({ "units": "Btuh/ft-^o^F", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "*none*", "required": "Yes", "variability": "constant" diff --git a/doc/src/docs/input-data/pvarray.md b/doc/src/docs/input-data/pvarray.md index a94ac2a27..84e48a300 100644 --- a/doc/src/docs/input-data/pvarray.md +++ b/doc/src/docs/input-data/pvarray.md @@ -59,7 +59,7 @@ The rated photovoltaic system DC capacity/size as indicated by the nameplate. {{ member_table({ "units": "kW", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "*none*", "required": "Yes", "variability": "constant" @@ -99,7 +99,7 @@ The refraction index for the coating applied to the module cover. A value of 1.0 {{ member_table({ "units": "", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "1.3", "required": "No", "variability": "constant" @@ -168,7 +168,7 @@ The following figures illustrate the use of both pvTilt and pvAzm for various co Type: float -Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the range 0^o^ $\leq$ *x* $<$ 360^o^ is given, it is normalized to that range. For one-axis tracking, defines the azimuth of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. +Photovoltaic array azimuth (0 = north, 90 = east, etc.). If a value outside the range 0^o^ ≤ *x* $<$ 360^o^ is given, it is normalized to that range. For one-axis tracking, defines the azimuth of the rotation axis. Not used for two-axis tracking arrays. Should be omitted if pvVertices is given. {{ member_table({ @@ -210,7 +210,9 @@ Type: float Shading Impact Factor (SIF) of the array used to represent the disproportionate impact on array output of partially shaded modules at the sub-array level. This impact is applied to the effective beam irradiance on the array: - $$I_{poa,beam,eff} = \max\left(I_{poa,beam}\cdot\left(1-SIF\cdot f_{sh}\right),0\right)$$ + $$ + I_{poa,beam,eff} = \max\left(I_{poa,beam}\cdot\left(1-SIF\cdot f_{sh}\right),0\right) + $$ where $f_{sh}$ is the fraction of the array that is shaded. @@ -218,7 +220,7 @@ Type: float {{ member_table({ - "legal_range": "*x* $\\geq$ 1.0", + "legal_range": "*x* ≥ 1.0", "default": "1.2", "required": "No", "variability": "constant" @@ -268,7 +270,7 @@ Ground coverage ratio is. This is currently unused as array self-shading is not ---------------------------------------------------------------------------------- **Units** **Legal Range** **Default** **Required** **Variability** ----------- --------------------- ------------- -------------- ----------------- - 0 < *x* $\le$ 1.0 0.4 No constant + 0 < *x* ≤ 1.0 0.4 No constant ---------------------------------------------------------------------------------- --> diff --git a/doc/src/docs/input-data/report.md b/doc/src/docs/input-data/report.md index 4abd569ce..3916ac7b5 100644 --- a/doc/src/docs/input-data/report.md +++ b/doc/src/docs/input-data/report.md @@ -68,9 +68,9 @@ Type: choice Choice indicating report type. Report types may be described at greater length, with examples, in Section 6. {{ - csv_table("ERR, Error and warning messages. If there are any such messages, they are also displayed on the screen *AND* written to a file with the same name as the input file and extension .ERR. Furthermore, \* \*many error messages are repeated in the INP report. + csv_table("ERR, Error and warning messages. If there are any such messages, they are also displayed on the screen *AND* written to a file with the same name as the input file and extension .ERR. Furthermore, many error messages are repeated in the INP report. LOG, Run 'log'. As of July 1992, contains only CSE version number; should be enhanced or deleted.?? - INP, Input echo: shows the portion of the input file used to specify this run. Does not repeat descriptions of objects left from prior runs in the same session when CLEAR is not used. Error and warning messages relating to specific lines of the input are repeated after or near the line to which they relate, prefixed with '?'. Lines not used due to a preprocessor \#if command (Section 4.4.4) with a false expression are prefixed with a '0' in the leftmost column; all preprocessor command lines are prefixed with a '\#' in that column. + INP, Input echo: shows the portion of the input file used to specify this run. Does not repeat descriptions of objects left from prior runs in the same session when CLEAR is not used. Error and warning messages relating to specific lines of the input are repeated after or near the line to which they relate, prefixed with '?'. Lines not used due to a preprocessor #if command (see The Preprocessor) with a false expression are prefixed with a '0' in the leftmost column; all preprocessor command lines are prefixed with a '#' in that column. SUM, Run summary. As of July 1992, *NOT IMPLEMENTED*: generates no output and no error message. Should be defined and implemented, or else deleted??. ZDD, Zone data dump. Detailed dump of internal simulation values, useful for verifying that your input is as desired. Should be made less cryptic (July 1992)??. Requires *rpZone*. ZST, Zone statistics. Requires *rpZone*. @@ -84,7 +84,7 @@ Choice indicating report type. Report types may be described at greater length, {{ member_table({ "units": "", - "legal_range": "*see above*", + "legal_range": "*see above*", "default": "*none*", "required": "Yes", "variability": "constant" @@ -293,7 +293,7 @@ Characters per line for a UDT (user-defined report). If widths specified in REPO {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ -1", + "legal_range": "*x* ≥ -1", "default": "-1 (as wide as needed)", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/reportcol.md b/doc/src/docs/input-data/reportcol.md index 5389522bc..d028a50ec 100644 --- a/doc/src/docs/input-data/reportcol.md +++ b/doc/src/docs/input-data/reportcol.md @@ -77,7 +77,7 @@ Space between (to left of) column, in character positions. Allows you to space c {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "1", "required": "No", "variability": "constant" @@ -93,7 +93,7 @@ Column width. {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "10", "required": "No", "variability": "constant" @@ -109,7 +109,7 @@ Number of digits after decimal point. {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "*flexible format*", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/rsys.md b/doc/src/docs/input-data/rsys.md index 01b61fe5d..5feff7343 100644 --- a/doc/src/docs/input-data/rsys.md +++ b/doc/src/docs/input-data/rsys.md @@ -99,7 +99,7 @@ Specifies systems heating/cooling availability during simulation. Type: choice -Generate performance map(s) for this RSYS. Comma-separated text is written to file PM\_[rsName].csv. This is a debugging capability that is not necessarily maintained. The format of the generated csv text file may change and is unrelated to the PERFORMANCEMAP input scheme used via *rsPerfMapHtg* and *rsPerfMapClg*. +Generate performance map(s) for this RSYS. Comma-separated text is written to file PM_[rsName].csv. This is a debugging capability that is not necessarily maintained. The format of the generated csv text file may change and is unrelated to the PERFORMANCEMAP input scheme used via *rsPerfMapHtg* and *rsPerfMapClg*. {{ member_table({ @@ -251,7 +251,7 @@ Heating Annual Fuel Utilization Efficiency (AFUE). {{ member_table({ "units": "", - "legal_range": "0 $<$ x $\\le$ 1", + "legal_range": "0 $<$ x ≤ 1", "default": "0.9 if furnace, 1.0 if resistance", "required": "No", "variability": "constant" @@ -269,7 +269,7 @@ If rsType=WSHP, rsCapH is at source fluid temperature = 68 ^o^F. {{ member_table({ "units": "Btu/hr", - "legal_range": "*AUTOSIZE* or x $\\ge$ 0", + "legal_range": "*AUTOSIZE* or x ≥ 0", "default": "0", "required": "No", "variability": "constant" @@ -285,7 +285,7 @@ Nominal heating temperature rise (across system, not at zone) used during autosi {{ member_table({ "units": "^o^F", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "30 ^o^F if heat pump else 50 ^o^F", "required": "No", "variability": "constant" @@ -301,7 +301,7 @@ Heating autosizing capacity factor. If AUTOSIZEd, rsCapH or rsCap47 is set to rs {{ member_table({ "units": "", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "1.4", "required": "No", "variability": "constant" @@ -317,7 +317,7 @@ Heating operating fan power. For most rsTypes, heating air flow is calculated fr {{ member_table({ "units": "W/cfm", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "see above", "required": "No", "variability": "constant" @@ -511,7 +511,7 @@ For WSHP only: ratio of rsCapC to rsCapH. Used to derive capacity during autosi {{ member_table({ "units": "", - "legal_range": ".3 $\\leq$ x $<$ 2", + "legal_range": ".3 ≤ x $<$ 2", "default": "0.8", "required": "No", "variability": "Start of a run" @@ -605,7 +605,7 @@ For rsType=ASHP, auxiliary heating capacity. If AUTOSIZEd, rsCapAuxH is set to t {{ member_table({ "units": "Btu/hr", - "legal_range": "*AUTOSIZE* or *x* $\\ge$ 0", + "legal_range": "*AUTOSIZE* or *x* ≥ 0", "default": "0", "required": "No", "variability": "constant" @@ -727,7 +727,7 @@ If rsType=WSHP and both rsCapC and rsCapH are autosized, both are set to the lar {{ member_table({ "units": "Btu/hr", - "legal_range": "*AUTOSIZE* or *x* $\\le$ 0 (x $>$ 0 coverted to $<$ 0)", + "legal_range": "*AUTOSIZE* or *x* ≤ 0 (x $>$ 0 coverted to $<$ 0)", "default": "*none*", "required": "Yes if rsType includes cooling", "variability": "constant" @@ -792,7 +792,7 @@ Standard air volumetric flow rate per nominal ton of cooling capacity. {{ member_table({ "units": "cfm/ton", - "legal_range": "150 $\\le$ x $\\le$ 500", + "legal_range": "150 ≤ x ≤ 500", "default": "350", "required": "No", "variability": "constant" @@ -808,7 +808,7 @@ Cooling fan power. {{ member_table({ "units": "W/cfm", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0.365", "required": "No", "variability": "constant" @@ -840,7 +840,7 @@ Type: float {{ member_table({ "units": "", - "legal_range": "0 $\\le$ x $\\le$ 0.5", + "legal_range": "0 ≤ x ≤ 0.5", "default": "ASHPHYDRONIC: 0.25 ASHP: derived from rsHSPF", "required": "No", "variability": "hourly" @@ -856,7 +856,7 @@ Cooling cyclic degradation coefficient, valid for configurations having compress {{ member_table({ "units": "", - "legal_range": "0 $\\le$ x $\\le$ 0.5", + "legal_range": "0 ≤ x ≤ 0.5", "default": "0", "required": "No", "variability": "hourly" @@ -936,7 +936,7 @@ Heating nominal capacity. Provides type-independent probe source for RSYS heati {{ member_table({ "units": "Btu/hr", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "no heating: 0 heat pump: rsCap47 (input or AUTOSIZEd) other: rsCapH (input or AUTOSIZEd)", "required": "No", "variability": "daily" @@ -952,7 +952,7 @@ Cooling nominal capacity. Provides type-independent probe source for RSYS cooli {{ member_table({ "units": "Btu/hr", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "no cooling: 0 other: rsCap95 (input or AUTOSIZEd)", "required": "No", "variability": "daily" @@ -1027,9 +1027,9 @@ Type: float {{ member_table({ "units": "cfm", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "*none*", - "required": "if rsOAVType $\ne$ NONE", + "required": "if rsOAVType ≠ NONE", "variability": "constant" }) }} @@ -1043,7 +1043,7 @@ Type: float {{ member_table({ "units": "", - "legal_range": "0 $\\le$ x $\\le$ 1", + "legal_range": "0 ≤ x ≤ 1", "default": "0.2", "required": "No", "variability": "constant" @@ -1059,7 +1059,7 @@ Type: float {{ member_table({ "units": "W/cfm", - "legal_range": "0 < x $\\le$ 5", + "legal_range": "0 < x ≤ 5", "default": "per rsOAVTYPE FIXED: rsFanPwrC VARIABLE: NightBreeze vendor curve based on rsOAVvfDs", "required": "No", "variability": "constant" @@ -1075,7 +1075,7 @@ OAV inlet (source) air temperature. Supply air temperature at the zone is gener {{ member_table({ "units": "^o^F", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "Dry-bulb temperature from weather file", "required": "No", "variability": "hourly" @@ -1109,7 +1109,7 @@ Name of zone to which relief air is directed during RSYS OAV operation, typicall "units": "", "legal_range": "*name of ZONE*", "default": "*none*", - "required": "if rsOAVType $\ne$ NONE", + "required": "if rsOAVType ≠ NONE", "variability": "constant" }) }} @@ -1155,7 +1155,7 @@ Entering air relative humidity (for model testing). {{ member_table({ "units": "W/cfm", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "Derived from entering air state", "required": "No", "variability": "constant" @@ -1171,7 +1171,7 @@ Air dry-bulb temperature at the outdoor portion of this system. {{ member_table({ "units": "^o^F", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "From weather file", "required": "No", "variability": "hourly" diff --git a/doc/src/docs/input-data/sgdist.md b/doc/src/docs/input-data/sgdist.md index 4244a42cd..cbeb7e280 100644 --- a/doc/src/docs/input-data/sgdist.md +++ b/doc/src/docs/input-data/sgdist.md @@ -75,7 +75,7 @@ Fraction of solar gain directed to specified surface when the owning window's in {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1,and sum of window's sgFSO's $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1,and sum of window's sgFSO's ≤ 1", "default": "*none*", "required": "Yes", "variability": "monthly-hourly" @@ -91,7 +91,7 @@ Fraction of solar gain directed to specified surface when the owning window's in {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1, and sum of window's sgFSC's $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1, and sum of window's sgFSC's ≤ 1", "default": "*sgFSO*", "required": "No", "variability": "monthly-hourly" diff --git a/doc/src/docs/input-data/shade.md b/doc/src/docs/input-data/shade.md index 251d2f5e0..89d039120 100644 --- a/doc/src/docs/input-data/shade.md +++ b/doc/src/docs/input-data/shade.md @@ -28,7 +28,7 @@ Depth of overhang (from plane of window to outside edge of overhang). A zero val {{ member_table({ "units": "ft", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "monthly-hourly" @@ -44,7 +44,7 @@ Distance from top of window to bottom of overhang. {{ member_table({ "units": "ft", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "monthly-hourly" @@ -60,7 +60,7 @@ Distance from left edge of window (as viewed from the outside) to the left end o {{ member_table({ "units": "ft", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "monthly-hourly" @@ -76,7 +76,7 @@ Distance from right edge of window (as viewed from the outside) to the right end {{ member_table({ "units": "ft", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "monthly-hourly" @@ -92,7 +92,7 @@ Height of flap hanging down from outer edge of overhang. {{ member_table({ "units": "ft", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "monthly-hourly" @@ -108,7 +108,7 @@ Depth of left fin from plane of window. A zero value indicates no fin. {{ member_table({ "units": "ft", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "monthly-hourly" @@ -124,7 +124,7 @@ Vertical distance from top of window to top of left fin. {{ member_table({ "units": "ft", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "monthly-hourly" @@ -140,7 +140,7 @@ Distance from left edge of window to left fin. {{ member_table({ "units": "ft", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "monthly-hourly" @@ -156,7 +156,7 @@ Vertical distance from bottom of window to bottom of left fin. {{ member_table({ "units": "ft", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "monthly-hourly" @@ -172,7 +172,7 @@ Depth of right fin from plane of window. A 0 value indicates no fin. {{ member_table({ "units": "ft", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "monthly-hourly" @@ -188,7 +188,7 @@ Vertical distance from top of window to top of right fin. {{ member_table({ "units": "ft", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "monthly-hourly" @@ -204,7 +204,7 @@ Distance from right edge of window to right fin. {{ member_table({ "units": "ft", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "monthly-hourly" @@ -220,7 +220,7 @@ Vertical distance from bottom of window to bottom of right fin. {{ member_table({ "units": "ft", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0", "required": "No", "variability": "monthly-hourly" diff --git a/doc/src/docs/input-data/surface.md b/doc/src/docs/input-data/surface.md index 4c1486201..1ee1fe880 100644 --- a/doc/src/docs/input-data/surface.md +++ b/doc/src/docs/input-data/surface.md @@ -49,7 +49,7 @@ Gross area of surface. (CSE computes the net area for simulation by subtracting {{ member_table({ "units": "ft^2^", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "*none*", "required": "Yes", "variability": "constant" @@ -65,7 +65,7 @@ Surface tilt from horizontal. Values outside the range 0 to 360 are first normal {{ csv_table("sfType = FLOOR, *sfTilt*=180, default = 180 (fixed value) sfType = WALL, 60 $<$ *sfTilt* $<$ 180, default = 90 -sfType = CEILING, 0 $\leq$ *sfTilt* $\leq$ 60, default = 0") +sfType = CEILING, 0 ≤ *sfTilt* ≤ 60, default = 0") }} {{ @@ -89,7 +89,7 @@ Azimuth of surface with respect to znAzm. The azimuth used in simulating a surfa "units": "degrees", "legal_range": "unrestricted", "default": "*none*", - "required": "Required if *sfTilt* $\\neq$ 0 and *sfTilt* $\\neq$ 180", + "required": "Required if *sfTilt* ≠ 0 and *sfTilt* ≠ 180", "variability": "constant" }) }} @@ -102,15 +102,15 @@ Provides user control over how CSE models conduction for this surface. {{ csv_table("QUICK, Surface is modeled using a simple conductance. Heat capacity effects are ignored. Either sfCon or sfU (next) can be specified. -DELAYED, DELAYED\_HOUR, DELAYED\_SUBHOUR, Surface is modeled using a multi-layer finite difference technique that represents heat capacity effects. If the time constant of the surface is too short to accurately simulate, a warning message is issued and the Quick model is used. The program **cannot** use the finite difference model if sfU rather than sfCon is specified. +DELAYED, DELAYED_HOUR, DELAYED_SUBHOUR, Surface is modeled using a multi-layer finite difference technique that represents heat capacity effects. If the time constant of the surface is too short to accurately simulate, a warning message is issued and the Quick model is used. The program **cannot** use the finite difference model if sfU rather than sfCon is specified. AUTO, Program selects Quick or the appropriate Delayed automatically according to the time constant of the surface (if sfU is specified, Quick is selected). -FD (or FORWARD\_DIFFERENCE), Selects the forward difference model (used with short time steps and the CZM/UZM zone model). +FD (or FORWARD_DIFFERENCE), Selects the forward difference model (used with short time steps and the CZM/UZM zone model). KIVA, Uses a two-dimensional finite difference model to simulate heat flow through foundation surfaces.") }} {{ member_table({ - "legal_range": "QUICK, DELAYED, DELAYED\_HOUR, DELAYED\_SUBOUR, AUTO, 2D_FND", + "legal_range": "QUICK, DELAYED, DELAYED_HOUR, DELAYED_SUBOUR, AUTO, 2D_FND", "default": "AUTO", "required": "No", "variability": "constant" @@ -131,7 +131,7 @@ Surface U-value (NOT including surface (air film) conductances). For surfaces fo {{ member_table({ "units": "Btuh/ft^2^-^o^F", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "Determined from *sfCon*", "required": "if *sfCon* not given and if *sfExCnd* is not GROUND", "variability": "constant" @@ -163,12 +163,12 @@ Note: When *sfExCnd* is GROUND, *sfCon* may be omitted to indicate: Type: float -Sublayer thickness adjustment factor for FORWARD\_DIFFERENCE conduction model used with sfCon surfaces. Material layers in the construction are divided into sublayers as needed for numerical stability. sfLThkF allows adjustment of the thickness criterion used for subdivision. A value of 0 prevents subdivision; the default value (0.5) uses layers with conservative thickness equal to half of an estimated safe value. Fewer (thicker) sublayers improves runtime at the expense of accurate representation of rapid changes. +Sublayer thickness adjustment factor for FORWARD_DIFFERENCE conduction model used with sfCon surfaces. Material layers in the construction are divided into sublayers as needed for numerical stability. sfLThkF allows adjustment of the thickness criterion used for subdivision. A value of 0 prevents subdivision; the default value (0.5) uses layers with conservative thickness equal to half of an estimated safe value. Fewer (thicker) sublayers improves runtime at the expense of accurate representation of rapid changes. {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0.5", "required": "No", "variability": "constant" @@ -198,7 +198,7 @@ Surface exterior absorptivity. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.5", "required": "Required if *sfExCnd* = AMBIENT or *sfExCnd* = SPECIFIEDT", "variability": "monthly-hourly" @@ -214,7 +214,7 @@ Surface interior solar absorptivity. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "sfType = CEILING, 0.2; sfType = WALL, 0.6; sfType = FLOOR, 0.8", "required": "No", "variability": "monthly-hourly" @@ -230,7 +230,7 @@ Surface exterior long wave (thermal) emittance. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.9", "required": "No", "variability": "constant" @@ -246,7 +246,7 @@ Surface interior long wave (thermal) emittance. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.9", "required": "No", "variability": "constant" @@ -294,7 +294,7 @@ Ground reflectivity for this surface. {{ member_table({ "units": "fraction", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "grndRefl", "required": "No", "variability": "Monthly - Hourly" @@ -305,7 +305,7 @@ Ground reflectivity for this surface. Type: float -Inside surface (air film) conductance. Ignored for sfModel = Forward\_Difference. Default depends on the surface type. +Inside surface (air film) conductance. Ignored for sfModel = Forward_Difference. Default depends on the surface type. {{ csv_table("sfType = FLOOR or CEILING, 1.32 @@ -315,7 +315,7 @@ other, 1.5") {{ member_table({ "units": "Btuh/ft^2^-^o^F", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "*See above*", "required": "No", "variability": "constant" @@ -326,7 +326,7 @@ other, 1.5") Type: float -Outside combined surface (air film) conductance. Ignored for sfModel = Forward\_Difference. The default value is dependent upon the exterior conditions: +Outside combined surface (air film) conductance. Ignored for sfModel = Forward_Difference. The default value is dependent upon the exterior conditions: {{ csv_table("sfExCnd = AMBIENT, dflExH (Top-level member, described above) @@ -338,14 +338,14 @@ sfExCnd = ADIABATIC, not applicable") {{ member_table({ "units": "Btuh/ft^2^-^o^F", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "see above", "required": "No", "variability": "constant" }) }} -When sfModel = Forward\_Difference, several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on sfExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. +When sfModel = Forward_Difference, several models are available for calculating inside and outside surface convective coefficients. Inside surface faces can be exposed only to zone conditions. Outside faces may be exposed either to ambient conditions or zone conditions, based on sfExCnd. Only UNIFIED and INPUT are typically used. The other models were used during CSE development for comparison. For details, see CSE Engineering Documentation. {{ csv_table("Model, Exposed to ambient, Exposed to zone @@ -366,7 +366,7 @@ Type: choice -Selects the model used for exterior surface convection when sfModel = Forward\_Difference. +Selects the model used for exterior surface convection when sfModel = Forward_Difference. {{ member_table({ @@ -387,7 +387,7 @@ Characteristic length of surface, used in derivation of forced exterior convecti {{ member_table({ "units": "ft", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "10", "required": "No", "variability": "constant" @@ -403,7 +403,7 @@ Exterior convection coefficient adjustment factor. When sfExHcModel=INPUT, hc=s {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "1", "required": "No", "variability": "subhourly" @@ -442,7 +442,7 @@ Type: choice - Selects the model used for the inside (zone) surface convection when sfModel = Forward\_Difference. + Selects the model used for the inside (zone) surface convection when sfModel = Forward_Difference. {{ member_table({ @@ -463,7 +463,7 @@ Type: float {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "1", "required": "No", "variability": "subhourly" @@ -534,7 +534,7 @@ Needed for foundation wall height, otherwise ignored. Maybe combine with sfDepth {{ member_table({ "units": "ft", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "*none*", "required": "when *sfType* is WALL and *sfExtCnd* is GROUND", "variability": "constant" @@ -550,7 +550,7 @@ Exposed perimeter of foundation floors. {{ member_table({ "units": "ft", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "*none*", "required": "when *sfType* is FLOOR, *sfFnd* is set, and *sfExtCnd* is GROUND", "variability": "constant" @@ -569,7 +569,7 @@ Depth below grade of surface. For walls, sfDepthBG is measured to the lower edg {{ member_table({ "units": "ft", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "*none*", "required": "No", "variability": "constant" @@ -587,7 +587,7 @@ Conductances from outside face of surface to the weather file ground temperature {{ member_table({ "units": "Btuh/ft^2^-^o^F", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "see above", "required": "No", "variability": "constant" @@ -603,7 +603,7 @@ Resistance overall construction resistance. TODO: full documentation. {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "*none*", "required": "No", "variability": "constant" @@ -631,10 +631,10 @@ The following tables summarize the defaults and legal ranges of surface members **Member** **WALL** **FLOOR** **CEILING** ---------- ------------------------- ------------ ----------------------- sfTilt optional, default=90, 60 n.a. (fixed optional, default=0, 0 - $<$ *sfTilt* $<$ 180 at 180) $\le$ *sfTilt* $\le$ 60 + $<$ *sfTilt* $<$ 180 at 180) ≤ *sfTilt* ≤ 60 sfAzm **required** n.a. **required if sfTilt - $>$ 0** + > 0** ------------------------------------------------------------------------- ----------------------------------------------------------------------- diff --git a/doc/src/docs/input-data/terminal.md b/doc/src/docs/input-data/terminal.md index 59e691f03..05657e4bc 100644 --- a/doc/src/docs/input-data/terminal.md +++ b/doc/src/docs/input-data/terminal.md @@ -42,7 +42,7 @@ Local heating thermostat setpoint. Hourly expression may be used to schedule as {{ member_table({ "units": "^o^F", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "*no thermostat control*", "required": "No", "variability": "hourly" @@ -58,7 +58,7 @@ Minimum local heat output or set local heat output. If tuTLh is given, this is t {{ member_table({ "units": "Btuh", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "0 if tuTLh given else no local heat", "required": "For set output local heat", "variability": "hourly" @@ -76,7 +76,7 @@ Maximum desired power, used when thermostat is calling for heat continuously, su {{ member_table({ "units": "Btuh", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "", "required": "Yes, if tuTLh given", "variability": "hourly" @@ -92,7 +92,7 @@ Setpoint priority: when there is more than one capability with the same setpoint {{ member_table({ "units": "", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "100", "required": "No", "variability": "constant" @@ -161,7 +161,7 @@ Air heating thermostat set point; implies *set temperature* air capability. May {{ member_table({ "units": "^o^F", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "No thermostat-controlled air heating", "required": "No", "variability": "hourly" @@ -177,7 +177,7 @@ Air cooling thermostat set point; implies *set temperature* air capability. May {{ member_table({ "units": "^o^F", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "No thermostat-controlled air cooling", "required": "No", "variability": "hourly" @@ -197,7 +197,7 @@ CSE will default tuVfDs to the largest of tuVfMn, tuVfMxH, and tuVfMxC unless a {{ member_table({ "units": "cfm", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "largest of tuVfMn, tuVfMxH, and tuVfMxC if all are constant", "required": "Yes, if tuVfmn, tuVfmxH, or tuVfMxC is variable", "variability": "hourly" @@ -214,7 +214,7 @@ Sizing factor for autosized terminal air flows. Default value (1.1) specifies 1 {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "1.1", "required": "No", "variability": "constant" @@ -255,7 +255,7 @@ If either setpoint (tuTH or tuTC) is given, tuVfMn is the cfm used when the ther {{ member_table({ "units": "cfm", - "legal_range": "*AUTOSIZE* or *x* $\\ge$ 0", + "legal_range": "*AUTOSIZE* or *x* ≥ 0", "default": "if tuTH or tuTC given, else no air heat/cool", "required": "For set output air operation", "variability": "hourly" @@ -271,7 +271,7 @@ Maximum heating air flow rate, subject to air handler limitations. This terminal {{ member_table({ "units": "cfm", - "legal_range": "*AUTOSIZE* or *x* $\\ge$ 0", + "legal_range": "*AUTOSIZE* or *x* ≥ 0", "default": "*none*", "required": "If *tuTH* given", "variability": "hourly" @@ -287,7 +287,7 @@ Maximum cooling air flow rate, before air handler limitations, used when the the {{ member_table({ "units": "cfm", - "legal_range": "*AUTOSIZE* or *x* $\\ge$ 0", + "legal_range": "*AUTOSIZE* or *x* ≥ 0", "default": "*none*", "required": "If *tuTC* given", "variability": "hourly" @@ -303,7 +303,7 @@ Cool setpoint priority. The lowest numbered priority is used first when there ar {{ member_table({ "units": "", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "1", "required": "No", "variability": "constant" @@ -319,7 +319,7 @@ Heat setpoint priority. Lowest numbered priority is used first when there are eq {{ member_table({ "units": "", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "1", "required": "No", "variability": "constant" @@ -335,7 +335,7 @@ Leakage of supply air to return, increasing supply volume and return temperature {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.05", "required": "No", "variability": "constant" @@ -353,7 +353,7 @@ Supply air to return plenum heat loss as a fraction of supply air to return air {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.1", "required": "No", "variability": "constant" @@ -394,7 +394,7 @@ Rated capacity of the heating coil. The coil will never supply more heat than it {{ member_table({ "units": "Btu/hr", - "legal_range": "*AUTOSIZE* or *x* $\\gt$ 0", + "legal_range": "*AUTOSIZE* or *x* > 0", "default": "*none*", "required": "Yes", "variability": "constant" @@ -410,7 +410,7 @@ Capacity factor for autosized terminal heating coil. Default value (1.1) specif {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "1.1", "required": "No", "variability": "constant" @@ -488,7 +488,7 @@ Terminal fan schedule. May be scheduled with an hourly variable expression. csv_table("OFF, fan does not run ON, fan may run HEATING, fan may run when local heat is in use - VAV, fan may run when AIRHANDLER supply fan is on or when doing setback headting and ssCtrl is ZONE\_HEAT or BOTH (future).") + VAV, fan may run when AIRHANDLER supply fan is on or when doing setback headting and ssCtrl is ZONE_HEAT or BOTH (future).") }} A series fan (see tfanType) runs whenever on; a parallel fan runs only enough to keep terminal cfm at terminal minimum plus fan cfm; thus it may not run at all when the VAV flow from the AIRHANDLER is sufficient. @@ -512,7 +512,7 @@ Backdraft leakage when terminal fan off., as a fraction of tfanVfDs. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.1 if fan present", "required": "No", "variability": "constant" @@ -528,7 +528,7 @@ Terminal fan design flow rate. To specify .x times zone or terminal cfm, use a C {{ member_table({ "units": "cfm", - "legal_range": "x $\\le$ 0", + "legal_range": "x ≤ 0", "default": "*none*", "required": "Yes (if fan present)", "variability": "constant" @@ -544,7 +544,7 @@ Terminal fan external static pressure. {{ member_table({ "units": "inches H2O", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "0.3", "required": "No", "variability": "constant" @@ -560,7 +560,7 @@ Terminal fan/motor/drive combined efficiency. {{ member_table({ "units": "", - "legal_range": "0 $\le$ *x* $\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.08", "required": "No", "variability": "constant" @@ -573,11 +573,13 @@ Type: *k0, k1, k2, k3, x0* *k0* through *k3* are the coefficients of a cubic polynomial for the curve relating fan relative energy consumption to relative air flow above the minimum flow *x0*. Up to five *floats* may be given, separated by commas. 0 is used for any omitted trailing values. The values are used as follows: -$$z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3$$ +$$ +z = k_0 + k_1 \cdot (x - x_0)| + k_2 \cdot (x - x_0)|^2 + k_3 \cdot (x - x_0)|^3 +$$ where: -- $x$ is the relative fan air flow (as fraction of *tfanVfDs*; 0 $\le$ x $\le$ 1); +- $x$ is the relative fan air flow (as fraction of *tfanVfDs*; 0 ≤ x ≤ 1); - $x_0$ is the minimum relative air flow (default 0); - $(x - x_0)|$ is the "positive difference", i.e. $(x - x_0)$ if $x > x_0$; else 0; - $z$ is the relative energy consumption. @@ -617,7 +619,7 @@ Optional to indicates the end of terminal definition. Alternatively, the end of {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "*none*", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/top-members.md b/doc/src/docs/input-data/top-members.md index c6a317ee7..59b2684f4 100644 --- a/doc/src/docs/input-data/top-members.md +++ b/doc/src/docs/input-data/top-members.md @@ -65,7 +65,7 @@ Note that "warm-up" days (see wuDays) occur before the start day specified by be {{ member_table({ "units": "", - "legal_range": "SUN,\\ MON,\\ TUE,\\ WED,\\ THU,\\ FRI,\\ SAT", + "legal_range": "SUN, MON, TUE, WED, THU, FRI, SAT", "default": "THU", "required": "No", "variability": "constant" @@ -95,7 +95,7 @@ Number of "warm-up" days used to initialize the simulator. Simulator initializat {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 365", + "legal_range": "0 ≤ *x* ≤ 365", "default": "7", "required": "No", "variability": "constant" @@ -111,7 +111,7 @@ Number of subhour steps used per hour in the simulation. 4 is the time-honored v {{ member_table({ "units": "", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "4", "required": "No", "variability": "constant" @@ -161,7 +161,7 @@ Specifies the convergence tolerance for humidity calculations in CNE models (no {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0.0001", "required": "No", "variability": "constant" @@ -241,7 +241,7 @@ Zone temperature unmet load tolerance. At the end of each subhour, if a conditi {{ member_table({ "units": "^o^F", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "1 ^o^F", "required": "No", "variability": "constant" @@ -257,7 +257,7 @@ Unmet load warning threshold. A warning message is issued for each zone having {{ member_table({ "units": "hr", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "150", "required": "No", "variability": "constant" @@ -289,7 +289,7 @@ The maximum ratio of growth between neighboring cells in the direction away from {{ member_table({ "units": "", - "legal_range": "x $\\geq$ 1.0", + "legal_range": "x ≥ 1.0", "default": "1.5", "required": "No", "variability": "constant" @@ -355,7 +355,7 @@ Default exterior surface (air film) conductance used for opaque and glazed surfa Type: float -Reference compass azimuth (0 = north, 90 = east, etc.). All zone orientations (and therefore surface orientations) are relative to this value, so the entire building can be rotated by changing bldgAzm only. If a value outside the range 0^o^ $\leq$ *x* $<$ 360^o^ is given, it is normalized to that range. +Reference compass azimuth (0 = north, 90 = east, etc.). All zone orientations (and therefore surface orientations) are relative to this value, so the entire building can be rotated by changing bldgAzm only. If a value outside the range 0^o^ ≤ *x* $<$ 360^o^ is given, it is normalized to that range. {{ member_table({ @@ -376,7 +376,7 @@ Elevation of the building site. Used internally for the computation of barometri {{ member_table({ "units": "ft", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0 (sea level)", "required": "No", "variability": "constant" @@ -408,7 +408,7 @@ Run serial number for the simulation. Increments on each run in a session; appea {{ member_table({ "units": "", - "legal_range": "0 $\leq$ *x* $\leq$ 999", + "legal_range": "0 ≤ *x* ≤ 999", "default": "0", "required": "No", "variability": "constant" @@ -583,7 +583,7 @@ AirNet pressure warning threshold. A warning message is issued when the absolute {{ member_table({ "units": "lb/ft2", - "legal_range": "x $\\gt$ 0", + "legal_range": "x > 0", "default": "10", "required": "No", "variability": "constant" @@ -599,7 +599,7 @@ AirNet pressure error threshold. The simulation terminates with a message if th {{ member_table({ "units": "lb/ft2", - "legal_range": "x $\\gt$ 0", + "legal_range": "x > 0", "default": "30", "required": "No", "variability": "constant" @@ -662,13 +662,13 @@ ASHWAT convection coefficient change threshold -- full calculation is triggered The following system variables (4.6.4) are determined from the weather file for each simulated hour: {{ - csv_table("\$radBeam, beam irradiance on tracking surface (integral for hour, Btu/ft^2^). -\$radDiff, diffuse irradiance on a horizontal surface (integral for hour, Btu/ft^2^). -\$tDbO, dry bulb temp (^o^F). -\$tWbO, wet bulb temp (^o^F). -\$wO, humidity ratio -\$windDirDeg, wind direction (degrees, NOT RADIANS; 0=N, 90=E). -\$windSpeed, wind speed (mph).") + csv_table("$radBeam, beam irradiance on tracking surface (integral for hour, Btu/ft^2^). +$radDiff, diffuse irradiance on a horizontal surface (integral for hour, Btu/ft^2^). +$tDbO, dry bulb temp (^o^F). +$tWbO, wet bulb temp (^o^F). +$wO, humidity ratio +$windDirDeg, wind direction (degrees, NOT RADIANS; 0=N, 90=E). +$windSpeed, wind speed (mph).") }} The following are the terms determined from the weather file for internal use, and can be referenced with the probes shown. @@ -752,7 +752,7 @@ Reference temperature (see above paragraph). {{ member_table({ "units": "^o^F", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "60^o^", "required": "No", "variability": "constant" @@ -768,7 +768,7 @@ Reference relative humidity (see above). {{ member_table({ "units": "", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.6", "required": "No", "variability": "constant" @@ -785,7 +785,7 @@ Global ground reflectivity, used except where other value specified with sfGrndR {{ member_table({ "units": "", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.2", "required": "No", "variability": "Monthly-Hourly" @@ -803,7 +803,7 @@ Long-wave emittance of the exterior grade surface used in two-dimensional finite {{ member_table({ "units": "", - "legal_range": "0.0 $\le$ x $\le$ 1.0", + "legal_range": "0.0 ≤ x ≤ 1.0", "default": "0.8", "required": "No", "variability": "constant" @@ -820,7 +820,7 @@ Ground surface roughness. Used for convection and wind speed corrections in two- {{ member_table({ "units": "ft", - "legal_range": "x $\\geq$ 0.0", + "legal_range": "x ≥ 0.0", "default": "0.1", "required": "No", "variability": "constant" @@ -838,7 +838,7 @@ Minimum value for wind speed {{ member_table({ "units": "mph", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0.5", "required": "No", "variability": "constant" @@ -854,7 +854,7 @@ Wind Factor: multiplier for wind speeds read from weather file. windF is applied {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "0.25", "required": "No", "variability": "constant" @@ -878,7 +878,7 @@ Specifies characteristics of ground terrain in the project region. {{ member_table({ "units": "", - "legal_range": "1 $\\leq$ *x* $\\leq$ 5", + "legal_range": "1 ≤ *x* ≤ 5", "default": "4", "required": "No", "variability": "constant" @@ -897,7 +897,7 @@ Multiplier for direct normal (beam) irradiance {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "1", "required": "No", "variability": "constant" @@ -913,7 +913,7 @@ Multiplier for diffuse horizonal irradiance. {{ member_table({ "units": "", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "1", "required": "No", "variability": "constant" @@ -926,7 +926,9 @@ Type: choice Enable/disable convection convective coefficient pressure modification factor. -$$0.24 + 0.76 \cdot P_{Location}/P_{SeaLevel}$$ +$$ +0.24 + 0.76 \cdot P_{Location}/P_{SeaLevel} +$$ {{ member_table({ @@ -1113,7 +1115,7 @@ The format of a TDV file is the same as an [IMPORTFILE][importfile] with the pro 1, TDV Data (TDV/Btu), *runNumber*, *runNumber* is not checked 2, *timestamp* optionally in quotes accessible via @TOP.TDVFileTimeStamp 3, *title*, hour *title* (in quotes if it contains commas) accessible via @TOP.TDVFileTitle -4, tdvElec, tdvFuel comma separated column names (optionally in quotes)\ not checked +4, tdvElec, tdvFuel comma separated column names (optionally in quotes) not checked 5 .., *valElec*,*valFuel* comma separated numerical values (8760 or 8784 rows) tdvElec is always in column 1, tdvFuel always in column 2 column names in row 4 do not determine order", True) }} @@ -1213,7 +1215,7 @@ Total lines per page to be assumed for reports. Number of lines used for text (i {{ member_table({ "units": "lines", - "legal_range": "*x* $\\ge$ 50", + "legal_range": "*x* ≥ 50", "default": "66", "required": "No", "variability": "constant" @@ -1229,7 +1231,7 @@ Number of lines to be skipped at the top of each report page (prior to header). {{ member_table({ "units": "lines", - "legal_range": "0 $\\geq$ *x* $\\geq$ 12", + "legal_range": "0 ≥ *x* ≥ 12", "default": "3", "required": "No", "variability": "constant" @@ -1245,7 +1247,7 @@ Number of lines reserved at the bottom of each report page. repBotM determines t {{ member_table({ "units": "lines", - "legal_range": "0 $\\geq$ *x* $\\geq$ 12", + "legal_range": "0 ≥ *x* ≥ 12", "default": "3", "required": "No", "variability": "constant" @@ -1261,7 +1263,7 @@ Characters per line for report headers and footers, user defined reports, and er {{ member_table({ "units": "characters", - "legal_range": "78 $\\leq$ *x* $\\leq$ 132", + "legal_range": "78 ≤ *x* ≤ 132", "default": "78", "required": "No", "variability": "constant" @@ -1343,7 +1345,7 @@ Heating outdoor design dry bulb temperature used for autosizing heating equipmen {{ member_table({ "units": "^o^F", - "legal_range": "*x* $\\ge$ 0", + "legal_range": "*x* ≥ 0", "default": "derived assuming RH=.7", "required": "No", "variability": "hourly" diff --git a/doc/src/docs/input-data/towerplant.md b/doc/src/docs/input-data/towerplant.md index 811e7fea3..1bc9b68b4 100644 --- a/doc/src/docs/input-data/towerplant.md +++ b/doc/src/docs/input-data/towerplant.md @@ -121,7 +121,7 @@ Low speed for TWOSPEED fan, as a fraction of full speed cfm. {{ member_table({ "units": "", - "legal_range": "0 < *x* $\le$ 1", + "legal_range": "0 < *x* ≤ 1", "default": "0.5", "required": "No", "variability": "constant" @@ -170,7 +170,9 @@ Motor (and drive, if any) efficiency for tower fans. The next four items specify the coefficients of polynomial curves relating fan power consumption to average speed (cfm) for the various fan types. For the non-variable speed cases CSE uses linear polynomials of the form -$$p = a + b \cdot \text{spd}$$ +$$ +p = a + b \cdot \text{spd} +$$ where *p* is the power consumption as a fraction of full speed power consumption, and *spd* is the average speed as a fraction of full speed. The linear relationship reflects the fact that the fans cycle to match partial loads. A non-0 value may be given for the constant part *a* to reflect start-stop losses. For the two speed fan, separate polynomials are used for low and high speed operation; the default coefficients assume power input varies with the cube of speed, that is, at low speed (*ctLoSpd*) the relative power input is *ctLoSpd3*. For the variable speed case a cubic polynomial is used. @@ -196,7 +198,7 @@ Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{s Type: *a, b* -Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for low speed of TWOSPEED fan, when *spd* $\le$ *ctLoSpd*. +Coefficients of linear fan power consumption polynomial $p = a + b \cdot \text{spd}$ for low speed of TWOSPEED fan, when *spd* ≤ *ctLoSpd*. {{ member_table({ @@ -253,7 +255,7 @@ The default value is the sum of the rejected (condenser) heats (including pump h {{ member_table({ "units": "Btuh", - "legal_range": "*x* $\neq$ 0", + "legal_range": "*x* ≠ 0", "default": "(sum of loads)/*ctN*", "required": "No", "variability": "constant" @@ -355,7 +357,7 @@ Off-design capacity, per tower. {{ member_table({ "units": "Btuh", - "legal_range": "*x* $\neq$ 0", + "legal_range": "*x* ≠ 0", "default": "(sum of loads)/*ctN*", "required": "No", "variability": "constant" @@ -366,12 +368,12 @@ Off-design capacity, per tower. Type: float -Off-design air flow, per tower. Must differ from design air flow; thus *ctVfDs* and *ctVfOd* cannot both be defaulted if off-design conditions are being given. The off-design air and water flows must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. +Off-design air flow, per tower. Must differ from design air flow; thus *ctVfDs* and *ctVfOd* cannot both be defaulted if off-design conditions are being given. The off-design air and water flows must be chosen so that maOd/mwOd are not equal to maDs/mwDs. {{ member_table({ "units": "cfm", - "legal_range": "*x* > 0; *x* $\neq$ *ctVfDs*", + "legal_range": "*x* > 0; *x* ≠ *ctVfDs*", "default": "(sum of loads)/51/*ctN*", "required": "No", "variability": "constant" @@ -382,12 +384,12 @@ Off-design air flow, per tower. Must differ from design air flow; thus *ctVfDs* Type: float -Off-design water flow, per tower. Must differ from design water flow; thus, both cannot be defaulted if off-design conditions are being given. Value must be chosen so that maOd/mwOd $\neq$ maDs/mwDs. +Off-design water flow, per tower. Must differ from design water flow; thus, both cannot be defaulted if off-design conditions are being given. Value must be chosen so that maOd/mwOd are not equal to maDs/mwDs. {{ member_table({ "units": "gpm", - "legal_range": "*x* > 0; *x* $\neq$ *ctGpmDs*", + "legal_range": "*x* > 0; *x* ≠ *ctGpmDs*", "default": "(sum of pumps)/*ctN*", "required": "No", "variability": "constant" @@ -450,7 +452,9 @@ Type: float Optional. Exponent in the formula -$$\text{ntuA} = k \cdot (mwi/ma)^{ctK}$$ +$$ +\text{ntuA} = k \cdot (mwi/ma)^{ctK} +$$ where ntuA is the number of transfer units on the air side, mwi and ma are the water and air flows respectively, and k is a constant. @@ -473,7 +477,7 @@ Fraction of air flow which occurs when tower fan is off, due to stack effect (co {{ member_table({ "units": "", - "legal_range": "0 $\le$ *x* $\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": ".18", "required": "No", "variability": "constant" @@ -491,7 +495,7 @@ Blowdown rate: fraction of inflowing water that is bled from the sump down the d {{ member_table({ "units": "", - "legal_range": "0 $\le$ *x* $\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": ".01", "required": "No", "variability": "constant" @@ -507,7 +511,7 @@ Drift rate: fraction of inflowing water that is blown out of tower as droplets w {{ member_table({ "units": "", - "legal_range": "0 $\le$ *x* $\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0", "required": "No", "variability": "constant" diff --git a/doc/src/docs/input-data/window.md b/doc/src/docs/input-data/window.md index cdc15b7e5..195462c2c 100644 --- a/doc/src/docs/input-data/window.md +++ b/doc/src/docs/input-data/window.md @@ -27,7 +27,7 @@ Overall height of window (including frame). {{ member_table({ "units": "ft", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "*none*", "required": "Yes", "variability": "constant" @@ -43,7 +43,7 @@ Overall width of window (including frame). {{ member_table({ "units": "ft", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "*none*", "required": "Yes", "variability": "constant" @@ -59,8 +59,8 @@ Overall area of window (including frame). {{ member_table({ "units": "ft^2^", - "legal_range": "x $>$ 0", - "default": "*wnHeight* \* *wnWidth*", + "legal_range": "x > 0", + "default": "*wnHeight* * *wnWidth*", "required": "No", "variability": "constant" }) @@ -75,7 +75,7 @@ Area multiplier; can be used to represent multiple identical windows. {{ member_table({ "units": "", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "1", "required": "No", "variability": "constant" @@ -121,7 +121,7 @@ Approach 2. Enter wnU=U-factor and let the wnInH and wnExH default. Tnormally th {{ member_table({ "units": "Btuh/ft^2^-^o^F", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "*none*", "required": "Yes", "variability": "constant" @@ -137,7 +137,7 @@ Fenestration system (including frame) U-factor evaluated at NFRC heating conditi {{ member_table({ "units": "Btuh/ft^2^-^o^F", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "gtUNFRC", "required": "Required when *wnModel* = ASHWAT", "variability": "constant" @@ -153,7 +153,7 @@ Window exterior long wave (thermal) emittance. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.84", "required": "No", "variability": "constant" @@ -169,7 +169,7 @@ Window interior long wave (thermal) emittance. {{ member_table({ "units": "", - "legal_range": "0 $\\le$ *x* $\\le$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "0.84", "required": "No", "variability": "constant" @@ -193,7 +193,7 @@ The large default value of 10,000 represents a near-0 resistance, for the conven {{ member_table({ "units": "Btuh/ft^2^-^o^F", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "10000", "required": "No", "variability": "constant" @@ -209,7 +209,7 @@ Window exterior surface (air film) conductance. {{ member_table({ "units": "Btuh/ft^2^-^o^F", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "same as owning surface", "required": "No", "variability": "constant" @@ -254,7 +254,7 @@ Characteristic length of surface, used in derivation of forced exterior convecti {{ member_table({ "units": "ft", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "10", "required": "No", "variability": "constant" @@ -270,7 +270,7 @@ Exterior convection coefficient adjustment factor. When wnExHcModel=INPUT, hc=w {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "1", "required": "No", "variability": "subhourly" @@ -281,7 +281,7 @@ Exterior convection coefficient adjustment factor. When wnExHcModel=INPUT, hc=w Type: choice -Selects the model used for the inside (zone) surface convection when wnModel = Forward\_Difference. +Selects the model used for the inside (zone) surface convection when wnModel = Forward_Difference. {{ member_table({ @@ -302,7 +302,7 @@ Interior convection coefficient adjustment factor. When wnInHcModel=INPUT, hc=w {{ member_table({ "units": "", - "legal_range": "x $\\ge$ 0", + "legal_range": "x ≥ 0", "default": "1", "required": "No", "variability": "subhourly" @@ -372,7 +372,7 @@ SHGC multiplier with shades open. Overrides gtSMSO. {{ member_table({ "units": "fraction", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "gtSMSO or 1", "required": "No", "variability": "Monthly - Hourly" @@ -388,7 +388,7 @@ SHGC multiplier with shades closed. Overrides gtSMSC {{ member_table({ "units": "fraction", - "legal_range": "0 $\leq$ *x* $\leq$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "wnSMSO or gtSMSC", "required": "No", "variability": "Monthly - Hourly" @@ -404,7 +404,7 @@ Number of glazings in the window (bare glass only, not including any interior or {{ member_table({ "units": "", - "legal_range": "0 $<$ *x* $\leq$ 4", + "legal_range": "0 $<$ *x* ≤ 4", "default": "gtNGLZ", "required": "Required when *wnModel* = ASHWAT", "variability": "constant" @@ -452,7 +452,7 @@ Glazing dirt loss factor. {{ member_table({ "units": "fraction", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "*none*", "required": "No", "variability": "constant" @@ -468,7 +468,7 @@ Ground reflectivity for this window. {{ member_table({ "units": "fraction", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "sfGrndRefl", "required": "No", "variability": "Monthly - Hourly" @@ -484,7 +484,7 @@ View factor from this window to sky for diffuse radiation. For the shading effec {{ member_table({ "units": "fraction", - "legal_range": "0 $\\leq$ x $\\leq$ 1", + "legal_range": "0 ≤ x ≤ 1", "default": "0.5 - 0.5 cos(tilt) = .5 for vertical surface", "required": "No", "variability": "Monthly - Hourly" @@ -500,7 +500,7 @@ View factor from this window to ground for diffuse radiation. For the shading ef {{ member_table({ "units": "fraction", - "legal_range": "0 $\\leq$ x $\\leq$ 1", + "legal_range": "0 ≤ x ≤ 1", "default": "0.5 + 0.5 .5 for vertical surface", "required": "No", "variability": "Monthly - Hourly" diff --git a/doc/src/docs/input-data/zone.md b/doc/src/docs/input-data/zone.md index 54e77fbe9..4520fc0d9 100644 --- a/doc/src/docs/input-data/zone.md +++ b/doc/src/docs/input-data/zone.md @@ -49,7 +49,7 @@ Nominal zone floor area. {{ member_table({ "units": "ft^2^", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "*none*", "required": "Yes", "variability": "constant" @@ -65,7 +65,7 @@ Nominal zone volume. {{ member_table({ "units": "ft^3^", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "*none*", "required": "Yes", "variability": "constant" @@ -113,7 +113,7 @@ Nominal zone ceiling height relative to zone floor (typically 8 – 10 ft). {{ member_table({ "units": "ft", - "legal_range": "*x* $>$ 0", + "legal_range": "*x* > 0", "default": "*znVol* / *znArea*", "required": "No", "variability": "constant" @@ -129,8 +129,8 @@ Nominal eave height above ground level. Used re calculation of local surface win {{ member_table({ "units": "ft", - "legal_range": "x $>$ 0", - "default": "*znFloorZ + infStories\*8*", + "legal_range": "x > 0", + "default": "*znFloorZ + infStories*8*", "required": "No", "variability": "constant" }) @@ -145,8 +145,8 @@ Zone "air" heat capacity: represents heat capacity of air, furniture, "light" wa {{ member_table({ "units": "Btu/^o^F", - "legal_range": "x $\\geq$ 0", - "default": "3.5 \* *znArea*", + "legal_range": "x ≥ 0", + "default": "3.5 * *znArea*", "required": "No", "variability": "constant" }) @@ -161,7 +161,7 @@ Zone air exchange rate used in determination of interior surface convective coef {{ member_table({ "units": "ACH", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "as modeled", "required": "No", "variability": "subhourly" @@ -193,7 +193,7 @@ Zone hygric inertia ratio. In zone moisture balance calculations, the effective {{ member_table({ "units": "", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "1", "required": "No", "variability": "constant" @@ -209,7 +209,7 @@ Zone shade closure. Determines insolation through windows (see WINDOW members *w {{ member_table({ "units": "", - "legal_range": "0 $\\leq$ *x* $\\leq$ 1", + "legal_range": "0 ≤ *x* ≤ 1", "default": "1 when cooling was used in *previous* hour, else 0", "required": "No", "variability": "hourly" @@ -291,7 +291,7 @@ Heating capacity at current conditions {{ member_table({ "units": "Btuh", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "*none*", "required": "No", "variability": "hourly" @@ -307,7 +307,7 @@ Rated heating capacity {{ member_table({ "units": "Btuh", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "*none*", "required": "No", "variability": "constant" @@ -323,7 +323,7 @@ Cooling capacity at current conditions {{ member_table({ "units": "Btuh", - "legal_range": "x $\\leq$ 0", + "legal_range": "x ≤ 0", "default": "*none*", "required": "No", "variability": "hourly" @@ -339,7 +339,7 @@ Rated cooling capacity {{ member_table({ "units": "Btuh", - "legal_range": "x $\\leq$ 0", + "legal_range": "x ≤ 0", "default": "*none*", "required": "No", "variability": "constant" @@ -359,7 +359,7 @@ Zone infiltration air changes per hour. {{ member_table({ "units": "1/hr", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.5", "required": "No", "variability": "hourly" @@ -375,7 +375,7 @@ Zone effective leakage area (ELA). {{ member_table({ "units": "in^2^", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0.0", "required": "No", "variability": "hourly" @@ -399,7 +399,7 @@ Zone local shielding class, used in derivation of local wind speed for ELA infil {{ member_table({ "units": "", - "legal_range": "1 $\\leq$ *x* $\\leq$ 5", + "legal_range": "1 ≤ *x* ≤ 5", "default": "3", "required": "No", "variability": "constant" @@ -415,7 +415,7 @@ Number of stories in zone, used in ELA model. {{ member_table({ "units": "", - "legal_range": "1 $\\leq$ *x* $\\leq$ 3", + "legal_range": "1 ≤ *x* ≤ 3", "default": "1", "required": "No", "variability": "constant" @@ -431,7 +431,7 @@ Wind speed modifier factor. The weather file wind speed is multiplied by this f {{ member_table({ "units": "", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "derived from znEaveZ and infShld", "required": "No", "variability": "constant" @@ -485,7 +485,7 @@ Exhaust fan on fraction. On/off control assumed, so electricity requirement is p {{ member_table({ "units": "fraction", - "legal_range": "0 $\\leq$ x $\\leq$ 1", + "legal_range": "0 ≤ x ≤ 1", "default": "1", "required": "No", "variability": "hourly" @@ -494,8 +494,7 @@ Exhaust fan on fraction. On/off control assumed, so electricity requirement is p Example: The following would run an exhaust fan 70% of the time between 8 AM and 5 PM: - xfanFOn = select( (\$hour >= 7 && \$hour < 5), .7, - default, 0 ); + xfanFOn = select( ($hour >= 7 && $hour < 5), .7, default, 0 ); ### xfanVfDs @@ -507,7 +506,7 @@ Exhaust fan design flow; 0 or not given indicates no fan. {{ member_table({ "units": "cfm", - "legal_range": "x $\\geq$ 0", + "legal_range": "x ≥ 0", "default": "0, no fan", "required": "If fan present", "variability": "constant" @@ -523,7 +522,7 @@ Exhaust fan external static pressure. {{ member_table({ "units": "inches", - "legal_range": "0.05 $\\leq$ *x* $\\leq$ 1.0", + "legal_range": "0.05 ≤ *x* ≤ 1.0", "default": "0.3", "required": "No", "variability": "constant" @@ -541,7 +540,7 @@ Fan input power per unit air flow (at design flow and pressure). {{ member_table({ "units": "W/cfm", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "derived from xfanEff", "required": "If xfanEff and xfanShaftBhp not present", "variability": "constant" @@ -557,7 +556,7 @@ Exhaust fan/motor/drive combined efficiency. {{ member_table({ "units": "fraction", - "legal_range": "0 $\\leq$ x $\\leq$ 1", + "legal_range": "0 ≤ x ≤ 1", "default": "0.08", "required": "No", "variability": "constant" @@ -573,7 +572,7 @@ Fan shaft power at design flow and pressure. {{ member_table({ "units": "BHP", - "legal_range": "x $>$ 0", + "legal_range": "x > 0", "default": "derived from xfanElecPwr and xfanVfDs", "required": "If xfanElecPwr not present", "variability": "constant" diff --git a/doc/src/docs/input-structure.md b/doc/src/docs/input-structure.md index bfd92f55f..8bf61467e 100644 --- a/doc/src/docs/input-structure.md +++ b/doc/src/docs/input-structure.md @@ -678,7 +678,7 @@ The type of value to which an expression must evaluate is specified in each memb *int*, An integer or whole number (-1, 0, 1, 2 etc.). If a real is given, an error may result, but we should change it to convert it (discarding any fractional part). *Boolean*, Same as int; indicates that a 0 value will be interpreted as \"false\" and any non-0 value will be interpreted as \"true\". *string*, A string of characters; for example, some text enclosed in quotes. - *object name*, Name of an object of a specified class. Differs from *string* in that the name need not be enclosed in quotes if it consists only of letters, digits, \_, and \$, begins with a non-digit, and is different from all reserved words now in or later added to the language (see [Object Names][object-names]).
The object may be defined after it is referred to. An expression using conditional operators, functions, etc. may be used provided its value is known when the RUN action command is reached.; no members requiring object names accept values that vary during the simulation. + *object name*, Name of an object of a specified class. Differs from *string* in that the name need not be enclosed in quotes if it consists only of letters, digits, _, and $, begins with a non-digit, and is different from all reserved words now in or later added to the language (see [Object Names][object-names]).
The object may be defined after it is referred to. An expression using conditional operators, functions, etc. may be used provided its value is known when the RUN action command is reached.; no members requiring object names accept values that vary during the simulation. *choice*, One of several choices; a list of the acceptable values is given wherever a *choice* is required. The choices are usually listed in CAPITALS but may be entered in upper or lower case as desired. As with object names, quotes are allowed but not required.
Expressions may be used for choices, subject to the variability of the context. *date*, May be entered as a 3-letter month abbreviation followed by an *int* for the day of the month, or an *int* for the Julian day of the year (February is assumed to have 28 days). Expressions may be used subject to variability limitations. Examples:
    `Jan 23 // January 23`
    `23 // January 23`
    `32 // February 1`") }} @@ -702,7 +702,7 @@ This section reviews how to enter ordinary non-varying numbers and other values. *float*, optional - sign, digits, and decimal point. Very large or small values can be entered by following the number with an \"e\" and a power of ten. Examples:
    `1.0 1. .1 -5534.6 123.e25 4.56e-23`
The decimal point indicates a float as opposed to an int.
Generally it doesn't matter as CSE converts ints to floats as required, but be careful when dividing: CSE interprets \"2/3\" as integer two divided by integer 3, which will produce an integer 0 before CSE notices any need to convert to *float*. If you mean .6666667, say 2./3, 2/3., or .6666667. *feet and inches*, Feet and inches may be entered where a *float* number of feet is required by typing the feet (or a 0 if none), a single quote ', then the inches. (Actually this is an operator meaning \"divide the following value by 12 and add it to the preceding value\", so expressions can work with it.) Examples:
    `3'6 0'.5 (10+20)'(2+3)` *string*, \"Text\" -- desired characters enclosed in double quotes.
Maximum length 80 characters (make 132??). To put a \" within the \"'s, precede it with a backslash.
Certain control codes can be represented with letters preceded with a backslash as follows:
    `\\e escape`
    `\\t tab`
    `\\f form feed`
    `\\r carriage return`
    `\\n newline or line feed` - *object name*, Same as *string*, or without quotes if name consists only of letters, digits, \_, and \$, begins with a non-digit, and is different from all reserved words now in or later added to the language (see [Object Names][object-names]). Control character codes (ASCII 0-31) are not allowed. + *object name*, Same as *string*, or without quotes if name consists only of letters, digits, _, and $, begins with a non-digit, and is different from all reserved words now in or later added to the language (see [Object Names][object-names]). Control character codes (ASCII 0-31) are not allowed. *choice*, Same as string; quotes optional on choice words valid for the member. Capitalization does not matter. *date*,Julian day of year (as *int* constant), or month abbreviation
    `Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec`
followed by the *int* day of month. (Actually, the month names are operators implemented to add the starting day of the month to the following *int* quantity).") }} @@ -1441,7 +1441,7 @@ The three general ways of using probes are: Here "`@zone[1].znArea`" is the probe. -2. During simulation. Probing during simulation, to make inputs be functions of conditions in the building or HVAC systems, is limited because most of the members of interest are updated *after* CSE has evaluated the user's expressions for the subhour or other time interval -- this is logically necessary since the expressions are inputs. (An exception is the weather data, but this is also available through system variables such as \$tDbO.) +2. During simulation. Probing during simulation, to make inputs be functions of conditions in the building or HVAC systems, is limited because most of the members of interest are updated *after* CSE has evaluated the user's expressions for the subhour or other time interval -- this is logically necessary since the expressions are inputs. (An exception is the weather data, but this is also available through system variables such as $tDbO.) However, a number of *prior subhour* values are available for probing, making it possible to implement relationships like "the local heat output of this terminal is 1000 Btuh if the zone temperature last subhour was below 65, else 500": From 7dfdee9538c3e42f1aa9c6db62ce54ab0da04a9d Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Thu, 25 Sep 2025 15:55:31 -0600 Subject: [PATCH 109/117] Use unicode degree symbols. --- doc/src/docs/input-data/airhandler.md | 58 ++++++++++---------- doc/src/docs/input-data/chiller.md | 4 +- doc/src/docs/input-data/construction.md | 2 +- doc/src/docs/input-data/coolplant.md | 2 +- doc/src/docs/input-data/descond.md | 8 +-- doc/src/docs/input-data/dhwheatrec.md | 8 +-- doc/src/docs/input-data/dhwloop.md | 2 +- doc/src/docs/input-data/dhwloopbranch.md | 6 +- doc/src/docs/input-data/dhwloopseg.md | 8 +-- doc/src/docs/input-data/dhwsolarcollector.md | 8 +-- doc/src/docs/input-data/dhwsolarsys.md | 12 ++-- doc/src/docs/input-data/dhwsys.md | 38 ++++++------- doc/src/docs/input-data/dhwtank.md | 10 ++-- doc/src/docs/input-data/dhwuse.md | 2 +- doc/src/docs/input-data/doas.md | 6 +- doc/src/docs/input-data/door.md | 10 ++-- doc/src/docs/input-data/ductseg.md | 8 +-- doc/src/docs/input-data/glazetype.md | 4 +- doc/src/docs/input-data/izxfer.md | 6 +- doc/src/docs/input-data/material.md | 12 ++-- doc/src/docs/input-data/perimeter.md | 2 +- doc/src/docs/input-data/pvarray.md | 10 ++-- doc/src/docs/input-data/rsys.md | 44 +++++++-------- doc/src/docs/input-data/surface.md | 12 ++-- doc/src/docs/input-data/terminal.md | 6 +- doc/src/docs/input-data/top-members.md | 30 +++++----- doc/src/docs/input-data/towerplant.md | 16 +++--- doc/src/docs/input-data/window.md | 10 ++-- doc/src/docs/input-data/zone.md | 12 ++-- 29 files changed, 178 insertions(+), 178 deletions(-) diff --git a/doc/src/docs/input-data/airhandler.md b/doc/src/docs/input-data/airhandler.md index 3120e7083..ce4bcff60 100644 --- a/doc/src/docs/input-data/airhandler.md +++ b/doc/src/docs/input-data/airhandler.md @@ -100,7 +100,7 @@ Giving _ahTsSp_ is disallowed for an air handler with no economizer, no heat coi {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "_number_, RA^*^, WZ, CZ, ZN^**^, ZN2^**^,", "default": "0", "required": "Yes, if coil(s) or economizer present", @@ -157,9 +157,9 @@ Minimum supply temperature. Also used as cooling supply temperature setpoint val {{ member_table({ - "units": "^o^F", - "legal_range": "_no limit_; typically: 40 ≤ _x_ ≤ 140^o^", - "default": "0^o^F", + "units": "°F", + "legal_range": "_no limit_; typically: 40 ≤ _x_ ≤ 140°", + "default": "0°F", "required": "Only for _ahTsSp_=RA", "variability": "hourly" }) @@ -169,9 +169,9 @@ Minimum supply temperature. Also used as cooling supply temperature setpoint val {{ member_table({ - "units": "^o^F", - "legal_range": "_no limit_; typically: 40 ≤ _x_ ≤ 140^o^", - "default": "999^o^ F", + "units": "°F", + "legal_range": "_no limit_; typically: 40 ≤ _x_ ≤ 140°", + "default": "999° F", "required": "Only for _asTsSp_=RA; recommend giving for _ahTsSp_=ZN", "variability": "hourly" }) @@ -219,7 +219,7 @@ Cooling design supply temperature, for sizing coil vs fan. {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "x > 0", "default": "_ahTsMn_", "required": "No", @@ -235,7 +235,7 @@ Heating design supply temperature, for sizing coil vs fan. {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "x $>$ 0", "default": "_ahTsMx_", "required": "No", @@ -281,8 +281,8 @@ If return air moves outside the range _ahTsRaMn_ to _ahTsRaMx_, the supply tempe {{ member_table({ - "units": "^o^F", - "legal_range": "_no limit_; typically: 40 ≤ _x_ ≤ 140^o^", + "units": "°F", + "legal_range": "_no limit_; typically: 40 ≤ _x_ ≤ 140°", "default": "_none_", "required": " Only for _ahTsSp_=RA", "variability": "hourly" @@ -755,7 +755,7 @@ OFF, coil will not operate, no matter how cold supply air is. A HW coil sh Type: _float_ -Total heating (output) capacity. For an ELECTRIC, AHP, GAS, or OIL coil, this capacity is always available. For an HW heating coil, when the total heat being requested from the coil's HEATPLANT would overload the HEATPLANT, the capacity of all HW coils connected to the plant (in TERMINALs as well as AIRHANDLERs) is reduced proportionately until the requested total heat is within the HEATPLANT's capacity. For AHP, this value represents the AHRI rated capacity at 47 ^o^F outdoor temperature. +Total heating (output) capacity. For an ELECTRIC, AHP, GAS, or OIL coil, this capacity is always available. For an HW heating coil, when the total heat being requested from the coil's HEATPLANT would overload the HEATPLANT, the capacity of all HW coils connected to the plant (in TERMINALs as well as AIRHANDLERs) is reduced proportionately until the requested total heat is within the HEATPLANT's capacity. For AHP, this value represents the AHRI rated capacity at 47 °F outdoor temperature. {{ member_table({ @@ -1094,7 +1094,7 @@ An error will occur unless _ahpTFrMn_ < _ahpTFrPk_ < _ahpTFrMx_ and _ahpTF {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "_x_ > 0", "default": "_ahpTFrMn_: 17, _ahpTFrMx_: 47, _ahpTFrPk_: 42", "required": "No", @@ -1164,7 +1164,7 @@ Heat pump low temperature cutout setpoints. Heat pump is disabled (only the supp {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "", "default": "_ahpTOff_: 5, _ahpTOn_: 12", "required": "No", @@ -1402,9 +1402,9 @@ Minimum (effective surface) temperature of coil (evaporator). Represents refrige {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "_x_ $>$ 0", - "default": "40^o^F", + "default": "40°F", "required": "No", "variability": "constant" }) @@ -1693,9 +1693,9 @@ Design (rating) entering air dry bulb temperature, used with DX and CHW cooling {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "_x_ > 0", - "default": "80^o^F (AHRI)", + "default": "80°F (AHRI)", "required": "No", "variability": "constant" }) @@ -1709,9 +1709,9 @@ Design (rating) entering air wet bulb temperature, for CHW coils. {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "_x_ > 0", - "default": "67^o^F (AHRI)", + "default": "67°F (AHRI)", "required": "No", "variability": "constant" }) @@ -1725,9 +1725,9 @@ Design (rating) condenser temperature (outdoor air temperature) for DX coils. {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "_x_ > 0", - "default": "95^o^F (AHRI)", + "default": "95°F (AHRI)", "required": "No", "variability": "constant" }) @@ -1912,7 +1912,7 @@ Economizer outside air temperature high limit. The economizer is disabled (outsi {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "_number_ or RA", "default": "RA (return air temperature)", "required": "No", @@ -1928,7 +1928,7 @@ Economizer outside air enthalpy high limit. The economizer is disabled (outside {{ member_table({ - "units": "Btu/^o^F", + "units": "Btu/°F", "legal_range": "_number_ or RA", "default": "999 (enthalpy limit disabled)", "required": "No", @@ -2334,7 +2334,7 @@ For _cchCM_ = PTC or PTC_CLO, the low temperature (max power) and high temperatu {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "", "default": "_cchTMn_: 0; _cchTMx_: 150", "required": "No", @@ -2350,9 +2350,9 @@ For _cchCM_ = PTC or PTC_CLO, how much warmer than the outdoor temp CSE assumes {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "", - "default": "20^o^F", + "default": "20°F", "required": "No", "variability": "constant" }) @@ -2370,9 +2370,9 @@ For _cchCM_ = TSTAT, in subhours when compressor does not run, the crankcase hea {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "_cchTOff_ ≥ _cchTOn_", - "default": "_cchTOn_: 72^o^F; _chcTOff_: _chcTOn_", + "default": "_cchTOn_: 72°F; _chcTOff_: _chcTOn_", "required": "No", "variability": "constant" }) diff --git a/doc/src/docs/input-data/chiller.md b/doc/src/docs/input-data/chiller.md index bfd0c0361..971e2387b 100644 --- a/doc/src/docs/input-data/chiller.md +++ b/doc/src/docs/input-data/chiller.md @@ -44,7 +44,7 @@ Design supply temperature: temperature of primary water leaving chiller at which {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "*x* > 0", "default": "44", "required": "No", @@ -60,7 +60,7 @@ Design condenser temperature: temperature of secondary water entering chiller co {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "*x* > 0", "default": "85", "required": "No", diff --git a/doc/src/docs/input-data/construction.md b/doc/src/docs/input-data/construction.md index c9b8ddfb7..c6dc5aa9c 100644 --- a/doc/src/docs/input-data/construction.md +++ b/doc/src/docs/input-data/construction.md @@ -24,7 +24,7 @@ U-value for the construction (NOT including surface (air film) conductances; see {{ member_table({ - "units": "Btuh/ft^2^-^o^F", + "units": "Btuh/ft^2^-°F", "legal_range": "x > 0", "default": "calculated from LAYERs", "required": "if omitted, LAYERs must follow", diff --git a/doc/src/docs/input-data/coolplant.md b/doc/src/docs/input-data/coolplant.md index ef90641f9..3eff6c6ef 100644 --- a/doc/src/docs/input-data/coolplant.md +++ b/doc/src/docs/input-data/coolplant.md @@ -54,7 +54,7 @@ Coolplant primary loop supply temperature setpoint: setpoint temperature for chi {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "*x* > 0", "default": "44", "required": "No", diff --git a/doc/src/docs/input-data/descond.md b/doc/src/docs/input-data/descond.md index e15d27ee3..162b7f3d1 100644 --- a/doc/src/docs/input-data/descond.md +++ b/doc/src/docs/input-data/descond.md @@ -40,7 +40,7 @@ Design dry-bulb temperature (maxiumum temperature on design day). {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "no-limitations?", "default": "0.0", "required": "No", @@ -57,7 +57,7 @@ Coincident daily dry-bulb range. {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "no-limitations?", "default": "**none**", "required": "No", @@ -73,7 +73,7 @@ Coincident wet-bulb design temperature. {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "no-limitations?", "default": "**none**", "required": "No", @@ -89,7 +89,7 @@ Coincident daily wet-bulb range. {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "no-limitations?", "default": "**none**", "required": "No", diff --git a/doc/src/docs/input-data/dhwheatrec.md b/doc/src/docs/input-data/dhwheatrec.md index 6b490d981..548664b26 100644 --- a/doc/src/docs/input-data/dhwheatrec.md +++ b/doc/src/docs/input-data/dhwheatrec.md @@ -137,9 +137,9 @@ Temperature drop between the fixture drain and DHWHEATREC drain-side inlet. The {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "*x* ≥ 0", - "default": "4.6 ^o^F", + "default": "4.6 °F", "required": "No", "variability": "hourly" }) @@ -153,9 +153,9 @@ Drain-side inlet water temperature during warmup. During the warmup portion of {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "*x* > 0", - "default": "65 ^o^F", + "default": "65 °F", "required": "No", "variability": "hourly" }) diff --git a/doc/src/docs/input-data/dhwloop.md b/doc/src/docs/input-data/dhwloop.md index 2d59de624..425771fe1 100644 --- a/doc/src/docs/input-data/dhwloop.md +++ b/doc/src/docs/input-data/dhwloop.md @@ -56,7 +56,7 @@ Inlet temperature of first DHWLOOPSEG. {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "*x* > 0", "default": "DHWSYS wsTUse", "required": "No", diff --git a/doc/src/docs/input-data/dhwloopbranch.md b/doc/src/docs/input-data/dhwloopbranch.md index ea64c26de..c21d24f55 100644 --- a/doc/src/docs/input-data/dhwloopbranch.md +++ b/doc/src/docs/input-data/dhwloopbranch.md @@ -72,7 +72,7 @@ Pipe insulation conductivity {{ member_table({ - "units": "Btuh-ft/ft^2^-^o^F", + "units": "Btuh-ft/ft^2^-°F", "legal_range": "*x* $>$ 0", "default": "0.02167", "required": "No", @@ -104,7 +104,7 @@ Combined radiant/convective exterior surface conductance between insulation (or {{ member_table({ - "units": "Btuh/ft^2^-^o^F", + "units": "Btuh/ft^2^-°F", "legal_range": "*x* $>$ 0", "default": "1.5", "required": "No", @@ -193,7 +193,7 @@ Surrounding equivalent temperature. {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "*x* $>$ 0", "default": "*70*", "required": "No", diff --git a/doc/src/docs/input-data/dhwloopseg.md b/doc/src/docs/input-data/dhwloopseg.md index 0cb3469cf..104b32aac 100644 --- a/doc/src/docs/input-data/dhwloopseg.md +++ b/doc/src/docs/input-data/dhwloopseg.md @@ -77,7 +77,7 @@ Pipe insulation conductivity {{ member_table({ - "units": "Btuh-ft/ft^2^-^o^F", + "units": "Btuh-ft/ft^2^-°F", "legal_range": "x > 0", "default": "0.02167", "required": "No", @@ -109,7 +109,7 @@ Combined radiant/convective exterior surface conductance between insulation (or {{ member_table({ - "units": "Btuh/ft^2^-^o^F", + "units": "Btuh/ft^2^-°F", "legal_range": "x > 0", "default": "1.5", "required": "No", @@ -125,7 +125,7 @@ Surrounding equivalent temperature. {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "x > 0", "default": "70", "required": "No", @@ -141,7 +141,7 @@ Fraction of hour when no draw occurs. {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "x > 0", "default": "70", "required": "No", diff --git a/doc/src/docs/input-data/dhwsolarcollector.md b/doc/src/docs/input-data/dhwsolarcollector.md index 7c19b22ea..b6cf1a19e 100644 --- a/doc/src/docs/input-data/dhwsolarcollector.md +++ b/doc/src/docs/input-data/dhwsolarcollector.md @@ -74,7 +74,7 @@ Fit slope {{ member_table({ - "units": "Btuh/ft^2-^o^F", + "units": "Btuh/ft^2-°F", "legal_range": "", "default": "-0.727", "required": "No", @@ -218,7 +218,7 @@ Collector piping surround temperature. {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "x ≥ 32", "default": "70.0", "required": "No", @@ -264,7 +264,7 @@ Temperature difference between the tank and collector outlet where pump turns on {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "", "default": "10.0", "required": "No", @@ -280,7 +280,7 @@ Temperature difference between the tank and collector outlet where pump turns of {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "", "default": "5.0", "required": "No", diff --git a/doc/src/docs/input-data/dhwsolarsys.md b/doc/src/docs/input-data/dhwsolarsys.md index 9248907d8..53c21e6a2 100644 --- a/doc/src/docs/input-data/dhwsolarsys.md +++ b/doc/src/docs/input-data/dhwsolarsys.md @@ -18,7 +18,7 @@ Name of METER object, if any, to which DHWSOLARSYS electrical energy use is reco {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "*name of a METER*", "default": "*not recorded*", "required": "No", @@ -34,7 +34,7 @@ Specific heat for the collector fluid. {{ member_table({ - "units": "Btu/lbm-^o^F", + "units": "Btu/lbm-°F", "legal_range": "x > 0", "default": "0.9", "required": "No", @@ -100,7 +100,7 @@ Temperature limit for the tank collector. {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "x ≥ 0", "default": "180.0", "required": "No", @@ -116,7 +116,7 @@ Heat transfer coefficient for the tank multiplied by area. {{ member_table({ - "units": "Btuh/^o^F", + "units": "Btuh/°F", "legal_range": "", "default": "", "required": "No", @@ -146,7 +146,7 @@ Total tank insulation resistance, built-in plus exterior wrap. {{ member_table({ - "units": "ft^2^-^o^F/Btuh", + "units": "ft^2^-°F/Btuh", "legal_range": "", "default": "", "required": "No", @@ -178,7 +178,7 @@ Surrounding temperature. {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "", "default": "", "required": "No", diff --git a/doc/src/docs/input-data/dhwsys.md b/doc/src/docs/input-data/dhwsys.md index d61c8dd5d..aab635dca 100644 --- a/doc/src/docs/input-data/dhwsys.md +++ b/doc/src/docs/input-data/dhwsys.md @@ -144,8 +144,8 @@ Specifies cold (mains) water temperature supplying this DHWSYS. DHWHEATER suppl {{ member_table({ - "units": "^o^F", - "legal_range": "> 32 ^o^F", + "units": "°F", + "legal_range": "> 32 °F", "default": "Mains temp from weather file", "required": "No", "variability": "hourly" @@ -162,8 +162,8 @@ CAUTION: wsTInletTest is intended for testing and model validation studies and s {{ member_table({ - "units": "^o^F", - "legal_range": "> 32 ^o^F", + "units": "°F", + "legal_range": "> 32 °F", "default": "", "required": "No", "variability": "subhourly" @@ -178,8 +178,8 @@ Cold water inlet design temperature for sizing. {{ member_table({ - "units": "^o^F", - "legal_range": "x > 32 ^o^F", + "units": "°F", + "legal_range": "x > 32 °F", "default": "Annual minimums mains temperature", "required": "No", "variability": "constant" @@ -621,8 +621,8 @@ Hot water delivery temperature (at output of water heater(s) and at point of use {{ member_table({ - "units": "^o^F", - "legal_range": "> 32 ^o^F", + "units": "°F", + "legal_range": "> 32 °F", "default": "120", "required": "No", "variability": "hourly" @@ -639,8 +639,8 @@ CAUTION: wsTUseTest is intended for testing and model validation studies and sho {{ member_table({ - "units": "^o^F", - "legal_range": "> 32 ^o^F", + "units": "°F", + "legal_range": "> 32 °F", "default": "", "required": "No", "variability": "subhourly" @@ -655,8 +655,8 @@ Type: float {{ member_table({ - "units": "^o^F", - "legal_range": "> 32 ^o^F", + "units": "°F", + "legal_range": "> 32 °F", "default": "wsTUse", "required": "No", "variability": "hourly" @@ -671,8 +671,8 @@ Type: float {{ member_table({ - "units": "^o^F", - "legal_range": "> 32 ^o^F", + "units": "°F", + "legal_range": "> 32 °F", "default": "wsTSetPoint", "required": "No", "variability": "hourly" @@ -687,8 +687,8 @@ Specifies the design (sizing) set point temperature. {{ member_table({ - "units": "^o^F", - "legal_range": "x > 32 ^o^F", + "units": "°F", + "legal_range": "x > 32 °F", "default": "wsTUse", "required": "No", "variability": "constant" @@ -719,8 +719,8 @@ Design (sizing) source air temperature for HPWH DHWHEATERs. {{ member_table({ - "units": "^o^F", - "legal_range": "x > 32 ^o^F", + "units": "°F", + "legal_range": "x > 32 °F", "default": "Heating design temperature", "required": "No", "variability": "At the start and at the end of interval" @@ -812,7 +812,7 @@ Note also that wsTSetpoint can be also be modified hourly to achieve load-shifti Type: float -When (and only when) wsDRMethod=STATEOFCHARGE, wsTargetSOC specifies the target fraction of maximum tank heat content. The tank is deemed fully charged when its entire contents is at wsTSetpoint and 0 charged at 110 ^o^F. Schedules are used to indicate anticipated heat requirements. The STATEOFCHARGE method can be used in combined heat / DHW systems (see RSYS rsType=COMBINEDHEATDHW) when there is excess capacity during summer months, as shown in the following: +When (and only when) wsDRMethod=STATEOFCHARGE, wsTargetSOC specifies the target fraction of maximum tank heat content. The tank is deemed fully charged when its entire contents is at wsTSetpoint and 0 charged at 110 °F. Schedules are used to indicate anticipated heat requirements. The STATEOFCHARGE method can be used in combined heat / DHW systems (see RSYS rsType=COMBINEDHEATDHW) when there is excess capacity during summer months, as shown in the following: ``` wsTargetSOC = select( diff --git a/doc/src/docs/input-data/dhwtank.md b/doc/src/docs/input-data/dhwtank.md index 2d861f1b3..cb10620b2 100644 --- a/doc/src/docs/input-data/dhwtank.md +++ b/doc/src/docs/input-data/dhwtank.md @@ -46,7 +46,7 @@ Tank heat loss coefficient. {{ member_table({ - "units": "Btuh/^o^F", + "units": "Btuh/°F", "legal_range": "x ≥ 0", "default": "Derived from wtVol and wtInsulR", "required": "No", @@ -78,7 +78,7 @@ Specifies total tank insulation resistance. The input value should represent the {{ member_table({ - "units": "ft^2^-^o^F/Btuh", + "units": "ft^2^-°F/Btuh", "legal_range": "x ≥ 0.01", "default": "0", "required": "No", @@ -110,7 +110,7 @@ Tank surround temperature. {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "x ≥ 0", "default": "70", "required": "No", @@ -126,8 +126,8 @@ Tank average water temperature. {{ member_table({ - "units": "^o^F", - "legal_range": "> 32 ^o^F", + "units": "°F", + "legal_range": "> 32 °F", "default": "Parent DHWSYSTEM wsTUse", "required": "No", "variability": "hourly" diff --git a/doc/src/docs/input-data/dhwuse.md b/doc/src/docs/input-data/dhwuse.md index cf3ae2527..213f6744d 100644 --- a/doc/src/docs/input-data/dhwuse.md +++ b/doc/src/docs/input-data/dhwuse.md @@ -89,7 +89,7 @@ Mixed-water use temperature at the fixture. Cannot be specified when wuHotF is g {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "x ≤ 0", "default": "0", "required": "when wuHeatRecEF is given or parent DHWSYS includes DHWHEATREC(s)", diff --git a/doc/src/docs/input-data/doas.md b/doc/src/docs/input-data/doas.md index 63e6dfcad..db25f7723 100644 --- a/doc/src/docs/input-data/doas.md +++ b/doc/src/docs/input-data/doas.md @@ -162,7 +162,7 @@ Caution: oaTEx is not checked for reasonableness. {{ member_table({ - "units": "^o^F", + "units": "°F", "legal_range": "", "default": "Outdoor dry-bulb", "required": "No", @@ -343,7 +343,7 @@ Heating setpoint for tempering and/or heat exchanger bypass. {{ member_table({ - "units": "^o^F", + "units": "°F", "default": "68", "required": "No", "variability": "subhourly" @@ -390,7 +390,7 @@ Cooling setpoint for tempering and/or heat exchanger bypass. {{ member_table({ - "units": "^o^F", + "units": "°F", "default": "68", "required": "No", "variability": "subhourly" diff --git a/doc/src/docs/input-data/door.md b/doc/src/docs/input-data/door.md index 45e699555..b17ae5676 100644 --- a/doc/src/docs/input-data/door.md +++ b/doc/src/docs/input-data/door.md @@ -65,7 +65,7 @@ Door U-value, NOT including surface (air film) conductances. Allows direct entry {{ member_table({ - "units": "Btuh/ft^2^-^o^F", + "units": "Btuh/ft^2^-°F", "legal_range": "x > 0", "default": "Determined from *drCon*", "required": "if *drCon* not given", @@ -113,7 +113,7 @@ Door exterior solar absorptivity. Applicable only if sfExCnd of owning surface i {{ member_table({ - "units": "Btuh/ft^2^-^o^F", + "units": "Btuh/ft^2^-°F", "legal_range": "x > 0", "default": "same as owning surface", "required": "No", @@ -177,7 +177,7 @@ Door interior surface (air film) conductance. Ignored if drModel = Forward_Diffe {{ member_table({ - "units": "Btuh/ft^2^-^o^F", + "units": "Btuh/ft^2^-°F", "legal_range": "x > 0", "default": "same as owning surface", "required": "No", @@ -193,7 +193,7 @@ Door exterior surface (air film) conductance. Ignored if drModel = Forward_Diffe {{ member_table({ - "units": "Btuh/ft^2^-^o^F", + "units": "Btuh/ft^2^-°F", "legal_range": "x $>$ 0", "default": "same as owning surface", "required": "No", @@ -334,7 +334,7 @@ The default hcFrc value (used when drInHcFrCoeff is not provided) is hConvF * zn {{ member_table({ - "units": "Btuh/ft^2^-^o^F", + "units": "Btuh/ft^2^-°F", "legal_range": "", "default": "*inherited from parent surface*", "required": "No", diff --git a/doc/src/docs/input-data/ductseg.md b/doc/src/docs/input-data/ductseg.md index 07c944332..77a45cbc0 100644 --- a/doc/src/docs/input-data/ductseg.md +++ b/doc/src/docs/input-data/ductseg.md @@ -222,7 +222,7 @@ Air dry-bulb temperature surrounding duct segment. ## Installation ### Hardware and Software Requirements -CSE is a 32-bit Microsoft Windows console application. That is, it runs at the command prompt on Windows Vista, Windows 7, Windows 8, and Windows 10. Memory and disk space requirements depend on the size of projects being modeled, but are generally modest. +CSE is a command line application. That is, it runs in a terminal. Memory and disk space requirements depend on the size of projects being modeled, but are generally modest. To prepare input files, a text editor is required. Notepad will suffice, although a text editor intended for programming is generally more capable. Alternatively, some word processors can be used in "ASCII" or "text" or "non-document" mode. - - ### Installation Procedure Create a directory on your hard disk with the name \\CSE or some other name of your choice. Copy the files into that directory. Add the name of the directory to the PATH environment setting unless you intend to use CSE only from the CSE directory. - - From d291ae6aeed333a0df40f4bc67c854cfec318944 Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Fri, 10 Oct 2025 13:11:37 -0600 Subject: [PATCH 111/117] Add single page view. --- doc/src/docs/index.md | 4 ++++ doc/src/mkdocs.yml | 16 ++++++++++++++++ pyproject.toml | 1 + uv.lock | 14 ++++++++++++++ 4 files changed, 35 insertions(+) diff --git a/doc/src/docs/index.md b/doc/src/docs/index.md index 526185bee..fc8415a10 100644 --- a/doc/src/docs/index.md +++ b/doc/src/docs/index.md @@ -7,6 +7,10 @@ toc: false CSE is a general purpose building simulation model developed primarily to perform the required calculations for the California Building Energy Code Compliance for Residential buildings ([CBECC-Res](http://www.bwilcox.com/BEES/BEES.html)) software. +## CSE User Manual {-} + +This manual is presented as a multi-page HTML site. You can also view the entire manual as a [single page](./single_page). + ## CSE Source Code {-} The CSE source code is hosted on [GitHub](https://github.com/cse-sim/cse). diff --git a/doc/src/mkdocs.yml b/doc/src/mkdocs.yml index bc9f87d74..3f324c01a 100644 --- a/doc/src/mkdocs.yml +++ b/doc/src/mkdocs.yml @@ -27,6 +27,22 @@ plugins: - macros - search - awesome-nav + - print-site: + add_to_navigation: false + print_page_title: 'CSE Documentation (Single Page)' + print_page_basename: 'single_page' + add_print_site_banner: false + # Table of contents + add_table_of_contents: true + toc_title: 'Table of Contents' + toc_depth: 6 + # Content-related + add_full_urls: false + enumerate_headings: true + enumerate_figures: false + add_cover_page: false + include_css: true + enabled: true hooks: - hooks.py markdown_extensions: diff --git a/pyproject.toml b/pyproject.toml index 82007dade..034d84c8d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,6 +14,7 @@ dependencies = [ "python-slugify>=8.0.4", "pyyaml>=6.0.2", "types-pyyaml>=6.0.12.20250516", + "mkdocs-print-site-plugin" ] [dependency-groups] diff --git a/uv.lock b/uv.lock index 637acf318..7f286981c 100644 --- a/uv.lock +++ b/uv.lock @@ -146,6 +146,7 @@ dependencies = [ { name = "mkdocs-awesome-nav" }, { name = "mkdocs-macros-plugin" }, { name = "mkdocs-material" }, + { name = "mkdocs-print-site-plugin" }, { name = "python-slugify" }, { name = "pyyaml" }, { name = "types-pyyaml" }, @@ -167,6 +168,7 @@ requires-dist = [ { name = "mkdocs-awesome-nav", specifier = ">=3.1.2" }, { name = "mkdocs-macros-plugin", specifier = ">=1.3.7" }, { name = "mkdocs-material", git = "https://github.com/squidfunk/mkdocs-material.git?rev=6af73667b36c2c1043252d3bc9f772a665295ae6" }, + { name = "mkdocs-print-site-plugin" }, { name = "python-slugify", specifier = ">=8.0.4" }, { name = "pyyaml", specifier = ">=6.0.2" }, { name = "types-pyyaml", specifier = ">=6.0.12.20250516" }, @@ -454,6 +456,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728, upload-time = "2023-11-22T19:09:43.465Z" }, ] +[[package]] +name = "mkdocs-print-site-plugin" +version = "2.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mkdocs-material" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/18/5c71f48b83191fb30cc58617fea20f56647eaa6cafd06a7fb34c738c5acb/mkdocs_print_site_plugin-2.8.tar.gz", hash = "sha256:ab1c89cdb468352975e3bb3bb0ef25dcc2bb88931b03f173206dc95ab02f843f", size = 231688, upload-time = "2025-08-03T14:15:07.579Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/3e/7513f2f37c563da65d1b91781e047f4a1c0ceac8206d4f6042428428e4ad/mkdocs_print_site_plugin-2.8-py3-none-any.whl", hash = "sha256:838bd0a9b7141c11c0f1fdaa51ffe70c35740bec1f07c0806f8018e92f93f9da", size = 21477, upload-time = "2025-08-03T14:15:06.301Z" }, +] + [[package]] name = "mypy" version = "1.15.0" From e66af00521e8a9bdbc3cbaa8e0e75a40545f0078 Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Mon, 13 Oct 2025 10:06:22 -0600 Subject: [PATCH 112/117] Add ability to change dark/light theme. --- doc/src/mkdocs.yml | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/doc/src/mkdocs.yml b/doc/src/mkdocs.yml index 3f324c01a..7d96d5da9 100644 --- a/doc/src/mkdocs.yml +++ b/doc/src/mkdocs.yml @@ -16,9 +16,21 @@ theme: - navigation.footer # favicon: assets/favicon.ico # logo: assets/logo.svg - # palette: - # primary: blue grey - # accent: blue + palette: + - media: "(prefers-color-scheme)" + toggle: + icon: material/brightness-auto + name: Switch to light mode + - media: "(prefers-color-scheme: light)" + scheme: default + toggle: + icon: material/weather-sunny + name: Switch to dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + toggle: + icon: material/weather-night + name: Switch to system preference repo_name: cse repo_url: https://github.com/cse-sim/cse plugins: From e3d006d6e12fe80ec45b481ab783e4708c3ef572 Mon Sep 17 00:00:00 2001 From: Neal Kruis Date: Mon, 13 Oct 2025 10:06:41 -0600 Subject: [PATCH 113/117] Add permalinks for heading anchors. --- doc/src/mkdocs.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/src/mkdocs.yml b/doc/src/mkdocs.yml index 7d96d5da9..9de869bc4 100644 --- a/doc/src/mkdocs.yml +++ b/doc/src/mkdocs.yml @@ -61,6 +61,8 @@ markdown_extensions: - admonition - attr_list - def_list + - toc: + permalink: true - pymdownx.arithmatex: generic: true - pymdownx.blocks.caption From 4c8f91835dfb837ec68e4e4557fc570915d566ee Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 13 Oct 2025 15:42:07 -0600 Subject: [PATCH 114/117] Add hook to startup event which suprresses certain log messages from autorefs. --- doc/src/hooks.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/doc/src/hooks.py b/doc/src/hooks.py index 88830769a..c0c0e6e00 100644 --- a/doc/src/hooks.py +++ b/doc/src/hooks.py @@ -2,6 +2,7 @@ # # Note: Edits to hooks do not get captured by MkDocs' built-in reloading mechanism. # If you change the hooks, you must manually stop and restart the server. import copy +import logging import re from pathlib import Path from typing import List, Optional, TypedDict @@ -12,6 +13,31 @@ from parsers.cnrecs import Field, FieldGroup, Record, RecordsParser from slugify import slugify +root_logger = logging.getLogger("mkdocs") + + +def on_startup(command, dirty): + class SuppressAutorefsWarnings(logging.Filter): + def filter(self, record): + message = record.getMessage() + should_suppress = record.levelno == logging.WARNING and ( + message.startswith("mkdocs_autorefs: Multiple primary URLs found for") + or message.startswith("mkdocs_autorefs: Could not find closest primary URL") + ) + return not should_suppress + + # Autorefs uses several loggers, including _internal ones. Since I couldn't figure + # out which logger was responsible for issuing the warnings we want to suppress, + # simply attach the filter to all loggers that are part of the plugin. + autorefs_loggers = [ + logging.getLogger(path) + for path in list(logging.root.manager.loggerDict.keys()) + if path.startswith("mkdocs.plugins.mkdocs_autorefs") + ] + + for logger in autorefs_loggers: + logger.addFilter(SuppressAutorefsWarnings()) + class RecordPrefixClass(TypedDict, total=False): value: str From 1765d77ae66de73bcf76b9f0921c56afe69a84dc Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 13 Oct 2025 15:44:52 -0600 Subject: [PATCH 115/117] Replace commented print statements with logger invocations. --- doc/src/hooks.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/doc/src/hooks.py b/doc/src/hooks.py index c0c0e6e00..5c3fff9ff 100644 --- a/doc/src/hooks.py +++ b/doc/src/hooks.py @@ -478,14 +478,12 @@ def write_probes_by_record(self, record: Record): except FileNotFoundError: # File doesn't exist, so write the new content pass - except Exception: - # print(f"Error reading file {path}: {e}") + except Exception as e: + root_logger.error(f"Error reading file {path}: {e}") return if new_content == current_content: - # TODO: Add logging, so this can be added to a debug-level output. - # print(f"Content of {filename} is already identical, no write performed.") - pass + root_logger.debug(f"Content of {filename} is already identical, no write performed.") else: with open(path, "w") as f: f.write(new_content) From 33fd220f79bf58b3876ded3a6fa3eeb5056e4ea5 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 13 Oct 2025 17:15:31 -0600 Subject: [PATCH 116/117] Add extra JS which removes any nested-dl paragraphs and adds the nested-dl class to dls for the single-page site. See hooks.py for the (original) version used for building the multi-page site. --- doc/src/docs/assets/javascript/extra_js.js | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/doc/src/docs/assets/javascript/extra_js.js b/doc/src/docs/assets/javascript/extra_js.js index 06577d0cb..afb231bc1 100644 --- a/doc/src/docs/assets/javascript/extra_js.js +++ b/doc/src/docs/assets/javascript/extra_js.js @@ -20,3 +20,31 @@ document$.subscribe(({ body }) => { ], }); }); + +// The script probably would not affect the multi-page site, since the paragraphs containing +// @nested-dl should have already been removed by beautiful soup in the on_page_content +// hook, but adding "section.print-page" to the selector just adds a layer of confidence +// that the JS will only operate on elements that are part of the single-page site. +document.querySelectorAll("section.print-page p:has(+ :is(h1, h2, h3, h4, h5, h6))").forEach(element => { + if (element.innerHTML !== '@nested-dl') return + + let currentElement = element.nextElementSibling + heading_level = currentElement.tagName.startsWith("H") ? currentElement.tagName : null + + if (!heading_level) return + + while (currentElement) { + if (currentElement.tagName === 'DL') { + currentElement.classList.add("nested-dl") + } + + currentElement = currentElement.nextElementSibling + if (currentElement.tagName === heading_level) { + break + } + } + + element.remove() +}) + + From 517d52f53b0737c060eed0a3ff8ee8df792bdf07 Mon Sep 17 00:00:00 2001 From: Matthew Brandt Date: Mon, 13 Oct 2025 21:41:53 -0600 Subject: [PATCH 117/117] Add optional chaining and add "const" to heading_level declaration. --- doc/src/docs/assets/javascript/extra_js.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/docs/assets/javascript/extra_js.js b/doc/src/docs/assets/javascript/extra_js.js index afb231bc1..9450d6f55 100644 --- a/doc/src/docs/assets/javascript/extra_js.js +++ b/doc/src/docs/assets/javascript/extra_js.js @@ -29,7 +29,7 @@ document.querySelectorAll("section.print-page p:has(+ :is(h1, h2, h3, h4, h5, h6 if (element.innerHTML !== '@nested-dl') return let currentElement = element.nextElementSibling - heading_level = currentElement.tagName.startsWith("H") ? currentElement.tagName : null + const heading_level = currentElement?.tagName.startsWith("H") ? currentElement.tagName : null if (!heading_level) return @@ -39,7 +39,7 @@ document.querySelectorAll("section.print-page p:has(+ :is(h1, h2, h3, h4, h5, h6 } currentElement = currentElement.nextElementSibling - if (currentElement.tagName === heading_level) { + if (currentElement?.tagName === heading_level) { break } }