#= Usage:12# Start Julia3julia --color=yes45# Install Reduce.jl package (only necessary once)6import Pkg; Pkg.add("Reduce");78# Load file9julia> using Revise10julia> includet("euler-manufactured.jl")1112# Run methods to generate source terms. The source terms that need to be13# implemented can be found in the `source_...` variables of the quote'd output.14# If you want, you can also modify, e.g., the ini method to get different manufactured solutions.15julia> euler1d()16julia> euler2d()17julia> euler3d()18=#1920using Reduce21@force using Reduce.Algebra2223# Original Reduce code (CompressibleEulerEquations 1D)24#=25clear(γ,f,A,ω,c,ini,rho,rho_v1,rho_v2,rho_v3,rho_e,v1,v2,p,x,y,t,u1,u2,u3,u4);2627ini := c + A * sin(ω * (x - t));28rho := ini;29rho_v1 := ini;30rho_e := ini^2;3132v1 := rho_v1 / rho;33p := (γ - 1) * (rho_e - 1/2 * rho * v1^2);3435source_rho := df(rho, t) + df(rho_v1, x)36source_rho_v1 := df(rho_v1, t) + df(rho * v1^2 + p, x)37source_rho_e := df(rho_e, t) + df((rho_e + p) * v1, x)38=#3940function euler1d()41quote42ini = c + a * sin(ω * (x - t))43rho = ini44rho_v1 = ini45rho_e = ini^24647v1 = rho_v1 / rho48p = (γ - 1) * (rho_e - 1 / 2 * rho * v1^2)4950#! format: off51source_rho = df(rho, t) + df(rho_v1, x)52source_rho_v1 = df(rho_v1, t) + df(rho * v1^2 + p, x)53source_rho_e = df(rho_e, t) + df((rho_e + p) * v1, x)54#! format: on55end |> rcall56end5758# Original Reduce code (CompressibleEulerEquations 2D)59#=60clear(γ,f,A,ω,c,ini,rho,rho_v1,rho_v2,rho_v3,rho_e,v1,v2,p,x,y,t,u1,u2,u3,u4);6162ini := c + A * sin(ω * (x + y - t));63rho := ini;64rho_v1 := ini;65rho_v2 := ini;66rho_e := ini^2;6768v1 := rho_v1 / rho;69v2 := rho_v2 / rho;70p := (γ - 1) * (rho_e - 1/2 * rho * (v1^2 + v2^2));7172source_rho := df(rho, t) + df(rho_v1, x) + df(rho_v2, y);73source_rho_v1 := df(rho_v1, t) + df(rho * v1^2 + p, x) + df(rho * v1 * v2, y);74source_rho_v2 := df(rho_v2, t) + df(rho * v1 * v2, x) + df(rho * v2^2 + p, y);75source_rho_e := df(rho_e, t) + df((rho_e + p) * v1, x) + df((rho_e + p) * v2, y);76=#7778function euler2d()79quote80ini = c + a * sin(ω * (x + y - t))81rho = ini82rho_v1 = ini83rho_v2 = ini84rho_e = ini^28586v1 = rho_v1 / rho87v2 = rho_v2 / rho88p = (γ - 1) * (rho_e - 1 / 2 * rho * (v1^2 + v2^2))8990#! format: off91source_rho = df(rho, t) + df(rho_v1, x) + df(rho_v2, y)92source_rho_v1 = df(rho_v1, t) + df(rho * v1^2 + p, x) + df(rho * v1 * v2, y)93source_rho_v2 = df(rho_v2, t) + df(rho * v1 * v2, x) + df(rho * v2^2 + p, y)94source_rho_e = df(rho_e, t) + df((rho_e + p) * v1, x) + df((rho_e + p) * v2, y)95#! format: on96end |> rcall97end9899# Original Reduce code (CompressibleEulerEquations 3D)100#=101clear(γ,f,A,ω,c,a1,a2,a3,ini,rho,rho_v1,rho_v2,rho_v3,rho_e,v1,v2,v3,p,x,y,z,t);102103ini := c + A * sin(ω * (x + y + z - t));104rho := ini;105rho_v1 := ini;106rho_v2 := ini;107rho_v3 := ini;108rho_e := ini^2;109110v1 := rho_v1 / rho;111v2 := rho_v2 / rho;112v3 := rho_v3 / rho;113p := (γ - 1) * (rho_e - 1/2 * rho * (v1^2 + v2^2 + v3^2));114115source_rho := df(rho, t) + df(rho_v1, x) + df(rho_v2, y) + df(rho_v3, z);116source_rho_v1 := df(rho_v1, t) + df(rho * v1^2 + p, x) + df(rho * v1 * v2, y) + df(rho * v1 * v3, z);117source_rho_v2 := df(rho_v2, t) + df(rho * v1 * v2, x) + df(rho * v2^2 + p, y) + df(rho * v2 * v3, z);118source_rho_v3 := df(rho_v3, t) + df(rho * v1 * v3, x) + df(rho * v3 * v3, y) + df(rho * v3^2 + p, z);119source_rho_e := df(rho_e, t) + df((rho_e + p) * v1, x) + df((rho_e + p) * v2, y) + df((rho_e + p) * v3, z);120=#121122function euler3d()123quote124ini = c + a * sin(ω * (x + y + z - t))125rho = ini126rho_v1 = ini127rho_v2 = ini128rho_v3 = ini129rho_e = ini^2130131v1 = rho_v1 / rho132v2 = rho_v2 / rho133v3 = rho_v3 / rho134p = (γ - 1) * (rho_e - 1 / 2 * rho * (v1^2 + v2^2 + v3^2))135136#! format: off137source_rho = df(rho, t) + df(rho_v1, x) + df(rho_v2, y) + df(rho_v3, z)138source_rho_v1 = df(rho_v1, t) + df(rho * v1^2 + p, x) + df(rho * v1 * v2, y) + df(rho * v1 * v3, z)139source_rho_v2 = df(rho_v2, t) + df(rho * v1 * v2, x) + df(rho * v2^2 + p, y) + df(rho * v2 * v3, z)140source_rho_v3 = df(rho_v3, t) + df(rho * v1 * v3, x) + df(rho * v3 * v3, y) + df(rho * v3^2 + p, z)141source_rho_e = df(rho_e, t) + df((rho_e + p) * v1, x) + df((rho_e + p) * v2, y) + df((rho_e + p) * v3, z)142#! format: on143end |> rcall144end145146147