View Javadoc
1   package org.djunits.value.vdouble.vector;
2   
3   import java.util.List;
4   import java.util.SortedMap;
5   
6   import javax.annotation.Generated;
7   
8   import org.djunits.Throw;
9   import org.djunits.unit.AbsorbedDoseUnit;
10  import org.djunits.unit.AccelerationUnit;
11  import org.djunits.unit.AmountOfSubstanceUnit;
12  import org.djunits.unit.AngleUnit;
13  import org.djunits.unit.AreaUnit;
14  import org.djunits.unit.CatalyticActivityUnit;
15  import org.djunits.unit.DensityUnit;
16  import org.djunits.unit.DimensionlessUnit;
17  import org.djunits.unit.DurationUnit;
18  import org.djunits.unit.ElectricalCapacitanceUnit;
19  import org.djunits.unit.ElectricalChargeUnit;
20  import org.djunits.unit.ElectricalConductanceUnit;
21  import org.djunits.unit.ElectricalCurrentUnit;
22  import org.djunits.unit.ElectricalInductanceUnit;
23  import org.djunits.unit.ElectricalPotentialUnit;
24  import org.djunits.unit.ElectricalResistanceUnit;
25  import org.djunits.unit.EnergyUnit;
26  import org.djunits.unit.EquivalentDoseUnit;
27  import org.djunits.unit.FlowMassUnit;
28  import org.djunits.unit.FlowVolumeUnit;
29  import org.djunits.unit.ForceUnit;
30  import org.djunits.unit.FrequencyUnit;
31  import org.djunits.unit.IlluminanceUnit;
32  import org.djunits.unit.LengthUnit;
33  import org.djunits.unit.LinearDensityUnit;
34  import org.djunits.unit.LuminousFluxUnit;
35  import org.djunits.unit.LuminousIntensityUnit;
36  import org.djunits.unit.MagneticFluxDensityUnit;
37  import org.djunits.unit.MagneticFluxUnit;
38  import org.djunits.unit.MassUnit;
39  import org.djunits.unit.PowerUnit;
40  import org.djunits.unit.PressureUnit;
41  import org.djunits.unit.RadioActivityUnit;
42  import org.djunits.unit.SIUnit;
43  import org.djunits.unit.SolidAngleUnit;
44  import org.djunits.unit.SpeedUnit;
45  import org.djunits.unit.TemperatureUnit;
46  import org.djunits.unit.TorqueUnit;
47  import org.djunits.unit.Unit;
48  import org.djunits.unit.VolumeUnit;
49  import org.djunits.unit.si.SIDimensions;
50  import org.djunits.unit.util.UnitRuntimeException;
51  import org.djunits.value.ValueRuntimeException;
52  import org.djunits.value.storage.StorageType;
53  import org.djunits.value.vdouble.scalar.SIScalar;
54  import org.djunits.value.vdouble.scalar.base.AbstractDoubleScalarRel;
55  import org.djunits.value.vdouble.vector.base.AbstractDoubleVectorRel;
56  import org.djunits.value.vdouble.vector.base.DoubleVector;
57  import org.djunits.value.vdouble.vector.data.DoubleVectorData;
58  
59  /**
60   * Easy access methods for the generic Relative SI DoubleVector.
61   * <p>
62   * Copyright (c) 2013-2019 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. <br>
63   * All rights reserved. <br>
64   * BSD-style license. See <a href="https://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
65   * </p>
66   * @author <a href="https://www.tudelft.nl/averbraeck">Alexander Verbraeck</a>
67   * @author <a href="https://www.tudelft.nl/staff/p.knoppers/">Peter Knoppers</a>
68   */
69  @Generated(value = "org.djunits.generator.GenerateDJUNIT", date = "2019-10-18T12:12:25.568Z")
70  public class SIVector extends AbstractDoubleVectorRel<SIUnit, SIScalar, SIVector>
71  {
72      /** */
73      private static final long serialVersionUID = 20150901L;
74  
75      /**
76       * Construct a new Relative Double SIVector.
77       * @param values double[]; the values of the entries in the new Relative Double SIVector
78       * @param unit SIUnit; the unit of the new Relative Double SIVector
79       * @param storageType StorageType; the data type to use (e.g., DENSE or SPARSE)
80       * @return SIVector; the SIVector of the given unit
81       * @throws ValueRuntimeException when values is null
82       */
83      public static SIVector instantiate(final double[] values, final SIUnit unit, final StorageType storageType)
84              throws ValueRuntimeException
85      {
86          return new SIVector(DoubleVectorData.instantiate(values, unit.getScale(), storageType), unit);
87      }
88  
89      /**
90       * Construct a new Relative Double SIVector.
91       * @param values List&lt;Double&gt;; the values of the entries in the new Relative Double SIVector
92       * @param unit SIUnit; the unit of the new Relative Double SIVector
93       * @param storageType StorageType; the data type to use (e.g., DENSE or SPARSE)
94       * @return SIVector; the SIVector of the given unit
95       * @throws ValueRuntimeException when values is null
96       */
97      public static SIVector instantiate(final List<Double> values, final SIUnit unit, final StorageType storageType)
98              throws ValueRuntimeException
99      {
100         return new SIVector(DoubleVectorData.instantiate(values, unit.getScale(), storageType), unit);
101     }
102 
103     /**
104      * Construct a new Relative Double SIVector.
105      * @param values SortedMap&lt;Integer, Double&gt;; the map of indexes to values of the Relative Sparse Double SIVector
106      * @param length int; the size of the vector
107      * @param unit SIUnit; the unit of the new Relative Sparse Double SIVector
108      * @param storageType StorageType; the data type to use (e.g., DENSE or SPARSE)
109      * @return SIVector; the SIVector of the given unit
110      * @throws ValueRuntimeException when values is null
111      */
112     public static SIVector instantiate(final SortedMap<Integer, Double> values, final int length, final SIUnit unit,
113             final StorageType storageType) throws ValueRuntimeException
114     {
115         return new SIVector(DoubleVectorData.instantiate(values, length, unit.getScale(), storageType), unit);
116     }
117 
118     /**
119      * @param data DoubleVectorData; an internal data object
120      * @param unit SIUnit; the unit
121      */
122     public SIVector(final DoubleVectorData data, final SIUnit unit)
123     {
124         super(data, unit);
125     }
126 
127     /** {@inheritDoc} */
128     @Override
129     public Class<SIScalar> getScalarClass()
130     {
131         return SIScalar.class;
132     }
133 
134     /**
135      * Returns an SIVector based on an array of values and the textual representation of the unit.
136      * @param value double[]; the values to use
137      * @param unitString String; the textual representation of the unit
138      * @param storageType StorageType; the storage type to use
139      * @return SIVector; the vector representation of the values in their unit
140      * @throws IllegalArgumentException when the unit cannot be parsed or is incorrect
141      * @throws NullPointerException when the unitString argument is null
142      */
143     public static SIVector of(final double[] value, final String unitString, final StorageType storageType)
144     {
145         Throw.whenNull(value, "Error parsing SIVector: value is null");
146         Throw.whenNull(unitString, "Error parsing SIVector: unitString is null");
147         Throw.when(unitString.length() == 0, IllegalArgumentException.class, "Error parsing SIVector: empty unitString");
148         Throw.whenNull(storageType, "Error parsing SIVector: storageType is null");
149         try
150         {
151             SIUnit unit = Unit.lookupOrCreateUnitWithSIDimensions(SIDimensions.of(unitString));
152             if (unit != null)
153             {
154                 return SIVector.instantiate(value, unit, storageType);
155             }
156         }
157         catch (Exception exception)
158         {
159             throw new IllegalArgumentException("Error parsing SIUnit from " + unitString, exception);
160         }
161         throw new IllegalArgumentException("Error parsing SIVector with unit " + unitString);
162     }
163 
164     /**
165      * Returns an SIVector based on an array of values and the textual representation of the unit.
166      * @param valueList List&lt;Double&gt;; the values to use
167      * @param unitString String; the textual representation of the unit
168      * @param storageType StorageType; the storage type to use
169      * @return SIVector; the vector representation of the values in their unit
170      * @throws IllegalArgumentException when the unit cannot be parsed or is incorrect
171      * @throws NullPointerException when the unitString argument is null
172      */
173     public static SIVector of(final List<Double> valueList, final String unitString, final StorageType storageType)
174     {
175         Throw.whenNull(valueList, "Error parsing SIVector: valueList is null");
176         Throw.whenNull(unitString, "Error parsing SIVector: unitString is null");
177         Throw.when(unitString.length() == 0, IllegalArgumentException.class, "Error parsing SIVector: empty unitString");
178         Throw.whenNull(storageType, "Error parsing SIVector: storageType is null");
179         try
180         {
181             SIUnit unit = Unit.lookupOrCreateUnitWithSIDimensions(SIDimensions.of(unitString));
182             if (unit != null)
183             {
184                 return SIVector.instantiate(valueList, unit, storageType);
185             }
186         }
187         catch (Exception exception)
188         {
189             throw new IllegalArgumentException("Error parsing SIUnit from " + unitString, exception);
190         }
191         throw new IllegalArgumentException("Error parsing SIVector with unit " + unitString);
192     }
193 
194     /**
195      * Returns an SIVector based on a (sparse) map of values and the textual representation of the unit.
196      * @param valueMap SortedMap&lt;Integer, Double&gt;; the values to use
197      * @param unitString String; the textual representation of the unit
198      * @param length int; the size of the vector
199      * @param storageType StorageType; the storage type to use
200      * @return SIVector; the vector representation of the values in their unit
201      * @throws IllegalArgumentException when the unit cannot be parsed or is incorrect
202      * @throws NullPointerException when the unitString argument is null
203      */
204     public static SIVector of(final SortedMap<Integer, Double> valueMap, final String unitString, final int length,
205             final StorageType storageType)
206     {
207         Throw.whenNull(valueMap, "Error parsing SIVector: valueMap is null");
208         Throw.whenNull(unitString, "Error parsing SIVector: unitString is null");
209         Throw.when(unitString.length() == 0, IllegalArgumentException.class, "Error parsing SIVector: empty unitString");
210         Throw.whenNull(storageType, "Error parsing SIVector: storageType is null");
211         try
212         {
213             SIUnit unit = Unit.lookupOrCreateUnitWithSIDimensions(SIDimensions.of(unitString));
214             if (unit != null)
215             {
216                 return SIVector.instantiate(valueMap, length, unit, storageType);
217             }
218         }
219         catch (Exception exception)
220         {
221             throw new IllegalArgumentException("Error parsing SIUnit from " + unitString, exception);
222         }
223         throw new IllegalArgumentException("Error parsing SIVector with unit " + unitString);
224     }
225 
226     /** {@inheritDoc} */
227     @Override
228     public SIVector instantiateVector(final DoubleVectorData dvd, final SIUnit unit)
229     {
230         return new SIVector(dvd, unit);
231     }
232 
233     /** {@inheritDoc} */
234     @Override
235     public SIScalar instantiateScalarSI(final double valueSI, final SIUnit unit)
236     {
237         return new SIScalar(valueSI, unit);
238     }
239 
240     /**********************************************************************************/
241     /******************************** 'CAST AS' METHODS *******************************/
242     /**********************************************************************************/
243 
244     /**
245      * Return the current vector transformed to a vector in the given unit. Of course the SI dimensionality has to match,
246      * otherwise the vector cannot be transformed. The compiler will check the alignment between the return value and the unit.
247      * @param displayUnit KU; the unit in which the vector needs to be expressed
248      * @return K; the vector that has been transformed into the right vector type and unit
249      * @param <U> the unit type
250      * @param <S> the corresponding scalar type
251      * @param <V> the corresponding vector type
252      */
253     public final <U extends Unit<U>, S extends AbstractDoubleScalarRel<U, S>,
254             V extends AbstractDoubleVectorRel<U, S, V>> V as(final U displayUnit)
255     {
256         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(displayUnit.getQuantity().getSiDimensions())),
257                 UnitRuntimeException.class, "SIVector with unit %s cannot be converted to a vector with unit %s",
258                 getDisplayUnit(), displayUnit);
259         V result = DoubleVector.instantiate(this.data, displayUnit.getStandardUnit());
260         result.setDisplayUnit(displayUnit);
261         return result;
262     }
263 
264     /**
265      * Return the current vector as a absorbeddose vector.
266      * @return AbsorbedDoseVector; the current vector as a absorbeddose vector
267      */
268     public final AbsorbedDoseVector asAbsorbedDose()
269     {
270         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AbsorbedDoseUnit.BASE.getSiDimensions())),
271                 UnitRuntimeException.class, "cannot cast %s to AbsorbedDoseVector", this.toString());
272         return new AbsorbedDoseVector(this.data, AbsorbedDoseUnit.SI);
273     }
274 
275     /**
276      * Return the current vector as a absorbeddose vector, and provide a display unit.
277      * @param displayUnit the unit in which the value will be displayed
278      * @return AbsorbedDoseVector; the current vector as a absorbeddose vector
279      */
280     public final AbsorbedDoseVector asAbsorbedDose(final AbsorbedDoseUnit displayUnit)
281     {
282         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AbsorbedDoseUnit.BASE.getSiDimensions())),
283                 UnitRuntimeException.class, "cannot cast %s to AbsorbedDoseVector", this.toString());
284         AbsorbedDoseVectorrbedDoseVector.html#AbsorbedDoseVector">AbsorbedDoseVector result = new AbsorbedDoseVector(this.data, displayUnit.getStandardUnit());
285         result.setDisplayUnit(displayUnit);
286         return result;
287     }
288 
289     /**
290      * Return the current vector as a acceleration vector.
291      * @return AccelerationVector; the current vector as a acceleration vector
292      */
293     public final AccelerationVector asAcceleration()
294     {
295         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AccelerationUnit.BASE.getSiDimensions())),
296                 UnitRuntimeException.class, "cannot cast %s to AccelerationVector", this.toString());
297         return new AccelerationVector(this.data, AccelerationUnit.SI);
298     }
299 
300     /**
301      * Return the current vector as a acceleration vector, and provide a display unit.
302      * @param displayUnit the unit in which the value will be displayed
303      * @return AccelerationVector; the current vector as a acceleration vector
304      */
305     public final AccelerationVector asAcceleration(final AccelerationUnit displayUnit)
306     {
307         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AccelerationUnit.BASE.getSiDimensions())),
308                 UnitRuntimeException.class, "cannot cast %s to AccelerationVector", this.toString());
309         AccelerationVectorlerationVector.html#AccelerationVector">AccelerationVector result = new AccelerationVector(this.data, displayUnit.getStandardUnit());
310         result.setDisplayUnit(displayUnit);
311         return result;
312     }
313 
314     /**
315      * Return the current vector as a amountofsubstance vector.
316      * @return AmountOfSubstanceVector; the current vector as a amountofsubstance vector
317      */
318     public final AmountOfSubstanceVector asAmountOfSubstance()
319     {
320         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AmountOfSubstanceUnit.BASE.getSiDimensions())),
321                 UnitRuntimeException.class, "cannot cast %s to AmountOfSubstanceVector", this.toString());
322         return new AmountOfSubstanceVector(this.data, AmountOfSubstanceUnit.SI);
323     }
324 
325     /**
326      * Return the current vector as a amountofsubstance vector, and provide a display unit.
327      * @param displayUnit the unit in which the value will be displayed
328      * @return AmountOfSubstanceVector; the current vector as a amountofsubstance vector
329      */
330     public final AmountOfSubstanceVector asAmountOfSubstance(final AmountOfSubstanceUnit displayUnit)
331     {
332         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AmountOfSubstanceUnit.BASE.getSiDimensions())),
333                 UnitRuntimeException.class, "cannot cast %s to AmountOfSubstanceVector", this.toString());
334         AmountOfSubstanceVectorubstanceVector.html#AmountOfSubstanceVector">AmountOfSubstanceVector result = new AmountOfSubstanceVector(this.data, displayUnit.getStandardUnit());
335         result.setDisplayUnit(displayUnit);
336         return result;
337     }
338 
339     /**
340      * Return the current vector as a area vector.
341      * @return AreaVector; the current vector as a area vector
342      */
343     public final AreaVector asArea()
344     {
345         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AreaUnit.BASE.getSiDimensions())),
346                 UnitRuntimeException.class, "cannot cast %s to AreaVector", this.toString());
347         return new AreaVector(this.data, AreaUnit.SI);
348     }
349 
350     /**
351      * Return the current vector as a area vector, and provide a display unit.
352      * @param displayUnit the unit in which the value will be displayed
353      * @return AreaVector; the current vector as a area vector
354      */
355     public final AreaVector asArea(final AreaUnit displayUnit)
356     {
357         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AreaUnit.BASE.getSiDimensions())),
358                 UnitRuntimeException.class, "cannot cast %s to AreaVector", this.toString());
359         AreaVectortor/AreaVector.html#AreaVector">AreaVector result = new AreaVector(this.data, displayUnit.getStandardUnit());
360         result.setDisplayUnit(displayUnit);
361         return result;
362     }
363 
364     /**
365      * Return the current vector as a catalyticactivity vector.
366      * @return CatalyticActivityVector; the current vector as a catalyticactivity vector
367      */
368     public final CatalyticActivityVector asCatalyticActivity()
369     {
370         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(CatalyticActivityUnit.BASE.getSiDimensions())),
371                 UnitRuntimeException.class, "cannot cast %s to CatalyticActivityVector", this.toString());
372         return new CatalyticActivityVector(this.data, CatalyticActivityUnit.SI);
373     }
374 
375     /**
376      * Return the current vector as a catalyticactivity vector, and provide a display unit.
377      * @param displayUnit the unit in which the value will be displayed
378      * @return CatalyticActivityVector; the current vector as a catalyticactivity vector
379      */
380     public final CatalyticActivityVector asCatalyticActivity(final CatalyticActivityUnit displayUnit)
381     {
382         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(CatalyticActivityUnit.BASE.getSiDimensions())),
383                 UnitRuntimeException.class, "cannot cast %s to CatalyticActivityVector", this.toString());
384         CatalyticActivityVectorActivityVector.html#CatalyticActivityVector">CatalyticActivityVector result = new CatalyticActivityVector(this.data, displayUnit.getStandardUnit());
385         result.setDisplayUnit(displayUnit);
386         return result;
387     }
388 
389     /**
390      * Return the current vector as a density vector.
391      * @return DensityVector; the current vector as a density vector
392      */
393     public final DensityVector asDensity()
394     {
395         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DensityUnit.BASE.getSiDimensions())),
396                 UnitRuntimeException.class, "cannot cast %s to DensityVector", this.toString());
397         return new DensityVector(this.data, DensityUnit.SI);
398     }
399 
400     /**
401      * Return the current vector as a density vector, and provide a display unit.
402      * @param displayUnit the unit in which the value will be displayed
403      * @return DensityVector; the current vector as a density vector
404      */
405     public final DensityVector asDensity(final DensityUnit displayUnit)
406     {
407         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DensityUnit.BASE.getSiDimensions())),
408                 UnitRuntimeException.class, "cannot cast %s to DensityVector", this.toString());
409         DensityVector/DensityVector.html#DensityVector">DensityVector result = new DensityVector(this.data, displayUnit.getStandardUnit());
410         result.setDisplayUnit(displayUnit);
411         return result;
412     }
413 
414     /**
415      * Return the current vector as a dimensionless vector.
416      * @return DimensionlessVector; the current vector as a dimensionless vector
417      */
418     public final DimensionlessVector asDimensionless()
419     {
420         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DimensionlessUnit.BASE.getSiDimensions())),
421                 UnitRuntimeException.class, "cannot cast %s to DimensionlessVector", this.toString());
422         return new DimensionlessVector(this.data, DimensionlessUnit.SI);
423     }
424 
425     /**
426      * Return the current vector as a dimensionless vector, and provide a display unit.
427      * @param displayUnit the unit in which the value will be displayed
428      * @return DimensionlessVector; the current vector as a dimensionless vector
429      */
430     public final DimensionlessVector asDimensionless(final DimensionlessUnit displayUnit)
431     {
432         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DimensionlessUnit.BASE.getSiDimensions())),
433                 UnitRuntimeException.class, "cannot cast %s to DimensionlessVector", this.toString());
434         DimensionlessVectorsionlessVector.html#DimensionlessVector">DimensionlessVector result = new DimensionlessVector(this.data, displayUnit.getStandardUnit());
435         result.setDisplayUnit(displayUnit);
436         return result;
437     }
438 
439     /**
440      * Return the current vector as a electricalcapacitance vector.
441      * @return ElectricalCapacitanceVector; the current vector as a electricalcapacitance vector
442      */
443     public final ElectricalCapacitanceVector asElectricalCapacitance()
444     {
445         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalCapacitanceUnit.BASE.getSiDimensions())),
446                 UnitRuntimeException.class, "cannot cast %s to ElectricalCapacitanceVector", this.toString());
447         return new ElectricalCapacitanceVector(this.data, ElectricalCapacitanceUnit.SI);
448     }
449 
450     /**
451      * Return the current vector as a electricalcapacitance vector, and provide a display unit.
452      * @param displayUnit the unit in which the value will be displayed
453      * @return ElectricalCapacitanceVector; the current vector as a electricalcapacitance vector
454      */
455     public final ElectricalCapacitanceVector asElectricalCapacitance(final ElectricalCapacitanceUnit displayUnit)
456     {
457         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalCapacitanceUnit.BASE.getSiDimensions())),
458                 UnitRuntimeException.class, "cannot cast %s to ElectricalCapacitanceVector", this.toString());
459         ElectricalCapacitanceVectoracitanceVector.html#ElectricalCapacitanceVector">ElectricalCapacitanceVector result = new ElectricalCapacitanceVector(this.data, displayUnit.getStandardUnit());
460         result.setDisplayUnit(displayUnit);
461         return result;
462     }
463 
464     /**
465      * Return the current vector as a electricalcharge vector.
466      * @return ElectricalChargeVector; the current vector as a electricalcharge vector
467      */
468     public final ElectricalChargeVector asElectricalCharge()
469     {
470         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalChargeUnit.BASE.getSiDimensions())),
471                 UnitRuntimeException.class, "cannot cast %s to ElectricalChargeVector", this.toString());
472         return new ElectricalChargeVector(this.data, ElectricalChargeUnit.SI);
473     }
474 
475     /**
476      * Return the current vector as a electricalcharge vector, and provide a display unit.
477      * @param displayUnit the unit in which the value will be displayed
478      * @return ElectricalChargeVector; the current vector as a electricalcharge vector
479      */
480     public final ElectricalChargeVector asElectricalCharge(final ElectricalChargeUnit displayUnit)
481     {
482         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalChargeUnit.BASE.getSiDimensions())),
483                 UnitRuntimeException.class, "cannot cast %s to ElectricalChargeVector", this.toString());
484         ElectricalChargeVectoralChargeVector.html#ElectricalChargeVector">ElectricalChargeVector result = new ElectricalChargeVector(this.data, displayUnit.getStandardUnit());
485         result.setDisplayUnit(displayUnit);
486         return result;
487     }
488 
489     /**
490      * Return the current vector as a electricalconductance vector.
491      * @return ElectricalConductanceVector; the current vector as a electricalconductance vector
492      */
493     public final ElectricalConductanceVector asElectricalConductance()
494     {
495         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalConductanceUnit.BASE.getSiDimensions())),
496                 UnitRuntimeException.class, "cannot cast %s to ElectricalConductanceVector", this.toString());
497         return new ElectricalConductanceVector(this.data, ElectricalConductanceUnit.SI);
498     }
499 
500     /**
501      * Return the current vector as a electricalconductance vector, and provide a display unit.
502      * @param displayUnit the unit in which the value will be displayed
503      * @return ElectricalConductanceVector; the current vector as a electricalconductance vector
504      */
505     public final ElectricalConductanceVector asElectricalConductance(final ElectricalConductanceUnit displayUnit)
506     {
507         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalConductanceUnit.BASE.getSiDimensions())),
508                 UnitRuntimeException.class, "cannot cast %s to ElectricalConductanceVector", this.toString());
509         ElectricalConductanceVectorductanceVector.html#ElectricalConductanceVector">ElectricalConductanceVector result = new ElectricalConductanceVector(this.data, displayUnit.getStandardUnit());
510         result.setDisplayUnit(displayUnit);
511         return result;
512     }
513 
514     /**
515      * Return the current vector as a electricalcurrent vector.
516      * @return ElectricalCurrentVector; the current vector as a electricalcurrent vector
517      */
518     public final ElectricalCurrentVector asElectricalCurrent()
519     {
520         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalCurrentUnit.BASE.getSiDimensions())),
521                 UnitRuntimeException.class, "cannot cast %s to ElectricalCurrentVector", this.toString());
522         return new ElectricalCurrentVector(this.data, ElectricalCurrentUnit.SI);
523     }
524 
525     /**
526      * Return the current vector as a electricalcurrent vector, and provide a display unit.
527      * @param displayUnit the unit in which the value will be displayed
528      * @return ElectricalCurrentVector; the current vector as a electricalcurrent vector
529      */
530     public final ElectricalCurrentVector asElectricalCurrent(final ElectricalCurrentUnit displayUnit)
531     {
532         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalCurrentUnit.BASE.getSiDimensions())),
533                 UnitRuntimeException.class, "cannot cast %s to ElectricalCurrentVector", this.toString());
534         ElectricalCurrentVectorlCurrentVector.html#ElectricalCurrentVector">ElectricalCurrentVector result = new ElectricalCurrentVector(this.data, displayUnit.getStandardUnit());
535         result.setDisplayUnit(displayUnit);
536         return result;
537     }
538 
539     /**
540      * Return the current vector as a electricalinductance vector.
541      * @return ElectricalInductanceVector; the current vector as a electricalinductance vector
542      */
543     public final ElectricalInductanceVector asElectricalInductance()
544     {
545         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalInductanceUnit.BASE.getSiDimensions())),
546                 UnitRuntimeException.class, "cannot cast %s to ElectricalInductanceVector", this.toString());
547         return new ElectricalInductanceVector(this.data, ElectricalInductanceUnit.SI);
548     }
549 
550     /**
551      * Return the current vector as a electricalinductance vector, and provide a display unit.
552      * @param displayUnit the unit in which the value will be displayed
553      * @return ElectricalInductanceVector; the current vector as a electricalinductance vector
554      */
555     public final ElectricalInductanceVector asElectricalInductance(final ElectricalInductanceUnit displayUnit)
556     {
557         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalInductanceUnit.BASE.getSiDimensions())),
558                 UnitRuntimeException.class, "cannot cast %s to ElectricalInductanceVector", this.toString());
559         ElectricalInductanceVectorductanceVector.html#ElectricalInductanceVector">ElectricalInductanceVector result = new ElectricalInductanceVector(this.data, displayUnit.getStandardUnit());
560         result.setDisplayUnit(displayUnit);
561         return result;
562     }
563 
564     /**
565      * Return the current vector as a electricalpotential vector.
566      * @return ElectricalPotentialVector; the current vector as a electricalpotential vector
567      */
568     public final ElectricalPotentialVector asElectricalPotential()
569     {
570         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalPotentialUnit.BASE.getSiDimensions())),
571                 UnitRuntimeException.class, "cannot cast %s to ElectricalPotentialVector", this.toString());
572         return new ElectricalPotentialVector(this.data, ElectricalPotentialUnit.SI);
573     }
574 
575     /**
576      * Return the current vector as a electricalpotential vector, and provide a display unit.
577      * @param displayUnit the unit in which the value will be displayed
578      * @return ElectricalPotentialVector; the current vector as a electricalpotential vector
579      */
580     public final ElectricalPotentialVector asElectricalPotential(final ElectricalPotentialUnit displayUnit)
581     {
582         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalPotentialUnit.BASE.getSiDimensions())),
583                 UnitRuntimeException.class, "cannot cast %s to ElectricalPotentialVector", this.toString());
584         ElectricalPotentialVectorotentialVector.html#ElectricalPotentialVector">ElectricalPotentialVector result = new ElectricalPotentialVector(this.data, displayUnit.getStandardUnit());
585         result.setDisplayUnit(displayUnit);
586         return result;
587     }
588 
589     /**
590      * Return the current vector as a electricalresistance vector.
591      * @return ElectricalResistanceVector; the current vector as a electricalresistance vector
592      */
593     public final ElectricalResistanceVector asElectricalResistance()
594     {
595         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalResistanceUnit.BASE.getSiDimensions())),
596                 UnitRuntimeException.class, "cannot cast %s to ElectricalResistanceVector", this.toString());
597         return new ElectricalResistanceVector(this.data, ElectricalResistanceUnit.SI);
598     }
599 
600     /**
601      * Return the current vector as a electricalresistance vector, and provide a display unit.
602      * @param displayUnit the unit in which the value will be displayed
603      * @return ElectricalResistanceVector; the current vector as a electricalresistance vector
604      */
605     public final ElectricalResistanceVector asElectricalResistance(final ElectricalResistanceUnit displayUnit)
606     {
607         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalResistanceUnit.BASE.getSiDimensions())),
608                 UnitRuntimeException.class, "cannot cast %s to ElectricalResistanceVector", this.toString());
609         ElectricalResistanceVectorsistanceVector.html#ElectricalResistanceVector">ElectricalResistanceVector result = new ElectricalResistanceVector(this.data, displayUnit.getStandardUnit());
610         result.setDisplayUnit(displayUnit);
611         return result;
612     }
613 
614     /**
615      * Return the current vector as a energy vector.
616      * @return EnergyVector; the current vector as a energy vector
617      */
618     public final EnergyVector asEnergy()
619     {
620         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(EnergyUnit.BASE.getSiDimensions())),
621                 UnitRuntimeException.class, "cannot cast %s to EnergyVector", this.toString());
622         return new EnergyVector(this.data, EnergyUnit.SI);
623     }
624 
625     /**
626      * Return the current vector as a energy vector, and provide a display unit.
627      * @param displayUnit the unit in which the value will be displayed
628      * @return EnergyVector; the current vector as a energy vector
629      */
630     public final EnergyVector asEnergy(final EnergyUnit displayUnit)
631     {
632         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(EnergyUnit.BASE.getSiDimensions())),
633                 UnitRuntimeException.class, "cannot cast %s to EnergyVector", this.toString());
634         EnergyVectorr/EnergyVector.html#EnergyVector">EnergyVector result = new EnergyVector(this.data, displayUnit.getStandardUnit());
635         result.setDisplayUnit(displayUnit);
636         return result;
637     }
638 
639     /**
640      * Return the current vector as a equivalentdose vector.
641      * @return EquivalentDoseVector; the current vector as a equivalentdose vector
642      */
643     public final EquivalentDoseVector asEquivalentDose()
644     {
645         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(EquivalentDoseUnit.BASE.getSiDimensions())),
646                 UnitRuntimeException.class, "cannot cast %s to EquivalentDoseVector", this.toString());
647         return new EquivalentDoseVector(this.data, EquivalentDoseUnit.SI);
648     }
649 
650     /**
651      * Return the current vector as a equivalentdose vector, and provide a display unit.
652      * @param displayUnit the unit in which the value will be displayed
653      * @return EquivalentDoseVector; the current vector as a equivalentdose vector
654      */
655     public final EquivalentDoseVector asEquivalentDose(final EquivalentDoseUnit displayUnit)
656     {
657         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(EquivalentDoseUnit.BASE.getSiDimensions())),
658                 UnitRuntimeException.class, "cannot cast %s to EquivalentDoseVector", this.toString());
659         EquivalentDoseVectorlentDoseVector.html#EquivalentDoseVector">EquivalentDoseVector result = new EquivalentDoseVector(this.data, displayUnit.getStandardUnit());
660         result.setDisplayUnit(displayUnit);
661         return result;
662     }
663 
664     /**
665      * Return the current vector as a flowmass vector.
666      * @return FlowMassVector; the current vector as a flowmass vector
667      */
668     public final FlowMassVector asFlowMass()
669     {
670         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FlowMassUnit.BASE.getSiDimensions())),
671                 UnitRuntimeException.class, "cannot cast %s to FlowMassVector", this.toString());
672         return new FlowMassVector(this.data, FlowMassUnit.SI);
673     }
674 
675     /**
676      * Return the current vector as a flowmass vector, and provide a display unit.
677      * @param displayUnit the unit in which the value will be displayed
678      * @return FlowMassVector; the current vector as a flowmass vector
679      */
680     public final FlowMassVector asFlowMass(final FlowMassUnit displayUnit)
681     {
682         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FlowMassUnit.BASE.getSiDimensions())),
683                 UnitRuntimeException.class, "cannot cast %s to FlowMassVector", this.toString());
684         FlowMassVectorFlowMassVector.html#FlowMassVector">FlowMassVector result = new FlowMassVector(this.data, displayUnit.getStandardUnit());
685         result.setDisplayUnit(displayUnit);
686         return result;
687     }
688 
689     /**
690      * Return the current vector as a flowvolume vector.
691      * @return FlowVolumeVector; the current vector as a flowvolume vector
692      */
693     public final FlowVolumeVector asFlowVolume()
694     {
695         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FlowVolumeUnit.BASE.getSiDimensions())),
696                 UnitRuntimeException.class, "cannot cast %s to FlowVolumeVector", this.toString());
697         return new FlowVolumeVector(this.data, FlowVolumeUnit.SI);
698     }
699 
700     /**
701      * Return the current vector as a flowvolume vector, and provide a display unit.
702      * @param displayUnit the unit in which the value will be displayed
703      * @return FlowVolumeVector; the current vector as a flowvolume vector
704      */
705     public final FlowVolumeVector asFlowVolume(final FlowVolumeUnit displayUnit)
706     {
707         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FlowVolumeUnit.BASE.getSiDimensions())),
708                 UnitRuntimeException.class, "cannot cast %s to FlowVolumeVector", this.toString());
709         FlowVolumeVectorowVolumeVector.html#FlowVolumeVector">FlowVolumeVector result = new FlowVolumeVector(this.data, displayUnit.getStandardUnit());
710         result.setDisplayUnit(displayUnit);
711         return result;
712     }
713 
714     /**
715      * Return the current vector as a force vector.
716      * @return ForceVector; the current vector as a force vector
717      */
718     public final ForceVector asForce()
719     {
720         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ForceUnit.BASE.getSiDimensions())),
721                 UnitRuntimeException.class, "cannot cast %s to ForceVector", this.toString());
722         return new ForceVector(this.data, ForceUnit.SI);
723     }
724 
725     /**
726      * Return the current vector as a force vector, and provide a display unit.
727      * @param displayUnit the unit in which the value will be displayed
728      * @return ForceVector; the current vector as a force vector
729      */
730     public final ForceVector asForce(final ForceUnit displayUnit)
731     {
732         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ForceUnit.BASE.getSiDimensions())),
733                 UnitRuntimeException.class, "cannot cast %s to ForceVector", this.toString());
734         ForceVectoror/ForceVector.html#ForceVector">ForceVector result = new ForceVector(this.data, displayUnit.getStandardUnit());
735         result.setDisplayUnit(displayUnit);
736         return result;
737     }
738 
739     /**
740      * Return the current vector as a frequency vector.
741      * @return FrequencyVector; the current vector as a frequency vector
742      */
743     public final FrequencyVector asFrequency()
744     {
745         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FrequencyUnit.BASE.getSiDimensions())),
746                 UnitRuntimeException.class, "cannot cast %s to FrequencyVector", this.toString());
747         return new FrequencyVector(this.data, FrequencyUnit.SI);
748     }
749 
750     /**
751      * Return the current vector as a frequency vector, and provide a display unit.
752      * @param displayUnit the unit in which the value will be displayed
753      * @return FrequencyVector; the current vector as a frequency vector
754      */
755     public final FrequencyVector asFrequency(final FrequencyUnit displayUnit)
756     {
757         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FrequencyUnit.BASE.getSiDimensions())),
758                 UnitRuntimeException.class, "cannot cast %s to FrequencyVector", this.toString());
759         FrequencyVectorrequencyVector.html#FrequencyVector">FrequencyVector result = new FrequencyVector(this.data, displayUnit.getStandardUnit());
760         result.setDisplayUnit(displayUnit);
761         return result;
762     }
763 
764     /**
765      * Return the current vector as a illuminance vector.
766      * @return IlluminanceVector; the current vector as a illuminance vector
767      */
768     public final IlluminanceVector asIlluminance()
769     {
770         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(IlluminanceUnit.BASE.getSiDimensions())),
771                 UnitRuntimeException.class, "cannot cast %s to IlluminanceVector", this.toString());
772         return new IlluminanceVector(this.data, IlluminanceUnit.SI);
773     }
774 
775     /**
776      * Return the current vector as a illuminance vector, and provide a display unit.
777      * @param displayUnit the unit in which the value will be displayed
778      * @return IlluminanceVector; the current vector as a illuminance vector
779      */
780     public final IlluminanceVector asIlluminance(final IlluminanceUnit displayUnit)
781     {
782         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(IlluminanceUnit.BASE.getSiDimensions())),
783                 UnitRuntimeException.class, "cannot cast %s to IlluminanceVector", this.toString());
784         IlluminanceVectoruminanceVector.html#IlluminanceVector">IlluminanceVector result = new IlluminanceVector(this.data, displayUnit.getStandardUnit());
785         result.setDisplayUnit(displayUnit);
786         return result;
787     }
788 
789     /**
790      * Return the current vector as a lineardensity vector.
791      * @return LinearDensityVector; the current vector as a lineardensity vector
792      */
793     public final LinearDensityVector asLinearDensity()
794     {
795         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LinearDensityUnit.BASE.getSiDimensions())),
796                 UnitRuntimeException.class, "cannot cast %s to LinearDensityVector", this.toString());
797         return new LinearDensityVector(this.data, LinearDensityUnit.SI);
798     }
799 
800     /**
801      * Return the current vector as a lineardensity vector, and provide a display unit.
802      * @param displayUnit the unit in which the value will be displayed
803      * @return LinearDensityVector; the current vector as a lineardensity vector
804      */
805     public final LinearDensityVector asLinearDensity(final LinearDensityUnit displayUnit)
806     {
807         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LinearDensityUnit.BASE.getSiDimensions())),
808                 UnitRuntimeException.class, "cannot cast %s to LinearDensityVector", this.toString());
809         LinearDensityVectorrDensityVector.html#LinearDensityVector">LinearDensityVector result = new LinearDensityVector(this.data, displayUnit.getStandardUnit());
810         result.setDisplayUnit(displayUnit);
811         return result;
812     }
813 
814     /**
815      * Return the current vector as a luminousflux vector.
816      * @return LuminousFluxVector; the current vector as a luminousflux vector
817      */
818     public final LuminousFluxVector asLuminousFlux()
819     {
820         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LuminousFluxUnit.BASE.getSiDimensions())),
821                 UnitRuntimeException.class, "cannot cast %s to LuminousFluxVector", this.toString());
822         return new LuminousFluxVector(this.data, LuminousFluxUnit.SI);
823     }
824 
825     /**
826      * Return the current vector as a luminousflux vector, and provide a display unit.
827      * @param displayUnit the unit in which the value will be displayed
828      * @return LuminousFluxVector; the current vector as a luminousflux vector
829      */
830     public final LuminousFluxVector asLuminousFlux(final LuminousFluxUnit displayUnit)
831     {
832         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LuminousFluxUnit.BASE.getSiDimensions())),
833                 UnitRuntimeException.class, "cannot cast %s to LuminousFluxVector", this.toString());
834         LuminousFluxVectornousFluxVector.html#LuminousFluxVector">LuminousFluxVector result = new LuminousFluxVector(this.data, displayUnit.getStandardUnit());
835         result.setDisplayUnit(displayUnit);
836         return result;
837     }
838 
839     /**
840      * Return the current vector as a luminousintensity vector.
841      * @return LuminousIntensityVector; the current vector as a luminousintensity vector
842      */
843     public final LuminousIntensityVector asLuminousIntensity()
844     {
845         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LuminousIntensityUnit.BASE.getSiDimensions())),
846                 UnitRuntimeException.class, "cannot cast %s to LuminousIntensityVector", this.toString());
847         return new LuminousIntensityVector(this.data, LuminousIntensityUnit.SI);
848     }
849 
850     /**
851      * Return the current vector as a luminousintensity vector, and provide a display unit.
852      * @param displayUnit the unit in which the value will be displayed
853      * @return LuminousIntensityVector; the current vector as a luminousintensity vector
854      */
855     public final LuminousIntensityVector asLuminousIntensity(final LuminousIntensityUnit displayUnit)
856     {
857         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LuminousIntensityUnit.BASE.getSiDimensions())),
858                 UnitRuntimeException.class, "cannot cast %s to LuminousIntensityVector", this.toString());
859         LuminousIntensityVectorntensityVector.html#LuminousIntensityVector">LuminousIntensityVector result = new LuminousIntensityVector(this.data, displayUnit.getStandardUnit());
860         result.setDisplayUnit(displayUnit);
861         return result;
862     }
863 
864     /**
865      * Return the current vector as a magneticfluxdensity vector.
866      * @return MagneticFluxDensityVector; the current vector as a magneticfluxdensity vector
867      */
868     public final MagneticFluxDensityVector asMagneticFluxDensity()
869     {
870         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MagneticFluxDensityUnit.BASE.getSiDimensions())),
871                 UnitRuntimeException.class, "cannot cast %s to MagneticFluxDensityVector", this.toString());
872         return new MagneticFluxDensityVector(this.data, MagneticFluxDensityUnit.SI);
873     }
874 
875     /**
876      * Return the current vector as a magneticfluxdensity vector, and provide a display unit.
877      * @param displayUnit the unit in which the value will be displayed
878      * @return MagneticFluxDensityVector; the current vector as a magneticfluxdensity vector
879      */
880     public final MagneticFluxDensityVector asMagneticFluxDensity(final MagneticFluxDensityUnit displayUnit)
881     {
882         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MagneticFluxDensityUnit.BASE.getSiDimensions())),
883                 UnitRuntimeException.class, "cannot cast %s to MagneticFluxDensityVector", this.toString());
884         MagneticFluxDensityVectorxDensityVector.html#MagneticFluxDensityVector">MagneticFluxDensityVector result = new MagneticFluxDensityVector(this.data, displayUnit.getStandardUnit());
885         result.setDisplayUnit(displayUnit);
886         return result;
887     }
888 
889     /**
890      * Return the current vector as a magneticflux vector.
891      * @return MagneticFluxVector; the current vector as a magneticflux vector
892      */
893     public final MagneticFluxVector asMagneticFlux()
894     {
895         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MagneticFluxUnit.BASE.getSiDimensions())),
896                 UnitRuntimeException.class, "cannot cast %s to MagneticFluxVector", this.toString());
897         return new MagneticFluxVector(this.data, MagneticFluxUnit.SI);
898     }
899 
900     /**
901      * Return the current vector as a magneticflux vector, and provide a display unit.
902      * @param displayUnit the unit in which the value will be displayed
903      * @return MagneticFluxVector; the current vector as a magneticflux vector
904      */
905     public final MagneticFluxVector asMagneticFlux(final MagneticFluxUnit displayUnit)
906     {
907         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MagneticFluxUnit.BASE.getSiDimensions())),
908                 UnitRuntimeException.class, "cannot cast %s to MagneticFluxVector", this.toString());
909         MagneticFluxVectoreticFluxVector.html#MagneticFluxVector">MagneticFluxVector result = new MagneticFluxVector(this.data, displayUnit.getStandardUnit());
910         result.setDisplayUnit(displayUnit);
911         return result;
912     }
913 
914     /**
915      * Return the current vector as a mass vector.
916      * @return MassVector; the current vector as a mass vector
917      */
918     public final MassVector asMass()
919     {
920         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MassUnit.BASE.getSiDimensions())),
921                 UnitRuntimeException.class, "cannot cast %s to MassVector", this.toString());
922         return new MassVector(this.data, MassUnit.SI);
923     }
924 
925     /**
926      * Return the current vector as a mass vector, and provide a display unit.
927      * @param displayUnit the unit in which the value will be displayed
928      * @return MassVector; the current vector as a mass vector
929      */
930     public final MassVector asMass(final MassUnit displayUnit)
931     {
932         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MassUnit.BASE.getSiDimensions())),
933                 UnitRuntimeException.class, "cannot cast %s to MassVector", this.toString());
934         MassVectortor/MassVector.html#MassVector">MassVector result = new MassVector(this.data, displayUnit.getStandardUnit());
935         result.setDisplayUnit(displayUnit);
936         return result;
937     }
938 
939     /**
940      * Return the current vector as a power vector.
941      * @return PowerVector; the current vector as a power vector
942      */
943     public final PowerVector asPower()
944     {
945         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(PowerUnit.BASE.getSiDimensions())),
946                 UnitRuntimeException.class, "cannot cast %s to PowerVector", this.toString());
947         return new PowerVector(this.data, PowerUnit.SI);
948     }
949 
950     /**
951      * Return the current vector as a power vector, and provide a display unit.
952      * @param displayUnit the unit in which the value will be displayed
953      * @return PowerVector; the current vector as a power vector
954      */
955     public final PowerVector asPower(final PowerUnit displayUnit)
956     {
957         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(PowerUnit.BASE.getSiDimensions())),
958                 UnitRuntimeException.class, "cannot cast %s to PowerVector", this.toString());
959         PowerVectoror/PowerVector.html#PowerVector">PowerVector result = new PowerVector(this.data, displayUnit.getStandardUnit());
960         result.setDisplayUnit(displayUnit);
961         return result;
962     }
963 
964     /**
965      * Return the current vector as a pressure vector.
966      * @return PressureVector; the current vector as a pressure vector
967      */
968     public final PressureVector asPressure()
969     {
970         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(PressureUnit.BASE.getSiDimensions())),
971                 UnitRuntimeException.class, "cannot cast %s to PressureVector", this.toString());
972         return new PressureVector(this.data, PressureUnit.SI);
973     }
974 
975     /**
976      * Return the current vector as a pressure vector, and provide a display unit.
977      * @param displayUnit the unit in which the value will be displayed
978      * @return PressureVector; the current vector as a pressure vector
979      */
980     public final PressureVector asPressure(final PressureUnit displayUnit)
981     {
982         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(PressureUnit.BASE.getSiDimensions())),
983                 UnitRuntimeException.class, "cannot cast %s to PressureVector", this.toString());
984         PressureVectorPressureVector.html#PressureVector">PressureVector result = new PressureVector(this.data, displayUnit.getStandardUnit());
985         result.setDisplayUnit(displayUnit);
986         return result;
987     }
988 
989     /**
990      * Return the current vector as a radioactivity vector.
991      * @return RadioActivityVector; the current vector as a radioactivity vector
992      */
993     public final RadioActivityVector asRadioActivity()
994     {
995         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(RadioActivityUnit.BASE.getSiDimensions())),
996                 UnitRuntimeException.class, "cannot cast %s to RadioActivityVector", this.toString());
997         return new RadioActivityVector(this.data, RadioActivityUnit.SI);
998     }
999 
1000     /**
1001      * Return the current vector as a radioactivity vector, and provide a display unit.
1002      * @param displayUnit the unit in which the value will be displayed
1003      * @return RadioActivityVector; the current vector as a radioactivity vector
1004      */
1005     public final RadioActivityVector asRadioActivity(final RadioActivityUnit displayUnit)
1006     {
1007         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(RadioActivityUnit.BASE.getSiDimensions())),
1008                 UnitRuntimeException.class, "cannot cast %s to RadioActivityVector", this.toString());
1009         RadioActivityVectorActivityVector.html#RadioActivityVector">RadioActivityVector result = new RadioActivityVector(this.data, displayUnit.getStandardUnit());
1010         result.setDisplayUnit(displayUnit);
1011         return result;
1012     }
1013 
1014     /**
1015      * Return the current vector as a solidangle vector.
1016      * @return SolidAngleVector; the current vector as a solidangle vector
1017      */
1018     public final SolidAngleVector asSolidAngle()
1019     {
1020         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(SolidAngleUnit.BASE.getSiDimensions())),
1021                 UnitRuntimeException.class, "cannot cast %s to SolidAngleVector", this.toString());
1022         return new SolidAngleVector(this.data, SolidAngleUnit.SI);
1023     }
1024 
1025     /**
1026      * Return the current vector as a solidangle vector, and provide a display unit.
1027      * @param displayUnit the unit in which the value will be displayed
1028      * @return SolidAngleVector; the current vector as a solidangle vector
1029      */
1030     public final SolidAngleVector asSolidAngle(final SolidAngleUnit displayUnit)
1031     {
1032         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(SolidAngleUnit.BASE.getSiDimensions())),
1033                 UnitRuntimeException.class, "cannot cast %s to SolidAngleVector", this.toString());
1034         SolidAngleVectorlidAngleVector.html#SolidAngleVector">SolidAngleVector result = new SolidAngleVector(this.data, displayUnit.getStandardUnit());
1035         result.setDisplayUnit(displayUnit);
1036         return result;
1037     }
1038 
1039     /**
1040      * Return the current vector as a speed vector.
1041      * @return SpeedVector; the current vector as a speed vector
1042      */
1043     public final SpeedVector asSpeed()
1044     {
1045         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(SpeedUnit.BASE.getSiDimensions())),
1046                 UnitRuntimeException.class, "cannot cast %s to SpeedVector", this.toString());
1047         return new SpeedVector(this.data, SpeedUnit.SI);
1048     }
1049 
1050     /**
1051      * Return the current vector as a speed vector, and provide a display unit.
1052      * @param displayUnit the unit in which the value will be displayed
1053      * @return SpeedVector; the current vector as a speed vector
1054      */
1055     public final SpeedVector asSpeed(final SpeedUnit displayUnit)
1056     {
1057         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(SpeedUnit.BASE.getSiDimensions())),
1058                 UnitRuntimeException.class, "cannot cast %s to SpeedVector", this.toString());
1059         SpeedVectoror/SpeedVector.html#SpeedVector">SpeedVector result = new SpeedVector(this.data, displayUnit.getStandardUnit());
1060         result.setDisplayUnit(displayUnit);
1061         return result;
1062     }
1063 
1064     /**
1065      * Return the current vector as a torque vector.
1066      * @return TorqueVector; the current vector as a torque vector
1067      */
1068     public final TorqueVector asTorque()
1069     {
1070         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(TorqueUnit.BASE.getSiDimensions())),
1071                 UnitRuntimeException.class, "cannot cast %s to TorqueVector", this.toString());
1072         return new TorqueVector(this.data, TorqueUnit.SI);
1073     }
1074 
1075     /**
1076      * Return the current vector as a torque vector, and provide a display unit.
1077      * @param displayUnit the unit in which the value will be displayed
1078      * @return TorqueVector; the current vector as a torque vector
1079      */
1080     public final TorqueVector asTorque(final TorqueUnit displayUnit)
1081     {
1082         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(TorqueUnit.BASE.getSiDimensions())),
1083                 UnitRuntimeException.class, "cannot cast %s to TorqueVector", this.toString());
1084         TorqueVectorr/TorqueVector.html#TorqueVector">TorqueVector result = new TorqueVector(this.data, displayUnit.getStandardUnit());
1085         result.setDisplayUnit(displayUnit);
1086         return result;
1087     }
1088 
1089     /**
1090      * Return the current vector as a volume vector.
1091      * @return VolumeVector; the current vector as a volume vector
1092      */
1093     public final VolumeVector asVolume()
1094     {
1095         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(VolumeUnit.BASE.getSiDimensions())),
1096                 UnitRuntimeException.class, "cannot cast %s to VolumeVector", this.toString());
1097         return new VolumeVector(this.data, VolumeUnit.SI);
1098     }
1099 
1100     /**
1101      * Return the current vector as a volume vector, and provide a display unit.
1102      * @param displayUnit the unit in which the value will be displayed
1103      * @return VolumeVector; the current vector as a volume vector
1104      */
1105     public final VolumeVector asVolume(final VolumeUnit displayUnit)
1106     {
1107         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(VolumeUnit.BASE.getSiDimensions())),
1108                 UnitRuntimeException.class, "cannot cast %s to VolumeVector", this.toString());
1109         VolumeVectorr/VolumeVector.html#VolumeVector">VolumeVector result = new VolumeVector(this.data, displayUnit.getStandardUnit());
1110         result.setDisplayUnit(displayUnit);
1111         return result;
1112     }
1113 
1114     /**
1115      * Return the current vector as a angle vector.
1116      * @return AngleVector; the current vector as a angle vector
1117      */
1118     public final AngleVector asAngle()
1119     {
1120         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AngleUnit.BASE.getSiDimensions())),
1121                 UnitRuntimeException.class, "cannot cast %s to AngleVector", this.toString());
1122         return new AngleVector(this.data, AngleUnit.SI);
1123     }
1124 
1125     /**
1126      * Return the current vector as a angle vector, and provide a display unit.
1127      * @param displayUnit the unit in which the value will be displayed
1128      * @return AngleVector; the current vector as a angle vector
1129      */
1130     public final AngleVector asAngle(final AngleUnit displayUnit)
1131     {
1132         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AngleUnit.BASE.getSiDimensions())),
1133                 UnitRuntimeException.class, "cannot cast %s to AngleVector", this.toString());
1134         AngleVectoror/AngleVector.html#AngleVector">AngleVector result = new AngleVector(this.data, displayUnit.getStandardUnit());
1135         result.setDisplayUnit(displayUnit);
1136         return result;
1137     }
1138 
1139     /**
1140      * Return the current vector as a length vector.
1141      * @return LengthVector; the current vector as a length vector
1142      */
1143     public final LengthVector asLength()
1144     {
1145         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LengthUnit.BASE.getSiDimensions())),
1146                 UnitRuntimeException.class, "cannot cast %s to LengthVector", this.toString());
1147         return new LengthVector(this.data, LengthUnit.SI);
1148     }
1149 
1150     /**
1151      * Return the current vector as a length vector, and provide a display unit.
1152      * @param displayUnit the unit in which the value will be displayed
1153      * @return LengthVector; the current vector as a length vector
1154      */
1155     public final LengthVector asLength(final LengthUnit displayUnit)
1156     {
1157         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LengthUnit.BASE.getSiDimensions())),
1158                 UnitRuntimeException.class, "cannot cast %s to LengthVector", this.toString());
1159         LengthVectorr/LengthVector.html#LengthVector">LengthVector result = new LengthVector(this.data, displayUnit.getStandardUnit());
1160         result.setDisplayUnit(displayUnit);
1161         return result;
1162     }
1163 
1164     /**
1165      * Return the current vector as a temperature vector.
1166      * @return TemperatureVector; the current vector as a temperature vector
1167      */
1168     public final TemperatureVector asTemperature()
1169     {
1170         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(TemperatureUnit.BASE.getSiDimensions())),
1171                 UnitRuntimeException.class, "cannot cast %s to TemperatureVector", this.toString());
1172         return new TemperatureVector(this.data, TemperatureUnit.SI);
1173     }
1174 
1175     /**
1176      * Return the current vector as a temperature vector, and provide a display unit.
1177      * @param displayUnit the unit in which the value will be displayed
1178      * @return TemperatureVector; the current vector as a temperature vector
1179      */
1180     public final TemperatureVector asTemperature(final TemperatureUnit displayUnit)
1181     {
1182         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(TemperatureUnit.BASE.getSiDimensions())),
1183                 UnitRuntimeException.class, "cannot cast %s to TemperatureVector", this.toString());
1184         TemperatureVectorperatureVector.html#TemperatureVector">TemperatureVector result = new TemperatureVector(this.data, displayUnit.getStandardUnit());
1185         result.setDisplayUnit(displayUnit);
1186         return result;
1187     }
1188 
1189     /**
1190      * Return the current vector as a duration vector.
1191      * @return DurationVector; the current vector as a duration vector
1192      */
1193     public final DurationVector asDuration()
1194     {
1195         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DurationUnit.BASE.getSiDimensions())),
1196                 UnitRuntimeException.class, "cannot cast %s to DurationVector", this.toString());
1197         return new DurationVector(this.data, DurationUnit.SI);
1198     }
1199 
1200     /**
1201      * Return the current vector as a duration vector, and provide a display unit.
1202      * @param displayUnit the unit in which the value will be displayed
1203      * @return DurationVector; the current vector as a duration vector
1204      */
1205     public final DurationVector asDuration(final DurationUnit displayUnit)
1206     {
1207         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DurationUnit.BASE.getSiDimensions())),
1208                 UnitRuntimeException.class, "cannot cast %s to DurationVector", this.toString());
1209         DurationVectorDurationVector.html#DurationVector">DurationVector result = new DurationVector(this.data, displayUnit.getStandardUnit());
1210         result.setDisplayUnit(displayUnit);
1211         return result;
1212     }
1213 
1214 }