Skip to main content

SplitFVM

Downloads

img

1D Finite-Volume with adaptive mesh refinement and steady-state solver using Newton and Split-Newton approach

What does 'split' mean?

The system is divided into two and for ease of communication, let's refer to first set of variables as "outer" and the second as "inner".

  • Holding the outer variables fixed, Newton iteration is performed till convergence using the sub-Jacobian

  • One Newton step is performed for the outer variables with inner held fixed (using its sub-Jacobian)

  • This process is repeated till convergence criterion is met for the full system (same as in Newton)

How to install and execute?

Just run

pip install splitfvm

There is an examples folder that contains a test model - Advection-Diffusion

You can define your own equations by simply creating a derived class from Model and adding to the _equations using existing or custom equations!

A basic driver program is as follows

# Define the problem
m = AdvectionDiffusion(c=0.2, nu=0.001)

# Define the domain and variables
# ng stands for ghost cell count
d = Domain.from_size(20, 2, ["u", "v", "w"]) # nx, ng, variables

# Set IC and BC
ics = {"u": "gaussian", "v": "rarefaction"}
bcs = {
    "u": {
        "left": "periodic",
        "right": "periodic"
    },
    "v": {
        "left": {"dirichlet": 3},
        "right": {"dirichlet": 4}
    },
    "w": {
        "left": {"dirichlet": 2},
        "right": "periodic"
    }
}
s = Simulation(d, m, ics, bcs)

# Advance in time or to steady state
s.evolve(dt=0.1)
bounds = [[-1., -2., 0.], [5., 4., 3.]]
iter = s.steady_state(split=True, split_loc=1, bounds=bounds)

# Visualize
draw(d, "label")

Whom to contact?

Please direct your queries to gpavanb1 for any questions.

Acknowledgements

Do visit its Finite-Difference cousin

Special thanks to Cantera and WENO-Scalar for serving as an inspiration for code architecture

Release files for SplitFVM 0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for SplitFVM 0.2
File Size Uploaded
SplitFVM-0.2.tar.gz 14.0 kB Details

Release files / SplitFVM-0.2.tar.gz

Download URL SplitFVM-0.2.tar.gz
Size 14.0 kB
Tags Source
SHA-256 checksum
How to use checksums
cae5ced5a9743db10153ead46c500a3b3bd611b7bbd1d32dd8b9f72519341fce
BLAKE2b-256 checksum
How to use checksums
b6155f464f730ab84c26ec53e834a3f184ffea0adff249d8b3fa0b67e7ebe7bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.1

Release history Release notifications | RSS feed

This release

0.2 This release

1 release file

0.1.3

1 release file

0.1.2

2 release files

0.1.1

2 release files

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page