Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor shapes (DUPE FOR CI) #19

Merged
merged 51 commits into from
Dec 11, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
11bd11f
make face mass matrices work on tensor products
alexfikl Nov 3, 2020
cfd8fbf
fix 0d case for tensor products
alexfikl Nov 4, 2020
ffcb91b
remove face index stuff
alexfikl Nov 4, 2020
47dec4d
simplify cube unit vertex construction
alexfikl Nov 4, 2020
56d7f13
simplify face maps a bit
alexfikl Nov 4, 2020
ddb7e6d
simplify test setup
alexfikl Nov 4, 2020
e9b52eb
update docs
alexfikl Nov 5, 2020
704e686
introduce a shapes module
alexfikl Nov 14, 2020
16180da
use shapes in estimate_lebesgue_constant
alexfikl Nov 14, 2020
3df2de1
add docs and some py3.6 fixes
alexfikl Nov 14, 2020
7acf2b0
move functions out of shapes module
alexfikl Nov 17, 2020
b014fbe
update docs and some fixes
alexfikl Nov 17, 2020
fe40713
add basis_with_mode_ids
alexfikl Nov 17, 2020
3b3bada
update docs
alexfikl Nov 18, 2020
b90c25c
bump version
alexfikl Nov 18, 2020
0a89725
estimate_lebesgue_constant: raise if dimensions do not match
alexfikl Nov 18, 2020
773bb2b
Merge branch 'master' into tensor-face-mass-matrix
inducer Nov 25, 2020
00488bd
Move shape-basd functions to bottom in modes/nodes
inducer Nov 25, 2020
f227cac
Move shapes docstring into shapes module
inducer Nov 25, 2020
f8209ce
Shapes: Add foldmethod comment
inducer Nov 25, 2020
7238c6c
Remove spurious blank line in modes docstring
inducer Nov 25, 2020
918342a
Use _cse in PKDO gradients
inducer Nov 25, 2020
acf4b34
Merge branch 'master' into tensor-face-mass-matrix
inducer Nov 26, 2020
59198d8
Deprecate current dimension-independent basis getters
inducer Nov 26, 2020
cf11d52
resampling_matrix: Impove count mismatch error message
inducer Nov 27, 2020
cd750b8
Refactor towards improved shape-based interface
inducer Nov 27, 2020
560a027
Refactor face information retrieval and face mass matrix computation
inducer Nov 27, 2020
598145f
Avoid log(0) warnings in test_basis_grad
inducer Nov 27, 2020
73e8d56
Reverse vertex/node order for hypercubes
inducer Nov 28, 2020
f6c5755
Export face query functionality in root namespace
inducer Nov 28, 2020
e7b8269
Add redundant @singledispatch.register arguments for Py3.6
inducer Nov 28, 2020
c15c453
Fix doc references
inducer Nov 28, 2020
a15fcfa
Fix quadrature_for_shape docstring
inducer Nov 28, 2020
8ffc3d4
Eliminate references to (removed) get_node_tuples
inducer Nov 28, 2020
9061bcc
Fix zerod_basis
inducer Nov 28, 2020
bceb113
Remove spurious import from modepy.nodes
inducer Nov 28, 2020
299b32f
Remove an extraneous import
inducer Nov 30, 2020
c75d799
Make new section for submeshes
inducer Nov 30, 2020
92e3e83
Doc suggestions for refactor-shapes from review by @alexfikl
inducer Nov 30, 2020
5e3550a
Cast volume_vertex_indices to tuple in _SimplexFace
inducer Nov 30, 2020
22ae991
Remove whitespace: placate flake8
inducer Nov 30, 2020
7f4e1a1
Generalize TensorProductBasis for nD inhomogeneity
inducer Nov 30, 2020
347027b
Make TensorProductBasis public in root module
inducer Nov 30, 2020
c872de9
Do not claim that Face subclasses Shape
inducer Nov 30, 2020
676d38a
Fix TensorProductBasis facepalm
inducer Nov 30, 2020
9a282c0
Introduce function spaces as first-class objects
inducer Dec 1, 2020
6bf5735
Move submesh functionality into shapes
inducer Dec 1, 2020
62524e2
Quadrature, notes: require space *and* shape arguments
inducer Dec 1, 2020
7f5ec1e
Drop a special case in node_tuples_for_space:Simplex
inducer Dec 1, 2020
b1f5de4
Bring back _for_space names for quadrature, nodes
inducer Dec 1, 2020
4917e62
Deprecate tools.unit_vertices, fix biunit_vertices_for_shape for simplex
inducer Dec 1, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions doc/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ Contents
.. toctree::
:maxdepth: 2

shapes
modes
nodes
quadrature
Expand Down
2 changes: 2 additions & 0 deletions doc/modes.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
Modes (Basis functions)
=======================

.. automodule:: modepy.spaces

.. automodule:: modepy.modes
104 changes: 1 addition & 103 deletions doc/nodes.rst
Original file line number Diff line number Diff line change
@@ -1,106 +1,4 @@
Interpolation Nodes
===================

Coordinate systems on simplices
-------------------------------

.. _tri-coords:

Coordinates on the triangle
^^^^^^^^^^^^^^^^^^^^^^^^^^^

Unit coordinates :math:`(r,s)`::

C
|\
| \
| O
| \
| \
A-----B

Vertices in unit coordinates::

O = (0,0)
A = (-1,-1)
B = (1,-1)
C = (-1,1)

Equilateral coordinates :math:`(x,y)`::

C
/ \
/ \
/ \
/ O \
/ \
A-----------B

Vertices in equilateral coordinates::

O = (0,0)
A = (-1,-1/sqrt(3))
B = (1,-1/sqrt(3))
C = (0,2/sqrt(3))

.. _tet-coords:

Coordinates on the tetrahedron
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Unit coordinates :math:`(r,s,t)`::

^ s
|
C
/|\
/ | \
/ | \
/ | \
/ O| \
/ __A-----B---> r
/_--^ ___--^^
,D--^^^
t L

(squint, and it might start making sense...)

Vertices in unit coordinates::

O=( 0, 0, 0)
A=(-1,-1,-1)
B=(+1,-1,-1)
C=(-1,+1,-1)
D=(-1,-1,+1)

Vertices in equilateral coordinates :math:`(x,y,z)`::

O = (0,0,0)
A = (-1,-1/sqrt(3),-1/sqrt(6))
B = ( 1,-1/sqrt(3),-1/sqrt(6))
C = ( 0, 2/sqrt(3),-1/sqrt(6))
D = ( 0, 0, 3/sqrt(6))

Transformations between coordinate systems
------------------------------------------

.. currentmodule:: modepy.tools

All of these expect and return arrays of shape *(dims, npts)*.

.. autofunction:: equilateral_to_unit
.. autofunction:: barycentric_to_unit
.. autofunction:: unit_to_barycentric
.. autofunction:: barycentric_to_equilateral

Node sets for interpolation
---------------------------

.. currentmodule:: modepy

.. autofunction:: equidistant_nodes
.. autofunction:: warp_and_blend_nodes
.. autofunction:: tensor_product_nodes

Also see :class:`modepy.VioreanuRokhlinSimplexQuadrature` if nodes on the
boundary are not required.
.. automodule:: modepy.nodes
15 changes: 11 additions & 4 deletions doc/quadrature.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,6 @@ Base classes

.. automodule:: modepy.quadrature

.. currentmodule:: modepy

.. autoclass:: Quadrature

Jacobi-Gauss quadrature in one dimension
----------------------------------------

Expand Down Expand Up @@ -55,4 +51,15 @@ Quadratures on the simplex

.. autoclass:: VioreanuRokhlinSimplexQuadrature


Quadratures on the hypercube
----------------------------

.. currentmodule:: modepy

.. autoclass:: WitherdenVincentQuadrature

.. autoclass:: TensorProductQuadrature
.. autoclass:: LegendreGaussTensorProductQuadrature

.. vim: sw=4
4 changes: 4 additions & 0 deletions doc/shapes.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Shapes
======

.. automodule:: modepy.shapes
7 changes: 1 addition & 6 deletions doc/tools.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,6 @@ Modal decay/residual

.. automodule:: modepy.modal_decay

Interpolation quality
---------------------

.. currentmodule:: modepy.tools

.. autofunction:: estimate_lebesgue_constant
.. automodule:: modepy.tools

.. vim: sw=4
53 changes: 46 additions & 7 deletions modepy/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,26 +22,47 @@
"""


from modepy.shapes import (
Shape, Face, Simplex, Hypercube,

biunit_vertices_for_shape, faces_for_shape,
submesh_for_shape,
)
from modepy.spaces import (
FunctionSpace, PN, QN, space_for_shape)
from modepy.modes import (
jacobi, grad_jacobi,
simplex_onb, grad_simplex_onb, simplex_onb_with_mode_ids,
simplex_monomial_basis, grad_simplex_monomial_basis,
simplex_monomial_basis_with_mode_ids,
simplex_best_available_basis, grad_simplex_best_available_basis,
tensor_product_basis, grad_tensor_product_basis,
legendre_tensor_product_basis, grad_legendre_tensor_product_basis)
legendre_tensor_product_basis, grad_legendre_tensor_product_basis,
symbolicize_function,

Basis, BasisNotOrthonormal, TensorProductBasis,
basis_for_space, orthonormal_basis_for_space, monomial_basis_for_space)
from modepy.nodes import (
equidistant_nodes, warp_and_blend_nodes,
tensor_product_nodes, legendre_gauss_lobatto_tensor_product_nodes)
tensor_product_nodes, legendre_gauss_lobatto_tensor_product_nodes,

node_tuples_for_space,
equispaced_nodes_for_space, edge_clustered_nodes_for_space,
random_nodes_for_shape)
from modepy.matrices import (vandermonde,
resampling_matrix, differentiation_matrices,
diff_matrix_permutation,
inverse_mass_matrix, mass_matrix,
modal_face_mass_matrix, nodal_face_mass_matrix)
from modepy.quadrature import Quadrature, QuadratureRuleUnavailable
modal_face_mass_matrix, nodal_face_mass_matrix,
modal_mass_matrix_for_face, nodal_mass_matrix_for_face)
from modepy.quadrature import (
Quadrature, QuadratureRuleUnavailable,
TensorProductQuadrature, LegendreGaussTensorProductQuadrature,
quadrature_for_space)
from modepy.quadrature.jacobi_gauss import (
JacobiGaussQuadrature, LegendreGaussQuadrature, ChebyshevGaussQuadrature,
GaussGegenbauerQuadrature)
GaussGegenbauerQuadrature,
)
from modepy.quadrature.xiao_gimbutas import XiaoGimbutasSimplexQuadrature
from modepy.quadrature.vioreanu_rokhlin import VioreanuRokhlinSimplexQuadrature
from modepy.quadrature.grundmann_moeller import GrundmannMoellerSimplexQuadrature
Expand All @@ -56,29 +77,47 @@
__all__ = [
"__version__",

"Shape", "Face", "Simplex", "Hypercube",
"biunit_vertices_for_shape", "faces_for_shape",
"submesh_for_shape",

"FunctionSpace", "PN", "QN", "space_for_shape",

"jacobi", "grad_jacobi",
"simplex_onb", "grad_simplex_onb", "simplex_onb_with_mode_ids",
"simplex_monomial_basis", "grad_simplex_monomial_basis",
"simplex_monomial_basis_with_mode_ids",
"simplex_best_available_basis", "grad_simplex_best_available_basis",
"tensor_product_basis", "grad_tensor_product_basis",
"legendre_tensor_product_basis", "grad_legendre_tensor_product_basis",
"symbolicize_function",

"Basis", "BasisNotOrthonormal", "TensorProductBasis",
"basis_for_space", "orthonormal_basis_for_space", "monomial_basis_for_space",

"equidistant_nodes", "warp_and_blend_nodes",
"tensor_product_nodes", "legendre_gauss_lobatto_tensor_product_nodes",
"node_tuples_for_space",
"edge_clustered_nodes_for_space", "equispaced_nodes_for_space",
"random_nodes_for_shape",

"vandermonde", "resampling_matrix", "differentiation_matrices",
"diff_matrix_permutation",
"inverse_mass_matrix", "mass_matrix", "modal_face_mass_matrix",
"nodal_face_mass_matrix",
"inverse_mass_matrix", "mass_matrix",
"modal_face_mass_matrix", "nodal_face_mass_matrix",
"modal_mass_matrix_for_face", "nodal_mass_matrix_for_face",

"Quadrature", "QuadratureRuleUnavailable",
"TensorProductQuadrature", "LegendreGaussTensorProductQuadrature",
"quadrature_for_space",

"JacobiGaussQuadrature", "LegendreGaussQuadrature",
"GaussLegendreQuadrature", "ChebyshevGaussQuadrature",
"GaussGegenbauerQuadrature",
"XiaoGimbutasSimplexQuadrature", "GrundmannMoellerSimplexQuadrature",
"VioreanuRokhlinSimplexQuadrature",
"ClenshawCurtisQuadrature", "FejerQuadrature",

"WitherdenVincentQuadrature",
]

Expand Down
Loading