ieee1906-dot1-math

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

    ieee1906-dot1-math@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.