Shortcut to one letter codes used in status format and update field requests.
Updating physical machine statics or the administrative status of farms and physicals is done through GET queries to the engine. If the request produces output, either data or error message, it is delivered as content type plain text.
If you desire to, or the web agent you are using does so automatically, you can inform the engine that query string containing all the argumetns is URL escaped. This is done by setting the first char of the query string to be "E". In general, this a pretty good idea because the format arguments are printf style, and ought to be escaped.
eg. /ath/status/phys/?Eh=app01,f="%h,%c"
[expects everything after E to be url escaped]
These are listed in order of construction, with the "+" indicating what must come next, which can be another access level in the engine are the end of the path and beginning of arguments.
The location of the server running the load balancer engine. Proxy rules must be such that requests coming in on desired host:port interface are not passed to mod_proxy.
The path on the apache instance that triggers the engine to take over the request. This is configurable via directive.
Once the engine takes over the request, it will finish it, valid or not. It looks for the following paths to determine what type of request it's been sent.
A status request is read only to the shared memory that contains the state of all farms, physicals, and engine internal stats. It is used to monitor or gather information about the runtime engine. It requires a subsystem to differentiate what type of data is desired. As arguments it takes desired entity and output format arguments. The include script "ath_monitor.sh" uses it to monitor and report on the health of your servers from the engine's perspective.
An update request is a privileged write request that updates the shared memory representing the state of the load balancer. It is most used to update physical system performance metrics and farm and physical administrative statuses. It requires a subsystem and then arguments clarifying which entity and what field of that entity to update. The included "ath_agent.sh" script uses it to update cpu and load average. You can flag farms and physical systems online or offline, or report physical systems as sick (this can also be done automatically, to some extent, with the AthExpectUpdate logic, which will time out and flag down systems who are failing to report in their status).
A balance quest is used when a balancing decision is desired outside of
reverse proxy request. For example, if your web application fires off
backgrounded heavy load processes, it is likely the the balancing decision
made to initiate the UI driven request is not the right one for the
background thread.
You may even want it to go to a different, non-web-enabled farm, using some
queueing system. You can query the engine for a decision on one or many farms,
and even ask it to use a different algorithm than the preconfigured one for that
farm. When more than one farm is requested, the result is returned new-line
separated in the same order the query requested them. If all members of a
farm are unavailable, it will say
WARNING: FARM: NO MEMBER AVAILABLE
.
If the farm is invalid, it will say WARNING: FARM NOT CONFIGURED
.
:
joins an algorithm substitution to the farm requested,
joins multiple farm(:algo) requestseg. /ath/balance/?FARM1
eg. /ath/balance/?FARM1,FARM2,FARM3
eg. /ath/balance/?FARM1:dynamic-cpu-mem
This is used to mirror the state of one load balancer to another identically configured (in farms and physicals (farm members)) load balancer. The mirror request is sent to update the system that is slave to the primary. It updates more fields than the "/update" type allows. This request type can be completely disabled by directive. It may prove useful in some installations. The authors installation used to use this, but it requires the primary to be healthy in most use cases, so he switched to running 2 completely independent systems, and just sends updates to both from each member.
It requires a subsystem request, "/farm" or "/phys", followed by one argument, a serialized representation of one entity of that subsystem. The serialized representation of an entity can be retrieved using a status request with output format specified as serialized. You can mirror a farm or a phys. Mirroring a farm does NOT mirror the state of the members of the farm, just all the data unique to the farm itself. To completely mirror an engine, you need to mirror all farms and all physicals.
eg. /ath/mirror/farm/?SERIALIZED_FARM_STRING
Simply returns "hello". Use it verify that the engine is loaded and enabled.
Used for interacting with the farm subsystem. In status context, you specify which entities you want to get data from, then the output format of that data. A farm entity is handled by its "name". Out put for more than one is new line separated.
Status format AND update parameters use the same one letter code to indicate the relevant field. Format letter code is always preceded by "%".
eg. /ath/status/farm?n=FARM
[outputs default readable detail]
eg. /ath/status/farm?n=FARM-A,FARM-B
[outputs default readable detail for 2 farms, new line separated]
eg. /ath/status/farm?n=FARM,f=%m
[outputs just its member physical handles]
eg. /ath/update/farm/?n=FARM,o=1
[sets FARM to online]
Used for interacting with the physical (farm members) subsystem.
In status context, you specify which entities you want to get data from,
then the output format of that data.
A phys entity is handled by its "hostname". Out put for more than one is new
line separated. In reality a "hostname" can actually be the concatenation of
a hostname and a port, eg. app01:8080
.
Status format AND update parameters use the same one letter code to indicate the relevant field. Format letter code is always preceded by "%".
eg. /status/phys/?h=app01,f=%c
[outputs cpu load of app01]
eg. /status/phys/?h=app01
[outputs default data, which is everything in readable format]


Our tutors are dedicated to ensuring that you have the best learning experience possible. We provide top quality teaching and excellent resources to develop your understanding of any GCSE or A-Level topic.
RegisterAQA provides qualifications that enable students to progress to the next stage in their lives. We also support teachers to develop their professional skills.
Edexcel is a multinational education and examination body owned by Pearson. Pearson Edexcel, the only privately owned examination board in the UK, and part of Pearson plc, is a portmanteau term combining the words Education & Excellence.
OCR is an examination board that sets examinations and awards qualifications. It is one of England, Wales and Northern Ireland's five main examination boards.
WJEC / CBAC, formerly the Welsh Joint Education Committee, is an examination board providing examinations, professional development and educational resources to schools and colleges in Wales, England and Northern Ireland.


IddObject
is an abstraction of a single object in an Idd object. It
provides more detail methods to query field properties. IddObject
can only
be created from the parent Idd object, using $object()
,
$object_in_group()
and other equivalent. This is because that
initialization of an IddObject
needs some shared data from parent Idd
object.
There are lots of properties for every class and field. For details on the
meaning of each property, please see the heading comments in the
Energy+.idd
file in the EnergyPlus installation path.
iddobj <- idd$object(class) iddobj <- idd_object(idd, class) iddobj$version() iddobj$group_name() iddobj$group_index() iddobj$class_name() iddobj$class_index() iddobj$class_format() iddobj$min_fields() iddobj$num_fields() iddobj$memo() iddobj$has_name() iddobj$is_required() iddobj$is_unique() iddobj$is_extensible() iddobj$num_extensible() iddobj$first_extensible_index() iddobj$extensible_group_num() iddobj$add_extensible_group(num = 1L) iddobj$del_extensible_group(num = 1L) iddobj$field_name(index = NULL, unit = FALSE, in_ip = eplusr_option("view_in_ip") iddobj$field_index(name = NULL) iddobj$field_type(which = NULL) iddobj$field_note(which = NULL) iddobj$field_unit(which = NULL, in_ip = eplusr_option("view_in_ip") iddobj$field_default(which = NULL, in_ip = eplusr_option("view_in_ip") iddobj$field_choice(which = NULL) iddobj$field_range(which = NULL) iddobj$field_relation(which = NULL, type = c("all", "ref_by", "ref_to")) iddobj$field_possible(which = NULL) iddobj$is_valid_field_num(num) iddobj$is_extensible_index(index) iddobj$is_valid_field_name(name) iddobj$is_valid_field_index(which) iddobj$is_autosizable_field(which = NULL) iddobj$is_autocalculatable_field(which = NULL) iddobj$is_numeric_field(which = NULL) iddobj$is_integer_field(which = NULL) iddobj$is_real_field(which = NULL) iddobj$is_required_field(which = NULL) iddobj$has_ref(which = NULL) iddobj$has_ref_to(which = NULL) iddobj$has_ref_by(which = NULL) iddobj$to_table(all = FALSE) iddobj$to_string(comment = NULL, leading = 4L, sep_at = 29L, all = FALSE) iddobj$print(brief = FALSE) print(iddobj)
iddobj <- idd$object(class) iddobj <- idd_object(idd, class) iddobj$version()
An IddObject
can be created from the parent Idd object, using
$object()
, idd_object and other equivalent.
$version()
returns the version of parent IDD current object belongs to.
Arguments
idd
: An Idd object.
class
: A valid class name (a string).
iddobj
: An IddObject object.
iddobj$group_name() iddobj$group_index() iddobj$class_name() iddobj$class_index() iddobj$class_format() iddobj$min_fields() iddobj$num_fields() iddobj$memo() iddobj$has_name() iddobj$is_required() iddobj$is_unique()
$group_index()
returns the index of IDD group it belongs to.
$group_name()
returns the name of IDD group it belongs to.
$class_index()
returns the index of this IDD class.
$class_name()
returns the name of this IDD class.
$class_format()
returns the format of this IDD class. This format indicator
is currently not used by eplusr. Note: some classes have special format
when saved in the IDFEditor with the special format option enabled. Those
special format includes "singleLine", "vertices", "compactSchedule",
"fluidProperties", "viewFactors" and "spectral". eplusr can handle all those
format when parsing IDF files. However, when saved, all classes are formatted
in standard way.
$min_fields()
returns the minimum fields required for this class. If no
required, 0
is returned.
$num_fields()
returns current total number of fields in this class. This
number may change if the class is extensible and after
$add_extensible_group()
or $del_extensible_group()
.
$memo()
returns memo of this class. Usually a brief description of this
class.
$has_name()
return TRUE
if this class has name attribute.
$is_unique()
return TRUE
if this class is unique.
$is_required()
returns TRUE
if this class is required.
iddobj$is_extensible() iddobj$num_extensible() iddobj$first_extensible_index() iddobj$extensible_group_num() iddobj$add_extensible_group(num = 1L) iddobj$del_extensible_group(num = 1L)
$is_extensible()
returns TRUE
if this class is extensible.
$num_extensible()
returns the number of extensible fields in this class. If
not zero, it means that objects in this class is dynamically extensible.
$first_extensible_index()
returns the field index of the first extensible
field in this class. If this class is not extensible, 0
is return.
$extensible_group_num()
returns the number of extensible groups in this
class.
$add_extensible_groups()
adds extensible groups in this class.
$del_extensible_groups()
deletes extensible groups in this class.
Arguments
num
: A positive integer of how many extensible groups to add or delete.
Default: 1
.
iddobj$field_name(index = NULL, unit = FALSE, in_ip = eplusr_option("view_in_ip") iddobj$field_index(name = NULL) iddobj$field_type(which = NULL) iddobj$field_note(which = NULL) iddobj$field_unit(which = NULL, in_ip = eplusr_option("view_in_ip") iddobj$field_default(which = NULL, in_ip = eplusr_option("view_in_ip") iddobj$field_choice(which = NULL) iddobj$field_range(which = NULL) iddobj$field_relation(which = NULL, type = c("all", "ref_by", "ref_to")) iddobj$field_possible(which = NULL) iddobj$is_valid_field_num(num) iddobj$is_extensible_index(index) iddobj$is_valid_field_name(name) iddobj$is_valid_field_index(which) iddobj$is_autosizable_field(which = NULL) iddobj$is_autocalculatable_field(which = NULL) iddobj$is_numeric_field(which = NULL) iddobj$is_integer_field(which = NULL) iddobj$is_real_field(which = NULL) iddobj$is_required_field(which = NULL) iddobj$has_ref(which = NULL) iddobj$has_ref_to(which = NULL) iddobj$has_ref_by(which = NULL)
$field_name()
returns names of fields specified by field indexes. If
index
is NULL
, names of all fields in this class are returned. If lower
is TRUE
, "lower-style" names are returned, i.e. all spaces and dashes is
replaced by underscores. "lower-style" names are useful when use them as
filed names in $set_value()
in IdfObject
class and $set_object()
in
Idf
class. If unit
is TRUE
, the units of those fields are also
returned. If in_ip
, corresponding imperial units are returned. It only has
effect when unit
is TRUE
.
$field_index()
returns indexes of fields specified by field names. If
name
is NULL
, indexes of all fields in this class are returned.
All other $field_*()
returns specific field properties. If which
is
NULL
, properties of all fields in this class are returned.
$field_type
(): returns field types. All possible values are
"integer"
, "real"
, "alpha"
(arbitrary string), "choice"
(alpha
with specific list of choices), "object-list"
(link to a list of
objects defined elsewhere), "external-list"
(uses a special list from
an external source) and "node"
(name used in connecting HVAC
components).
$field_unit()
: returns a character vector of field units. If in_ip
is
TRUE
, IP unites are returned.
$field_default()
: returns a list of default values of those fields. If
no defaults found, NA
s are returned.
$field_choice()
: returns a list of all valid choices for those fields.
If no choices found, NA
s are returned.
$field_range()
: returns a list of ranges for those fields. Every range
has four components: minimum
(lower limit), lower_incbounds
(TRUE
if the lower limit should be included), maximum
(upper limit), and
upper_incbounds
(TRUE
if the upper limit should be included). For
fields of character type, empty lists are returned. For fields of
numeric types with no specified ranges, minimum
is set to -Inf
,
lower_incbounds
is set to FALSE, upper
is set to Inf
, and
upper_incbounds
is set to FALSE. The field range is printed in number
interval denotation.
$field_relation()
: returns a list of references for those fields that
have the object-list
and/or reference
and reference-class-name
attribute. Basically, it is a list of two elements ref_to
and ref_by
.
Underneath, ref_to
and ref_by
are data.tables
which contain source field data and reference field data with custom printing
method. For instance, if iddobj$field_relation(c(1, 2), "ref_to")
gives
results below:
-- Refer to Others --------------------- +- Field: <1: Field 1> | v~~~~~~~~~~~~~~~~~~ | \- Class: <Class 2> | \- Field: <2: Field 2> | \- Field: <2: Field 2>
This means that Field 2
in current class does not refer to any other fields.
But Field 1
in current class refers to Field 2
in class named Class 2
.
$field_possible()
: returns all possible values for specified fields,
including auto-value (Autosize
, Autocalculate
, and NA
if not
applicable), and results from $field_default()
, $field_range()
,
$field_choice()
. Underneath, it returns a data.table with custom
printing method. For instance, if iddobj$field_possible(c(4, 2))
gives
results below:
-- 4: Field 4 ---------- * Auto value: <NA> * Default: <NA> * Choice: - "Key1" - "Key2" -- 2: Field 2 ---------- * Auto value: "Autosize" * Default: 2 * Choice: <NA>
This means that Field 4
in current class cannot be "autosized" or
"autocalculated", and it does not have any default value. Its value should be
a choice from "Key1"
or "Key2"
. For Field 2
in current class, it has a
default value of 2
but can also be filled with value "Autosize"
.
$is_valid_field_num()
returns TRUE
if num
is acceptable as a total
number of fields in this class. Extensible property is considered. For
instance, the total number of fields defined in IDD for class
BuildingSurfaces:Detailed
is 390. However, 396 is still a valid field
number for this class as the number of field in the extensible group is 3.
$is_valid_field_name()
returns TRUE
if name
is a valid field name
WITHOUT unit. Note name
can be given in underscore style, e.g.
"outside_layer"
is equivalent to "Outside Layer"
.
$is_valid_field_index()
returns TRUE
if index
is a valid field index.
$is_autosizable_field()
returns TRUE
if the field can be assigned to
autosize
.
$is_autocalculatable_field()
returns TRUE
if the field can be assigned to
autocalculate
.
$is_numeric_field()
returns TRUE
if the field value should be numeric (
an integer or a real number).
$is_integer_field()
returns TRUE
if the field value should be an integer.
$is_real_field()
returns TRUE
if the field value should be a real number
but not an integer.
$is_required_field()
returns TRUE
if the field is required.
$has_ref()
returns TRUE
if the field refers to or can be referred by
other fields.
$has_ref_to()
returns TRUE
if the field refers to other fields.
$has_ref_by()
returns TRUE
if the field refers can be referred by other
fields.
Arguments
index
: An integer vector of field indexes.
name
: A character vector or field names. Can be given in underscore style,
e.g. "Thermal Resistance"
can be given in format "thermal_resistance"
.
which
: An integer vector of field indexes or a character vector of field
names. Field names can be given in underscore style.
unit
: If TRUE
, field units will be pasted after field names, just like
the way IDF Editor does. Default: FALSE
.
in_ip
: If TRUE
, field names or values will be returned in IP units.
Default: the value of eplusr_option("view_in_ip")
.
type
: The direction of relation to search. Should be one of "all"
,
"ref_by"
and "ref_to"
. If "ref_by"
, the relation data of specified
fields and fields that refer to specified fields is returned. If
"ref_to"
, the relation data of specified fields and fields that are
referred by specified fields is returned. If "all"
, both are returned.
iddobj$to_table(all = FALSE) iddobj$to_string(comment = NULL, leading = 4L, sep_at = 29L, all = FALSE)
$to_table()
returns a data.table that contains
core data of current class. It has 3 columns:
class
: Character type. Current class name.
index
: Integer type. Field indexes.
field
: Character type. Field names.
$to_string()
returns an empty object of current class in a character vector
format. It is formatted exactly the same as in IDF Editor.
Arguments
all
: If TRUE
, all fields in current class are returned, otherwise only
minimum fields are returned.
unit
: If TRUE
, units are also returned. Default: FALSE
.
comment
: A character vector to be used as comments of returned string
format object. If NULL
, no comments are inserted. Default: NULL
.
leading
: Leading spaces added to each field. Default: 4L
.
sep_at
: The character width to separate value string and field string.
Default: 29L
which is the same as IDF Editor.
$print()
prints the IddObject. Basically, the print output can be divided
into 4 parts:
CLASS: IDD class name of current object in format <IddObject: CLASS>
.
MEMO: brief description of the IDD class
PROPERTY: properties of the IDD class, including name of group it belongs
to, whether it is an unique or required class and current total fields. The
fields may increase if the IDD class is extensible, such as Branch
,
ZoneList
and etc.
FIELDS: fields of current IDD class. Required fields are marked with bullet marks. If the class is extensible, only the first extensible group will be printed and two ellipses will be shown at the bottom. Fields in the extensible group will be marked with an arrow down surrounded by angle brackets.
Argument:
brief
: If TRUE
, only class name part is printed. Default: FALSE
.
Idd Class
# ===== CREATE ===== # get a parent Idd object idd <- use_idd(8.8, download = "auto") # get an IddObject of class "Material" mat <- idd$Material # OR mat <- idd_object(idd, "Material") # ===== BASIC INFO ===== # get the version of parent IDD mat$version()#> [1] '8.8.0'# ===== CLASS PROPERTY ===== # get name of IDD group it belongs to mat$group_name()#> [1] "Surface Construction Elements"# get index of IDD group it belongs to mat$group_index()#> [1] 5# get name of current IDD class mat$class_name()#> [1] "Material"# get index of current IDD class mat$class_index()#> [1] 55# get the format of current IDD class mat$class_format()#> [1] "standard"# get minimum field number mat$min_fields()#> [1] 6# get total field number mat$num_fields()#> [1] 9# get memo of current class mat$memo()#> [1] "Regular materials described with full set of thermal properties"# check if current class has name attribute or not mat$has_name()#> [1] TRUE# check if current class is required mat$is_required()#> [1] FALSE# check if current class is unique mat$is_unique()#> [1] FALSE# ===== EXTENSIBLE GROUP ===== # get an IddObject of extensible class "Branch" bran <- idd$Branch # check if the class is extensible bran$is_extensible()#> [1] TRUE# get number of extensible fields, index of first extensible field and number of # current extensible groups in "Branch" class bran$num_extensible()#> [1] 4bran$first_extensible_index()#> [1] 3bran$extensible_group_num()#> [1] 11# get current number of fields bran$num_fields()#> [1] 46# add ten extensible groups bran$add_extensible_group(10)#> -- Info ------------------------------------------------------------------------ #> 10 extensible group(s) added #>#> <IddObject: `Branch`> #> -- MEMO ------------------------------------------------------------------------ #> "List components on the branch in simulation and connection order #> Note: this should NOT include splitters or mixers which define #> endpoints of branches" #> #> -- PROPERTIES ------------------------------------------------------------------ #> * Group: `Node-Branch Management` #> * Unique: FALSE #> * Required: FALSE #> * Total fields: 86 #> #> -- FIELDS ---------------------------------------------------------------------- #> 1*: Name #> 2 : Pressure Drop Curve Name #> 3*: Component 1 Object Type <v> #> 4*: Component 1 Name <v> #> 5*: Component 1 Inlet Node Name <v> #> 6*: Component 1 Outlet Node Name <v> #> ......# the number of fields has been increased by 10 * 4 (= 40) bran$num_fields()#> [1] 86# delete eight extensible groups bran$del_extensible_group(8)#> -- Info ------------------------------------------------------------------------ #> 8 extensible group(s) deleted #>#> <IddObject: `Branch`> #> -- MEMO ------------------------------------------------------------------------ #> "List components on the branch in simulation and connection order #> Note: this should NOT include splitters or mixers which define #> endpoints of branches" #> #> -- PROPERTIES ------------------------------------------------------------------ #> * Group: `Node-Branch Management` #> * Unique: FALSE #> * Required: FALSE #> * Total fields: 54 #> #> -- FIELDS ---------------------------------------------------------------------- #> 1*: Name #> 2 : Pressure Drop Curve Name #> 3*: Component 1 Object Type <v> #> 4*: Component 1 Name <v> #> 5*: Component 1 Inlet Node Name <v> #> 6*: Component 1 Outlet Node Name <v> #> ......# the number of fields has been decreased by 8 * 4 (= 32) bran$num_fields()#> [1] 54# ===== FIELD PROPERTY ===== # list all field names without units mat$field_name()#> [1] "Name" "Roughness" "Thickness" #> [4] "Conductivity" "Density" "Specific Heat" #> [7] "Thermal Absorptance" "Solar Absorptance" "Visible Absorptance"#> [1] 3 2 1#> [1] "real" "real" "alpha"#> [[1]] #> [1] "Optional field to include this branch in plant pressure drop calculations" #> [2] "This field is only relevant for branches in PlantLoops and CondenserLoops" #> [3] "Air loops do not account for pressure drop using this field" #> [4] "Valid curve types are: Curve:Functional:PressureDrop or" #> [5] "one of Curve:{Linear,Quadratic,Cubic,Exponent}')" #> #> [[2]] #> NULL #>#> [1] NA "m" "kg/m3"#> [1] NA "in" "lb/ft3"#> List of 9 #> $ Name : chr NA #> $ Roughness : chr NA #> $ Thickness : num NA #> $ Conductivity : num NA #> $ Density : num NA #> $ Specific Heat : num NA #> $ Thermal Absorptance: num 0.9 #> $ Solar Absorptance : num 0.7 #> $ Visible Absorptance: num 0.7#> List of 3 #> $ : NULL #> $ : chr [1:6] "VeryRough" "Rough" "MediumRough" "MediumSmooth" ... #> $ : NULL# get field ranges mat$field_range(c("roughness", "thickness", "conductivity", "solar_absorptance"))#> [[1]] #> <Not Applicable> #> #> [[2]] #> (0, Inf) #> #> [[3]] #> (0, Inf) #> #> [[4]] #> [0, 1] #># NOT RUN { # get field relation with other fields mat$field_relation(type = "all") # get all possible values of fields mat$field_possible() # }# check if input is a valid field number for current class ## get required minimum field number mat$min_fields()#> [1] 6# (1) if less than required minimum field number mat$is_valid_field_num(3)#> [1] FALSE# (2) if larger than required minimum field number but less than total field # number mat$is_valid_field_num(7)#> [1] TRUE# (3) if larger than total field number mat$is_valid_field_num(10)#> [1] FALSE# [1] FALSE # for extensible class bran$num_fields()#> [1] 54bran$num_extensible()#> [1] 4# if larger than required minimum field number # (1) but cannot give whole extensible groups bran$is_valid_field_num(c(55, 57, 60))#> [1] FALSE FALSE FALSE#> [1] TRUE TRUE TRUE# check if input field index is an extensible field index bran$is_extensible_index(1:4)#> [1] FALSE FALSE TRUE TRUE# check if input is valid field name # NOTE: lower-style names are treated as valid mat$is_valid_field_name(c("nAmE", "specific heat", "Specific Heat", "specific_heat"))#> [1] FALSE FALSE TRUE TRUE#> [1] TRUE TRUE TRUE FALSE# check if fields are autosizable, i.e. can be set to "Autosize" mat$is_autosizable_field(1:4)#> [1] FALSE FALSE FALSE FALSE# check if fields are autocalculatable, i.e. can be set to "Autocalculate" mat$is_autocalculatable_field(1:4)#> [1] FALSE FALSE FALSE FALSE# check if fields are numeric fields, i.e. field values should be either # integers or float numbers mat$is_numeric_field(c("roughness", "thickness", "density"))#> [1] FALSE TRUE TRUE# check if fields are integer fields, i.e. field values should be integers mat$is_integer_field(c("name", "specific_heat"))#> [1] FALSE FALSE# check if fields are real fields, i.e. field values should be real numbers # but not integers mat$is_real_field(c("name", "specific_heat"))#> [1] FALSE TRUE# check if fields are required, i.e. field values should not be empty mat$is_required_field(c("name", "roughness", "solar_absorptance"))#> [1] TRUE TRUE FALSE# NOT RUN { # check if fields refer to or can be referred by other fields mat$has_ref() # check if fields refer to other fields mat$has_ref_to() # check if fields can be referred by other fields mat$has_ref_by(which = NULL) # }# ===== DATA EXTRACTION ===== # get core data of current class mat$to_table()#> class index field #> 1: Material 1 Name #> 2: Material 2 Roughness #> 3: Material 3 Thickness #> 4: Material 4 Conductivity #> 5: Material 5 Density #> 6: Material 6 Specific Heat# get an empty string-foramt object of current class mat$to_string()#> [1] "Material," #> [2] " , !- Name" #> [3] " , !- Roughness" #> [4] " , !- Thickness {m}" #> [5] " , !- Conductivity {W/m-K}" #> [6] " , !- Density {kg/m3}" #> [7] " ; !- Specific Heat {J/kg-K}"#> <IddObject: `Material`> #> -- MEMO ------------------------------------------------------------------------ #> "Regular materials described with full set of thermal properties" #> #> -- PROPERTIES ------------------------------------------------------------------ #> * Group: `Surface Construction Elements` #> * Unique: FALSE #> * Required: FALSE #> * Total fields: 9 #> #> -- FIELDS ---------------------------------------------------------------------- #> 1*: Name #> 2*: Roughness #> 3*: Thickness #> 4*: Conductivity #> 5*: Density #> 6*: Specific Heat #> 7 : Thermal Absorptance #> 8 : Solar Absorptance #> 9 : Visible Absorptance


10 weeks at the biohack academy at the Waag
Put a small droplet of water on a object slide.
Put a very thin layer of onion on the slide
Tim at work, excellent bit of cutting.
Yasemin showing her slide
Stain the sample by a droplet of crystal violet and let it stain for max 60 seconds.Wash it off with tap water
Result! This worked really well, you can see the cells as well as the nuclei.
Here you can find everything about optics, how to build your own microscope and how to stain cells.
Hereyou can find the protocol for preparing microscopic slides.
And here you can find the protocol for gram staining


\overline{AB}
= AB
\overline{OPPOSITE_NAME} = {?}
\displaystyle \sin( \angle ANGLE ) = SIMPLE_SIN , \cos( \angle ANGLE ) = SIMPLE_COS , \tan( \angle ANGLE ) = SIMPLE_TAN
OPPOSITE_VALUE
\overline{AB}
is the hypotenuse
\overline{OPPOSITE_NAME}
is opposite to \angle ANGLE
SOH CAH TOA
We know the hypotenuse and need to solve for the opposite side so we can use the sine function (SOH)
\displaystyle \sin( \angle ANGLE ) = \frac{\text{opposite}}{\text{hypotenuse}} = \frac{\overline{OPPOSITE_NAME}}{\overline{AB}}= \frac{\overline{OPPOSITE_NAME}}{AB}
Since we have already been given \sin( \angle ANGLE )
, we can set up a proportion to find \overline{OPPOSITE_NAME}
.
\displaystyle \sin( \angle ANGLE ) = SIMPLE_SIN = \frac{\overline{OPPOSITE_NAME}}{AB}
Simplify.
\overline{OPPOSITE_NAME} = OPPOSITE_VALUE
\overline{OPPOSITE_NAME} = OPPOSITE_VALUE
\overline{AB} = {?}
\displaystyle \sin( \angle ANGLE ) = SIMPLE_SIN , \cos( \angle ANGLE ) = SIMPLE_COS , \tan( \angle ANGLE ) = SIMPLE_TAN
\overline{OPPOSITE_NAME}
is the opposite to \angle ANGLE
\overline{AB}
is the hypotenuse (note that it is opposite the right angle).
SOH CAH TOA
We know the opposite side and need to solve for the hypotenuse so we can use the sin function (SOH).
\displaystyle \sin( \angle ANGLE ) = \frac{\text{opposite}}{\text{hypotenuse}} = \frac{\overline{OPPOSITE_NAME}}{\overline{AB}} = \frac{OPPOSITE_VALUE}{\overline{AB}}
Since we have already been given \sin( \angle ANGLE )
, we can set up a proportion to find \overline{AB}
.
\displaystyle \sin( \angle ANGLE ) = SIMPLE_SIN = \frac{OPPOSITE_VALUE}{\overline{AB}}
Simplify.
\overline{AB} = AB
\overline{AB} = AB
\overline{ADJACENT_NAME} = {?}
\displaystyle \sin( \angle ANGLE ) = SIMPLE_SIN , \cos( \angle ANGLE ) = SIMPLE_COS , \tan( \angle ANGLE ) = SIMPLE_TAN
\overline{AB}
is the hypotenuse
\overline{ADJACENT_NAME}
is adjacent to \angle ANGLE
SOH CAH TOA
We know the hypotenuse and need to solve for the adjacent side so we can use the cos function (CAH)
\displaystyle \cos( \angle ANGLE ) = \frac{\text{adjacent}}{\text{hypotenuse}} = \frac{\overline{ADJACENT_NAME}}{\overline{AB}}= \frac{\overline{ADJACENT_NAME}}{AB}
Since we have already been given \cos( \angle ANGLE )
, we can set up a proportion to find \overline{ADJACENT_NAME}
.
\displaystyle \cos( \angle ANGLE ) = SIMPLE_COS = \frac{\overline{ADJACENT_NAME}}{AB}
Simplify.
\overline{ADJACENT_NAME} = ADJACENT_VALUE
\overline{ADJACENT_NAME}=ADJACENT_VALUE
\overline{AB} = {?}
\displaystyle \sin( \angle ANGLE ) = SIMPLE_SIN , \cos( \angle ANGLE ) = SIMPLE_COS , \tan( \angle ANGLE ) = SIMPLE_TAN
\overline{ADJACENT_NAME}
is adjacent to \angle ANGLE
\overline{AB}
is the hypotenuse (note that it is opposite the right angle)
SOH CAH TOA
We know the adjacent side and need to solve for the hypotenuse so we can use the cos function (CAH)
\displaystyle \cos( \angle ANGLE ) = \frac{\text{adjacent}}{\text{hypotenuse}} = \frac{\overline{ADJACENT_NAME}}{\overline{AB}} = \frac{ADJACENT_VALUE}{\overline{AB}}
Since we have already been given \cos( \angle ANGLE )
, we can set up a proportion to find \overline{AB}
.
\displaystyle \cos( \angle ANGLE ) = SIMPLE_COS = \frac{ADJACENT_VALUE}{\overline{AB}}
Simplify.
\overline{AB} = AB
\overline{OPPOSITE_NAME} = OPPOSITE_VALUE
\overline{ADJACENT_NAME} = {?}
\displaystyle \sin( \angle ANGLE ) = SIMPLE_SIN , \cos( \angle ANGLE ) = SIMPLE_COS , \tan( \angle ANGLE ) = SIMPLE_TAN
\overline{OPPOSITE_NAME}
is the opposite to \angle ANGLE
\overline{ADJACENT_NAME}
is adjacent to \angle ANGLE
SOH CAH TOA
We know the opposite side and need to solve for the adjacent side so we can use the tan function (TOA)
\displaystyle \tan( \angle ANGLE ) = \frac{\text{opposite}}{\text{adjacent}} = \frac{\overline{OPPOSITE_NAME}}{\overline{ADJACENT_NAME}}= \frac{OPPOSITE_VALUE}{\overline{ADJACENT_NAME}}
Since we have already been given \tan( \angle ANGLE )
, we can set up a proportion to find \overline{ADJACENT_NAME}
.
\displaystyle \tan( \angle ANGLE ) = SIMPLE_TAN = \frac{OPPOSITE_VALUE}{\overline{ADJACENT_NAME}}
Simplify.
\overline{ADJACENT_NAME} = ADJACENT_VALUE
\overline{ADJACENT_NAME} = ADJACENT_VALUE
\overline{OPPOSITE_NAME} =
?
\displaystyle \sin( \angle ANGLE ) = SIMPLE_SIN , \cos( \angle ANGLE ) = SIMPLE_COS , \tan( \angle ANGLE ) = SIMPLE_TAN
\overline{OPPOSITE_NAME}
is the opposite to \angle ANGLE
\overline{ADJACENT_NAME}
is adjacent to \angle ANGLE
SOH CAH TOA
We know the adjacent side and need to solve for the opposite side so we can use the tan function (TOA)
\displaystyle \tan( \angle ANGLE ) = \frac{\text{opposite}}{\text{adjacent}} = \frac{\overline{OPPOSITE_NAME}}{\overline{ADJACENT_NAME}}= \frac{\overline{OPPOSITE_NAME}}{ADJACENT_VALUE}
Since we have already been given \tan( \angle ANGLE )
, we can set up a proportion to find \overline{OPPOSITE_NAME}
.
\displaystyle \tan( \angle ANGLE ) = SIMPLE_TAN = \frac{\overline{OPPOSITE_NAME}}{ADJACENT_VALUE}
Simplify.
\overline{OPPOSITE_NAME} = OPPOSITE_VALUE


Fly Dog Fitness is the most creative, challenging, and cost effective workout in the Charleston, SC area. Our Fitness Boot Camps will challenge you, encourage your personal growth, and prove that you are capable of more!
Our Fitness Boot Camps incorporate a variety of equipment and training protocols ( e.g. cross-training, HIIT, strength training, plyometrics, balance). No two sessions are ever the same!
Fly Dog Fitness welcomes all fitness levels, from beginners to seasoned veterans. All of our programs may be modified to fit your fitness level, to help you build a strong fitness foundation or push your limits.
We pride ourselves in the fun, motivational, and competitive group environment that we have created. If you want to get fit, stay fit, and make friends along the way, Join The Pack!
"The friendliness and knowledge of the instructors is what keeps me excited about returning each month. Prior to joining Fly Dog Fitness I had never taken part in a Boot Camp class - I LOVE everything about it!!! Sometimes boot camp is a good stress relief too!" Tricia D, Facebook Review
We offer unlimited access to 10+ boot camps each week. For your convenience, take your pick of the times and locations that fit into your schedule. You can even mix & match. Each session runs for approximately 4 weeks.
Note: Each individual session is limited to 30 people.
| Location | Mon | Tues | Wed | Thurs | Fri | Time |
|---|---|---|---|---|---|---|
| Park Circle | X | - | X | - | X | 6:00 AM |
| Park Circle | X | - | X | - | - | 5:00 PM |
| Park Circle | - | - | - | X | - | 5:30 PM |
| Park Circle | X | X | X | - | - | 6:00 PM |
| Downtown | X | - | X | - | - | 8:30 AM |
| Start | End |
|---|---|
| June 2 | June 27 |
| July 7 | August 1 |
| August 4 | August 29 |
| September 2 | September 26 |
| More Coming Soon |
Each session is 60 minutes and starts promptly at the designated time. We work out rain or shine (literally) and all the equipment that you will use for that day will be provided (dumbbells, sandbags, hurdles, big-ass tires). All you need to bring is: a positive attitude, a yoga mat or towel, and lots of water.
No two sessions will ever be exactly the same, but generally there will be a 10-20 minute warm-up followed by the workout of the day. We like to keep things interesting. Fly Dog Fitness believes that motivation is a major key to success, so working in pairs or groups is common and encouraged. If you have any questions, contact us.


Standard cell class.
More...
#include <standard_cells.h>
This class provides the basic standard cell interface, such as creation of cell and pin types.
| ophidian::standard_cell::standard_cells::standard_cells |
( |
| ) |
|
Default constructor of the standard cell class. Initializes an empty system for cells and pins.
| std::size_t ophidian::standard_cell::standard_cells::cell_count |
( |
| ) |
const |
|
inline |
Returns the number of cells created in the cells system.
- Returns
- Number of cells.
| entity_system::entity ophidian::standard_cell::standard_cells::cell_create |
( |
std::string |
name | ) |
|
Creates a new cell in the standard cell library.
- Parameters
-
| name | Name of the new cell. |
- Returns
- Entity of the created cell.
| std::string ophidian::standard_cell::standard_cells::cell_name |
( |
entity_system::entity |
cell | ) |
const |
|
inline |
Returns the name of a cell.
- Parameters
-
| cell | Cell entity to get the name. |
- Returns
- Name of the cell.
Returns the names of all cells.
- Returns
- Constant reference to the cell names property.
| const std::vector<entity_system::entity>& ophidian::standard_cell::standard_cells::cell_pins |
( |
entity_system::entity |
cell | ) |
const |
|
inline |
Returns the pins of a cell.
- Parameters
-
| cell | Cell entity to get the pins. |
- Returns
- Constant reference to a vector with all pins of that cell.
| void ophidian::standard_cell::standard_cells::cell_sequential |
( |
entity_system::entity |
cell, |
|
|
bool |
sequential |
|
) |
| |
Sets if a cell is a sequential cell.
- Parameters
-
| cell | Cell entity to be set. |
| sequential | bool variable describing if the cell is sequential or not. |
| bool ophidian::standard_cell::standard_cells::cell_sequential |
( |
entity_system::entity |
cell | ) |
const |
|
inline |
Gets if a cell is a sequential cell.
- Parameters
-
| cell | Cell entity to get the attribute. |
- Returns
- bool variable describing if the cell is sequential or not.
Returns the cell system.
- Returns
- Constant reference to the cell system.
| entity_system::entity ophidian::standard_cell::standard_cells::pad_create |
( |
std::string |
name | ) |
|
Creates a new pad in the standard cell library. A pad is a special pin without owner.
- Parameters
-
- Returns
- Entity of the created pad.
| bool ophidian::standard_cell::standard_cells::pin_clock_input |
( |
entity_system::entity |
pin | ) |
const |
|
inline |
Gets if a pin is a clock input.
- Parameters
-
| pin | Pin entity to get the attribute. |
- Returns
- bool variable describing if the pin is a clock input or not.
| void ophidian::standard_cell::standard_cells::pin_clock_input |
( |
entity_system::entity |
pin, |
|
|
bool |
clock_input |
|
) |
| |
Sets if a pin is a clock input.
- Parameters
-
| pin | Pin entity to be set. |
| clock_input | bool variable describing if the pin is a clock input or not. |
| std::size_t ophidian::standard_cell::standard_cells::pin_count |
( |
| ) |
const |
|
inline |
Returns the number of pins created in the pins system.
- Returns
- Number of pins.
| entity_system::entity ophidian::standard_cell::standard_cells::pin_create |
( |
entity_system::entity |
cell, |
|
|
std::string |
name |
|
) |
| |
Creates a new pin in the standard cell library.
- Parameters
-
| cell | Cell entity owner of the new pin. |
| name | Name of the new pin. |
- Returns
- Entity of the created pin.
| pin_directions ophidian::standard_cell::standard_cells::pin_direction |
( |
entity_system::entity |
pin | ) |
const |
|
inline |
Returns the direction of a pin. Possible direction values are NOT_ASSIGNED, INPUT and OUTPUT.
- Parameters
-
| pin | Pin entity to get the name. |
- Returns
- Direction of the pin.
| void ophidian::standard_cell::standard_cells::pin_direction |
( |
entity_system::entity |
pin, |
|
|
pin_directions |
direction |
|
) |
| |
Sets the direction of a pin. Possible direction values are NOT_ASSIGNED, INPUT and OUTPUT.
- Parameters
-
| pin | Pin entity to sets the direction. |
| Direction | of the pin. |
| std::string ophidian::standard_cell::standard_cells::pin_name |
( |
entity_system::entity |
pin | ) |
const |
|
inline |
Returns the name of a pin.
- Parameters
-
| pin | Pin entity to get the name. |
- Returns
- Name of the pin.
| entity_system::entity ophidian::standard_cell::standard_cells::pin_owner |
( |
entity_system::entity |
pin | ) |
const |
|
inline |
Returns the owner of a pin.
- Parameters
-
| pin | Pin entity to get the owner. |
- Returns
- Owner of the pin.
Returns the pin system.
- Returns
- Constant reference to the pin system.
Registers a property to the cells entity system.
- Parameters
-
| property | Property to be registered. |
Registers a property to the pins entity system.
- Parameters
-
| property | Property to be registered. |
The documentation for this class was generated from the following files:
- /home/csguth/workspace/openeda/src/standard_cell/standard_cells.h
- /home/csguth/workspace/openeda/src/standard_cell/standard_cells.cpp


Discount Currency Exchange
Use the drop-down to select from 5 different currencies!
Enter an amount of USD:
Select Currency to Convert TO:
Select
Australian Dollar
Canada Dollar
Euro
British Pound
Chinese Yuan
Convert your Currency!


Part of the
Learn to build full-stack apps with serverless and React.
Get the
The most popular resource for building serverless apps.


pysal.explore.pointpats.
PoissonPointProcess
(window, n, samples, conditioning=False, asPP=False)[source]¶Poisson point process including \(N\)-conditioned CSR process and \(\lambda\)-conditioned CSR process.
Window
Bounding geometric object to contain point process realizations.
Size of each realization.
Number of realizations.
If True, use the \(\lambda\)-conditioned CSR process, number of events would vary across realizations; if False, use the \(N\)-conditioned CSR process.
Control the data type of value in the “realizations” dictionary. If True, the data type is point pattern as defined in pointpattern.py; if False, the data type is an two-dimensional array.
Examples
>>> import pysal.lib as ps
>>> import numpy as np
>>> from pointpats import Window
>>> from pysal.lib.cg import shapely_ext
Open the virginia polygon shapefile
>>> va = ps.io.open(ps.examples.get_path("virginia.shp"))
Create the exterior polygons for VA from the union of the county shapes
>>> polys = [shp for shp in va]
>>> state = shapely_ext.cascaded_union(polys)
Create window from virginia state boundary
>>> window = Window(state.parts)
1. Simulate a \(N\)-conditioned csr process in the same window (10 points, 2 realizations)
>>> np.random.seed(5)
>>> samples1 = PoissonPointProcess(window, 10, 2, conditioning=False, asPP=False)
>>> samples1.realizations[0] # the first realized event points
array([[-81.80326547, 36.77687577],
[-78.5166233 , 37.34055832],
[-77.21660795, 37.7491503 ],
[-79.30361037, 37.40467853],
[-78.61625258, 36.61234487],
[-81.43369537, 37.13784646],
[-80.91302108, 36.60834063],
[-76.90806444, 37.95525903],
[-76.33475868, 36.62635347],
[-79.71621808, 37.27396618]])
2. Simulate a \(\lambda\)-conditioned csr process in the same window (10 points, 2 realizations)
>>> np.random.seed(5)
>>> samples2 = PoissonPointProcess(window, 10, 2, conditioning=True, asPP=True)
>>> samples2.realizations[0].n # the size of first realized point pattern
10
>>> samples2.realizations[1].n # the size of second realized point pattern
13
The key is the index of each realization, and the value is simulated event points for each realization. The data type of the value is controlled by the parameter “asPP”.
Dictionary of a dictionary. The key is the index of each realization, and the value is a dictionary with the key ‘n’ and the value: 1. always equal to the parameter n in the case of N-conditioned process. For example, {0:{‘n’:100},1:{‘n’:100},2:{‘n’:100}} 2. randomly generated from a Possion process in the case of lambda-conditioned process. For example, {0:{‘n’:97},1:{‘n’:100},2:{‘n’:98}}
Methods
|
Generate a series of point coordinates within the given window. |
|
Generate n points which are randomly and independently distributed in the minimum bounding box of “window”. |
|
Generate the number of events for each realization. |
__init__
(self, window, n, samples, conditioning=False, asPP=False)[source]¶Initialize self. See help(type(self)) for accurate signature.
Methods
|
Initialize self. |
|
Generate a series of point coordinates within the given window. |
|
Generate n points which are randomly and independently distributed in the minimum bounding box of “window”. |
|
Generate the number of events for each realization. |


We are here to help enhance your vision, digitize for your vision. We are resilient in getting the job done.
Improving productivity, ability to adapt.
Our code rescales itself to preserve user experience.
We are strategic in our development.
Development of static to complex code for the world wide web or private network
Improving the quality of traffic from the search engine
Reporting of web data to understand the usage to improve web effectiveness
Providing expert assistance to help with services and products
Creation of user experience to maximize their use of the interface.


The LEV file is composed of 3 parts:
Magic, Version number and general level info
Texture Table
Geometry Description i.e. sectors, walls, vertices data
The following comments are accepted:
# comment
DATA # comment


About my self as a programmer
About my self as a programmer ? , It's a pretty good question for me, Because this field is not my ideal field all I want is to be an engineer or architech. But not because I'm good in math or I have a drawing skills it's all because there salary or income is high and there's a lot of company that easily to have a great position and good benifits