java.lang.Object
org.bzdev.devqsim.SimObject
org.bzdev.devqsim.DefaultSimObject
org.bzdev.devqsim.SimFunction
- All Implemented Interfaces:
DoubleUnaryOperator,RealValuedFunctOps,RealValuedFunctVAOps,NamedFunctionOps,NamedObjectOps
Factory for simulation objects in which an object represents
a RealValuedFunction.
-
Constructor Summary
ConstructorsConstructorDescriptionSimFunction(Simulation sim, String name, boolean intern, Object fobj) Constructor given a RealValuedFunction or a scripting-language-defined object.SimFunction(Simulation sim, String name, boolean intern, String fname, String fpname, String fppname) Constructor given the names of scripting-language-defined functions that will implement a function and its first and second derivatives.SimFunction(Simulation sim, String name, boolean intern, RealValuedFunctOps f) Constructor given a RealValuedFunctOps, provided so that the function can be defined using a lambda expression that takes one argument, or given an instance of RealValuedFunction.SimFunction(Simulation sim, String name, boolean intern, RealValuedFunctOps f, RealValuedFunctOps fp, RealValuedFunctOps fpp) Constructor given a RealValuedFunctOps, provided so that the function can be defined using a lambda expression that takes one argument. -
Method Summary
Modifier and TypeMethodDescriptionbooleanDetermine if this named object can be deleted.protected Objectclone()Creates and returns a copy of this object.final booleandelete()Delete an object.final booleanDetermine if an object is being deleted.doublederivAt(double x) Evaluate the function's first derivative.booleanDetermine if the maximum value for the domain is in the domainbooleanDetermine if the minimum value for the domain is in the domaindoubleGet the maximum value in the domain of the function.doubleGet the minimum value in the domain of the function.Get the RealValuedFunction associated with this named object.final StringgetName()Get an object's name.protected SimulationGet the object namer for a named object.final booleanDetermine if an object has been deleted.booleanDetermine if an object is interned in a object namer's tables.doublesecondDerivAt(double x) Evaluate the function's second derivative.doublevalueAt(double x) Call the function.Methods inherited from class org.bzdev.devqsim.DefaultSimObject
getSimulation, printConfiguration, printStateMethods inherited from class org.bzdev.devqsim.SimObject
addSimulationListener, addTraceSet, bindCallable, bindCallable, bindCallable, bindCallable, bindRunnable, bindRunnable, bindRunnable, bindRunnable, callableObject, callableScript, callScriptFunction, callScriptMethod, clearTraceSets, evalScript, getEventListenerList, getScriptObject, getTraceSets, onDelete, printConfiguration, printConfiguration, printConfiguration, printConfiguration, printConfiguration, printConfiguration, printState, printState, printState, printState, printState, printState, putScriptObject, removeSimulationListener, removeTraceSet, runnableObject, runnableScript, scheduleCall, scheduleCall, scheduleCall, scheduleCall, scheduleCallObject, scheduleScript, scheduleTask, scheduleTask, scheduleTask, scheduleTask, scheduleTaskObject, scheduleTaskScript, startImmediateTask, startImmediateTask, trace, trace, unscheduledTaskThread, unscheduledTaskThread, update, update, usesTraceSetMethods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.bzdev.obnaming.NamedObjectOps
canDelete, delete, deletePending, getName, isDeleted, isInternedMethods inherited from interface org.bzdev.math.RealValuedFunctOps
andThen, andThen, applyAsDouble, compose, compose, maxArgLength, minArgLength, valueAt
-
Constructor Details
-
SimFunction
public SimFunction(Simulation sim, String name, boolean intern, Object fobj) throws IllegalArgumentException Constructor given a RealValuedFunction or a scripting-language-defined object. SimFunction objects can be looked up by name using the methods inSimulation.- Parameters:
sim- the simulationname- the name of the object; null for an automatically generated nameintern- true if the object can be looked up by using the methods inSimulation; false otherwise.fobj- the function specified as an instance of RealValuedFunction or a scripting-language-defined object; null to return a SimFunction such that getFunction() will return null- Throws:
IllegalArgumentException- typically means a name is already in use- See Also:
-
SimFunction
public SimFunction(Simulation sim, String name, boolean intern, RealValuedFunctOps f) throws IllegalArgumentException Constructor given a RealValuedFunctOps, provided so that the function can be defined using a lambda expression that takes one argument, or given an instance of RealValuedFunction. SimFunction objects can be looked up by name using the methods inSimulation.- Parameters:
sim- the simulationname- the name of the objectintern- true if the object can be looked up by using the methods inSimulation; false otherwise.f- the function specified; null to return a SimFunction such that getFunction() will return null- Throws:
IllegalArgumentException- typically means a name is already in use- See Also:
-
SimFunction
public SimFunction(Simulation sim, String name, boolean intern, RealValuedFunctOps f, RealValuedFunctOps fp, RealValuedFunctOps fpp) throws IllegalArgumentException Constructor given a RealValuedFunctOps, provided so that the function can be defined using a lambda expression that takes one argument. SimFunction objects can be looked up by name using the methods inSimulation.- Parameters:
sim- the simulationname- the name of the objectintern- true if the object can be looked up by using the methods inSimulation; false otherwise.f- the function specified; null to return a SimFunction such that getFunction() will return nullfp- a function providing the the first derivative of the function specified; null if the first derivative is not providedfpp- a function providing the second derivative of the function specified; null if the first derivative is not provided- Throws:
IllegalArgumentException- typically means a name is already in use- See Also:
-
SimFunction
public SimFunction(Simulation sim, String name, boolean intern, String fname, String fpname, String fppname) throws IllegalArgumentException Constructor given the names of scripting-language-defined functions that will implement a function and its first and second derivatives. SimFunction objects can be looked up by name using the methods inSimulation.- Parameters:
sim- the simulationname- the name of the objectintern- true if the object can be looked up by using the methods inSimulation; false otherwise.fname- the name of the scripting-language-defined function giving the value of this functionfpname- the name of the scripting-language-defined function giving the value of this function's first derivative; null if a first derivative is not provided.fppname- the name of the scripting-language-defined function giving the value of this function's second derivative; null if a second derivative is not provided.- Throws:
IllegalArgumentException- typically means a name is already in use- See Also:
-
-
Method Details
-
getFunction
Description copied from interface:NamedFunctionOpsGet the RealValuedFunction associated with this named object.- Specified by:
getFunctionin interfaceNamedFunctionOps- Returns:
- the function; null if not defined
-
getDomainMin
public double getDomainMin()Description copied from interface:NamedFunctionOpsGet the minimum value in the domain of the function.- Specified by:
getDomainMinin interfaceNamedFunctionOps- Returns:
- the minimum value
-
domainMinClosed
public boolean domainMinClosed()Description copied from interface:NamedFunctionOpsDetermine if the minimum value for the domain is in the domain- Specified by:
domainMinClosedin interfaceNamedFunctionOps- Returns:
- true if the domain's minimum value is in the domain; false otherwise
-
getDomainMax
public double getDomainMax()Description copied from interface:NamedFunctionOpsGet the maximum value in the domain of the function.- Specified by:
getDomainMaxin interfaceNamedFunctionOps- Returns:
- the maximum value
-
domainMaxClosed
public boolean domainMaxClosed()Description copied from interface:NamedFunctionOpsDetermine if the maximum value for the domain is in the domain- Specified by:
domainMaxClosedin interfaceNamedFunctionOps- Returns:
- true if the maximum value for the domain is in the domain; false otherwise
-
valueAt
Description copied from interface:NamedFunctionOpsCall the function.- Specified by:
valueAtin interfaceNamedFunctionOps- Specified by:
valueAtin interfaceRealValuedFunctOps- Parameters:
x- the function's argument- Returns:
- the value of the function for the given argument
- Throws:
IllegalArgumentException- the function's argument was out of rangeUnsupportedOperationException- the operation is not supported.
-
derivAt
Description copied from interface:NamedFunctionOpsEvaluate the function's first derivative.- Specified by:
derivAtin interfaceNamedFunctionOps- Parameters:
x- the function's argument- Returns:
- the value of the function for the given argument
- Throws:
IllegalArgumentException- the function's argument was out of rangeUnsupportedOperationException- the operation is not supported.
-
secondDerivAt
public double secondDerivAt(double x) throws IllegalArgumentException, UnsupportedOperationException Description copied from interface:NamedFunctionOpsEvaluate the function's second derivative.- Specified by:
secondDerivAtin interfaceNamedFunctionOps- Parameters:
x- the function's argument- Returns:
- the value of the function for the given argument
- Throws:
IllegalArgumentException- the function's argument was out of rangeUnsupportedOperationException- the operation is not supported.
-
clone
Creates and returns a copy of this object. This method will throw the exception CloneNotSupportedException if the object is interned.- Overrides:
clonein classObject- 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:
isInternedin interfaceNamedObjectOps- Returns:
- true if the object is interned; false if not
-
getObjectNamer
Get the object namer for a named object.- Returns:
- the object namer for this named object
-
getName
Get an object's name.- Specified by:
getNamein interfaceNamedObjectOps- 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:
canDeletein interfaceNamedObjectOps- 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
DefaultNamedObectand generated because of a@NamedObjectannotation 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:
deletein interfaceNamedObjectOps- 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:
isDeletedin interfaceNamedObjectOps- 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:
deletePendingin interfaceNamedObjectOps- Returns:
- true if deletion is pending; false otherwise
-