A finite difference simulation library
Project description
FastFD
A finite differences simulation library.
This package lets you quickly build simple numerical simulations.
Features
- Quickly build finite difference simulations with an arbitrary number of domains, scalars, dimensions and boundary conditions.
- Concise, clear syntax.
- Build models for CPU or GPU using Scipy or Cupy sparse libraries.
- Arbitrary derivative order and approximation accuracy.
- Partial model updates minimize overheads in iterative solutions.
- Implicit transient simulation.
Usage
# Import fastfd and select the scipy sparse library (or cupy for GPU support)
import fastfd as ffd
ffd.sparse_lib('scipy')
import numpy as np
# Define axes
x = ffd.LinearAxis('x', start = 0, stop = 1, num = 201)
y = ffd.LinearAxis('y', start = 0, stop = 1, num = 201)
# Define scalars
T = ffd.Scalar('T', [x, y], accuracy = 4)
# Define the model
model = ffd.FDModel([T])
# Set model governing equations (thermal diffusion)
model.update_equations({
'Conductivity': ((T.d('x', 2) + T.d('y', 2)), 0),
})
# Set model boundary conditions
model.update_bocos({
'Tx=1 adiabatic': (T.i[-1, :], T.d('x')[-1, :], 0),
'Ty=1 adiabatic': (T.i[:, -1], T.d('y')[:, -1], 0),
'Tx=0 sinewave': (T.i[0, :], T.i[0, :], 100 * np.sin(x.coords * 2*np.pi)),
'Ty=0 sinewave': (T.i[:, 0], T.i[:, 0], -100 * np.sin(y.coords * 2*np.pi)),
})
# Solve the model
result = model.solve()
GPU
FastFD can be set to use the Cupyx sparse libraries, though support is still a little rough around the edges. The current version of Cupy (8.5) only supports a least squares solver ('lsqr') which is much slower than the default 'spsolve'. However, spsolve will be implemented in the upcoming release of Cupy 9.0.
Example Notebooks
See example notebooks here: ./docs/examples for a more detailed explanation of how to use.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file FastFD-0.1.tar.gz.
File metadata
- Download URL: FastFD-0.1.tar.gz
- Upload date:
- Size: 351.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3526b07580e016d5e9c54756821111cc16e66d049fc50c8a2820687ab56d2910
|
|
| MD5 |
fd01eefc8249d62c5755bb783db46a2e
|
|
| BLAKE2b-256 |
224f9d4a236899d774d46f6f42863228e31c2c5ac83719fae5345393ed67cabf
|
File details
Details for the file FastFD-0.1-py3-none-any.whl.
File metadata
- Download URL: FastFD-0.1-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b323eb48ca68f70809f78c0b9c167a88abfc7d14ca3464a7dba08ca2fdbf81ad
|
|
| MD5 |
4b2c13f294eeb697ae0530c968e28a29
|
|
| BLAKE2b-256 |
82bb5561368690234c2cbfaa1205f9242e62ff33e4a5b82da2b21f47ada89cc1
|