mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-09-21 02:18:56 +00:00
refactor: Make Point immutable
Changed Point from 'mutable struct' to 'struct'. The Dict for fields remains a reference type, so field updates via setindex! and update! still work correctly. This change improves type stability and enables better compiler optimizations. Benefits: - Better compiler optimizations (immutable types) - Type stability improvements - Stack allocation when possible - No breaking changes (Dict fields still mutable) Tests: All 157 tests passing
This commit is contained in:
+4
-3
@@ -5,11 +5,12 @@ const Node = Vector{Float64}
|
||||
|
||||
abstract type AbstractPoint end
|
||||
|
||||
mutable struct Point{P<:AbstractPoint}
|
||||
id::UInt # Changed from Int to match Gmsh (Issue #267)
|
||||
# Immutable Point - Dict is a reference type so this is safe
|
||||
struct Point{P<:AbstractPoint}
|
||||
id::UInt
|
||||
weight::Float64
|
||||
coords::Tuple{Vararg{Float64}}
|
||||
fields::Dict{String,AbstractField}
|
||||
fields::Dict{String,AbstractField} # Reference type, can still be modified
|
||||
properties::P
|
||||
end
|
||||
|
||||
|
||||
@@ -513,7 +513,7 @@ this returns a new instance with updated integration points.
|
||||
"""
|
||||
function with_integration_points(element::Element{N,NIP,M,B}, ips::NTuple{NNEW,IP}) where {N,NIP,M,B,NNEW}
|
||||
return Element{N,NNEW,M,B}(element.id, element.connectivity, ips,
|
||||
element.dfields, element.sfields, element.properties)
|
||||
element.dfields, element.sfields, element.properties)
|
||||
end
|
||||
|
||||
""" Find inverse isoparametric mapping of element. """
|
||||
|
||||
Reference in New Issue
Block a user