[Equest-users] User-Defined Default Expressions

Michael Campbell via Equest-users equest-users at lists.onebuilding.org
Mon Mar 6 17:39:01 PST 2017


This information is extremely helpful.

Thank you everyone for the help on this!

On Mon, Mar 6, 2017 at 6:06 PM, Nicholas Caton <
Nicholas.Caton at schneider-electric.com> wrote:

> I got you buddy!
>
>
>
> Building on what Aaron just taught me/us for stringing together 8+
> descriptor characters as well:
>
>
>
> switch(#L("C-ACTIVITY-DESC",0) + #L("C-ACTIVITY-DESC",1))
>
>   case "office": #SI("Office Ltg Sch","SPACE","LIGHTING-SCHEDUL")
>
>   case "kitchen": #SI("Kitchen Ltg Sch","SPACE","LIGHTING-SCHEDUL")
>
>   case "restroom": #SI("Restroom Ltg Sch","SPACE","LIGHTING-SCHEDUL")
>
>   default: no_def
>
> endswitch
>
>
>
> Coolest thread ever?  Maybe!
>
>
>
> ~Nick
>
>
>
> *Nick Caton, P.E., BEMP*
>
>   Senior Energy Engineer
>   Regional Energy Engineering Manager
>
>   Energy and Sustainability Services
>   Schneider Electric
>
> D  913.564.6361 <(913)%20564-6361>
> M  785.410.3317 <(785)%20410-3317>
> F  913.564.6380 <(913)%20564-6380>
> E  nicholas.caton at schneider-electric.com
>
> 15200 Santa Fe Trail Drive
> Suite 204
> Lenexa, KS 66219
> United States
>
>
>
>
>
> *From:* Equest-users [mailto:equest-users-bounces at lists.onebuilding.org] *On
> Behalf Of *Michael Campbell via Equest-users
> *Sent:* Monday, March 06, 2017 2:53 PM
> *To:* Aaron Powers <caaronpowers at gmail.com>
> *Cc:* equest-users <equest-users at lists.onebuilding.org>
>
> *Subject:* Re: [Equest-users] User-Defined Default Expressions
>
>
>
> Has anyone had any luck creating default user expressions for schedules?
>
> I was able to get it to work for other fields but when trying to use the
> Switch function for schedules I am getting errors.
>
> Any advice?
>
> Thank you,
>
>
>
> On Sun, Mar 5, 2017 at 10:25 PM, Aaron Powers via Equest-users <
> equest-users at lists.onebuilding.org> wrote:
>
> To expand on Nick's trick below, I wanted to share why only the 1st 4
> characters are returned by default and why his code works (this is mostly a
> guess from reverse-engineering the source code, but it's consistent with
> the way the actual program works).
>
>
>
> Old versions of Fortran had no built-in character or string data types, so
> programmers had to use tricks to deal with them.  This would have been true
> of the dialect of Fortran used in the original DOE2.1A, and so a form of
> the original technique used to deal with string literals persists in the
> code today.  As a warning, this next part may give the mechanical engineers
> out there a headache...  A single character is traditionally encoded in
> ASCII using a single byte.  A byte is 8 bits, and the largest 8 bit number
> is 11111111 = 255, so you can encode 256 unique characters using a single
> byte.  As an example, the btye 01100001 = 97 represents the character 'a'
> in ASCII.  The smallest built-in data type in early Fortran was the integer
> (or float) which is encoded using 4 bytes.  The trick used in DOE2 is to
> encode string literals as an array of 8 integers (or float), and since each
> integer contains 4 bytes (i.e. 4 characters), the entire string array
> represents a total of 8x4 = 32 characters.  This is why there's a 32
> character limit on string fields.  So accessing the first element of this
> array by #L("C-ACTIVITY-DESC") or #L("C-ACTIVITY-DESC",0) returns the first
> 4 characters, #L("C-ACTIVITY-DESC",1) returns the second 4 characters,
> and so on.
>
>
>
> Now a little further into the weeds (this is more speculation into how it
> could be done rather than how it's actually done under the DOE2 hood).
> Consider the string 'abcd'.  This can be encoded into a single integer by
> making the four bytes of the integer be the same as the 4 character's ASCII
> representation in sequence together.  So the first byte is 97(01100001),
> the second 98(01100010), the third 99(01100011), and the fourth
> 100(01100100).  Also, in Fortran, integers are encoded in little-endian
> style which just means that we need to order the bytes in reverse order
> when constructing the integer.  The entire integer in binary form is then
> 01100100011000110110001001100001.   The value of this integer in decimal
> is 1684234849.  So, in DOE2-Land, the number 1684234849 is equivalent to
> 'abcd'.
>
>
>
> However, it appears that you can't access the integer representation of
> these four character 'words' in keyword expressions.  For example:
>
> if ("abcd" == 1684234849) then ... produces an error.
>
>
>
> Also, you can't do arithmetic with the integer representation.
> Interestingly though, the '+' operator functions as a concatenate operator
> when dealing with string literals.  This can be used to compare the first
> 4, 8, 12, ... characters of a string.  For example, try the following code
> for the lighting power density of a space.  This expression considers the
> first 8 characters when checking the C-ACTIVITY-DESC field.  This could be
> expanded to check all 32 characters, although the code would get a little
> bloated.
>
>
>
> switch(#L("C-ACTIVITY-DESC",0) + #L("C-ACTIVITY-DESC",1))
>
>   case "office": 1.1
>
>   case "kitchen": 1.5
>
>   case "restroom": 0.7
>
>   default: 1.0
>
> endswitch
>
>
>
> In this code, the result when C-ACTIVITY-DESC = "office" is 1.1, but the
> result when C-ACTIVITY-DESC = "office1" is 1.0.
>
>
>
> Aaron
>
>
>
>
>
> *From:* Nicholas Caton [mailto:Nicholas.Caton at schneider-electric.com]
> *Sent:* Friday, March 03, 2017 4:04 PM
> *To:* Bishop, Bill <bbishop at pathfinder-ea.com>; Chris Jones <
> Christopher.Jones at RWDI.com>; Michael Campbell <mcamp1206 at gmail.com>
> *Cc:* equest-users at onebuilding.org
> *Subject:* RE: [Equest-users] User-Defined Default Expressions
>
>
>
> Appending to this, while ("C-ACTIVITY-DESC") returns the first 4
> characters by default, if you ever need to further distinguish inputs
> within spaces sharing the same/similar activity descriptors, you can also
> reference the 2nd set of 4 characters (or the 3rd set, or the 4th set…).
>
>
>
> To do this, append the optional argument “,#” wherever you’d normally
> specify “C-ACTIVITY-DESC.”
>
>
>
> To build on the running example, say you had 2 tenants to distinguish in a
> building with “Retail” space, but they had two different occupancy
> densities.  You could handle that by first adding to their descriptors,
> such as follows:
>
> Retail_–_Best Buy
>
> Retail_–_Home Depot
>
>
>
> The first 4 characters for each case are the same:  “RETA” (list position
> 0).  The second set of 4 is “IL_–“ (list position 1).  The third set is
> finally distinguishable:  “_BES” and “_HOM” (list position 2).
>
>
>
> From here you could either insert an if/then statement for the “Reta”
> case, or just nest another switch statement.  Added some formatting for
> clarity, but highlightedthe new addition:
>
>
>
>    AREA/PERSON      =
>
> {if(#SV(#L("ZONE-TYPE"))==2) then no_def else
>
>   if(#RV(#L("PEOPLE-SCHEDULE"))!=0) then unused else
>
>   switch (#L("C-ACTIVITY-DESC"))
>
>     case "Reta": switch (#L("C-ACTIVITY-DESC",2))
>
>                    case “_Bes” : 67
>
>                    case “_Hom” : 67*2
>
>                    default : 500
>
>                  endswitch
>
>     case "Lobb": 150
>
>     case "Clas": 100
>
>     default: 500
>
>   endswitch
>
>   endif
>
> endif}
>
>
>
> ~Nick
>
>
>
> *Nick Caton, P.E., BEMP*
>
>   Senior Energy Engineer
>   Regional Energy Engineering Manager
>
>   Energy and Sustainability Services
>   Schneider Electric
>
> D  913.564.6361 <(913)%20564-6361>
> M  785.410.3317 <(785)%20410-3317>
> F  913.564.6380 <(913)%20564-6380>
> E  nicholas.caton at schneider-electric.com
>
> 15200 Santa Fe Trail Drive
> Suite 204
> Lenexa, KS 66219
> United States
>
>
>
>
>
> *From:* Equest-users [mailto:equest-users-bounces at lists.onebuilding.org
> <equest-users-bounces at lists.onebuilding.org>] *On Behalf Of *Bishop, Bill
> via Equest-users
> *Sent:* Friday, March 03, 2017 12:24 PM
> *To:* Chris Jones <Christopher.Jones at RWDI.com>; Michael Campbell <
> mcamp1206 at gmail.com>
> *Cc:* equest-users at onebuilding.org
> *Subject:* Re: [Equest-users] User-Defined Default Expressions
>
>
>
> Mike,
>
> You can start with the expression below. Paste only the text between the
> brackets if you are pasting within the interface. If pasting into the input
> file, this would go after “SET-DEFAULT FOR SPACE”. Like Chris said, the
> case statement names should be four characters or less. However, they are
> not case sensitive, so upper/lower case doesn’t matter.
>
> ~Bill
>
>
>
>    AREA/PERSON      =
>
> {if(#SV(#L("ZONE-TYPE"))==2) then no_def else
>
> if(#RV(#L("PEOPLE-SCHEDULE"))!=0) then unused else
>
> switch (#L("C-ACTIVITY-DESC"))
>
> case "Reta": 67
>
> case "Lobb": 150
>
> case "Clas": 100
>
> default: 500
>
> endswitch
>
> endif
>
> endif}
>
>
>
> *William Bishop, PE, BEMP, BEAP, CEM, LEED AP **|** Pathfinder Engineers
> & Architects LLP*
>
> *Senior Energy Engineer*
>
>
>
>
>
> 134 South Fitzhugh Street                 Rochester, NY 14608
>
> *T: (585) 698-1956 <(585)%20698-1956>*                        F: (585)
> 325-6005 <(585)%20325-6005>
>
> bbishop at pathfinder-ea.com <wbishop at pathfinder-ea.com>
> www.pathfinder-ea.com
>
> [image: http://png-5.findicons.com/files/icons/977/rrze/720/globe.png]Carbon
> Fee and Dividend - simple, effective, and market-based.
>
>
>
> *From:* Equest-users [mailto:equest-users-bounces at lists.onebuilding.org
> <equest-users-bounces at lists.onebuilding.org>] *On Behalf Of *Chris Jones
> via Equest-users
> *Sent:* Friday, March 03, 2017 12:52 PM
> *To:* Michael Campbell <mcamp1206 at gmail.com>
> *Cc:* equest-users at onebuilding.org
> *Subject:* Re: [Equest-users] User-Defined Default Expressions
>
>
>
> Note, only the first 4 characters of the C-ACTIVITY-DESC field are
> recognized in user defined expressions. Therefore, if your UDF uses
> “RETAIL” as the test, it may fail because only “RETA” is used.
>
>
>
> Other than that, I suggest reviewing the BDLDFT.TXT file in the eQUEST
> 3-65 Data folder. It is full of example default expressions.
>
>
>
>
>
> [image: Title: RWDI - Description: RWDI logo]
> <http://www.rwdi.com/assets/logos/RWDI-logo.gif>
>
> *Christopher Jones, **P.Eng. *| Senior Energy Analyst
> *RWDI*
> 901 King Street West, Suite 400, Toronto, ON M5V 3H5 Canada
> Tel: (519) 823-1311 ext 2052 <(519)%20823-1311>
> rwdi.com <http://www.rwdi.com/>
>
>
>
>
>
> *From:* Equest-users [mailto:equest-users-bounces at lists.onebuilding.org
> <equest-users-bounces at lists.onebuilding.org>] *On Behalf Of *Michael
> Campbell via Equest-users
> *Sent:* Friday, March 03, 2017 12:32 PM
> *To:* equest-users
> *Subject:* [Equest-users] User-Defined Default Expressions
>
>
>
> Hi eQUEST Users,
>
> I'm trying to create default user expressions in an effort to
> auto-populate certain fields in my models.
>
> I want to reference the activity description (C-ACTIVITY-DESC) have it
> automatically fill in fields such as Area/Person.
>
> So for this example, I'm trying to make all spaces that have Activity
> Description of "RETAIL" to be populated with a Area/Person value of 67.
>
> I've tried using the "Switch" function and if-then statements but haven't
> been able to get it to work.
>
> Any assistance is appreciated.
>
> Thank you,
>
> Mike Campbell
> ------------------------------
>
> *RWDI - A Platinum Member of Canada's 50 Best Managed Companies*
> This communication is intended for the sole use of the party to whom it
> was addressed and may contain information that is privileged and/or
> confidential. Any other distribution, copying or disclosure is strictly
> prohibited. If you received this email in error, please notify us
> immediately by replying to this email and delete the message without
> retaining any hard or electronic copies of same. Outgoing emails are
> scanned for viruses, but no warranty is made to their absence in this email
> or attachments. If you require any information supplied by RWDI in a
> different format to facilitate accessibility, contact the sender of the
> email, email solutions at rwdi.com or call +1.519.823.1311 <(519)%20823-1311>
> .
> ------------------------------
>
>
> ______________________________________________________________________
> This email has been scanned by the Symantec Email Security.cloud service.
> ______________________________________________________________________
>
>
>
>
> _______________________________________________
> Equest-users mailing list
> http://lists.onebuilding.org/listinfo.cgi/equest-users-onebuilding.org
> To unsubscribe from this mailing list send  a blank message to
> EQUEST-USERS-UNSUBSCRIBE at ONEBUILDING.ORG
>
>
>
>
> ______________________________________________________________________
> This email has been scanned by the Symantec Email Security.cloud service.
> ______________________________________________________________________
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.onebuilding.org/pipermail/equest-users-onebuilding.org/attachments/20170306/baf931d2/attachment-0002.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image002.png
Type: image/png
Size: 8477 bytes
Desc: not available
URL: <http://lists.onebuilding.org/pipermail/equest-users-onebuilding.org/attachments/20170306/baf931d2/attachment-0006.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 255 bytes
Desc: not available
URL: <http://lists.onebuilding.org/pipermail/equest-users-onebuilding.org/attachments/20170306/baf931d2/attachment-0007.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image005.png
Type: image/png
Size: 2844 bytes
Desc: not available
URL: <http://lists.onebuilding.org/pipermail/equest-users-onebuilding.org/attachments/20170306/baf931d2/attachment-0008.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image006.jpg
Type: image/jpeg
Size: 2227 bytes
Desc: not available
URL: <http://lists.onebuilding.org/pipermail/equest-users-onebuilding.org/attachments/20170306/baf931d2/attachment-0006.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image004.jpg
Type: image/jpeg
Size: 1309 bytes
Desc: not available
URL: <http://lists.onebuilding.org/pipermail/equest-users-onebuilding.org/attachments/20170306/baf931d2/attachment-0007.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image003.jpg
Type: image/jpeg
Size: 1240 bytes
Desc: not available
URL: <http://lists.onebuilding.org/pipermail/equest-users-onebuilding.org/attachments/20170306/baf931d2/attachment-0008.jpg>


More information about the Equest-users mailing list