Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Potential solver improvements from Dune 3D #1459

Open
carrotIndustries opened this issue May 5, 2024 · 1 comment
Open

Potential solver improvements from Dune 3D #1459

carrotIndustries opened this issue May 5, 2024 · 1 comment

Comments

@carrotIndustries
Copy link

Dune 3D uses the solver from solvespace with some patches to make it faster for the use case in Dune 3D. Since there seems to be interest in what I did, here's a brief explanation:

In contrast to Solvespace, Dune 3D doesn't use use transformed points such as POINT_N_TRANS and its friends for extrusions for example. In solvespace, an extrude group only adds (the length of?) the extrude vector to the group's equations and expresses the positions of the the generated entities by means of transformed points.

In Dune 3D instead, all of the generated entities add parameters for their points. These degrees of freedom then get eliminated by adding corresponding equations.

It's these equations that bog down the solver performance dramatically. Since these parameters and equations don't add or remove any degrees of freedom, my implementation finds them and solves them symbolically after the rest of the system has been solved.

As solvespace doesn't generate that many parameters/equations that don't change the DOFs in the first place, I don't think that this optimization brings much benefit to solvespace.

@Evil-Spirit
Copy link
Collaborator

For contrast, in NoteCAD there nothing created. Only virtual entities which really not existed in memory. They can be created on-the-fly by request (by id or selection request). I've tried to implement this conception for arrays.

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

No branches or pull requests

2 participants