Class SimFunctionTwo

All Implemented Interfaces:
DoubleBinaryOperator, RealValuedFunctTwoOps, RealValuedFunctVAOps, NamedFunctionTwoOps, NamedObjectOps

public final class SimFunctionTwo extends DefaultSimObject implements NamedFunctionTwoOps
Factory for simulation objects in which an object represents a RealValuedFunctionTwo.
  • Constructor Details

    • SimFunctionTwo

      public SimFunctionTwo(Simulation sim, String name, boolean intern, Object fobj) throws IllegalArgumentException
      Constructor given a RealValuedFunctionTwo or a scripting-language-defined object. SimFunctionTwo objects can be looked up by name using the methods in Simulation.
      Parameters:
      sim - the simulation
      name - the name of the object; null for an automatically generated name
      intern - true if the object can be looked up by using the methods in Simulation; false otherwise.
      fobj - the function specified as an instance of RealValuedFunctionTwo or a scripting-language-defined object; null to return a SimFunctionTwo such that getFunction() will return null
      Throws:
      IllegalArgumentException - typically means a name is already in use
      See Also:
    • SimFunctionTwo

      public SimFunctionTwo(Simulation sim, String name, boolean intern, RealValuedFunctTwoOps f) throws IllegalArgumentException
      Constructor given a RealValuedFunctTwoOps object, which can be provided by a lambda expression. SimFunctionTwo objects can be looked up by name using the methods in Simulation.
      Parameters:
      sim - the simulation
      name - the name of the object
      intern - true if the object can be looked up by using the methods in Simulation; false otherwise.
      f - the function providing this function's value; null to return a SimFunctionTwo such that getFunction() will return null
      Throws:
      IllegalArgumentException - typically means a name is already in use
      See Also:
    • SimFunctionTwo

      public SimFunctionTwo(Simulation sim, String name, boolean intern, RealValuedFunctTwoOps f, RealValuedFunctTwoOps f1, RealValuedFunctTwoOps f2) throws IllegalArgumentException
      Constructor given RealValuedFunctTwoOps objects, which can be provided by lambda expressions, to specify a function and its first partial derivatives. SimFunctionTwo objects can be looked up by name using the methods in Simulation. If the arguments f, f1, and f2 are all null, getFunction() will return null.
      Parameters:
      sim - the simulation
      name - the name of the object
      intern - true if the object can be looked up by using the methods in Simulation; false otherwise.
      f - the function providing this function's value; null if a value cannot be computed
      f1 - a function providing this function's partial derivative ∂f/∂x1; null if a value cannot be computed
      f2 - a function providing this function's partial derivative ∂f/∂x2; null if a value cannot be computed
      Throws:
      IllegalArgumentException - typically means a name is already in use
      See Also:
    • SimFunctionTwo

      Constructor given RealValuedFunctTwoOps objects, which can be provided by lambda expressions, to specify a function and its first and second partial derivatives. SimFunctionTwo objects can be looked up by name using the methods in Simulation. If the arguments f, f1, f2, f11, f12, f21, and f22 are all null, getFunction() will return null.
      Parameters:
      sim - the simulation
      name - the name of the object
      intern - true if the object can be looked up by using the methods in Simulation; false otherwise.
      f - the function providing this function's value; null if a value cannot be computed
      f1 - a function providing this function's partial derivative ∂f/∂x1; null if a value cannot be computed
      f2 - a function providing this function's partial derivative ∂f/∂x2; null if a value cannot be computed
      f11 - a function providing this function's partial derivative (∂2;f)/(∂x12); null if a value cannot be computed
      f12 - a function providing this function's partial derivative (∂2;f)/(∂x1∂x2); null if a value cannot be computed
      f21 - a function providing this function's partial derivative (∂2;f)/(∂x2∂x1); null if a value cannot be computed
      f22 - a function providing this function's partial derivative (∂2;f)/(∂x22); null if a value cannot be computed
      Throws:
      IllegalArgumentException - typically means a name is already in use
      See Also:
    • SimFunctionTwo

      public SimFunctionTwo(Simulation sim, String name, boolean intern, String fname, String f1name, String f2name, String f11name, String f12name, String f21name, String f22name) throws IllegalArgumentException
      Constructor given the names of scripting-language-defined functions that will implement a function and its first and second derivatives. SimFunctionTwo objects can be looked up by name using the methods in Simulation.
      Parameters:
      sim - the simulation
      name - the name of the object
      intern - true if the object can be looked up by using the methods in Simulation; false otherwise.
      fname - the name of the scripting-language-defined function giving the value of this function
      f1name - the name of the scripting-language-defined function giving the partial derivative ∂f / ∂x1 for the function f(x1x2) defined by this object; null if the derivative is not provided.
      f2name - the name of the scripting-language-defined function giving the partial derivative ∂f / ∂x2 for the function f(x1x2) defined by this object; null if the derivative is not provided.
      f11name - the name of the scripting-language-defined function giving the partial derivative ∂2f / ∂x12 for the function f(x1x2) defined by this object; null if the derivative is not provided.
      f12name - the name of the scripting-language-defined function giving the partial derivative ∂2f / (∂x1∂x2) for the function f(x1x2) defined by this object; null if the derivative is not provided.
      f21name - the name of the scripting-language-defined function giving the partial derivative ∂2f / (∂x2∂x1) for the function f(x1x2) defined by this object; null if the derivative is not provided.
      f22name - the name of the scripting-language-defined function giving the partial derivative ∂2f / ∂x22 for the function f(x1x2) defined by this object; null if the derivative is not provided
      Throws:
      IllegalArgumentException - typically means a name is already in use
      See Also:
  • Method Details

    • getFunction

      public RealValuedFunctionTwo getFunction()
      Description copied from interface: NamedFunctionTwoOps
      Get the RealValuedFunctionTwo associated with this named object.
      Specified by:
      getFunction in interface NamedFunctionTwoOps
      Returns:
      the function; null if not defined
    • getDomainMin1

      public double getDomainMin1()
      Description copied from interface: NamedFunctionTwoOps
      Get the minimum value of the first argument in the domain of the function.
      Specified by:
      getDomainMin1 in interface NamedFunctionTwoOps
      Returns:
      the minimum value
    • domainMin1Closed

      public boolean domainMin1Closed()
      Description copied from interface: NamedFunctionTwoOps
      Determine if the domain minimum for the first argument is in the domain.
      Specified by:
      domainMin1Closed in interface NamedFunctionTwoOps
      Returns:
      true if the domain minimum is in the domain; false otherwise
    • getDomainMax1

      public double getDomainMax1()
      Description copied from interface: NamedFunctionTwoOps
      Get the maximum value of the first argument in the domain of the function.
      Specified by:
      getDomainMax1 in interface NamedFunctionTwoOps
      Returns:
      the maximum value
    • domainMax1Closed

      public boolean domainMax1Closed()
      Description copied from interface: NamedFunctionTwoOps
      Determine if the domain maximum for the first argument is in the domain.
      Specified by:
      domainMax1Closed in interface NamedFunctionTwoOps
      Returns:
      true if the domain maximum is in the domain; false otherwise
    • getDomainMin2

      public double getDomainMin2()
      Description copied from interface: NamedFunctionTwoOps
      Get the minimum value of the second argument in the domain of the function.
      Specified by:
      getDomainMin2 in interface NamedFunctionTwoOps
      Returns:
      the minimum value
    • domainMin2Closed

      public boolean domainMin2Closed()
      Description copied from interface: NamedFunctionTwoOps
      Determine if the domain minumum for the second argument is in the domain.
      Specified by:
      domainMin2Closed in interface NamedFunctionTwoOps
      Returns:
      true if the domain minimum is in the domain; false otherwise
    • getDomainMax2

      public double getDomainMax2()
      Description copied from interface: NamedFunctionTwoOps
      Get the maximum value of the second argument in the domain of the function.
      Specified by:
      getDomainMax2 in interface NamedFunctionTwoOps
      Returns:
      the maximum value
    • domainMax2Closed

      public boolean domainMax2Closed()
      Description copied from interface: NamedFunctionTwoOps
      Determine if the domain maximum for the second argument is in the domain.
      Specified by:
      domainMax2Closed in interface NamedFunctionTwoOps
      Returns:
      true if the domain maximum is in the domain; false otherwise
    • isInDomain

      public boolean isInDomain(double x, double y) throws UnsupportedOperationException
      Description copied from interface: NamedFunctionTwoOps
      Determine if a point (x, y) is within the domain of a real-valued function of two arguments.
      Specified by:
      isInDomain in interface NamedFunctionTwoOps
      Parameters:
      x - the 1st argument
      y - the 2nd argument
      Returns:
      true if the point (x, y) is in this function's domain; false otherwise
      Throws:
      UnsupportedOperationException - domain membership could not be determined.
    • valueAt

      public double valueAt(double x, double y) throws IllegalArgumentException, UnsupportedOperationException
      Description copied from interface: NamedFunctionTwoOps
      Call the function.
      Specified by:
      valueAt in interface NamedFunctionTwoOps
      Specified by:
      valueAt in interface RealValuedFunctTwoOps
      Parameters:
      x - the function's first argument
      y - the function's second argument
      Returns:
      the value of the function for the given argument
      Throws:
      IllegalArgumentException - the function's argument was out of range
      UnsupportedOperationException - the operation is not supported.
    • deriv1At

      public double deriv1At(double x, double y) throws IllegalArgumentException, UnsupportedOperationException
      Description copied from interface: NamedFunctionTwoOps
      Evaluate the partial derivative $\frac{\partial f}{\partial x_1}$ for the function f(x1,x2) defined by this object.
      Specified by:
      deriv1At in interface NamedFunctionTwoOps
      Parameters:
      x - the function's first argument
      y - the function's second argument
      Returns:
      the value of the partial derivative for the given argument
      Throws:
      IllegalArgumentException - the function's argument(s) were out of range
      UnsupportedOperationException - the operation is not supported.
    • deriv2At

      public double deriv2At(double x, double y) throws IllegalArgumentException, UnsupportedOperationException
      Description copied from interface: NamedFunctionTwoOps
      Evaluate the partial derivative $\frac{\partial f}{\partial x_2}$ for the function f(x1,x2) defined by this object.
      Specified by:
      deriv2At in interface NamedFunctionTwoOps
      Parameters:
      x - the function's first argument
      y - the function's second argument
      Returns:
      the value of the partial derivative for the given argument
      Throws:
      IllegalArgumentException - the function's argument(s) were out of range
      UnsupportedOperationException - the operation is not supported.
    • deriv11At

      public double deriv11At(double x, double y) throws IllegalArgumentException, UnsupportedOperationException
      Description copied from interface: NamedFunctionTwoOps
      Evaluate the partial derivative $\frac{\partial^2 f}{\partial x_1^2}$ for the function f(x1,x2) defined by this object.
      Specified by:
      deriv11At in interface NamedFunctionTwoOps
      Parameters:
      x - the function's first argument
      y - the function's second argument
      Returns:
      the value of the partial derivative for the given argument
      Throws:
      IllegalArgumentException - the function's argument(s) were out of range
      UnsupportedOperationException - the operation is not supported.
    • deriv12At

      public double deriv12At(double x, double y) throws IllegalArgumentException, UnsupportedOperationException
      Description copied from interface: NamedFunctionTwoOps
      Evaluate the partial derivative $\frac{\partial^2 f}{\partial x_1 \partial x_2}$ for the function f(x1,x2) defined by this object.
      Specified by:
      deriv12At in interface NamedFunctionTwoOps
      Parameters:
      x - the function's first argument
      y - the function's second argument
      Returns:
      the value of the partial derivative for the given argument
      Throws:
      IllegalArgumentException - the function's argument(s) were out of range
      UnsupportedOperationException - the operation is not supported.
    • deriv21At

      public double deriv21At(double x, double y) throws IllegalArgumentException, UnsupportedOperationException
      Description copied from interface: NamedFunctionTwoOps
      Evaluate the partial derivative $\frac{\partial^2 f}{\partial x_2 \partial x_1}$ for the function f(x1,x2) defined by this object.
      Specified by:
      deriv21At in interface NamedFunctionTwoOps
      Parameters:
      x - the function's first argument
      y - the function's second argument
      Returns:
      the value of the partial derivative for the given argument
      Throws:
      IllegalArgumentException - the function's argument(s) were out of range
      UnsupportedOperationException - the operation is not supported.
    • deriv22At

      public double deriv22At(double x, double y) throws IllegalArgumentException, UnsupportedOperationException
      Description copied from interface: NamedFunctionTwoOps
      Evaluate the partial derivative $\frac{\partial^2 f}{\partial x_2^2}$ for the function f(x1,x2) defined by this object.
      Specified by:
      deriv22At in interface NamedFunctionTwoOps
      Parameters:
      x - the function's first argument
      y - the function's second argument
      Returns:
      the value of the partial derivative for the given argument
      Throws:
      IllegalArgumentException - the function's argument(s) were out of range
      UnsupportedOperationException - the operation is not supported.
    • clone

      protected Object clone() throws CloneNotSupportedException
      Creates and returns a copy of this object. This method will throw the exception CloneNotSupportedException if the object is interned.
      Overrides:
      clone in class Object
      Throws:
      CloneNotSupportedException - a clone could not be created
      See Also:
    • isInterned

      public boolean isInterned()
      Determine if an object is interned in a object namer's tables.
      Specified by:
      isInterned in interface NamedObjectOps
      Returns:
      true if the object is interned; false if not
    • getObjectNamer

      protected Simulation getObjectNamer()
      Get the object namer for a named object.
      Returns:
      the object namer for this named object
    • getName

      public final String getName()
      Get an object's name.
      Specified by:
      getName in interface NamedObjectOps
      Returns:
      the name of the object
    • canDelete

      public boolean canDelete()
      Determine if this named object can be deleted. A named object can be deleted if the method delete has not been called and if the object is not in a state that prevents the object from being deleted. Subclasses that override this method must call canDelete() for their superclasses and return false if the superclass' canDelete method returns false. The default method returns true if delete() has not been called and returned true.
      Specified by:
      canDelete in interface NamedObjectOps
      Returns:
      true if this object can be deleted; false otherwise
    • delete

      public final boolean delete()
      Delete an object. An object can only be deleted once. If this method returns true, the object (if interned) will have been removed from the object namer tables.

      The implementations provided by DefaultNamedObect and generated because of a @NamedObject annotation provide a protected method named onDelete. A subclass that overrides onDelete() must call the onDelete method of its superclass after it's onDelete method has been called and any cleanup actions performed. In some cases, this may happen at a later time (e.g., if a thread is used for some of the cleanup operations or if it is otherwise necessary to wait).

      Specified by:
      delete in interface NamedObjectOps
      Returns:
      true if the deletion request was accepted; false otherwise
    • isDeleted

      public final boolean isDeleted()
      Determine if an object has been deleted. An object is deleted if the method delete() has been called and returned true.
      Specified by:
      isDeleted in interface NamedObjectOps
      Returns:
      true if deleted; false otherwise
    • deletePending

      public final boolean deletePending()
      Determine if an object is being deleted. An deletion is pending if the method delete() has been called and returned true but the deletion has not been completed.
      Specified by:
      deletePending in interface NamedObjectOps
      Returns:
      true if deletion is pending; false otherwise