Class DVariable

  • All Implemented Interfaces:
    java.io.Serializable
    Direct Known Subclasses:
    PartialDerivative

    public class DVariable
    extends XVariable
    Holds all info about a variable. Has a name, an equation, a dimension (or sent of dimensions if matrix or tensor) and also a set of PartialDerivative. The derivatives are stored in a hashtable index by the sorted names of derivatives. i.e. d^2f/dxdy, and d^2f/dydx will both be indexed by {"x","y"}. df/dx is indexed by {"x"}, d^2f/dx^2 is index by {"x","x"}. Partial derivatives are calculated as required by the findDerivative method.
    Author:
    Rich Morris Created on 26-Oct-2003
    See Also:
    Serialized Form
    • Field Detail

      • derivatives

        protected java.util.Map<java.lang.String,​PartialDerivative> derivatives
    • Constructor Detail

      • DVariable

        protected DVariable​(java.lang.String name)
        The constructor is package private. Variables should be created using the VariableTable.find(Sting name) method.
      • DVariable

        protected DVariable​(java.lang.String name,
                            java.lang.Object value)
    • Method Detail

      • createDerivative

        protected PartialDerivative createDerivative​(java.lang.String[] derivnames,
                                                     Node eqn)
      • invalidateAll

        public void invalidateAll()
        makes value and values of all derivatives invalid.
      • makeDerivString

        public static java.lang.String makeDerivString​(java.lang.String rootname,
                                                       java.lang.String[] dnames)
        Produces a string to represent the derivative. The string will be of the form "dx^2/dxdy". This string is used to index the derivatives of a variable.
        Parameters:
        rootname - name of the variable we are calculating the derivative of.
        dnames - An array of the names of each of the partial derivatives.
        Returns:
        the string representation
      • getDerivative

        public PartialDerivative getDerivative​(java.lang.String... names)
        Gets the partial derivatives df^k/da db dc
        Parameters:
        names - the names of the derivatives in any order
        Returns:
        the derivative
      • calculateDerivative

        protected PartialDerivative calculateDerivative​(java.lang.String[] derivnames,
                                                        DJep jep)
                                                 throws ParseException
        calculate a derivative. Either by differentiation of one of the existing derivatives, or by differentiation of the equation of this variable. The method is protected, sub classes can override the methods where some other means of calculating the derivative is needed.
        Throws:
        ParseException
      • toString

        public java.lang.String toString​(PrintVisitor bpv)
        Description copied from class: XVariable
        Returns a string rep of variable with its equation and value.
        Overrides:
        toString in class XVariable
      • allDerivatives

        public java.lang.Iterable<PartialDerivative> allDerivatives()
        Enumerate all the derivatives of this variable.
        Returns:
        an Enumeration running through all the derivatives.
      • derivativeIsTrivallyZero

        public boolean derivativeIsTrivallyZero()