Gridap.jl
ModelingToolkit.jl
Gridap.jl | ModelingToolkit.jl | |
---|---|---|
2 | 15 | |
716 | 1,434 | |
0.8% | 0.5% | |
9.5 | 9.9 | |
6 days ago | 4 days ago | |
Julia | Julia | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Gridap.jl
-
Best free/open source CAS ?
Another I've been working on learning is Julia, which aims to use a syntax very similar to how you'd write it mathematically, and I like being able to include units in calculations using the unitful.jl package, and there are FEM packages available like Gridap.
-
[Research] Input Arbitrary PDE -> Output Approximate Solution
PINN methods are absurdly slow (DeepXDE is about 10,000x slower than an ODE solver for example, while using implicit parallelism vs serial ODE solver) but they are flexible. So ModelingToolkit.jl has alternative options, like DiffEqOperators.jl takes the same specification and generates ODESystem and NonlinearSystem problems via finite difference discretizations (known as "method of lines"). There's a (pseudo-)spectral part of the interface coming relatively soon as well, with GridAP.jl integration for FEM coming soon. So this is made to be a universal arbitrary PDE -> approximate solution interface which is generic to the method and solving process.
ModelingToolkit.jl
-
Mathematically Modelling a PRV
I'd use a modeling tool like https://mtk.sciml.ai/dev/ Using the standard library, you wouldn't need to come up with all equations yourself. Depending on the details of your use case, system identification as suggested before might be a faster approach though.
- Simulating a simple circuit with the ModelingToolkit
- “Why I still recommend Julia”
- ‘Machine Scientists’ Distill the Laws of Physics from Raw Data
-
How do I force it to answer in a decimal format.
In this case, yes, this should just be done numerically. But using symbolic transformations to optimize numeric code is also a really neat application of symbolic computing that doesn't get enough attention, imo. [This library](https://github.com/SciML/ModelingToolkit.jl), for example, uses symbolics to do sparsity detection, automatic derivative/gradient/jacobian/hessian calculations, index reduction, etc. to speed up numerical differential equation solving.
- Julia 1.7 has been released
-
[Research] Input Arbitrary PDE -> Output Approximate Solution
PDEs are difficult because you don't have a simple numerical definition over all PDEs because they can be defined by arbitrarily many functions. u' = Laplace u + f? Define f. u' = g(u) * Laplace u + f? Define f and g. Etc. To cover the space of PDEs you have to go symbolic at some point, and make the discretization methods dependent on the symbolic form. This is precisely what the ModelingToolkit.jl ecosystem is doing. One instantiation of a discretizer on this symbolic form is NeuralPDE.jl which takes a symbolic PDESystem and generates an OptimizationProblem for a neural network which represents the solution via a Physics-Informed Neural Network (PINN).
-
Should I switch over completely to Julia from Python for numerical analysis/computing?
There's a very clear momentum for Julia here in this domain of modeling and simulation. With JuliaSim funding an entire modeling and simulation department within Julia Computing dedicated to building out an ecosystem that accelerates this domain and the centralization around the SciML tooling, this is an area where we absolutely have both a manpower and momentum advantage. We're getting many universities (PhD students and professors) involved on the open source side, while building out different commercial tools and GUIs on top of the open numerical core. The modeling and simulation domain itself is soon going to have its own SciMLCon since our developer community has gotten too large to just be a few JuliaCon talks: it needs its own days to fit everyone! Not only that, in many aspects we're not just moving faster but have already passed. Not in every way, there's still some important discussion in controls that needs to happen, but that's what the momentum is for.
- What should a graduate engineer know about MATLAB?
-
I'm considering Rust, Go, or Julia for my next language and I'd like to hear your thoughts on these
Julia has great support for modeling, have a look at ModelingToolkit.jl. From the README:
What are some alternatives?
dolfinx - Next generation FEniCS problem solving environment
casadi - CasADi is a symbolic framework for numeric optimization implementing automatic differentiation in forward and reverse modes on sparse matrix-valued computational graphs. It supports self-contained C-code generation and interfaces state-of-the-art codes such as SUNDIALS, IPOPT etc. It can be used from C++, Python or Matlab/Octave.
DifferentialEquations.jl - Multi-language suite for high-performance solvers of differential equations and scientific machine learning (SciML) components. Ordinary differential equations (ODEs), stochastic differential equations (SDEs), delay differential equations (DDEs), differential-algebraic equations (DAEs), and more in Julia.
ApproxFun.jl - Julia package for function approximation
NeuralPDE.jl - Physics-Informed Neural Networks (PINN) Solvers of (Partial) Differential Equations for Scientific Machine Learning (SciML) accelerated simulation
DiffEqOperators.jl - Linear operators for discretizations of differential equations and scientific machine learning (SciML)
Symbolics.jl - Symbolic programming for the next generation of numerical software
FourierFlows.jl - Tools for building fast, hackable, pseudospectral partial differential equation solvers on periodic domains
SymEngine.jl - Julia wrappers of SymEngine