Code Monkey home page Code Monkey logo

roadmap's Introduction

rusty-fast-solvers Roadmap

The purpose of rusty-fast-solvers is to create an infrastructure for the development of fast integral equation solvers around the Rust Programming Language and Python.

This repository is meant to host open discussions around the project.

Goals of the project

We want to build up a fast direct solver infrastructure for boundary integral equations arising from Green's fct. representations of problems in acoustics, electrostatics and electromagnetics. The goal is to build a unified approach for the fast forward evaluation of operators and the design of approximate inverses.

The mathematical techniques to build on are

  • Representation of far-field transformations by expansions into fundamental solutions, similar to the Kernel-Independent FMM
  • Compression of operators using algebraic techniques, such as randomised methods and adaptive-cross-approximation
  • Representations of operators in the form A = P_1 G _ P2, where A is the integral operator, G is the point-to-point evaluation of the Green's fct. and P_1 and P_2 are sparse matrices that e.g. map to function spaces. We want to build fast forward evaluators for G, and take the product structure into account to build fast approximate inverses for A.

Development environment

We are planning all developments to use Rust for low-level components and Python for high-level interfaces. Why Rust and not C++? While Rust is a young language, it has backing from major companies and numerical tools in Rust are quickly maturing. Rust throughout uses high-level concepts that allow a productive pace of development. The cargo package manager and the module system mean that complex CMake files are not necessary any more and projects can easily be ported between Windows, Mac, and Linux. Rust has excellent threading support and well-working auto-vectorization. It is very easy to build Python interfaces without complex build scripts, making productive integrated development between Python and Rust straight forward.

Planned subprojects

An important concept is a very fine-grained separation of concerns. The following subprojects are in planning.

  • rusty-green-kernel A low-level library to allow the fast direct evaluation of particle interactions between sources and targets
  • rusty-tree Clustering algorithms such as Octrees and H-Matrix type ClusterTrees
  • rusty-compression Implementation of low-rank-compression tools
  • rusty-translation Translation of low-rank expansions of fields (e.g. M2L, L2L, operators)
  • rusty-fmm Full forward FMM implementation
  • rusty-inverse Representations of approximate inverses

roadmap's People

Contributors

tbetcke avatar

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.