Skip to content

Releases: gismo/gsStructuralAnalysis

December 2023 Release (v23.12)

29 Dec 19:44
Compare
Choose a tag to compare

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

January 2022 Release

09 Dec 08:33
e770314
Compare
Choose a tag to compare
  • Static solves can be done by gsStaticNewton and gsStaticDR (Dynamic Relaxation method), both inheriting from gsStaticBase
    • Provided base class for ALMs. All ALMs have a separate class now, and the singular point approach method is implemented in the base class.
    • Eigenvalue problems (Buckling, Modal) have a base class as well, and gsBucklingSolver and gsModalSolver only provide a top-layer assigning the right matrices.

Full Changelog: v21.6...v22.1

June 2021 Release

23 Jun 12:32
Compare
Choose a tag to compare

This is the initial release of the gsStructuralAnalysis module within G+Smo! It provides the following features:

  • Static, Modal, Buckling, Arc-Length and Time Integration solvers to solve many structural analysis problems at hand,
  • Spectra is used for eigenvalue computations for large systems, e.g. to determine structural stability.
  • Implementation of residuals and Jacobians via simple functions, in which user-defined sub-routines can be embedded,
  • Many examples for structural analysis applications with the gsKLShell module (v21.6) and a few using gsElasticity