def coth(x): return cosh(x) / sinh(x)
# set theta_pert def coth(x): return cosh(x)/sinh(x) def Z(z): return Bu*((z/H)-0.5) def n(): return Bu**(-1)*sqrt((Bu*0.5-tanh(Bu*0.5))*(coth(Bu*0.5)-Bu*0.5)) a = -4.5 Bu = 0.5 theta_exp = a*theta_surf/g*sqrt(Nsq)*(-(1.-Bu*0.5*coth(Bu*0.5))*sinh(Z(z))*cos(pi*(x-L)/L) - n()*Bu*cosh(Z(z))*sin(pi*(x-L)/L)) theta_pert = Function(Vt).interpolate(theta_exp) # set theta0 theta0.interpolate(theta_b + theta_pert) # calculate hydrostatic Pi piparams = {'pc_type': 'fieldsplit', 'pc_fieldsplit_type': 'schur', 'ksp_type': 'gmres', 'ksp_rtol': 1.e-8, 'ksp_atol': 1.e-8, 'ksp_max_it': 100, 'ksp_gmres_restart': 50, 'pc_fieldsplit_schur_fact_type': 'FULL',
return cosh(x) / sinh(x) def Z(z): return Bu * ((z / H) - 0.5) def n(): return Bu**(-1) * sqrt( (Bu * 0.5 - tanh(Bu * 0.5)) * (coth(Bu * 0.5) - Bu * 0.5)) a = -4.5 Bu = 0.5 b_exp = a * sqrt(Nsq) * ( -(1. - Bu * 0.5 * coth(Bu * 0.5)) * sinh(Z(z)) * cos(pi * (x - L) / L) - n() * Bu * cosh(Z(z)) * sin(pi * (x - L) / L)) b_pert = Function(Vb).interpolate(b_exp) # set total buoyancy b0.project(b_b + b_pert) # calculate hydrostatic pressure p_b = Function(Vp) incompressible_hydrostatic_balance(state, b_b, p_b) incompressible_hydrostatic_balance(state, b0, p0) # set x component of velocity dbdy = parameters.dbdy u = -dbdy / f * (z - H / 2)
# buoyancy perturbation def coth(x): return cosh(x)/sinh(x) def Z(z): return Bu*((z/H)-0.5) def n(): return Bu**(-1)*sqrt((Bu*0.5-tanh(Bu*0.5))*(coth(Bu*0.5)-Bu*0.5)) a = -4.5 Bu = 0.5 b_exp = a*sqrt(Nsq)*(-(1.-Bu*0.5*coth(Bu*0.5))*sinh(Z(z))*cos(pi*(x-L)/L) - n()*Bu*cosh(Z(z))*sin(pi*(x-L)/L)) b_pert = Function(Vb).interpolate(b_exp) # set total buoyancy b0.project(b_b + b_pert) # calculate hydrostatic pressure p_b = Function(Vp) incompressible_hydrostatic_balance(state, b_b, p_b) incompressible_hydrostatic_balance(state, b0, p0) # set x component of velocity dbdy = parameters.dbdy u = -dbdy/f*(z-H/2)