Skip to content

Releases: MystranSolver/MYSTRANSolver

MYSTRAN 19.0.0

Choose a tag to compare

@Bruno02468 Bruno02468 released this 29 Jun 05:28
3a5913a

Another major update: more accurate results, faster runs, tidier code, and a whole new validation scheme!

Performance improvements

Like with 18.0.0, we have several changes aimed at improving performance. For starters, @Copper280z added METIS ordering, making SuperLU solves run faster and with less memory in the average case. On the output side, @Copper280z and @Bruno02468 added handmade number-formatting subroutines to replace Fortran FORMATs in LINK9, making that final step run around four times as fast.

Better K6ROT and fixed RFORCE

Thanks to @victorkemp, MYSTRAN has a much-improved support for the K6ROT drilling stiffness feature! The previous implementation yielded weird results in some cases, and often didn't work with the default values most users are accustomed to. Also, RFORCE had several showstopping bugs that @victorkemp too fixed.

Validation

Also mostly thanks to @victorkemp's efforts, this is the first version of MYSTRAN to be released after undergoing a much more thorough validation of results (by comparing them to other output files known to be correct, mostly from different solvers). The results and scripts used to do that are in the MYSTRAN_Validation repository.

BLAS/LAPACK linking

At long last, MYSTRAN finally has full support for linking against any BLAS/LAPACK implementation, such as OpenBLAS. This effort by @Bruno02468 has several aspects to it:

  • MYSTRAN no longer has modified reference BLAS/LAPACK subroutines embedded in its code;
  • The reference implementation is now a submodule;
  • When building, users can pick between between that and another implementation (provided it's installed in their system and findable by CMake);
  • SuperLU uses the same BLAS as everything else;
  • The f2c submodule, needed for SuperLU's embedded CBLAS, is no longer necessary and has been removed.

From a practical standpoint, this means free performance (when using OpenBLAS, at least) and a tidier codebase. When building MYSTRAN, you can now set the CMake option MYSTRAN_BLAS_LAPACK to AUTO, EMBEDDED, or SYSTEM. If your system has more than one option, you might also want to set the BLAS_LIBRARIES and LAPACK_LIBRARIES to whichever one you prefer. The previous option, enable_internal_blaslib still works but now emits a warning as it's deprecated.

Our official Windows binary will be built with the reference BLAS/LAPACK, for consistency.

--version and --licenses

Most open-source licenses require distributing a copy of the license alongside any distributions of the software, and that includes static linking. In order to better comply with that requirement, MYSTRAN binaries are now built with awareness of what libraries are statically linked in, and can print each library and its license by calling it with the --licenses argument.

Since we were already going to auto-generate information about the build, @Bruno02468 decided to go all the way and also added a nice --version argument too, containing useful information such as the version, build type, build flags, build date, and linked libraries. Information that's nice to have in general.

Subcases, modes, and STATSUB

The MYSTRAN internals responsible for the handling of subcases and eigenvectors (modes) has been completely reworked by @Bruno02468. That has given us two new features:

  1. SOL 103 runs can now have subcases!
  2. SOL 105 runs can now have more than two subcases (through STATSUB)!

The first feature is pretty straightforward: before, using subcases in a SOL 103 run was not allowed, since subcases and modes shared the same internals.

The second is a bit more involed: you still have to create at least one static and at least one eigen (buckling) case. Before, there had to be exactly two. Now, if there are just the two, it all still works the same. However, you can now have more than just two! You can specify many static and buckling subcases, and you specify what static subcase a buckling case should use by using the STATSUB case control card. For example, your subcases could look like this:

SUBCASE 1
  LOAD = 11
SUBCASE 2
  STATSUB = 1
  METHOD = 1
SUBCASE 3
  LOAD = 12
SUBCASE 4
  STATSUB = 3
  METHOD = 2

In that example, there's two buckling subcases, 2 and 4, using the static load cases 1 and 3 respectively. They can come in any order, of course, and a static case can be used by more than one buckling case.

It's a feature present in several commercial solvers, and was only possible with a thorough revamping of the way buckling runs share their data across load steps.

Output fixes/improvements

There have been several changes to output requests and generation:

  • Removed some special characters;
  • Added END OF JOB marker
  • Corrected subcase/eigenvector heading before tables;
  • Fixed headerless blocks in F06;
  • Fixed solid results in OP2;
  • Solid results now default to material coordinates (STR_CID=-2)
  • SOL 105 runs can have GPFORCE requests again;
  • Output requests without specifiers now go to both the F06 and OP2;
  • Output requests with PRINT alone go to the F06 only;
  • Output requests with PLOT alone go to the OP2 only;
  • CELAS force and stress signs was flipped, now fixed;
  • Shell strains were were mostly wrong, also fixed.

All contributions

It's a big update, we can't list every single contribution... But you can always check out the pull requests below or the commits since 18.0.0 if you want to know everything we got up to!

MYSTRAN 18.0.0

Choose a tag to compare

@Bruno02468 Bruno02468 released this 21 Apr 03:15
7f87b36

This major update brings massive performance improvements, a couple new features (and removal of some obsolete ones), and many bug fixes.

General performance improvements

The most noticeable change users will be able to notice is are massive performance improvements. We've seen speedups from 2x to 4x all the way to 10x.

This was achieved through optimisation of several loops and removing unused cruft. Props to @Copper280z and @victorkemp for their huge effort!

Multithreaded SuperLU support

Support has been added for the multithreaded variant of SuperLU. Some larger decks can run over twice as fast!

However, due to the fiddly nature of SuperLU's run-time memory scaling parameters, this has not been made into a default feature.

When building MYSTRAN, one can enable this feature with the -DUSE_SUPERLU_MT=yes. This requires OpenMP in your system, but most Linux and Windows (MSYS2) will already have it. If you do decide to use it, keep an eye on the SPIENV 6/7/8 PARAMs, especially SPIENV7. See PR #182 by @Bruno02468 for details.

F04 and ANS removed

The subroutine timing and log file (F04) is obsolete when debuggers and profilers exist -- and it required every source file to have a header and a footer.

The ANS file contained data similar to F06 but more machine-friendly. In the presence of OP2 and F06 tools (like pyNastran and nastools respectively), it can also be considered obsolete.

Both these formats required a ton of repetitive code for no tangible benefit, and @victorkemp undertook the grueling effort to rid us of them both.

The state of Lanczos...

This update brings several changes to the Lanczos eigenvalue extraction method. Two pieces of good news and one breaking change (warranting the major-version increase).

SuperLU for Lanczos

Thanks to @victorkemp, Lanczos solutions can now use SuperLU for the factorization step, and do so by default. It's a massive performance increase and memory usage decrease: decks that used to take hours and gigabytes now take minutes and megabytes.

Adaptive Lanczos driver for frequency-band mode

Frequency-band Lanczos mode (where you don't specify a fixed number of eigenvalues, just a frequency band) was essentially broken. The inertia-based calculation required a band matrix, which we no longer have due to the removal of BANDIT. It's not viable to run it for non-band matrices, hence the EIGESTL parameter, only allowing the estimator to run for decks with 5000 or less L-set DoF. Increasing this value just allowed the estimator to run for hours.

Instead, an adaptive Lanczos driver was implemented by @Bruno02468. Put very simply, it starts with 10 modes and doubles the amount until the number of in-band modes found becomes stable (or reaches the absurd limit of 10240). There's a bit more to it than that, but that's the gist.

What matters is, frequency-band mode now works for >5k L-set DoF.

Removed EIGRL continuation card

The EIGRL continuation card has been removed. It represented an incompatibility with major Nastran-compatible solvers, its fields were poorly-explained, and none of them should be set by the user.

Other fixes

There's also been many other bug fixes: K6ROT, MPCs, progress counters, timestamps...

Feel free to check the commits since 17.0.0 or the PRs below for details:

MYSTRAN 17.0.0

Choose a tag to compare

@Bruno02468 Bruno02468 released this 14 Oct 06:47
2b7547b

MYSTRAN 17.0.0

This update has been in the works for a while, and several new features have been introduced.

Among the additions, the most relevant are the MITC shell and the QUAD8 element -- both courtesy of @victorkemp.

There have also been bug fixes and performance improvements.

For details, check out the list of pull requests below, or the commit-level diff between 16.0.0 and 17.0.0 if you prefer.

Pull requests

MYSTRAN 16.0.0

Choose a tag to compare

@Bruno02468 Bruno02468 released this 06 May 01:10
f0ad505

This update contains several fixes, including breaking changes to the output.

Changes

All commits since 15.2.1: 15.2.1...16.0.0

MYSTRAN 15.2.1

Choose a tag to compare

@Bruno02468 Bruno02468 released this 31 Aug 16:24
4004704

This update contains improvements to the input parser and fixes several crashes.

Changes

All commits since 15.2.0: 15.2.0...15.2.1

MYSTRAN 15.2.0

Choose a tag to compare

@Bruno02468 Bruno02468 released this 08 Apr 03:21
f3076b5

This update implements a significant improvement to the RBE3 element (which would hardly be possible without the invaluable assistance we got from Victor from the MecWay project), a TUBE2 option for PBARL props, and adds grid point forces in OP2 output.

If you're interested in technical details, see the pull-request-level information:

MYSTRAN 15.1.7

Choose a tag to compare

@Bruno02468 Bruno02468 released this 25 Mar 11:56
68024f3

This update fixes a crash found when running some buckling solutions. Check out GH-44 for details.

MYSTRAN 15.1.6

Choose a tag to compare

@Bruno02468 Bruno02468 released this 14 Mar 19:15
15f51d9

This patch integrates memory bug fixes for buckling decks. See GH-41 for details.

MYSTRAN 15.1.5

Choose a tag to compare

@Bruno02468 Bruno02468 released this 13 Feb 01:34
bf79abf

This update integrates four PRs by @SteveDoyle2:

  • fix PARAM,GRDPNT bug in #21
  • case control no longer throws warnings for PLOT unless it's GPFORCE in #23
  • fixing op2 subcase id in #32
  • op2 gets date correct now instead of faked value #35

All commits compared to previous release: 15.1.4...15.1.5

MYSTRAN 15.1.4

Choose a tag to compare

@Bruno02468 Bruno02468 released this 28 Dec 06:44
8a7e218

This update fixes a memory bug when writing BAR engineering forces to a .ANS file. See GH-14.