Skip to main content

A SIR diffusive model based in CuPy solver

Project description

CuSIR

Introduction

CuSIR is a Python code built on top of CuPy, a NumPy-like library for GPU-accelerated computing. It provides a solver for the two-dimensional diffusive SIR model, described by the following system of reaction-diffusion equations:

$$ \begin{align}
\partial_t S &= -\beta_{\mathbf{r}} S I - \gamma I + D_I \nabla^2 I \\\\ \partial_t I &= \beta_{\mathbf{r}} S I + D_S \nabla^2 S - \mathbf{v} \cdot \nabla I, \end{align} $$

where $S$ is the density of susceptible individuals, $I$ is the density of infected individuals, $\beta_{\mathbf{r}}$ is the transmission rate that depends on the location $\mathbf{r}$, $\gamma$ is the recovery/removal rate, $D_I$ and $D_S$ are diffusion coefficients, and $\mathbf{v}$ is the convection field.

Requirements

To use the CuSIR package, you will need the following software and hardware:

  • A CUDA-compatible GPU: A graphics processing unit (GPU) that supports CUDA. Check the list of CUDA-compatible GPUs on the NVIDIA website (https://developer.nvidia.com/cuda-gpus) to see if your GPU is supported.

  • CUDA Toolkit: A parallel computing platform and programming model developed by NVIDIA for general-purpose computing on GPUs. You can download CUDA from the NVIDIA website (https://developer.nvidia.com/cuda-downloads).

Note: Currently (January, 2023), the last version of CUDA (12) is not supported by CuPy. You will need to install any previous version of CUDA (recommended 11.2) to use CuSIR.

Installation

To install the CuSIR package, you can use pip by running the following command in your command prompt or terminal:

pip install cusir

This command will install the latest version of the CuSIR package. It is mandatory to meet the requirements listed above for CuSIR to work properly.

Usage

Almost everything is implemented in the system class, which is located in the system module. The following code shows how to use the system class to solve the diffusive SIR model:

import cusir.system as cs

# Define the spatial domain
Lx = 2**10
Ly = 2**10

# Create the system object
s = cs.system(Lx, Ly)

# Define the system parameters
s.beta = 1 # Transmission rate
s.gamma = 0.1 # Recovery/removal rate  
s.D_I = 1 # Diffusion coefficient for infected individuals
s.D_S = 1 # Diffusion coefficient for susceptible individuals

# Define the initial conditions
s.set_plane_initial_conditions()

# Solve the system
for _ in range(10000):
    s.update() # Update the system
    s.rigid_x() # Apply rigid boundary conditions in the x-direction

#You can also use the following to do the same:
#s.solve(10000)

# Get the solution
S = s.S.get() # get() pulls the data from the GPU to the CPU as a NumPy array
I = s.I.get()

License

CuSIR is licensed under the MIT license. See the LICENSE file for more details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cusir-1.0.0.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

cusir-1.0.0-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file cusir-1.0.0.tar.gz.

File metadata

  • Download URL: cusir-1.0.0.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.12

File hashes

Hashes for cusir-1.0.0.tar.gz
Algorithm Hash digest
SHA256 01b022487d1c4cbf0f4b01f4442e4920bdc15b16599925953cd20321a344c5f3
MD5 b015524078c276b6f5d9ecd17103fd2a
BLAKE2b-256 a3ec743b98ad34e155350d650ed26f5e1f4a75e771c9c309f5bd8e8aed3c8112

See more details on using hashes here.

File details

Details for the file cusir-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: cusir-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.12

File hashes

Hashes for cusir-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 80d64677d9f02f7dc22dd2b1fe4677a966dfebf6814537f49a6b938fa2ca11b0
MD5 8bcc18813211219a903f100046dcefed
BLAKE2b-256 e5ff0f54a969a9197a6d3f818abb325435bb3ce04a8039fae04a08945673c673

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page