This module aims to represent YANG data as dynamic, allowing the user to provide data as variable abstract names. Assignment ca...
Version: 2020-12-07
module ieee1906-dot1-math { yang-version 1.1; namespace "urn:ieee:std:1906.1:yang:ieee1906-dot1-math"; prefix ieee1906-math; import ieee1906-dot1-function { prefix function; } organization "IEEE Std 1906.1-2015 - Recommended Practice for Nanoscale and Molecular Communication Framework Working Group"; contact "Stephen F. Bush <bushsf@research.ge.com> Guillaume Mantelet <gmantelet@voltigeurnetworks.com>"; description "This module aims to represent YANG data as dynamic, allowing the user to provide data as variable abstract names. Assignment can be performed, and data representation can be made by using variable names instead of values if they are not (yet) resolved. For example, a mass flow rate can be defined either in its mdot notation when it can be resolved, or as a product between a mass density and a volume flow rate. The two attributes can be provided by their variable names if the NETCONF client does not resolve their values. The NETCONF server can return the corresponding mdot value, or if applicable, can return the two attribute values. This module defines also various mathematical concepts and objects such as vectors, tensors, equations as long as consensus exists. Modeling the equation itself is outside the scope of this YANG model. This YANG model scope is to define the inputs and outputs of these equations. The following table summarizes the mathematical concepts defined in this YANG model. +-------------+-----------+------------------------------------------------------+ | name | type | description | +-------------+-----------+------------------------------------------------------+ | equation | extension | List of expressions, optional symbol units, and name | | expression | extension | List of unknowns and variables | | name | extension | Giving a container a name | +-------------+-----------+------------------------------------------------------+ | nabla | grouping | Differential operator in cartesian units | | scalar | typedef | Unitless and dimensionless value | | surface | grouping | | | symbol | extension | A human friendly hint in equations | | value | extension | A variable giving the equation a result or a name | | vector | grouping | | | vector-area | grouping | | +-------------+-----------+------------------------------------------------------+ "; revision "2020-12-07" { description "Initial version."; reference "'IEEE Recommended Practice for Nanoscale and Molecular Communication Framework,' in IEEE Std 1906.1-2015, pp.1-64, Jan. 11 2016 doi: 10.1109/IEEESTD.2016.7378262"; } extension equation { argument "equation-name" { yin-element false; } description "An equation is a list of expressions. The equation is considered well known and easy to obtain a consensus to within the scientific community. It is outside the scope of this YANG model to describe what the equation does. Instead, this YANG model refers to well-known or consensual equations. For example, the mass flow rate equation is well known and has the following accepted expressions: mdot = rho . Vdot = rho . V . A = jm . A Note that this naming uses symbols. Symbols are also defined and are only hints for a human user. Convention should use the name attached to the symbol to get a meaningful notion of what is expressed. An equation can be named for functional programming purposes. An equation may have a value. In the example of the mass flow rate equation, mdot is the value. The value is a function:variable."; } extension expression { description "An expression is part of an equation. Two expressions in an equation are equivalent. An expression is a list of unknown or variables linked by operations. The expression is considered well known and easy to obtain a consensus to within the scientific community. It is outside of the scope of this YANG model to describe the relationship between the unknown. Instead, the expression provides a list of unknowns or variables."; } extension symbol { argument "symbol-name" { yin-element false; } description "To provide a known name that represents this type. Adds nothing to a NETCONF server."; } extension value { description "The value part of the equation which MUST be of type function:variable. The result of the equation. It can be used to directly configure the server. Or the value is returned by the server as a result of a call, a simulation, a mathematical process. This is a variable. A numerical value can be provided. Or, if it is unknown, or in case of functional programming, the target variable name can be used instead."; } extension name { argument "name" { yin-element false; } description "An optional name to use an equation as an unknown for functional programming. The name MUST be of type function:variableName."; } typedef scalar { type function:variable; description "A scalar is a dimensionless and unitless value. Please refer to the si-unit system if the scalar has a meaning. This is a variable, but by defining it as a scalar, it is explicitly not a vector coordinate."; } typedef percent { type union { type string { pattern '[+\-]?([0-9][0-9]?(\.?[0-9]+([eE][-+]?[0-9]+)?)|100)%?'; } type function:variable-name; } description "A 'classical' percentage is a number x such as 0 <= x <= 100"; } typedef proper-fraction { type union { type string { pattern '[+\-]?(0(\.?[0-9]+([eE][-+]?[0-9]+)?)|1)'; } type function:variable-name; } description "A fraction that is less than or equals 1"; } typedef probability { type union { type string { pattern '(0(\.?[0-9]+([eE][-+]?[0-9]+)?)|1)'; } type function:variable-name; } description "A 'classical' probability is a number x such as 0 <= x <= 1. Other types of probabilities (e.g. exotic and negative probabilities) are not included in this definition."; } } // module ieee1906-dot1-math
© 2023 YumaWorks, Inc. All rights reserved.