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 classessrc/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 solversrc/gsStructuralAnalysisTools
for other files
Furthermore, the examples
directory has been split:
benchmarks
for benchmark problemsexamples
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 ofgsALMBase
.
Full Changelog: v22.1...v23.12