fluxfem 0.1.4__py3-none-any.whl → 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fluxfem/__init__.py +68 -0
- fluxfem/core/__init__.py +115 -10
- fluxfem/core/assembly.py +676 -91
- fluxfem/core/basis.py +73 -52
- fluxfem/core/dtypes.py +9 -1
- fluxfem/core/forms.py +10 -0
- fluxfem/core/mixed_assembly.py +263 -0
- fluxfem/core/mixed_space.py +348 -0
- fluxfem/core/mixed_weakform.py +97 -0
- fluxfem/core/solver.py +2 -0
- fluxfem/core/space.py +262 -17
- fluxfem/core/weakform.py +768 -7
- fluxfem/helpers_wf.py +49 -0
- fluxfem/mesh/__init__.py +54 -2
- fluxfem/mesh/base.py +316 -7
- fluxfem/mesh/contact.py +825 -0
- fluxfem/mesh/dtypes.py +12 -0
- fluxfem/mesh/hex.py +17 -16
- fluxfem/mesh/io.py +6 -4
- fluxfem/mesh/mortar.py +3907 -0
- fluxfem/mesh/supermesh.py +316 -0
- fluxfem/mesh/surface.py +22 -4
- fluxfem/mesh/tet.py +10 -4
- fluxfem/physics/diffusion.py +3 -0
- fluxfem/physics/elasticity/hyperelastic.py +3 -0
- fluxfem/physics/elasticity/linear.py +9 -2
- fluxfem/solver/__init__.py +42 -2
- fluxfem/solver/bc.py +38 -2
- fluxfem/solver/block_matrix.py +132 -0
- fluxfem/solver/block_system.py +454 -0
- fluxfem/solver/cg.py +115 -33
- fluxfem/solver/dirichlet.py +334 -4
- fluxfem/solver/newton.py +237 -60
- fluxfem/solver/petsc.py +439 -0
- fluxfem/solver/preconditioner.py +106 -0
- fluxfem/solver/result.py +18 -0
- fluxfem/solver/solve_runner.py +168 -1
- fluxfem/solver/solver.py +12 -1
- fluxfem/solver/sparse.py +124 -9
- fluxfem-0.2.0.dist-info/METADATA +303 -0
- fluxfem-0.2.0.dist-info/RECORD +59 -0
- fluxfem-0.1.4.dist-info/METADATA +0 -127
- fluxfem-0.1.4.dist-info/RECORD +0 -48
- {fluxfem-0.1.4.dist-info → fluxfem-0.2.0.dist-info}/LICENSE +0 -0
- {fluxfem-0.1.4.dist-info → fluxfem-0.2.0.dist-info}/WHEEL +0 -0
fluxfem/__init__.py
CHANGED
|
@@ -12,15 +12,24 @@ __all__ = [
|
|
|
12
12
|
"trial_ref",
|
|
13
13
|
"test_ref",
|
|
14
14
|
"unknown_ref",
|
|
15
|
+
"zero_ref",
|
|
15
16
|
"Params",
|
|
16
17
|
"LinearForm",
|
|
17
18
|
"BilinearForm",
|
|
18
19
|
"ResidualForm",
|
|
19
20
|
"MixedWeakForm",
|
|
21
|
+
"make_mixed_residuals",
|
|
22
|
+
"kernel",
|
|
23
|
+
"MixedFESpace",
|
|
24
|
+
"MixedProblem",
|
|
25
|
+
"MixedDirichletBC",
|
|
26
|
+
"MixedBlockSystem",
|
|
20
27
|
"compile_bilinear",
|
|
21
28
|
"compile_linear",
|
|
22
29
|
"compile_residual",
|
|
23
30
|
"compile_surface_linear",
|
|
31
|
+
"compile_surface_bilinear",
|
|
32
|
+
"compile_mixed_surface_residual",
|
|
24
33
|
"compile_mixed_residual",
|
|
25
34
|
"outer",
|
|
26
35
|
"sdot",
|
|
@@ -58,10 +67,15 @@ __all__ = [
|
|
|
58
67
|
"BasisData",
|
|
59
68
|
"SpaceData",
|
|
60
69
|
"make_element_residual_kernel",
|
|
70
|
+
"make_element_bilinear_kernel",
|
|
71
|
+
"make_element_linear_kernel",
|
|
61
72
|
"make_element_jacobian_kernel",
|
|
73
|
+
"make_element_kernel",
|
|
62
74
|
"element_residual",
|
|
63
75
|
"element_jacobian",
|
|
64
76
|
"make_sparsity_pattern",
|
|
77
|
+
"chunk_pad_stats",
|
|
78
|
+
"BatchedAssembler",
|
|
65
79
|
"assemble_functional",
|
|
66
80
|
"assemble_mass_matrix",
|
|
67
81
|
"scalar_body_force_form",
|
|
@@ -88,21 +102,54 @@ __all__ = [
|
|
|
88
102
|
"StructuredHexBox",
|
|
89
103
|
"SurfaceMesh",
|
|
90
104
|
"SurfaceMeshPytree",
|
|
105
|
+
"SurfaceWithElemConn",
|
|
106
|
+
"surface_with_elem_conn",
|
|
91
107
|
"SurfaceFormField",
|
|
92
108
|
"SurfaceFormContext",
|
|
109
|
+
"SurfaceBilinearContext",
|
|
110
|
+
"SurfaceSupermesh",
|
|
93
111
|
"vector_surface_load_form",
|
|
94
112
|
"make_vector_surface_load_form",
|
|
95
113
|
"assemble_surface_linear_form",
|
|
114
|
+
"assemble_surface_bilinear_form",
|
|
115
|
+
"MortarMatrix",
|
|
116
|
+
"assemble_mortar_matrices",
|
|
117
|
+
"assemble_contact_onesided_floor",
|
|
118
|
+
"assemble_mixed_surface_residual",
|
|
119
|
+
"assemble_mixed_surface_jacobian",
|
|
120
|
+
"map_surface_facets_to_tet_elements",
|
|
121
|
+
"map_surface_facets_to_hex_elements",
|
|
122
|
+
"tri_area",
|
|
123
|
+
"tri_quadrature",
|
|
124
|
+
"facet_triangles",
|
|
125
|
+
"facet_shape_values",
|
|
126
|
+
"volume_shape_values_at_points",
|
|
127
|
+
"quad_shape_and_local",
|
|
128
|
+
"quad9_shape_values",
|
|
129
|
+
"hex27_gradN",
|
|
130
|
+
"ContactSurfaceSpace",
|
|
131
|
+
"ContactSide",
|
|
132
|
+
"OneSidedContact",
|
|
133
|
+
"OneSidedContactSurfaceSpace",
|
|
134
|
+
"facet_gap_values",
|
|
135
|
+
"active_contact_facets",
|
|
96
136
|
"tag_axis_minmax_facets",
|
|
97
137
|
"load_gmsh_mesh",
|
|
98
138
|
"load_gmsh_hex_mesh",
|
|
99
139
|
"load_gmsh_tet_mesh",
|
|
100
140
|
"make_surface_from_facets",
|
|
141
|
+
"build_surface_supermesh",
|
|
142
|
+
"MortarMatrix",
|
|
143
|
+
"assemble_mortar_matrices",
|
|
144
|
+
"assemble_mixed_surface_residual",
|
|
145
|
+
"assemble_mixed_surface_jacobian",
|
|
146
|
+
"map_surface_facets_to_tet_elements",
|
|
101
147
|
"TetMesh",
|
|
102
148
|
"TetMeshPytree",
|
|
103
149
|
"StructuredTetBox",
|
|
104
150
|
"StructuredTetTensorBox",
|
|
105
151
|
"BaseMeshPytree",
|
|
152
|
+
"SurfaceWithFacetMap",
|
|
106
153
|
"bbox_predicate",
|
|
107
154
|
"plane_predicate",
|
|
108
155
|
"axis_plane_predicate",
|
|
@@ -125,15 +172,35 @@ __all__ = [
|
|
|
125
172
|
"coo_to_csr",
|
|
126
173
|
"SparsityPattern",
|
|
127
174
|
"FluxSparseMatrix",
|
|
175
|
+
"coalesce_coo",
|
|
176
|
+
"concat_flux",
|
|
177
|
+
"block_diag_flux",
|
|
178
|
+
"build_block_system",
|
|
179
|
+
"split_block_matrix",
|
|
180
|
+
"BlockSystem",
|
|
128
181
|
"LinearSolver",
|
|
129
182
|
"NonlinearSolver",
|
|
183
|
+
"petsc_solve",
|
|
184
|
+
"petsc_shell_solve",
|
|
185
|
+
"petsc_is_available",
|
|
186
|
+
"DirichletBC",
|
|
130
187
|
"enforce_dirichlet_dense",
|
|
188
|
+
"enforce_dirichlet_dense_jax",
|
|
189
|
+
"enforce_dirichlet_fluxsparse",
|
|
131
190
|
"enforce_dirichlet_sparse",
|
|
191
|
+
"enforce_dirichlet_system",
|
|
192
|
+
"split_dirichlet_matrix",
|
|
132
193
|
"free_dofs",
|
|
133
194
|
"condense_dirichlet_fluxsparse",
|
|
195
|
+
"condense_dirichlet_fluxsparse_coo",
|
|
134
196
|
"condense_dirichlet_dense",
|
|
197
|
+
"restrict_flux_to_free",
|
|
135
198
|
"expand_dirichlet_solution",
|
|
199
|
+
"condense_dirichlet_system",
|
|
136
200
|
"cg_solve",
|
|
201
|
+
"make_block_jacobi_preconditioner",
|
|
202
|
+
"build_cg_operator",
|
|
203
|
+
"CGOperator",
|
|
137
204
|
"NonlinearAnalysis",
|
|
138
205
|
"NewtonLoopConfig",
|
|
139
206
|
"LoadStepResult",
|
|
@@ -148,6 +215,7 @@ __all__ = [
|
|
|
148
215
|
"write_displacement_vtu",
|
|
149
216
|
"make_jitted_residual",
|
|
150
217
|
"make_jitted_jacobian",
|
|
218
|
+
"block",
|
|
151
219
|
"make_elastic_point_data",
|
|
152
220
|
"write_elastic_vtu",
|
|
153
221
|
"make_point_data_displacement",
|
fluxfem/core/__init__.py
CHANGED
|
@@ -17,6 +17,7 @@ from .space import (
|
|
|
17
17
|
make_hex27_space,
|
|
18
18
|
make_hex27_space_pytree,
|
|
19
19
|
)
|
|
20
|
+
from .mixed_space import MixedFESpace, MixedProblem, MixedDirichletBC, MixedBlockSystem
|
|
20
21
|
from .data import MeshData, BasisData, SpaceData
|
|
21
22
|
from .basis import (
|
|
22
23
|
make_hex_basis,
|
|
@@ -38,20 +39,24 @@ from .assembly import (
|
|
|
38
39
|
assemble_jacobian,
|
|
39
40
|
assemble_residual_scatter,
|
|
40
41
|
assemble_jacobian_scatter,
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
assemble_residual_elementwise,
|
|
43
|
+
assemble_jacobian_elementwise,
|
|
43
44
|
make_element_residual_kernel,
|
|
45
|
+
make_element_bilinear_kernel,
|
|
46
|
+
make_element_linear_kernel,
|
|
44
47
|
make_element_jacobian_kernel,
|
|
48
|
+
make_element_kernel,
|
|
45
49
|
element_residual,
|
|
46
50
|
element_jacobian,
|
|
47
51
|
make_sparsity_pattern,
|
|
52
|
+
chunk_pad_stats,
|
|
53
|
+
BatchedAssembler,
|
|
48
54
|
assemble_jacobian_values,
|
|
49
55
|
assemble_mass_matrix,
|
|
50
56
|
scalar_body_force_form,
|
|
51
57
|
make_scalar_body_force_form,
|
|
52
58
|
constant_body_force_form,
|
|
53
59
|
)
|
|
54
|
-
from ..physics.elasticity.linear import vector_body_force_form, constant_body_force_vector_form
|
|
55
60
|
from .interp import eval_shape_functions_hex8, interpolate_field_at_element_points
|
|
56
61
|
from .weakform import (
|
|
57
62
|
Expr,
|
|
@@ -60,12 +65,17 @@ from .weakform import (
|
|
|
60
65
|
trial_ref,
|
|
61
66
|
test_ref,
|
|
62
67
|
unknown_ref,
|
|
68
|
+
zero_ref,
|
|
63
69
|
Params,
|
|
64
70
|
LinearForm,
|
|
65
71
|
BilinearForm,
|
|
66
72
|
ResidualForm,
|
|
73
|
+
kernel,
|
|
67
74
|
compile_surface_linear,
|
|
75
|
+
compile_surface_bilinear,
|
|
76
|
+
compile_mixed_surface_residual,
|
|
68
77
|
MixedWeakForm,
|
|
78
|
+
make_mixed_residuals,
|
|
69
79
|
compile_bilinear,
|
|
70
80
|
compile_linear,
|
|
71
81
|
compile_residual,
|
|
@@ -94,6 +104,7 @@ from .weakform import (
|
|
|
94
104
|
)
|
|
95
105
|
from ..mesh import (
|
|
96
106
|
BaseMeshPytree,
|
|
107
|
+
SurfaceWithFacetMap,
|
|
97
108
|
bbox_predicate,
|
|
98
109
|
plane_predicate,
|
|
99
110
|
axis_plane_predicate,
|
|
@@ -103,6 +114,10 @@ from ..mesh import (
|
|
|
103
114
|
StructuredHexBox,
|
|
104
115
|
SurfaceMesh,
|
|
105
116
|
SurfaceMeshPytree,
|
|
117
|
+
SurfaceWithElemConn,
|
|
118
|
+
surface_with_elem_conn,
|
|
119
|
+
SurfaceSupermesh,
|
|
120
|
+
build_surface_supermesh,
|
|
106
121
|
tag_axis_minmax_facets,
|
|
107
122
|
TetMesh,
|
|
108
123
|
TetMeshPytree,
|
|
@@ -112,6 +127,29 @@ from ..mesh import (
|
|
|
112
127
|
load_gmsh_hex_mesh,
|
|
113
128
|
load_gmsh_tet_mesh,
|
|
114
129
|
make_surface_from_facets,
|
|
130
|
+
SurfaceSupermesh,
|
|
131
|
+
build_surface_supermesh,
|
|
132
|
+
MortarMatrix,
|
|
133
|
+
assemble_mortar_matrices,
|
|
134
|
+
assemble_contact_onesided_floor,
|
|
135
|
+
assemble_mixed_surface_residual,
|
|
136
|
+
assemble_mixed_surface_jacobian,
|
|
137
|
+
map_surface_facets_to_tet_elements,
|
|
138
|
+
map_surface_facets_to_hex_elements,
|
|
139
|
+
tri_area,
|
|
140
|
+
tri_quadrature,
|
|
141
|
+
facet_triangles,
|
|
142
|
+
facet_shape_values,
|
|
143
|
+
volume_shape_values_at_points,
|
|
144
|
+
quad_shape_and_local,
|
|
145
|
+
quad9_shape_values,
|
|
146
|
+
hex27_gradN,
|
|
147
|
+
ContactSurfaceSpace,
|
|
148
|
+
ContactSide,
|
|
149
|
+
OneSidedContact,
|
|
150
|
+
OneSidedContactSurfaceSpace,
|
|
151
|
+
facet_gap_values,
|
|
152
|
+
active_contact_facets,
|
|
115
153
|
)
|
|
116
154
|
from .basis import (
|
|
117
155
|
HexTriLinearBasis,
|
|
@@ -127,22 +165,41 @@ from .basis import (
|
|
|
127
165
|
)
|
|
128
166
|
import importlib
|
|
129
167
|
|
|
130
|
-
from ..physics import lame_parameters, isotropic_3d_D
|
|
131
168
|
from .solver import spdirect_solve_cpu, spdirect_solve_gpu, spdirect_solve_jax, coo_to_csr
|
|
132
169
|
|
|
133
170
|
_SOLVER_EXPORTS = {
|
|
134
171
|
"SparsityPattern",
|
|
135
172
|
"FluxSparseMatrix",
|
|
173
|
+
"coalesce_coo",
|
|
174
|
+
"concat_flux",
|
|
175
|
+
"block_diag_flux",
|
|
176
|
+
"build_block_system",
|
|
177
|
+
"split_block_matrix",
|
|
178
|
+
"BlockSystem",
|
|
179
|
+
"DirichletBC",
|
|
136
180
|
"LinearSolver",
|
|
137
181
|
"NonlinearSolver",
|
|
182
|
+
"petsc_solve",
|
|
183
|
+
"petsc_shell_solve",
|
|
184
|
+
"petsc_is_available",
|
|
138
185
|
"enforce_dirichlet_dense",
|
|
186
|
+
"enforce_dirichlet_dense_jax",
|
|
187
|
+
"enforce_dirichlet_fluxsparse",
|
|
139
188
|
"enforce_dirichlet_sparse",
|
|
189
|
+
"enforce_dirichlet_system",
|
|
190
|
+
"split_dirichlet_matrix",
|
|
140
191
|
"free_dofs",
|
|
192
|
+
"restrict_flux_to_free",
|
|
193
|
+
"condense_dirichlet_system",
|
|
141
194
|
"condense_dirichlet_fluxsparse",
|
|
195
|
+
"condense_dirichlet_fluxsparse_coo",
|
|
142
196
|
"condense_dirichlet_dense",
|
|
143
197
|
"expand_dirichlet_solution",
|
|
144
198
|
"cg_solve",
|
|
145
199
|
"cg_solve_jax",
|
|
200
|
+
"build_cg_operator",
|
|
201
|
+
"CGOperator",
|
|
202
|
+
"make_block_jacobi_preconditioner",
|
|
146
203
|
"NonlinearAnalysis",
|
|
147
204
|
"NewtonLoopConfig",
|
|
148
205
|
"LoadStepResult",
|
|
@@ -153,14 +210,19 @@ _SOLVER_EXPORTS = {
|
|
|
153
210
|
"LinearStepResult",
|
|
154
211
|
"LinearSolveRunner",
|
|
155
212
|
"newton_solve",
|
|
213
|
+
"petsc_solve",
|
|
214
|
+
"petsc_shell_solve",
|
|
215
|
+
"petsc_is_available",
|
|
156
216
|
}
|
|
157
217
|
|
|
158
218
|
_SOLVER_BC_EXPORTS = {
|
|
159
219
|
"SurfaceFormField",
|
|
160
220
|
"SurfaceFormContext",
|
|
221
|
+
"SurfaceBilinearContext",
|
|
161
222
|
"vector_surface_load_form",
|
|
162
223
|
"make_vector_surface_load_form",
|
|
163
224
|
"assemble_surface_linear_form",
|
|
225
|
+
"assemble_surface_bilinear_form",
|
|
164
226
|
}
|
|
165
227
|
|
|
166
228
|
|
|
@@ -180,6 +242,10 @@ __all__ = [
|
|
|
180
242
|
"FESpace",
|
|
181
243
|
"FESpaceBase",
|
|
182
244
|
"FESpacePytree",
|
|
245
|
+
"MixedFESpace",
|
|
246
|
+
"MixedProblem",
|
|
247
|
+
"MixedDirichletBC",
|
|
248
|
+
"MixedBlockSystem",
|
|
183
249
|
"FormContext",
|
|
184
250
|
"MixedFormContext",
|
|
185
251
|
"VolumeContext",
|
|
@@ -218,9 +284,9 @@ __all__ = [
|
|
|
218
284
|
"assemble_jacobian",
|
|
219
285
|
"assemble_residual_scatter",
|
|
220
286
|
"assemble_jacobian_scatter",
|
|
221
|
-
"assemble_residual_elementwise_xla",
|
|
222
|
-
"assemble_jacobian_elementwise_xla",
|
|
223
287
|
"make_element_residual_kernel",
|
|
288
|
+
"make_element_bilinear_kernel",
|
|
289
|
+
"make_element_linear_kernel",
|
|
224
290
|
"make_element_jacobian_kernel",
|
|
225
291
|
"element_residual",
|
|
226
292
|
"element_jacobian",
|
|
@@ -232,8 +298,6 @@ __all__ = [
|
|
|
232
298
|
"scalar_body_force_form",
|
|
233
299
|
"make_scalar_body_force_form",
|
|
234
300
|
"constant_body_force_form",
|
|
235
|
-
"vector_body_force_form",
|
|
236
|
-
"constant_body_force_vector_form",
|
|
237
301
|
"eval_shape_functions_hex8",
|
|
238
302
|
"interpolate_field_at_element_points",
|
|
239
303
|
"Expr",
|
|
@@ -242,15 +306,20 @@ __all__ = [
|
|
|
242
306
|
"trial_ref",
|
|
243
307
|
"test_ref",
|
|
244
308
|
"unknown_ref",
|
|
309
|
+
"zero_ref",
|
|
245
310
|
"Params",
|
|
246
311
|
"LinearForm",
|
|
247
312
|
"BilinearForm",
|
|
248
313
|
"ResidualForm",
|
|
249
314
|
"MixedWeakForm",
|
|
315
|
+
"make_mixed_residuals",
|
|
316
|
+
"kernel",
|
|
250
317
|
"compile_bilinear",
|
|
251
318
|
"compile_linear",
|
|
252
319
|
"compile_residual",
|
|
253
320
|
"compile_surface_linear",
|
|
321
|
+
"compile_surface_bilinear",
|
|
322
|
+
"compile_mixed_surface_residual",
|
|
254
323
|
"compile_mixed_residual",
|
|
255
324
|
"grad",
|
|
256
325
|
"sym_grad",
|
|
@@ -278,21 +347,49 @@ __all__ = [
|
|
|
278
347
|
"StructuredHexBox",
|
|
279
348
|
"SurfaceMesh",
|
|
280
349
|
"SurfaceMeshPytree",
|
|
350
|
+
"SurfaceWithElemConn",
|
|
351
|
+
"surface_with_elem_conn",
|
|
281
352
|
"SurfaceFormField",
|
|
282
353
|
"SurfaceFormContext",
|
|
354
|
+
"SurfaceBilinearContext",
|
|
283
355
|
"vector_surface_load_form",
|
|
284
356
|
"make_vector_surface_load_form",
|
|
285
357
|
"assemble_surface_linear_form",
|
|
358
|
+
"assemble_surface_bilinear_form",
|
|
286
359
|
"load_gmsh_mesh",
|
|
287
360
|
"load_gmsh_hex_mesh",
|
|
288
361
|
"load_gmsh_tet_mesh",
|
|
289
362
|
"make_surface_from_facets",
|
|
363
|
+
"SurfaceSupermesh",
|
|
364
|
+
"build_surface_supermesh",
|
|
365
|
+
"MortarMatrix",
|
|
366
|
+
"assemble_mortar_matrices",
|
|
367
|
+
"assemble_contact_onesided_floor",
|
|
368
|
+
"assemble_mixed_surface_residual",
|
|
369
|
+
"assemble_mixed_surface_jacobian",
|
|
370
|
+
"map_surface_facets_to_tet_elements",
|
|
371
|
+
"map_surface_facets_to_hex_elements",
|
|
372
|
+
"tri_area",
|
|
373
|
+
"tri_quadrature",
|
|
374
|
+
"facet_triangles",
|
|
375
|
+
"facet_shape_values",
|
|
376
|
+
"volume_shape_values_at_points",
|
|
377
|
+
"quad_shape_and_local",
|
|
378
|
+
"quad9_shape_values",
|
|
379
|
+
"hex27_gradN",
|
|
380
|
+
"ContactSurfaceSpace",
|
|
381
|
+
"ContactSide",
|
|
382
|
+
"OneSidedContact",
|
|
383
|
+
"OneSidedContactSurfaceSpace",
|
|
384
|
+
"facet_gap_values",
|
|
385
|
+
"active_contact_facets",
|
|
290
386
|
"TetMesh",
|
|
291
387
|
"TetMeshPytree",
|
|
292
388
|
"StructuredTetBox",
|
|
293
389
|
"StructuredTetTensorBox",
|
|
294
390
|
"tag_axis_minmax_facets",
|
|
295
391
|
"BaseMeshPytree",
|
|
392
|
+
"SurfaceWithFacetMap",
|
|
296
393
|
"bbox_predicate",
|
|
297
394
|
"plane_predicate",
|
|
298
395
|
"axis_plane_predicate",
|
|
@@ -307,20 +404,28 @@ __all__ = [
|
|
|
307
404
|
"TetLinearBasisPytree",
|
|
308
405
|
"TetQuadraticBasis10",
|
|
309
406
|
"TetQuadraticBasis10Pytree",
|
|
310
|
-
"lame_parameters",
|
|
311
|
-
"isotropic_3d_D",
|
|
312
407
|
"spdirect_solve_cpu",
|
|
313
408
|
"spdirect_solve_gpu",
|
|
314
409
|
"spdirect_solve_jax",
|
|
315
410
|
"coo_to_csr",
|
|
316
411
|
"SparsityPattern",
|
|
317
412
|
"FluxSparseMatrix",
|
|
413
|
+
"coalesce_coo",
|
|
414
|
+
"concat_flux",
|
|
415
|
+
"block_diag_flux",
|
|
318
416
|
"LinearSolver",
|
|
319
417
|
"NonlinearSolver",
|
|
320
418
|
"enforce_dirichlet_dense",
|
|
419
|
+
"enforce_dirichlet_dense_jax",
|
|
420
|
+
"enforce_dirichlet_fluxsparse",
|
|
321
421
|
"enforce_dirichlet_sparse",
|
|
422
|
+
"enforce_dirichlet_system",
|
|
423
|
+
"split_dirichlet_matrix",
|
|
322
424
|
"free_dofs",
|
|
425
|
+
"restrict_flux_to_free",
|
|
426
|
+
"condense_dirichlet_system",
|
|
323
427
|
"condense_dirichlet_fluxsparse",
|
|
428
|
+
"condense_dirichlet_fluxsparse_coo",
|
|
324
429
|
"condense_dirichlet_dense",
|
|
325
430
|
"expand_dirichlet_solution",
|
|
326
431
|
"cg_solve",
|