Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
11 views2 pages

Code

Uploaded by

sidali.menouchi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views2 pages

Code

Uploaded by

sidali.menouchi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

import numpy as np

import matplotlib.pyplot as plt

def naca0012(x):
"""
Calculates the y-coordinate of a NACA 0012 airfoil at a given x-coordinate.

Args:
x: x-coordinate (0 <= x <= 1)

Returns:
y: y-coordinate
"""

yt = 0.12 * (0.2969 * np.sqrt(x) - 0.1260 * x - 0.3516 * x**2 + 0.2843 * x**3 -


0.1015 * x**4)
return yt

def generate_c_grid(num_points_x, num_points_y, x_farfield, y_farfield):


"""
Generates a C-type grid around the NACA 0012 airfoil.

Args:
num_points_x: Number of points in the x-direction.
num_points_y: Number of points in the y-direction.
x_farfield: x-coordinate of the far-field boundary.
y_farfield: y-coordinate of the far-field boundary.

Returns:
x_c: x-coordinates of the C-grid points.
y_c: y-coordinates of the C-grid points.
"""

# ... (Implementation of C-grid generation)

# Generate grid points on the airfoil surface


# Generate grid points on the far-field boundary
# Connect grid points using algebraic or numerical techniques

# Example: Simple Cartesian grid for now


x_c = np.linspace(-x_farfield, x_farfield, num_points_x)
y_c = np.linspace(-y_farfield, y_farfield, num_points_y)
X_c, Y_c = np.meshgrid(x_c, y_c)
x_c, y_c = X_c.flatten(), Y_c.flatten()

return x_c, y_c

def transform_to_o_grid(c_grid_x, c_grid_y):


"""
Transforms a C-grid to an O-grid.

Args:
c_grid_x: x-coordinates of the C-grid points.
c_grid_y: y-coordinates of the C-grid points.

Returns:
x_o: x-coordinates of the O-grid points.
y_o: y-coordinates of the O-grid points.
"""
# ... (Implementation of algebraic transformation)

# Example: A simple transformation (replace with a suitable method)


x_o = c_grid_x
y_o = c_grid_y

return x_o, y_o

def solve_poisson(x, y, omega):


"""
Solves the Poisson equations using the Successive Over-Relaxation (SOR) method.

Args:
x: x-coordinates of the grid points.
y: y-coordinates of the grid points.
omega: Relaxation factor.
"""

# ... (Implementation of the SOR method, applying boundary conditions and


updating grid points)

def visualize_grid(x, y):


plt.figure(figsize=(10, 6))
plt.plot(x, y, 'b.')
plt.xlabel('x')
plt.ylabel('y')
plt.title('O-type Grid Around NACA 0012 Airfoil')
plt.grid(True)
plt.axis('equal')
plt.show()

# Main script
num_points_x = 121
num_points_y = 33
x_farfield = 5.0
y_farfield = 2.5
omega = 1.8
tolerance = 1e-6

c_grid_x, c_grid_y = generate_c_grid(num_points_x, num_points_y, x_farfield,


y_farfield)
x, y = transform_to_o_grid(c_grid_x, c_grid_y)

converged = False
while not converged:
x_old, y_old = x.copy(), y.copy()
solve_poisson(x, y, omega)

# Check for convergence


max_diff_x = np.max(np.abs(x - x_old))
max_diff_y = np.max(np.abs(y - y_old))
converged = max_diff_x < tolerance and max_diff_y < tolerance

visualize_grid(x, y)

You might also like