# Bearing capacity of spread footing using Terzaghi's theory##
import numpy as np
# ~~~Input~~~
B=3.0
D=1.0
c_prime=10.0
phi_prime=30.0 #in degree
gamma=18.0
gamma_sat=22.0
gamma_w=9.81
D_w=5.0
p=1000.0
SF_design=1.5
# ~~~Selector~~~:Continuous,Square,Circular
Foundation_type="Square"

# ~~~Calculation~~~

N_c=1/np.tan(phi_prime*np.pi/180)*((np.exp(2*(0.75*np.pi-phi_prime*np.pi/180/2)*np.tan(phi_prime*np.pi/180)))/(2*(np.cos(np.pi/4+phi_prime*np.pi/180/2))**2)-1)
N_q=(np.exp(2*(0.75*np.pi-phi_prime*np.pi/180/2)*np.tan(phi_prime*np.pi/180)))/(2*(np.cos(np.pi/4+phi_prime*np.pi/180/2))**2)
N_gamma=2*(N_q+1)*np.tan(phi_prime*np.pi/180)/(1+0.4*np.sin(4*phi_prime*np.pi/180))

if D_w>=D:
    q=gamma*D
else:
    q=gamma*D_w+(gamma_sat-gamma_w)*(D-D_w)

if D_w<D and D_w<D+B:
    gamma=gamma_sat-gamma_w
elif D_w>=D and D_w<D+B:
    gamma=gamma_sat-gamma_w+(D_w-D)/B*(gamma-(gamma_sat-gamma_w))
else:
    gamma=gamma

if Foundation_type=="Continuous":
	q_u=c_prime*N_c+q*N_q+0.5*gamma*B*N_gamma
elif Foundation_type=="Square":
	q_u=1.3*c_prime*N_c+q*N_q+0.4*gamma*B*N_gamma
else: #circular
	q_u=1.3*c_prime*N_c+q*N_q+0.3*gamma*B*N_gamma


SF=q_u/p

if	SF>SF_design:
		
		Design="acceptable"
else:
		Design="not acceptable"
		


print"Ultimate bearing capacity of the foundation is", q_u,"unit"

print "SF for the foundation is", SF

print "Design is",Design


