mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-10-02 22:31:31 +00:00
feat: Consolidate FEMBase.jl into JuliaFEM (Phase 1 complete)
MAJOR MILESTONE: FEMBase + FEMBasis fully consolidated, JuliaFEM loads! Consolidated files: - src/elements/ (3 files): elements.jl, elements_lagrange.jl, integrate.jl - src/fields/ (1 file): fields.jl (DCTI, DVTI, DCTV, DVTV, etc.) - src/sparse/ (1 file): sparse.jl (SparseMatrixCOO, SparseVectorCOO) - src/assembly/ (2 files): problems.jl, assembly.jl - src/solvers/ (1 file): solvers_base.jl - src/analysis.jl, src/core_types.jl (Node, IP, IntegrationPoint) Changes to JuliaFEM.jl: - Added dependencies: Tensors, Calculus - Removed @reexport using FEMBase (now consolidated) - Added 20+ include statements for consolidated files - Include order: fields → core_types → fembase_compat → sparse → elements Compatibility layer: - Created fembase_compat.jl: Minimal FEMBase submodule for vendor packages - Temporarily disabled vendor-specific Mortar2D functions in solvers_modal.jl Bug fixes: - Changed i == 1 → isequal(i, 1) in integrate.jl (== operator overridden by fields) - Resolved all FEMBasis. namespace references throughout codebase Result: - ✅ JuliaFEM loads successfully on Julia 1.12.1 - ✅ 134 exported symbols (was 171 with separate FEMBase) - ✅ Core types accessible: Seg2, Quad4, Problem, AbstractProblem, etc. - ⚠️ Vendor packages show FEMBase cache warnings (expected, harmless) TODO: - Re-enable Mortar2D functions after vendor consolidation - Field system == operator override needs redesign (Phase 4) - Continue Phase 2: Consolidate remaining vendor packages
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
# License is MIT: see https://github.com/JuliaFEM/JuliaFEM.jl/blob/master/LICENSE
|
||||
|
||||
# AbstractBasis type and interface
|
||||
# Consolidated from FEMBasis.jl package
|
||||
# Consolidated from jl package
|
||||
|
||||
using Tensors
|
||||
using LinearAlgebra
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# This file is a part of JuliaFEM.
|
||||
# License is MIT: see https://github.com/JuliaFEM/FEMBasis.jl/blob/master/LICENSE
|
||||
# License is MIT: see https://github.com/JuliaFEM/jl/blob/master/LICENSE
|
||||
|
||||
__precompile__(false)
|
||||
|
||||
@@ -22,7 +22,7 @@ function calculate_interpolation_polynomials(p, V)
|
||||
N = Expr(:call, :+)
|
||||
for (ai, bi) in zip(solution, args)
|
||||
isapprox(ai, 0.0) && continue
|
||||
push!(N.args, Calculus.simplify( :( $ai * $bi ) ))
|
||||
push!(N.args, Calculus.simplify(:($ai * $bi)))
|
||||
end
|
||||
push!(basis, N)
|
||||
end
|
||||
@@ -55,17 +55,17 @@ function create_basis(name, description, X::Vector{<:Vecish{D}}, basis::Vector)
|
||||
return create_basis(name, description, Vec.(X), basis, dbasis)
|
||||
end
|
||||
|
||||
function create_basis(name, description, X::Vector{<:Vecish{D, T}}, basis, dbasis) where {D, T}
|
||||
function create_basis(name, description, X::Vector{<:Vecish{D,T}}, basis, dbasis) where {D,T}
|
||||
N = length(X)
|
||||
@debug "create basis given basis functions and derivatives" name description X basis dbasis
|
||||
|
||||
Q = Expr(:block)
|
||||
for i=1:N
|
||||
for i = 1:N
|
||||
push!(Q.args, :(N[$i] = $(basis[i])))
|
||||
end
|
||||
|
||||
V = Expr(:block)
|
||||
for i=1:N
|
||||
for i = 1:N
|
||||
push!(V.args, :(dN[$i] = Vec(float.(tuple($(dbasis[:, i]...))))))
|
||||
end
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# This file is a part of JuliaFEM.
|
||||
# License is MIT: see https://github.com/JuliaFEM/FEMBasis.jl/blob/master/LICENSE
|
||||
# License is MIT: see https://github.com/JuliaFEM/jl/blob/master/LICENSE
|
||||
|
||||
code = create_basis_and_eval(
|
||||
:Hex8,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# This file is a part of JuliaFEM.
|
||||
# License is MIT: see https://github.com/JuliaFEM/FEMBasis.jl/blob/master/LICENSE
|
||||
# License is MIT: see https://github.com/JuliaFEM/jl/blob/master/LICENSE
|
||||
|
||||
# Kaltenbacher, Manfred. Numerical simulation of mechatronic sensors and actuators: finite elements for computational multiphysics. Springer, 2015.
|
||||
code = create_basis_and_eval(
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# This file is a part of JuliaFEM.
|
||||
# License is MIT: see https://github.com/JuliaFEM/FEMBasis.jl/blob/master/LICENSE
|
||||
# License is MIT: see https://github.com/JuliaFEM/jl/blob/master/LICENSE
|
||||
|
||||
code = create_basis_and_eval(
|
||||
:Quad4,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# This file is a part of JuliaFEM.
|
||||
# License is MIT: see https://github.com/JuliaFEM/FEMBasis.jl/blob/master/LICENSE
|
||||
# License is MIT: see https://github.com/JuliaFEM/jl/blob/master/LICENSE
|
||||
|
||||
code = create_basis_and_eval(
|
||||
:Seg2,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# This file is a part of JuliaFEM.
|
||||
# License is MIT: see https://github.com/JuliaFEM/FEMBasis.jl/blob/master/LICENSE
|
||||
# License is MIT: see https://github.com/JuliaFEM/jl/blob/master/LICENSE
|
||||
|
||||
code = create_basis_and_eval(
|
||||
:Tet4,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# This file is a part of JuliaFEM.
|
||||
# License is MIT: see https://github.com/JuliaFEM/FEMBasis.jl/blob/master/LICENSE
|
||||
# License is MIT: see https://github.com/JuliaFEM/jl/blob/master/LICENSE
|
||||
|
||||
code = create_basis_and_eval(
|
||||
:Tri3,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# This file is a part of JuliaFEM.
|
||||
# License is MIT: see https://github.com/JuliaFEM/FEMBasis.jl/blob/master/LICENSE
|
||||
# License is MIT: see https://github.com/JuliaFEM/jl/blob/master/LICENSE
|
||||
|
||||
# Kaltenbacher, Manfred. Numerical simulation of mechatronic sensors and actuators: finite elements for computational multiphysics. Springer, 2015.
|
||||
create_basis_and_eval(
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
# This file is a part of JuliaFEM.
|
||||
# License is MIT: see https://github.com/JuliaFEM/FEMBasis.jl/blob/master/LICENSE
|
||||
# License is MIT: see https://github.com/JuliaFEM/jl/blob/master/LICENSE
|
||||
|
||||
"""
|
||||
interpolate(B, T, xi)
|
||||
@@ -148,7 +148,7 @@ BasisInfo(Tri3)
|
||||
|
||||
# output
|
||||
|
||||
FEMBasis.BasisInfo{FEMBasis.Tri3,Float64}([0.0 0.0 0.0], [0.0 0.0 0.0; 0.0 0.0 0.0], [0.0 0.0 0.0; 0.0 0.0 0.0], [0.0 0.0; 0.0 0.0], [0.0 0.0; 0.0 0.0], 0.0)
|
||||
BasisInfo{Tri3,Float64}([0.0 0.0 0.0], [0.0 0.0 0.0; 0.0 0.0 0.0], [0.0 0.0 0.0; 0.0 0.0 0.0], [0.0 0.0; 0.0 0.0], [0.0 0.0; 0.0 0.0], 0.0)
|
||||
|
||||
```
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
# This file is a part of JuliaFEM.
|
||||
# License is MIT: see https://github.com/JuliaFEM/FEMBasis.jl/blob/master/LICENSE
|
||||
# License is MIT: see https://github.com/JuliaFEM/jl/blob/master/LICENSE
|
||||
|
||||
import Base: size, length
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# This file is a part of JuliaFEM.
|
||||
# License is MIT: see https://github.com/JuliaFEM/FEMBasis.jl/blob/master/LICENSE
|
||||
# License is MIT: see https://github.com/JuliaFEM/jl/blob/master/LICENSE
|
||||
|
||||
""" NURBS segment. """
|
||||
mutable struct NSeg <: AbstractBasis{1}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# This file is a part of JuliaFEM.
|
||||
# License is MIT: see https://github.com/JuliaFEM/FEMBasis.jl/blob/master/LICENSE
|
||||
# License is MIT: see https://github.com/JuliaFEM/jl/blob/master/LICENSE
|
||||
|
||||
mutable struct NSolid <: AbstractBasis{3}
|
||||
order_u :: Int
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# This file is a part of JuliaFEM.
|
||||
# License is MIT: see https://github.com/JuliaFEM/FEMBasis.jl/blob/master/LICENSE
|
||||
# License is MIT: see https://github.com/JuliaFEM/jl/blob/master/LICENSE
|
||||
|
||||
mutable struct NSurf <: AbstractBasis{2}
|
||||
order_u :: Int
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
# This file is a part of JuliaFEM.
|
||||
# License is MIT: see https://github.com/JuliaFEM/FEMBasis.jl/blob/master/LICENSE
|
||||
# License is MIT: see https://github.com/JuliaFEM/jl/blob/master/LICENSE
|
||||
|
||||
function subs(p::Number, ::Any)
|
||||
return p
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# This file is a part of JuliaFEM.
|
||||
# License is MIT: see https://github.com/JuliaFEM/FEMBasis.jl/blob/master/LICENSE
|
||||
# License is MIT: see https://github.com/JuliaFEM/jl/blob/master/LICENSE
|
||||
|
||||
"""
|
||||
vandermonde_matrix(polynomial, coordinates)
|
||||
|
||||
Reference in New Issue
Block a user