public class ScalarOccultationRegulatedDualCone extends ScalarOccultationDualCone
Provides evaluators for percentage of occultation/eclipse at a position,
as well as EclipseType
using the dual cone shadow model.
The percentage runs from 0.0 (completely lit) to 1.0 (total eclipse).
This shadow model should only be used in a SimpleSolarRadiationForce
in conjunction with SolarRadiationBoundaryMitigation
.
It performs differently than the normal ScalarOccultationDualCone
in that it treats the
penumbra shadow condition as umbra, and does not allow the occultation factor to change during a propagation step.
This functionality is required for correct results from the boundary mitigator, but in all other circumstances
the normal dual cone occultation model should be used.
Constructor and Description |
---|
ScalarOccultationRegulatedDualCone()
Creates a new Scalar with a
VectorType (get / set ) of RadiationVectorType.CORRECT_FOR_LIGHT_TIME_DELAY_AND_ABERRATION . |
ScalarOccultationRegulatedDualCone(CentralBody illuminatingBody,
Point targetPoint,
CentralBody... occludingBodies)
Creates a new Scalar from the given illuminating body, target point, and occluding bodies.
|
ScalarOccultationRegulatedDualCone(CentralBody illuminatingBody,
Point targetPoint,
Iterable<CentralBody> occludingBodies)
Creates a new Scalar from the given illuminating body, target point, and occluding bodies.
|
ScalarOccultationRegulatedDualCone(ScalarOccultationDualCone template)
Initializes a new instance of a
ScalarOccultationRegulatedDualCone
from a normal ScalarOccultationDualCone . |
Modifier and Type | Method and Description |
---|---|
protected boolean |
checkForSameDefinition(ScalarOccultationDualCone other)
Checks to determine if another instance has the same definition as this instance and
returns
true if it does. |
protected boolean |
checkForSameDefinition(ScalarOccultationRegulatedDualCone other)
Checks to determine if another instance has the same definition as this instance and
returns
true if it does. |
protected int |
computeCurrentDefinitionHashCode()
Computes a hash code based on the current properties of this object.
|
ScalarEvaluator |
getEvaluator(EvaluatorGroup group)
Gets an evaluator that calculates occultation according to the dual cone shadow model.
|
PropagationStageParameter |
getPhaseParameter()
Gets a parameter which represents the propagation phase.
|
void |
setPhaseParameter(PropagationStageParameter value)
Sets a parameter which represents the propagation phase.
|
calculateEclipseType, checkForSameDefinition, clone, getDimension, getEclipseTypeEvaluators, getPartialDerivativesEvaluator, occultation
checkForSameDefinition, createEvaluatorHelper, eclipseAngles, enumerateDependencies, getEclipseTypeEvaluators, getIlluminatingBody, getInertialFrame, getOccludingBodies, getTargetPoint, getVectorType, setIlluminatingBody, setInertialFrame, setTargetPoint, setVectorType
add, add, add, add, add, checkForSameDefinition, createScalarDerivative, divide, divide, divide, divide, divide, getEvaluator, multiply, multiply, multiply, multiply, multiply, power, subtract, subtract, subtract, subtract, subtract, toScalar
areSameDefinition, areSameDefinition, areSameDefinition, areSameDefinition, areSameDefinition, collectionItemsAreSameDefinition, collectionItemsAreSameDefinition, collectionItemsAreSameDefinition, dictionaryItemsAreSameDefinition, freeze, freezeAggregatedObjects, getCollectionHashCode, getCollectionHashCode, getCollectionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDictionaryHashCode, getIsFrozen, isSameDefinition, throwIfFrozen
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getDefinitionHashCode, isSameDefinition
public ScalarOccultationRegulatedDualCone()
public ScalarOccultationRegulatedDualCone(CentralBody illuminatingBody, Point targetPoint, @Nonnull CentralBody... occludingBodies)
illuminatingBody
- The illuminating body.targetPoint
- The target point.occludingBodies
- The occluding bodies.public ScalarOccultationRegulatedDualCone(CentralBody illuminatingBody, Point targetPoint, @Nonnull Iterable<CentralBody> occludingBodies)
illuminatingBody
- The illuminating body.targetPoint
- The target point.occludingBodies
- The occluding bodies.public ScalarOccultationRegulatedDualCone(@Nonnull ScalarOccultationDualCone template)
ScalarOccultationRegulatedDualCone
from a normal ScalarOccultationDualCone
.template
- The normal Scalar representing dual cone occultation.protected final boolean checkForSameDefinition(ScalarOccultationDualCone other)
true
if it does. Derived classes MUST override this method and check
all new fields introduced by the derived class for definitional equivalence. It is NOT necessary
to check base class fields because the base class will already have done that. When overriding this method,
you should NOT call the base implementation because it will return false
for all derived-class instances.
Derived classes should check the type of other
to preserve the symmetric nature of IEquatableDefinition.isSameDefinition(java.lang.Object)
.checkForSameDefinition
in class ScalarOccultationDualCone
other
- The other instance to compare to this one.true
if the two objects are defined equivalently; otherwise false
.protected boolean checkForSameDefinition(ScalarOccultationRegulatedDualCone other)
true
if it does. Derived classes MUST override this method and check
all new fields introduced by the derived class for definitional equivalence. It is NOT necessary
to check base class fields because the base class will already have done that. When overriding this method,
you should NOT call the base implementation because it will return false
for all derived-class instances.
Derived classes should check the type of other
to preserve the symmetric nature of IEquatableDefinition.isSameDefinition(java.lang.Object)
.other
- The other instance to compare to this one.true
if the two objects are defined equivalently; otherwise false
.protected int computeCurrentDefinitionHashCode()
ScalarOccultationRegulatedDualCone.checkForSameDefinition(agi.foundation.celestial.ScalarOccultationDualCone)
method.computeCurrentDefinitionHashCode
in class ScalarOccultationDualCone
public final PropagationStageParameter getPhaseParameter()
NumericalPropagator
objects are running in the same EvaluatorGroup
,
such as when elements of a state require additional instances of a NumericalPropagator
inside their implementation in order to produce their values. In such cases, it may
be necessary to distinguish between the phase of the exterior propagator and the
phase of the interior propagator. In these cases, it is up to the user to ensure
that both the state and all of its elements are configured with the same parameter.
Otherwise, the state will throw an exception when creating its propagator.public final void setPhaseParameter(PropagationStageParameter value)
NumericalPropagator
objects are running in the same EvaluatorGroup
,
such as when elements of a state require additional instances of a NumericalPropagator
inside their implementation in order to produce their values. In such cases, it may
be necessary to distinguish between the phase of the exterior propagator and the
phase of the interior propagator. In these cases, it is up to the user to ensure
that both the state and all of its elements are configured with the same parameter.
Otherwise, the state will throw an exception when creating its propagator.public ScalarEvaluator getEvaluator(EvaluatorGroup group)
getEvaluator
in class ScalarOccultationDualCone
group
- The group with which to associate the new evaluator. By grouping evaluators
that are often evaluated at the same Julian dates, common computations can be performed only once
for the entire group instead of multiple times for each evaluator.ArgumentNullException
- Thrown when group
is null
.PropertyInvalidException
- Thrown when the property TargetPoint
(get
/ set
),
IlluminatingBody
(get
/ set
), or
OccludingBodies
(get
) or any of its members is null
.