mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-09-21 18:33:36 +00:00
b25e121ab2
Introduce a single grouped export table consumed by `JuliaFEM.jl`, covering topology through solvers without embedding exports beside implementations. - Topology through quadrature, geometry Piola helpers, and basis/Nédélec–RT0 refs. - Formulation tags, abstract fields, DOF macros/layout/interpolation, handlers, connectivity, and mesh constructors. - Materials, sparse helpers, assemblers (including matrix-free operators), physics traits, domain kernels (continuum/heat/darcy/thermoelastic/mixed), and MPI hooks. - Notes verification hook via `names(JuliaFEM)` in module comments.
287 lines
13 KiB
Julia
287 lines
13 KiB
Julia
# SPDX-FileCopyrightText: 2015-2026 Jukka Aho
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
# ============================================================================
|
|
# Public-API exports for JuliaFEM. One file, grouped by domain, no duplicates.
|
|
#
|
|
# Pure name-binding reservations: this file does not depend on any symbol
|
|
# being defined yet. All exported names are defined by `include`s in
|
|
# `src/JuliaFEM.jl`. Verified against the live module by
|
|
# `julia --project=. -e 'using JuliaFEM; for s in names(JuliaFEM) ... end'`.
|
|
# ============================================================================
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Topology
|
|
# ---------------------------------------------------------------------------
|
|
export AbstractTopology
|
|
export TopologicalEntity, Vertex, Edge, Face, Cell
|
|
export entities, nentities, vertices, cells
|
|
export nvertices, nedges, nfaces
|
|
export nnodes, dim, reference_coordinates, edges, faces
|
|
|
|
# Topology shape types (one per family) and their node-count aliases.
|
|
export Segment, Triangle, Quadrilateral, Tetrahedron, Hexahedron, Pyramid, Wedge
|
|
export Seg2, Seg3
|
|
export Tri3, Tri6, Tri7, Tri10
|
|
export Quad4, Quad8, Quad9
|
|
export Tet4, Tet10
|
|
export Hex8, Hex20, Hex27
|
|
export Pyr5
|
|
export Wedge6, Wedge15
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Quadrature
|
|
# ---------------------------------------------------------------------------
|
|
export AbstractQuadratureRule, GaussLegendre, GaussLobatto, QuadraturePoint
|
|
export integration_points, get_quadrature_points, default_quadrature, basis_quadrature_order
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Geometry
|
|
# ---------------------------------------------------------------------------
|
|
export compute_jacobian, physical_derivatives, compute_strain
|
|
export piola_covariant, piola_contravariant
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Basis functions
|
|
# ---------------------------------------------------------------------------
|
|
export Vec # Re-export from Tensors.jl, used by basis function APIs.
|
|
export AbstractBasis, Lagrange, Serendipity
|
|
export get_basis_functions, get_basis_derivatives
|
|
export get_basis_function, get_basis_derivative
|
|
export nbasis, dof_types
|
|
export nedelec_whitney_tet_reference,
|
|
nedelec_hierarchical_tet_edge_reference, rt0_tet_reference_basis, rt0_hex8_reference_basis
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Formulations and field tags
|
|
# ---------------------------------------------------------------------------
|
|
export AbstractFormulation, ContinuumFormulation
|
|
export AbstractContinuumTheory, FullThreeD, PlaneStress, PlaneStrain, Axisymmetric
|
|
|
|
export AbstractField, Displacement, Temperature, MoistureContent, PressurePotential, RT0FaceFlux, Nedelec1Edge, DisplacementRotation
|
|
export LocalField
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# DOF system (DOF{Quantity, Entity}, DOFSet, layout, extraction, interpolation)
|
|
# ---------------------------------------------------------------------------
|
|
export AbstractDOF, DOF, DOFSet, @DOFSet
|
|
export ndofs, dof_size, quantity_type, entity_type
|
|
export field_ndofs, field_names, field_count, is_single_field
|
|
export field_dof_range, field_idx, entity_local, component
|
|
export DOFLayoutEntry, local_dof_layout
|
|
|
|
export element_id, n_element_dofs, element_dofs, basis_type, dof_type
|
|
export local_dof_count, global_dof_indices, local_to_global_map
|
|
export extract_element_dofs, extract_element_dofs_structured
|
|
export interpolate_fields, interpolate_field, interpolate_field_value
|
|
export interpolate_local_fields
|
|
|
|
export DOFHandler,
|
|
DOFManager,
|
|
create_elements!,
|
|
global_field_ranges,
|
|
global_facet_dof,
|
|
saddle_point_blocks,
|
|
saddle_point_matrix_blocks
|
|
export get_node_dofs, get_element_ids
|
|
export default_pressure_gauge_dof
|
|
export DOFElementConnection, DOFConnectivity
|
|
export build_dof_connectivity
|
|
export connection_count, is_empty
|
|
export elem_id, local_dof_idx
|
|
|
|
export dofs_per_node, get_dof_mapping!
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Mesh
|
|
# ---------------------------------------------------------------------------
|
|
export AbstractMesh, Mesh, topology_type
|
|
|
|
# Interface mesh (coupled boundaries)
|
|
export AbstractInterfaceMesh,
|
|
InterfaceMesh,
|
|
InterfaceVolumeCoupling,
|
|
InterfaceDOFHandler,
|
|
create_interface_elements!,
|
|
interface_nnodes,
|
|
interface_nelements
|
|
export nnodes_total, nelements, nnodes_per_element
|
|
export get_node
|
|
export connectivity_matrix, get_elements_for_node
|
|
export get_element_set, get_node_set
|
|
export get_elements_in_set, get_nodes_in_set
|
|
export extract_surface, surface_topology, validate, info
|
|
export AbstractRefineStrategy, LongestEdgeBisection, refine
|
|
export create_structured_box_mesh, create_unit_cube_mesh
|
|
export create_cantilever_mesh, create_thin_plate_mesh
|
|
export AbstractFacetConnectivityMaps
|
|
export Hex8FacetMaps, build_hex8_facet_maps, build_hex20_facet_maps, hex8_face_area_physical,
|
|
hex8_face_outward_sign, hex8_edge_length_physical, hex8_edge_orientation_sign,
|
|
hex20_edge_orientation_sign
|
|
export Tet4FacetMaps, build_tet4_facet_maps, build_tet10_facet_maps,
|
|
tet_facet_gid_from_corners, tet_face_area_physical,
|
|
tet_edge_length_physical, tet_face_outward_sign, tet4_edge_orientation_sign,
|
|
tet10_edge_orientation_sign
|
|
export Wedge6FacetMaps, build_wedge6_facet_maps, wedge_face_area_physical, wedge_edge_length_physical,
|
|
wedge_face_outward_sign, wedge6_edge_orientation_sign
|
|
export Pyr5FacetMaps, build_pyr5_facet_maps, pyr_face_area_physical, pyr_edge_length_physical,
|
|
pyr_face_outward_sign, pyr5_edge_orientation_sign
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Materials (abstract types, traits, state-variable system, concrete models)
|
|
# ---------------------------------------------------------------------------
|
|
export AbstractMaterial, AbstractElasticMaterial, AbstractPlasticMaterial
|
|
export compute_stress, elasticity_tensor
|
|
|
|
export MaterialBehavior
|
|
export StatelessConstantTangent, StatelessStrainDependent, StatefulStrainDependent
|
|
export material_behavior, needs_deformation, needs_state
|
|
|
|
export AbstractStateVariable
|
|
export PlasticStrain, Backstress, EquivalentPlasticStrain, DamageVariable
|
|
export DamageEquivalentStrain, Eigenstrain, CreepStrain, ChabocheAlpha
|
|
export state_variable_type, default_symbol
|
|
|
|
export supported_physics, required_field_types, required_state_variables
|
|
export required_material_fields, material_field_type, create_zero_field
|
|
export get_state_variable_types, get_state_variable_symbols, is_stateful
|
|
|
|
export GlobalMaterialCache, create_global_material_cache
|
|
export get_state, get_old_state, set_state!
|
|
export update_cache!, reset_cache!
|
|
export get_state_variable, set_state_variable
|
|
|
|
export LinearElastic, OrthotropicLinearElastic, NeoHookean, PerfectPlasticity, J2LinearIsotropicPlasticity
|
|
export AbstractContinuumKinematics, SmallStrainKinematics, GreenLagrangeKinematics, continuum_kinematics
|
|
export MooneyRivlin, Yeoh3, Gent
|
|
export StVenantKirchhoffJ2Plasticity, ScalarDamageLinearElastic, ChabocheJ2Plasticity
|
|
export NortonCreepElastic, LinearElasticWithEigenstrain
|
|
export HeatConductivity, compute_heat_flux, conductivity_tensor, scalar_diffusion_tensor
|
|
export HydraulicConductivity, hydraulic_conductivity_tensor, compute_seepage_flux
|
|
export MoistureDiffusivity
|
|
export ElementWiseScalarDiffusion
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Physics tags (used by material traits; not the legacy `Physics{...}` struct)
|
|
# ---------------------------------------------------------------------------
|
|
export AbstractPhysics
|
|
export Elasticity, Thermal, required_field_type
|
|
export extract_strain, extract_strain_rate
|
|
|
|
# Reserved names. The default 0.x build does not implement methods on these; they
|
|
# exist so that `JuliaFEM.Legacy` can hang its methods on the same generic
|
|
# functions, and so that the assemblers can extend `assemble!`.
|
|
export assemble!
|
|
export solve!, add_dirichlet!, add_neumann!
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Assemblers (caches, kernel contract, element-based, DOF-based, matrix-free)
|
|
# ---------------------------------------------------------------------------
|
|
export AbstractAssembler, AbstractAssemblerCache, AbstractKernel
|
|
export ElementBasedAssembler, COOAssembler
|
|
|
|
export ContinuumElementCache, ElementCache, create_element_cache
|
|
export GeometryCache
|
|
export AssemblyMaterialWorkspace
|
|
export create_material_cache
|
|
export get_field, set_fields!
|
|
export get_stress, get_tangent
|
|
export get_stress_vector, get_tangent_vector
|
|
|
|
export ContinuumCOOCache, COOCache
|
|
export reset!, extract_system
|
|
|
|
export create_cache
|
|
|
|
# Microkernel contract (DOF-based / matrix-free path)
|
|
export qpoint_buffer_eltype, update_qpoint_buffer!
|
|
export evaluate_entry, evaluate_mass_entry
|
|
export reference_fields
|
|
|
|
# DOF-based assembler (CPU + KernelAbstractions)
|
|
export DOFBasedCOOAssembler, DOFBasedCOOCache
|
|
export DOFBasedCOOCacheKA, sync_from_cpu!, to_float32
|
|
export apply_K!, apply_K_masked_rows!, apply_K_owned_rows!, apply_K_owned_rows_from_packed!, apply_K_contributions!, apply_M!, assemble_M!
|
|
|
|
export AbstractMultiplyGhostLayout, LocalMultiplyLayout, ReferenceMaskMultiplyLayout
|
|
export prepare_multiply_workspace!
|
|
export MeshPartitionLayout, uniform_single_partition
|
|
export element_indices_for_part, validate_partition
|
|
export brick_hex_slab_upper, brick_hex_partition_slabs
|
|
export element_counts_by_part, referenced_global_dofs
|
|
export sum_element_dof_slots
|
|
export mark_referenced_dofs!, collect_true_indices!, fill_referenced_dof_indices!
|
|
export ghost_dof_mask!, node_partition_owner_min!, mark_owned_vertex_field_dofs!
|
|
export PartitionAdjacency, build_partition_adjacency
|
|
export RankHaloExchange, build_rank_halo_exchanges, build_matvec_halo_exchanges, referenced_dof_mask_for_part!
|
|
export matvec_halo_mpi_request_count
|
|
export PartitionPackedLayout, build_partition_packed_layout, build_partition_packed_layout_for_matvec
|
|
export mark_matvec_stencil_closure!
|
|
export gather_from_global_to_packed!, expand_packed_to_global!, gather_owned_from_global_to_packed!
|
|
export copy_owned_subset_to_packed_owned_prefix!, extract_owned_subset_from_global!, gather_owned_rows_from_workspace!
|
|
export gather_ghosts_from_global_to_packed!
|
|
export unpack_halo_recv_to_packed!, pack_halo_send_from_packed!
|
|
export owned_dot_packed, owned_norm²_packed, owned_dot_global_vecs
|
|
export allocate_halo_recv_buffers, allocate_halo_send_buffers, partitioned_matvec_workspace
|
|
export partitioned_mpi_owned_matvec_workspace, allocate_exchange_matvec_halo_mpi_requests
|
|
export simulate_halo_recv_from_global!, partitioned_owned_matvec!, exchange_matvec_halos_mpi!
|
|
export mpi_owned_dot_global, mpi_owned_dot_local, mpi_partitioned_operator_matvec!, mpi_partitioned_operator_matvec_owned!
|
|
|
|
# Matrix-free operator + constraints + loads + preconditioners + eigensolve
|
|
export AbstractMatrixFreeOperator, MatrixFreeOperator, MatrixFreeMassOperator
|
|
export matrix_free_op
|
|
|
|
export AbstractDirichletConstraint, PenaltyDirichlet, EliminatedDirichlet
|
|
export AbstractMultipointConstraint, LinearMPC
|
|
export apply_constraint!, apply_constraint_pre!, apply_constraint_post!, apply_penalty_dirichlet_post_owned!, apply_penalty_dirichlet_post_ap_owned!
|
|
export apply_constraint_diag!, apply_constraint_block_diag!
|
|
|
|
export AbstractNeumannLoad, NodalForce, UniformBodyForce, UniformMixedDarcySource,
|
|
MixedDarcyTet4BoundaryNormalFluxLoad, MixedDarcyHex8BoundaryNormalFluxLoad,
|
|
SurfaceLoad
|
|
export apply_load!
|
|
|
|
export JacobiPreconditioner,
|
|
BlockJacobiPreconditioner,
|
|
ApproxSchurDiagBlockPreconditioner,
|
|
ApproxSchurICholDiagBlockPreconditioner,
|
|
ICholPreconditioner
|
|
export compute_diagonal!, compute_block_diagonal!
|
|
|
|
export lowest_eigenpairs, solve_eigenproblem
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Domain kernels and per-domain integration helpers
|
|
# ---------------------------------------------------------------------------
|
|
export ContinuumKernel
|
|
export material_lab_single_hex8_brick,
|
|
hex8_symmetric_uniaxial_eliminated_dirichlet,
|
|
material_lab_linear_elastic_uniaxial_solve
|
|
export MixedUPKernel
|
|
export StokesMixedKernel
|
|
export FacetMassKernel, EdgeMassKernel
|
|
export HellingerReissnerKernel
|
|
export HuWashizuKernel
|
|
export compute_block!, compute_block_at_point
|
|
export update_geometry_cache!, update_element_cache!, update_material_cache!
|
|
|
|
export HeatKernel, DarcyPotentialKernel,
|
|
AbstractDarcyMixedRT0P0Kernel, DarcyMixedRT0P0Kernel, DarcyMixedHex8RT0P0Kernel
|
|
export ThermoElasticKernel, ThermoElasticQPBuffer
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Element template
|
|
# ---------------------------------------------------------------------------
|
|
export Element
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Sparse matrix scratch types
|
|
# ---------------------------------------------------------------------------
|
|
# `SparseMatrixCOO` / `SparseVectorCOO` are still consumed by the legacy
|
|
# pipeline (`JuliaFEM.Legacy`), so they remain part of the default export
|
|
# surface. The CSC-only convenience helpers (`get_nonzero_rows`,
|
|
# `get_nonzero_columns`, `resize_sparse`, `resize_sparsevec`) used to live
|
|
# next to them but have moved into `JuliaFEM.Legacy.SparseHelpers` since
|
|
# they are not used by the modern path.
|
|
export SparseMatrixCOO, SparseVectorCOO
|