tClass with all relevant parameters. Needs IO - ns2dfd - 2D finite difference N… | |
git clone git://src.adamsgaard.dk/ns2dfd | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit 02907fc07a66c16364379dbf5d92550083ce0730 | |
Author: Anders Damsgaard <[email protected]> | |
Date: Sat, 1 Mar 2014 17:25:56 +0100 | |
Class with all relevant parameters. Needs IO | |
Diffstat: | |
A ns2dfd.py | 137 +++++++++++++++++++++++++++++… | |
1 file changed, 137 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/ns2dfd.py b/ns2dfd.py | |
t@@ -0,0 +1,137 @@ | |
+#!/usr/bin/env python | |
+ | |
+import numpy | |
+ | |
+class fluid: | |
+ | |
+ def __init__(sim = 'unnamed'): | |
+ ''' | |
+ A Navier-Stokes two-dimensional fluid flow simulation object. Most | |
+ simulation values are assigned default values upon initialization. | |
+ :param sim: Simulation identifier | |
+ :type sim: str | |
+ ''' | |
+ self.sim = sim | |
+ | |
+ init_grid() | |
+ current_time() | |
+ safety_factor() | |
+ max_iterations() | |
+ tolerance_criteria() | |
+ relaxation_parameter() | |
+ upwind_differencing_factor() | |
+ boundary_conditions() | |
+ reynolds_number() | |
+ gravity() | |
+ | |
+ def init_grid(nx = 10, ny = 10, dx = 0.1, dy = 0.1): | |
+ ''' | |
+ Initializes the numerical grid. | |
+ :param nx: Fluid grid width in number of cells | |
+ :type nx: int | |
+ :param ny: Fluid grid height in number of cells | |
+ :type ny: int | |
+ :param dx: Grid cell width (meters) | |
+ :type dx: float | |
+ :param dy: Grid cell height (meters) | |
+ :type dy: float | |
+ ''' | |
+ self.nx, self.ny = nx, ny | |
+ self.dx, self.dy = dx, dy | |
+ self.u = numpy.zeros((nx+2, ny+2)) | |
+ self.v = numpy.zeros((nx+2, ny+2)) | |
+ self.p = numpy.zeros((nx+1, ny+1)) | |
+ | |
+ def current_time(t = 0.0): | |
+ ''' | |
+ Set the current simulation time. Default value = 0.0. | |
+ :param t: The current time value. | |
+ :type t: float | |
+ ''' | |
+ self.t_end = t_end | |
+ | |
+ | |
+ def end_time(t_end): | |
+ ''' | |
+ Set the simulation end time. | |
+ :param t_end: The time when to stop the simulation. | |
+ :type t_end: float | |
+ ''' | |
+ self.t_end = t_end | |
+ | |
+ def safety_factor(tau = 0.5): | |
+ ''' | |
+ Define the safety factor for the time step size control. Default value… | |
+ 0.5. | |
+ :param tau: Safety factor in ]0;1] | |
+ :type tau: float | |
+ ''' | |
+ self.tau = tau | |
+ | |
+ def max_iterations(itermax = 5000): | |
+ ''' | |
+ Set the maximal allowed iterations per time step. Default value = 5000. | |
+ :param itermax: Max. solution iterations in [1;inf[ | |
+ :type itermax: int | |
+ ''' | |
+ self.itermax = itermax | |
+ | |
+ def tolerance_criteria(epsilon = 1.0e-4): | |
+ ''' | |
+ Set the tolerance criteria for the fluid solver. Default value = 1.0e-… | |
+ :param epsilon: Criteria value | |
+ :type epsilon: float | |
+ ''' | |
+ self.epsilon = epsilon | |
+ | |
+ def relaxation_parameter(omega = 1.7): | |
+ ''' | |
+ Set the relaxation parameter for the successive overrelaxation (SOR) | |
+ solver. The solver is identical to the Gauss-Seidel method when omega = | |
+ 1. Default value = 1.7. | |
+ :param omega: Relaxation parameter value, in ]0;2[ | |
+ :type omega: float | |
+ ''' | |
+ self.omega = omega | |
+ | |
+ def upwind_differencing_factor(gamma = 0.9): | |
+ ''' | |
+ Set the upwind diffencing factor used in the finite difference | |
+ approximations. Default value = 0.9. | |
+ :param gamma: Upward differencing factor value, in ]0;1[ | |
+ :type gamma: float | |
+ ''' | |
+ self.gamma = gamma | |
+ | |
+ def boundary_conditions(left = 1, right = 1, top = 1, bottom = 1): | |
+ ''' | |
+ Set the wall boundary conditions. The values correspond to the followi… | |
+ conditions: 1) free-slip, 2) no-slip, 3) outflow, 4) periodic | |
+ :param left, right, top, bottom: The wall to specify the BC for | |
+ :type left, right, top, bottom: int | |
+ ''' | |
+ self.w_left = left | |
+ self.w_right = right | |
+ self.w_top = top | |
+ self.w_bottom = bottom | |
+ | |
+ def reynolds_number(re = 100): | |
+ ''' | |
+ Define the simulation Reynolds number. | |
+ :param re: Reynolds number in ]0;infty[ | |
+ :type re: float | |
+ ''' | |
+ self.re = re | |
+ | |
+ def gravity(gx = 0.0, gy = 0.0): | |
+ ''' | |
+ Set the gravitational acceleration on the fluid. | |
+ :param gx: Horizontal gravitational acceleration. | |
+ :type gx: float | |
+ :param gy: Vertical gravitational acceleration. Negative values are | |
+ downward. | |
+ :type gy: float | |
+ ''' | |
+ self.gx, self.gy = gx, gy | |
+ | |
+ |