Skip to content

Add ai generated quantities - #112

Open
atmoos wants to merge 33 commits into
mainfrom
addAiGeneratedQuantities
Open

Add ai generated quantities#112
atmoos wants to merge 33 commits into
mainfrom
addAiGeneratedQuantities

Conversation

@atmoos

@atmoos atmoos commented Mar 30, 2026

Copy link
Copy Markdown
Owner

No description provided.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Expands the type-safe quantities library with additional mechanical, electrical, photometric and fluid-dynamic quantities and units.

Changes:

  • Adds 20 quantity types and associated dimensional contracts.
  • Adds SI, metric and non-standard units plus cross-quantity operators.
  • Extends documentation, parsing, serialisation and unit coverage.

Reviewed changes

Copilot reviewed 78 out of 78 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
source/Atmoos.Quantities/readme.md Lists the new quantities.
source/Atmoos.Quantities/Quantities/VolumetricFlowRate.ai.cs Adds volumetric flow rate.
source/Atmoos.Quantities/Quantities/Torque.ai.cs Adds torque.
source/Atmoos.Quantities/Quantities/SpecificEnergy.ai.cs Adds specific energy.
source/Atmoos.Quantities/Quantities/Momentum.ai.cs Adds momentum.
source/Atmoos.Quantities/Quantities/MassFlowRate.ai.cs Adds mass flow rate.
source/Atmoos.Quantities/Quantities/MagneticFluxDensity.ai.cs Adds magnetic flux density.
source/Atmoos.Quantities/Quantities/MagneticFlux.ai.cs Adds magnetic flux.
source/Atmoos.Quantities/Quantities/LuminousIntensity.ai.cs Adds luminous intensity.
source/Atmoos.Quantities/Quantities/LuminousFlux.ai.cs Adds luminous flux.
source/Atmoos.Quantities/Quantities/Impulse.ai.cs Adds impulse.
source/Atmoos.Quantities/Quantities/Illuminance.ai.cs Adds illuminance.
source/Atmoos.Quantities/Quantities/ElectricCharge.ai.cs Adds electric charge.
source/Atmoos.Quantities/Quantities/ElectricalConductance.ai.cs Adds electrical conductance.
source/Atmoos.Quantities/Quantities/DynamicViscosity.ai.cs Adds dynamic viscosity.
source/Atmoos.Quantities/Quantities/Density.ai.cs Adds density.
source/Atmoos.Quantities/Quantities/Capacitance.ai.cs Adds capacitance.
source/Atmoos.Quantities/Quantities/AngularVelocity.ai.cs Adds angular velocity.
source/Atmoos.Quantities/Quantities/AngularAcceleration.ai.cs Adds angular acceleration.
source/Atmoos.Quantities/Quantities/Angle.ai.cs Adds angle.
source/Atmoos.Quantities/Quantities/AmountOfSubstance.ai.cs Adds amount of substance.
source/Atmoos.Quantities/Physics/MechanicalEngineering.cs Adds mechanical, fluid and photometric operators.
source/Atmoos.Quantities/Physics/ElectricalEngineering.cs Adds electrical and magnetic operators.
source/Atmoos.Quantities/Dimensions/Markers.cs Updates marker guidance.
source/Atmoos.Quantities/Dimensions/IDimension.cs Introduces multiplicity contracts.
source/Atmoos.Quantities/Dimensions/ElectricalDimesions.cs Adds electrical dimensions.
source/Atmoos.Quantities/Dimensions/Dimensionless.cs Adds dimensionless angle support.
source/Atmoos.Quantities/Dimensions/DerivedDimensions.cs Adds derived dimensions.
source/Atmoos.Quantities/Dimensions/BaseDimensions.cs Supports new base quantities.
source/Atmoos.Quantities/Creation/Factory.cs Passes factory operands by reference.
source/Atmoos.Quantities/Creation/Creators.cs Enables chained compound measures.
source/Atmoos.Quantities/Core/IFactory.cs Strengthens dimensional constraints.
source/Atmoos.Quantities.Units/Si/Metric/Degree.ai.cs Adds degrees.
source/Atmoos.Quantities.Units/Si/Derived/Radian.ai.cs Adds radians.
source/Atmoos.Quantities.Units/Si/Derived/MagneticFluxDensity/Tesla.ai.cs Adds teslas.
source/Atmoos.Quantities.Units/Si/Derived/MagneticFlux/Weber.ai.cs Adds webers.
source/Atmoos.Quantities.Units/Si/Derived/LuminousFlux/Lumen.ai.cs Adds lumens.
source/Atmoos.Quantities.Units/Si/Derived/Illuminance/Lux.ai.cs Adds lux.
source/Atmoos.Quantities.Units/Si/Derived/ElectricalConductance/Siemens.ai.cs Adds siemens.
source/Atmoos.Quantities.Units/Si/Derived/Coulomb.ai.cs Adds coulombs.
source/Atmoos.Quantities.Units/Si/Derived/Capacitance/Farad.ai.cs Adds farads.
source/Atmoos.Quantities.Units/readme.md Catalogues the new units.
source/Atmoos.Quantities.Units/NonStandard/MagneticFluxDensity/Gauss.ai.cs Adds gauss.
source/Atmoos.Quantities.Units/NonStandard/MagneticFlux/Maxwell.ai.cs Adds maxwell.
source/Atmoos.Quantities.Units/NonStandard/Illuminance/FootCandle.ai.cs Adds foot-candles.
source/Atmoos.Quantities.Units/NonStandard/DynamicViscosity/Poise.ai.cs Adds poise.
source/Atmoos.Quantities.Units/NonStandard/Angle/Turn.ai.cs Adds turns.
source/Atmoos.Quantities.Units/NonStandard/Angle/Gradian.ai.cs Adds gradians.
source/Atmoos.Quantities.Units.Test/VolumetricFlowRateTest.ai.cs Tests flow-rate conversions.
source/Atmoos.Quantities.Units.Test/TorqueTest.ai.cs Tests torque measures.
source/Atmoos.Quantities.Units.Test/Operators/RotationalDynamicsTest.ai.cs Tests torque operators.
source/Atmoos.Quantities.Units.Test/Operators/PhotometryTest.ai.cs Tests photometric operators.
source/Atmoos.Quantities.Units.Test/Operators/KinematicsTest.ai.cs Tests angular kinematics.
source/Atmoos.Quantities.Units.Test/Operators/FluidDynamicsTest.ai.cs Tests fluid-dynamic operators.
source/Atmoos.Quantities.Units.Test/Operators/ElectrodynamicsTest.ai.cs Tests conductance operators.
source/Atmoos.Quantities.Units.Test/Operators/ElectricalEngineeringTest.ai.cs Tests electrical and magnetic laws.
source/Atmoos.Quantities.Units.Test/Operators/DynamicsTest.ai.cs Tests mechanical operators.
source/Atmoos.Quantities.Units.Test/MassFlowRateTest.ai.cs Tests mass flow rate.
source/Atmoos.Quantities.Units.Test/MagneticFluxTest.ai.cs Tests magnetic flux units.
source/Atmoos.Quantities.Units.Test/MagneticFluxDensityTest.ai.cs Tests flux-density units.
source/Atmoos.Quantities.Units.Test/LuminousIntensityTest.ai.cs Tests luminous intensity.
source/Atmoos.Quantities.Units.Test/LuminousFluxTest.ai.cs Tests luminous flux.
source/Atmoos.Quantities.Units.Test/IlluminanceTest.ai.cs Tests illuminance conversions.
source/Atmoos.Quantities.Units.Test/ElectricChargeTest.ai.cs Tests electric charge.
source/Atmoos.Quantities.Units.Test/ElectricalConductanceTest.ai.cs Tests conductance conversions.
source/Atmoos.Quantities.Units.Test/DynamicViscosityTest.ai.cs Tests viscosity conversions.
source/Atmoos.Quantities.Units.Test/DensityTest.ai.cs Tests density conversions.
source/Atmoos.Quantities.Units.Test/CapacitanceTest.ai.cs Tests capacitance conversions.
source/Atmoos.Quantities.Units.Test/AngleTest.ai.cs Tests angular units.
source/Atmoos.Quantities.Units.Test/AmountOfSubstanceTest.ai.cs Tests amount of substance.
source/Atmoos.Quantities.Test/SystemOfQuantitiesTest.cs Tests dimensional definitions.
source/Atmoos.Quantities.Test/Serialization/QuantityFactoryTest.cs Tests new scalar deserialisation.
source/Atmoos.Quantities.Test/Parsing/ModelParserTest.cs Tests parsing new base quantities.
source/Atmoos.Quantities.Test/Dimensions/ToolsTest.cs Updates dimension-interface ordering.
source/Atmoos.Quantities.Test/Core/DimensionConstraintTest.ai.cs Tests generic dimension contracts.
.github/copilot-instructions.md Adds repository domain guidance.
.github/agents/new-unit.agent.md Refines unit-generation guidance.
.github/agents/new-quantity.agent.md Refines quantity change classification.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread source/Atmoos.Quantities/Physics/MechanicalEngineering.cs Outdated
Comment thread source/Atmoos.Quantities/Physics/ElectricalEngineering.cs Outdated
Comment thread source/Atmoos.Quantities/Dimensions/ElectricalDimesions.cs Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 80 out of 80 changed files in this pull request and generated no new comments.

Suppressed comments (6)

source/Atmoos.Quantities/Creation/Creators.cs:94

  • The newly supported chaining from a Quotient has no tests; no test currently calls .Per(...).Times(...) or .Per(...).Per(...). Add coverage for all four methods, including powered terms, so numerator/denominator placement and conversion scaling are verified.
    source/Atmoos.Quantities/Creation/Creators.cs:121
  • The new Power chaining surface is also untested. Add tests for multiplying and dividing a powered measure by both scalar and powered measures, checking formatting and round-trip conversion; otherwise regressions such as applying an exponent twice would not be detected.
    source/Atmoos.Quantities/Quantities/Capacitance.ai.cs:8
  • ICapacitance is defined as charge per potential, but this quantity only implements the scalar contract. Consequently consumers cannot construct or convert capacitance with the natural C/V composite measure, unlike the other compound quantities added here. Implement IQuotient<Capacitance, ICapacitance, IElectricCharge, IElectricPotential>, add the corresponding Of/To overloads, and cover that representation in the tests.
    source/Atmoos.Quantities/Creation/Creators.cs:69
  • The new chaining behaviour for an existing Product is not exercised by the test suite: there are no chained .Times(...).Times(...) or .Times(...).Per(...) calls. Add tests that verify both the resulting representation and conversion factors, including a powered right-hand term, because errors here affect every higher-order composite measure.

This issue also appears in the following locations of the same file:

  • line 91
  • line 118
    .github/copilot-instructions.md:18
  • Use the adverb “exhaustively” here so the sentence is grammatical.
  - exhaustive lists all quantities

source/Atmoos.Quantities/Physics/MechanicalEngineering.cs:48

  • This and the other newly added operators in the pre-existing Kinematics type are not covered by a type-level AiAttribute, while the angular operators below are annotated individually. Add the required model metadata to each AI-generated public operator (momentum, impulse, torque, specific energy, and their inverse operations) so provenance is not lost.

@github-actions

Copy link
Copy Markdown

Code Coverage

Package Line Rate Branch Rate Health
Atmoos.Quantities.Units 100% 100%
Atmoos.Quantities.Serialization.Text.Json 98% 82%
Atmoos.Quantities 84% 76%
Atmoos.Quantities.Serialization.Newtonsoft 99% 89%
Summary 87% (1469 / 1691) 78% (289 / 370)

Minimum allowed line rate is 60%

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 81 out of 81 changed files in this pull request and generated 3 comments.

Comment on lines +18 to +19
public static ElectricalConductance Of<TUnit>(in Double value, in Creation.Scalar<TUnit> measure)
where TUnit : IElectricalConductance, IInvertible<IElectricalResistance>, IUnit => new(measure.Create(in value, static f => ref f.InverseOf<TUnit, IElectricalResistance>()));
public static Time operator /(in Angle angle, in AngularVelocity angularVelocity) => Create<Time>(angle.Value / angularVelocity.Value);

[Ai(Model = "GPT", Version = "5.3", Variant = "Codex")]
public static AngularVelocity operator /(in Angle angle, in Time time) => Create<AngularVelocity>(angle.Value / time.Value);
public interface IDimensionless<TSelf> : IDimension
where TSelf : IDimensionless<TSelf>
{
static Dimension IDimension.D { get; } = Unit.Identity;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants