MINIMUM PRESSURE REQUIRED TO BREAK THE ICE WITH AIR CUSHION VEHICLE IS DETERMIND BY NEWTON RAPSHON METHOD, USING PYTHON PROGRAMMING LANGUAGE
AIM:
- To determine the minimum cushion pressure needed to break a given thickness of ice with Newton Rapshon method, Using Python programming language.
OBJECTIVE:
- Case-1: Use the Newton Raphson method to find out the value of pressure for Thickness of ice, h = 0.6 ft.
- Case-2: Find the optimal relaxation factor for this problem with the help of a suitable plot.
- Case-3: Tabulate the results of pressure, p for Thickness of the Ice, h = [0.6,1.2,1.8,2.4,3,3.6,4.2] assuming a suitable relaxation factor. This must be done in python.
GOVERNING EQUATION:
- The following equation is used to determine the minimum cushion pressure needed to break a given thickness of ice, using an air cushion vehicle
Where,
p denotes the cushion pressure,
h the thickness of the ice field,
r the size of the air cushion,
σ the tensile strength of the ice
β is related to the width of the ice wedge.
- Newton Raphson method is a way to quickly find a good approximation for the root of real valued function.
- It is an Iterative method where a number of iterations are obtained for a particular set of input data.
- It is a trial and error method where we have to assume an output and proceed further
- Using this method the roots of a continues, Differentiable functions f(x),and the roots looking for is the point x=x0.The Newton’s method gives the better approximation for the roots,
`X1 = (X0 )– alphaxx (frac{f(X0)} { f’(X0)})`
- This process may be repeated as many times as necessary to get the desired accuracy. In general, for any X-Value, Xn-Value is given by
`Xn+1 = (Xn) – alpha xx(frac{f(Xn)} {f’ (Xn)})`
- Iterative methods are supplemented with relaxation techniques, Alpha (`alpha`) Is a relaxation factor. If the value is less than 1, It is under relaxation factor. This is used to achieve the numerically stable results
- The value of relaxation factor is greater than 1, It is over relaxation factor. This is used to accelerate the convergence in iteration method.
DETAILED CONTENT:
- Defining the given equation ( To determine the minimum cushion pressure for breaking the ice) in a function and its derivative in other function. So, that it is easy to call that equation wherever required.
- The following are the assumed data, given as a static input in the python program, Using which the cushion pressure required to break the ice will be calculated from the above given equation,
r the size of the air cushion – 40 ft
σ the tensile strength of the ice – 150 psi
β is related to the width of the ice wedge – 0.5 ft.
- By using the Newton Rapshon method to determine the required pressure to break the ice of certain thickness which is given and assuming the suitable value for under relaxation factor.(Refer code)
- The number of iteration varying with suitable relaxation factors will be studied and plotted for analysis, using matplotlib module in python program
- The result of the cushion pressure and the certain given thickness will be tabulated, by installing the tabulate module in python program.
- The plot of thickness of the ice and the cushion pressure will also be plotted using matplotlib modul in python program.
PYTHON CODE WITH EXPLAINATION:
"""
FINDING MINIMUM PRESSURE WITH NEWTON RAPHSON METHOD
"""
# IMPORT MODULE / LIBRARY USING IN THIS PROGRAM
import math
import matplotlib.pyplot as plt
import numpy as np
from tabulate import tabulate
#STATIC INPUT
#WIDTH OF THE ICE WEDGE IN FEET
b=0.5
#SIZE OF THE AIR CUSHION IN FEET
r=40
#TENSILE STRENGTH OF THE ICE IN PSF, 1 PSI = 144PSF , 150 PSI = 150 * 144 PSF
si=150*144
# DEFINING FUNCTION OF REQUIRED CUSHION PRESSURE AND THICKNESS OF THE ICE
def f (p,h):
term1 = (pow (p,3) * (1- (pow(b,2))))
term2 = (((0.4 * h * (pow(b,2)))- ((si * pow (h,2)) / pow (r,2)))*(pow(p,2)))
term3 = ((((pow(si,2))*(pow(h,4))) /(3 *(pow(r,4))))*p)
term4 = (pow(((si * pow (h,2)) /((pow (r,2))*3)),3))
result = term1+term2+term3-term4
return result
def f_dash(p,h):
term1=(3*(pow (p,2)))* (1- (pow(b,2)))
term2=(((0.4 * h * (pow(b,2)))- ((si * pow (h,2)) / pow (r,2)))*(2*p))
term3=(((pow(si,2))*(pow(h,4))) /(3 *(pow(r,4))))
result=term1+term2+term3
return result
#PERFORMING NEWTON ITERATION BY NEWTON RAPHSON METHOD
"""
X_NEW_PRESSURE = X_ GUESS_PRESSURE - ALPHA ( F(X_GUESS_PRESSURE) / F' (X_GUESS_PRESSURE)
"""
#CASE-1 = TO FIND THE VALUE OF CUSHON PRESSURE AT 0.6 FEET THICKNESS OF ICE
x_guess=20 # Guess pressure
alpha=0.6 # Relaxation factor
tol=1e-4 # To determ"""ine within limit
itr=1 # No of iteration
while (abs(f(x_guess,0.6))> tol):
x_guess = x_guess-(alpha*(f(x_guess,0.6) /f_dash (x_guess,0.6)))
itr =itr +1
print ('Value of cushion pressure in psf to break the ice of 0.6 ft thickness :')
print (x_guess, 'psf')
print ('Number of iteration for finding the result :')
print (itr)
#CASE -2 = TO FIND THE OPTIMUM VALUE OF RELEXATION FACTOR WITH SUITABLE PLOT
relax = np.linspace(0.1,1.9,50)
itera=[]
for alpha in relax:
x_guess =20
itr=1
while (abs(f(x_guess,0.6))> tol):
x_guess = x_guess-alpha*(f(x_guess,0.6) /f_dash (x_guess,0.6))
itr =itr +1
itera.append(itr)
plt.figure(1)
plt.plot(relax,itera)
plt.xlabel('Relaxation factor')
plt.ylabel('Number of Iteration')
plt.title('Relaxation factor VS Number of Iteration')
plt.savefig('Relaxation factor VS Number of Iteration')
#CASE-3 = TO TABULATE THE RESULTS OF P FOR H = [0.6,1.2,1.8,2.4,3,3.6,4.2] ASSUMING A SUITABLE RELAXATION FACTOR.
thickness = [0.6,1.2,1.8,2.4,3,3.6,4.2]
pressure =[]
for h in thickness:
pressure.append(x_guess)
while (abs(f(x_guess,h))> tol):
x_guess = x_guess-(alpha*(f(x_guess,h) /f_dash (x_guess,h)))
#Tabulating the results
print ("The following table gives the Cushion pressure required to break the ice of certain thickness :")
table = [['S.No', 'Ice Thickness in ft', 'Cushion Pressure in psf'], ['1', thickness[0], pressure[0]],['2', thickness[1], pressure[1]], ['3', thickness[2], pressure[2]], ['4', thickness[3], pressure[3]], ['5',thickness[4], pressure[4]], ['6', thickness[5], pressure[5]], ['7', thickness[6], pressure[6]]]
print (tabulate(table,headers='firstrow',tablefmt= 'fancy_grid'))
#Plotting the desired output
plt.figure(2)
plt.plot (thickness,pressure)
plt.xlabel('Thickness (h) in ft')
plt.ylabel('Pressure (p)in psf')
plt.title('Thickness of ice (h) VS Cushion pressure to break the ice(p)')
plt.savefig('Thickness of ice (h) VS Cushion pressure to break the ice(p)')
OUTPUT AND RESULTS:
- OUTPUT IMAGE
- PLOT -1 : Relaxation factor VS Number of Iteration
- PLOT -2 : Thickness of ice (h) VS Cushion pressure to break the ice(p)
OUTPUT IMAGE :

PLOT -1 : Relaxation factor VS Number of Iteration :

PLOT -2 : Thickness of ice (h) VS Cushion pressure to break the ice(p) :

CONCLUSION:
- From the Output image, The minimum cushion pressure required to break the ice of certain thickness are tabulated.
- Thus from the PLOT-1 (Relaxation factor VS Number of Iteration), the optimum value of relaxation factor can be found approximately. As per the observation, Initially the number of iteration was high for the under relaxation factor and then it converges near 1, but again the number of iteration starts increases as the relaxation factor increases. Hence, I conclude that the optimal value of relaxation factor lies nearly somewhere between (0.9 – 1.0).
- Thus from PLOT-2 (Thickness of ice VS Cushion pressure to break the ice). It is easy to conclude that, As the Thickness of the Ice increases the cushion pressure required to break the ice must be higher.