You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/src/index.md
+22-1Lines changed: 22 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,4 +2,25 @@
2
2
CurrentModule = FiniteElementContainers
3
3
```
4
4
# FiniteElementContainers
5
-
A set of containers to help in the setup of FEM codes.
5
+
```FiniteElementContainers.jl``` is a package whose main purpose is to help
6
+
researchers develop new finite element method (FEM) applications
7
+
for both well known existing techniques and new novel strategies.
8
+
9
+
This package is specificially designed with the challenging aspects
10
+
of computational solid mechanics in mind where meshes deform,
11
+
there's path dependence, there's contact between bodies, there are potentially heterogeneous material properties, and other challenges.
12
+
13
+
If you're primarily interested in writing FEM applications for e.g.
14
+
the Poisson equation or heat equation, there's likely more efficient packages (e.g. ```Gridap``` or ```Ferrite```) out there for this purpose in terms of memory and computational efficiency.
15
+
16
+
However, if you need to solve problems with multiple material models, meshes where
17
+
there are mixed elements types, etc. this is likely the only julia package
18
+
at the time of writing this that supports such capabilities.
19
+
20
+
Inspiration for the software design primarily comes from ```fenics``` and ```MOOSE```.
21
+
We've specifically designed the interface to get around all the shortcomings of ```fenics```
22
+
(e.g. boundary conditions are a pain, mixed element types a plain, different blocks are pain
23
+
etc.)
24
+
25
+
Our goal is also to ensure all of our methods are next generation hardware capable. This
26
+
means not only supporting things on CPUs but also GPUs (and that doesn't just mean NVIDIA).
# this method need to have the assembler initialized first
11
11
# if the stored values in asm.pattern.cscnzval or zero
12
12
# CUDA will error out
13
13
function CUDA.CUSPARSE.CuSparseMatrixCSC(asm::SparseMatrixAssembler)
14
14
@asserttypeof(get_backend(asm)) <:CUDABackend"Assembler is not on a CUDA device"
15
-
@assertlength(asm.pattern.cscnzval) >0"Need to assemble the assembler once with SparseArrays.sparse!(assembler)"
16
-
@assertall(x -> x !=zero(eltype(asm.pattern.cscnzval)), asm.pattern.cscnzval) "Need to assemble the assembler once with SparseArrays.sparse!(assembler)"
15
+
#TODO these assert statements are failing for multi dof problems yet
16
+
# they are doing the right thing
17
+
# @assert length(asm.pattern.cscnzval) > 0 "Need to assemble the assembler once with SparseArrays.sparse!(assembler)"
18
+
# @assert all(x -> x != zero(eltype(asm.pattern.cscnzval)), asm.pattern.cscnzval) "Need to assemble the assembler once with SparseArrays.sparse!(assembler)"
0 commit comments