📄 unitsystem.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace Common.Utility.Unit {
public abstract class UnitSystem {
public abstract UnitSystemEnum Name {
get;
}
public abstract Dictionary<UnitEnum, Unit> Units {
get;
}
public Unit GetUnit(UnitEnum name) {
return Units[name];
}
}
public class InternationalUnitSystem : UnitSystem {
private UnitSystemEnum name;
public override UnitSystemEnum Name {
get {
return name;
}
}
private Dictionary<UnitEnum, Unit> units;
public override Dictionary<UnitEnum, Unit> Units {
get {
return units;
}
}
public InternationalUnitSystem() {
name = UnitSystemEnum.International;
units = new Dictionary<UnitEnum, Unit>();
units.Add( UnitEnum.Depth, new Unit( UnitEnum.Depth, "m", 1 ) );
units.Add( UnitEnum.Length, new Unit( UnitEnum.Length, "m", 1 ) );
units.Add( UnitEnum.Diameter, new Unit( UnitEnum.Diameter, "m", 1 ) );
units.Add( UnitEnum.Size, new Unit( UnitEnum.Size, "m", 1 ) );
units.Add(UnitEnum.Area, new Unit(UnitEnum.Area, "m^2", 1));
units.Add( UnitEnum.Volume, new Unit( UnitEnum.Volume, "m^3", 1 ) );
units.Add( UnitEnum.Capacity, new Unit( UnitEnum.Capacity, "m^3", 1 ) );
units.Add( UnitEnum.Velocity, new Unit( UnitEnum.Velocity, "m/s", 1 ) );
units.Add( UnitEnum.PumpOutput, new Unit( UnitEnum.PumpOutput, "m^3/s", 1 ) );
units.Add(UnitEnum.DeliveryCapacity, new Unit(UnitEnum.DeliveryCapacity, "m^3/s", 1));
units.Add( UnitEnum.PumpPressure, new Unit( UnitEnum.PumpPressure, "Pa", 1 ) );
units.Add( UnitEnum.Pressure, new Unit( UnitEnum.Pressure, "Pa", 1 ) );
units.Add( UnitEnum.Force, new Unit( UnitEnum.Force, "N", 1 ) );
units.Add( UnitEnum.Density, new Unit( UnitEnum.Density, "kg/m^3", 1 ) );
units.Add( UnitEnum.FormationPressureGradient, new Unit( UnitEnum.FormationPressureGradient, "Pa/m", 1 ) );
units.Add( UnitEnum.ShearStress, new Unit( UnitEnum.ShearStress, "Pa", 1 ) );
units.Add( UnitEnum.ShearRate, new Unit( UnitEnum.ShearRate, "s^-1", 1 ) );
units.Add( UnitEnum.ConsistencyIndexK, new Unit( UnitEnum.ConsistencyIndexK, "Pa•(s^n)", 1 ) );
units.Add( UnitEnum.PlasticViscosity, new Unit( UnitEnum.PlasticViscosity, "Pa•s", 1 ) );
units.Add( UnitEnum.FunnelViscosity, new Unit( UnitEnum.FunnelViscosity, "s/quart", 1 ) );
units.Add( UnitEnum.YieldPoint, new Unit( UnitEnum.YieldPoint, "Pa", 1 ) );
units.Add(UnitEnum.FilterLoss, new Unit(UnitEnum.FilterLoss, "m^3", 1));
units.Add( UnitEnum.CakeThickNess, new Unit( UnitEnum.CakeThickNess, "m", 1 ) );
units.Add( UnitEnum.Temperature, new Unit( UnitEnum.Temperature, "℃", 1 ) );
units.Add( UnitEnum.Price, new Unit( UnitEnum.Price, "¥/t", 1 ) );
units.Add( UnitEnum.Cost, new Unit( UnitEnum.Cost, "¥", 1 ) );
units.Add( UnitEnum.AngleRateOfChange, new Unit( UnitEnum.AngleRateOfChange, "°/100m", 1 ) );
units.Add( UnitEnum.GrainSize, new Unit( UnitEnum.GrainSize, "m", 1 ) );
units.Add(UnitEnum.AnnulusUpwardVelocity, new Unit(UnitEnum.AnnulusUpwardVelocity, "m/s", 1));
units.Add(UnitEnum.ChipSlipRate, new Unit(UnitEnum.ChipSlipRate, "m/s", 1));
units.Add(UnitEnum.Content, new Unit(UnitEnum.Content, "kg/m^3", 1));
units.Add(UnitEnum.Hardness, new Unit(UnitEnum.Hardness, "kg/m^3", 1));
units.Add(UnitEnum.Concentration, new Unit(UnitEnum.Concentration, "kg/m^3", 1));
units.Add(UnitEnum.LiquidUsage, new Unit(UnitEnum.LiquidUsage, "m^3", 1));
units.Add(UnitEnum.Weight, new Unit(UnitEnum.Weight, "kg", 1));
units.Add(UnitEnum.NozzleSize,new Unit(UnitEnum.NozzleSize,"m",1));
units.Add(UnitEnum.GuantiArea, new Unit(UnitEnum.GuantiArea, "m^2", 1));
units.Add(UnitEnum.ZuanGanShenChang, new Unit(UnitEnum.ZuanGanShenChang, "m", 1));
units.Add(UnitEnum.ZuanGanLaLi, new Unit(UnitEnum.ZuanGanLaLi, "N", 1));
units.Add(UnitEnum.Power, new Unit(UnitEnum.Power, "W", 1));
units.Add(UnitEnum.UnitPower,new Unit(UnitEnum.UnitPower,"W/m^2",1));
units.Add(UnitEnum.DrillingSpeed, new Unit(UnitEnum.DrillingSpeed, "m/s", 1));
units.Add(UnitEnum.DrillingPipeCapacity, new Unit(UnitEnum.DrillingPipeCapacity, "m^3", 1));
units.Add(UnitEnum.PumpingSpeed,new Unit(UnitEnum.PumpingSpeed,"冲/s",1));
units.Add(UnitEnum.Stroke, new Unit(UnitEnum.Stroke, "m", 1));
}
}
public class EnglishUnitSystem : UnitSystem {
private UnitSystemEnum name;
public override UnitSystemEnum Name {
get {
return name;
}
}
private Dictionary<UnitEnum, Unit> units;
public override Dictionary<UnitEnum, Unit> Units {
get {
return units;
}
}
public EnglishUnitSystem() {
name = UnitSystemEnum.English;
units = new Dictionary<UnitEnum, Unit>();
units.Add( UnitEnum.Depth, new Unit( UnitEnum.Depth, "ft", 0.3048M ) );
units.Add( UnitEnum.Length, new Unit( UnitEnum.Length, "ft", 0.3048M ) );
units.Add( UnitEnum.Diameter, new Unit( UnitEnum.Diameter, "in", 0.0254M ) );
units.Add( UnitEnum.Size, new Unit( UnitEnum.Size, "in", 0.0254M ) );
units.Add(UnitEnum.Area, new Unit(UnitEnum.Area, "in^2", 0.0006452M));
units.Add( UnitEnum.Volume, new Unit( UnitEnum.Volume, "bbl", 0.159M ) );
units.Add( UnitEnum.Capacity, new Unit( UnitEnum.Capacity, "bbl", 0.159M ) );
units.Add( UnitEnum.Velocity, new Unit( UnitEnum.Velocity, "ft/s", 0.3048M ) );
units.Add( UnitEnum.PumpOutput, new Unit( UnitEnum.PumpOutput, "gal/min", 0.0000633M ) );
units.Add(UnitEnum.DeliveryCapacity, new Unit(UnitEnum.DeliveryCapacity, "gal/min", 0.0000633M));
units.Add( UnitEnum.PumpPressure, new Unit( UnitEnum.PumpPressure, "psi", 6894.8M ) );
units.Add( UnitEnum.Pressure, new Unit( UnitEnum.Pressure, "psi", 6894.8M ) );
units.Add( UnitEnum.Force, new Unit( UnitEnum.Force, "lb", 4.4482M ) );
units.Add( UnitEnum.Density, new Unit( UnitEnum.Density, "lb/gal", 120M ) );
units.Add( UnitEnum.FormationPressureGradient, new Unit( UnitEnum.FormationPressureGradient, "psi/ft", 22600M ) );
units.Add( UnitEnum.ShearStress, new Unit( UnitEnum.ShearStress, "lb/(100ft^2)", 0.48M ) );
units.Add( UnitEnum.ShearRate, new Unit( UnitEnum.ShearRate, "s^-1", 1 ) );
units.Add(UnitEnum.ConsistencyIndexK, new Unit(UnitEnum.ConsistencyIndexK, "lb•(s^n)/(100ft^2)", 0.479M));
units.Add( UnitEnum.PlasticViscosity, new Unit( UnitEnum.PlasticViscosity, "cP", 0.001M ) );
units.Add( UnitEnum.FunnelViscosity, new Unit( UnitEnum.FunnelViscosity, "s/quart", 1 ) );
units.Add(UnitEnum.YieldPoint, new Unit(UnitEnum.YieldPoint, "lb/(100ft^2)", 0.48M));
units.Add( UnitEnum.FilterLoss, new Unit( UnitEnum.FilterLoss, "quart", 0.9464M) );
units.Add( UnitEnum.CakeThickNess, new Unit( UnitEnum.CakeThickNess, "1/32 in", 0.0008M ) );
units.Add(UnitEnum.Temperature, new Unit(UnitEnum.Temperature, "℉", 1));
units.Add(UnitEnum.Price, new Unit(UnitEnum.Price, "£/t", 14.92M));
units.Add(UnitEnum.Cost, new Unit(UnitEnum.Cost, "£", 14.92M));
units.Add(UnitEnum.AngleRateOfChange, new Unit(UnitEnum.AngleRateOfChange, "°/100ft", 3.3M));
units.Add(UnitEnum.GrainSize, new Unit(UnitEnum.GrainSize, "in", 0.0254M));
units.Add(UnitEnum.AnnulusUpwardVelocity, new Unit(UnitEnum.AnnulusUpwardVelocity, "ft/min", 0.00508M));
units.Add(UnitEnum.ChipSlipRate, new Unit(UnitEnum.ChipSlipRate, "ft/min", 0.00508M));
units.Add(UnitEnum.Content, new Unit(UnitEnum.Content, "lb/bbl", 2.85M));
units.Add(UnitEnum.Hardness, new Unit(UnitEnum.Hardness, "ppm", 0.00107M));
units.Add(UnitEnum.Concentration, new Unit(UnitEnum.Concentration, "ppm", 0.00107M));
units.Add(UnitEnum.LiquidUsage, new Unit(UnitEnum.LiquidUsage, "ft^3", 0.02832M));
units.Add(UnitEnum.Weight, new Unit(UnitEnum.Weight, "t", 1106M));
units.Add(UnitEnum.NozzleSize, new Unit(UnitEnum.NozzleSize, "1/32 in", 0.0008M));
units.Add(UnitEnum.GuantiArea, new Unit(UnitEnum.GuantiArea, "in^2", 0.0006452M));
units.Add(UnitEnum.ZuanGanShenChang, new Unit(UnitEnum.ZuanGanShenChang, "ft", 0.3048M));
units.Add(UnitEnum.ZuanGanLaLi, new Unit(UnitEnum.ZuanGanLaLi, "lb", 4.4482M));
units.Add(UnitEnum.Power, new Unit(UnitEnum.Power, "hp", 745.7M));
units.Add(UnitEnum.UnitPower, new Unit(UnitEnum.UnitPower, "hp/in^2", 1155765.6541M));
units.Add(UnitEnum.DrillingSpeed, new Unit(UnitEnum.DrillingSpeed, "ft/h", 0.0000847M));
units.Add(UnitEnum.DrillingPipeCapacity, new Unit(UnitEnum.DrillingPipeCapacity, "bbl", 0.159M));
units.Add(UnitEnum.PumpingSpeed, new Unit(UnitEnum.PumpingSpeed, "Stroke/min", 0.0167M));
units.Add(UnitEnum.Stroke, new Unit(UnitEnum.Stroke, "ft", 0.3048M));
}
}
public class MetricUnitSystem : UnitSystem
{
private UnitSystemEnum name;
public override UnitSystemEnum Name
{
get
{
return name;
}
}
private Dictionary<UnitEnum, Unit> units;
public override Dictionary<UnitEnum, Unit> Units
{
get
{
return units;
}
}
public MetricUnitSystem()
{
name = UnitSystemEnum.Metric;
units = new Dictionary<UnitEnum, Unit>();
units.Add(UnitEnum.Depth, new Unit(UnitEnum.Depth, "m", 1));
units.Add(UnitEnum.Length, new Unit(UnitEnum.Length, "m", 1));
units.Add(UnitEnum.Diameter, new Unit(UnitEnum.Diameter, "mm", 0.001M));
units.Add(UnitEnum.Size, new Unit(UnitEnum.Size, "mm", 0.001M));
units.Add(UnitEnum.Area, new Unit(UnitEnum.Area, "mm^2", 0.000001M));
units.Add(UnitEnum.Volume, new Unit(UnitEnum.Volume, "m^3", 1));
units.Add(UnitEnum.Capacity, new Unit(UnitEnum.Capacity, "m^3", 1));
units.Add(UnitEnum.Velocity, new Unit(UnitEnum.Velocity, "m/s", 1));
units.Add(UnitEnum.PumpOutput, new Unit(UnitEnum.PumpOutput, "L/s", 0.001M));
units.Add(UnitEnum.DeliveryCapacity, new Unit(UnitEnum.DeliveryCapacity, "L/s", 0.001M));
units.Add(UnitEnum.PumpPressure, new Unit(UnitEnum.PumpPressure, "kPa", 1000M));
units.Add(UnitEnum.Pressure, new Unit(UnitEnum.Pressure, "MPa", 1000000M));
units.Add(UnitEnum.Force, new Unit(UnitEnum.Force, "kN", 1000M));
units.Add(UnitEnum.Density, new Unit(UnitEnum.Density, "g/cm^3", 1000M));
units.Add(UnitEnum.FormationPressureGradient, new Unit(UnitEnum.FormationPressureGradient, "kPa/m", 1000M));
units.Add(UnitEnum.ShearStress, new Unit(UnitEnum.ShearStress, "Pa", 1));
units.Add(UnitEnum.ShearRate, new Unit(UnitEnum.ShearRate, "s^-1", 1));
units.Add(UnitEnum.ConsistencyIndexK, new Unit(UnitEnum.ConsistencyIndexK, "Pa•(s^n)", 1));
units.Add(UnitEnum.PlasticViscosity, new Unit(UnitEnum.PlasticViscosity, "mPa•s", 0.001M));
units.Add(UnitEnum.FunnelViscosity, new Unit(UnitEnum.FunnelViscosity, "s", 1));
units.Add(UnitEnum.YieldPoint, new Unit(UnitEnum.YieldPoint, "Pa", 1));
units.Add(UnitEnum.FilterLoss, new Unit(UnitEnum.FilterLoss, "mL", 0.001M));
units.Add(UnitEnum.CakeThickNess, new Unit(UnitEnum.CakeThickNess, "mm", 0.001M));
units.Add(UnitEnum.Temperature, new Unit(UnitEnum.Temperature, "℃", 1));
units.Add(UnitEnum.Price, new Unit(UnitEnum.Price, "¥/t", 1));
units.Add(UnitEnum.Cost, new Unit(UnitEnum.Cost, "¥", 1));
units.Add(UnitEnum.AngleRateOfChange, new Unit(UnitEnum.AngleRateOfChange, "°/100m", 1));
units.Add(UnitEnum.GrainSize, new Unit(UnitEnum.GrainSize, "mm", 0.001M));
units.Add(UnitEnum.AnnulusUpwardVelocity, new Unit(UnitEnum.AnnulusUpwardVelocity, "m/s", 1));
units.Add(UnitEnum.ChipSlipRate, new Unit(UnitEnum.ChipSlipRate, "m/s", 1));
units.Add(UnitEnum.Content, new Unit(UnitEnum.Content, "kg/m^3", 1));
units.Add(UnitEnum.Hardness, new Unit(UnitEnum.Hardness, "mg/L", 0.001M));
units.Add(UnitEnum.Concentration, new Unit(UnitEnum.Concentration, "mg/L", 0.001M));
units.Add(UnitEnum.LiquidUsage, new Unit(UnitEnum.LiquidUsage, "mL", 0.000001M));
units.Add(UnitEnum.Weight, new Unit(UnitEnum.Weight, "t", 1000M));
units.Add(UnitEnum.NozzleSize, new Unit(UnitEnum.NozzleSize, "mm", 0.001M));
units.Add(UnitEnum.GuantiArea, new Unit(UnitEnum.GuantiArea, "cm^2", 0.0001M));
units.Add(UnitEnum.ZuanGanShenChang, new Unit(UnitEnum.ZuanGanShenChang, "cm", 0.01M));
units.Add(UnitEnum.ZuanGanLaLi, new Unit(UnitEnum.ZuanGanLaLi, "t", 10000M));
units.Add(UnitEnum.Power, new Unit(UnitEnum.Power, "kW", 1000M));
units.Add(UnitEnum.UnitPower, new Unit(UnitEnum.UnitPower, "hp/m^2", 735.5M));
units.Add(UnitEnum.DrillingSpeed, new Unit(UnitEnum.DrillingSpeed, "m/s", 1));
units.Add(UnitEnum.DrillingPipeCapacity, new Unit(UnitEnum.DrillingPipeCapacity, "L", 0.001M));
units.Add(UnitEnum.PumpingSpeed, new Unit(UnitEnum.PumpingSpeed, "冲/min", 0.0167M));
units.Add(UnitEnum.Stroke, new Unit(UnitEnum.Stroke, "mm", 0.001M));
}
}
public enum UnitSystemEnum {
International,
English,
Metric,
Mixture
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -