Skip to content
This repository has been archived by the owner on Feb 21, 2022. It is now read-only.

Commit

Permalink
Merge branch 'master' into garth/read-the-docs
Browse files Browse the repository at this point in the history
  • Loading branch information
garth-wells committed Jul 25, 2016
2 parents 2945765 + c84d5ce commit 4322765
Show file tree
Hide file tree
Showing 67 changed files with 5,083 additions and 2,020 deletions.
8 changes: 5 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
*.pyc

build/
dist/
FIAT.egg-info/
/build/
/dist/
/FIAT.egg-info/

/.cache/
25 changes: 25 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
sudo: false
notifications:
irc:
channels: "chat.freenode.net#firedrake"
skip_join: true
on_success: change
on_failure: always
template: "%{repository}#%{build_number} (%{branch} - %{commit} : %{author}): %{message} | %{build_url}"
language: python
python:
- "2.7"
- "3.4"

before_install:
- pip install --upgrade pip
- pip install flake8
- pip install pytest
- pip install six

install:
- pip install .

script:
- flake8 .
- DATA_REPO_GIT="" py.test test/
39 changes: 39 additions & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,44 @@ Contributors:
Andy R. Terrel
email: aterrel@uchicago.edu

Andrew T. T. McRae
email: a.t.t.mcrae@bath.ac.uk

Jan Blechta
email: blechta@karlin.mff.cuni.cz

David A. Ham
email: david.ham@imperial.ac.uk

Miklós Homolya
email: m.homolya14@imperial.ac.uk

Lawrence Mitchell
email: lawrence.mitchell@imperial.ac.uk

Colin Cotter
email: colin.cotter@imperial.ac.uk>

Florian Rathgeber
email: florian.rathgeber@gmail.com

Aslak Bergersen
email: aslak.bergersen@gmail.com

Nico Schlömer
email: nico.schloemer@gmail.com

Johannes Ring
email: johannr@simula.no

Matt Knepley
email: knepley@rice.edu

Lizao Li
email: lzlarryli@gmail.com

Martin Sandve Alnæs
email: martinal@simula.no

Matthias Liertzer
email: matthias@liertzer.at
19 changes: 19 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,22 @@
2016.2.0 [201x-xx-xx]
- Enable Travis CI on GitHub
- Add Firedrake quadrilateral cell
- Add tensor product cell
- Add facet -> cell coordinate transformation
- Add Bubble element
- Add discontinuous Taylor element
- Add broken element and H(div) trace element
- Add element restrictions onto mesh entities
- Add tensor product elements (for tensor product cells)
- Add H(div) and H(curl) element-modifiers for TPEs
- Add enriched element, i.e. sum of elements (e.g. for building Mini)
- Add multidimensional taylor elements
- Add Gauss Lobatto Legendre elements
- Finding non-vanishing DoFs on a facets
- Add tensor product quadrature rule
- Make regression tests working again after few years
2016.1.0 [2016-06-23]
- Minor fixes
1.6.0 [2015-07-28]
- Support DG on facets through the element "Discontinuous Lagrange Trace"
1.5.0 [2015-01-12]
Expand Down
50 changes: 23 additions & 27 deletions FIAT/P0.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,47 +16,43 @@
# along with FIAT. If not, see <http://www.gnu.org/licenses/>.
#
# Written by Robert C. Kirby
# Modified by Andrew T. T. McRae (Imperial College London)
#
# This work is partially supported by the US Department of Energy
# under award number DE-FG02-04ER25650
#
# Last changed: 2005-05-16

from . import reference_element, dual_set, functional, polynomial_set, finite_element
from __future__ import absolute_import

from FIAT import dual_set, functional, polynomial_set, finite_element
import numpy

class P0Dual( dual_set.DualSet ):
def __init__( self, ref_el ):

class P0Dual(dual_set.DualSet):
def __init__(self, ref_el):
entity_ids = {}
nodes = []
vs = numpy.array( ref_el.get_vertices() )
bary=tuple( numpy.average( vs, 0 ) )
nodes = [ functional.PointEvaluation( ref_el, bary ) ]
entity_ids = { }
vs = numpy.array(ref_el.get_vertices())
bary = tuple(numpy.average(vs, 0))

nodes = [functional.PointEvaluation(ref_el, bary)]
entity_ids = {}
sd = ref_el.get_spatial_dimension()
top = ref_el.get_topology()
for dim in sorted( top ):
for dim in sorted(top):
entity_ids[dim] = {}
for entity in sorted( top[dim] ):
for entity in sorted(top[dim]):
entity_ids[dim][entity] = []

entity_ids[sd] = { 0 : [ 0 ] }

dual_set.DualSet.__init__( self, nodes, ref_el, entity_ids )

class P0( finite_element.FiniteElement ):
def __init__( self, ref_el ):
poly_set = polynomial_set.ONPolynomialSet( ref_el, 0 )
dual = P0Dual( ref_el )
finite_element.FiniteElement.__init__( self, poly_set, dual, 0 )

if __name__ == "__main__":
T = reference_element.UFCTriangle()
U = P0( T )
entity_ids[sd] = {0: [0]}

print(U.get_dual_set().entity_ids)
print(U.get_nodal_basis().tabulate( T.make_lattice(1) ))
super(P0Dual, self).__init__(nodes, ref_el, entity_ids)


class P0(finite_element.FiniteElement):

def __init__(self, ref_el):
poly_set = polynomial_set.ONPolynomialSet(ref_el, 0)
dual = P0Dual(ref_el)
degree = 0
formdegree = ref_el.get_spatial_dimension() # n-form
super(P0, self).__init__(poly_set, dual, degree, formdegree)
55 changes: 37 additions & 18 deletions FIAT/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,47 +2,66 @@
evaluating arbitrary order Lagrange and many other elements.
Simplices in one, two, and three dimensions are supported."""

__version__ = "1.7.0dev"
from __future__ import absolute_import

# Import finite element classes
from FIAT.finite_element import FiniteElement
from FIAT.finite_element import FiniteElement # noqa
from FIAT.argyris import Argyris
from FIAT.argyris import QuinticArgyris
from FIAT.brezzi_douglas_marini import BrezziDouglasMarini
from FIAT.brezzi_douglas_fortin_marini import BrezziDouglasFortinMarini
from FIAT.discontinuous_lagrange import DiscontinuousLagrange
from FIAT.discontinuous_taylor import DiscontinuousTaylor
from FIAT.trace import DiscontinuousLagrangeTrace
from FIAT.discontinuous_raviart_thomas import DiscontinuousRaviartThomas
from FIAT.hermite import CubicHermite
from FIAT.lagrange import Lagrange
from FIAT.gauss_lobatto_legendre import GaussLobattoLegendre
from FIAT.morley import Morley
from FIAT.nedelec import Nedelec
from FIAT.nedelec_second_kind import NedelecSecondKind
from FIAT.P0 import P0
from FIAT.raviart_thomas import RaviartThomas
from FIAT.crouzeix_raviart import CrouzeixRaviart
from FIAT.regge import Regge
from FIAT.bubble import Bubble
from FIAT.tensor_product import TensorProductElement
from FIAT.enriched import EnrichedElement
from FIAT.discontinuous import DiscontinuousElement
from FIAT.trace_hdiv import HDivTrace
from FIAT.restricted import RestrictedElement # noqa

# Important functionality
from FIAT.quadrature import make_quadrature # noqa
from FIAT.quadrature_schemes import create_quadrature # noqa
from FIAT.reference_element import ufc_cell, ufc_simplex # noqa
from FIAT.hdivcurl import Hdiv, Hcurl # noqa

__version__ = "2016.2.0.dev0"

# List of supported elements and mapping to element classes
supported_elements = {"Argyris": Argyris,
"Brezzi-Douglas-Marini": BrezziDouglasMarini,
supported_elements = {"Argyris": Argyris,
"Brezzi-Douglas-Marini": BrezziDouglasMarini,
"Brezzi-Douglas-Fortin-Marini": BrezziDouglasFortinMarini,
"Crouzeix-Raviart": CrouzeixRaviart,
"Discontinuous Lagrange": DiscontinuousLagrange,
"Bubble": Bubble,
"Crouzeix-Raviart": CrouzeixRaviart,
"Discontinuous Lagrange": DiscontinuousLagrange,
"Discontinuous Taylor": DiscontinuousTaylor,
"Discontinuous Lagrange Trace": DiscontinuousLagrangeTrace,
"Discontinuous Raviart-Thomas": DiscontinuousRaviartThomas,
"Hermite": CubicHermite,
"Lagrange": Lagrange,
"Morley": Morley,
"Nedelec 1st kind H(curl)": Nedelec,
"Nedelec 2nd kind H(curl)": NedelecSecondKind,
"Raviart-Thomas": RaviartThomas,
"Regge": Regge}
"Hermite": CubicHermite,
"Lagrange": Lagrange,
"Gauss-Lobatto-Legendre": GaussLobattoLegendre,
"Morley": Morley,
"Nedelec 1st kind H(curl)": Nedelec,
"Nedelec 2nd kind H(curl)": NedelecSecondKind,
"Raviart-Thomas": RaviartThomas,
"Regge": Regge,
"EnrichedElement": EnrichedElement,
"TensorProductElement": TensorProductElement,
"BrokenElement": DiscontinuousElement,
"TraceElement": HDivTrace}

# List of extra elements
extra_elements = {"P0": P0,
extra_elements = {"P0": P0,
"Quintic Argyris": QuinticArgyris}

# Important functionality
from .quadrature import make_quadrature
from .reference_element import ufc_simplex

0 comments on commit 4322765

Please sign in to comment.