Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 0 additions & 110 deletions ext/FiniteElementContainersKernelAbstractionsExt.jl

This file was deleted.

128 changes: 3 additions & 125 deletions src/bcs/DirichletBCs.jl
Original file line number Diff line number Diff line change
@@ -1,15 +1,3 @@
# struct DirichletBC{S, B, F} <: AbstractBC{S, B, F}
# bookkeeping::B
# func::F
# end

# function DirichletBC(dof::DofManager, var_name::Symbol, sset_name::Symbol, func::Function)
# bookkeeping = BCBookKeeping(dof, var_name, sset_name; build_dofs_array=true)
# sym = Symbol(var_name, :_, sset_name)
# func = BCFunction(func)
# return DirichletBC{sym, typeof(bookkeeping), typeof(func)}(bookkeeping, func)
# end

"""
$(TYPEDEF)
$(TYPEDSIGNATURES)
Expand All @@ -31,13 +19,6 @@ function DirichletBC(var_name::Symbol, sset_name::Symbol, func::Function)
return DirichletBC{typeof(func)}(func, sset_name, var_name)
end

# struct DirichletBCContainer_old{B, F, I, V} <: AbstractBCContainer{B, F, I, V}
# bookkeeping::B
# funcs::F
# func_ids::I
# vals::V
# end

"""
$(TYPEDEF)
$(TYPEDSIGNATURES)
Expand All @@ -54,106 +35,18 @@ end
# 1. remove bookkeeping from bcs
# 2. have bcs only take in a sset name, var name, and func
# 3. create one giant bookkeeper here
function DirichletBCContainer_old_old(dbcs, num_dim)

# quick hack fix for now


blocks = mapreduce(x -> repeat(x.bookkeeping.blocks, length(x.bookkeeping.elements)), vcat, dbcs)
dofs = mapreduce(x -> x.bookkeeping.dofs, vcat, dbcs)
elements = mapreduce(x -> x.bookkeeping.elements, vcat, dbcs)
nodes = mapreduce(x -> x.bookkeeping.nodes, vcat, dbcs)
sides = mapreduce(x -> x.bookkeeping.sides, vcat, dbcs)
func_ids = mapreduce(
(x, y) -> fill(x, length(y.bookkeeping.dofs)),
vcat,
1:length(dbcs), dbcs
)
vals = zeros(length(dofs))

dof_perm = _unique_sort_perm(dofs)
el_perm = _unique_sort_perm(elements)
blocks = blocks[el_perm]
dofs = dofs[dof_perm]
elements = elements[el_perm]
nodes = nodes[dof_perm]
sides = sides[el_perm]
func_ids = func_ids[dof_perm]
vals = vals[dof_perm]

sym = Symbol("dirichlet_bcs")
bk = BCBookKeeping{num_dim, sym, Int, typeof(dofs)}(blocks, dofs, elements, nodes, sides)
func_syms = map(x -> Symbol("function_$x"), 1:length(dbcs))
funcs = map(x -> x.func, dbcs)
funcs = NamedTuple{tuple(func_syms...)}(tuple(funcs...))

return DirichletBCContainer(bk, funcs, func_ids, vals)
end

function DirichletBCContainer_old(dof, dbcs)
var_names = map(x -> x.var_name, dbcs)
sset_names = map(x -> x.sset_name, dbcs)
bk = BCBookKeeping(dof, var_names, sset_names)

# now sort and unique this stuff
# TODO clean this up or move func ids into bookkeeping
dof_perm = _unique_sort_perm(bk.dofs)
el_perm = _unique_sort_perm(bk.elements)

# TODO fix up blocks
# copyto!(bk.dofs, bk.dofs[dof_perm])
# copyto!(bk.elements, bk.elements[el_perm])
# copyto!(bk.nodes, bk.nodes[dof_perm])
# copyto!(bk.sides, bk.sides[el_perm])
# bk.dofs .= bk.dofs[dof_perm]
dofs_new = bk.dofs[dof_perm]
elements_new = bk.elements[el_perm]
nodes_new = bk.nodes[dof_perm]
sides_new = bk.sides[el_perm]
resize!(bk.dofs, length(dofs_new))
resize!(bk.elements, length(elements_new))
resize!(bk.nodes, length(nodes_new))
resize!(bk.sides, length(sides_new))
copyto!(bk.dofs, dofs_new)
copyto!(bk.elements, elements_new)
copyto!(bk.nodes, nodes_new)
copyto!(bk.sides, sides_new)
# bk.dofs .= dofs_new

# setup func ids
fspace = dof.H1_vars[1].fspace
n_entries = map(x -> length(getproperty(fspace.sideset_nodes, x.sset_name)), dbcs)
func_ids = mapreduce((x, y) -> fill(x, y), vcat, 1:length(n_entries), n_entries)
func_ids = func_ids[dof_perm]

func_syms = map(x -> Symbol("function_$x"), 1:length(dbcs))
funcs = map(x -> x.func, dbcs)
funcs = NamedTuple{tuple(func_syms...)}(tuple(funcs...))

vals = zeros(length(bk.nodes))

return DirichletBCContainer(bk, funcs, func_ids, vals)
end

function DirichletBCContainer(dof, dbc)
# var_names = map(x -> x.var_name, dbcs)
# sset_names = map(x -> x.sset_name, dbcs)
var_name = dbc.var_name
sset_name = dbc.sset_name
# bk = BCBookKeeping(dof, var_names, sset_names)

bk = BCBookKeeping(dof, var_name, sset_name)

# now sort and unique this stuff
# TODO clean this up or move func ids into bookkeeping
dof_perm = _unique_sort_perm(bk.dofs)
el_perm = _unique_sort_perm(bk.elements)

# TODO fix up blocks
# copyto!(bk.dofs, bk.dofs[dof_perm])
# copyto!(bk.elements, bk.elements[el_perm])
# copyto!(bk.nodes, bk.nodes[dof_perm])
# copyto!(bk.sides, bk.sides[el_perm])
# bk.dofs .= bk.dofs[dof_perm]
# do permutations
dofs_new = bk.dofs[dof_perm]
elements_new = bk.elements[el_perm]
nodes_new = bk.nodes[dof_perm]
Expand All @@ -166,25 +59,10 @@ function DirichletBCContainer(dof, dbc)
copyto!(bk.elements, elements_new)
copyto!(bk.nodes, nodes_new)
copyto!(bk.sides, sides_new)
# bk.dofs .= dofs_new

# setup func ids
# fspace = dof.H1_vars[1].fspace
# n_entries = map(x -> length(getproperty(fspace.sideset_nodes, x.sset_name)), dbcs)
# func_ids = mapreduce((x, y) -> fill(x, y), vcat, 1:length(n_entries), n_entries)
# func_ids = func_ids[dof_perm]

# func_syms = map(x -> Symbol("function_$x"), 1:length(dbcs))
# funcs = map(x -> x.func, dbcs)
# funcs = NamedTuple{tuple(func_syms...)}(tuple(funcs...))

func = dbc.func

vals = zeros(length(bk.nodes))

# return DirichletBCContainer(bk, funcs, func_ids, vals)
return DirichletBCContainer(bk, func, vals)
return DirichletBCContainer(bk, dbc.func, vals)
end

num_dimensions(bc::DirichletBCContainer) = num_dimensions(bc.bookkeeping)
KA.get_backend(x::DirichletBCContainer) = KA.get_backend(x.bookkeeping)
1 change: 0 additions & 1 deletion src/integrators/QuasiStaticIntegrator.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,5 @@ function evolve!(integrator::QuasiStaticIntegrator, p)
update_time!(p)
update_bcs!(H1Field, integrator.solver, integrator.solution, p)
solve!(integrator.solver, integrator.solution, p)
# copyto!(integrator.solution, Uu)
return nothing
end
Loading