Dimensional analysis of a formula: MathS.Dimensions.Of and DimensionlessGroups
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 35/100
Direção de pesquisa
Review the design points in the issue, then inspect the proposed implementation in Functions/Dimensions/* and Convenience/MathS.Dimensions.cs, along with Tests/UnitTests/Convenience/DimensionsTest.cs. Run the listed unit tests and compare their coverage with the stated consistency, inconsistency, and undetermined cases; the issue says a pull request will follow once the design is accepted.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
What it is. Given the dimension of each variable (a map Variable → Dimension over the seven SI base dimensions, with rational exponents), say whether a formula is physically meaningful, what dimension it has, and where it stops making sense; and give the Buckingham π groups of a set of variables.
var (L, T) = (Dimension.Length, Dimension.Time);
var dims = new Dictionary<Entity.Variable, Dimension> { ["g"] = L / T.Pow(2), ["h"] = L, ["t"] = T };
MathS.Dimensions.Of("sqrt(2 g h)", dims); // Consistent: L T^-1
MathS.Dimensions.Of("h + g t", dims); // Inconsistent at h + g * t: h has dimension L and g * t has dimension L T^-1, ...
// pipe: rho M L^-3, v L T^-1, d L, mu M L^-1 T^-1
MathS.Dimensions.DimensionlessGroups(new Entity.Variable[] { "rho", "v", "d", "mu" }, pipe); // [ mu / (rho * v * d) ]
Why here. Units libraries (UnitsNet) check values; nothing in .NET checks a formula. The walk needs every node type, which the kernel has.
Design points to agree on.
- The dimension map is passed, not attached to variables, so nothing about printing, parsing or simplification changes, and the type layer of #1237 / #1019 is not pre-empted.
- Three-valued:
Consistent,Inconsistent(with the subexpression and a reason),Undetermined(undeclared variable, unread node, dimensional base to a symbolic power). Never a guess. - Nothing is simplified first:
sin(x) - sin(x)withxa length is inconsistent. - A literal
0oroofits any dimension where added or compared (v = 0). - Exponents of a dimensional base must be rational;
L^piis inconsistent.
Packaging (Packaging.md §4). No clause fires: no dependency, no floor raise, no data, composes the kernel; not on any default path, so (B) does not apply. → kernel. A UnitsNet bridge would be (D) and separate; not part of this.
Implementation, for judging the design against working code. Branch feat/dimensional-analysis, one commit on master 87a0eff: Functions/Dimensions/*, Convenience/MathS.Dimensions.cs, Tests/UnitTests/Convenience/DimensionsTest.cs (38 cases), +54 lines of PublicApi.txt. UnitTests 18335 passed / 13 skipped, FSharpWrapperUnitTests 134 passed. No existing answer moves, so no BREAKING-CHANGES entry. The pull request will follow Accepted.
Worked use, together with the shader-source feature (#2293). A water wave from ω² = g k tanh(k h): the check gives ω the dimension T⁻¹ and rejects the shallow-water typo ω = √(g k h) inside the phase; the π groups are k A, k h and g k t².
Milestone: 2.7.0 (additive).
- Linguagem predominante
- C#
- Estrelas
- 831
- Forks
- 79
- Merge médio
- 1h 12min
- PRs com merge (30d)
- 518
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de ASC-Community/AngouriMath
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
ASC-Community/AngouriMath#2220 · 4 comentários ·
Mantenedores costumam responder em até 1 dia
-
Opinions wanted
Dificuldade 4/5 Mais de uma semana Facilidade para iniciantes 15/100
ASC-Community/AngouriMath#2319 · 4 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 18/100
ASC-Community/AngouriMath#2298 ·
Mantenedores costumam responder em até 1 dia
-
The kernel under WebAssembly: 1.26 MB Brotli over the bare runtime, and 0.2 s to the first SimplifyAberta
Dificuldade 3/5 Meio dia Facilidade para iniciantes 48/100
ASC-Community/AngouriMath#2296 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
ASC-Community/AngouriMath#2293 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de ASC-Community/AngouriMath
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
RadicalCSG/com.chisel#192 ·
Mantenedores costumam responder em até 1 dia
-
area-testing p2-post-1.0 technical-debt
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
Bug good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
RazorConsole/RazorConsole#447 ·
Mantenedores costumam responder em até 1 dia
-
CloudEventsMiddleware decodes JSON string data for `+json` content typesTalvez já em andamento @RaphaelFakhri assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
dapr/dotnet-sdk#1964 ·
Mantenedores costumam responder em até 1 dia
-
bug P3
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia