fluxfem 0.1.4__py3-none-any.whl → 0.2.1__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 +69 -13
- fluxfem/core/__init__.py +140 -53
- fluxfem/core/assembly.py +691 -97
- fluxfem/core/basis.py +75 -54
- fluxfem/core/context_types.py +36 -12
- fluxfem/core/dtypes.py +9 -1
- fluxfem/core/forms.py +10 -0
- fluxfem/core/mixed_assembly.py +263 -0
- fluxfem/core/mixed_space.py +382 -0
- fluxfem/core/mixed_weakform.py +97 -0
- fluxfem/core/solver.py +2 -0
- fluxfem/core/space.py +315 -30
- fluxfem/core/weakform.py +821 -42
- fluxfem/helpers_wf.py +49 -0
- fluxfem/mesh/__init__.py +54 -2
- fluxfem/mesh/base.py +318 -9
- fluxfem/mesh/contact.py +841 -0
- fluxfem/mesh/dtypes.py +12 -0
- fluxfem/mesh/hex.py +17 -16
- fluxfem/mesh/io.py +9 -6
- fluxfem/mesh/mortar.py +3970 -0
- fluxfem/mesh/supermesh.py +318 -0
- fluxfem/mesh/surface.py +104 -26
- fluxfem/mesh/tet.py +16 -7
- fluxfem/physics/diffusion.py +3 -0
- fluxfem/physics/elasticity/hyperelastic.py +35 -3
- fluxfem/physics/elasticity/linear.py +22 -4
- fluxfem/physics/elasticity/stress.py +9 -5
- fluxfem/physics/operators.py +12 -5
- fluxfem/physics/postprocess.py +29 -3
- fluxfem/solver/__init__.py +47 -2
- fluxfem/solver/bc.py +38 -2
- fluxfem/solver/block_matrix.py +284 -0
- fluxfem/solver/block_system.py +477 -0
- fluxfem/solver/cg.py +150 -55
- fluxfem/solver/dirichlet.py +358 -5
- fluxfem/solver/history.py +15 -3
- fluxfem/solver/newton.py +260 -70
- fluxfem/solver/petsc.py +445 -0
- fluxfem/solver/preconditioner.py +109 -0
- fluxfem/solver/result.py +18 -0
- fluxfem/solver/solve_runner.py +208 -23
- fluxfem/solver/solver.py +35 -12
- fluxfem/solver/sparse.py +149 -15
- fluxfem/tools/jit.py +19 -7
- fluxfem/tools/timer.py +14 -12
- fluxfem/tools/visualizer.py +16 -4
- fluxfem-0.2.1.dist-info/METADATA +314 -0
- fluxfem-0.2.1.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.1.dist-info}/LICENSE +0 -0
- {fluxfem-0.1.4.dist-info → fluxfem-0.2.1.dist-info}/WHEEL +0 -0
fluxfem/__init__.py
CHANGED
|
@@ -12,19 +12,25 @@ __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
|
-
"outer",
|
|
26
|
-
"sdot",
|
|
27
|
-
"dOmega",
|
|
28
34
|
"FormContext",
|
|
29
35
|
"MixedFormContext",
|
|
30
36
|
"VolumeContext",
|
|
@@ -58,10 +64,15 @@ __all__ = [
|
|
|
58
64
|
"BasisData",
|
|
59
65
|
"SpaceData",
|
|
60
66
|
"make_element_residual_kernel",
|
|
67
|
+
"make_element_bilinear_kernel",
|
|
68
|
+
"make_element_linear_kernel",
|
|
61
69
|
"make_element_jacobian_kernel",
|
|
70
|
+
"make_element_kernel",
|
|
62
71
|
"element_residual",
|
|
63
72
|
"element_jacobian",
|
|
64
73
|
"make_sparsity_pattern",
|
|
74
|
+
"chunk_pad_stats",
|
|
75
|
+
"BatchedAssembler",
|
|
65
76
|
"assemble_functional",
|
|
66
77
|
"assemble_mass_matrix",
|
|
67
78
|
"scalar_body_force_form",
|
|
@@ -71,11 +82,6 @@ __all__ = [
|
|
|
71
82
|
"constant_body_force_form",
|
|
72
83
|
"constant_body_force_vector_form",
|
|
73
84
|
"diffusion_form",
|
|
74
|
-
"dot",
|
|
75
|
-
"ddot",
|
|
76
|
-
"transpose_last2",
|
|
77
|
-
"sym_grad",
|
|
78
|
-
"sym_grad_u",
|
|
79
85
|
"right_cauchy_green",
|
|
80
86
|
"green_lagrange_strain",
|
|
81
87
|
"deformation_gradient",
|
|
@@ -88,21 +94,54 @@ __all__ = [
|
|
|
88
94
|
"StructuredHexBox",
|
|
89
95
|
"SurfaceMesh",
|
|
90
96
|
"SurfaceMeshPytree",
|
|
97
|
+
"SurfaceWithElemConn",
|
|
98
|
+
"surface_with_elem_conn",
|
|
91
99
|
"SurfaceFormField",
|
|
92
100
|
"SurfaceFormContext",
|
|
101
|
+
"SurfaceBilinearContext",
|
|
102
|
+
"SurfaceSupermesh",
|
|
93
103
|
"vector_surface_load_form",
|
|
94
104
|
"make_vector_surface_load_form",
|
|
95
105
|
"assemble_surface_linear_form",
|
|
106
|
+
"assemble_surface_bilinear_form",
|
|
107
|
+
"MortarMatrix",
|
|
108
|
+
"assemble_mortar_matrices",
|
|
109
|
+
"assemble_contact_onesided_floor",
|
|
110
|
+
"assemble_mixed_surface_residual",
|
|
111
|
+
"assemble_mixed_surface_jacobian",
|
|
112
|
+
"map_surface_facets_to_tet_elements",
|
|
113
|
+
"map_surface_facets_to_hex_elements",
|
|
114
|
+
"tri_area",
|
|
115
|
+
"tri_quadrature",
|
|
116
|
+
"facet_triangles",
|
|
117
|
+
"facet_shape_values",
|
|
118
|
+
"volume_shape_values_at_points",
|
|
119
|
+
"quad_shape_and_local",
|
|
120
|
+
"quad9_shape_values",
|
|
121
|
+
"hex27_gradN",
|
|
122
|
+
"ContactSurfaceSpace",
|
|
123
|
+
"ContactSide",
|
|
124
|
+
"OneSidedContact",
|
|
125
|
+
"OneSidedContactSurfaceSpace",
|
|
126
|
+
"facet_gap_values",
|
|
127
|
+
"active_contact_facets",
|
|
96
128
|
"tag_axis_minmax_facets",
|
|
97
129
|
"load_gmsh_mesh",
|
|
98
130
|
"load_gmsh_hex_mesh",
|
|
99
131
|
"load_gmsh_tet_mesh",
|
|
100
132
|
"make_surface_from_facets",
|
|
133
|
+
"build_surface_supermesh",
|
|
134
|
+
"MortarMatrix",
|
|
135
|
+
"assemble_mortar_matrices",
|
|
136
|
+
"assemble_mixed_surface_residual",
|
|
137
|
+
"assemble_mixed_surface_jacobian",
|
|
138
|
+
"map_surface_facets_to_tet_elements",
|
|
101
139
|
"TetMesh",
|
|
102
140
|
"TetMeshPytree",
|
|
103
141
|
"StructuredTetBox",
|
|
104
142
|
"StructuredTetTensorBox",
|
|
105
143
|
"BaseMeshPytree",
|
|
144
|
+
"SurfaceWithFacetMap",
|
|
106
145
|
"bbox_predicate",
|
|
107
146
|
"plane_predicate",
|
|
108
147
|
"axis_plane_predicate",
|
|
@@ -125,15 +164,36 @@ __all__ = [
|
|
|
125
164
|
"coo_to_csr",
|
|
126
165
|
"SparsityPattern",
|
|
127
166
|
"FluxSparseMatrix",
|
|
167
|
+
"FluxBlockMatrix",
|
|
168
|
+
"coalesce_coo",
|
|
169
|
+
"concat_flux",
|
|
170
|
+
"block_diag_flux",
|
|
171
|
+
"build_block_system",
|
|
172
|
+
"split_block_matrix",
|
|
173
|
+
"BlockSystem",
|
|
128
174
|
"LinearSolver",
|
|
129
175
|
"NonlinearSolver",
|
|
176
|
+
"petsc_solve",
|
|
177
|
+
"petsc_shell_solve",
|
|
178
|
+
"petsc_is_available",
|
|
179
|
+
"DirichletBC",
|
|
130
180
|
"enforce_dirichlet_dense",
|
|
181
|
+
"enforce_dirichlet_dense_jax",
|
|
182
|
+
"enforce_dirichlet_fluxsparse",
|
|
131
183
|
"enforce_dirichlet_sparse",
|
|
184
|
+
"enforce_dirichlet_system",
|
|
185
|
+
"split_dirichlet_matrix",
|
|
132
186
|
"free_dofs",
|
|
133
187
|
"condense_dirichlet_fluxsparse",
|
|
188
|
+
"condense_dirichlet_fluxsparse_coo",
|
|
134
189
|
"condense_dirichlet_dense",
|
|
190
|
+
"restrict_flux_to_free",
|
|
135
191
|
"expand_dirichlet_solution",
|
|
192
|
+
"condense_dirichlet_system",
|
|
136
193
|
"cg_solve",
|
|
194
|
+
"make_block_jacobi_preconditioner",
|
|
195
|
+
"build_cg_operator",
|
|
196
|
+
"CGOperator",
|
|
137
197
|
"NonlinearAnalysis",
|
|
138
198
|
"NewtonLoopConfig",
|
|
139
199
|
"LoadStepResult",
|
|
@@ -148,6 +208,7 @@ __all__ = [
|
|
|
148
208
|
"write_displacement_vtu",
|
|
149
209
|
"make_jitted_residual",
|
|
150
210
|
"make_jitted_jacobian",
|
|
211
|
+
"block",
|
|
151
212
|
"make_elastic_point_data",
|
|
152
213
|
"write_elastic_vtu",
|
|
153
214
|
"make_point_data_displacement",
|
|
@@ -165,11 +226,6 @@ _PHYSICS_EXPORTS = {
|
|
|
165
226
|
"vector_body_force_form",
|
|
166
227
|
"constant_body_force_vector_form",
|
|
167
228
|
"diffusion_form",
|
|
168
|
-
"dot",
|
|
169
|
-
"ddot",
|
|
170
|
-
"transpose_last2",
|
|
171
|
-
"sym_grad",
|
|
172
|
-
"sym_grad_u",
|
|
173
229
|
"right_cauchy_green",
|
|
174
230
|
"green_lagrange_strain",
|
|
175
231
|
"deformation_gradient",
|
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,58 +65,21 @@ 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,
|
|
72
82
|
compile_mixed_residual,
|
|
73
|
-
grad,
|
|
74
|
-
sym_grad,
|
|
75
|
-
outer,
|
|
76
|
-
dot,
|
|
77
|
-
sdot,
|
|
78
|
-
ddot,
|
|
79
|
-
inner,
|
|
80
|
-
action,
|
|
81
|
-
gaction,
|
|
82
|
-
normal,
|
|
83
|
-
ds,
|
|
84
|
-
dOmega,
|
|
85
|
-
I,
|
|
86
|
-
det,
|
|
87
|
-
inv,
|
|
88
|
-
transpose,
|
|
89
|
-
log,
|
|
90
|
-
transpose_last2,
|
|
91
|
-
matmul,
|
|
92
|
-
matmul_std,
|
|
93
|
-
einsum,
|
|
94
|
-
)
|
|
95
|
-
from ..mesh import (
|
|
96
|
-
BaseMeshPytree,
|
|
97
|
-
bbox_predicate,
|
|
98
|
-
plane_predicate,
|
|
99
|
-
axis_plane_predicate,
|
|
100
|
-
slab_predicate,
|
|
101
|
-
HexMesh,
|
|
102
|
-
HexMeshPytree,
|
|
103
|
-
StructuredHexBox,
|
|
104
|
-
SurfaceMesh,
|
|
105
|
-
SurfaceMeshPytree,
|
|
106
|
-
tag_axis_minmax_facets,
|
|
107
|
-
TetMesh,
|
|
108
|
-
TetMeshPytree,
|
|
109
|
-
StructuredTetBox,
|
|
110
|
-
StructuredTetTensorBox,
|
|
111
|
-
load_gmsh_mesh,
|
|
112
|
-
load_gmsh_hex_mesh,
|
|
113
|
-
load_gmsh_tet_mesh,
|
|
114
|
-
make_surface_from_facets,
|
|
115
83
|
)
|
|
116
84
|
from .basis import (
|
|
117
85
|
HexTriLinearBasis,
|
|
@@ -127,22 +95,90 @@ from .basis import (
|
|
|
127
95
|
)
|
|
128
96
|
import importlib
|
|
129
97
|
|
|
130
|
-
from ..physics import lame_parameters, isotropic_3d_D
|
|
131
98
|
from .solver import spdirect_solve_cpu, spdirect_solve_gpu, spdirect_solve_jax, coo_to_csr
|
|
132
99
|
|
|
100
|
+
_MESH_EXPORTS = {
|
|
101
|
+
"BaseMeshPytree",
|
|
102
|
+
"SurfaceWithFacetMap",
|
|
103
|
+
"bbox_predicate",
|
|
104
|
+
"plane_predicate",
|
|
105
|
+
"axis_plane_predicate",
|
|
106
|
+
"slab_predicate",
|
|
107
|
+
"HexMesh",
|
|
108
|
+
"HexMeshPytree",
|
|
109
|
+
"StructuredHexBox",
|
|
110
|
+
"SurfaceMesh",
|
|
111
|
+
"SurfaceMeshPytree",
|
|
112
|
+
"SurfaceWithElemConn",
|
|
113
|
+
"surface_with_elem_conn",
|
|
114
|
+
"SurfaceSupermesh",
|
|
115
|
+
"build_surface_supermesh",
|
|
116
|
+
"tag_axis_minmax_facets",
|
|
117
|
+
"TetMesh",
|
|
118
|
+
"TetMeshPytree",
|
|
119
|
+
"StructuredTetBox",
|
|
120
|
+
"StructuredTetTensorBox",
|
|
121
|
+
"load_gmsh_mesh",
|
|
122
|
+
"load_gmsh_hex_mesh",
|
|
123
|
+
"load_gmsh_tet_mesh",
|
|
124
|
+
"make_surface_from_facets",
|
|
125
|
+
"MortarMatrix",
|
|
126
|
+
"assemble_mortar_matrices",
|
|
127
|
+
"assemble_contact_onesided_floor",
|
|
128
|
+
"assemble_mixed_surface_residual",
|
|
129
|
+
"assemble_mixed_surface_jacobian",
|
|
130
|
+
"map_surface_facets_to_tet_elements",
|
|
131
|
+
"map_surface_facets_to_hex_elements",
|
|
132
|
+
"tri_area",
|
|
133
|
+
"tri_quadrature",
|
|
134
|
+
"facet_triangles",
|
|
135
|
+
"facet_shape_values",
|
|
136
|
+
"volume_shape_values_at_points",
|
|
137
|
+
"quad_shape_and_local",
|
|
138
|
+
"quad9_shape_values",
|
|
139
|
+
"hex27_gradN",
|
|
140
|
+
"ContactSurfaceSpace",
|
|
141
|
+
"ContactSide",
|
|
142
|
+
"OneSidedContact",
|
|
143
|
+
"OneSidedContactSurfaceSpace",
|
|
144
|
+
"facet_gap_values",
|
|
145
|
+
"active_contact_facets",
|
|
146
|
+
}
|
|
147
|
+
|
|
133
148
|
_SOLVER_EXPORTS = {
|
|
134
149
|
"SparsityPattern",
|
|
135
150
|
"FluxSparseMatrix",
|
|
151
|
+
"FluxBlockMatrix",
|
|
152
|
+
"coalesce_coo",
|
|
153
|
+
"concat_flux",
|
|
154
|
+
"block_diag_flux",
|
|
155
|
+
"build_block_system",
|
|
156
|
+
"split_block_matrix",
|
|
157
|
+
"BlockSystem",
|
|
158
|
+
"DirichletBC",
|
|
136
159
|
"LinearSolver",
|
|
137
160
|
"NonlinearSolver",
|
|
161
|
+
"petsc_solve",
|
|
162
|
+
"petsc_shell_solve",
|
|
163
|
+
"petsc_is_available",
|
|
138
164
|
"enforce_dirichlet_dense",
|
|
165
|
+
"enforce_dirichlet_dense_jax",
|
|
166
|
+
"enforce_dirichlet_fluxsparse",
|
|
139
167
|
"enforce_dirichlet_sparse",
|
|
168
|
+
"enforce_dirichlet_system",
|
|
169
|
+
"split_dirichlet_matrix",
|
|
140
170
|
"free_dofs",
|
|
171
|
+
"restrict_flux_to_free",
|
|
172
|
+
"condense_dirichlet_system",
|
|
141
173
|
"condense_dirichlet_fluxsparse",
|
|
174
|
+
"condense_dirichlet_fluxsparse_coo",
|
|
142
175
|
"condense_dirichlet_dense",
|
|
143
176
|
"expand_dirichlet_solution",
|
|
144
177
|
"cg_solve",
|
|
145
178
|
"cg_solve_jax",
|
|
179
|
+
"build_cg_operator",
|
|
180
|
+
"CGOperator",
|
|
181
|
+
"make_block_jacobi_preconditioner",
|
|
146
182
|
"NonlinearAnalysis",
|
|
147
183
|
"NewtonLoopConfig",
|
|
148
184
|
"LoadStepResult",
|
|
@@ -153,19 +189,26 @@ _SOLVER_EXPORTS = {
|
|
|
153
189
|
"LinearStepResult",
|
|
154
190
|
"LinearSolveRunner",
|
|
155
191
|
"newton_solve",
|
|
192
|
+
"petsc_solve",
|
|
193
|
+
"petsc_shell_solve",
|
|
194
|
+
"petsc_is_available",
|
|
156
195
|
}
|
|
157
196
|
|
|
158
197
|
_SOLVER_BC_EXPORTS = {
|
|
159
198
|
"SurfaceFormField",
|
|
160
199
|
"SurfaceFormContext",
|
|
200
|
+
"SurfaceBilinearContext",
|
|
161
201
|
"vector_surface_load_form",
|
|
162
202
|
"make_vector_surface_load_form",
|
|
163
203
|
"assemble_surface_linear_form",
|
|
204
|
+
"assemble_surface_bilinear_form",
|
|
164
205
|
}
|
|
165
206
|
|
|
166
207
|
|
|
167
208
|
def __getattr__(name: str):
|
|
168
|
-
if name in
|
|
209
|
+
if name in _MESH_EXPORTS:
|
|
210
|
+
module = importlib.import_module("..mesh", __name__)
|
|
211
|
+
elif name in _SOLVER_EXPORTS:
|
|
169
212
|
module = importlib.import_module("..solver", __name__)
|
|
170
213
|
elif name in _SOLVER_BC_EXPORTS:
|
|
171
214
|
module = importlib.import_module("..solver.bc", __name__)
|
|
@@ -180,6 +223,10 @@ __all__ = [
|
|
|
180
223
|
"FESpace",
|
|
181
224
|
"FESpaceBase",
|
|
182
225
|
"FESpacePytree",
|
|
226
|
+
"MixedFESpace",
|
|
227
|
+
"MixedProblem",
|
|
228
|
+
"MixedDirichletBC",
|
|
229
|
+
"MixedBlockSystem",
|
|
183
230
|
"FormContext",
|
|
184
231
|
"MixedFormContext",
|
|
185
232
|
"VolumeContext",
|
|
@@ -218,9 +265,9 @@ __all__ = [
|
|
|
218
265
|
"assemble_jacobian",
|
|
219
266
|
"assemble_residual_scatter",
|
|
220
267
|
"assemble_jacobian_scatter",
|
|
221
|
-
"assemble_residual_elementwise_xla",
|
|
222
|
-
"assemble_jacobian_elementwise_xla",
|
|
223
268
|
"make_element_residual_kernel",
|
|
269
|
+
"make_element_bilinear_kernel",
|
|
270
|
+
"make_element_linear_kernel",
|
|
224
271
|
"make_element_jacobian_kernel",
|
|
225
272
|
"element_residual",
|
|
226
273
|
"element_jacobian",
|
|
@@ -232,8 +279,6 @@ __all__ = [
|
|
|
232
279
|
"scalar_body_force_form",
|
|
233
280
|
"make_scalar_body_force_form",
|
|
234
281
|
"constant_body_force_form",
|
|
235
|
-
"vector_body_force_form",
|
|
236
|
-
"constant_body_force_vector_form",
|
|
237
282
|
"eval_shape_functions_hex8",
|
|
238
283
|
"interpolate_field_at_element_points",
|
|
239
284
|
"Expr",
|
|
@@ -242,15 +287,20 @@ __all__ = [
|
|
|
242
287
|
"trial_ref",
|
|
243
288
|
"test_ref",
|
|
244
289
|
"unknown_ref",
|
|
290
|
+
"zero_ref",
|
|
245
291
|
"Params",
|
|
246
292
|
"LinearForm",
|
|
247
293
|
"BilinearForm",
|
|
248
294
|
"ResidualForm",
|
|
249
295
|
"MixedWeakForm",
|
|
296
|
+
"make_mixed_residuals",
|
|
297
|
+
"kernel",
|
|
250
298
|
"compile_bilinear",
|
|
251
299
|
"compile_linear",
|
|
252
300
|
"compile_residual",
|
|
253
301
|
"compile_surface_linear",
|
|
302
|
+
"compile_surface_bilinear",
|
|
303
|
+
"compile_mixed_surface_residual",
|
|
254
304
|
"compile_mixed_residual",
|
|
255
305
|
"grad",
|
|
256
306
|
"sym_grad",
|
|
@@ -278,21 +328,49 @@ __all__ = [
|
|
|
278
328
|
"StructuredHexBox",
|
|
279
329
|
"SurfaceMesh",
|
|
280
330
|
"SurfaceMeshPytree",
|
|
331
|
+
"SurfaceWithElemConn",
|
|
332
|
+
"surface_with_elem_conn",
|
|
281
333
|
"SurfaceFormField",
|
|
282
334
|
"SurfaceFormContext",
|
|
335
|
+
"SurfaceBilinearContext",
|
|
283
336
|
"vector_surface_load_form",
|
|
284
337
|
"make_vector_surface_load_form",
|
|
285
338
|
"assemble_surface_linear_form",
|
|
339
|
+
"assemble_surface_bilinear_form",
|
|
286
340
|
"load_gmsh_mesh",
|
|
287
341
|
"load_gmsh_hex_mesh",
|
|
288
342
|
"load_gmsh_tet_mesh",
|
|
289
343
|
"make_surface_from_facets",
|
|
344
|
+
"SurfaceSupermesh",
|
|
345
|
+
"build_surface_supermesh",
|
|
346
|
+
"MortarMatrix",
|
|
347
|
+
"assemble_mortar_matrices",
|
|
348
|
+
"assemble_contact_onesided_floor",
|
|
349
|
+
"assemble_mixed_surface_residual",
|
|
350
|
+
"assemble_mixed_surface_jacobian",
|
|
351
|
+
"map_surface_facets_to_tet_elements",
|
|
352
|
+
"map_surface_facets_to_hex_elements",
|
|
353
|
+
"tri_area",
|
|
354
|
+
"tri_quadrature",
|
|
355
|
+
"facet_triangles",
|
|
356
|
+
"facet_shape_values",
|
|
357
|
+
"volume_shape_values_at_points",
|
|
358
|
+
"quad_shape_and_local",
|
|
359
|
+
"quad9_shape_values",
|
|
360
|
+
"hex27_gradN",
|
|
361
|
+
"ContactSurfaceSpace",
|
|
362
|
+
"ContactSide",
|
|
363
|
+
"OneSidedContact",
|
|
364
|
+
"OneSidedContactSurfaceSpace",
|
|
365
|
+
"facet_gap_values",
|
|
366
|
+
"active_contact_facets",
|
|
290
367
|
"TetMesh",
|
|
291
368
|
"TetMeshPytree",
|
|
292
369
|
"StructuredTetBox",
|
|
293
370
|
"StructuredTetTensorBox",
|
|
294
371
|
"tag_axis_minmax_facets",
|
|
295
372
|
"BaseMeshPytree",
|
|
373
|
+
"SurfaceWithFacetMap",
|
|
296
374
|
"bbox_predicate",
|
|
297
375
|
"plane_predicate",
|
|
298
376
|
"axis_plane_predicate",
|
|
@@ -307,20 +385,29 @@ __all__ = [
|
|
|
307
385
|
"TetLinearBasisPytree",
|
|
308
386
|
"TetQuadraticBasis10",
|
|
309
387
|
"TetQuadraticBasis10Pytree",
|
|
310
|
-
"lame_parameters",
|
|
311
|
-
"isotropic_3d_D",
|
|
312
388
|
"spdirect_solve_cpu",
|
|
313
389
|
"spdirect_solve_gpu",
|
|
314
390
|
"spdirect_solve_jax",
|
|
315
391
|
"coo_to_csr",
|
|
316
392
|
"SparsityPattern",
|
|
317
393
|
"FluxSparseMatrix",
|
|
394
|
+
"FluxBlockMatrix",
|
|
395
|
+
"coalesce_coo",
|
|
396
|
+
"concat_flux",
|
|
397
|
+
"block_diag_flux",
|
|
318
398
|
"LinearSolver",
|
|
319
399
|
"NonlinearSolver",
|
|
320
400
|
"enforce_dirichlet_dense",
|
|
401
|
+
"enforce_dirichlet_dense_jax",
|
|
402
|
+
"enforce_dirichlet_fluxsparse",
|
|
321
403
|
"enforce_dirichlet_sparse",
|
|
404
|
+
"enforce_dirichlet_system",
|
|
405
|
+
"split_dirichlet_matrix",
|
|
322
406
|
"free_dofs",
|
|
407
|
+
"restrict_flux_to_free",
|
|
408
|
+
"condense_dirichlet_system",
|
|
323
409
|
"condense_dirichlet_fluxsparse",
|
|
410
|
+
"condense_dirichlet_fluxsparse_coo",
|
|
324
411
|
"condense_dirichlet_dense",
|
|
325
412
|
"expand_dirichlet_solution",
|
|
326
413
|
"cg_solve",
|