Skip to content

Looking for a challenge? Interesting projects for contributors #266

@stfnp

Description

@stfnp

This is a collection of issues that might be a fun weekend project (or more) for interested contributors. They are fairly self-contained and don't require much familiarity with VirtualBow, but would have a big impact. I can provide more detailed information and guidance on request.

Clothoid spline curves

The profile curve in VirtualBow is described by segments of various types, among them a cubic spline with user-supplied control points. As described by the links in #265, clothoid splines have many advantages over polynomial splines and might be a good fit for VirtualBow. Unfortunately they also come with their own disadvantages. Therefore the task would be to experiment with Clothoid splines, maybe starting with a Python prototype, and see if they are a viable alternative. The end goal is an interpolation method with the following properties:

  • Input: List of control points (x, y) and a starting angle
  • Output: Spline curve that is parameterized by arc length and that fits the control points nicely with minimum overall curvature
  • The fitting of the spline curve must be fast/efficient enough for interactive editing

Export of the bow geometry

Issue #91 contains some preliminary work in Python for exporting the bow geometry as STEP and STL files for integrating with CAD programs. To push this feature over the finish line, the Python code would have to be ported to Rust and some of the dependencies (i.e. scipy for interpolation) replaced with Rust alternatives.

Parallelization of the simulation

The simulation is currently single-threaded, but there are points where the work could possibly be distributed (see issue #207). It is unclear though if this actually speeds up the simulation. Since the new solver is written in Rust, restructuring the code for parallel execution, even just for testing, is not so easy. On the plus side there are nice libraries like rayon that we could use.

Linear cross section analysis

Linear cross section analyis #264 is an approach for numerically determining the stiffness properties of arbitrarily complex beam cross sections. Other than analytical methods based on laminate theory, linear cross section analysis exactly captures all the various deformation modes of a beam section like warping, shear, torsion and their coupling with each other. The input is a description of the cross section's geometry and material properties, the output is a 6x6 stiffness matrix for all spatial degrees of freedom of the section.

The Julia package GXBeam contains an implementation of linear cross section analysis that we could try to port to Rust. The theory behind it is documented in the references [1] and [2] below. The result could be published as its own crate since it is completely independent from VirtualBow.

Linear cross section analysis would enable us to tackle the task of computing the torsional stiffness and stability of bows (see also #106), which is an important missing piece in VirtualBow's capabilities.

[1] Giavotto et al. - Anisotropic beam theory and applications

[2] BECAS User Guide

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions