Fit Bayesian generalized (non-)linear multivariate multilevel models using 'Stan' for full Bayesian inference. A wide range of distributions and link functions are supported, allowing users to fit – among others – linear, robust linear, count data, survival, response times, ordinal, zero-inflated, hurdle, and even self-defined mixture models all in a multilevel context. Further modeling options include non-linear and smooth terms, auto-correlation structures, censored data, meta-analytic standard errors, and quite a few more. In addition, all parameters of the response distribution can be predicted in order to perform distributional regression. Prior specifications are flexible and explicitly encourage users to apply prior distributions that actually reflect their beliefs. Model fit can easily be assessed and compared with posterior predictive checks and leave-one-out cross-validation. References: Bürkner (2017) <doi:10.18637/jss.v080.i01>; Carpenter et al. (2017) <doi:10.18637/jss.v076.i01>.
| Version: | 2.7.0 |
| Depends: | R (≥ 3.2.0), Rcpp (≥ 0.12.0), ggplot2 (≥ 2.0.0), methods |
| Imports: | rstan (≥ 2.17.2), loo (≥ 2.0.0), Matrix (≥ 1.1.1), mgcv (≥ 1.8-13), rstantools (≥ 1.3.0), bayesplot (≥ 1.5.0), shinystan (≥ 2.4.0), bridgesampling (≥ 0.3-0), matrixStats, nleqslv, nlme, coda, abind, stats, utils, parallel, grDevices, backports |
| Suggests: | testthat (≥ 0.9.1), RWiener, future, mice, spdep, mnormt, lme4, MCMCglmm, ape, arm, statmod, digest, R.rsp, knitr, rmarkdown |
| Published: | 2018-12-17 |
| Author: | Paul-Christian Bürkner [aut, cre] |
| Maintainer: | Paul-Christian Bürkner <paul.buerkner at gmail.com> |
| BugReports: | https://github.com/paul-buerkner/brms/issues |
| License: | GPL (≥ 3) |
| URL: | https://github.com/paul-buerkner/brms, http://discourse.mc-stan.org |
| NeedsCompilation: | no |
| Citation: | brms citation info |
| Materials: | README NEWS |
| In views: | Bayesian, Phylogenetics |
| CRAN checks: | brms results |
| Reference manual: | brms.pdf |
| Vignettes: |
Define Custom Response Distributions with brms Estimating Distributional Models with brms Parameterization of Response Distributions in brms Handle Missing Values with brms Estimating Monotonic Effects with brms Estimating Multivariate Models with brms Estimating Non-Linear Models with brms Estimating Phylogenetic Multilevel Models with brms Multilevel Models with brms Overview of the brms Package |
| Package source: | brms_2.7.0.tar.gz |
| Windows binaries: | r-devel: brms_2.6.0.zip, r-release: brms_2.6.0.zip, r-oldrel: brms_2.6.0.zip |
| OS X binaries: | r-release: brms_2.6.0.tgz, r-oldrel: brms_2.6.0.tgz |
| Old sources: | brms archive |
| Reverse depends: | pollimetry |
| Reverse imports: | ESTER |
| Reverse suggests: | broom, broom.mixed, emmeans, jtools, projpred, sjPlot, sjstats, tidybayes |
Please use the canonical form https://CRAN.R-project.org/package=brms to link to this page.


The first stage to getting your Cisco phone working with SIP
Below is a list of firmware known by this server, note that this is blind as in it will not detect changes in TFTP folder and currently deleting firmware here does not delete it in TFTP folder either just makes it not possible to select when deploying phones.
THIS SECTION REQUIRES SOME SERIOUS REWORK TO BE USEFUL LIKE AUTO LOAD FILE DETECTION AND ABILITY TO REMOVE THE UNZIPED FILES IN TFTP DIRECTORY, Get involved on GitHub


|
|
AVL Array
Acknowledgments
|
|
I must thank my colleague and friend Manuel Peinado Gallego,
my personal templates-guru, who explained to me what are
functors, tags, allocators, and other great weird things.
Thanks to Jason Hise and Rene Rivera, for their revisions of
version 1.1 in the Boost mailing list (Oct-Nov 2006).
Revised
29 November, 2009
Copyright © Universidad de Alcalá
2006-2009. See accompanying license.


Our evaluator for JavaScript will be implemented as a JavaScript program. It may seem circular to think about evaluating JavaScript programs using an evaluator that is itself implemented in JavaScript. However, evaluation is a process, so it is appropriate to describe the evaluation process using JavaScript, which, after all, is our tool for describing processes.[1] An evaluator that is written in the same language that it evaluates is said to be metacircular.
The metacircular evaluator is essentially a JavaScript formulation of the environment model of evaluation described in section \ref{sec:environment-model}. Recall that the model has three basic parts:
\begin{enumerate} \item{ To evaluate an operator combination, evaluate the subexpressions and then apply the operator to the values of the subexpressions. } \item{ To evaluate a function application combination, evaluate the function subexpression and the argument subexpressions, and then apply the value of the function subexpression to the values of the argument subexpressions. } \item{ To apply a function to a set of arguments, evaluate the body of the function in a new environment. To construct this environment, extend the environment part of the function object by a frame in which the formal parameters of the function are bound to the arguments to which the function is applied. } \end{enumerate}
These three rules describe the essence of the evaluation process, a basic cycle in which statements to be evaluated in environments are reduced to functions to be applied to arguments, which in turn are reduced to new statements to be evaluated in new environments, and so on, until we get down to symbols, whose values are looked up in the environment, and to operators, which are applied directly (see Figure \ref{fig:eval-apply}).[2] This evaluation cycle will be embodied by the interplay between the two critical functions in the evaluator, eval and apply, which are described in section \ref{sec:core-of-evaluator} (see Figure \ref{fig:eval-apply}).
The implementation of the evaluator will depend upon functions that define the syntax of the expressions to be evaluated. We will use data abstraction to make the evaluator independent of the representation of the language. For example, rather than committing to a choice that an assignment is to be represented by a list beginning with the symbol assignment we use an abstract predicate is_assignment to test for an assignment, and we use abstract selectors assignment_name and assignment_right_hand_side to access the parts of an assignment. Implementation of expressions will be described in detail in section \ref{sec:representing-expressions}. There are also operations, described in section \ref{sec:eval-data-structures}, that specify the representation of functions and environments. For example, make_function_object constructs compound functions, lookup_name_value accesses the values of variables, and apply_builtin_function applies a primitive function to a given list of arguments.


Add input boxes that capture binary choices with the same look and feel to other form inputs.
To use the components here you first need to include this module in your application @NgModule


The interface defined by an instance of jiff.
You can get an instance of jiff by calling function jiff.make_jiff.
You can access any of the specified members of function with <jiff-instance>.<member-name>.
- Version:
- 1.0
- Source:
Namespaces
Members
__initialized :boolean
Flags whether this instance has been initialized (the server responded successfully to the initialization message)
Type:
- boolean
- Source:
__ready :boolean
Flags whether this instance is capable of starting the computation.
In other words, the public keys for all parties and servers are known,
and the server is connected. [Do not use directly externally; use isReady() instead]
Type:
- boolean
- Source:
barriers :Array.<Array.<promise>>
Stores all secret shares' promises belonging to a specific barrier.
Type:
- Array.<Array.<promise>>
- Source:
computation_id :string
Stores the computation id. [Do not modify]
Type:
- string
- Source:
custom_messages_mailbox :object
Stores custom messages that are received before their listeners are set. Messages are stored in order.
Once a listener has been set, the corresponding messages are sent to it in order.
This object has this format: { 'tag' => [ { "sender_id": , "message": }, ... ] }
Type:
- object
- Source:
extensions :Array.<string>
An array containing the names (jiff-client-[name].js) of extensions
applied to this instance.
Type:
- Array.<string>
- Source:
hooks :object
The hooks for this instance.
Checkout the hooks documentation
Type:
- object
- Source:
hostname :string
The server hostname, ends with a slash, includes port and protocol (http/https).
Type:
- string
- Source:
id :number
The id of this party. [Do not modify]
Type:
- number
- Source:
keymap :object
A map from party id to public key. Where key is the party id (number), and
value is the public key (Uint8Array).
Type:
- object
- Source:
listeners :object
A map from tags to listeners (functions that take a sender_id and a string message).
Stores listeners that are attached to this JIFF instance, listeners listen to custom messages sent by other parties
with a corresponding tag to the tag provided with the listener.
Type:
- object
- Source:
messagesWaitingKeys :object
For the case when messages from some party is received before its public key is known.
{ 'party_id': [ { 'label': 'share/open', } ] }
Type:
- object
- Source:
party_count :number
Total party count in the computation, parties will take ids between 1 to party_count (inclusive).
Type:
- number
- Source:
public_key :Uint8Array
The public key of this party (check Library Specs). [Do not modify]
Type:
- Uint8Array
- Source:
secret_key :Uint8Array
The secret key of this party (check Library Specs). [Do not modify]
Type:
- Uint8Array
- Source:
server_count :number
Total server count in the computation, servers will take ids between "s1" to "s" (inclusive).
Type:
- number
- Source:
wait_callbacks :Array
Stores the parties and callbacks for every .wait_for() registered.
Type:
- Array
- Source:
Zp :number
The default Zp for this instance.
Type:
- number
- Source:
Methods
apply_extension(ext, optionsopt)
Safely applies the given extension, if the extension is safe, it will be applied succesfully.
If the extension is not safe to be applied, an exception will be thrown with an appropriate error message.
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
ext |
object | the namespace of the extension acquired when the extension is imported, should contain a make_jiff function. | ||
options |
object |
<optional> |
{} | optional options to be passed to the extension. |
- Source:
can_apply_extension(name) → {boolean|string}
Checks if a given extension can be safely applied to the instance
Parameters:
| Name | Type | Description |
|---|---|---|
name |
string | the extension name (found in the filename at jiff-client[name].js) |
- Source:
Returns:
true if the extension can be safely applied, otherwise returns an error message.
- Type
- boolean | string
connect()
Connect to the server and starts listening.
- Source:
disconnect(safeopt, freeopt, callbackopt)
Disconnects from the computation.
Allows the client program to exit.
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
safe |
boolean |
<optional> |
false | if true, jiff will disconnect safely (i.e. after ensuring all outgoing pending messages were delivered). |
free |
boolean |
<optional> |
false | if set to true, it means this party's disconnection is final, and all resources associated with this party must be freed. If all parties in a computation are freed, then all resources associated with the computation are freed, and any subsequent reconnection to the computation is as if a the connection is for a fresh new computation. |
callback |
function |
<optional> |
executed after the instance safely disconnects, if safe is set to false, this parameter is ignored. |
- Source:
emit(tag, receivers, message, encryptopt)
Send a custom message to a subset of parties.
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
tag |
string | the tag to attach to the message. | ||
receivers |
Array | contains the party ids to receive the message, all non-server parties if null. | ||
message |
string | the message to send. | ||
encrypt |
boolean |
<optional> |
true | if true, messages will be encrypted. |
- Source:
execute_array_hooks(hook_name, params, acc_index) → {object}
Execute all hooks attached to the given name in order.
Hooks are executed sequentially such that the first hook's return value is passed into the second and so on.
Parameters:
| Name | Type | Description |
|---|---|---|
hook_name |
string | the name of the hook |
params |
Array | parameters to pass to the hooks |
acc_index |
number | the index in params in which the result of the hooks must be saved, if no hooks exist for the name, then params[acc_index] is returned. |
- Source:
Returns:
returns the result of the last hook.
- Type
- object
has_extension(name) → {boolean}
Checks if the given extension is applied.
Parameters:
| Name | Type | Description |
|---|---|---|
name |
string | the extension name (found in the filename at jiff-client-[name].js). |
- Source:
Returns:
true if the extension was applied, false otherwise.
- Type
- boolean
isReady() → {boolean}
Checks whether this instance is connected and the server signaled the start of computation.
- Source:
Returns:
true if the instance is ready, false otherwise.
- Type
- boolean
listen(tag, handler)
Registers the given function as a listener for messages with the given tag.
Removes any previously set listener for this tag.
Parameters:
| Name | Type | Description |
|---|---|---|
tag |
string | the tag to listen for. |
handler |
function | the function that handles the received message: takes the sender id and the message as parameters. |
- Source:
open(share, partiesopt, op_idsopt) → {promise|null}
Open a secret share to reconstruct secret.
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
share |
SecretShare | this party's share of the secret to reconstruct. | ||
parties |
Array |
<optional> |
all_parties | an array with party ids (1 to n) of receiving parties. |
op_ids |
string | number | object |
<optional> |
auto_gen() | an optional mapping that specifies the ID/Tag associated with each open message sent. If this is an object, then it should map an id of a receiving parties to the op_id that should be used to tag the message sent to that party. Parties left unmapped by this object will get an automatically generated id. If this is a number/string, then it will be used as the id tagging all messages sent by this open to all parties. You can safely ignore this unless you have multiple opens each containing other opens. In that case, the order by which these opens are executed is not fully deterministic and depends on the order of arriving messages. In this case, use this parameter with every nested_open, to ensure ids are unique and define a total ordering on the execution of the opens (check implementation of slt for an example). |
- Source:
Throws:
error if share does not belong to the passed jiff instance.
Returns:
a (JQuery) promise to the open value of the secret, null if the party is not specified in the parties array as a receiver.
- Type
- promise | null
open_2D_array(shares, partiesopt, op_idsopt) → {promise}
Opens a 2D array of secret shares.
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
shares |
Array.<Array.<SecretShare>> | an array containing this party's shares of the secrets to reconstruct. | ||
parties |
Array.<Array> |
<optional> |
all_parties | an array with party ids (1 to n) of receiving parties.
This must be one of 3 cases: 1. null: open all shares to all parties. 2. { parties: [parties] } opens all shares (all rows) to all the parties specified in the array. 3. { parties: [parties], 4. { parties: [parties], |
op_ids |
string | number | object |
<optional> |
auto_gen() | an optional mapping that specifies the ID/Tag associated with each open message sent. Since open_2D_array involves sending many messages per party, this parameter only specifies the BASE OPERATION ID. Each message sent will have this base id attached to it concatenated to a counter. If this is an object, then it should map an id of a receiving parties to the base op_id that should be used to tag the messages sent to that party. Parties left unmapped by this object will get an automatically generated id. If this is a number/string, then it will be used as the base id tagging all messages sent by this open to all parties. You can safely ignore this unless you have multiple opens each containing other opens. In that case, the order by which these opens are executed is not fully deterministic and depends on the order of arriving messages. In this case, use this parameter with every nested_open, to ensure ids are unique and define a total ordering on the execution of the opens (check implementation of slt for an example). |
- Source:
Throws:
error if some shares does not belong to the passed jiff instance.
Returns:
a (JQuery) promise to ALL the open values of the secret, the promise will yield
an array of values, each corresponding to the given share in the shares parameter
at the same index. In the case where different values are opened to different parties, the order
of the values will be preserved, but not the indices, there will be no blanks in the resulting arrays,
the first share that is opened to this party will appear at indices [0][0], even if it was not initially
at [0][0].
- Type
- promise
open_array(shares, partiesopt, op_idsopt) → {promise}
Opens an array of secret shares.
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
shares |
Array.<SecretShare> | an array containing this party's shares of the secrets to reconstruct. | ||
parties |
Array |
<optional> |
all_parties | an array with party ids (1 to n) of receiving parties.
This must be one of 3 cases: 1. null: open all shares to all parties. 2. array of numbers: open all shares to all the parties specified in the array. 3. array of array of numbers: open share with index i to the parties specified in the nested array at parties[i]. if parties[i] was null, then shares[i] will be opened to all parties. |
op_ids |
string | number | object |
<optional> |
auto_gen() | an optional mapping that specifies the ID/Tag associated with each open message sent. Since open_array involves sending many messages per party, this parameter only specifies the BASE OPERATION ID. Each message sent will have this base id attached to it concatenated to a counter. If this is an object, then it should map an id of a receiving parties to the base op_id that should be used to tag the messages sent to that party. Parties left unmapped by this object will get an automatically generated id. If this is a number/string, then it will be used as the base id tagging all messages sent by this open to all parties. You can safely ignore this unless you have multiple opens each containing other opens. In that case, the order by which these opens are executed is not fully deterministic and depends on the order of arriving messages. In this case, use this parameter with every nested_open, to ensure ids are unique and define a total ordering on the execution of the opens (check implementation of slt for an example). |
- Source:
Throws:
error if some shares does not belong to the passed jiff instance.
Returns:
a (JQuery) promise to ALL the open values of the secret, the promise will yield
an array of values, each corresponding to the given share in the shares parameter
at the same index.
- Type
- promise
receive_open(partiesopt, thresholdopt, Zpopt, op_idsopt) → {promise}
Receive shares from the specified parties and reconstruct their secret.
Use this function in a party that will receive some answer/value but does not have a share of it.
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
parties |
Array |
<optional> |
all_parties | an array with party ids (1 to n) specifying the parties sending the shares. |
threshold |
number |
<optional> |
parties.length | the min number of parties needed to reconstruct the secret, defaults to all the senders. |
Zp |
number |
<optional> |
jiff_instance.Zp | the mod (if null then the default Zp for the instance is used). |
op_ids |
string | number | object |
<optional> |
auto_Gen() | same as jiff-instance.open(..) |
- Source:
Returns:
a (JQuery) promise to the open value of the secret.
- Type
- promise
secret_share(jiff, ready, promise, value, holders, threshold, Zp) → {SecretShare}
The function used by JIFF to create a new share. This can be used by extensions to create custom shares.
Modifying this will modify how shares are generated in the BASE JIFF implementation.
A share is a value wrapper with a share object, it has a unique id
(per computation instance), and a pointer to the instance it belongs to.
A share also has methods for performing operations.
Parameters:
| Name | Type | Description |
|---|---|---|
jiff |
jiff-instance | the jiff instance. |
ready |
boolean | whether the value of the share is ready or deferred. |
promise |
promise | a promise to the value of the share. |
value |
number | the value of the share (null if not ready). |
holders |
Array | the parties that hold all the corresponding shares (must be sorted). |
threshold |
number | the min number of parties needed to reconstruct the secret. |
Zp |
number | the mod under which this share was created. |
- Source:
Returns:
the secret share object containing the give value.
- Type
- SecretShare
server_generate_and_share(optionsopt, receivers_listopt, thresholdopt, Zpopt, number_idopt) → {Array.<SecretShare>}
Use the server to generate shares for a random bit, zero, random non-zero number, or a random number.
The parties will not know the value of the number (unless the request is for shares of zero) nor other parties' shares.
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
options |
object |
<optional> |
{count: 1} | an object with these properties: { "number": number, "bit": boolean, "nonzero": boolean, "max": number, "count": number } |
receivers_list |
Array |
<optional> |
all_parties | array of party ids that want to receive the triplet shares, by default, this includes all parties. |
threshold |
number |
<optional> |
receivers_list.length | the min number of parties needed to reconstruct the triplet. |
Zp |
number |
<optional> |
jiff_instance.Zp | the mod (if null then the default Zp for the instance is used). |
number_id |
string |
<optional> |
auto_gen() | the number id which is used to identify this request, so that every party gets a share from the same number for every matching instruction. An automatic number id is generated by increasing a local counter, default ids suffice when all parties execute the instructions in the same order. |
- Source:
Returns:
an array of secret shares of shares of zeros / random bits / random numbers / random non-zero numbers according to options.
- Type
- Array.<SecretShare>
share(secret, thresholdopt, receivers_listopt, senders_listopt, Zpopt, share_idopt) → {object}
Share a secret input.
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
secret |
number | the number to share (this party's input). | ||
threshold |
number |
<optional> |
receivers_list.length | the min number of parties needed to reconstruct the secret, defaults to all the receivers. |
receivers_list |
Array |
<optional> |
all_parties | array of party ids to share with, by default, this includes all parties. |
senders_list |
Array |
<optional> |
all_parties | array of party ids to receive from, by default, this includes all parties. |
Zp |
number |
<optional> |
jiff_instance.Zp | the mod (if null then the default Zp for the instance is used). |
share_id |
string | number |
<optional> |
auto_gen() | the tag used to tag the messages sent by this share operation, this tag is used so that parties distinguish messages belonging to this share operation from other share operations between the same parties (when the order of execution is not deterministic). An automatic id is generated by increasing a local counter, default ids suffice when all parties execute all sharing operations with the same senders and receivers in the same order. |
- Source:
Returns:
a map (of size equal to the number of parties)
where the key is the party id (from 1 to n)
and the value is the share object that wraps
the value sent from that party (the internal value maybe deferred).
- Type
- object
share_2D_array(array, lengthsopt, thresholdopt, receivers_listopt, senders_listopt, Zpopt, share_idopt) → {promise}
Share a 2D array of values. Each sender may have a 2D array of different length (possibily jagged). This is handled by the lengths parameter.
This function will reveal the lengths of the shared array.
If parties would like to keep the lengths of their arrays secret, they should agree on some "max" length apriori (either under MPC
or as part of the logistics of the computation), all their arrays should be padded to that length by using appropriate default/identity
values.
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
array |
Array.<Array> | the 2D array to be shared. | ||
lengths |
null | number | object |
<optional> |
the lengths of the arrays to be shared. For this to work successfully, the
same exact value must be used in the calling code for each party. Any missing
lengths for a row will be automatically publicly revealed by this function.
Must have the following format: 1. null: lengths are unknown, each sender will publicly reveal the lengths of its own array. 2. { rows: 3. { |
|
threshold |
number |
<optional> |
receivers_list.length | the min number of parties needed to reconstruct the secret, defaults to all the receivers. |
receivers_list |
Array |
<optional> |
all_parties | array of party ids to share with, by default, this includes all parties. |
senders_list |
Array |
<optional> |
all_parties | array of party ids to receive from, by default, this includes all parties. |
Zp |
number |
<optional> |
jiff_instance.Zp | the mod (if null then the default Zp for the instance is used). |
share_id |
string | number |
<optional> |
auto_gen() | the base tag used to tag the messages sent by this share operation, every element of the array will get a unique id based on the concatenation of base_share_id and the index of the element. This tag is used so that parties distinguish messages belonging to this share operation from other share operations between the same parties (when the order of execution is not deterministic). An automatic id is generated by increasing a local counter, default ids suffice when all parties execute all sharing operations with the same senders and receivers in the same order. |
- Source:
Returns:
if the calling party is a receiver then a promise to the shared arrays is returned, the promise will provide an object
formatted as follows: { : [ [ <1st_row_shares> ], [<2nd_row_share> ], ..., [ <(lengths[party_id])th_row_shares> ] ] }
where the party_ids are those of the senders.
if the calling party is not a receiver, then null is returned.
- Type
- promise
share_array(array, lengthsopt, thresholdopt, receivers_listopt, senders_listopt, Zpopt, share_idopt) → {promise}
Share an array of values. Each sender may have an array of different length. This is handled by the lengths parameter.
This function will reveal the lengths of the shared array.
If parties would like to keep the lengths of their arrays secret, they should agree on some "max" length apriori (either under MPC
or as part of the logistics of the computation), all their arrays should be padded to that length by using appropriate default/identity
values.
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
array |
Array | the array to be shared. | ||
lengths |
null | number | object |
<optional> |
the lengths of the arrays to be shared, has the following options: 1. null: lengths are unknown, each sender will publicly reveal the lengths of its own array. 2. number: all arrays are of this length 3. object: { |
|
threshold |
number |
<optional> |
receivers_list.length | the min number of parties needed to reconstruct the secret, defaults to all the receivers. |
receivers_list |
Array |
<optional> |
all_parties | array of party ids to share with, by default, this includes all parties. |
senders_list |
Array |
<optional> |
all_parties | array of party ids to receive from, by default, this includes all parties. |
Zp |
number |
<optional> |
jiff_instance.Zp | the mod (if null then the default Zp for the instance is used). |
share_id |
string | number |
<optional> |
auto_gen() | the base tag used to tag the messages sent by this share operation, every element of the array will get a unique id based on the concatenation of base_share_id and the index of the element. This tag is used so that parties distinguish messages belonging to this share operation from other share operations between the same parties (when the order of execution is not deterministic). An automatic id is generated by increasing a local counter, default ids suffice when all parties execute all sharing operations with the same senders and receivers in the same order. |
- Source:
Returns:
if the calling party is a receiver then a promise to the shared arrays is returned, the promise will provide an object
formatted as follows: { : [ <1st_share>, <2nd_share>, ..., <(lengths[party_id])th_share> ] }
where the party_ids are those of the senders.
if the calling party is not a receiver, then null is returned.
- Type
- promise
triplet(receivers_listopt, thresholdopt, Zpopt, triplet_idopt)
Creates 3 shares, a share for every one of three numbers from a beaver triplet.
The server generates and sends the triplets on demand.
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
receivers_list |
Array |
<optional> |
all_parties | array of party ids that want to receive the triplet shares, by default, this includes all parties. |
threshold |
number |
<optional> |
receivers_list.length | the min number of parties needed to reconstruct the triplet. |
Zp |
number |
<optional> |
jiff_instance.Zp | the mod (if null then the default Zp for the instance is used). |
triplet_id |
string |
<optional> |
auto_Gen() | the triplet id which is used to identify the triplet requested, so that every party gets a share from the same triplet for every matching instruction. An automatic triplet id is generated by increasing a local counter, default ids suffice when all parties execute the instructions in the same order. |
- Source:
Returns:
an array of 3 SecretShares [share_a, share_b, share_c] such that a * b = c.
{Promise} sodium()
A promise for when the sodium wrappers are ready. This will be undefined if options.sodium is false.
- Source:


Preparation time
overnight
Cooking time
10 to 30 mins
Serves
Serves 4
Dietary
Home-made buttery croissants, freshly baked, are a real triumph. Feel proud when you spread on the jam!
Place the flour, salt, sugar and yeast in a large mixing bowl. Using a wooden spoon, slowly mix in a little water until the mixture forms into a pliable dough.
Place the dough on a floured surface and knead until it feels elastic.
Return the dough to the bowl, cover and chill in the refrigerator for an hour.
Return the chilled dough to your floured work surface and roll it into a rectangle, around 60x30cm/24x12in.
Roll out the chilled butter into a rectangle about 1cm/½in thick, around 20x30cm/8x12in.
Place the butter rectangle in the centre of the dough rectangle, so it covers the middle third of the dough.
Fold each side of the dough over the butter, so there is one layer of dough on the bottom, a layer of butter, then two layers of dough.
Wrap the dough in cling film and chill in the fridge for another hour.
Lightly flour the worktop and roll out the dough to a rectangle, around 60x30cm/24x12in. Repeat the folding process, folding the long sides into the middle, then return the dough to the fridge for a further hour.
Repeat this process of folding and chilling two more times, then wrap the dough in cling film and set it aside to rest overnight.
Using a rolling pin, roll out the rested dough to 3mm/1/8in thick.
Either use a croissant cutter to cut triangles or cut the rolled out dough into squares, each 20cm/8in square.
Cut each square diagonally, making two triangles.
Place the dough triangles on a lightly floured surface with the right angle away from you.
Roll the croissant towards the right angle point and curl the dough roll around into a traditional crescent shape. If using chocolate, add the chocolate across the widest part of the triangle, before rolling it up.
Place the shaped croissants on baking trays lined with baking parchment and leave to rise for 1½ hrs.
Preheat the oven to 200C/425F/Gas 6.
Lightly egg-wash the croissants and bake for 10-15 minutes until golden brown.


Tears and torment for Serbia after loss to Russia
MADRID: Try telling Viktor Troicki and his Serbian team mates the revamped Davis Cup Finals don't matter.
The 33-year-old was inconsolable on Friday after poking a routine volley out on Serbia's third match point in the deciding doubles rubber of their quarter-final clash with Russia.
He and Novak Djokovic had three match points in the final-set tiebreak before Andrey Rublev and Karen Khachanov claimed a 6-4 4-6 7-6(8) victory at La Caja Magica to give the Russians a 2-1 win and set up a semi-final against Canada.
Troicki became a national hero in 2010 when he won the final point against France's Michael Llodra to clinch the Davis Cup for Serbia in Belgrade, sparking unforgettable scenes in which the team, including Djokovic, shaved their heads on court before partying into the small hours.
This time there was just gut-wrenching despair as Serbia's hopes slipped away in the cruellest fashion imaginable.
In an emotional news conference, Troicki could barely raise his chin off his chest.
"I probably feel the worst ever. I never experienced such a moment in my career," he said.
"I let my team down and I apologise to them. We were up in the tiebreak. We had chances to finish it. We didn't do it. I messed up in the crucial moments.
"I don't know. God gave me the chance once to be the hero, to win the Davis Cup in the deciding rubber. Now he took it away. I'm really disappointed with myself."
Djokovic claimed a 15th successive Davis Cup singles win when he beat Khachanov 6-3 6-3 to level the tie after Rublev had thrashed Filip Krajinovic 6-1 6-2 on centre court.
The 16-times Grand Slam champion needed treatment on his elbow in the second set of the doubles but blanked out the pain as he and Troicki had match points at 6-5, 7-6 and 8-7 in the breaker. Troicki missed a return on Russia's first match point to spark wild celebrations in the Russian camp.
"It hurts, it hurts us really badly," Djokovic said.
The Davis Cup Finals marked the end of 35-year-old Janko Tipsarevic's career, another of the 2010 heroes, and captain Nenad Zimonjic described it as the end of the golden generation.
"At the end, you win as a team and you lose as a team. It doesn't matter if somebody wins two matches and you end up losing the match," he said as the tears began to flow.
"It was very emotional because it's Janko's last....sorry."
At that point virtually every team member began to cry and the media broke into applause.
"The main thing is that everybody knows here how much we care about each other, how much we love each other," he added.
Former world number eight Tipsarevic finished off a nerve-tingling news conference in forthright fashion.
"I will be very short," he said. "It's not the wins or the losses, it's that this beautiful sport makes you tough.
"This emotion that you want to commit suicide after a day like this. You go towards and against the wind. These emotions are the things I can draw from these 20 years."
(Editing by Toby Davis and Ed Osmond)


[quote-left] This is the quote-left and quote right [quote-right]
The preamble under title does not display by default.
To start a new paragraph, leave a blank line by hitting Enter twice, then just keep on typing.
Learn the AsciiDoc syntax
Install Asciidoctor
Write my document
|
Tip
|
this is a tip admonition paragraph. |
|
Note
|
this is a note admonition paragraph. |
|
Warning
|
this is a warning admonition paragraph. |
|
Important
|
this is a important admonition paragraph. |
|
Caution
|
this is a caution admonition paragraph. |
http://fortawesome.github.io/Font-Awesome/icons/ Uses the 16 predefined colors in HTML. Many icons don’t work.
[question] This is the question
[bug] this is a bug
[flag] lime colored flag
[check] this is a checkmark
[envelope] envelope, [circle] circle, [html5], [linux], [css3], [github-alt]
[bolt], [plane], [plus], [pencil] [refresh], [rss], [trash], [ticket] [globe], [home], [wrench]
[star] the star icon.
[tags] tags: ruby, asciidoctor
Four score and seven years ago our fathers brought forth on this continent a new nation…
| Col 1 | Col 2 | Col 3 |
|---|---|---|
6 |
Three items |
d |
1 |
Item 1 |
a |
2 |
Item 2 |
b |
3 |
Item 3 |
c |
1 |
2 |
3 |
4 |
a |
b |
c |
d |
A |
B |
C |
D |
checked
also checked
not checked
one
two
three
This is a callout. Must be at end of line (1) apparently has to be inside this block to work
this indented block works too (1) notice one space on the left
callout explained


vulnerability {border-style climatic px;} #ffffff;} Minas municipalities Index Vulnerability climate indicators Climate Change state Figure Rio change data Brazil health used Brasil Gerais component included px; related scenarios using {font-family RCP anomalies based capacity developed font-size parts social software vulnerable Gerais, Human Research adaptive double; eastern indices pattern variables Confalonieri Janeiro Janeiro, Vulnerabilidade border-color border-width considered environmental given hazards high higher northeastern population regions sensitivity solid; southeastern values {font-style {font-weight Brazilian Environmental FIRJAN Global Health Instituto Intergovernmental Panel Public Report SisVuClima access bold clear collab: components courier; different em; environmental, group includes index municipalities. natural observed physical pt;} public shown social, spatial


Your Personal Proof Assistant made with Simpy
If IDEs can help coders with their coding errors, why isn't there a handy program to help mathematicians
with
their calculations?
- A forelorn mathematician
Input examples, press "enter" for each row simplification:
- x^2 - 4
(x+2)(x-2)
- x^2+3x+2=12
(x+1)(x+2)=12
- x*y+z-12=2z
x*y-12=z
Enter your input, simplifying line by line:


Browse
Simple button
Choose
Userpic + crop
Webcam
Webcam
File upload
Multiupload
Drag and drop, automatic upload
Choose files
<%-name%>
Drag'n'drop upload
Loading…


Favorite Places To Eat!
Hannah's Favorites
Bollywood Theater
El Nutri Taco
Por Que No
Connor's Favorites
Scottie's Pizza
Thai Lemon
Dar Salaam
Favorite Places to Travel
Best Places
Koh Lanta, Thailand
Oslo, Norway
Bellingham, Washington


This is the quick introduction guide to Joda-Time and the features on offer. Its designed for those of you who are too impatient to read the full user guide.
Joda-Time includes these key datetime classes:
Each datetime class provides a variety of constructors. These include the Object constructor. This allows you to construct, for example, DateTime from the following objects:
Each datetime class provides simple easy methods to access the datetime fields. For example, to access the month you can use:
DateTime dt = new DateTime(); int month = dt.getMonthOfYear();
All the main datetime classes are immutable (like String) and cannot be changed after creation. However, simple methods have been provided to alter field values in a newly created object. For example, to set the year, or add 2 hours you can use:
DateTime dt = new DateTime(); DateTime year2000 = dt.withYear(2000); DateTime twoHoursLater = dt.plusHours(2);
In addition to the basic get methods, each datetime class provides property methods for each field. These provide access to the full wealth of Joda-Time functionality. For example, to access details about a month or year:
DateTime dt = new DateTime(); String monthName = dt.monthOfYear().getAsText(); String frenchShortName = dt.monthOfYear().getAsShortText(Locale.FRENCH); boolean isLeapYear = dt.year().isLeap(); DateTime rounded = dt.dayOfMonth().roundFloorCopy();
Joda-Time provides support for multiple calendar systems and the full range of time zones. The Chronology and DateTimeZone classes provide this support.
Joda-Time defaults to using the ISO calendar system (the calendar used by most of the business world) and the default time zone of your machine. These default values can be overridden whenever necessary. Please note that the ISO calendar system is historically inaccurate before 1583.
Joda-Time uses a pluggable mechanism for calendars. (The JDK uses subclasses such as GregorianCalendar.) To obtain a Joda-Time calendar, use one of the factory methods on Chronology.
Chronology coptic = CopticChronology.getInstance();
Time zones are implemented as part of the chronology. To obtain a Joda-Time chronology in the Tokyo time zone, you can use.
DateTimeZone zone = DateTimeZone.forID("Asia/Tokyo"); Chronology gregorianJuian = GJChronology.getInstance(zone);
Joda-Time provides support for intervals and time periods.
An interval is represented by the Interval class. It holds a start and end datetime, and allows operations based around that range of time.
A time period is represented by the Period class. This holds a period such as 6 months, 3 days and 7 hours. You can create a Period directly, or derive it from an interval.
A time duration is represented by the Duration class. This holds an exact duration in milliseconds. You can create a Duration directly, or derive it from an interval.
Although a period and a duration may seem similar, they operate differently. For example, consider adding one day to a DateTime at the daylight savings cutover.
DateTime dt = new DateTime(2005, 3, 26, 12, 0, 0, 0); DateTime plusPeriod = dt.plus(Period.days(1)); DateTime plusDuration = dt.plus(new Duration(24L*60L*60L*1000L));


Welcome to The Spicy Stew
Welcome! I'm DiggyJohnson, and I'm excited to get going with this project.
Why?
The idea for a blog started out as a joke between a buddy and myself. But upon thinking more about it, we realized there really isn't much written OSRS content (and I needed to practice my webdev and cloud architectures skills anyways). While Youtube/Twitch is the primary medium for content creators, it has a huge amount of overhead. On the other hand, blogging is as easy as opening a text editor and getting my thoughts on the page.
Look for a post in the near future enumerating some of the content ideas we have for The Spicy Stew, and as always please do not hesitate to reach out with your own feedback and suggestions.


Input Validation Using Regular Expressions RegExp
First Test : Does User Input Contain A Number?
Is The Input A Number?


Slides for my DroidKaigi 2019 talk titled What does adb lolcat do? are viewable here.
Please contact me via Twitter if you have any questions!


Resume
Personal Information
- name - Jia Gao
- Address - xxxx Address
- DOB - 10/24/1999
Skills
- Adequate Level Java
- Beginner Level Python
- Beginner Level HTML, CSS and Javescript
Education
- Murrow High School
- Brooklyn College
Experience
- Head Teacher at CPC
- Resource Navigator
- Babysitter
Extracurriculars


Newslizr
Design Overview
Online Machine Learning
k-means algorithm
Naive Bayes
Perceptron
Stochastic Gradient Descent
Prototype
That's all folks
ADITYA SARAWGI
SURAJ BRAHMARAJU


Three Sisters [aj43], mountain, in Catarack Island, wilderness
Last updated Turn #98
Three Sisters [aj43], mountain, in Catarack Island, wilderness
------------------------------------------------------------------------
Routes leaving Three Sisters:
North, to Ocean [ai43], The Inner Sea, impassable
East, plain, to Unnamed Plains [aj44], 7 days
South, plain, to Unnamed Plains [ak43], 7 days
West, plain, to Unnamed Plains [aj42], 7 days
Seen here:
Stack of chimera [hr6n], chimera, number: 5
Stack of chimera [ii9t], chimera, number: 7
Stack of chimera [dh9n], chimera, number: 2


|
OpenCV <IP_ADDRESS> | |||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.opencv.ml.CvStatModel org.opencv.ml.CvDTree
public class CvDTree
The class implements a decision tree as described in the beginning of this section.
| Constructor Summary | |
|---|---|
CvDTree()
|
| Method Summary | |
|---|---|
void |
clear()
|
Mat |
getVarImportance()
Returns the variable importance array. |
boolean |
train(Mat trainData,
int tflag,
Mat responses)
Trains a decision tree. |
boolean |
train(Mat trainData,
int tflag,
Mat responses,
Mat varIdx,
Mat sampleIdx,
Mat varType,
Mat missingDataMask,
CvDTreeParams params)
Trains a decision tree. |
| Methods inherited from class org.opencv.ml.CvStatModel |
|---|
load, load, save, save |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public CvDTree()
| Method Detail |
|---|
public void clear()
public Mat getVarImportance()
Returns the variable importance array.
public boolean train(Mat trainData, int tflag, Mat responses)
Trains a decision tree.
There are four train
methods in "CvDTree":
tflag=CV_ROW_SAMPLE
and tflag=CV_COL_SAMPLE
) are
supported, as well as sample and variable subsets, missing measurements,
arbitrary combinations of input and output variable types, and so on. The
last parameter contains all of the necessary training parameters (see the
"CvDTreeParams" description).
train
is mostly used for building tree
ensembles. It takes the pre-constructed "CvDTreeTrainData" instance and an
optional subset of the training set. The indices in subsampleIdx
are counted relatively to the _sample_idx
, passed to the
CvDTreeTrainData
constructor. For example, if _sample_idx=[1,
5, 7, 100]
, then subsampleIdx=[0,3]
means that the
samples [1, 100]
of the original training set are used.
The function is parallelized with the TBB library.
trainData
- a trainDatatflag
- a tflagresponses
- a responsespublic boolean train(Mat trainData, int tflag, Mat responses, Mat varIdx, Mat sampleIdx, Mat varType, Mat missingDataMask, CvDTreeParams params)
Trains a decision tree.
There are four train
methods in "CvDTree":
tflag=CV_ROW_SAMPLE
and tflag=CV_COL_SAMPLE
) are
supported, as well as sample and variable subsets, missing measurements,
arbitrary combinations of input and output variable types, and so on. The
last parameter contains all of the necessary training parameters (see the
"CvDTreeParams" description).
train
is mostly used for building tree
ensembles. It takes the pre-constructed "CvDTreeTrainData" instance and an
optional subset of the training set. The indices in subsampleIdx
are counted relatively to the _sample_idx
, passed to the
CvDTreeTrainData
constructor. For example, if _sample_idx=[1,
5, 7, 100]
, then subsampleIdx=[0,3]
means that the
samples [1, 100]
of the original training set are used.
The function is parallelized with the TBB library.
trainData
- a trainDatatflag
- a tflagresponses
- a responsesvarIdx
- a varIdxsampleIdx
- a sampleIdxvarType
- a varTypemissingDataMask
- a missingDataMaskparams
- a params
|
OpenCV <IP_ADDRESS> Documentation | |||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Home
About
Contact
Welcome To Study Buddy!
Let's Get Started!
Pick a subject you want to study:
Computer Science
Mathematics
Languages
Pick a category:
Ruby
JavaScript
C Sharp
Dot Net
Pick a category:
Spanish
French
Russian
Indonesian
Pick a category:
Calculus
Algebra
Geometry
Make a New Category
Add a Card to this Category
View All Cards
View Cards in Slider
Enter new Category name:
Submit
Make a card
Subject:
, Category:
Enter the term:
Enter the term's definition:
Add Card


WITNESS LIST Finance Committee February 7, 2005 - 9:00A SB 1 - Article II - Health and Human Services Commission FOR: Bower, Bruce Attorney (Texas Senior Advocacy Coalition), Austin, TX Murphree, Susan Policy Specialist (Advocacy Inc. for expanding community care), Austin, TX SB 1 - Article II - Human and Health Services Commission FOR: Bowers, Chris CEO Superior Health Plan (Medicaid Managed Care), Austin, TX Everitt, Patti Executive Director (Children's Defense Fund for CHIP restoration), Austin, TX O'Conner, Caroline Political Director (Texas State Employees Union), Austin, TX SB 1 - Article II - HHSC/DADS FOR: Cranston, Ron Disability Services Volunteer Advocate (HHSC/DADS), Austin, TX Kidd, Carl Vice President (Evercare of Texas. LLC for medicaid managed care), Stafford, TX SB 1 - Article II ON: Boston, Natasha LBB Staff (LBB), Austin, TX Dube, Gerald LBB Analyst (LBB), Austin, TX Furgeson Linder, Kelly LBB Staff (LBB), Austin, TX Jarrell, Jermiah LBB Staff (LBB), Austin, TX Leo, Mike LBB Staff (LBB), Austin, TX Morstad, Donna LBB Staff (LBB), Austin, TX SB 1 - Article II - Department of Aging and Disability Services ON: Horton, Colleen Public Policy Director (Texas Center for Disability Studies), Austin, TX Murphree, Susan (Advocacy Inc. for Star Plus), Austin, TX SB 1 - Article II - Department on Aging and Disablity Services ON: Hine, Jim (Department on Aging and Disablity Services) Luke, Elyse Parent (Department on Aging and Disablity Services), Round Rock, TX Metz, Albert "Sparky" (Department on Aging and Disablity Services), Austin, TX Taylor, Gordon CFO (Department on Aging and Disablity Services), Austin, TX SB 1 - Article II - Health and Human Services Commission ON: Allgeyer, Rick Center for Strategic Decision Support (Health and Human Services Commission), Austin, TX Bustamante, Melitta LBB Staff (LBB), Austin, TX Camacho, Jose Executive Director (Texas Association of Community Health Center), Austin, TX Carruth, Lisa Director, Systems Forecasting (Health and Human Services Commission), Austin, TX Dunkelberg, Anna Assistant Director (Center for Public Policy Priorities), Austin, TX Hagert, Celia Senior Policy Analyst (Center for Public Policy Priorities), Austin, TX Hawkins, Albert Commissioner (Health and Human Services Commission), Austin, TX Leftwich, Theresa Chief Executive Officer (Williamson County Crisis Center, family violence), Georgetown, TX Pressley. P.h.D., Laura Senior Member Technical Staff at Spansion/AMD (Self), Austin, TX Priest, Paul Manager Health and Human (LBB), Austin, TX Rachofsky, Marcia Policy Analyst (Families for Children's Mental Health), Austin, TX Reasonoyer, Scott Manager Acure Care Rates (Health and Human Services Commission), Austin, TX Rodell, Leora LBB Staff (LBB), Austin, TX Rodriguez, Jose El Paso Attorney (El Paso Hospital District and Texas Border Infrastructure Coalition), El Paso, TX Snyder, Ruth (Parent Association for the Retarded of Texas), Austin, TX Stephens, Stepahanie LBB Staff (LBB), Austin, TX Young, Kelly Vice President (Houston Area Women's Center, family violence), Houston, TX Zamrazil, Kristie Director of Public Affairs (Texas Pharmacists - Texas Pharmacy Association), Austin, TX SB 1 - Article II - HHSC/DADS ON: Greebon, Karen (ADAPT), Austin, TX Kafka, Bob Organizer (ADAPT of Texas), Austin, TX Lello, Angela Policy Advocate (ARCIL, Inc.), Austin, TX McPhail, Jennifer (ADAPT of Texas), Austin, TX Robles Cranstone, Cathy Personal Care Attendant (HHSC/DADS), Austin, TX Templeton, James (ADAPT), Austin, TX Thomas, Stephanie Organizer (ADAPT of Texas), Austin, TX Vasek, Heather Director of Public Policy (Texas Association of Home Care), Austin, TX SB 1 - Article II - Health and Human Services Commission Registering, but not testifying: for: Sonleitner, Denise Paralegal/Parent (Self), Austin, TX SB 1 - Article II on: Newton, John LBB Staff (LBB), Austin, TX SB 1 - Article II - Health and Human Services Commission on: Henderson, Tracy Chief Financial Officer (Health and Human Services Commission), Austin, TX Suehs, Thomas Deputy Executive Commissioner for Financial Services (Health and Human Services Commission), Austin, TX Thompson, Wanda Deputy Commissioner for Support Services (Health and Human Services Commission), Austin, TX SB 1 - Article II - Health and Human Services Commsision on: Millwee, Billy State Employee (Health and Human Services Commission), Austin, TX SB 1 - Article II - Health and Human Services Commission Providing written testimony: on: Sprinkle, David Lobby Assistant (Health and Human Services Commission), Austin, TX


--- layout: post status: publish published: true title: Show Some Love author: display_name: Andy login: Andy email<EMAIL_ADDRESS>url: '' author_login: Andy author_email<EMAIL_ADDRESS>wordpress_id: 3131 wordpress_url: http://ivyenvy.com/?p=3131 date: '2010-08-07 12:25:30 +0000' date_gmt: '2010-08-07 17:25:30 +0000' categories: - Relief Pitching tags: - Todd Coffey comments: - id: 1679 author: Ryan author_email<EMAIL_ADDRESS>author_url: '' date: '2010-08-16 00:34:21 +0000' date_gmt: '2010-08-16 05:34:21 +0000' content: "I think that if he made it more intense each time it would be cooler. \ For his first entry he could run out like he has been doing, then maybe the second time ride dirtbike to the mound, then the third time he could be in a tank.\r\n\r\nBear in mind of course that these are all horrible ideas. \r\n\r\nMeehan" ---
Welcome to "Show Some Love," where periodically we will be balancing out our "Asshat of the Week" by drawing attention to the hardworking players in the game (Cubs or not) who turn in performances any baseball fan could respect and appreciate. This week we show some love to Todd Coffey of the Milwaukee Brewers--
What the heck am I looking at at :08 seconds??
It's definitely no secret that Coffey sprints in from the bullpen when called upon. It is this type of energy that has endeared him to Brewers fans, and as Cubs fans, we can appreciate the spirited effort he brings every appearance. Though Coffey isn't exactly one of the elite relievers in the game, he gives it his all to keep the Brewers in the game. His best season was probably 2009, where he appeared in 78 games and maintained a sub-3.00 ERA. Coffey also had to put in his time in the minors--it took about seven years for him to finally make it to a big-league roster. So, though you play for the enemy, you are appreciated, Todd Coffey.


Ruby on Rails
29 Mar 2015
As phase 0 draws to a close an important question comes to mind. "I signed up for this class to learn how to do web programming in Ruby on Rails. Where is the Rails part?" We have seen quite a bit of Ruby but no Rails thus far. That begs the question, What is Rails?
JavaScript Objects and Constructors
21 Mar 2015
For the last couple of weeks we looked extensively at Classes in Ruby. This week we changed things up and started looking into JavaScript syntax. It turns out there are constructs in JS that are closely analogous to Hashes and Classes in Ruby. JS calls these Objects
and Object Constructors...
Classes and Modules
11 Mar 2015
Module
s are much like Class
es in that they have instance methods. This is where the similarities end. Class
es can be used to store data while Module
s can only store methods or constants. Module
s must be include
d before they can be used. Below is some basic syntax to set up a Module
...
Classes in Ruby
7 Mar 2015
One powerful aspect of the Ruby language is the ability to create your own classes. Classes are objects (like everything else in Ruby) that contain methods. String
, Integer
and even Object
are all different classes in Ruby...
Enumerable#cycle
1 Mar 2015
This week at DBC we continued to dive deeper into Ruby and specifically the special methods that allow rubists to write elegant and readable code. Some of these methods come from the Enumerable module. Enumerable includes some cool methods like...
Arrays and Hashes in Ruby
18 Feb 2015
During week 3 at DBC we went back and looked at basic Ruby syntax. A part of that was looking at hashes and arrays. Well arrays more than hashes. These two parts of Ruby syntax are commonly used in many different applications. We will take these two methods of storing data and look at them one by one...
Classes and IDs in CSS and HTML
14 Feb 2015
CSS is a great way to add some flair to your basic HTML. There are a number of different ways apply CSS to your site. The most basic is to add your CSS styles 'inline' in your HTML document. Inline syntax...
Git Version Control
3 Feb 2015
Making mistakes and pushing to a better solution are one in the same. The problem with these competing imperatives is easily solved by version control. The engineer can easily have multiple versions to play with, test, improve while leaving the original intact. It also allows her to easily merge her final changes into the production environment...


The Entitlements and Deductions section of the CWA Pay Stub details your gross pay. In this section, you will find things such as your:
In addition, this section will confirm the dates for which the amounts are paid or recovered.
| Type | No. | Rate | Amount |
|---|---|---|---|
| From 15/11/18 To 28/11/18 *Basic Pay |
75.00 H | - | $2,675.41+ |
| From 15/11/18 To 28/11/18 Bilingual Bonus Allowance |
- | - | $30.67+ |
| Taxable Benefits | - | - | - |
| QUE TAX BEN-CUR | - | - | $101.71 |
Continue below to find a detailed breakdown of the main sections of the pay stub.
Note that, if your start day is Monday and the Pay Period ends on the Wednesday 2 days later, your first pay would only be for 3 days.
This pay would be issued on December 12.
Taxable benefits are benefits paid by the employer which are considered as part of your income for income tax purposes.
If you work and/or live in the province of Quebec, the employer paid portion of the Dental and Medical Insurance plans are taxable allowances.
Although this amount appears in your “Entitlements and Deductions” Section, this amount is not paid to you, but is still considered part of your income for income tax purposes.


NIESV, three members clash over expulsion from institution
by Maureen Ihua-MaduenyiMaureen Ihua-Maduenyi
The Nigerian Institution of Estate Surveyors and Valuers is currently embroiled in a battle following the expulsion of three of its members.
The NIESV last week, in a notice published in one of the national dailies, announced the expulsion of Mr Olusola Enitan, a fellow of the institution and two associates, Isaac Fabiyi and Bello Faisal, over what it described in the publication as “misconduct and activities inimical to the general interest of the institution.”
Enitan, however, told journalists that the notice was meant to destroy the personal and professional reputation of the affected persons.
He explained that the problem started when he and other estate surveyors set up a new body known as the Society for Professional Valuation.
According to him, the members of the SPV and NIESV were still in talks when the notice was published.
The notice of expulsion had nothing to do with misconduct, he said, adding that it had brought disrepute to those involved.
“I am a fellow of NIESV, which is the highest level of the institution. I would not have reached there if I wasn’t upright. There was no misconduct; we only requested for NIESV to do the right thing before the attempt to damage our reputations,” he said.
Enitan, who is the Chairman, Board of Trustees of the SPV, said, “I want NIESV to retract the notice or tender an apology, especially with the use of the word misconduct, which is damaging and injurious.
“Our trustees are of good professional character, personally, academically and occupationally, putting professional ethics and high integrity above all else, which has brought a variance of ideology with NIESV council membership.”
He stated that rather than use the word “misconduct”, NIESV should have stated that an alternative body was set up by the affected persons for the benefit of the general public.
The National Publicity Secretary of NIESV, Mr Monday Ahiwe, told The PUNCH that the institution’s council put out the notice as it considered the setting up of the SPV as a form of misconduct under the code of ethics.
He said NIESV was waiting for the affected persons to officially react to the publication of the notice.
CopyrightPUNCH.
All rights reserved. This material, and other digital content on this website, may not be reproduced, published, broadcast, rewritten or redistributed in whole or in part without prior express written permission from PUNCH.
Contact: editor@punchng.com


Section one
Section two
Section three
Section one heading
Section two heading
Section three heading
Span 1
Span 2
Span 3


Brazilian UFC Fighter Knocks Twitter Out Wearing Only Champ's Belt for Photoshoot
Amanda Nunes has posed almost naked for her official photo, covering herself just enough to avoid a ban for nudity on social media. To preserve her modesty, the Brazilian MMA star made use of her massive trophies.
Amanda Nunes, who became the first woman to hold two Ultimate Fighting Championship titles simultaneously, has stunned netizens with her new official photo featuring her champion belts. She caused a rage by ditching all clothing, yet avoiding social media nudity bans with the help of just two of her bigger trophies.
"This is the official photo. Half nakey [sic], I'm over it now," the champion posted along with LOL and lion-head emojis.
Her take on traditional MMA fighter photos left none indifferent. Some appeared disconcerted by the idea of displaying UFC trophies in this manner.
Others, however, seemed more impressed with her top-notch physical shape.
Wonder Woman references could not be avoided.
Others, however, seemed less impressed and opted for a more sarcastic stance on her daring photoshoot.
Nunes, who is the current champion of the UFC Bantamweight and Featherweight divisions, became the first woman to hold the two UFC titles at once. On her way to this accomplishment, Nunes beat Brazilian MMA fighting legend Cris Cyborg. She has had 18 victories and 4 losses over her MMA career, so far.


|
matlib
A helper library for 3D operations.
|
#include <matlib.h>
Public Member Functions | |
| Vec4 (float x=0, float y=0, float z=0, float w=0) | |
| Vec4 (const Vec4 &other) | |
| float & | operator[] (int index) |
| Vec4 & | operator+ (const Vec4 &other) |
| Vec4 & | operator- (const Vec4 &other) |
| Vec4 & | operator* (const float &other) |
| float | Length () |
| Vec4 & | Normalize () |
Static Public Member Functions | |
| static float | DotProduct (Vec4 &x, Vec4 &y) |
| static Vec4 | CrossProduct (Vec4 &x, Vec4 &y) |
A four dimensional vector.
|
inline |
Create a new homogenous 4D vector.
Multiplication, addition, subtraction, multiplication, normalize, dot product and cross product all only act on the x/y/z axes. The w axis is reserved for matrix operations.
| x | is the x value. |
| y | is the y value. |
| z | is the z value. |
| w | is the w value. |
|
inline |
Copy constructor.
Returns the cross product of two vectors.
Returns the dot product of two vectors.
| x | is the first vector. |
| y | is the second vector. |
|
inline |
Calculates the length of the xyz vector.
|
inline |
Normalizes this vector.
|
inline |
Multiplication overload.
|
inline |
Index overload with security bounds.


Survey!
We would like to hear your thoughts.
Your feedback will be a great help to improve our services.
First Name
Last Name
Email Address
Gender
Select your Gender
Female
Male
Other
Not Declare
Age
Are you satisfied with our services?
Excellent
Very Good
Good
Fair
Poor
Very Poor
What are the things you like on our place?
Service
Rooms
Over all view of the place
Food
Personel
All of the above
Do you have any suggestion?
Submit


One aspect of Silverlight application deployment recently caused me a significant amount of pain – the security rules governing where the Silverlight browser plug-in will and will not load code from and under what circumstances.
There is a lot of talk about making cross-domain service calls from Silverlight, but not a lot of coverage given to hosting the application packages (.xap files) themselves. In my case, I was loading the .xap file in a SharePoint Web Part. The .xap file was hosted on a separate IIS web site on the same server but running on a different port. This had always worked for me in the past so I thought nothing of hosting the code on a separate site.
However, later on after adding some new features to the Silverlight application I was no longer able to deploy my code to SharePoint successfully. I tried a small “hello world” Silverlight application and everything worked fine. I also tried moving my application under the SharePoint site and got it to work.
So the question I had was, what was different about my application that was preventing it from working in a cross-domain situation? Fortunately I found out about EnableHtmlAccess.aspx) via this blog post by Tim Heuer.
It turns out that the Silverlight browser plug-in will happily load code from any domain as long as it doesn’t try to access the host page in any way, including reading any Javascript variables on the page. The change that I made to my application was a call to read some configuration value from the Web Part that hosted the Silverlight application, thus triggering the security restriction. Here is what the code looked like:
1 2 3 |
|
To solve this problem, we can either just host the code on the same domain, or we can make a small change to the way that the Silverlight plugin is embedded in the page. I don’t want to have to maintain a static source file in the SharePoint hive, so I added the following code to my Web Part:
1 2 3 4 5 6 7 8 9 10 11 |
|
Note the addition of
1
|
|
Once I had this parameter set everything started working again. One thing that I’d like to be able to do is to display an error message instead of just displaying an empty Silverlight plugin. The SharePoint Silverlight content control that ships with SharePoint 2010 does this, but I’m not sure what how it does it. I’ll look into it at some point when I get time, but in the meantime if anyone knows I’d love to hear from you.


5 references to JobUnblocked
System.Management.Automation (5)
engine\remoting\client\Job.cs (5)
1793
childJob.
JobUnblocked
+= HandleJobUnblocked;
1828
job.
JobUnblocked
+= HandleJobUnblocked;
1858
job.
JobUnblocked
+= HandleJobUnblocked;
3765
Dbg.Assert(
JobUnblocked
!= null, "Parent job must register for JobUnblocked event from all child jobs");
3766
JobUnblocked
.SafeInvoke(this, EventArgs.Empty);


{% extends "ox_layout.html" %} {% block body %} {% set title = 'Ox Herd' %}
Welcome to Ox Herd the user interface and administration page.


When tests are completed, hover over them for more information.Red = fail, Green = pass, Yellow with "warn" = warning, Yellow with "fail" = timed out. Yellow with "pass" = passed, but check info.


blackandwhitesquares Print Theme Nintendo Hub My Work Web, UI, Graphics, Print. All Work {{ content }} My Posts My thoughts on web design and more… All Posts


vignettes/kwbwtaq_Tutorial.Rmd
kwbwtaq_Tutorial.Rmd
Background
Within the OPTIWELLS-2 project, sponsored by Veolia Water, a detailed study was performed for screening available models that:
are able to simulate time-dependent well drawdown
also include the additional drawdown in case of well interference and
are quite easy to parameterise
The semi-analytical groundwater model WTAQ-2 was chosen, because it fitted best with the above defined requirements. However, as the model is programmed in FORTRAN it requires that the user follows the steps that are listed below:
For simplifying this process it was decided to build an R package that enables to perform all these steps and also includes the WTAQ-2 model engine (for more details see: Sonnenberg et al., 2014). This R package kwb.wtaq was developed by Hauke Sonnenberg at Kompetenzzentrum Wasser Berlin (KWB). It provides an Application Programming Interface (API) to the analytical groundwater drawdown model WTAQ-2, developed by the United States Geological Survey (USGS) and provided for free (for further information on WTAQ-2 see: http://water.usgs.gov/ogw/wtaq/). In the following we will simply use “WTAQ” when referring to the software WTAQ-2.
Objective
The objective of this tutorial is to demonstrate how the functions from the R-package kwb.wtaq can be used to configure and run a WTAQ model setup and to read the resulting groundwater drawdowns from the output files that are generated by the WTAQ model software.
In order to use the R package you need to have the R programming environment (in version 3.0 or higher) installed on your computer. You can download it for free from http://cran.rstudio.com/.
As Integrated Programming Interface (IDE) for the R environment we recommend — and for the purpose of this tutorial require — to use the free software RStudio. You can download RStudio from: http://www.rstudio.com/products/rstudio/download/.
The programming environment R is shipped with a basic set of functions. It can be extended by so-called packages that contain user-defined functions. We used this packaging mechanism and provide the access functions to WTAQ in the form of an R package that we named kwb.wtaq.
Before you can start using the functions provided in the package you need to
Install the package into your R programming environment and
Load the package into your current R session.
Since the package kwb.wtaq depends on a number of other packages, not only kwb.wtaq but also all the packages that it depends on need to be installed.
In order to simplify the package installation run the following code:
if(!require("devtools")) { install.packages("devtools") }
devtools::install_github(repo = "KWB-R/kwb.wtaq", dependencies = TRUE)
This will download and install the package kwb.wtaq with all required dependencies, i.e.:
publicly available packages from the Comprehensive R Archive Network (CRAN) and
the KWB Github package kwb.utils
If the installation succeeds the messages generated should read like these:
## package 'zoo' successfully unpacked and MD5 sums checked
## package 'hydroGOF' successfully unpacked and MD5 sums checked
## package 'lattice' successfully unpacked and MD5 sums checked
## package 'plotrix' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Dokumente und Einstellungen\Key Hauke\Lokale Einstellungen\Temp\RtmpctBYMz\downloaded_packages
## package 'kwb.utils' successfully unpacked and MD5 sums checked
The installation needs to be done only once. The packages keep installed until you decide to uninstall them. Uninstalling a package in RStudio can be done by clicking on the Remove package
button right to the package name on the “Packages” tab.
Once you have installed all the requied packages you are almost ready to use the functions contained in the package kwb.wtaq.
As a last step you need to explicitly load the package into your current R session by running the following R command:
You will see messages stating the progress of loading not only the package kwb.wtaq but also of all the packages that it depends on.
You may see warnings that the packages have been built under R in a higher version compared to the version that you are using:
Unless you are using R in a version prior to 3.0 these messages do not indicate a problem and can be ignored.
Please note that the functions provided in the kwb.wtaq package can only be used when the package is loaded with library(kwb.wtaq)
as shown here. This needs to be done each time you start a new R session or each time you open RStudio. If you write an R script that uses the functions from kwb.wtaq then it would be a good practice to put library(kwb.wtaq)
as one of the first lines of your script.
A detailed description of the WTAQ model parameters is available in the WTAQ documentation. However, within ‘RStudio’ is not always necessary to consult this manual, because the parameter description is integrated in the kwb.wtaq package help. These information can be accessed by pressing Ctrl
and Space
simultaneously, if the cursor is located within a function, e.g. wtConfGeneral()
:
The help file for each R function in RStudio
can be accessed by using the R command help(functionname)
or using ?
before the functionname, e.g.:
Note: Typing kwb.wtaq::
before the function name is only needed if you haven’t loaded the package into your R session with library(kwb.wtaq)
(see Loading the package)
In addition, we also provide a full description of all the parameters that are accepted by the configuration functions, which are descriped later in this tutorial.
We have provided an example dataset “drawdowns” containing four different pumping tests with measured drawdown time-series in five different wells (production well and four observation wells). You can load the dataset by running:
Let’s have a short look to the dataset.
The four list elements represent four different pumping tests (in “W1”, “W2”, “W4” and “W5”. The resulting drawdowns of each pumping test are stored in a data frame of six columns. Column “time.in.seconds” contains the time in seconds since the start of a pumping test. The columns “W1” through “W5” contain the water table drawdowns measured in the corresponding wells “W1” to “W5”,in meters below the initial water table.
For example, the fourth pumping test, during which a discharge of Q = 313 m3/h was measured in Well W5, resulted in the following drawdowns:
## time.in.seconds W5 W1 W2 W3 W4
## 1 600 0.73 0.00 0.00 0.01 0.04
## 2 1200 0.74 0.00 0.00 0.01 0.04
## 3 1800 0.75 0.00 0.00 0.01 0.06
## 4 2400 0.77 0.01 0.00 0.01 0.06
## 5 3600 0.78 0.01 0.00 0.02 0.07
## 6 5400 0.80 0.01 0.01 0.03 0.09
## 7 7200 0.82 0.02 0.01 0.04 0.10
## 8 10800 0.83 0.03 0.02 0.05 0.11
## 9 15000 0.85 0.03 0.03 0.06 0.13
## 10 21600 0.87 0.04 0.04 0.08 0.15
## 11 31200 0.89 0.05 0.05 0.09 0.16
## 12 44400 0.92 0.06 0.06 0.11 0.18
## 13 63600 0.93 0.07 0.07 0.12 0.20
## 14 90600 0.95 0.08 0.08 0.14 0.21
## 15 129600 0.96 0.09 0.09 0.15 0.23
It seems as if the drawdowns reach a steady-state after a certain time. This can be judged better by a diagram that can be produced in R by using the xyplot function from the R-package “lattice”:
lattice::xyplot(W1 + W2 + W3 + W4 + W5 ~ time.in.seconds,
data = drawdowns[["W5"]],
type = c("b", "g"), # (b)oth, dots and lines, and a (g)rid
auto.key = list(columns = 5), # legend arranged in five columns
ylim=c(1,-0.1),
ylab= "Drawdown (m)", # label of y-Axis
xlab= "Time in seconds since start of pumping in W5 (s)") # label of y-Axis
In a first step a WTAQ input file needs to be defined. This can be realised with two different functions:
wtConfigure()
: definition of WTAQ configuration within R
wtReadInputFile()
: importing of WTAQ configuration from existing WTAQ input text file into R
The WTAQ input file can be directly defined in R using the function wtConfigure()
and saved in the R object wtaqConfiguration
(for a full description of all the parameters that are accepted by the configuration functions, see: Parameter tables).
generalConfiguration <- wtConfigureGeneral(
### title of the project (max. length 70 characters)
title="Example well field, long-term pumping test of well 5"
)
aquiferConfiguration <- wtConfigureAquifer(
aqtype = "WATER TABLE", # aquifer type
bb = 10, # saturated aquifer thickness
hkr = 1E-03, # horizontal hydraulic conductivity
hkz = 3.5E-05, # vertical hydraulic conductivity
ss = 1E-05, # specific storage
sy = 0.05 # specific yield
)
drainageConfiguration <- wtConfigureDrainage(
idra = 0 # = instantaneous drainage in unsaturated zone
)
timesConfiguration <- wtConfigureTimes(
its = 1 # = user-specified time-steps
)
In the following we will configure one pumping well and two observation wells (for simplifying the tutorial we restrict ourselves to two instead of four observation wells four which drawdown time series are available).
Since WTAQ allows to define time-series of measured drawdowns for each well, the corresponding functions wtConfigurePumpwell()
and wtConfigureObservationWell()
, that are described in the following, also allow to specify these measured drawdown values. For this example, we want to use the drawdowns of the fourth pumping test, provided in the example dataset drawdowns
. We store it in a separate variable drawdowns5
:
Now we prepare some data frames (a table-like structure in R, defined by rows and columns, see ?data.frame
) representing three drawdown time series, which are measured at :
the pumping well “PW” and
two different observation wells “OW1” and “OW4”.
By doing this we simplify the programmig code that is used later on:
# the times of observations are the same for all wells:
times <- drawdowns5$time.in.seconds
# observed drawdowns at the pumping well
observed.PW <- data.frame(t = times, dd = drawdowns5$W5)
# observed drawdowns at the observation wells
observed.OW1 <- data.frame(t = times, dd = drawdowns5$W1)
observed.OW4 <- data.frame(t = times, dd = drawdowns5$W4)
Let’s start with the configuration of the pumping well:
pumpwellConfiguration <- wtConfigurePumpwell(
### partially penetrating pumped well
ipws = 0,
### finite diameter well
ipwd = 1,
### pumping rate of production well in (here: m3/s)
qq = 0.0869,
### radius of pumped well-screen (here: meter)
rw = 1.5,
### top of filter screen below initial water table (here: meter)
zpd = 0.4,
### bottom of filter screen below initial water table (here: meter)
zpl = 7.8,
### well-bore skin parameter (dimensionless)
sw = 0,
### data.frame with times and measured drawdown data in pumping well
tspw = observed.PW
)
Now, let’s define our first observation well:
observationWell1 <- wtConfigureObservationWell(
### name of observation well
obname = "OW1",
### distance from pumping well (here: meters)
r = 309.5,
### partially penetrating observation well
iows = 0,
### delayed response
idpr = 1,
### top of filter screen below initial water table (here: meters)
z1 = 1.8,
### bottom of filter screen below initial water table (here: meters)
z2 = 7.5,
### inside radius of the observation well (here: meters)
rp = 1.5,
### data.frame with times and measured drawdown data in OW1
tsobs= observed.OW1
)
In the same way, we define a second observation well “OW4” (in a formally more compact way to save some space here):
observationWell4 <- wtConfigureObservationWell(obname = "OW4", r = 86.6,
iows = 0, idpr = 1, z1 = 1.8, z2 = 7.5, rp = 1.5, tsobs = observed.OW4)
Out of these parts of configuration we can build one complete configuration by using the function wtConfigure()
. It returns a R list structure that represents a model configuration containing all the necessary information that WTAQ requires to perform a model run. This information is saved in the R object wtaqConfiguration
and will be used for the following chapters of this tutorial.
wtaqConfiguration <- wtConfigure(
general = generalConfiguration,
aquifer = aquiferConfiguration,
drainage = drainageConfiguration,
times = timesConfiguration,
solution = wtConfigureSolution(),
pumpwell = pumpwellConfiguration,
obswells = list(observationWell4,
observationWell1)
)
Note: Alternatively it is possible to load WTAQ input text files diretly into R with the function wtReadInputFile()
from an already existing WTAQ input text file, e.g.:
inputFile <- system.file("extdata", "example1.inp", package = "kwb.wtaq")
wtaqConfiguration2 <- wtReadInputFile(inputFile)
However, in this tutorial we just focus on the example that is stored in the R object wtaqConfiguration
.
For checking this model parameterisation it can be printed:
## General
## - Title: Example well field, long-term pumping test of well 5
## - Format: DIMENSIONAL
##
## Aquifer
## - Type: WATER TABLE
## - Thickness (bb) ............: 10.000000 (length)
## - Horiz. hydr. conduct. (hkr): 0.001000 (length/time)
## - Vert. hydr. conduct. (hkz): 0.000035 (length/time)
## - Specific storage (ss) .....: 0.000010 (1/length)
## - Specific yield (sy) .......: 0.050000
##
## Drainage
## - Type: Instantaneous drainage (idra = 0)
##
## Times
## - Type: User-specified times (its = 1)
##
## Solution
## - Type: de Hoog algorithm (isoln = 2)
## - Rel. err. for Newton-Raphson iter. (rerrnr) ...................: 0.000000
## - Rel. err. sought for accur. of the num. invers. (error) .......: 0.000100
## - Factor to determ. # terms in finite summations (ntms) .........: 30
## - # terms in summ. of Fourier series for inv. Lapl. transf. (nnn): 6
## - Method used to accelerate convergence of Fourier series .......: 3
##
## Pumped Well ("PW")
## - Type: Partially penetrating pumped well (ipws = 0)
## - Type of diameter: Finite diameter (ipwd = 1)
## - Pumping rate (qq) .......................................: 0.086900 (length^3/time)
## - Radius of screen (rw) ...................................: 1.500000 (length)
## - Inside radius where levels change during pumping (rc) ...: 1.500000 (length)
## - Top of aquifer/initial water table to screen top (zpd) ..: 0.400000 (length)
## - Top of aquifer/initial water table to screen bottom (zpl): 7.800000 (length)
## - Well-bore skin parameter (sw) ...........................: 0.000000
## - Predefined Times (t)/drawdown measurements (dd):
## t dd
## 1 600 0.73
## 2 1200 0.74
## 3 1800 0.75
## 4 2400 0.77
## 5 3600 0.78
## 6 5400 0.80
## 7 7200 0.82
## 8 10800 0.83
## 9 15000 0.85
## 10 21600 0.87
## 11 31200 0.89
## 12 44400 0.92
## 13 63600 0.93
## 14 90600 0.95
## 15 129600 0.96
##
## Observation Well "OW4"
## - Type: Partially penetrating observation well (iows = 0)
## - Delayed response: yes (idpr = 1)
## - Radial dist. from axis of pumped well to obs. well (r) .....: 86.600000 (length)
## - Top of aquifer/initial water table to screen top (z1) ......: 1.800000 (length)
## - Top of aquifer/initial water table to screen bottom (z2) ...: 7.500000 (length)
## - Inside radius of standpipe where levels change (rp) ........: 1.500000 (length)
## - Length of screened interval (xll) ..........................: 5.700000 (length)
## - Predefined Times (t)/drawdown measurements (dd):
## t dd
## 1 600 0.04
## 2 1200 0.04
## 3 1800 0.06
## 4 2400 0.06
## 5 3600 0.07
## 6 5400 0.09
## 7 7200 0.10
## 8 10800 0.11
## 9 15000 0.13
## 10 21600 0.15
## 11 31200 0.16
## 12 44400 0.18
## 13 63600 0.20
## 14 90600 0.21
## 15 129600 0.23
##
## Observation Well "OW1"
## - Type: Partially penetrating observation well (iows = 0)
## - Delayed response: yes (idpr = 1)
## - Radial dist. from axis of pumped well to obs. well (r) .....: 309.500000 (length)
## - Top of aquifer/initial water table to screen top (z1) ......: 1.800000 (length)
## - Top of aquifer/initial water table to screen bottom (z2) ...: 7.500000 (length)
## - Inside radius of standpipe where levels change (rp) ........: 1.500000 (length)
## - Length of screened interval (xll) ..........................: 5.700000 (length)
## - Predefined Times (t)/drawdown measurements (dd):
## t dd
## 1 600 0.00
## 2 1200 0.00
## 3 1800 0.00
## 4 2400 0.01
## 5 3600 0.01
## 6 5400 0.01
## 7 7200 0.02
## 8 10800 0.03
## 9 15000 0.03
## 10 21600 0.04
## 11 31200 0.05
## 12 44400 0.06
## 13 63600 0.07
## 14 90600 0.08
## 15 129600 0.09
and also graphically visualised with the function wtPlotConfiguration()
, e.g.:
For running WTAQ and saving the results in the R object result
we just have do use the function wtRunConfiguration()
with our above defined model parameterisation wtaqConfiguration
:
To print the results of the model run, that are stored in the object result
in the RStudio console we simply need to enter:
## WELL TIME MEASDD CALCDD RELERR
## 3 PW 600 0.73 3.808e+00 -421.60
## 4 PW 1200 0.74 4.731e+00 -539.40
## 5 PW 1800 0.75 5.033e+00 -571.00
## 6 PW 2400 0.77 5.189e+00 -573.90
## 7 PW 3600 0.78 5.402e+00 -592.50
## 8 PW 5400 0.80 5.640e+00 -604.90
## 9 PW 7200 0.82 5.825e+00 -610.30
## 10 PW 10800 0.83 6.103e+00 -635.30
## 11 PW 15000 0.85 6.338e+00 -645.60
## 12 PW 21600 0.87 6.602e+00 -658.90
## 13 PW 31200 0.89 6.869e+00 -671.80
## 14 PW 44400 0.92 7.123e+00 -674.30
## 15 PW 63600 0.93 7.380e+00 -693.60
## 16 PW 90600 0.95 7.631e+00 -703.20
## 17 PW 129600 0.96 7.883e+00 -721.10
## 20 OW4 600 0.04 2.162e-02 45.94
## 21 OW4 1200 0.04 4.856e-02 -21.41
## 22 OW4 1800 0.06 6.812e-02 -13.53
## 23 OW4 2400 0.06 8.315e-02 -38.59
## 24 OW4 3600 0.07 1.086e-01 -55.15
## 25 OW4 5400 0.09 1.453e-01 -61.41
## 26 OW4 7200 0.10 1.826e-01 -82.61
## 27 OW4 10800 0.11 2.579e-01 -134.50
## 28 OW4 15000 0.13 3.440e-01 -164.60
## 29 OW4 21600 0.15 4.703e-01 -213.50
## 30 OW4 31200 0.16 6.307e-01 -294.20
## 31 OW4 44400 0.18 8.115e-01 -350.90
## 32 OW4 63600 0.20 1.016e+00 -408.10
## 33 OW4 90600 0.21 1.232e+00 -486.60
## 34 OW4 129600 0.23 1.460e+00 -534.60
## 37 OW1 600 0.00 1.659e-05 NA
## 38 OW1 1200 0.00 4.502e-05 NA
## 39 OW1 1800 0.00 7.374e-05 NA
## 40 OW1 2400 0.01 1.039e-04 98.96
## 41 OW1 3600 0.01 1.747e-04 98.25
## 42 OW1 5400 0.01 3.169e-04 96.83
## 43 OW1 7200 0.02 5.106e-04 97.45
## 44 OW1 10800 0.03 1.081e-03 96.40
## 45 OW1 15000 0.03 2.114e-03 92.95
## 46 OW1 21600 0.04 4.682e-03 88.30
## 47 OW1 31200 0.05 1.075e-02 78.49
## 48 OW1 44400 0.06 2.373e-02 60.45
## 49 OW1 63600 0.07 5.076e-02 27.49
## 50 OW1 90600 0.08 9.924e-02 -24.05
## 51 OW1 129600 0.09 1.775e-01 -97.28
For plotting the results we can either use the function wtPlotResult()
with the parameter plottype = "w"
to plot for each well measured (MEASDD) and calculated (CALCDD) drawdowns in one plot:
or produce a plot that contains measured and calculated drawdowns for all wells in two separate plots by setting the parameter plottype = "s"
:
For this tutorial calibration is realised by using an automatised one-dimensional optimisation approach for the following two model parameters, because these were identified to be the most sensitive ones:
The approach is valid because the calibration of the well-skin parameter (during Step 2) has no impact on the observation well drawdowns (Step 1). However, it needs to be stated that conditions could occur, where a better model fit could be possible (especially if the mid-term drawdown data are not fitting well) in case that both, vertical hkz
and horizontal hkr
hydraulic aquifer conductivity are varied in tandem.
Within this tutorial we solve this one-dimensional optimisation problem by using:
the build-in R function optimise()
and
the Root-Mean-Square-Error (RMSE) as the only performance criteria for evaluating the model fitness (i.e. comparision of calculated and measured drawdowns).
For solving this optimisation (or: calibration) problem we define the R function calibrateModel()
which requires the following four input parameters:
configuration
: a valid WTAQ input parameterisation (here: wtaqConfiguration
)
wellPattern
: a regular expression or the well(s) names to be used for the model fit evaluation (here: OW4
or PW
)
parameterName
: name of the WTAQ parameter that should be calibrated (here: hkr
or sw
)
parameterRange
: allowed value range for calibration parameter (e.g. c(0.0001, 0.1)
for parameter hkr
)
Firstly this function - and its three dependent helper functions modelFitness()
, modelFitnessAggregated
and fitnessAdaptedModelConfiguration()
- need to be loaded in R by running the following code:
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
# modelFitness(): called by function modelFitnessAggregated()
modelFitness <- function
(
wtaqResult,
wellPattern
)
{
subResult <- wtaqResult[grep(pattern = wellPattern, wtaqResult$WELL),]
fitness <- t(hydroGOF::gof(sim = subResult$MEASDD, obs = subResult$CALCDD, digits = 3))
colnames(fitness) <- sub(" %", "", colnames(fitness))
### data.frame with plenty of performance indicators: e.g. RMSE, NSE, R2
as.data.frame(fitness)
}
# modelFitnessAggregated: called by function fitnessAdaptedModelConfiguration()
modelFitnessAggregated <- function
(
wtaqResult,
wellPattern
)
{
fitness <- modelFitness(wtaqResult, wellPattern)
### Objective function for the performance criteria that is minimised, here:
fitness$RMSE
}
# fitnessAdaptedModelConfiguration: called by function calibrateModel()
fitnessAdaptedModelConfiguration <- function
(
parameterValue, parameterName, configuration, wellPattern
)
{
configuration <- wtSetParameter(configuration, parameterName, parameterValue)
wtaqResult <- wtRunConfiguration(configuration)
modelFitnessAggregated(wtaqResult, wellPattern)
}
#calibrateModel()
calibrateModel <- function (
### WTAQ parameterisation, e.g. as retrieved by wtConfigure()
configuration,
### regular expression or name of well(s) to be used for calibration: e.g. "OW4"
wellPattern,
### name of ONE WTAQ parameter to be calibrated: e.g. `hkr`, `sw`
parameterName,
### min/max range of possible calibration parameter values
parameterRange
)
{
optResults <- optimise(
f = fitnessAdaptedModelConfiguration,
interval = parameterRange,
parameterName = parameterName,
configuration = configuration,
wellPattern = wellPattern )
### Save calibrated WTAQ configuration:
wtaqConfigurationCalibrated <- wtSetParameter(
configuration = configuration,
parameterName = parameterName,
parameterValue = optResults$minimum)
### Save optimisation results in list
list(parameterName=parameterName,
wellPattern=wellPattern,
optimalParameterValue=optResults$minimum,
minimalPerformanceValue=optResults$objective,
wtaqConfig=wtaqConfigurationCalibrated
)
}
# 1.Step: Calibrate aquifer characteristics 'hkr' for OW4-------------------------------
calibratedAquifer <- calibrateModel(
### reference wtaq configuration
configuration = wtaqConfiguration,
### calibrate hydraulic aquifer conductivity
parameterName = "hkr",
### 'hkr' is within 0.0001 - 0.1 m/s
parameterRange = c(0.0001, 0.1),
### only use drawdown time-series of OW4 for calibration
wellPattern = "OW4"
)
### Plot the drawdowns with calibrated aquifer characteristics:
wtPlotResult(wtaqResult = wtRunConfiguration(
configuration = calibratedAquifer$wtaqConfig),
main = sprintf("Optimal value of parameter '%s' for %s: %0.4f m/s",
calibratedAquifer$parameterName,
calibratedAquifer$wellPattern,
calibratedAquifer$optimalParameterValue),
plottype = "w")
After this step observed and measured drawdowns fit nearly perfectly for the calibrated observation well “OW4” only by setting the hkr to 0.0148366 (m/s) , but still the drawdown in the production well “PW” is underestimated (because it is still assumed that here are no “well losses”).
Thus the production well characteristics (i.e. the well-skin parameter sw
) need to be calibrated in a next step.
#2.Step: Calibrate well-bore skin parameter 'sw' for PW-------------------------------
calibratedAquiferAndWellSkin <- calibrateModel(
#### WTAQ configuration with calibrated aquifer (Step1)
configuration = calibratedAquifer$wtaqConfig,
### calibrate well-bore skin parameter
parameterName = "sw",
### 'sw' within 0 - 100 (dimensionless)
parameterRange = c(0, 100),
### only use drawdown time-series of PW for calibration
wellPattern = "PW"
)
### Plot the drawdowns with calibrated aquifer & well-bore skin characteristics:
wtPlotResult(wtaqResult = wtRunConfiguration(
configuration = calibratedAquiferAndWellSkin$wtaqConfig,
),
main = sprintf("Optimal value of parameter '%s' for %s: %2.4f (dimensionless)",
calibratedAquiferAndWellSkin$parameterName,
calibratedAquiferAndWellSkin$wellPattern,
calibratedAquiferAndWellSkin$optimalParameterValue),
plottype = "w")
By calibrating the well-skin parameter sw to 2.0150393 the drawdown in the production well “PW” now also fits nearly perfectly the observed drawdown values, without impacting the fit for the observation wells.
Note: There might be cases where the calibration results by following the methodology defined above is not satisfying. This can be possibly solved by calibrating multiple parameters in parallel (e.g. horizontal hkr
and vertical hydraulic aquifer conductivity hkz
). For this a more complex algorithm (e.g. build-in R function optim()
), which is able to solve multi-dimenional optimisation problems, might be usefull. However, this goes beyond the scope of this tutorial.
Note: For performing this example session it is required to perform all steps of the Level 1: one pumping well example session first, because this example session requires some data of the Level 1: one pumping well example
One challenge of using WTAQ for multiple wells is that the drawdown simulation for each model run is limited to:
one active production well and
up to 25 observation wells
This means that the model parameterisation for the pumping (e.g. pumping rate) and observation wells (e.g. distance to pumping well) needs to be adapted for each model run manually by using the Level 1 function (see: Level 1: one pumping well example).
For avoiding such time consuming task additional Level 2 functions were developed and included in the kwb.wtaq package that simplify using WTAQ on the well-field scale. The usage of these functions is described in the following:
In a first step the well field is defined, by creating a R object owWellfieldConf
that contains the following properties for each well, i.e.:
Location x
, y
,
Well diameter r
,
Depth of filter screen top z1
and bottom z2
below initial groundwater level
Well-skin parameter sw
For all production wells the well-skin parameter sw
is set to wellSkin
, because this value achieved the best-model fit during calibration for W5
### Well-skin parameter from calibration of W5 for all wells of the well field
wellSkin <- calibratedAquiferAndWellSkin$optimalParameterValue
sprintf("Well-skin parameter value: %2.6f (dimensionless)", wellSkin)
## [1] "Well-skin parameter value: 2.015039 (dimensionless)"
# Example well field configuration with 5 wells
owWellfieldConf <- rbind(
owConfigureWell(
wellName = "W1", x = 807679.64, y = 2091015.29,
r = 1.5, z1 = 2, z2 = 4, sw = wellSkin),
owConfigureWell(
wellName = "W2", x = 807608.66, y = 2091018.51,
r = 1.7, z1 = 4.2, z2 = 7, sw = wellSkin),
owConfigureWell(
wellName = "W3", x = 807558.27, y = 2091090.30,
r = 1.5, z1 = 1.8, z2 = 8, sw = wellSkin),
owConfigureWell(
wellName = "W4", x = 807509.29, y = 2091161.80,
r = 1.5, z1 = 1.8, z2 = 7.5, sw = wellSkin),
owConfigureWell(
wellName = "W5", x = 807458.95, y = 2091232.26,
r = 1.5, z1 = 0.4, z2 = 7.8, sw = wellSkin))
Note:
On the Level 2 function level it is now not necessary to define well distances (this was required in the Level 1: one pumping well example. The well distances will be set later automatically for each model run based on both, the x
y
coordinates:
## Well distance matrix table:
## W1 W2 W3 W4 W5
## W1 71.1 142.7 224.7 309.5
## W2 71.1 87.7 174.4 261.0
## W3 142.7 87.7 86.7 173.3
## W4 224.7 174.4 86.7 86.6
## W5 309.5 261.0 173.3 86.6
and on the information which well is operating. For example column “W2” is used if the pumping Well is “W2”
In a next step we define we use the Level 2 function owConfigure()
to prepare the constant parts of the WTAQ configuration parameterisation (wellfield
, aquifer
and drainage
) and store them in the object owConf
:
# Create constant components of WTAQ configuration
owConf <- owConfigure(wellfield = owWellfieldConf,
aquifer = calibratedAquiferAndWellSkin$wtaqConfig$aquifer,
drainage = wtConfigureDrainage(idra = 0)
)
Note: For the parameter aquifer
we simply use the calibrated parameter setting, that we obtained after the Level 1 model calibration, which is stored in the R object:
## $aqtype
## [1] "WATER TABLE"
##
## $bb
## [1] 10
##
## $hkr
## [1] 0.01483664
##
## $hkz
## [1] 3.5e-05
##
## $ss
## [1] 1e-05
##
## $sy
## [1] 0.05
The well field configuration can be plotted with the function owPlotConfiguration()
(top view & side view). By setting the parameter referenceWell=1
the Well 1 is selected as reference well for plotting:
Now we have all parts for parameterising WTAQ and calulating the drawdowns easily on the well field scale (i.e. running WTAQ multiple times in the background).
For this we use the function owGetDrawdowns()
with the following parameters:
ddlist <- owGetDrawdowns(
owConf=owConf,
Q = pumpingRates,
times = timesForDDcalculation,
### required for using the function wtPlotResults()
to.matrix=FALSE
)
ddmatrix<- owGetDrawdowns(
owConf=owConf,
Q = pumpingRates,
times = timesForDDcalculation,
### saves results in "matrix" format: required for function owSuperposeDrawdowns()
to.matrix=TRUE
)
The switch to.matrix=TRUE
is required in case one would like to calculate the total drawdown in each well including well interference with the function owSuperposeDrawdowns()
:
Quantifying the impact of well interference
Finally the modelling results can be analysed. For example it is possible to quantify the additional drawdown due to well interference, e.g. for “W1”:
myWell <- "W1"
DD_inProductionWell_withInterference <- drawdownsWithWellInterference[,myWell]
DD_inProductionWell_withoutInterference <- ddmatrix[[myWell]][,myWell]
diffDrawdown <- DD_inProductionWell_withInterference-DD_inProductionWell_withoutInterference
data.frame(time.in.seconds=drawdownsWithWellInterference[,1],
additionalDrawdown.due.to.wellInterference.in.meter=diffDrawdown)
## time.in.seconds additionalDrawdown.due.to.wellInterference.in.meter
## 1 1 0.000000000
## 2 5 0.000016160
## 3 10 0.000116362
## 4 30 0.001717690
## 5 60 0.007218800
## 6 600 0.101305000
## 7 1200 0.119617000
## 8 2400 0.140303000
## 9 3600 0.159315000
## 10 10000 0.242770000
## 11 50000 0.483100000
## 12 100000 0.607290000
## 13 300000 0.810100000
Plotting of well drawdowns (without well interference):
for (wellName in owWellfieldConf$wellName)
{
index <- which(owWellfieldConf$wellName==wellName)
wellQ <- pumpingRates[index]
if (wellQ > 0)
{
wtPlotResult(wtaqResult = ddlist[[wellName]],
plottype = "s",
ylab = "Drawdown (m)",
xlab = "Time in seconds since start of pumping (s)",
main = sprintf("Pumping well: %s (Q: %3.1f m3/h)",
wellName,
wellQ*3600))
}
}
Plotting of well drawdowns (with well interference):
plotWellInterference <- function(wellName, Q=NULL)
{
if (is.null(Q)) {
label <- sprintf("%s ",wellName)
} else {
label <- sprintf("%s (%3.1f m3/h) ",wellName, Q*3600)
}
drawdown <- data.frame(SCENARIO="no well interference",
TIME=ddmatrix[[wellName]][,"TIME"],
CALCDD=ddmatrix[[wellName]][,wellName])
drawdownWithInterference <- data.frame("SCENARIO"="with well interference",
TIME=drawdownsWithWellInterference[,"TIME"],
CALCDD=drawdownsWithWellInterference[,wellName])
res <- rbind(drawdown, drawdownWithInterference)
print(lattice::xyplot(CALCDD ~ TIME,
groups = SCENARIO,
ylim=rev(extendrange(res$CALCDD)),
ylab = "Drawdown (m)",
xlab = "Time in seconds since start of pumping (s)",
type="b",
auto.key = list(columns=2),
data=res,
main = label))
}
for (wellName in owWellfieldConf$wellName)
{
index <- which(owWellfieldConf$wellName==wellName)
wellQ <- pumpingRates[index]
plotWellInterference(wellName = wellName, Q = wellQ)
}