diff --git a/Project.toml b/Project.toml index 820d0c1..181ec13 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "FiniteElementContainers" uuid = "d08262e4-672f-4e7f-a976-f2cea5767631" -version = "0.9.5" +version = "0.10.0" authors = ["Craig M. Hamel and contributors"] [deps] diff --git a/src/Functions.jl b/src/Functions.jl index d60f5ae..b0283b9 100644 --- a/src/Functions.jl +++ b/src/Functions.jl @@ -110,6 +110,8 @@ function TensorFunction(fspace::FunctionSpace, sym; use_spatial_dimension=false) :_yz, :_xz, :_xy, :_zy, :_zx, :_yx ] + else + @assert false "TensorFunction likely doesn't make sense for ND not 2 or 3" end syms = () @@ -158,6 +160,8 @@ function SymmetricTensorFunction(fspace::FunctionSpace, sym; use_spatial_dimensi :_xx, :_yy, :_zz, :_yz, :_xz, :_xy, ] + else + @assert false "SymmetricTensorFunction likely doesn't make sense for ND not 2 or 3." end # finally set up component symbols diff --git a/src/assemblers/Matrix.jl b/src/assemblers/Matrix.jl index 0890f5e..5cff1c3 100644 --- a/src/assemblers/Matrix.jl +++ b/src/assemblers/Matrix.jl @@ -90,7 +90,8 @@ function _assemble_block_matrix!( for q in 1:num_quadrature_points(ref_fe) interps = _cell_interpolants(ref_fe, q) state_old_q = _quadrature_level_state(state_old, q, e) - K_q, state_new_q = func(physics, interps, u_el, x_el, state_old_q, props_el, t, dt) + # K_q, state_new_q = func(physics, interps, u_el, x_el, state_old_q, props_el, t, dt) + K_q, state_new_q = func(physics, interps, x_el, t, dt, u_el, u_el_old, state_old_q, props_el) K_el = K_el + K_q for s in 1:length(state_old) state_new[s, q, e] = state_new_q[s] @@ -132,7 +133,8 @@ KA.@kernel function _assemble_block_matrix_kernel!( for q in 1:num_quadrature_points(ref_fe) interps = _cell_interpolants(ref_fe, q) state_old_q = _quadrature_level_state(state_old, q, E) - K_q, state_new_q = func(physics, interps, u_el, x_el, state_old_q, props_el, t, dt) + # K_q, state_new_q = func(physics, interps, u_el, x_el, state_old_q, props_el, t, dt) + K_q, state_new_q = func(physics, interps, x_el, t, dt, u_el, u_el_old, state_old_q, props_el) K_el = K_el + K_q for s in 1:length(state_old) state_new[s, q, E] = state_new_q[s] diff --git a/src/assemblers/MatrixAction.jl b/src/assemblers/MatrixAction.jl index 86e07e1..4b779d2 100644 --- a/src/assemblers/MatrixAction.jl +++ b/src/assemblers/MatrixAction.jl @@ -81,7 +81,7 @@ function _assemble_block_matrix_action!( for q in 1:num_quadrature_points(ref_fe) interps = _cell_interpolants(ref_fe, q) state_old_q = _quadrature_level_state(state_old, q, e) - K_q, state_new_q = func(physics, interps, u_el, x_el, state_old_q, props_el, t, Δt) + K_q, state_new_q = func(physics, interps, x_el, t, Δt, u_el, u_el_old, state_old_q, props_el) K_el = K_el + K_q # update state here for s in 1:length(state_old) @@ -131,7 +131,7 @@ KA.@kernel function _assemble_block_matrix_action_kernel!( for q in 1:num_quadrature_points(ref_fe) interps = _cell_interpolants(ref_fe, q) state_old_q = _quadrature_level_state(state_old, q, E) - K_q, state_new_q = func(physics, interps, u_el, x_el, state_old_q, props_el, t, Δt) + K_q, state_new_q = func(physics, interps, x_el, t, Δt, u_el, u_el_old, state_old_q, props_el) K_el = K_el + K_q # update state here for s in 1:length(state_old) diff --git a/src/assemblers/QuadratureQuantity.jl b/src/assemblers/QuadratureQuantity.jl index 2e25138..e1970a6 100644 --- a/src/assemblers/QuadratureQuantity.jl +++ b/src/assemblers/QuadratureQuantity.jl @@ -77,7 +77,7 @@ function _assemble_block_quadrature_quantity!( for q in 1:num_quadrature_points(ref_fe) interps = _cell_interpolants(ref_fe, q) state_old_q = _quadrature_level_state(state_old, q, e) - e_q, state_new_q = func(physics, interps, u_el, x_el, state_old_q, props_el, t, Δt) + e_q, state_new_q = func(physics, interps, x_el, t, Δt, u_el, u_el_old, state_old_q, props_el) field[q, e] = e_q # update state here for s in 1:length(state_old) @@ -122,7 +122,7 @@ KA.@kernel function _assemble_block_quadrature_quantity_kernel!( KA.Extras.@unroll for q in 1:num_quadrature_points(ref_fe) interps = _cell_interpolants(ref_fe, q) state_old_q = _quadrature_level_state(state_old, q, E) - e_q, state_new_q = func(physics, interps, u_el, x_el, state_old_q, props_el, t, Δt) + e_q, state_new_q = func(physics, interps, x_el, t, Δt, u_el, u_el_old, state_old_q, props_el) @inbounds field[q, E] = e_q for s in 1:length(state_old) @inbounds state_new[s, q, E] = state_new_q[s] diff --git a/src/assemblers/SparseMatrixAssembler.jl b/src/assemblers/SparseMatrixAssembler.jl index 274a162..deba0fc 100644 --- a/src/assemblers/SparseMatrixAssembler.jl +++ b/src/assemblers/SparseMatrixAssembler.jl @@ -207,7 +207,7 @@ function _adjust_matrix_entries_for_constraints( end function _hessian(assembler::SparseMatrixAssembler, ::KA.CPU) - H = SparseArrays.sparse!(assembler.pattern, assembler.hessian_storage) + H = SparseArrays.sparse!(assembler.matrix_pattern, assembler.hessian_storage) if _is_condensed(assembler.dof) _adjust_matrix_entries_for_constraints!(H, assembler.constraint_storage, KA.get_backend(assembler)) diff --git a/src/assemblers/Vector.jl b/src/assemblers/Vector.jl index cacf54f..aede4f0 100644 --- a/src/assemblers/Vector.jl +++ b/src/assemblers/Vector.jl @@ -80,7 +80,8 @@ function _assemble_block_vector!( for q in 1:num_quadrature_points(ref_fe) interps = _cell_interpolants(ref_fe, q) state_old_q = _quadrature_level_state(state_old, q, e) - R_q, state_new_q = func(physics, interps, u_el, x_el, state_old_q, props_el, t, Δt) + # R_q, state_new_q = func(physics, interps, u_el, x_el, state_old_q, props_el, t, Δt) + R_q, state_new_q = func(physics, interps, x_el, t, Δt, u_el, u_el_old, state_old_q, props_el) R_el = R_el + R_q # update state here for s in 1:length(state_old) @@ -130,7 +131,8 @@ KA.@kernel function _assemble_block_vector_kernel!( for q in 1:num_quadrature_points(ref_fe) interps = _cell_interpolants(ref_fe, q) state_old_q = _quadrature_level_state(state_old, q, E) - R_q, state_new_q = func(physics, interps, u_el, x_el, state_old_q, props_el, t, Δt) + # R_q, state_new_q = func(physics, interps, u_el, x_el, state_old_q, props_el, t, Δt) + R_q, state_new_q = func(physics, interps, x_el, t, Δt, u_el, u_el_old, state_old_q, props_el) R_el = R_el + R_q # update state here for s in 1:length(state_old) diff --git a/src/bcs/BoundaryConditions.jl b/src/bcs/BoundaryConditions.jl index 1965f35..c4c4703 100644 --- a/src/bcs/BoundaryConditions.jl +++ b/src/bcs/BoundaryConditions.jl @@ -129,6 +129,8 @@ function BCBookKeeping( # setup dofs local to this BC # all_dofs = reshape(1:length(dof), size(dof)) dofs = all_dofs[dof_index, nodes] + else + @assert false "Either you need to provide a nodeset, sideset or block" end return BCBookKeeping( diff --git a/src/ics/InitialConditions.jl b/src/ics/InitialConditions.jl index a330954..6821dd7 100644 --- a/src/ics/InitialConditions.jl +++ b/src/ics/InitialConditions.jl @@ -84,7 +84,7 @@ end function _update_ic_values!(ic::InitialConditionContainer, func, X, backend::KA.Backend) kernel! = _update_ic_values_kernel!(backend) - kernel!(ic, func, X, ndrange = length(bc)) + kernel!(ic, func, X, ndrange = length(ic)) return nothing end diff --git a/test/mechanics/TestMechanicsCommon.jl b/test/mechanics/TestMechanicsCommon.jl index c0ec3ac..12027c0 100644 --- a/test/mechanics/TestMechanicsCommon.jl +++ b/test/mechanics/TestMechanicsCommon.jl @@ -35,7 +35,7 @@ end end @inline function FiniteElementContainers.energy( - physics::Mechanics, interps, u_el, x_el, state_old_q, props_el, t, dt + physics::Mechanics, interps, x_el, t, dt, u_el, u_el_old, state_old_q, props_el ) interps = map_interpolants(interps, x_el) (; X_q, N, ∇N_X, JxW) = interps @@ -50,7 +50,7 @@ end # note for CUDA things crash without inline @inline function FiniteElementContainers.residual( - physics::Mechanics, interps, u_el, x_el, state_old_q, props_el, t, dt + physics::Mechanics, interps, x_el, t, dt, u_el, u_el_old, state_old_q, props_el ) interps = map_interpolants(interps, x_el) (; X_q, N, ∇N_X, JxW) = interps @@ -68,7 +68,7 @@ end end @inline function FiniteElementContainers.stiffness( - physics::Mechanics, interps, u_el, x_el, state_old_q, props_el, t, dt + physics::Mechanics, interps, x_el, t, dt, u_el, u_el_old, state_old_q, props_el ) interps = map_interpolants(interps, x_el) (; X_q, N, ∇N_X, JxW) = interps diff --git a/test/poisson/TestPoissonCommon.jl b/test/poisson/TestPoissonCommon.jl index 029a493..5a5d502 100644 --- a/test/poisson/TestPoissonCommon.jl +++ b/test/poisson/TestPoissonCommon.jl @@ -5,7 +5,7 @@ struct Poisson <: AbstractPhysics{1, 0, 0} end @inline function FiniteElementContainers.energy( - physics::Poisson, interps, u_el, x_el, state_old_q, props_el, t, dt + physics::Poisson, interps, x_el, t, dt, u_el, u_el_old, state_old_q, props_el ) interps = map_interpolants(interps, x_el) (; X_q, N, ∇N_X, JxW) = interps @@ -15,7 +15,7 @@ end end @inline function FiniteElementContainers.mass( - physics::Poisson, interps, u_el, x_el, state_old_q, props_el, t, dt + physics::Poisson, interps, x_el, t, dt, u_el, u_el_old, state_old_q, props_el ) interps = map_interpolants(interps, x_el) (; X_q, N, ∇N_X, JxW) = interps @@ -24,7 +24,7 @@ end end @inline function FiniteElementContainers.residual( - physics::Poisson, interps, u_el, x_el, state_old_q, props_el, t, dt + physics::Poisson, interps, x_el, t, dt, u_el, u_el_old, state_old_q, props_el ) # interps = MappedInterpolants(interps, x_el) interps = map_interpolants(interps, x_el) @@ -35,7 +35,7 @@ end end @inline function FiniteElementContainers.stiffness( - physics::Poisson, interps, u_el, x_el, state_old_q, props_el, t, dt + physics::Poisson, interps, x_el, t, dt, u_el, u_el_old, state_old_q, props_el ) # interps = MappedInterpolants(interps, x_el) interps = map_interpolants(interps, x_el)