[docs]defderive_primitives(myd,varnames):""" derive desired primitive variables from conserved state """# get the variables we needdens=myd.get_var("density")xmom=myd.get_var("x-momentum")ymom=myd.get_var("y-momentum")ener=myd.get_var("energy")derived_vars=[]u=xmom/densv=ymom/dense=(ener-0.5*dens*(u*u+v*v))/densgamma=myd.get_aux("gamma")p=eos.pres(gamma,dens,e)myg=myd.gridvort=myg.scratch_array()vort.v()[:,:]= \
0.5*(v.ip(1)-v.ip(-1))/myg.dx- \
0.5*(u.jp(1)-u.jp(-1))/myg.dyifisinstance(varnames,str):wanted=[varnames]else:wanted=list(varnames)forvarinwanted:ifvar=="velocity":derived_vars.append(u)derived_vars.append(v)elifvarin["e","eint"]:derived_vars.append(e)elifvarin["p","pressure"]:derived_vars.append(p)elifvar=="primitive":derived_vars.append(dens)derived_vars.append(u)derived_vars.append(v)derived_vars.append(p)elifvar=="soundspeed":derived_vars.append(np.sqrt(gamma*p/dens))elifvar=="machnumber":derived_vars.append(np.sqrt(u**2+v**2)/np.sqrt(gamma*p/dens))elifvar=="vorticity":derived_vars.append(vort)iflen(derived_vars)>1:returnderived_varsreturnderived_vars[0]