Skip to content

solvcon/shocktube1dcalc

Repository files navigation

PRs Welcome Code style: black

1D shocktube caculator

This tool provides 1D Shock Tube solutions. You may output analytic solutions, or numeric solutions backed by CESE method, Sin-Chung Chang, “The Method of Space-Time Conservation Element and Solution Element – A New Approach for Solving the Navier-Stokes and Euler Equations”, Journal of Computational Physics, Volume 119, Issue 2, July 1995, Pages 295-324. doi: 10.1006/jcph.1995.1137.

Getting Started

Prerequisites

Usage

Analytic Solution

from shocktube1dcalc import solver_analytic

# by default it will create a the shock tube based on Sod's classic condition.
shocktube = solver_analytic.ShockTube()

import numpy as np
mesh = np.linspace(-0.5, 0.5, 50)

analytic_solution = shocktube.get_analytic_solution(
    mesh, t=0.4
)

You may customize the physical status of the shocktube via:

shocktube = solver_analytic.ShockTube(rho_left=1.0, u_left=0.0, p_left=1.0, rho_right=0.125, u_right=0.0, p_right=0.1)

Numeric Solution

from shocktube1dcalc import cese

elapsed_time = 0.4
cese_grid_size_t = 0.004
# multiply 2 for half grids, so total iteration number should be double
# the iteration number is always less than 1 by the grid number
iteration_number = round(elapsed_time / cese_grid_size_t * 2) - 1

shocktube = cese.ShockTube(iteration=iteration_number, grid_size_t=cese_grid_size_t)
shocktube.run_cese_iteration()

numeric_solution = shocktube.data.solution

Contributing

See Contributing

Authors

Taihsiang Ho (tai271828) [email protected]

Created from Lee-W/cookiecutter-python-template version 0.7.1