156 lines
5.9 KiB
Plaintext
Executable File
156 lines
5.9 KiB
Plaintext
Executable File
.. _math:
|
|
|
|
## MATH
|
|
|
|
> The **math** routine operates on attributes of a mesh object(s). It performs
|
|
arithmetic operations or evaluates mathematical functions on the source mesh
|
|
object or objects, and places the results in the sink mesh object. The source
|
|
and sink mesh objects can be the same, and there can be either one or two
|
|
source objects, depending on the operation selected.
|
|
|
|
>
|
|
|
|
> All attributes must have the same type, rank, and length.
|
|
|
|
The last parameter, value, may or may not be used according to the operation
|
|
details listed below.
|
|
|
|
For the standard arithmetic operations, value can be either a constant or an
|
|
attribute. These arithmetic operations work for all types of attributes.
|
|
|
|
For the mathematical functions other than **floor** and
|
|
**ceiling**, _place_holder; value is omitted, and the function is
|
|
performed on the src_attr and stored in the sink_attr. Mathematical functions
|
|
other than **floor** and **ceiling **are not implemented for attributes whose
|
|
values are integers.
|
|
|
|
FORMAT:
|
|
|
|
> **math** / operation / cmo_sink/attr_sink / range /cmo_src/attr_src / [
|
|
value ]
|
|
|
|
|
|
operation: The first parameter is one of the following keywords that indicates
|
|
the type of work to perform.
|
|
|
|
> **plus, add, minus, sub, subtract, times, _place_holder; multiply, mult,
|
|
divide, min, max, modulo ** are arithmetic operators; the result is stored in
|
|
sink_attr:
|
|
|
|
sink_attr = (src_attr) operator (value), where value can be either a numerical
|
|
constant or a second mesh object attribute.
|
|
|
|
min, max are not to be confused with the minimum or maximum value of an
|
|
attribute; rather the the result is a comparison of pairs of source values.
|
|
|
|
>
|
|
|
|
> **sin, cos, tan, ln** (natural log), and **log10** are mathematical
|
|
functions. The value parameter is omitted, and the function is performed on
|
|
the src_attr and stored in the sink_attr. These functions are not implemented
|
|
for integer attributes.
|
|
|
|
>
|
|
|
|
> **floor** and **ceiling** are mathematical functions where value is used as
|
|
the lower or upper limit, the value(s) of src_attr are checked against value,
|
|
and the results are stored in the sink_attr. These functions work for all
|
|
types of attributes.
|
|
|
|
>
|
|
|
|
> **power** function uses both value parameters. The first value or src_attr
|
|
is raised to the power of the second value or attribute. You cannot use two
|
|
constants. At least one of the sources must be an attribute. The result is
|
|
stored in the sink_attr.
|
|
|
|
>
|
|
|
|
> **exp** and **exp10** functions raise the constant e or the constant 10 to
|
|
the power specified by src_attr and stores the result in the sink_attr.
|
|
|
|
>
|
|
|
|
> <>**integrate** function computes the product of 'field_value 'times
|
|
'element volume' at each element and either saves these products or sums the
|
|
products and saves the integrated result.
|
|
|
|
The syntax is: math/integrate/cmo_sink/attr_sink/range/attr_src_field<>
|
|
|
|
<>The 'field_value' for an element is either the value of attr_src (if the
|
|
attr_src is an element attribute and has length 'nelements') or is the average
|
|
of the values at the vertices of the element (if the attr_src is a node
|
|
attribute has length 'nnodes').
|
|
|
|
If sink_attr does not exist or if it exists and has length 'nelements' and
|
|
type 'VDOUBLE' the products (<> <>'field_value' times 'element_volume') are
|
|
stored in sink_attr.
|
|
|
|
If sink_attr exists and has length 'scalar' and type 'REAL', then the products
|
|
are summed up and the resulting sum if stored in sink_attr. (If the user
|
|
requires just the integrated sum this alternative avoids having to use the
|
|
pair of commands 'integrate, sum' and also avoids creating the 'nelement' long
|
|
sink attribute)
|
|
|
|
It is assumed that the sink and source attributes are in the same mesh object
|
|
and the second cmo name is ignored.
|
|
|
|
If range is used, it must refer to a set of elements.
|
|
|
|
>
|
|
|
|
> **sum** adds all node or element values in attr_src, within the selected
|
|
range and writes the result to attr_sink. The sink attribute must be of type
|
|
'REAL' or 'INT' (length='scalar') and will be created if it does not exist.
|
|
|
|
|
|
cmo_sink, attr_sink: are the sink cmo and sink attribute for the math results
|
|
to be written to. These parameters are required for all math operations.
|
|
|
|
|
|
range: is the selection set of elements or nodes for the math operation and
|
|
may be in one of these 3 forms:
|
|
|
|
> /ifirst,ilast,istride / numbers indicating attribute set _place_holder;
|
|
(1,0,0 means all elements or nodes)
|
|
|
|
/**pset,get**, pset_name / for attributes with length =
|
|
'nnodes' _place_holder; (all nodes in the named point set)
|
|
|
|
/**eltset,get**, eltset_name / for attributes with length = 'nelements' (all
|
|
elements in the named element set)
|
|
|
|
|
|
value: is required by some math operations and can be of type constant or can
|
|
be a cmo attribute. The following are possible forms:
|
|
|
|
> /cmo_src2/attr_src2/ where cmo_src2 may be the same name as the source cmo,
|
|
or the name of a second source cmo.
|
|
|
|
/attr_src2/ assumes attribute is a part of cmo_src
|
|
|
|
/constant/ is a numerical value
|
|
|
|
|
|
EXAMPLES:
|
|
|
|
**math**/**multiply**/sink_mo/sink_attribute/50,60,3/src_mo/src_attribute/1.0
|
|
**math/add/**mo/attribute/50,60,3/mo/attribute/100.0
|
|
**math/modulo/**mo/attribute/1,0,0/mo/attribute/10
|
|
**math/sub/**sink_mo/sink_attribute/50,60,3/src_mo1/src_attribute1/src_mo2/src_attribute2/
|
|
**math/min/**sink_mo/sink_attribute/1,0,0/src_mo1/src_attribute1/src_mo2/src_attribute2/
|
|
**math**/**ln**/sink_mo/sink_attribute/1,0,0/src_mo/src_attribute/
|
|
**math/floor/**sink_mo/sink_attribute/1,0,0/src_mo/src_attribute/2.0/
|
|
**math/power**/sink_mo/sink_attribute/1,0,0/src_mo/src_attribute/2.0/
|
|
**math/power**/sink_mo/sink_attribute/1,0,0/2.0/src_mo/src_attribute/
|
|
**math/power**/sink_mo/sink_attribute/1,0,0/base_mo/base_attribute/ power_mo/power_attr
|
|
**math/exp**/sink_mo/sink_attribute/1,0,0/src_mo/src_attribute/
|
|
**math/exp10**/sink_mo/sink_attribute/1,0,0/src_mo/src_attribute/
|
|
**math/integrate/** cmotri /Vf /1,0,0/ cmotri/ Fn
|
|
**math/sum/** cmotri / Vfsum /1,0,0/ cmotri / Vf
|
|
**math/sum/** cmotri / area_sum /1,0,0/ cmotri / darea
|
|
 _place_holder;
|
|
|
|
|
|
|