Skip to content

December 2023 Release (v23.12)

Latest
Compare
Choose a tag to compare
@hverhelst hverhelst released this 29 Dec 19:44
· 40 commits to main since this release

What is new?

Major changes with respect to the previous release. The release accompanies the v23.12 releases of gsUnstructuredSplines, gsKLShell, the v23.12.0 release of gismo and the publication of the PhD thesis of @hverhelst.

The highlights of this release are given below.

Re-structuring directories

A src folder has been included, with different directories for different source files. This has been done to create a better overview of the library. The following folders are introduced

  • src/gsALMSolvers for Arc-Length Methods and related classes
  • src/gsDynamicSolvers for dynamic solvers (work in progress)
  • src/gsEigenSolvers for eigenvalue problems (linear buckling and modal analysis)
  • src/gsStaticSolvers for static analysis, e.g. the Dynamic Relaxation and Newton-Raphson solver
  • src/gsStructuralAnalysisTools for other files

Furthermore, the examples directory has been split:

  • benchmarks for benchmark problems
  • examples for examples (and applications)
  • solvers for black-box solvers taking XML files

Composition of static solvers (#15)

A new class, gsStaticComposite is introduced. This class allows to stack static solvers. An example:

// Define individual solvers
gsStaticDR<real_t> DRM(M,F,ALResidual);
gsStaticNewton<real_t> NRM(K,F,Jacobian,Residual);
// Put them in a container
std::vector<gsStaticBase<real_t> *> solvers{&DRM,&NRM};
// Solve: first solves DRM, then NRM
gsStaticComposite<real_t> solver(solvers);
solver.initialize();
solver.solve();

Add black-box solvers

The material matrices from gsKLShell can now be read from an XML file. This means that a problem definition can be fully specified from XML. The .cpp files in solvers/ take these XML files and can be used to solve (almost) any problem.

Adaptive Parallel Arc-Length Method (APALM) added (#12)

The code of the APALM has been added! The relevant files are gsAPALM*. The APALM is easily initialized from a gsALMBase class, e.g.

// Initialize an MPI communicator
gsMpiComm comm = mpi.worldComm();
// Define the ALM
gsALMCrisfield<real_t> ALM(Jacobian, ALResidual, Force);
// Define the data container for the APALM
gsAPALMData<real_t,solution_t> apalmData;
// Define the APALM
gsAPALM<real_t> APALM(&ALM,apalmData,comm),

More information can be found in

Verhelst, H. M., Den Besten, J. H., & Möller, M. (2023). An Adaptive Parallel Arc-Length Method. arXiv preprint arXiv:2303.01075.

Adaptive Meshing problems (#15)

Following the development of the Dual-Weighted Residual method in gsKLShell, three examples using gsStructuralAnalysis are added here:

More information can be found in

Verhelst, H. M., Mantzaflaris, A., Möller, M., & Den Besten, J. H. (2023). Goal-Adaptive Meshing of Isogeometric Kirchhoff-Love Shells. arXiv preprint arXiv:2307.08356..

Panel creator (#14)

A small project to make a creator for multi-patch stiffened panels, inspired by the gsNurbsCreator of gismo, has resulted in the gsPanelCreator! This class might be expanded in the future, depending on its use.

What is left?

  • Clean the examples folder
  • Create more dox examples
  • Add a dynamic solver family, using gsDynamicBase as a base class. This is similar to the family of gsALMBase.

Full Changelog: v22.1...v23.12