Peano
Loading...
Searching...
No Matches
20_additional-solver-steps Namespace Reference

Data Structures

class  RungeKuttaWithDensityFloor
 Runge-Kutta Finite Differences which insert the density floor after each stage. More...
 
class  RusanovWithDensityFloor
 Finite Volumes which insert the density floor after each update. More...
 

Functions

 insert_density_floor (solver, time_step, tag, patch)
 Insert the density floor after each task of solver which carries tag.
 
 exact_density (x, t)
 
 create_solver (name, rk_order, density_floor)
 Create the Euler solver of the tutorial.
 
 plot_task_graph (rk_order, file_name, title)
 Construct the time stepping task graph including the density floor and draw it.
 
 build_and_run (rk_order, density_floor, directory, peano_root)
 
 density_along_x_axis (patch_file)
 Return time stamp plus grid cell centres and densities along y=0 of the last snapshot.
 

Variables

 Here = os.path.dirname(os.path.abspath(__file__))
 
 PeanoRoot = os.path.abspath(os.path.join(Here, "..", "..", ".."))
 
str Flux
 
str MaxEigenvalue
 
str InitPointWisely
 
str DensityFloor
 
float DomainOffset = -0.1
 
float DomainWidth = 0.2
 
float VolumeSize = 0.0075
 
float EndTime = 0.2
 
 parser
 
 default
 
 help
 
 args = parser.parse_args()
 
 work_directory
 
 fig
 
 axes
 
 figsize
 
 sharey
 
 x_fine = np.linspace(DomainOffset, DomainOffset + DomainWidth, 400)
 
 linewidth
 
 label
 
 directory
 
 patch_file
 
 t
 
 x
 
 rho
 
 markersize
 
 color
 
 linestyle
 
 loc
 
 bbox_to_anchor
 
 output = os.path.join(Here, "20_additional-solver-steps-profile.png")
 
 dpi
 
 bbox_inches
 

Function Documentation

◆ build_and_run()

20_additional-solver-steps.build_and_run (   rk_order,
  density_floor,
  directory,
  peano_root 
)

Definition at line 249 of file 20_additional-solver-steps.py.

References create_solver().

Here is the call graph for this function:

◆ create_solver()

20_additional-solver-steps.create_solver (   name,
  rk_order,
  density_floor 
)

Create the Euler solver of the tutorial.

Parameters
rk_orderint or None None selects the Finite Volumes, an integer the fourth-order Finite Differences with the Runge-Kutta scheme of this order.

Definition at line 179 of file 20_additional-solver-steps.py.

Referenced by build_and_run(), and plot_task_graph().

Here is the caller graph for this function:

◆ density_along_x_axis()

20_additional-solver-steps.density_along_x_axis (   patch_file)

Return time stamp plus grid cell centres and densities along y=0 of the last snapshot.

Definition at line 286 of file 20_additional-solver-steps.py.

References tarch.plotter.api.notebook.read_patches(), and tarch.plotter.api.notebook.read_snapshots().

Here is the call graph for this function:

◆ exact_density()

20_additional-solver-steps.exact_density (   x,
  t 
)

Definition at line 173 of file 20_additional-solver-steps.py.

◆ insert_density_floor()

20_additional-solver-steps.insert_density_floor (   solver,
  time_step,
  tag,
  patch 
)

Insert the density floor after each task of solver which carries tag.

Mirrors the routine of the tutorial: The numerical scheme knows which patch its tagged tasks write and passes it in.

Definition at line 106 of file 20_additional-solver-steps.py.

Referenced by 20_additional-solver-steps.RusanovWithDensityFloor.construct_output(), and 20_additional-solver-steps.RungeKuttaWithDensityFloor.construct_output().

Here is the caller graph for this function:

◆ plot_task_graph()

20_additional-solver-steps.plot_task_graph (   rk_order,
  file_name,
  title 
)

Construct the time stepping task graph including the density floor and draw it.

Definition at line 227 of file 20_additional-solver-steps.py.

References create_solver().

Here is the call graph for this function:

Variable Documentation

◆ args

20_additional-solver-steps.args = parser.parse_args()

Definition at line 319 of file 20_additional-solver-steps.py.

◆ axes

20_additional-solver-steps.axes

Definition at line 338 of file 20_additional-solver-steps.py.

◆ bbox_inches

20_additional-solver-steps.bbox_inches

Definition at line 378 of file 20_additional-solver-steps.py.

◆ bbox_to_anchor

20_additional-solver-steps.bbox_to_anchor

Definition at line 376 of file 20_additional-solver-steps.py.

◆ color

20_additional-solver-steps.color

Definition at line 371 of file 20_additional-solver-steps.py.

◆ default

20_additional-solver-steps.default

Definition at line 311 of file 20_additional-solver-steps.py.

◆ DensityFloor

str 20_additional-solver-steps.DensityFloor
Initial value:
1= """
2 constexpr double gamma = 1.4;
3 constexpr double minDensity = 0.9;
4 if (Q[0] < minDensity) {
5 const double u = Q[1] / Q[0];
6 const double v = Q[2] / Q[0];
7 const double p = (gamma - 1.0) * (Q[3] - 0.5 * Q[0] * (u * u + v * v));
8 Q[0] = minDensity;
9 Q[1] = minDensity * u;
10 Q[2] = minDensity * v;
11 Q[3] = p / (gamma - 1.0) + 0.5 * minDensity * (u * u + v * v);
12 }
13"""

Definition at line 90 of file 20_additional-solver-steps.py.

◆ directory

20_additional-solver-steps.directory
Initial value:
1= os.path.join(
2 work_directory,
3 "{}-{}".format(
4 "fv" if rk_order is None else "rk4",
5 "floor" if density_floor else "plain",
6 ),
7 )

Definition at line 348 of file 20_additional-solver-steps.py.

◆ DomainOffset

float 20_additional-solver-steps.DomainOffset = -0.1

Definition at line 167 of file 20_additional-solver-steps.py.

◆ DomainWidth

float 20_additional-solver-steps.DomainWidth = 0.2

Definition at line 168 of file 20_additional-solver-steps.py.

◆ dpi

20_additional-solver-steps.dpi

Definition at line 378 of file 20_additional-solver-steps.py.

◆ EndTime

float 20_additional-solver-steps.EndTime = 0.2

Definition at line 170 of file 20_additional-solver-steps.py.

◆ fig

20_additional-solver-steps.fig

Definition at line 338 of file 20_additional-solver-steps.py.

◆ figsize

20_additional-solver-steps.figsize

Definition at line 338 of file 20_additional-solver-steps.py.

◆ Flux

str 20_additional-solver-steps.Flux
Initial value:
1= """
2 const double irho = 1.0 / Q[0];
3 constexpr double gamma = 1.4;
4 const double p = (gamma - 1.0) * (Q[3] - 0.5 * irho * (Q[1] * Q[1] + Q[2] * Q[2]));
5 switch (normal) {
6 case 0:
7 F[0] = Q[1];
8 F[1] = irho * Q[1] * Q[1] + p;
9 F[2] = irho * Q[1] * Q[2];
10 F[3] = irho * Q[1] * (Q[3] + p);
11 break;
12 case 1:
13 F[0] = Q[2];
14 F[1] = irho * Q[2] * Q[1];
15 F[2] = irho * Q[2] * Q[2] + p;
16 F[3] = irho * Q[2] * (Q[3] + p);
17 break;
18 }
19"""

Definition at line 50 of file 20_additional-solver-steps.py.

◆ help

20_additional-solver-steps.help

Definition at line 312 of file 20_additional-solver-steps.py.

◆ Here

20_additional-solver-steps.Here = os.path.dirname(os.path.abspath(__file__))

Definition at line 33 of file 20_additional-solver-steps.py.

◆ InitPointWisely

str 20_additional-solver-steps.InitPointWisely
Initial value:
1= """
2 constexpr double gamma = 1.4;
3 constexpr double p = 1.0;
4 constexpr double u = 1.0;
5 const double rho = 1.0 + 0.2 * std::sin(2.0 * M_PI * (x[0] + 0.1) / 0.2);
6 Q[0] = rho;
7 Q[1] = rho * u;
8 Q[2] = 0.0;
9 Q[3] = p / (gamma - 1) + 0.5 * rho * u * u;
10"""

Definition at line 79 of file 20_additional-solver-steps.py.

◆ label

20_additional-solver-steps.label

Definition at line 345 of file 20_additional-solver-steps.py.

◆ linestyle

20_additional-solver-steps.linestyle

Definition at line 371 of file 20_additional-solver-steps.py.

◆ linewidth

20_additional-solver-steps.linewidth

Definition at line 345 of file 20_additional-solver-steps.py.

◆ loc

20_additional-solver-steps.loc

Definition at line 376 of file 20_additional-solver-steps.py.

◆ markersize

20_additional-solver-steps.markersize

Definition at line 368 of file 20_additional-solver-steps.py.

◆ MaxEigenvalue

str 20_additional-solver-steps.MaxEigenvalue
Initial value:
1= """
2 const double irho = 1.0 / Q[0];
3 constexpr double gamma = 1.4;
4 const double p = (gamma - 1.0) * (Q[3] - 0.5 * irho * (Q[1] * Q[1] + Q[2] * Q[2]));
5 const double c = std::sqrt(gamma * p * irho);
6 const double u = Q[1 + normal] * irho;
7 lambdaMax[0] = std::max(std::abs(u + c), std::abs(u - c));
8"""

Definition at line 70 of file 20_additional-solver-steps.py.

◆ output

20_additional-solver-steps.output = os.path.join(Here, "20_additional-solver-steps-profile.png")

Definition at line 377 of file 20_additional-solver-steps.py.

◆ parser

20_additional-solver-steps.parser
Initial value:
1= argparse.ArgumentParser(
2 description="Create the PNGs of the tutorial 20_additional-solver-steps.ipynb"
3 )

Definition at line 306 of file 20_additional-solver-steps.py.

◆ patch_file

20_additional-solver-steps.patch_file
Initial value:
1= build_and_run(
2 rk_order, density_floor, directory, os.path.abspath(args.peano_root)
3 )

Definition at line 355 of file 20_additional-solver-steps.py.

◆ PeanoRoot

20_additional-solver-steps.PeanoRoot = os.path.abspath(os.path.join(Here, "..", "..", ".."))

Definition at line 34 of file 20_additional-solver-steps.py.

◆ rho

20_additional-solver-steps.rho

Definition at line 358 of file 20_additional-solver-steps.py.

◆ sharey

20_additional-solver-steps.sharey

Definition at line 338 of file 20_additional-solver-steps.py.

◆ t

20_additional-solver-steps.t

Definition at line 358 of file 20_additional-solver-steps.py.

◆ VolumeSize

float 20_additional-solver-steps.VolumeSize = 0.0075

Definition at line 169 of file 20_additional-solver-steps.py.

◆ work_directory

20_additional-solver-steps.work_directory
Initial value:
1= os.path.abspath(
2 args.work_directory or stack.enter_context(tempfile.TemporaryDirectory())
3 )

Definition at line 335 of file 20_additional-solver-steps.py.

◆ x

20_additional-solver-steps.x

Definition at line 358 of file 20_additional-solver-steps.py.

◆ x_fine

20_additional-solver-steps.x_fine = np.linspace(DomainOffset, DomainOffset + DomainWidth, 400)

Definition at line 343 of file 20_additional-solver-steps.py.