Comments (4)
Are you aware of any existing ones for PDEs?
Do you think it's a bad idea to support multiple kinds of parallelism? GPUs seem perfect for high resolution PDEs, but I don't want to conclusively say we'll do that and nothing else.
Basically, what do you think is the best approach that stays general?
from plasmapy.
Yes, this is a really good thing to bring up!
Some existing tools include:
sympy.utilities.codegen
has automatic code generation capabilities, I believe mostly for finite difference methods.- FEniCS is a partial differential equation solver using the finite element method (which is fairly similar to the spectral element method). From what I can tell, the equations need to be converted into variational form, but otherwise it looks very flexible. The biggest advantage of the finite element method is the geometric flexibility, which makes it highly suitable for simulating things like tokamaks which have circular-triangular-ish cross sections.
- Dedalus is a flexible differential equation solver that's used for a lot of fluid problems. For this you write the equations in plain text as strings, and then these strings get parsed and solved. I don't think it can be installed using conda though.
I'm much more familiar with fluid rather than kinetic simulations, so I don't really know what's out there for particle-in-cell (PIC) simulations. My impression is GPUs are highly suitable for PIC simulations.
I've thought less about parallelization. There will probably be users who run small simulations on their laptops or workstations, and eventually others who will run them on large clusters. I'm very interested in other people's thoughts on this.
from plasmapy.
Well, multicore processors are the norm these days. It'd be a terrible shame not to use them at least!
And GPUs are indeed the best thing there is for PICs, as far as I know. We might have to look into PyCUDA for that, but it's probably not a very high priority just now.
from plasmapy.
Whatever piece of software handles the mesh for the PDE domain typically handles the parallelism too, and it can be difficult to add it after the fact. If support for multiple kinds of parallelism is in the cards, then it is important to choose libraries that support them.
I have used a lot of MFEM which is a C++ library, but there are python bindings. It works in serial, but scales up to thousands of cores on a cluster via MPI. GPU support is in progress and coming along well. It could be a decent fit for the project with the only gotcha being that it is a C++ library which of course will have to be compiled and linked before the python binding s will work. I should disclose that I am a dev on the MFEM project.
from plasmapy.
Related Issues (20)
- Add weekly GitHub Action to build docs whilst re-executing the pre-executed notebooks
- Update testing guide to reflect that repeat runs of tox are only a few seconds slower than pytest
- Decide on preferred set of `mypy` rules to adopt HOT 5
- Improve Thomson module
- Different return types for `is_category` method of `ParticleList` than `Particle` & `CustomParticle` HOT 3
- Make it so that mypy thinks that `ParticleLike` has the same attributes as `Particle`
- Store downloaded data in `$XDG_DATA_HOME` if that environment variable exists HOT 1
- Multiple density values in `formulary.radiation.thermal_bremsstrahlung` returns `ValueError`
- `thomson_fitting` error with `lmfit==1.3.0` HOT 3
- Make it so that `plasmapy.__version__` uses current date in editable installs
- Verify that files are included or not included in source distributions and wheels
- Show correct version in title of `latest` docs
- Enable weekly tests with the JIT compiler to be added in Python 3.13
- CI codecov bug HOT 2
- Allow ParticleTracker to accept analytical fields (as functions) or lists of currents/charges
- Add helper functionality to plot quantities against temperature with axes labeled in both K and eV HOT 2
- Add `latex_str` attribute to `Particle`
- Add Jupyter notebook that plots reconnection phase diagram
- what is the unit of temperature defined in the Spitzer resistivity HOT 1
- Requirements files need to be rethought HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from plasmapy.