1 package org.djunits.value.vdouble.scalar;
2
3 import java.lang.reflect.Constructor;
4 import java.lang.reflect.InvocationTargetException;
5 import java.util.HashMap;
6 import java.util.Locale;
7 import java.util.Map;
8
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.AngularAccelerationUnit;
14 import org.djunits.unit.AngularVelocityUnit;
15 import org.djunits.unit.AreaUnit;
16 import org.djunits.unit.CatalyticActivityUnit;
17 import org.djunits.unit.DensityUnit;
18 import org.djunits.unit.DimensionlessUnit;
19 import org.djunits.unit.DurationUnit;
20 import org.djunits.unit.ElectricalCapacitanceUnit;
21 import org.djunits.unit.ElectricalChargeUnit;
22 import org.djunits.unit.ElectricalConductanceUnit;
23 import org.djunits.unit.ElectricalCurrentUnit;
24 import org.djunits.unit.ElectricalInductanceUnit;
25 import org.djunits.unit.ElectricalPotentialUnit;
26 import org.djunits.unit.ElectricalResistanceUnit;
27 import org.djunits.unit.EnergyUnit;
28 import org.djunits.unit.EquivalentDoseUnit;
29 import org.djunits.unit.FlowMassUnit;
30 import org.djunits.unit.FlowVolumeUnit;
31 import org.djunits.unit.ForceUnit;
32 import org.djunits.unit.FrequencyUnit;
33 import org.djunits.unit.IlluminanceUnit;
34 import org.djunits.unit.LengthUnit;
35 import org.djunits.unit.LinearDensityUnit;
36 import org.djunits.unit.LuminousFluxUnit;
37 import org.djunits.unit.LuminousIntensityUnit;
38 import org.djunits.unit.MagneticFluxDensityUnit;
39 import org.djunits.unit.MagneticFluxUnit;
40 import org.djunits.unit.MassUnit;
41 import org.djunits.unit.MomentumUnit;
42 import org.djunits.unit.PowerUnit;
43 import org.djunits.unit.PressureUnit;
44 import org.djunits.unit.RadioActivityUnit;
45 import org.djunits.unit.SIUnit;
46 import org.djunits.unit.SolidAngleUnit;
47 import org.djunits.unit.SpeedUnit;
48 import org.djunits.unit.TemperatureUnit;
49 import org.djunits.unit.TorqueUnit;
50 import org.djunits.unit.Unit;
51 import org.djunits.unit.VolumeUnit;
52 import org.djunits.unit.si.SIDimensions;
53 import org.djunits.unit.util.UnitRuntimeException;
54 import org.djunits.value.vdouble.scalar.base.DoubleScalar;
55 import org.djunits.value.vdouble.scalar.base.DoubleScalarRel;
56 import org.djutils.base.NumberParser;
57 import org.djutils.exceptions.Throw;
58
59 import jakarta.annotation.Generated;
60
61
62
63
64
65
66
67
68
69
70
71 @Generated(value = "org.djunits.generator.GenerateDJUNIT", date = "2025-09-06T15:16:28.380798Z")
72 public class SIScalar extends DoubleScalarRel<SIUnit, SIScalar>
73 {
74
75 private static final long serialVersionUID = 20150901L;
76
77
78
79
80
81
82 public SIScalar(final double value, final SIUnit unit)
83 {
84 super(value, unit);
85 }
86
87
88
89
90
91 public SIScalar(final SIScalar value)
92 {
93 super(value);
94 }
95
96 @Override
97 public final SIScalar instantiateRel(final double value, final SIUnit unit)
98 {
99 return new SIScalar(value, unit);
100 }
101
102
103
104
105
106
107
108 public static final SIScalar ofSI(final double value, final SIUnit unit)
109 {
110 return new SIScalar(value, unit);
111 }
112
113
114
115
116
117
118
119
120 public static SIScalar interpolate(final SIScalar zero, final SIScalar one, final double ratio)
121 {
122 return new SIScalar(zero.getInUnit() * (1 - ratio) + one.getInUnit(zero.getDisplayUnit()) * ratio,
123 zero.getDisplayUnit());
124 }
125
126
127
128
129
130
131
132 public static SIScalar max(final SIScalar r1, final SIScalar r2)
133 {
134 return r1.gt(r2) ? r1 : r2;
135 }
136
137
138
139
140
141
142
143
144 public static SIScalar max(final SIScalar r1, final SIScalar r2, final SIScalar... rn)
145 {
146 SIScalar maxr = r1.gt(r2) ? r1 : r2;
147 for (SIScalar r : rn)
148 {
149 if (r.gt(maxr))
150 {
151 maxr = r;
152 }
153 }
154 return maxr;
155 }
156
157
158
159
160
161
162
163 public static SIScalar min(final SIScalar r1, final SIScalar r2)
164 {
165 return r1.lt(r2) ? r1 : r2;
166 }
167
168
169
170
171
172
173
174
175 public static SIScalar min(final SIScalar r1, final SIScalar r2, final SIScalar... rn)
176 {
177 SIScalar minr = r1.lt(r2) ? r1 : r2;
178 for (SIScalar r : rn)
179 {
180 if (r.lt(minr))
181 {
182 minr = r;
183 }
184 }
185 return minr;
186 }
187
188
189
190
191
192
193
194 public static SIScalar multiply(final DoubleScalarRel<?, ?> left, final DoubleScalarRel<?, ?> right)
195 {
196 SIUnit targetUnit = Unit.lookupOrCreateUnitWithSIDimensions(left.getDisplayUnit().getQuantity().getSiDimensions()
197 .plus(right.getDisplayUnit().getQuantity().getSiDimensions()));
198 return new SIScalar(left.getSI() * right.getSI(), targetUnit);
199 }
200
201
202
203
204
205
206
207 public static SIScalar divide(final DoubleScalarRel<?, ?> left, final DoubleScalarRel<?, ?> right)
208 {
209 SIUnit targetUnit = Unit.lookupOrCreateUnitWithSIDimensions(left.getDisplayUnit().getQuantity().getSiDimensions()
210 .minus(right.getDisplayUnit().getQuantity().getSiDimensions()));
211 return new SIScalar(left.getSI() / right.getSI(), targetUnit);
212 }
213
214 @Override
215 public SIScalar reciprocal()
216 {
217 return divide(Dimensionless.ONE, this);
218 }
219
220
221
222
223
224
225
226
227
228
229 public static SIScalar valueOf(final String text)
230 {
231 Throw.whenNull(text, "Error parsing SIScalar: unitString is null");
232 Throw.when(text.length() == 0, IllegalArgumentException.class, "Error parsing SIScalar: empty string");
233 try
234 {
235 NumberParser numberParser = new NumberParser().lenient().trailing();
236 double d = numberParser.parseDouble(text);
237 String unitString = text.substring(numberParser.getTrailingPosition()).trim();
238 SIUnit unit = Unit.lookupOrCreateUnitWithSIDimensions(SIDimensions.of(unitString));
239 Throw.when(unit == null, IllegalArgumentException.class, "Unit %s for SIScalar not found", unitString);
240 return new SIScalar(d, unit);
241 }
242 catch (Exception exception)
243 {
244 throw new IllegalArgumentException(
245 "Error parsing SIScalar from " + text + " using Locale " + Locale.getDefault(Locale.Category.FORMAT),
246 exception);
247 }
248 }
249
250
251
252
253
254
255
256
257
258 public static SIScalar of(final double value, final String unitString)
259 {
260 Throw.whenNull(unitString, "Error parsing SIScalar: unitString is null");
261 try
262 {
263 SIUnit unit = Unit.lookupOrCreateUnitWithSIDimensions(SIDimensions.of(unitString));
264 if (unit != null)
265 {
266 return new SIScalar(value, unit);
267 }
268 }
269 catch (Exception exception)
270 {
271 throw new IllegalArgumentException("Error parsing SIUnit from " + unitString, exception);
272 }
273 throw new IllegalArgumentException("Error parsing SIScalar with unit " + unitString);
274 }
275
276 @Override
277 public String toString(final SIUnit displayUnit, final boolean verbose, final boolean withUnit)
278 {
279 return super.toString(displayUnit, verbose, withUnit).replaceAll("!", "");
280 }
281
282
283
284
285
286
287 private static final Map<Unit<?>, Constructor<? extends DoubleScalar<?, ?>>> CACHE = new HashMap<>();
288
289
290
291
292
293
294
295
296
297 public static <U extends Unit<U>, S extends DoubleScalar<U, S>> S instantiate(final double value, final U unit)
298 {
299 return instantiateAnonymous(value, unit);
300 }
301
302
303
304
305
306
307
308
309
310
311 @SuppressWarnings("unchecked")
312 public static <S extends DoubleScalar<?, S>> S instantiateAnonymous(final double value, final Unit<?> unit)
313 {
314 try
315 {
316 Constructor<? extends DoubleScalar<?, ?>> scalarConstructor = CACHE.get(unit);
317 if (scalarConstructor == null)
318 {
319 if (!unit.getClass().getSimpleName().endsWith("Unit"))
320 {
321 throw new ClassNotFoundException("Unit " + unit.getClass().getSimpleName()
322 + " name does noet end with 'Unit'. Cannot find corresponding scalar");
323 }
324 Class<? extends DoubleScalar<?, ?>> scalarClass;
325 if (unit instanceof SIUnit)
326 {
327 scalarClass = SIScalar.class;
328 }
329 else
330 {
331 scalarClass = (Class<DoubleScalar<?, ?>>) Class
332 .forName("org.djunits.value.vdouble.scalar." + unit.getClass().getSimpleName().replace("Unit", ""));
333 }
334 scalarConstructor = scalarClass.getDeclaredConstructor(double.class, unit.getClass());
335 CACHE.put(unit, scalarConstructor);
336 }
337 return (S) scalarConstructor.newInstance(value, unit);
338 }
339 catch (ClassNotFoundException | NoSuchMethodException | SecurityException | InstantiationException
340 | IllegalAccessException | IllegalArgumentException | InvocationTargetException exception)
341 {
342 throw new UnitRuntimeException(
343 "Cannot instantiate DoubleScalar of unit " + unit.toString() + ". Reason: " + exception.getMessage());
344 }
345 }
346
347
348
349
350
351
352
353
354
355 public final <U extends Unit<U>, S extends DoubleScalarRel<U, S>> S as(final U displayUnit)
356 {
357 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(displayUnit.getQuantity().getSiDimensions())),
358 UnitRuntimeException.class, "SIScalar with unit %s cannot be converted to a scalar with unit %s",
359 getDisplayUnit(), displayUnit);
360 S result = instantiate(this.si, displayUnit.getStandardUnit());
361 result.setDisplayUnit(displayUnit);
362 return result;
363 }
364
365
366
367
368
369 public final AbsorbedDose asAbsorbedDose()
370 {
371 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AbsorbedDoseUnit.BASE.getSiDimensions())),
372 UnitRuntimeException.class, "cannot cast %s to AbsorbedDose", this.toString());
373 return new AbsorbedDose(getSI(), AbsorbedDoseUnit.SI);
374 }
375
376
377
378
379
380
381 public final AbsorbedDose asAbsorbedDose(final AbsorbedDoseUnit displayUnit)
382 {
383 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AbsorbedDoseUnit.BASE.getSiDimensions())),
384 UnitRuntimeException.class, "cannot cast %s to AbsorbedDose", this.toString());
385 AbsorbedDose result = new AbsorbedDose(getSI(), displayUnit.getStandardUnit());
386 result.setDisplayUnit(displayUnit);
387 return result;
388 }
389
390
391
392
393
394 public final Acceleration asAcceleration()
395 {
396 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AccelerationUnit.BASE.getSiDimensions())),
397 UnitRuntimeException.class, "cannot cast %s to Acceleration", this.toString());
398 return new Acceleration(getSI(), AccelerationUnit.SI);
399 }
400
401
402
403
404
405
406 public final Acceleration asAcceleration(final AccelerationUnit displayUnit)
407 {
408 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AccelerationUnit.BASE.getSiDimensions())),
409 UnitRuntimeException.class, "cannot cast %s to Acceleration", this.toString());
410 Acceleration result = new Acceleration(getSI(), displayUnit.getStandardUnit());
411 result.setDisplayUnit(displayUnit);
412 return result;
413 }
414
415
416
417
418
419 public final AmountOfSubstance asAmountOfSubstance()
420 {
421 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AmountOfSubstanceUnit.BASE.getSiDimensions())),
422 UnitRuntimeException.class, "cannot cast %s to AmountOfSubstance", this.toString());
423 return new AmountOfSubstance(getSI(), AmountOfSubstanceUnit.SI);
424 }
425
426
427
428
429
430
431 public final AmountOfSubstance asAmountOfSubstance(final AmountOfSubstanceUnit displayUnit)
432 {
433 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AmountOfSubstanceUnit.BASE.getSiDimensions())),
434 UnitRuntimeException.class, "cannot cast %s to AmountOfSubstance", this.toString());
435 AmountOfSubstance result = new AmountOfSubstance(getSI(), displayUnit.getStandardUnit());
436 result.setDisplayUnit(displayUnit);
437 return result;
438 }
439
440
441
442
443
444 public final AngularAcceleration asAngularAcceleration()
445 {
446 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AngularAccelerationUnit.BASE.getSiDimensions())),
447 UnitRuntimeException.class, "cannot cast %s to AngularAcceleration", this.toString());
448 return new AngularAcceleration(getSI(), AngularAccelerationUnit.SI);
449 }
450
451
452
453
454
455
456 public final AngularAcceleration asAngularAcceleration(final AngularAccelerationUnit displayUnit)
457 {
458 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AngularAccelerationUnit.BASE.getSiDimensions())),
459 UnitRuntimeException.class, "cannot cast %s to AngularAcceleration", this.toString());
460 AngularAcceleration result = new AngularAcceleration(getSI(), displayUnit.getStandardUnit());
461 result.setDisplayUnit(displayUnit);
462 return result;
463 }
464
465
466
467
468
469 public final AngularVelocity asAngularVelocity()
470 {
471 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AngularVelocityUnit.BASE.getSiDimensions())),
472 UnitRuntimeException.class, "cannot cast %s to AngularVelocity", this.toString());
473 return new AngularVelocity(getSI(), AngularVelocityUnit.SI);
474 }
475
476
477
478
479
480
481 public final AngularVelocity asAngularVelocity(final AngularVelocityUnit displayUnit)
482 {
483 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AngularVelocityUnit.BASE.getSiDimensions())),
484 UnitRuntimeException.class, "cannot cast %s to AngularVelocity", this.toString());
485 AngularVelocity result = new AngularVelocity(getSI(), displayUnit.getStandardUnit());
486 result.setDisplayUnit(displayUnit);
487 return result;
488 }
489
490
491
492
493
494 public final Area asArea()
495 {
496 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AreaUnit.BASE.getSiDimensions())),
497 UnitRuntimeException.class, "cannot cast %s to Area", this.toString());
498 return new Area(getSI(), AreaUnit.SI);
499 }
500
501
502
503
504
505
506 public final Area asArea(final AreaUnit displayUnit)
507 {
508 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AreaUnit.BASE.getSiDimensions())),
509 UnitRuntimeException.class, "cannot cast %s to Area", this.toString());
510 Area result = new Area(getSI(), displayUnit.getStandardUnit());
511 result.setDisplayUnit(displayUnit);
512 return result;
513 }
514
515
516
517
518
519 public final CatalyticActivity asCatalyticActivity()
520 {
521 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(CatalyticActivityUnit.BASE.getSiDimensions())),
522 UnitRuntimeException.class, "cannot cast %s to CatalyticActivity", this.toString());
523 return new CatalyticActivity(getSI(), CatalyticActivityUnit.SI);
524 }
525
526
527
528
529
530
531 public final CatalyticActivity asCatalyticActivity(final CatalyticActivityUnit displayUnit)
532 {
533 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(CatalyticActivityUnit.BASE.getSiDimensions())),
534 UnitRuntimeException.class, "cannot cast %s to CatalyticActivity", this.toString());
535 CatalyticActivity result = new CatalyticActivity(getSI(), displayUnit.getStandardUnit());
536 result.setDisplayUnit(displayUnit);
537 return result;
538 }
539
540
541
542
543
544 public final Density asDensity()
545 {
546 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DensityUnit.BASE.getSiDimensions())),
547 UnitRuntimeException.class, "cannot cast %s to Density", this.toString());
548 return new Density(getSI(), DensityUnit.SI);
549 }
550
551
552
553
554
555
556 public final Density asDensity(final DensityUnit displayUnit)
557 {
558 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DensityUnit.BASE.getSiDimensions())),
559 UnitRuntimeException.class, "cannot cast %s to Density", this.toString());
560 Density result = new Density(getSI(), displayUnit.getStandardUnit());
561 result.setDisplayUnit(displayUnit);
562 return result;
563 }
564
565
566
567
568
569 public final Dimensionless asDimensionless()
570 {
571 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DimensionlessUnit.BASE.getSiDimensions())),
572 UnitRuntimeException.class, "cannot cast %s to Dimensionless", this.toString());
573 return new Dimensionless(getSI(), DimensionlessUnit.SI);
574 }
575
576
577
578
579
580
581 public final Dimensionless asDimensionless(final DimensionlessUnit displayUnit)
582 {
583 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DimensionlessUnit.BASE.getSiDimensions())),
584 UnitRuntimeException.class, "cannot cast %s to Dimensionless", this.toString());
585 Dimensionless result = new Dimensionless(getSI(), displayUnit.getStandardUnit());
586 result.setDisplayUnit(displayUnit);
587 return result;
588 }
589
590
591
592
593
594 public final ElectricalCapacitance asElectricalCapacitance()
595 {
596 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalCapacitanceUnit.BASE.getSiDimensions())),
597 UnitRuntimeException.class, "cannot cast %s to ElectricalCapacitance", this.toString());
598 return new ElectricalCapacitance(getSI(), ElectricalCapacitanceUnit.SI);
599 }
600
601
602
603
604
605
606 public final ElectricalCapacitance asElectricalCapacitance(final ElectricalCapacitanceUnit displayUnit)
607 {
608 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalCapacitanceUnit.BASE.getSiDimensions())),
609 UnitRuntimeException.class, "cannot cast %s to ElectricalCapacitance", this.toString());
610 ElectricalCapacitance result = new ElectricalCapacitance(getSI(), displayUnit.getStandardUnit());
611 result.setDisplayUnit(displayUnit);
612 return result;
613 }
614
615
616
617
618
619 public final ElectricalCharge asElectricalCharge()
620 {
621 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalChargeUnit.BASE.getSiDimensions())),
622 UnitRuntimeException.class, "cannot cast %s to ElectricalCharge", this.toString());
623 return new ElectricalCharge(getSI(), ElectricalChargeUnit.SI);
624 }
625
626
627
628
629
630
631 public final ElectricalCharge asElectricalCharge(final ElectricalChargeUnit displayUnit)
632 {
633 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalChargeUnit.BASE.getSiDimensions())),
634 UnitRuntimeException.class, "cannot cast %s to ElectricalCharge", this.toString());
635 ElectricalCharge result = new ElectricalCharge(getSI(), displayUnit.getStandardUnit());
636 result.setDisplayUnit(displayUnit);
637 return result;
638 }
639
640
641
642
643
644 public final ElectricalConductance asElectricalConductance()
645 {
646 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalConductanceUnit.BASE.getSiDimensions())),
647 UnitRuntimeException.class, "cannot cast %s to ElectricalConductance", this.toString());
648 return new ElectricalConductance(getSI(), ElectricalConductanceUnit.SI);
649 }
650
651
652
653
654
655
656 public final ElectricalConductance asElectricalConductance(final ElectricalConductanceUnit displayUnit)
657 {
658 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalConductanceUnit.BASE.getSiDimensions())),
659 UnitRuntimeException.class, "cannot cast %s to ElectricalConductance", this.toString());
660 ElectricalConductance result = new ElectricalConductance(getSI(), displayUnit.getStandardUnit());
661 result.setDisplayUnit(displayUnit);
662 return result;
663 }
664
665
666
667
668
669 public final ElectricalCurrent asElectricalCurrent()
670 {
671 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalCurrentUnit.BASE.getSiDimensions())),
672 UnitRuntimeException.class, "cannot cast %s to ElectricalCurrent", this.toString());
673 return new ElectricalCurrent(getSI(), ElectricalCurrentUnit.SI);
674 }
675
676
677
678
679
680
681 public final ElectricalCurrent asElectricalCurrent(final ElectricalCurrentUnit displayUnit)
682 {
683 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalCurrentUnit.BASE.getSiDimensions())),
684 UnitRuntimeException.class, "cannot cast %s to ElectricalCurrent", this.toString());
685 ElectricalCurrent result = new ElectricalCurrent(getSI(), displayUnit.getStandardUnit());
686 result.setDisplayUnit(displayUnit);
687 return result;
688 }
689
690
691
692
693
694 public final ElectricalInductance asElectricalInductance()
695 {
696 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalInductanceUnit.BASE.getSiDimensions())),
697 UnitRuntimeException.class, "cannot cast %s to ElectricalInductance", this.toString());
698 return new ElectricalInductance(getSI(), ElectricalInductanceUnit.SI);
699 }
700
701
702
703
704
705
706 public final ElectricalInductance asElectricalInductance(final ElectricalInductanceUnit displayUnit)
707 {
708 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalInductanceUnit.BASE.getSiDimensions())),
709 UnitRuntimeException.class, "cannot cast %s to ElectricalInductance", this.toString());
710 ElectricalInductance result = new ElectricalInductance(getSI(), displayUnit.getStandardUnit());
711 result.setDisplayUnit(displayUnit);
712 return result;
713 }
714
715
716
717
718
719 public final ElectricalPotential asElectricalPotential()
720 {
721 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalPotentialUnit.BASE.getSiDimensions())),
722 UnitRuntimeException.class, "cannot cast %s to ElectricalPotential", this.toString());
723 return new ElectricalPotential(getSI(), ElectricalPotentialUnit.SI);
724 }
725
726
727
728
729
730
731 public final ElectricalPotential asElectricalPotential(final ElectricalPotentialUnit displayUnit)
732 {
733 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalPotentialUnit.BASE.getSiDimensions())),
734 UnitRuntimeException.class, "cannot cast %s to ElectricalPotential", this.toString());
735 ElectricalPotential result = new ElectricalPotential(getSI(), displayUnit.getStandardUnit());
736 result.setDisplayUnit(displayUnit);
737 return result;
738 }
739
740
741
742
743
744 public final ElectricalResistance asElectricalResistance()
745 {
746 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalResistanceUnit.BASE.getSiDimensions())),
747 UnitRuntimeException.class, "cannot cast %s to ElectricalResistance", this.toString());
748 return new ElectricalResistance(getSI(), ElectricalResistanceUnit.SI);
749 }
750
751
752
753
754
755
756 public final ElectricalResistance asElectricalResistance(final ElectricalResistanceUnit displayUnit)
757 {
758 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalResistanceUnit.BASE.getSiDimensions())),
759 UnitRuntimeException.class, "cannot cast %s to ElectricalResistance", this.toString());
760 ElectricalResistance result = new ElectricalResistance(getSI(), displayUnit.getStandardUnit());
761 result.setDisplayUnit(displayUnit);
762 return result;
763 }
764
765
766
767
768
769 public final Energy asEnergy()
770 {
771 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(EnergyUnit.BASE.getSiDimensions())),
772 UnitRuntimeException.class, "cannot cast %s to Energy", this.toString());
773 return new Energy(getSI(), EnergyUnit.SI);
774 }
775
776
777
778
779
780
781 public final Energy asEnergy(final EnergyUnit displayUnit)
782 {
783 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(EnergyUnit.BASE.getSiDimensions())),
784 UnitRuntimeException.class, "cannot cast %s to Energy", this.toString());
785 Energy result = new Energy(getSI(), displayUnit.getStandardUnit());
786 result.setDisplayUnit(displayUnit);
787 return result;
788 }
789
790
791
792
793
794 public final EquivalentDose asEquivalentDose()
795 {
796 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(EquivalentDoseUnit.BASE.getSiDimensions())),
797 UnitRuntimeException.class, "cannot cast %s to EquivalentDose", this.toString());
798 return new EquivalentDose(getSI(), EquivalentDoseUnit.SI);
799 }
800
801
802
803
804
805
806 public final EquivalentDose asEquivalentDose(final EquivalentDoseUnit displayUnit)
807 {
808 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(EquivalentDoseUnit.BASE.getSiDimensions())),
809 UnitRuntimeException.class, "cannot cast %s to EquivalentDose", this.toString());
810 EquivalentDose result = new EquivalentDose(getSI(), displayUnit.getStandardUnit());
811 result.setDisplayUnit(displayUnit);
812 return result;
813 }
814
815
816
817
818
819 public final FlowMass asFlowMass()
820 {
821 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FlowMassUnit.BASE.getSiDimensions())),
822 UnitRuntimeException.class, "cannot cast %s to FlowMass", this.toString());
823 return new FlowMass(getSI(), FlowMassUnit.SI);
824 }
825
826
827
828
829
830
831 public final FlowMass asFlowMass(final FlowMassUnit displayUnit)
832 {
833 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FlowMassUnit.BASE.getSiDimensions())),
834 UnitRuntimeException.class, "cannot cast %s to FlowMass", this.toString());
835 FlowMass result = new FlowMass(getSI(), displayUnit.getStandardUnit());
836 result.setDisplayUnit(displayUnit);
837 return result;
838 }
839
840
841
842
843
844 public final FlowVolume asFlowVolume()
845 {
846 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FlowVolumeUnit.BASE.getSiDimensions())),
847 UnitRuntimeException.class, "cannot cast %s to FlowVolume", this.toString());
848 return new FlowVolume(getSI(), FlowVolumeUnit.SI);
849 }
850
851
852
853
854
855
856 public final FlowVolume asFlowVolume(final FlowVolumeUnit displayUnit)
857 {
858 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FlowVolumeUnit.BASE.getSiDimensions())),
859 UnitRuntimeException.class, "cannot cast %s to FlowVolume", this.toString());
860 FlowVolume result = new FlowVolume(getSI(), displayUnit.getStandardUnit());
861 result.setDisplayUnit(displayUnit);
862 return result;
863 }
864
865
866
867
868
869 public final Force asForce()
870 {
871 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ForceUnit.BASE.getSiDimensions())),
872 UnitRuntimeException.class, "cannot cast %s to Force", this.toString());
873 return new Force(getSI(), ForceUnit.SI);
874 }
875
876
877
878
879
880
881 public final Force asForce(final ForceUnit displayUnit)
882 {
883 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ForceUnit.BASE.getSiDimensions())),
884 UnitRuntimeException.class, "cannot cast %s to Force", this.toString());
885 Force result = new Force(getSI(), displayUnit.getStandardUnit());
886 result.setDisplayUnit(displayUnit);
887 return result;
888 }
889
890
891
892
893
894 public final Frequency asFrequency()
895 {
896 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FrequencyUnit.BASE.getSiDimensions())),
897 UnitRuntimeException.class, "cannot cast %s to Frequency", this.toString());
898 return new Frequency(getSI(), FrequencyUnit.SI);
899 }
900
901
902
903
904
905
906 public final Frequency asFrequency(final FrequencyUnit displayUnit)
907 {
908 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FrequencyUnit.BASE.getSiDimensions())),
909 UnitRuntimeException.class, "cannot cast %s to Frequency", this.toString());
910 Frequency result = new Frequency(getSI(), displayUnit.getStandardUnit());
911 result.setDisplayUnit(displayUnit);
912 return result;
913 }
914
915
916
917
918
919 public final Illuminance asIlluminance()
920 {
921 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(IlluminanceUnit.BASE.getSiDimensions())),
922 UnitRuntimeException.class, "cannot cast %s to Illuminance", this.toString());
923 return new Illuminance(getSI(), IlluminanceUnit.SI);
924 }
925
926
927
928
929
930
931 public final Illuminance asIlluminance(final IlluminanceUnit displayUnit)
932 {
933 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(IlluminanceUnit.BASE.getSiDimensions())),
934 UnitRuntimeException.class, "cannot cast %s to Illuminance", this.toString());
935 Illuminance result = new Illuminance(getSI(), displayUnit.getStandardUnit());
936 result.setDisplayUnit(displayUnit);
937 return result;
938 }
939
940
941
942
943
944 public final LinearDensity asLinearDensity()
945 {
946 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LinearDensityUnit.BASE.getSiDimensions())),
947 UnitRuntimeException.class, "cannot cast %s to LinearDensity", this.toString());
948 return new LinearDensity(getSI(), LinearDensityUnit.SI);
949 }
950
951
952
953
954
955
956 public final LinearDensity asLinearDensity(final LinearDensityUnit displayUnit)
957 {
958 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LinearDensityUnit.BASE.getSiDimensions())),
959 UnitRuntimeException.class, "cannot cast %s to LinearDensity", this.toString());
960 LinearDensity result = new LinearDensity(getSI(), displayUnit.getStandardUnit());
961 result.setDisplayUnit(displayUnit);
962 return result;
963 }
964
965
966
967
968
969 public final LuminousFlux asLuminousFlux()
970 {
971 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LuminousFluxUnit.BASE.getSiDimensions())),
972 UnitRuntimeException.class, "cannot cast %s to LuminousFlux", this.toString());
973 return new LuminousFlux(getSI(), LuminousFluxUnit.SI);
974 }
975
976
977
978
979
980
981 public final LuminousFlux asLuminousFlux(final LuminousFluxUnit displayUnit)
982 {
983 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LuminousFluxUnit.BASE.getSiDimensions())),
984 UnitRuntimeException.class, "cannot cast %s to LuminousFlux", this.toString());
985 LuminousFlux result = new LuminousFlux(getSI(), displayUnit.getStandardUnit());
986 result.setDisplayUnit(displayUnit);
987 return result;
988 }
989
990
991
992
993
994 public final LuminousIntensity asLuminousIntensity()
995 {
996 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LuminousIntensityUnit.BASE.getSiDimensions())),
997 UnitRuntimeException.class, "cannot cast %s to LuminousIntensity", this.toString());
998 return new LuminousIntensity(getSI(), LuminousIntensityUnit.SI);
999 }
1000
1001
1002
1003
1004
1005
1006 public final LuminousIntensity asLuminousIntensity(final LuminousIntensityUnit displayUnit)
1007 {
1008 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LuminousIntensityUnit.BASE.getSiDimensions())),
1009 UnitRuntimeException.class, "cannot cast %s to LuminousIntensity", this.toString());
1010 LuminousIntensity result = new LuminousIntensity(getSI(), displayUnit.getStandardUnit());
1011 result.setDisplayUnit(displayUnit);
1012 return result;
1013 }
1014
1015
1016
1017
1018
1019 public final MagneticFluxDensity asMagneticFluxDensity()
1020 {
1021 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MagneticFluxDensityUnit.BASE.getSiDimensions())),
1022 UnitRuntimeException.class, "cannot cast %s to MagneticFluxDensity", this.toString());
1023 return new MagneticFluxDensity(getSI(), MagneticFluxDensityUnit.SI);
1024 }
1025
1026
1027
1028
1029
1030
1031 public final MagneticFluxDensity asMagneticFluxDensity(final MagneticFluxDensityUnit displayUnit)
1032 {
1033 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MagneticFluxDensityUnit.BASE.getSiDimensions())),
1034 UnitRuntimeException.class, "cannot cast %s to MagneticFluxDensity", this.toString());
1035 MagneticFluxDensity result = new MagneticFluxDensity(getSI(), displayUnit.getStandardUnit());
1036 result.setDisplayUnit(displayUnit);
1037 return result;
1038 }
1039
1040
1041
1042
1043
1044 public final MagneticFlux asMagneticFlux()
1045 {
1046 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MagneticFluxUnit.BASE.getSiDimensions())),
1047 UnitRuntimeException.class, "cannot cast %s to MagneticFlux", this.toString());
1048 return new MagneticFlux(getSI(), MagneticFluxUnit.SI);
1049 }
1050
1051
1052
1053
1054
1055
1056 public final MagneticFlux asMagneticFlux(final MagneticFluxUnit displayUnit)
1057 {
1058 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MagneticFluxUnit.BASE.getSiDimensions())),
1059 UnitRuntimeException.class, "cannot cast %s to MagneticFlux", this.toString());
1060 MagneticFlux result = new MagneticFlux(getSI(), displayUnit.getStandardUnit());
1061 result.setDisplayUnit(displayUnit);
1062 return result;
1063 }
1064
1065
1066
1067
1068
1069 public final Mass asMass()
1070 {
1071 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MassUnit.BASE.getSiDimensions())),
1072 UnitRuntimeException.class, "cannot cast %s to Mass", this.toString());
1073 return new Mass(getSI(), MassUnit.SI);
1074 }
1075
1076
1077
1078
1079
1080
1081 public final Mass asMass(final MassUnit displayUnit)
1082 {
1083 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MassUnit.BASE.getSiDimensions())),
1084 UnitRuntimeException.class, "cannot cast %s to Mass", this.toString());
1085 Mass result = new Mass(getSI(), displayUnit.getStandardUnit());
1086 result.setDisplayUnit(displayUnit);
1087 return result;
1088 }
1089
1090
1091
1092
1093
1094 public final Momentum asMomentum()
1095 {
1096 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MomentumUnit.BASE.getSiDimensions())),
1097 UnitRuntimeException.class, "cannot cast %s to Momentum", this.toString());
1098 return new Momentum(getSI(), MomentumUnit.SI);
1099 }
1100
1101
1102
1103
1104
1105
1106 public final Momentum asMomentum(final MomentumUnit displayUnit)
1107 {
1108 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MomentumUnit.BASE.getSiDimensions())),
1109 UnitRuntimeException.class, "cannot cast %s to Momentum", this.toString());
1110 Momentum result = new Momentum(getSI(), displayUnit.getStandardUnit());
1111 result.setDisplayUnit(displayUnit);
1112 return result;
1113 }
1114
1115
1116
1117
1118
1119 public final Power asPower()
1120 {
1121 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(PowerUnit.BASE.getSiDimensions())),
1122 UnitRuntimeException.class, "cannot cast %s to Power", this.toString());
1123 return new Power(getSI(), PowerUnit.SI);
1124 }
1125
1126
1127
1128
1129
1130
1131 public final Power asPower(final PowerUnit displayUnit)
1132 {
1133 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(PowerUnit.BASE.getSiDimensions())),
1134 UnitRuntimeException.class, "cannot cast %s to Power", this.toString());
1135 Power result = new Power(getSI(), displayUnit.getStandardUnit());
1136 result.setDisplayUnit(displayUnit);
1137 return result;
1138 }
1139
1140
1141
1142
1143
1144 public final Pressure asPressure()
1145 {
1146 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(PressureUnit.BASE.getSiDimensions())),
1147 UnitRuntimeException.class, "cannot cast %s to Pressure", this.toString());
1148 return new Pressure(getSI(), PressureUnit.SI);
1149 }
1150
1151
1152
1153
1154
1155
1156 public final Pressure asPressure(final PressureUnit displayUnit)
1157 {
1158 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(PressureUnit.BASE.getSiDimensions())),
1159 UnitRuntimeException.class, "cannot cast %s to Pressure", this.toString());
1160 Pressure result = new Pressure(getSI(), displayUnit.getStandardUnit());
1161 result.setDisplayUnit(displayUnit);
1162 return result;
1163 }
1164
1165
1166
1167
1168
1169 public final RadioActivity asRadioActivity()
1170 {
1171 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(RadioActivityUnit.BASE.getSiDimensions())),
1172 UnitRuntimeException.class, "cannot cast %s to RadioActivity", this.toString());
1173 return new RadioActivity(getSI(), RadioActivityUnit.SI);
1174 }
1175
1176
1177
1178
1179
1180
1181 public final RadioActivity asRadioActivity(final RadioActivityUnit displayUnit)
1182 {
1183 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(RadioActivityUnit.BASE.getSiDimensions())),
1184 UnitRuntimeException.class, "cannot cast %s to RadioActivity", this.toString());
1185 RadioActivity result = new RadioActivity(getSI(), displayUnit.getStandardUnit());
1186 result.setDisplayUnit(displayUnit);
1187 return result;
1188 }
1189
1190
1191
1192
1193
1194 public final SolidAngle asSolidAngle()
1195 {
1196 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(SolidAngleUnit.BASE.getSiDimensions())),
1197 UnitRuntimeException.class, "cannot cast %s to SolidAngle", this.toString());
1198 return new SolidAngle(getSI(), SolidAngleUnit.SI);
1199 }
1200
1201
1202
1203
1204
1205
1206 public final SolidAngle asSolidAngle(final SolidAngleUnit displayUnit)
1207 {
1208 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(SolidAngleUnit.BASE.getSiDimensions())),
1209 UnitRuntimeException.class, "cannot cast %s to SolidAngle", this.toString());
1210 SolidAngle result = new SolidAngle(getSI(), displayUnit.getStandardUnit());
1211 result.setDisplayUnit(displayUnit);
1212 return result;
1213 }
1214
1215
1216
1217
1218
1219 public final Speed asSpeed()
1220 {
1221 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(SpeedUnit.BASE.getSiDimensions())),
1222 UnitRuntimeException.class, "cannot cast %s to Speed", this.toString());
1223 return new Speed(getSI(), SpeedUnit.SI);
1224 }
1225
1226
1227
1228
1229
1230
1231 public final Speed asSpeed(final SpeedUnit displayUnit)
1232 {
1233 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(SpeedUnit.BASE.getSiDimensions())),
1234 UnitRuntimeException.class, "cannot cast %s to Speed", this.toString());
1235 Speed result = new Speed(getSI(), displayUnit.getStandardUnit());
1236 result.setDisplayUnit(displayUnit);
1237 return result;
1238 }
1239
1240
1241
1242
1243
1244 public final Torque asTorque()
1245 {
1246 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(TorqueUnit.BASE.getSiDimensions())),
1247 UnitRuntimeException.class, "cannot cast %s to Torque", this.toString());
1248 return new Torque(getSI(), TorqueUnit.SI);
1249 }
1250
1251
1252
1253
1254
1255
1256 public final Torque asTorque(final TorqueUnit displayUnit)
1257 {
1258 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(TorqueUnit.BASE.getSiDimensions())),
1259 UnitRuntimeException.class, "cannot cast %s to Torque", this.toString());
1260 Torque result = new Torque(getSI(), displayUnit.getStandardUnit());
1261 result.setDisplayUnit(displayUnit);
1262 return result;
1263 }
1264
1265
1266
1267
1268
1269 public final Volume asVolume()
1270 {
1271 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(VolumeUnit.BASE.getSiDimensions())),
1272 UnitRuntimeException.class, "cannot cast %s to Volume", this.toString());
1273 return new Volume(getSI(), VolumeUnit.SI);
1274 }
1275
1276
1277
1278
1279
1280
1281 public final Volume asVolume(final VolumeUnit displayUnit)
1282 {
1283 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(VolumeUnit.BASE.getSiDimensions())),
1284 UnitRuntimeException.class, "cannot cast %s to Volume", this.toString());
1285 Volume result = new Volume(getSI(), displayUnit.getStandardUnit());
1286 result.setDisplayUnit(displayUnit);
1287 return result;
1288 }
1289
1290
1291
1292
1293
1294 public final Angle asAngle()
1295 {
1296 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AngleUnit.BASE.getSiDimensions())),
1297 UnitRuntimeException.class, "cannot cast %s to Angle", this.toString());
1298 return new Angle(getSI(), AngleUnit.SI);
1299 }
1300
1301
1302
1303
1304
1305
1306 public final Angle asAngle(final AngleUnit displayUnit)
1307 {
1308 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AngleUnit.BASE.getSiDimensions())),
1309 UnitRuntimeException.class, "cannot cast %s to Angle", this.toString());
1310 Angle result = new Angle(getSI(), displayUnit.getStandardUnit());
1311 result.setDisplayUnit(displayUnit);
1312 return result;
1313 }
1314
1315
1316
1317
1318
1319 public final Length asLength()
1320 {
1321 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LengthUnit.BASE.getSiDimensions())),
1322 UnitRuntimeException.class, "cannot cast %s to Length", this.toString());
1323 return new Length(getSI(), LengthUnit.SI);
1324 }
1325
1326
1327
1328
1329
1330
1331 public final Length asLength(final LengthUnit displayUnit)
1332 {
1333 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LengthUnit.BASE.getSiDimensions())),
1334 UnitRuntimeException.class, "cannot cast %s to Length", this.toString());
1335 Length result = new Length(getSI(), displayUnit.getStandardUnit());
1336 result.setDisplayUnit(displayUnit);
1337 return result;
1338 }
1339
1340
1341
1342
1343
1344 public final Temperature asTemperature()
1345 {
1346 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(TemperatureUnit.BASE.getSiDimensions())),
1347 UnitRuntimeException.class, "cannot cast %s to Temperature", this.toString());
1348 return new Temperature(getSI(), TemperatureUnit.SI);
1349 }
1350
1351
1352
1353
1354
1355
1356 public final Temperature asTemperature(final TemperatureUnit displayUnit)
1357 {
1358 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(TemperatureUnit.BASE.getSiDimensions())),
1359 UnitRuntimeException.class, "cannot cast %s to Temperature", this.toString());
1360 Temperature result = new Temperature(getSI(), displayUnit.getStandardUnit());
1361 result.setDisplayUnit(displayUnit);
1362 return result;
1363 }
1364
1365
1366
1367
1368
1369 public final Duration asDuration()
1370 {
1371 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DurationUnit.BASE.getSiDimensions())),
1372 UnitRuntimeException.class, "cannot cast %s to Duration", this.toString());
1373 return new Duration(getSI(), DurationUnit.SI);
1374 }
1375
1376
1377
1378
1379
1380
1381 public final Duration asDuration(final DurationUnit displayUnit)
1382 {
1383 Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DurationUnit.BASE.getSiDimensions())),
1384 UnitRuntimeException.class, "cannot cast %s to Duration", this.toString());
1385 Duration result = new Duration(getSI(), displayUnit.getStandardUnit());
1386 result.setDisplayUnit(displayUnit);
1387 return result;
1388 }
1389
1390 }