For the past year or so I have been working on a complete rewrite (and redesign) of the VirtualBow solver, i.e. the part that does the numerical computations. Unlike the old solver, the new one is written in Rust instead of C++ (see also #215). Even though the new solver is not yet finished, it has reached a state where it can be integrated into the main application in order to make testing and filling in missing features easier. This is currently happening on the branch integrate-new-solver (not usable yet).
This issue is for tracking the progress and the remaining tasks and will be updated frequently.
Remaining tasks for the integration
[x] Include Rust compilation in the main build process
[x] Make CI/CD pipeline work
[x] Run solver tests in the pipeline
[x] Call new solver from main application
[x] Finalize new solver's output format
[x] Load new solver output from the main application
Remaining tasks/missing functionality of the new solver
[x] Add back test test_load_output
[ ] Evaluation and output of layer stresses
[x] Dynamic simulation, including output of correct arrow position
[x] Damping of limb and string
[x] Manually test new string damping to verify that it does something
[x] New string model without penalty contacts
[x] Split solver into two crates: virtualbow-lib and virtualbow-cli and add back integration tests for the command line interface.
More detailed solver issues
[ ] Progress estimation for dynamic simulation
[ ] Check for/fix duplicate time point in the dynamic output
[ ] Document test example of nonlinear pendulum
[ ] Extend static tests to bows with recurves
[ ] Implement stiffness of the force/draw curve
[x] Timestep estimation or control for the dynamic simulation
[x] Add missing documentation for eigenvalue solver
[ ] Check for self-intersecting geometry (curvature too high for thickness)
[x] Implement Error trait for all custom errors
[x] In solvers, check if states are finite and abort early if not
[x] Better method than trapezoidal rule for segment stiffness matrices?
For the past year or so I have been working on a complete rewrite (and redesign) of the VirtualBow solver, i.e. the part that does the numerical computations. Unlike the old solver, the new one is written in Rust instead of C++ (see also #215). Even though the new solver is not yet finished, it has reached a state where it can be integrated into the main application in order to make testing and filling in missing features easier. This is currently happening on the branch integrate-new-solver (not usable yet).
This issue is for tracking the progress and the remaining tasks and will be updated frequently.
Remaining tasks for the integration
Remaining tasks/missing functionality of the new solver
test_load_output
virtualbow-lib
andvirtualbow-cli
and add back integration tests for the command line interface.More detailed solver issues
soa_derive
with https://github.com/tim-harding/soa-rsFinal details/cleanup
unwrap()
andexpect()
calls in the codeKeep for later
Issues that need to be revisited after integrating the new solver
244
234
230
227
215
211
207
189
179
157
156
154
138
137
135
128
119
114
112
111
110
84
82
70
63
41
30