Project

Breaking Ice with Air cushion Vehicle - Find minimum pressure with Newton-Raphson method

Objective: In determining the minimum cushion pressure needed to break a given thickness of ice
using an air cushion vehicle, Muller derived the equation

P3(1-β2)+(0.4hβ2-σh2/r2)p2+ σ2h4p/(3r4)+( σh2/3r2)3 =0

where;

β = 0.5, r = 40 feet and σ = 150 pounds per square inch (psi)

Also,h = 0.6, 1.2, 1.8, 2.4, 3.0, 3.6 and 4.2 feet.

Concept: This equation is to be resolved using Newton-Raphson method i.e.

`dy/dx= (f(xguess)-f(xnew))/(xguess-xnew)`

or, xnew=xguess- f(xguess)/f’(xguess)

but for more accuracy a relaxation factor, i.e. `α`

i.e. xnew=xguess-`α`*f(xguess)/f’(xguess)

Therefore, by using the equation we can determine the value of minimum cushion pressure at different thickness of ice.

Methodology: Let's start with declaration of two functions i.e f & d_f,

1. The function f takes pressure(p) and thickness(h) as input and return the value above equation.

2. The function d_f returns the derivative of the above equation.

3. In main function, the first task is to define all the parameters and use a nested a loop to find the value of pressure (p) until the return of f becomes less than tol i.e. 1e-4. and this pressure is to be calculated for all the thickness values and the output is to be shown.

4.Next step will be to calculate the optimum relaxation factor, the factor which finds the solution in the least number of iterations. So, to calculate it we declare a relaxation factor as 0.15 and has calculated no. of iterations for each factor. After calculation, we plot a graph of Iterations vs Relaxation factor.

5. The last step would be to plot the graph between the Cuishion pressure vs thickness of ice for the relaxation factor of 1.1.

Output:

1.

2.

3.

4.

Graphs:

1.Relaxation Factor vs No. of iterations

2. Cushion pressure vs thickness of ice field

Python Program:

import matplotlib.pyplot as plt 
import math
import numpy as np



b= 0.5;
r= 40;
al= 150*144;


# FUNCTION-1: To define the function of minimum cushion pressure 
def f(p,h):

	global b,r,al
	t1= pow(p,3)*(1-pow(b,2))
	t2= (0.4*h*pow(b,2)-al*pow(h,2)/pow(r,2))*pow(p,2)
	t3= pow(al,2)*pow(h,4)/3/pow(r,4)*p
	t4= pow(al*pow(h,2)/3/pow(r,2),3)
	term= t1+t2+t3-t4
	return term

# FUNCTION-1: The derivative of the function of minimum cushion pressure 
def d_f(p, h):
	global b,r,al
	dt1= 3*pow(p,2)*(1-pow(b,2))
	dt2= (0.4*h*pow(b,2)-al*pow(h,2)/pow(r,2))*2*p
	dt3= pow(al,2)*pow(h,4)/3/pow(r,4)
	d_term= dt1+dt2+dt3
	return d_term

# Let's come to the main function now.

h= np.linspace(0.6,4.2,7)
tol= 1e-4
p= 100 #psi
itr=1
print("      Pressure        | Thickness",'\n')
# Using the Relaxation factor AS 1
for i in h:

	while(abs(f(p,i)) > tol):
		p=p-f(p,i)/d_f(p,i)
		itr= itr+1
	print(p,'psf |',i,'\n')

# Now lets find the optimum relaxation factor.
rel=[]
ITR=[]
rel1=0.15
itr=1
p= 100 #psi
print("Relaxation Factor  | Iterations",'\n')

while (rel1<2):
	rel.append(rel1)
	while(abs(f(p,0.6)) > tol):
		p=p-rel1*f(p,0.6)/d_f(p,0.6)
		itr= itr+1
	ITR.append(itr)

	print(rel1,'|',itr,'\n')
	rel1=rel1+0.05
	p=100
	itr=1
min= np.amin(ITR)
plt.xlabel('Relaxation factor')
plt.ylabel('Iterations')
plt.plot(rel,ITR,'-mo',min)
plt.show()

#Using the Optimum Relaxation factor AS 1.1	shown in graph
Pre=[]
p=100

for j in h:
	while(abs(f(p,j)) > tol):
		p=p-1.1*f(p,j)/d_f(p,j)
	Pre.append(p)


plt.ylabel('Cushion Pressure- psf')
plt.xlabel('thickness of ice field-feet')
plt.plot(h,Pre)
plt.show()
Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.