IIRVBuilder.java
/* Copyright 2024-2025 The Johns Hopkins University Applied Physics Laboratory
* Licensed to CS GROUP (CS) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* CS licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.orekit.files.iirv;
import org.orekit.errors.OrekitIllegalArgumentException;
import org.orekit.errors.OrekitMessages;
import org.orekit.files.iirv.terms.CoordinateSystemTerm;
import org.orekit.files.iirv.terms.CrossSectionalAreaTerm;
import org.orekit.files.iirv.terms.DataSourceTerm;
import org.orekit.files.iirv.terms.DayOfYearTerm;
import org.orekit.files.iirv.terms.DragCoefficientTerm;
import org.orekit.files.iirv.terms.MassTerm;
import org.orekit.files.iirv.terms.MessageClassTerm;
import org.orekit.files.iirv.terms.MessageIDTerm;
import org.orekit.files.iirv.terms.MessageSourceTerm;
import org.orekit.files.iirv.terms.MessageTypeTerm;
import org.orekit.files.iirv.terms.OriginIdentificationTerm;
import org.orekit.files.iirv.terms.OriginatorRoutingIndicatorTerm;
import org.orekit.files.iirv.terms.PositionVectorComponentTerm;
import org.orekit.files.iirv.terms.RoutingIndicatorTerm;
import org.orekit.files.iirv.terms.SequenceNumberTerm;
import org.orekit.files.iirv.terms.SolarReflectivityCoefficientTerm;
import org.orekit.files.iirv.terms.SupportIdCodeTerm;
import org.orekit.files.iirv.terms.VectorEpochTerm;
import org.orekit.files.iirv.terms.VectorTypeTerm;
import org.orekit.files.iirv.terms.VehicleIdCodeTerm;
import org.orekit.files.iirv.terms.VelocityVectorComponentTerm;
import org.orekit.time.AbsoluteDate;
import org.orekit.time.UTCScale;
import org.orekit.utils.TimeStampedPVCoordinates;
import java.util.ArrayList;
import java.util.List;
/**
* Builder for {@link IIRVVector}.
*
* @author Nick LaFarge
* @since 13.0
*/
public class IIRVBuilder {
/** UTC time scale. */
private final UTCScale utc;
/**
* Message type, default: "00".
*/
private MessageTypeTerm messageType = MessageTypeTerm.DEFAULT;
/**
* Message Identification, default: "0000000".
*/
private MessageIDTerm messageID = new MessageIDTerm(0);
/**
* Message source, default: "0".
*/
private MessageSourceTerm messageSource = MessageSourceTerm.DEFAULT;
/**
* Message class, default: "10" [nominal].
*/
private MessageClassTerm messageClass = MessageClassTerm.NOMINAL;
/**
* Origin identification, default: " " [NASA Goddard Space Flight Center].
*/
private OriginIdentificationTerm originIdentification = OriginIdentificationTerm.GSFC;
/**
* Destination routing indicator, default: "MANY".
*/
private RoutingIndicatorTerm routingIndicator = RoutingIndicatorTerm.MANY;
/**
* Vector type, default: "1" [Free flight].
*/
private VectorTypeTerm vectorType = VectorTypeTerm.FREE_FLIGHT;
/**
* Source of data, default: "1" [nominal/planning].
*/
private DataSourceTerm dataSource = DataSourceTerm.NOMINAL;
/**
* Coordinate system, default: "1" [Geocentric True-of-Date Rotating (GTOD)].
*/
private CoordinateSystemTerm coordinateSystem = CoordinateSystemTerm.GEOCENTRIC_TRUE_OF_DATE_ROTATING;
/**
* Support ID Code, default: "0000".
*/
private SupportIdCodeTerm supportIdCode = new SupportIdCodeTerm("0000");
/**
* Vehicle ID Code, default: "01".
*/
private VehicleIdCodeTerm vehicleIdCode = new VehicleIdCodeTerm("01");
/**
* Sequence number, default: "000".
*/
private SequenceNumberTerm sequenceNumber = new SequenceNumberTerm(0);
/**
* Satellite mass (kg), default: "00156170" [unused].
*/
private MassTerm mass = MassTerm.UNUSED;
/**
* Average satellite cross-sectional area (m^2), default: "00000" [unused].
*/
private CrossSectionalAreaTerm crossSectionalArea = CrossSectionalAreaTerm.UNUSED;
/**
* Drag coefficient (dimensionless), default: "0000" [unused].
*/
private DragCoefficientTerm dragCoefficient = DragCoefficientTerm.UNUSED;
/**
* Solar reflectivity coefficient (dimensionless), default: "00000000" [unused].
*/
private SolarReflectivityCoefficientTerm solarReflectivityCoefficient = SolarReflectivityCoefficientTerm.UNUSED;
/**
* Originator of message (GCQU or GAQD), default: "GAQD".
*/
private OriginatorRoutingIndicatorTerm originatorRoutingIndicator = OriginatorRoutingIndicatorTerm.GAQD;
/**
* Constructs an {@link IIRVBuilder} instance with a UTC timescale and default values for all parameters.
*
* @param utc UTC time scale
*/
public IIRVBuilder(final UTCScale utc) {
this.utc = utc;
}
/**
* Constructs an IIRV object using the configured parameters.
*
* @param dayOfYear Day of year, 001 to 366
* @param vectorEpoch Vector epoch in UTC
* @param xPosition X component of the position vector [m]
* @param yPosition Y component of the position vector [m]
* @param zPosition Z component of the position vector [m]
* @param xVelocity X component of the velocity vector [m/s]
* @param yVelocity Y component of the velocity vector [m/s]
* @param zVelocity Z component of the velocity vector [m/s]
* @return the newly constructed IIRV object
*/
public IIRVVector buildVector(final DayOfYearTerm dayOfYear,
final VectorEpochTerm vectorEpoch,
final PositionVectorComponentTerm xPosition,
final PositionVectorComponentTerm yPosition,
final PositionVectorComponentTerm zPosition,
final VelocityVectorComponentTerm xVelocity,
final VelocityVectorComponentTerm yVelocity,
final VelocityVectorComponentTerm zVelocity) {
return new IIRVVector(
messageType, messageID, messageSource, messageClass, originIdentification, routingIndicator, // Line 1
vectorType, dataSource, coordinateSystem, supportIdCode, vehicleIdCode, sequenceNumber, dayOfYear, vectorEpoch, // Line 2
xPosition, yPosition, zPosition, // Line 3
xVelocity, yVelocity, zVelocity, // Line 4
mass, crossSectionalArea, dragCoefficient, solarReflectivityCoefficient, // Line 5
originatorRoutingIndicator, // Line 6
utc
);
}
/**
* Constructs an IIRV vector using the configured parameters, with position, velocity, and time variables derived
* from instances of {@link TimeStampedPVCoordinates} and {@link AbsoluteDate}.
*
* @param timeStampedPVCoordinates position and velocity components at a particular epoch corresponding to the
* IIRV vector
* @return the newly constructed IIRV object at the given coordinates
*/
public IIRVVector buildVector(final TimeStampedPVCoordinates timeStampedPVCoordinates) {
// Retrieve the epoch associated with the given coordinates
final AbsoluteDate epoch = timeStampedPVCoordinates.getDate();
// Construct the IIRV time variable terms
final DayOfYearTerm dayOfYear = new DayOfYearTerm(epoch, utc);
final VectorEpochTerm vectorEpoch = new VectorEpochTerm(epoch, utc);
// Construct the position component terms
final PositionVectorComponentTerm xPosition = new PositionVectorComponentTerm(timeStampedPVCoordinates.getPosition().getX());
final PositionVectorComponentTerm yPosition = new PositionVectorComponentTerm(timeStampedPVCoordinates.getPosition().getY());
final PositionVectorComponentTerm zPosition = new PositionVectorComponentTerm(timeStampedPVCoordinates.getPosition().getZ());
// Construct the velocity component terms
final VelocityVectorComponentTerm xVelocity = new VelocityVectorComponentTerm(timeStampedPVCoordinates.getVelocity().getX());
final VelocityVectorComponentTerm yVelocity = new VelocityVectorComponentTerm(timeStampedPVCoordinates.getVelocity().getY());
final VelocityVectorComponentTerm zVelocity = new VelocityVectorComponentTerm(timeStampedPVCoordinates.getVelocity().getZ());
// Construct an IIRV vector with the given terms
return new IIRVVector(
messageType, messageID, messageSource, messageClass, originIdentification, routingIndicator, // Line 1
vectorType, dataSource, coordinateSystem, supportIdCode, vehicleIdCode, sequenceNumber, dayOfYear, vectorEpoch, // Line 2
xPosition, yPosition, zPosition, // Line 3
xVelocity, yVelocity, zVelocity, // Line 4
mass, crossSectionalArea, dragCoefficient, solarReflectivityCoefficient, // Line 5
originatorRoutingIndicator, // Line 6
utc
);
}
/**
* Constructs an {@link IIRVMessage} where each {@link IIRVVector} in initialized from the inputted list of
* {@link TimeStampedPVCoordinates}.
*
* @param timeStampedPVCoordinates list of time-stamped position and velocity vectors to populate the message
* @param <C> type of the Cartesian coordinates
* @return the newly constructed {@link IIRVMessage} containing the given coordinates
*/
public <C extends TimeStampedPVCoordinates> IIRVMessage buildIIRVMessage(final List<C> timeStampedPVCoordinates) {
final ArrayList<IIRVVector> vectors = new ArrayList<>();
int incrementalSequenceNumber = 0;
for (TimeStampedPVCoordinates coordinates : timeStampedPVCoordinates) {
// Add coordinate to the list of vectors with the current sequence number
setSequenceNumber(incrementalSequenceNumber);
vectors.add(buildVector(coordinates));
incrementalSequenceNumber++;
}
return new IIRVMessage(vectors);
}
/**
* Constructs an {@link IIRVEphemerisFile} from the inputted list of {@link TimeStampedPVCoordinates}, inferring
* the start year from the first coordinate's {@link org.orekit.time.AbsoluteDate}.
* <p>
* See {@link #buildIIRVMessage(List)} for {@link IIRVMessage} construction details.
*
* @param timeStampedPVCoordinates list of time-stamped position and velocity vectors to populate the message
* @param <C> type of the Cartesian coordinates
* @return the newly constructed {@link IIRVEphemerisFile} containing the given coordinates
*/
public <C extends TimeStampedPVCoordinates> IIRVEphemerisFile buildEphemerisFile(final List<C> timeStampedPVCoordinates) {
final int year = timeStampedPVCoordinates.get(0).getDate().getComponents(utc).getDate().getYear();
return new IIRVEphemerisFile(year, buildIIRVMessage(timeStampedPVCoordinates));
}
/**
* Gets the current {@link MassTerm} value.
*
* @return the current {@link MassTerm} value.
*/
public MassTerm getMass() {
return mass;
}
/**
* Overrides the default Mass attribute for the {@link IIRVVector} object being built.
* <p>
* Units: kg
*
* @param mass mass value (kg) for the IIRV message
*/
public void setMass(final MassTerm mass) {
this.mass = mass;
}
/**
* Overrides the default Mass attribute for the {@link IIRVVector} object being built.
* <p>
* Units: kg
*
* @param mass mass value (kg) for the IIRV message
*/
public void setMass(final String mass) {
this.mass = new MassTerm(mass);
}
/**
* Overrides the default Mass attribute for the {@link IIRVVector} object being built.
* <p>
* Units: kg
*
* @param mass mass value (kg) for the IIRV message
*/
public void setMass(final double mass) {
this.mass = new MassTerm(mass);
}
/**
* Gets the current {@link MessageTypeTerm} value.
*
* @return the current {@link MessageTypeTerm} value.
*/
public MessageTypeTerm getMessageType() {
return messageType;
}
/**
* Overrides the default {@link MessageTypeTerm} attribute for the {@link IIRVVector} object being built.
*
* @param messageType {@link MessageTypeTerm} for the IIRV message
*/
public void setMessageType(final String messageType) {
this.messageType = new MessageTypeTerm(messageType);
}
/**
* Overrides the default {@link MessageTypeTerm} attribute for the {@link IIRVVector} object being built.
*
* @param messageType {@link MessageTypeTerm} for the IIRV message
*/
public void setMessageType(final MessageTypeTerm messageType) {
this.messageType = messageType;
}
/**
* Gets the current {@link MessageSourceTerm} value.
*
* @return the current {@link MessageSourceTerm} value.
*/
public MessageSourceTerm getMessageSource() {
return messageSource;
}
/**
* Overrides the default {@link MessageSourceTerm} attribute for the {@link IIRVVector} object being built.
*
* @param messageSource {@link MessageSourceTerm} for the IIRV message
*/
public void setMessageSource(final String messageSource) {
this.messageSource = new MessageSourceTerm(messageSource);
}
/**
* Overrides the default {@link MessageSourceTerm} attribute for the {@link IIRVVector} object being built.
*
* @param messageSource {@link MessageSourceTerm} for the IIRV message
*/
public void setMessageSource(final MessageSourceTerm messageSource) {
this.messageSource = messageSource;
}
/**
* Gets the current {@link MessageIDTerm} value.
*
* @return the current {@link MessageIDTerm} value.
*/
public MessageIDTerm getMessageID() {
return messageID;
}
/**
* Overrides the default MessageID attribute for the {@link IIRVVector} object being built.
*
* @param messageID message ID value for the IIRV message
*/
public void setMessageID(final MessageIDTerm messageID) {
this.messageID = messageID;
}
/**
* Overrides the default MessageID attribute for the {@link IIRVVector} object being built.
*
* @param messageID message ID value for the IIRV message
*/
public void setMessageID(final String messageID) {
this.messageID = new MessageIDTerm(messageID);
}
/**
* Overrides the default MessageID attribute for the {@link IIRVVector} object being built.
*
* @param messageID message ID value for the IIRV message
*/
public void setMessageID(final long messageID) {
this.messageID = new MessageIDTerm(messageID);
}
/**
* Gets the current {@link MessageClassTerm} value.
*
* @return the current {@link MessageClassTerm} value.
*/
public MessageClassTerm getMessageClass() {
return messageClass;
}
/**
* Overrides the default MessageClass attribute for the {@link IIRVVector} object being built.
*
* @param messageClass message class value for the IIRV message
*/
public void setMessageClass(final MessageClassTerm messageClass) {
this.messageClass = messageClass;
}
/**
* Overrides the default MessageClass attribute for the {@link IIRVVector} object being built.
*
* @param messageClass message class value for the IIRV message
*/
public void setMessageClass(final String messageClass) {
this.messageClass = new MessageClassTerm(messageClass);
}
/**
* Overrides the default MessageClass attribute for the {@link IIRVVector} object being built.
*
* @param messageClass message class value for the IIRV message
*/
public void setMessageClass(final long messageClass) {
this.messageClass = new MessageClassTerm(messageClass);
}
/**
* Gets the current {@link OriginIdentificationTerm} value.
*
* @return the current {@link OriginIdentificationTerm} value.
*/
public OriginIdentificationTerm getOriginIdentification() {
return originIdentification;
}
/**
* Overrides the default OriginIdentification attribute for the {@link IIRVVector} object being built.
*
* @param originIdentification origin identification value for the IIRV message
*/
public void setOriginIdentification(final OriginIdentificationTerm originIdentification) {
this.originIdentification = originIdentification;
}
/**
* Overrides the default OriginIdentification attribute for the {@link IIRVVector} object being built.
*
* @param originIdentification origin identification value for the IIRV message
*/
public void setOriginIdentification(final String originIdentification) {
this.originIdentification = new OriginIdentificationTerm(originIdentification);
}
/**
* Gets the current {@link RoutingIndicatorTerm} value.
*
* @return the current {@link RoutingIndicatorTerm} value.
*/
public RoutingIndicatorTerm getRoutingIndicator() {
return routingIndicator;
}
/**
* Overrides the default RoutingIndicator attribute for the {@link IIRVVector} object being built.
*
* @param routingIndicator routing indicator term value for the IIRV message
*/
public void setRoutingIndicator(final RoutingIndicatorTerm routingIndicator) {
this.routingIndicator = routingIndicator;
}
/**
* Overrides the default RoutingIndicator attribute for the {@link IIRVVector} object being built.
*
* @param routingIndicator routing indicator term value for the IIRV message
*/
public void setRoutingIndicator(final String routingIndicator) {
this.routingIndicator = new RoutingIndicatorTerm(routingIndicator);
}
/**
* Gets the current {@link VectorTypeTerm} value.
*
* @return the current {@link VectorTypeTerm} value.
*/
public VectorTypeTerm getVectorType() {
return vectorType;
}
/**
* Overrides the default VectorType attribute for the {@link IIRVVector} object being built.
*
* @param vectorType vector type term value for the IIRV message
*/
public void setVectorType(final VectorTypeTerm vectorType) {
this.vectorType = vectorType;
}
/**
* Overrides the default VectorType attribute for the {@link IIRVVector} object being built.
*
* @param vectorType vector type term value for the IIRV message
*/
public void setVectorType(final String vectorType) {
this.vectorType = new VectorTypeTerm(vectorType);
}
/**
* Overrides the default VectorType attribute for the {@link IIRVVector} object being built.
*
* @param vectorType vector type term value for the IIRV message
*/
public void setVectorType(final long vectorType) {
this.vectorType = new VectorTypeTerm(vectorType);
}
/**
* Gets the current {@link DataSourceTerm} value.
*
* @return the current {@link DataSourceTerm} value.
*/
public DataSourceTerm getDataSource() {
return dataSource;
}
/**
* Overrides the default DataSource attribute for the {@link IIRVVector} object being built.
*
* @param dataSource data source term value for the IIRV message
*/
public void setDataSource(final DataSourceTerm dataSource) {
this.dataSource = dataSource;
}
/**
* Overrides the default DataSource attribute for the {@link IIRVVector} object being built.
*
* @param dataSource data source term value for the IIRV message
*/
public void setDataSource(final long dataSource) {
this.dataSource = new DataSourceTerm(dataSource);
}
/**
* Overrides the default DataSource attribute for the {@link IIRVVector} object being built.
*
* @param dataSource data source term value for the IIRV message
*/
public void setDataSource(final String dataSource) {
this.dataSource = new DataSourceTerm(dataSource);
}
/**
* Gets the current {@link CoordinateSystemTerm} value.
*
* @return the current {@link CoordinateSystemTerm} value.
*/
public CoordinateSystemTerm getCoordinateSystem() {
return coordinateSystem;
}
/**
* Overrides the default CoordinateSystem attribute for the {@link IIRVVector} object being built.
*
* @param coordinateSystem coordinate system term value for the IIRV message
*/
public void setCoordinateSystem(final CoordinateSystemTerm coordinateSystem) {
this.coordinateSystem = coordinateSystem;
}
/**
* Overrides the default CoordinateSystem attribute for the {@link IIRVVector} object being built.
*
* @param coordinateSystem coordinate system term value for the IIRV message
*/
public void setCoordinateSystem(final String coordinateSystem) {
this.coordinateSystem = new CoordinateSystemTerm(coordinateSystem);
}
/**
* Overrides the default CoordinateSystem attribute for the {@link IIRVVector} object being built.
*
* @param coordinateSystem coordinate system term value for the IIRV message
*/
public void setCoordinateSystem(final long coordinateSystem) {
this.coordinateSystem = new CoordinateSystemTerm(coordinateSystem);
}
/**
* Gets the current {@link SupportIdCodeTerm} value.
*
* @return the current {@link SupportIdCodeTerm} value.
*/
public SupportIdCodeTerm getSupportIdCode() {
return supportIdCode;
}
/**
* Overrides the default SupportIdCode attribute for the {@link IIRVVector} object being built.
*
* @param supportIdCode support id code value for the IIRV message
*/
public void setSupportIdCode(final SupportIdCodeTerm supportIdCode) {
this.supportIdCode = supportIdCode;
}
/**
* Overrides the default SupportIdCode attribute for the {@link IIRVVector} object being built.
*
* @param supportIdCode support id code value for the IIRV message
*/
public void setSupportIdCode(final String supportIdCode) {
this.supportIdCode = new SupportIdCodeTerm(supportIdCode);
}
/**
* Overrides the default SupportIdCode attribute for the {@link IIRVVector} object being built.
*
* @param supportIdCode support id code value for the IIRV message
*/
public void setSupportIdCode(final long supportIdCode) {
this.supportIdCode = new SupportIdCodeTerm(supportIdCode);
}
/**
* Gets the current {@link VehicleIdCodeTerm} value.
*
* @return the current {@link VehicleIdCodeTerm} value.
*/
public VehicleIdCodeTerm getVehicleIdCode() {
return vehicleIdCode;
}
/**
* Overrides the default VehicleIdCode attribute for the {@link IIRVVector} object being built.
*
* @param vehicleIdCode vehicle id code value for the IIRV message
*/
public void setVehicleIdCode(final VehicleIdCodeTerm vehicleIdCode) {
this.vehicleIdCode = vehicleIdCode;
}
/**
* Overrides the default VehicleIdCode attribute for the {@link IIRVVector} object being built.
*
* @param vehicleIdCode vehicle id code value for the IIRV message
*/
public void setVehicleIdCode(final String vehicleIdCode) {
this.vehicleIdCode = new VehicleIdCodeTerm(vehicleIdCode);
}
/**
* Overrides the default VehicleIdCode attribute for the {@link IIRVVector} object being built.
*
* @param vehicleIdCode vehicle id code value for the IIRV message
*/
public void setVehicleIdCode(final long vehicleIdCode) {
this.vehicleIdCode = new VehicleIdCodeTerm(vehicleIdCode);
}
/**
* Gets the current {@link SequenceNumberTerm} value.
*
* @return the current {@link SequenceNumberTerm} value.
*/
public SequenceNumberTerm getSequenceNumber() {
return sequenceNumber;
}
/**
* Overrides the default SequenceNumber attribute for the {@link IIRVVector} object being built.
*
* @param sequenceNumber sequence number value for the IIRV message
*/
public void setSequenceNumber(final SequenceNumberTerm sequenceNumber) {
this.sequenceNumber = sequenceNumber;
}
/**
* Overrides the default SequenceNumber attribute for the {@link IIRVVector} object being built.
*
* @param sequenceNumber sequence number value for the IIRV message
*/
public void setSequenceNumber(final String sequenceNumber) {
this.sequenceNumber = new SequenceNumberTerm(sequenceNumber);
}
/**
* Overrides the default SequenceNumber attribute for the {@link IIRVVector} object being built.
*
* @param sequenceNumber sequence number value for the IIRV message
*/
public void setSequenceNumber(final long sequenceNumber) {
if (sequenceNumber > SequenceNumberTerm.MAX_SEQUENCE_NUMBER) {
throw new OrekitIllegalArgumentException(OrekitMessages.IIRV_EXCEEDS_MAX_VECTORS, sequenceNumber);
}
this.sequenceNumber = new SequenceNumberTerm(sequenceNumber);
}
/**
* Gets the current {@link CrossSectionalAreaTerm} value.
*
* @return the current {@link CrossSectionalAreaTerm} value.
*/
public CrossSectionalAreaTerm getCrossSectionalArea() {
return crossSectionalArea;
}
/**
* Overrides the default {@link CrossSectionalAreaTerm} attribute for the {@link IIRVVector} object being built.
* <p>
* Units: m^2
*
* @param crossSectionalArea cross-sectional area value (m^2) for the IIRV message
*/
public void setCrossSectionalArea(final CrossSectionalAreaTerm crossSectionalArea) {
this.crossSectionalArea = crossSectionalArea;
}
/**
* Overrides the default {@link CrossSectionalAreaTerm} attribute for the {@link IIRVVector} object being built.
* <p>
* Units: m^2
* <p>
* See {@link CrossSectionalAreaTerm#CrossSectionalAreaTerm(String)}
*
* @param crossSectionalArea cross-sectional area value (m^2) for the IIRV message
*/
public void setCrossSectionalArea(final String crossSectionalArea) {
this.crossSectionalArea = new CrossSectionalAreaTerm(crossSectionalArea);
}
/**
* Overrides the default {@link CrossSectionalAreaTerm} attribute for the {@link IIRVVector} object being built.
* <p>
* Units: m^2
* <p>
* See {@link CrossSectionalAreaTerm#CrossSectionalAreaTerm(double)}
*
* @param crossSectionalArea cross-sectional area value (m^2) for the IIRV message
*/
public void setCrossSectionalArea(final double crossSectionalArea) {
this.crossSectionalArea = new CrossSectionalAreaTerm(crossSectionalArea);
}
/**
* Gets the current {@link DragCoefficientTerm} value.
*
* @return the current {@link DragCoefficientTerm} value.
*/
public DragCoefficientTerm getDragCoefficient() {
return dragCoefficient;
}
/**
* Overrides the default {@link DragCoefficientTerm} attribute for the {@link IIRVVector} object being built.
* <p>
* Units: dimensionless
*
* @param dragCoefficient drag coefficient value (dimensionless) for the IIRV message
*/
public void setDragCoefficient(final DragCoefficientTerm dragCoefficient) {
this.dragCoefficient = dragCoefficient;
}
/**
* Overrides the default {@link DragCoefficientTerm} attribute for the {@link IIRVVector} object being built.
* <p>
* Units: dimensionless
* <p>
* See {@link DragCoefficientTerm#DragCoefficientTerm(String)}
*
* @param dragCoefficient drag coefficient value (dimensionless) for the IIRV message
*/
public void setDragCoefficient(final String dragCoefficient) {
this.dragCoefficient = new DragCoefficientTerm(dragCoefficient);
}
/**
* Overrides the default {@link DragCoefficientTerm} attribute for the {@link IIRVVector} object being built.
* <p>
* Units: dimensionless
* <p>
* See {@link DragCoefficientTerm#DragCoefficientTerm(double)}
*
* @param dragCoefficient drag coefficient value (dimensionless) for the IIRV message
*/
public void setDragCoefficient(final double dragCoefficient) {
this.dragCoefficient = new DragCoefficientTerm(dragCoefficient);
}
/**
* Gets the current {@link SolarReflectivityCoefficientTerm} value.
*
* @return the current {@link SolarReflectivityCoefficientTerm} value.
*/
public SolarReflectivityCoefficientTerm getSolarReflectivityCoefficient() {
return solarReflectivityCoefficient;
}
/**
* Overrides the default {@link SolarReflectivityCoefficientTerm} attribute for the {@link IIRVVector} object being built.
* <p>
* Units: dimensionless
*
* @param solarReflectivityCoefficient solar reflectivity coefficient value (dimensionless) for the IIRV message
*/
public void setSolarReflectivityCoefficient(final SolarReflectivityCoefficientTerm solarReflectivityCoefficient) {
this.solarReflectivityCoefficient = solarReflectivityCoefficient;
}
/**
* Overrides the default {@link SolarReflectivityCoefficientTerm} attribute for the {@link IIRVVector} object being built.
* <p>
* Units: dimensionless
* <p>
* See {@link SolarReflectivityCoefficientTerm#SolarReflectivityCoefficientTerm(String)}
*
* @param solarReflectivityCoefficient solar reflectivity coefficient value (dimensionless) for the IIRV message
*/
public void setSolarReflectivityCoefficient(final String solarReflectivityCoefficient) {
this.solarReflectivityCoefficient = new SolarReflectivityCoefficientTerm(solarReflectivityCoefficient);
}
/**
* Overrides the default {@link SolarReflectivityCoefficientTerm} attribute for the {@link IIRVVector} object being built.
* <p>
* Units: dimensionless
* <p>
* See {@link SolarReflectivityCoefficientTerm#SolarReflectivityCoefficientTerm(double)}
*
* @param solarReflectivityCoefficient solar reflectivity coefficient value (dimensionless) for the IIRV message
*/
public void setSolarReflectivityCoefficient(final double solarReflectivityCoefficient) {
this.solarReflectivityCoefficient = new SolarReflectivityCoefficientTerm(solarReflectivityCoefficient);
}
/**
* Gets the current {@link OriginatorRoutingIndicatorTerm} value.
*
* @return the current {@link OriginatorRoutingIndicatorTerm} value.
*/
public OriginatorRoutingIndicatorTerm getOriginatorRoutingIndicator() {
return originatorRoutingIndicator;
}
/**
* Overrides the default {@link OriginatorRoutingIndicatorTerm} attribute for the {@link IIRVVector} object being built.
*
* @param originatorRoutingIndicator originator routing indicator value for the IIRV message
*/
public void setOriginatorRoutingIndicator(final OriginatorRoutingIndicatorTerm originatorRoutingIndicator) {
this.originatorRoutingIndicator = originatorRoutingIndicator;
}
/**
* Overrides the default {@link OriginatorRoutingIndicatorTerm} attribute for the {@link IIRVVector} object being built.
* <p>
* See {@link OriginatorRoutingIndicatorTerm#OriginatorRoutingIndicatorTerm(String)}
*
* @param originatorRoutingIndicator originator routing indicator value for the IIRV message
*/
public void setOriginatorRoutingIndicator(final String originatorRoutingIndicator) {
this.originatorRoutingIndicator = new OriginatorRoutingIndicatorTerm(originatorRoutingIndicator);
}
/**
* Returns the satellite ID (set to the value of the {@link VehicleIdCodeTerm}).
*
* @return the satellite ID
*/
public String getSatelliteID() {
return vehicleIdCode.toEncodedString();
}
}