Source code for pyro.incompressible.problems.converge
r"""Initialize a smooth incompressible convergence test. Here, thevelocities are initialized as.. math:: u(x,y) = 1 - 2 \cos(2 \pi x) \sin(2 \pi y) v(x,y) = 1 + 2 \sin(2 \pi x) \cos(2 \pi y)and the exact solution at some later time t is then.. math:: u(x,y,t) = 1 - 2 \cos(2 \pi (x - t)) \sin(2 \pi (y - t)) v(x,y,t) = 1 + 2 \sin(2 \pi (x - t)) \cos(2 \pi (y - t)) p(x,y,t) = -\cos(4 \pi (x - t)) - \cos(4 \pi (y - t))The numerical solution can be compared to the exact solution tomeasure the convergence rate of the algorithm. These initialconditions come from Minion 1996."""importmathimportnumpyasnpfrompyro.utilimportmsgDEFAULT_INPUTS="inputs.converge.64"PROBLEM_PARAMS={}
[docs]definit_data(my_data,rp):""" initialize the incompressible converge problem """ifrp.get_param("driver.verbose"):msg.bold("initializing the incompressible converge problem...")# get the velocitiesu=my_data.get_var("x-velocity")v=my_data.get_var("y-velocity")myg=my_data.gridif(myg.xmin!=0ormyg.xmax!=1ormyg.ymin!=0ormyg.ymax!=1):msg.fail("ERROR: domain should be a unit square")u[:,:]=1.0-2.0*np.cos(2.0*math.pi*myg.x2d)*np.sin(2.0*math.pi*myg.y2d)v[:,:]=1.0+2.0*np.sin(2.0*math.pi*myg.x2d)*np.cos(2.0*math.pi*myg.y2d)
[docs]deffinalize():""" print out any information to the user at the end of the run """ostr=""" Comparisons to the analytic solution can be done using analysis/incomp_converge_error.py """print(ostr)