Coder Social home page Coder Social logo

firedrakeproject / fiat Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fenics/fiat

5.0 24.0 7.0 2.19 MB

This is FIAT. FIAT was previously maintained as part of the FEniCS project (https://github.com/fenics/fiat)

License: GNU Lesser General Public License v3.0

Python 99.56% Shell 0.44%

fiat's Introduction

FIAT: FInite element Automatic Tabulator

The FInite element Automatic Tabulator FIAT supports generation of arbitrary order instances of the Lagrange elements on lines, triangles, and tetrahedra. It is also capable of generating arbitrary order instances of Jacobi-type quadrature rules on the same element shapes. Further, H(div) and H(curl) conforming finite element spaces such as the families of Raviart-Thomas, Brezzi-Douglas-Marini and Nedelec are supported on triangles and tetrahedra. Upcoming versions will also support Hermite and nonconforming elements.

FIAT is part of the FEniCS Project.

For more information, visit http://www.fenicsproject.org

Build Status Coverage Status Documentation Status

Documentation

Documentation can be viewed at http://fenics-fiat.readthedocs.org/.

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

fiat's People

Contributors

anderslogg avatar angus-g avatar aslakbergersen avatar aterrel avatar blechta avatar chrisrichardson avatar colinjcotter avatar connorjward avatar cyruscycheng21 avatar dham avatar fabianl1908 avatar faznaran avatar garth-wells avatar ivanyashchuk avatar jhale avatar johannesring avatar justincrum avatar knepley avatar ksagiyam avatar kynan avatar lzlarryli avatar meg-simula avatar miklos1 avatar mliertzer avatar nschloe avatar pbrubeck avatar rckirby avatar reubenhill avatar thomasgibson avatar wence- avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fiat's Issues

Borked H(div) trace tabulation when asking for derivatives

import FIAT
from FIAT.reference_element import UFCTetrahedron

elem = FIAT.HDivTrace(UFCTetrahedron(), 0)
print elem.tabulate(1, [[1./3, 1./3]], entity=(2, 0))

prints:

{(1, 0, 0): TraceError('Gradient evaluations are illegal on trace elements.',),
 (0, 1, 0): TraceError('Gradient evaluations are illegal on trace elements.',),
 (0, 0, 0): TraceError('Gradient evaluations are illegal on trace elements.',),
 (0, 0, 1): array([[ 1.],
       [ 0.],
       [ 0.],
       [ 0.]])}

More Lagrange variants

  1. Should we have a single base class for Lagrange and DiscontinuousLagrange?

  2. If we want equispaced and GL variants of Discontinuous Lagrange, we need to change the current topological DOF ordering of DiscontinousLagrange, as there are no GL points on facets.

  3. GaussRadau should subclass Lagrange, but these nodes are not available in recursivenodes.

Refactoring functionals

It seems like our code would be a lot cleaner if we could have sets of functionals (the gradient at a point, in Cartesian or tangent/normal coordinates, moments against all polynomials of some degree on a facet, etc).

Advantages:

  • Easier implementation of elements
  • Easier to batch together the evaluations in to_riesz
  • Possibly easier inference of zany mappings in FInAT (hypothesized).

Challenges:

  • This is a pervasive change in functional.py and may require reimplementing all our Ciarlet finite elements
  • We need to make sure not to bump anything indirectly (e.g. code generation of general interpolation operators)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.