Lots of work on structures modeling and FEA mesh generation – with a few other small things too. If you aren’t into structures, you could be forgiven for skipping this version. On the other hand, there is no downside, so why not update and stay current.
If you’re into structures and your wish isn’t fulfilled by this release, I expect a lot more work in this area in the next few months. Expect some larger changes in this area by late fall.
There are other changes in the works that aren’t ready for this release, so it isn’t all structures either.
Enough vagary, lets get specific… I’m going to try something a little different here (let me know if it is a positive) — I’m going to paste in the SHA of the approximate end to each feature. So, if you’re following along at home, you can see what is up. I’ll do this summary in order of the commits, so the start of each range is the commit after the previous range. Occasionally other things slip in, so remember this is approximate.
Also, a lot of the progress in this release was actually done in Code-Eli (our surface library), so check that out if you want to see how the sausage is made.
6a37ad The Update process when structures are involved has been improved. Think the faster update changes a few versions back — but for ribs and spars. This should mean that interacting with a structures model is _much_ faster.
32b0ee Finite line subsurfaces have been added — and added to structures. You can now add a subsurface line that starts at (Us,Ws) and ends at (Ue,We). These lines do not enclose an area and can not be used to tag tris, but they do enforce a line in a mesh and can be used to form beam elements in the FEM. This allows stiffeners to span a limited distance of a model.
b57244 Initial support for orthotropic materials — adding them in the GUi, writing them to NASTRAN and CalculiX files, etc.
21682e Add API calls to evaluate RST volumetric coordinates and also invert XYZ points back to RST. This is intended to support structural optimization – including cases where the structure and mesh come from outside of OpenVSP.
f6ab38 Add support for writing material orientation information to CalculiX files. Previously, NASTRAN files included information that oriented each element with the parent surface’s U direction. CalculiX gets orientation data on a per-part basis (not per-element). Orientation can now be specified in more than a dozen ways and both NASTRAN and CalculiX files will do their best to represent the user’s intent.
d0e54a User supplied offsets can now be applied to node and element numbering for NASTRAN and CalculiX files. This is useful when combining two files into a larger assembly.
597f9a The ability to add fixed points on both skins and other structure parts was fixed. An un-needed complex iterative algorithm was removed from this process. Some crashes should be avoided.
3e47ad Add the ability to trim FEA structures by groups of FEA parts. This makes it easy to trim the ribs and skin in front of the front spar or to remove the skin and rib tails from where an aileron or flap goes. This only applies to the mesh (not the STEP/IGES files) at this time.
ed0051 A variety of bug fixes and cleanups.
486e23 Make mesh generation process more verbose. The added messages should be useful in cases where things go wrong.
5253d6 Update to the latest version of the nanoflann nearest neighbor library. No particular need, but since an additional use of nanoflann was going to be added, it seemed appropriate to check for the latest version.
50751a Refactor MergeBorderEndPoints algorithm from mesh generator. The MBEP algorithm was usually not a problem for CFDMesh, but could become very expensive for complex FEA meshes. It was fundamentally re-written to be faster. My test case went from 7.5 minutes to 20 ms. Nothing like a 20,000x speedup.
86af9e Modify Triangle library to avoid infinite loop.
53d4d5 Add locking to meshing console output. This prevents crashes due to race conditions of output to the console. This became prevalent after the earlier added verbosity changes.
b1ccea Add a bunch of debugging output for intersection and meshing processes. Will be helpful tracking down issues in the future.
4724f9 Clean up structures GUI code a bit.
32a518 Implement save/restore of trim parts. Trim parts were added earlier, but save/restore was skipped.
0fc9fc Misc. changes to improve structures
367269 Add API call with ray-shooting based inside/outside test. The algorithm is based on the one from CFDMesh, but it has been re-implemented in Code-Eli so it can easily be called from OpenVSP.
699a1e Add API for conversion from LMN to RST coordinates and reverse. LMN is similar to RST, but it is linear in distance — where RST’s behavior is determined by the UW parameter speed.
0849a3 Beautify laminate material notation displays. Also only write the utilized materials to the CalculiX and NASTRAN files.
6b9132 Changes to speed up FindRST API call.
0b4265 Update AngelScript to latest version
dcce24 Fix problem with airfoil points API call from Python
390bc8 Fix CompGeom behavior with half-mesh and negative volumes. Discovered by Andy Hahn.
- API RST volumetric coordinate evaluation XYZ=f(RST)
- API RST coordinate inversion RST=f(XYZ)
- API LMN/RST coordinate conversion
- API for component inside/outside check
- Structures GUI much faster
- Finite line subsurfaces – also in structures
- Orthotropic material support in GUI
- Write orthotropic materials to NASTRAN and CalculiX
- Specify material orientation method on per-part basis
- Write material orientation information for CalculiX
- Node and element offsets for FEA files
- Add FEA part and mesh trimming by other structural parts
- Increased verbosity of output during intersection and meshing
- AngelScript updated to 2.35.1
- nanoflann updated to 1.4.2
- Fix specification of fixed points in FEA mesh
- Rewrite MergeBorderEndPoints to be fast
- Prevent infinite loop in Triangle that would cause crashes
- Fix crashes from intersection / meshing console
- Add more debugging output for intersection / meshing process
- Fix default Calculix file extension
- Only write utilized materials to CalculiX files
- Fix setting airfoil points from Python API
- Fix problem with CompGeom and negative components with half mesh
- Many small bug fixes and cleanups