StartUpDG.jl follows the interpretation of semantic versioning (semver) used in the Julia ecosystem. Recent changes will be documented in this file for human readability.
Most of the major changes are tracked in this PR. Some descriptions of other changes are listed below.
- Generation of cut-cell meshes using
Subtriangulation
quadrature by default, which ensures positive quadrature weights. The old behavior is retained by specifying aMomentFitting
quadrature type. - Added
subcell_limiting_operators
, which constructs multi-dimensional versions of subcell operators used in Lin, Chan (2024). These subcell operators are constructed from sparse operators returned bysparse_low_order_SBP_operators(rd::RefElemData)
.
NamedArrayPartition
was moved to RecursiveArrayTools.jl.- The required Julia version was increased to v1.10. This was to make StartUpDG.jl compatibility with RecursiveArrayTools.jl v3.4+ (see above).
- Removed SimpleUnpack.jl as a dependency. Loading StartUpDG.jl will no longer reexport
@unpack
, since destructuring via(; propertyname) = x
is supported natively in Julia 1.7 and up. - Updated to NodesAndModes v1.0+, which changed the ordering of triangle nodes to make them consistent with tet node ordering.
- We introduced a
MultidimensionalQuadrature
type. AllPolynomial
approximation types now utilize eitherMultidimensionalQuadrature
orTensorProductQuadrature
as a type parameter. The previous type parameterDefaultPolynomialType
is now simply used to determine the default quadrature type parameter. Note that this is internal behavior and should not impact standard usage of StartUpDG.jl. - Removed Requires.jl in favor of package extensions for Plots.jl and SummationByPartsOperators.jl dependencies.
- Added support for pyramid reference elements and meshes
- Introduced unified
read_Gmsh_2D(...)
functions - Specializations of
RefElemData
forPolynomial(TensorProductQuadrature(quad_rule_1D))
approximation types - Add docs on difference between StartUpDG.jl and Nodal DG Matlab codes
- removed
approximationType
as a property ofRefElemData
- Made
Base.show
output less verbose. - Deprecated CamlCase Gmsh read functions
- Add
Polynomial{Gauss}
type
- add type parameter to
Polynomial
- Switch from
LittleDict
toMultipleRefElemData
for hybrid meshes
- the
NamedArrayPartition
array type, which is similar toComponentArrays
but with the storage structure ofArrayPartition
. This is used for the storage ofMeshData
fields in hybrid and cut-cell meshes, and can be used for the storage of solutions compatible with the OrdinaryDiffEq.jl framework. - added precomputed differentiation, face interpolation, mass, and lifting matrices for
CutCellMesh
types. These are specified usingmd = MeshData(...; precompute_operators=true)
, and are stored inmd.mesh_type.cut_cell_operators
.
- The
MeshData
fieldsVXYZ
andEToV
have been moved into aVertexMappedMesh
type. However, they can still be accessed as a property ofMeshData
(e.g.,md.VX
will still work). - Added a
CurvedMesh
type forMeshData
constructed from modified nodal coordinates, e.g., using the constructorMeshData(rd, md, xyz...)
.CurvedMesh
stores the original mesh type as a field. Previously, there was no way to distinguish a curvedMeshData
from a non-curved one. - Changes related to element types:
- upstream change in NodesAndModes.jl: the abstract type
AbstractElemShape
is now parametrized by the dimension, e.g.,Line <: AbstractElemShape{1}
,Tri <: AbstractElemShape{2}
. - the spatial dimension
Dim
parameter inMeshData
is now inferred from the element type throughelem <: AbstractElemShape{Dim}
- the
PhysicalFrame
type now has leading type parameterPhysicalFrame{NDIMS} <: AbstractElemShape{NDIMS}
- upstream change in NodesAndModes.jl: the abstract type
PhysicalFrame
's fields are now restricted to be typeSVector
only (instead ofUnion{SVector, Tuple}
)
- the
Nplot
field has been removed fromRefElemData
- all usages of
ComponentArrays
have been replaced byNamedArrayPartition
- the deprecated
MeshData(md::MeshData, rd::RefElemData, xyz...)
constructor has been removed
- the constructor for
MeshData
with all fields as well asVXYZ
,EToV
as arguments has been deprecated and will be removed in the next breaking release. This would only be used when extendingMeshData
. The standardMeshData
constructor involvingVXYZ
,EToV
, andrd::RefElemData
is unchanged. - the constructor for
RefElemData
with all fields as well asNplot
has been deprecated and will be removed in the next breaking release. This is only used if extendingRefElemData
.