jquants.mass.Density Maven / Gradle / Ivy
package jquants.mass;
import static com.googlecode.totallylazy.Sequences.sequence;
import static jquants.mass.Mass.Kilograms;
import com.googlecode.totallylazy.Option;
import jquants.BaseQuantityUnit;
import jquants.Dimension;
import jquants.Quantity;
import jquants.UnitOfMeasure;
import jquants.space.Volume;
/**
* @author Mathias Braeu
* @since 1.0
*
*/
public class Density extends Quantity {
public Density(double value, DensityUnit valueUnit) {
this.value = value;
this.valueUnit = valueUnit;
this.dimension = Density;
}
public static UnitOfMeasure factory(String x) {
return Density.get(x);
}
public static class DensityUnit extends BaseQuantityUnit {
public DensityUnit(String symbol, double multiplier) {
super(symbol, multiplier, true, false, false);
}
public DensityUnit(String symbol, double multiplier, boolean baseUnit, boolean valueUnit) {
super(symbol, multiplier, true, baseUnit, valueUnit);
}
@Override
public Density apply(double n) {
return new Density(n, this);
}
@Override
public String dimensionSymbol() {
return "D";
}
}
public static final DensityUnit KilogramsPerCubicMeter = new DensityUnit("kg/m³", 1, true, true);
public static Density KilogramsPerCubicMeter(double value) {return new Density(value, KilogramsPerCubicMeter);}
public Mass multiply(Volume that) {return Kilograms(value * that.toCubicMeters());}
public double toKilogramsPerCubicMeter() {return to(KilogramsPerCubicMeter);}
public static Dimension Density = new Dimension(
"Density",
KilogramsPerCubicMeter,
sequence(KilogramsPerCubicMeter));
public static Option toDensity(String s) {
return Density.parseString(s);
}
public static Density kilogramPerCubicMeter = KilogramsPerCubicMeter(1);
public static Density kilogramsPerCubicMeter(double value) {return KilogramsPerCubicMeter(value);}
@Override
public String toString() {
return this.toString(this.valueUnit);
}
}
// implicit object DensityNumeric extends AbstractQuantityNumeric[dimension](KilogramsPerCubicMeter)
© 2015 - 2025 Weber Informatics LLC | Privacy Policy