Add ai generated quantities - #112
Open
atmoos wants to merge 33 commits into
Open
Conversation
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
Quotienthas 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
Powerchaining 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 ICapacitanceis defined as charge per potential, but this quantity only implements the scalar contract. Consequently consumers cannot construct or convert capacitance with the naturalC/Vcomposite measure, unlike the other compound quantities added here. ImplementIQuotient<Capacitance, ICapacitance, IElectricCharge, IElectricPotential>, add the correspondingOf/Tooverloads, and cover that representation in the tests.
source/Atmoos.Quantities/Creation/Creators.cs:69- The new chaining behaviour for an existing
Productis 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
Kinematicstype are not covered by a type-levelAiAttribute, 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.
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; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.