fluxfem 0.1.1a0__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.
Files changed (47) hide show
  1. fluxfem/__init__.py +343 -0
  2. fluxfem/core/__init__.py +316 -0
  3. fluxfem/core/assembly.py +788 -0
  4. fluxfem/core/basis.py +996 -0
  5. fluxfem/core/data.py +64 -0
  6. fluxfem/core/dtypes.py +4 -0
  7. fluxfem/core/forms.py +234 -0
  8. fluxfem/core/interp.py +55 -0
  9. fluxfem/core/solver.py +113 -0
  10. fluxfem/core/space.py +419 -0
  11. fluxfem/core/weakform.py +818 -0
  12. fluxfem/helpers_num.py +11 -0
  13. fluxfem/helpers_wf.py +42 -0
  14. fluxfem/mesh/__init__.py +29 -0
  15. fluxfem/mesh/base.py +244 -0
  16. fluxfem/mesh/hex.py +327 -0
  17. fluxfem/mesh/io.py +87 -0
  18. fluxfem/mesh/predicate.py +45 -0
  19. fluxfem/mesh/surface.py +257 -0
  20. fluxfem/mesh/tet.py +246 -0
  21. fluxfem/physics/__init__.py +53 -0
  22. fluxfem/physics/diffusion.py +18 -0
  23. fluxfem/physics/elasticity/__init__.py +39 -0
  24. fluxfem/physics/elasticity/hyperelastic.py +99 -0
  25. fluxfem/physics/elasticity/linear.py +58 -0
  26. fluxfem/physics/elasticity/materials.py +32 -0
  27. fluxfem/physics/elasticity/stress.py +46 -0
  28. fluxfem/physics/operators.py +109 -0
  29. fluxfem/physics/postprocess.py +113 -0
  30. fluxfem/solver/__init__.py +47 -0
  31. fluxfem/solver/bc.py +439 -0
  32. fluxfem/solver/cg.py +326 -0
  33. fluxfem/solver/dirichlet.py +126 -0
  34. fluxfem/solver/history.py +31 -0
  35. fluxfem/solver/newton.py +400 -0
  36. fluxfem/solver/result.py +62 -0
  37. fluxfem/solver/solve_runner.py +534 -0
  38. fluxfem/solver/solver.py +148 -0
  39. fluxfem/solver/sparse.py +188 -0
  40. fluxfem/tools/__init__.py +7 -0
  41. fluxfem/tools/jit.py +51 -0
  42. fluxfem/tools/timer.py +659 -0
  43. fluxfem/tools/visualizer.py +101 -0
  44. fluxfem-0.1.1a0.dist-info/METADATA +111 -0
  45. fluxfem-0.1.1a0.dist-info/RECORD +47 -0
  46. fluxfem-0.1.1a0.dist-info/WHEEL +4 -0
  47. fluxfem-0.1.1a0.dist-info/licenses/LICENSE +201 -0
fluxfem/__init__.py ADDED
@@ -0,0 +1,343 @@
1
+ from .core import (
2
+ FESpaceBase,
3
+ FESpace,
4
+ FESpacePytree,
5
+ Expr,
6
+ FieldRef,
7
+ ParamRef,
8
+ trial_ref,
9
+ test_ref,
10
+ unknown_ref,
11
+ Params,
12
+ LinearForm,
13
+ BilinearForm,
14
+ ResidualForm,
15
+ MixedWeakForm,
16
+ compile_bilinear,
17
+ compile_linear,
18
+ compile_residual,
19
+ compile_surface_linear,
20
+ compile_mixed_residual,
21
+ sdot,
22
+ dOmega,
23
+ FormContext,
24
+ MixedFormContext,
25
+ FieldPair,
26
+ ElementVector,
27
+ vector_load_form,
28
+ make_space,
29
+ make_space_pytree,
30
+ make_hex_basis,
31
+ make_hex_basis_pytree,
32
+ make_hex_space,
33
+ make_hex_space_pytree,
34
+ make_hex20_basis,
35
+ make_hex20_basis_pytree,
36
+ make_hex20_space,
37
+ make_hex20_space_pytree,
38
+ make_hex27_basis,
39
+ make_hex27_basis_pytree,
40
+ make_hex27_space,
41
+ make_hex27_space_pytree,
42
+ make_tet_basis,
43
+ make_tet_basis_pytree,
44
+ make_tet_space,
45
+ make_tet_space_pytree,
46
+ make_tet10_basis,
47
+ make_tet10_basis_pytree,
48
+ make_tet10_space,
49
+ make_tet10_space_pytree,
50
+ make_element_residual_kernel,
51
+ make_element_jacobian_kernel,
52
+ element_residual,
53
+ element_jacobian,
54
+ make_sparsity_pattern,
55
+ assemble_functional,
56
+ assemble_mass_matrix,
57
+ scalar_body_force_form,
58
+ make_scalar_body_force_form,
59
+ constant_body_force_form,
60
+ vector_body_force_form,
61
+ BaseMeshPytree,
62
+ bbox_predicate,
63
+ plane_predicate,
64
+ axis_plane_predicate,
65
+ slab_predicate,
66
+ HexMesh,
67
+ HexMeshPytree,
68
+ StructuredHexBox,
69
+ SurfaceMesh,
70
+ SurfaceMeshPytree,
71
+ load_gmsh_mesh,
72
+ load_gmsh_hex_mesh,
73
+ load_gmsh_tet_mesh,
74
+ make_surface_from_facets,
75
+ TetMesh,
76
+ TetMeshPytree,
77
+ StructuredTetBox,
78
+ StructuredTetTensorBox,
79
+ tag_axis_minmax_facets,
80
+ HexTriLinearBasis,
81
+ HexTriLinearBasisPytree,
82
+ HexSerendipityBasis20,
83
+ HexSerendipityBasis20Pytree,
84
+ HexTriQuadraticBasis27,
85
+ HexTriQuadraticBasis27Pytree,
86
+ TetLinearBasis,
87
+ TetLinearBasisPytree,
88
+ TetQuadraticBasis10,
89
+ TetQuadraticBasis10Pytree,
90
+ MeshData,
91
+ BasisData,
92
+ SpaceData,
93
+ MeshData,
94
+ BasisData,
95
+ SpaceData,
96
+ lame_parameters,
97
+ isotropic_3d_D,
98
+ spdirect_solve_cpu,
99
+ spdirect_solve_gpu,
100
+ spdirect_solve_jax,
101
+ coo_to_csr,
102
+ SparsityPattern,
103
+ FluxSparseMatrix,
104
+ LinearSolver,
105
+ NonlinearSolver,
106
+ enforce_dirichlet_dense,
107
+ enforce_dirichlet_sparse,
108
+ free_dofs,
109
+ condense_dirichlet_fluxsparse,
110
+ condense_dirichlet_dense,
111
+ expand_dirichlet_solution,
112
+ cg_solve,
113
+ cg_solve_jax,
114
+ NonlinearAnalysis,
115
+ NewtonLoopConfig,
116
+ LoadStepResult,
117
+ NewtonSolveRunner,
118
+ solve_nonlinear,
119
+ LinearAnalysis,
120
+ LinearSolveConfig,
121
+ LinearStepResult,
122
+ LinearSolveRunner,
123
+ newton_solve,
124
+ SurfaceFormField,
125
+ SurfaceFormContext,
126
+ vector_surface_load_form,
127
+ make_vector_surface_load_form,
128
+ assemble_surface_linear_form,
129
+ )
130
+ from .tools.visualizer import write_vtu, write_displacement_vtu
131
+ from .tools.jit import make_jitted_residual, make_jitted_jacobian
132
+ from .physics import (
133
+ linear_elasticity_form,
134
+ vector_body_force_form,
135
+ constant_body_force_vector_form,
136
+ diffusion_form,
137
+ dot,
138
+ ddot,
139
+ transpose_last2,
140
+ sym_grad,
141
+ sym_grad_u,
142
+ right_cauchy_green,
143
+ green_lagrange_strain,
144
+ deformation_gradient,
145
+ pk2_neo_hookean,
146
+ neo_hookean_residual_form,
147
+ make_elastic_point_data,
148
+ write_elastic_vtu,
149
+ make_point_data_displacement,
150
+ write_point_data_vtu,
151
+ interpolate_at_points,
152
+ principal_stresses,
153
+ principal_sum,
154
+ max_shear_stress,
155
+ von_mises_stress,
156
+ )
157
+
158
+ __all__ = [
159
+ "FESpaceBase",
160
+ "FESpace",
161
+ "FESpacePytree",
162
+ "Expr",
163
+ "FieldRef",
164
+ "ParamRef",
165
+ "trial_ref",
166
+ "test_ref",
167
+ "unknown_ref",
168
+ "Params",
169
+ "LinearForm",
170
+ "BilinearForm",
171
+ "ResidualForm",
172
+ "MixedWeakForm",
173
+ "compile_bilinear",
174
+ "compile_linear",
175
+ "compile_residual",
176
+ "compile_surface_linear",
177
+ "compile_mixed_residual",
178
+ "sdot",
179
+ "dOmega",
180
+ "FormContext",
181
+ "MixedFormContext",
182
+ "FieldPair",
183
+ "ElementVector",
184
+ "vector_load_form",
185
+ "make_space",
186
+ "make_space_pytree",
187
+ "make_hex_basis",
188
+ "make_hex_basis_pytree",
189
+ "make_hex_space",
190
+ "make_hex_space_pytree",
191
+ "make_hex20_basis",
192
+ "make_hex20_basis_pytree",
193
+ "make_hex20_space",
194
+ "make_hex20_space_pytree",
195
+ "make_hex27_basis",
196
+ "make_hex27_basis_pytree",
197
+ "make_hex27_space",
198
+ "make_hex27_space_pytree",
199
+ "make_tet_basis",
200
+ "make_tet_basis_pytree",
201
+ "make_tet_space",
202
+ "make_tet_space_pytree",
203
+ "make_tet10_basis",
204
+ "make_tet10_basis_pytree",
205
+ "make_tet10_space",
206
+ "make_tet10_space_pytree",
207
+ "MeshData",
208
+ "BasisData",
209
+ "SpaceData",
210
+ "make_element_residual_kernel",
211
+ "make_element_jacobian_kernel",
212
+ "element_residual",
213
+ "element_jacobian",
214
+ "make_sparsity_pattern",
215
+ "assemble_functional",
216
+ "assemble_mass_matrix",
217
+ "scalar_body_force_form",
218
+ "make_scalar_body_force_form",
219
+ "vector_body_force_form",
220
+ "linear_elasticity_form",
221
+ "constant_body_force_form",
222
+ "constant_body_force_vector_form",
223
+ "diffusion_form",
224
+ "dot",
225
+ "ddot",
226
+ "transpose_last2",
227
+ "sym_grad",
228
+ "sym_grad_u",
229
+ "right_cauchy_green",
230
+ "green_lagrange_strain",
231
+ "deformation_gradient",
232
+ "pk2_neo_hookean",
233
+ "neo_hookean_residual_form",
234
+ "StokesSpaces",
235
+ "make_stokes_spaces",
236
+ "HexMesh",
237
+ "HexMeshPytree",
238
+ "StructuredHexBox",
239
+ "SurfaceMesh",
240
+ "SurfaceMeshPytree",
241
+ "SurfaceFormField",
242
+ "SurfaceFormContext",
243
+ "vector_surface_load_form",
244
+ "make_vector_surface_load_form",
245
+ "assemble_surface_linear_form",
246
+ "load_gmsh_mesh",
247
+ "load_gmsh_hex_mesh",
248
+ "load_gmsh_tet_mesh",
249
+ "make_surface_from_facets",
250
+ "TetMesh",
251
+ "TetMeshPytree",
252
+ "StructuredTetBox",
253
+ "StructuredTetTensorBox",
254
+ "BaseMeshPytree",
255
+ "bbox_predicate",
256
+ "plane_predicate",
257
+ "axis_plane_predicate",
258
+ "slab_predicate",
259
+ "HexTriLinearBasis",
260
+ "HexTriLinearBasisPytree",
261
+ "HexSerendipityBasis20",
262
+ "HexSerendipityBasis20Pytree",
263
+ "HexTriQuadraticBasis27",
264
+ "HexTriQuadraticBasis27Pytree",
265
+ "TetLinearBasis",
266
+ "TetLinearBasisPytree",
267
+ "TetQuadraticBasis10",
268
+ "TetQuadraticBasis10Pytree",
269
+ "lame_parameters",
270
+ "isotropic_3d_D",
271
+ "spdirect_solve_cpu",
272
+ "spdirect_solve_gpu",
273
+ "spdirect_solve_jax",
274
+ "coo_to_csr",
275
+ "SparsityPattern",
276
+ "FluxSparseMatrix",
277
+ "LinearSolver",
278
+ "NonlinearSolver",
279
+ "enforce_dirichlet_dense",
280
+ "enforce_dirichlet_sparse",
281
+ "free_dofs",
282
+ "condense_dirichlet_fluxsparse",
283
+ "condense_dirichlet_dense",
284
+ "expand_dirichlet_solution",
285
+ "cg_solve",
286
+ "NonlinearAnalysis",
287
+ "NewtonLoopConfig",
288
+ "LoadStepResult",
289
+ "NewtonSolveRunner",
290
+ "solve_nonlinear",
291
+ "LinearAnalysis",
292
+ "LinearSolveConfig",
293
+ "LinearStepResult",
294
+ "LinearSolveRunner",
295
+ "newton_solve",
296
+ "write_vtu",
297
+ "write_displacement_vtu",
298
+ "make_jitted_residual",
299
+ "make_jitted_jacobian",
300
+ "make_elastic_point_data",
301
+ "write_elastic_vtu",
302
+ "make_point_data_displacement",
303
+ "write_point_data_vtu",
304
+ "principal_stresses",
305
+ "principal_sum",
306
+ "max_shear_stress",
307
+ "von_mises_stress",
308
+ ]
309
+
310
+
311
+ try:
312
+ from importlib.metadata import version, PackageNotFoundError
313
+ except ImportError:
314
+ # old python
315
+ from importlib_metadata import version, PackageNotFoundError
316
+
317
+
318
+ def read_version_from_pyproject():
319
+ import pathlib
320
+ import re
321
+
322
+ root = pathlib.Path(__file__).resolve().parent.parent
323
+ # while root != root.parent and depth < max_depth:
324
+ pyproject_path = root / "pyproject.toml"
325
+ if pyproject_path.exists():
326
+ content = pyproject_path.read_text()
327
+ match = re.search(r'version\s*=\s*"(.*?)"', content)
328
+ if match:
329
+ return match.group(1)
330
+ # root = root.parent
331
+ # depth += 1
332
+ return "0.0.0"
333
+
334
+
335
+ def get_version(package_name):
336
+ try:
337
+ # print("version-", version(package_name))
338
+ return version(package_name)
339
+ except PackageNotFoundError:
340
+ return read_version_from_pyproject()
341
+
342
+
343
+ __version__ = get_version("fluxfem")
@@ -0,0 +1,316 @@
1
+ from .forms import FormContext, MixedFormContext, FieldPair, ElementVector, vector_load_form
2
+ from .space import (
3
+ FESpaceBase,
4
+ FESpace,
5
+ FESpacePytree,
6
+ make_space,
7
+ make_space_pytree,
8
+ make_tet_space,
9
+ make_tet_space_pytree,
10
+ make_tet10_space,
11
+ make_tet10_space_pytree,
12
+ make_hex_space,
13
+ make_hex_space_pytree,
14
+ make_hex20_space,
15
+ make_hex20_space_pytree,
16
+ make_hex27_space,
17
+ make_hex27_space_pytree,
18
+ )
19
+ from .data import MeshData, BasisData, SpaceData
20
+ from .basis import (
21
+ make_hex_basis,
22
+ make_hex_basis_pytree,
23
+ make_hex20_basis,
24
+ make_hex20_basis_pytree,
25
+ make_hex27_basis,
26
+ make_hex27_basis_pytree,
27
+ make_tet_basis,
28
+ make_tet_basis_pytree,
29
+ make_tet10_basis,
30
+ make_tet10_basis_pytree,
31
+ )
32
+ from .assembly import (
33
+ assemble_bilinear_form,
34
+ assemble_linear_form,
35
+ assemble_functional,
36
+ assemble_residual,
37
+ assemble_jacobian,
38
+ assemble_residual_scatter,
39
+ assemble_jacobian_scatter,
40
+ assemble_residual_elementwise_xla,
41
+ assemble_jacobian_elementwise_xla,
42
+ make_element_residual_kernel,
43
+ make_element_jacobian_kernel,
44
+ element_residual,
45
+ element_jacobian,
46
+ make_sparsity_pattern,
47
+ assemble_jacobian_values,
48
+ assemble_mass_matrix,
49
+ scalar_body_force_form,
50
+ make_scalar_body_force_form,
51
+ constant_body_force_form,
52
+ )
53
+ from ..physics.elasticity.linear import vector_body_force_form, constant_body_force_vector_form
54
+ from .interp import eval_shape_functions_hex8, interpolate_field_at_element_points
55
+ from .weakform import (
56
+ Expr,
57
+ FieldRef,
58
+ ParamRef,
59
+ trial_ref,
60
+ test_ref,
61
+ unknown_ref,
62
+ Params,
63
+ LinearForm,
64
+ BilinearForm,
65
+ ResidualForm,
66
+ compile_surface_linear,
67
+ MixedWeakForm,
68
+ compile_bilinear,
69
+ compile_linear,
70
+ compile_residual,
71
+ compile_mixed_residual,
72
+ grad,
73
+ sym_grad,
74
+ dot,
75
+ sdot,
76
+ ddot,
77
+ inner,
78
+ action,
79
+ gaction,
80
+ normal,
81
+ ds,
82
+ dOmega,
83
+ I,
84
+ det,
85
+ inv,
86
+ transpose,
87
+ log,
88
+ transpose_last2,
89
+ einsum,
90
+ )
91
+ from ..mesh import (
92
+ BaseMeshPytree,
93
+ bbox_predicate,
94
+ plane_predicate,
95
+ axis_plane_predicate,
96
+ slab_predicate,
97
+ HexMesh,
98
+ HexMeshPytree,
99
+ StructuredHexBox,
100
+ SurfaceMesh,
101
+ SurfaceMeshPytree,
102
+ tag_axis_minmax_facets,
103
+ TetMesh,
104
+ TetMeshPytree,
105
+ StructuredTetBox,
106
+ StructuredTetTensorBox,
107
+ load_gmsh_mesh,
108
+ load_gmsh_hex_mesh,
109
+ load_gmsh_tet_mesh,
110
+ make_surface_from_facets,
111
+ )
112
+ from .basis import (
113
+ HexTriLinearBasis,
114
+ HexTriLinearBasisPytree,
115
+ HexSerendipityBasis20,
116
+ HexSerendipityBasis20Pytree,
117
+ HexTriQuadraticBasis27,
118
+ HexTriQuadraticBasis27Pytree,
119
+ TetLinearBasis,
120
+ TetLinearBasisPytree,
121
+ TetQuadraticBasis10,
122
+ TetQuadraticBasis10Pytree,
123
+ )
124
+ from ..physics import lame_parameters, isotropic_3d_D
125
+ from .solver import spdirect_solve_cpu, spdirect_solve_gpu, spdirect_solve_jax, coo_to_csr
126
+ from ..solver import (
127
+ SparsityPattern,
128
+ FluxSparseMatrix,
129
+ LinearSolver,
130
+ NonlinearSolver,
131
+ enforce_dirichlet_dense,
132
+ enforce_dirichlet_sparse,
133
+ free_dofs,
134
+ condense_dirichlet_fluxsparse,
135
+ condense_dirichlet_dense,
136
+ expand_dirichlet_solution,
137
+ cg_solve,
138
+ cg_solve_jax,
139
+ NonlinearAnalysis,
140
+ NewtonLoopConfig,
141
+ LoadStepResult,
142
+ NewtonSolveRunner,
143
+ solve_nonlinear,
144
+ LinearAnalysis,
145
+ LinearSolveConfig,
146
+ LinearStepResult,
147
+ LinearSolveRunner,
148
+ newton_solve,
149
+ )
150
+ from ..solver.bc import (
151
+ SurfaceFormField,
152
+ SurfaceFormContext,
153
+ vector_surface_load_form,
154
+ make_vector_surface_load_form,
155
+ assemble_surface_linear_form,
156
+ )
157
+
158
+ __all__ = [
159
+ "FESpace",
160
+ "FESpaceBase",
161
+ "FESpacePytree",
162
+ "FormContext",
163
+ "MixedFormContext",
164
+ "FieldPair",
165
+ "ElementVector",
166
+ "vector_load_form",
167
+ "make_space",
168
+ "make_space_pytree",
169
+ "make_hex_basis",
170
+ "make_hex_basis_pytree",
171
+ "make_hex_space",
172
+ "make_hex_space_pytree",
173
+ "make_hex20_basis",
174
+ "make_hex20_basis_pytree",
175
+ "make_hex20_space",
176
+ "make_hex20_space_pytree",
177
+ "make_hex27_basis",
178
+ "make_hex27_basis_pytree",
179
+ "make_hex27_space",
180
+ "make_hex27_space_pytree",
181
+ "make_tet_basis",
182
+ "make_tet_basis_pytree",
183
+ "make_tet_space",
184
+ "make_tet_space_pytree",
185
+ "make_tet10_basis",
186
+ "make_tet10_basis_pytree",
187
+ "make_tet10_space",
188
+ "make_tet10_space_pytree",
189
+ "assemble_bilinear_form",
190
+ "assemble_linear_form",
191
+ "assemble_functional",
192
+ "assemble_residual",
193
+ "assemble_jacobian",
194
+ "assemble_residual_scatter",
195
+ "assemble_jacobian_scatter",
196
+ "assemble_residual_elementwise_xla",
197
+ "assemble_jacobian_elementwise_xla",
198
+ "make_element_residual_kernel",
199
+ "make_element_jacobian_kernel",
200
+ "element_residual",
201
+ "element_jacobian",
202
+ "make_sparsity_pattern",
203
+ "assemble_jacobian_values",
204
+ "assemble_residual_elementwise",
205
+ "assemble_jacobian_elementwise",
206
+ "assemble_mass_matrix",
207
+ "scalar_body_force_form",
208
+ "make_scalar_body_force_form",
209
+ "constant_body_force_form",
210
+ "vector_body_force_form",
211
+ "constant_body_force_vector_form",
212
+ "eval_shape_functions_hex8",
213
+ "interpolate_field_at_element_points",
214
+ "Expr",
215
+ "FieldRef",
216
+ "ParamRef",
217
+ "trial_ref",
218
+ "test_ref",
219
+ "unknown_ref",
220
+ "Params",
221
+ "LinearForm",
222
+ "BilinearForm",
223
+ "ResidualForm",
224
+ "MixedWeakForm",
225
+ "compile_bilinear",
226
+ "compile_linear",
227
+ "compile_residual",
228
+ "compile_surface_linear",
229
+ "compile_mixed_residual",
230
+ "grad",
231
+ "sym_grad",
232
+ "dot",
233
+ "sdot",
234
+ "ddot",
235
+ "inner",
236
+ "action",
237
+ "gaction",
238
+ "normal",
239
+ "ds",
240
+ "dOmega",
241
+ "I",
242
+ "det",
243
+ "inv",
244
+ "transpose",
245
+ "log",
246
+ "transpose_last2",
247
+ "einsum",
248
+ "HexMesh",
249
+ "HexMeshPytree",
250
+ "StructuredHexBox",
251
+ "SurfaceMesh",
252
+ "SurfaceMeshPytree",
253
+ "SurfaceFormField",
254
+ "SurfaceFormContext",
255
+ "vector_surface_load_form",
256
+ "make_vector_surface_load_form",
257
+ "assemble_surface_linear_form",
258
+ "load_gmsh_mesh",
259
+ "load_gmsh_hex_mesh",
260
+ "load_gmsh_tet_mesh",
261
+ "make_surface_from_facets",
262
+ "TetMesh",
263
+ "TetMeshPytree",
264
+ "StructuredTetBox",
265
+ "StructuredTetTensorBox",
266
+ "tag_axis_minmax_facets",
267
+ "BaseMeshPytree",
268
+ "bbox_predicate",
269
+ "plane_predicate",
270
+ "axis_plane_predicate",
271
+ "slab_predicate",
272
+ "HexTriLinearBasis",
273
+ "HexTriLinearBasisPytree",
274
+ "HexSerendipityBasis20",
275
+ "HexSerendipityBasis20Pytree",
276
+ "HexTriQuadraticBasis27",
277
+ "HexTriQuadraticBasis27Pytree",
278
+ "TetLinearBasis",
279
+ "TetLinearBasisPytree",
280
+ "TetQuadraticBasis10",
281
+ "TetQuadraticBasis10Pytree",
282
+ "lame_parameters",
283
+ "isotropic_3d_D",
284
+ "spdirect_solve_cpu",
285
+ "spdirect_solve_gpu",
286
+ "spdirect_solve_jax",
287
+ "coo_to_csr",
288
+ "SparsityPattern",
289
+ "FluxSparseMatrix",
290
+ "LinearSolver",
291
+ "NonlinearSolver",
292
+ "enforce_dirichlet_dense",
293
+ "enforce_dirichlet_sparse",
294
+ "free_dofs",
295
+ "condense_dirichlet_fluxsparse",
296
+ "condense_dirichlet_dense",
297
+ "expand_dirichlet_solution",
298
+ "cg_solve",
299
+ "cg_solve_jax",
300
+ "NonlinearAnalysis",
301
+ "NewtonLoopConfig",
302
+ "LoadStepResult",
303
+ "NewtonSolveRunner",
304
+ "solve_nonlinear",
305
+ "LinearAnalysis",
306
+ "LinearSolveConfig",
307
+ "LinearStepResult",
308
+ "LinearSolveRunner",
309
+ "newton_solve",
310
+ "jacobian_sparse",
311
+ "eval_shape_functions_hex8",
312
+ "interpolate_field_at_element_points",
313
+ "MeshData",
314
+ "BasisData",
315
+ "SpaceData",
316
+ ]