All Projects → Ferrite-FEM → Tensors.jl

Ferrite-FEM / Tensors.jl

Licence: other
Efficient computations with symmetric and non-symmetric tensors with support for automatic differentiation.

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to Tensors.jl

Tensorial.jl
Statically sized tensors and related operations for Julia
Stars: ✭ 18 (-87.32%)
Mutual labels:  automatic-differentiation, tensor, symmetric-tensors
TensorAlgDiff
Automatic Differentiation for Tensor Algebras
Stars: ✭ 26 (-81.69%)
Mutual labels:  automatic-differentiation, tensor
Grassmann.jl
⟨Leibniz-Grassmann-Clifford⟩ differential geometric algebra / multivector simplicial complex
Stars: ✭ 289 (+103.52%)
Mutual labels:  automatic-differentiation, tensor
Arraymancer
A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU and embedded devices via OpenMP, Cuda and OpenCL backends
Stars: ✭ 793 (+458.45%)
Mutual labels:  automatic-differentiation, tensor
Rust Autograd
Tensors and differentiable operations (like TensorFlow) in Rust
Stars: ✭ 278 (+95.77%)
Mutual labels:  automatic-differentiation, tensor
Tullio.jl
Stars: ✭ 231 (+62.68%)
Mutual labels:  automatic-differentiation, tensor
AdFem.jl
Innovative, efficient, and computational-graph-based finite element simulator for inverse modeling
Stars: ✭ 62 (-56.34%)
Mutual labels:  automatic-differentiation
tentris
Tentris is a tensor-based RDF triple store with SPARQL support.
Stars: ✭ 34 (-76.06%)
Mutual labels:  tensor
omd
JAX code for the paper "Control-Oriented Model-Based Reinforcement Learning with Implicit Differentiation"
Stars: ✭ 43 (-69.72%)
Mutual labels:  automatic-differentiation
ccfd
A 2D finite volume CFD code, written in C
Stars: ✭ 26 (-81.69%)
Mutual labels:  cfd
BTAS
Basic Tensor Algebra Subroutines
Stars: ✭ 35 (-75.35%)
Mutual labels:  tensor
OLSTEC
OnLine Low-rank Subspace tracking by TEnsor CP Decomposition in Matlab: Version 1.0.1
Stars: ✭ 30 (-78.87%)
Mutual labels:  tensor
jax-cfd
Computational Fluid Dynamics in JAX
Stars: ✭ 399 (+180.99%)
Mutual labels:  cfd
FinEtools.jl
Finite Element tools in Julia
Stars: ✭ 126 (-11.27%)
Mutual labels:  finite-elements
Causing
Causing: CAUsal INterpretation using Graphs
Stars: ✭ 47 (-66.9%)
Mutual labels:  automatic-differentiation
CaNS
A code for fast, massively-parallel direct numerical simulations (DNS) of canonical flows
Stars: ✭ 144 (+1.41%)
Mutual labels:  cfd
MacroUtils
MacroUtils is a collection of high-level APIs in order to make your life easier when writing STAR-CCM+ JAVA macros.
Stars: ✭ 32 (-77.46%)
Mutual labels:  cfd
admc
Infinite order automatic differentiation for Monte Carlo with unnormalized probability distribution
Stars: ✭ 17 (-88.03%)
Mutual labels:  automatic-differentiation
AsFem
A Simple Finite Element Method program (AsFem)
Stars: ✭ 108 (-23.94%)
Mutual labels:  finite-elements
range3
Range Software - Finite Element Analysis
Stars: ✭ 31 (-78.17%)
Mutual labels:  cfd

Tensors.jl

Efficient computations with symmetric and non-symmetric tensors with support for automatic differentiation.

Documentation Build Status

Introduction

This Julia package provides fast operations with symmetric and non-symmetric tensors of order 1, 2 and 4. The tensors are allocated on the stack which means that there is no need to preallocate output results for performance. Unicode infix operators are provided such that the tensor expression in the source code is similar to the one written with mathematical notation. When possible, symmetry of tensors is exploited for better performance. Supports Automatic Differentiation to easily compute first and second order derivatives of tensorial functions.

Installation

The package can be installed with the Julia package manager. From the Julia REPL, type ] to enter the Pkg REPL mode and run:

pkg> add Tensors

Or, equivalently, via the Pkg API:

julia> import Pkg; Pkg.add("Tensors")

Documentation

  • STABLEmost recently tagged version of the documentation.

Project Status

The package is tested against Julia 1.X on Linux, macOS, and Windows.

Contributing and Questions

Contributions are very welcome, as are feature requests and suggestions. Please open an issue if you encounter any problems.

Things to work on

If you are interested in contributing to Tensors.jl, here are a few topics that can get you started:

  • Implement support for third order tensors. These are more rarely used than first, second and fourth order tensors but are still useful in some applications. It would be good to support this.
  • Find a way to reduce code duplication without sacrificing performance or compilation time. Currently, there is quite a lot of code duplication in the implementation of different operators. It should be possible to have a higher level code generation framework that generates optimized functions from pretty much only the Einstein summation notation for the operation.
  • Tensors.jl has been developed with mostly the application to continuum mechanics in mind. For other fields, perhaps other tensor operations are useful. Implement these in a well performant manner and give good test coverage and documentation for the new functionalities.

Citing Tensors.jl

If you use Tensors.jl for research and publication, please cite the following article

@article{Tensors.jl,
  title = {Tensors.jl -- Tensor Computations in Julia},
  author = {Carlsson, Kristoffer and Ekre, Fredrik},
  year = {2019},
  journal = {Journal of Open Research Software},
  doi = {10.5334/jors.182},
}

Related packages

Both the packages below provide a convenience macro to provide einstein summation notation for standard Julia Array's:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].