This package contains Euler equations solved with the Finite Volume Methods by using the Roe´s flux.
Release Notes:
| Name | Description |
|---|---|
| Euler | |
Implements the Euler system of equations
with Roe´s flux. The initial conditions are
The boundary conditions are
This system has eigenvalues
and eigenvector matrix
that are computed at each time step at each interface by the corresponding blocks.
Release Notes:
model Euler
LDLR.Reconstruction.Rec rec;
LDLR.Reconstruction.Rec rec1;
LDLR.Reconstruction.Rec rec2;
PDE.FiniteVolume.Fluxes.Roe.Averages.Vaverage vaverage;
PDE.FiniteVolume.Fluxes.Roe.Averages.Aaverage aaverage;
PDE.FiniteVolume.Fluxes.Roe.Averages.Haverage haverage;
PDE.FiniteVolume.Fluxes.Roe.Averages.Daverage daverage;
inner World.worldModel worldModel1(m=3,
n=10,
deltat=0);
PDE.FiniteVolume.Fluxes.Roe.Lambda.Lambdas lambdas;
PDE.FiniteVolume.Fluxes.Roe.Wave.Waves waves;
PDE.FiniteVolume.Fluxes.Roe.WaveStrength.a a;
PDE.FiniteVolume.Fluxes.Roe.DeltaU.Deltau deltau;
PDE.FiniteVolume.Fluxes.Roe.DeltaU.Deltau deltau1;
PDE.FiniteVolume.Fluxes.Roe.DeltaU.Deltau deltau2;
PDE.FiniteVolume.Fluxes.Roe.FluxDifference.FluxDiff fluxDiff;
PDE.FiniteVolume.Fluxes.Roe.FluxDifference.FluxDiff fluxDiff1;
PDE.FiniteVolume.Fluxes.Roe.FluxDifference.FluxDiff fluxDiff2;
Modelica.Blocks.Math.Add3 add3_1[worldModel1.m,worldModel1.n + 1];
Modelica.Blocks.Math.Add3 add3_2[worldModel1.m,worldModel1.n + 1];
Modelica.Blocks.Math.Product product[worldModel1.n + 1];
Modelica.Blocks.Math.Product product1[worldModel1.n + 1];
Modelica.Blocks.Math.Division vplus[worldModel1.n + 1];
Modelica.Blocks.Math.Division vminus[worldModel1.n + 1];
Modelica.Blocks.Math.Product product2[worldModel1.n + 1];
Modelica.Blocks.Math.Product product3[worldModel1.n + 1];
Modelica.Blocks.Math.Product product4[worldModel1.n + 1];
Modelica.Blocks.Math.Product product5[worldModel1.n + 1];
Modelica.Blocks.Sources.RealExpression const[worldModel1.n + 1](y=0.5);
Modelica.Blocks.Math.Add add[worldModel1.n + 1](k2=-1);
Modelica.Blocks.Math.Add add1[worldModel1.n + 1](k2=-1);
Modelica.Blocks.Math.Product pminus[worldModel1.n + 1];
Modelica.Blocks.Math.Product pplus[worldModel1.n + 1];
Modelica.Blocks.Sources.RealExpression const1[worldModel1.n + 1](y=
0.4);
Modelica.Blocks.Math.Add add2[worldModel1.n + 1];
Modelica.Blocks.Math.Add add3[worldModel1.n + 1];
Modelica.Blocks.Math.Division hminus[worldModel1.n + 1];
Modelica.Blocks.Math.Division hplus[worldModel1.n + 1];
PDE.FiniteVolume.Fluxes.Roe.IntegratorRoe.Integrator integrator(
bcl=0, bcr=0);
PDE.FiniteVolume.Fluxes.Roe.AverageFilter.Filter Density;
PDE.FiniteVolume.Fluxes.Roe.AverageFilter.Filter Momentum(
row=2);
PDE.FiniteVolume.Fluxes.Roe.AverageFilter.Filter Energy(
row=3);
PDE.FiniteVolume.Examples.EulerSystem.SODProblem.Roe.IC iC;
PDE.FiniteVolume.Examples.EulerSystem.SODProblem.Roe.BCL bCL;
PDE.FiniteVolume.Examples.EulerSystem.SODProblem.Roe.BCR bCR;
equation
connect(vaverage.y, lambdas.u);
connect(aaverage.y, lambdas.u1);
connect(vaverage.y, waves.u);
connect(aaverage.y, waves.u1);
connect(haverage.y, waves.u2);
connect(aaverage.y, a.u1);
connect(deltau.y, a.u2);
connect(deltau1.y, a.u3);
connect(deltau2.y, a.u4);
connect(daverage.y, a.u);
connect(lambdas.y, fluxDiff.u2);
connect(waves.y, fluxDiff.u1);
connect(a.y, fluxDiff.u);
connect(lambdas.y1, fluxDiff1.u2);
connect(lambdas.y2, fluxDiff2.u2);
connect(waves.y1y, fluxDiff1.u1);
connect(waves.y2y, fluxDiff2.u1);
connect(a.y1, fluxDiff1.u);
connect(a.y2, fluxDiff2.u);
connect(fluxDiff.y, add3_1.u1);
connect(fluxDiff1.y, add3_1.u2);
connect(fluxDiff2.y, add3_1.u3);
connect(fluxDiff.y1, add3_2.u1);
connect(fluxDiff1.y1, add3_2.u2);
connect(fluxDiff2.y1, add3_2.u3);
connect(rec1.y, vminus.u1);
connect(rec1.y1, vplus.u1);
connect(rec.y, vminus.u2);
connect(rec.y1, vplus.u2);
connect(vminus.y, product.u1);
connect(vminus.y, product.u2);
connect(vplus.y, product1.u1);
connect(vplus.y, product1.u2);
connect(product.y, product2.u2);
connect(product1.y, product3.u2);
connect(rec.y, product2.u1);
connect(rec.y1, product3.u1);
connect(const.y, product4.u2);
connect(const.y, product5.u1);
connect(product2.y, product4.u1);
connect(product3.y, product5.u2);
connect(product4.y, add.u2);
connect(product5.y, add1.u2);
connect(rec2.y, add.u1);
connect(rec2.y1, add1.u1);
connect(const1.y, pminus.u2);
connect(const1.y, pplus.u1);
connect(add.y, pminus.u1);
connect(add1.y, pplus.u2);
connect(rec2.y, add2.u1);
connect(rec2.y1, add3.u1);
connect(pminus.y, add2.u2);
connect(pplus.y, add3.u2);
connect(rec.y, vaverage.u);
connect(vminus.y, vaverage.u1);
connect(rec.y1, vaverage.u2);
connect(vplus.y, vaverage.u3);
connect(haverage.y, aaverage.u);
connect(vaverage.y, aaverage.u1);
connect(add2.y, hminus.u1);
connect(add3.y, hplus.u1);
connect(rec.y, hminus.u2);
connect(rec.y1, hplus.u2);
connect(rec.y, haverage.u);
connect(hminus.y, haverage.u1);
connect(rec.y1, haverage.u2);
connect(hplus.y, haverage.u3);
connect(rec.y, daverage.u);
connect(rec.y1, daverage.u1);
connect(rec.y, deltau.u);
connect(rec.y1, deltau.u1);
connect(vminus.y, deltau1.u);
connect(vplus.y, deltau1.u1);
connect(pminus.y, deltau2.u);
connect(pplus.y, deltau2.u1);
connect(Density.y, rec.u);
connect(Momentum.y, rec1.u);
connect(integrator.y, Density.u);
connect(integrator.y, Momentum.u);
connect(integrator.y, Energy.u);
connect(Energy.y, rec2.u);
connect(add3_1.y, integrator.u);
connect(add3_2.y, integrator.u4);
connect(iC.y, integrator.u1);
connect(bCL.y, integrator.u2);
connect(bCR.y, integrator.u3);
end Euler;
PDE.FiniteVolume.Examples.EulerSystem.SODProblem.Roe.IC
This block implements initial condition for the Euler equations.
Release Notes:
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | n | worldModel1.n | |
| Integer | m | worldModel1.m |
| Type | Name | Description |
|---|---|---|
| output RealOutput | y[worldModel1.m, worldModel1.n] |
block IC extends Icons.BlockIcon; outer PDE.World.worldModel worldModel1; parameter Integer n = worldModel1.n; parameter Integer m = worldModel1.m; equation for j in 1:n loop y[1, j] = 1.0; y[2, j] = 0.0; y[3, j] = 2.5; end for; public Modelica.Blocks.Interfaces.RealOutput y[worldModel1.m,worldModel1.n]; end IC;
PDE.FiniteVolume.Examples.EulerSystem.SODProblem.Roe.BCL
This block implements left boundary condition for the Euler equations.
Release Notes:
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | gcl | worldModel1.gcl |
| Type | Name | Description |
|---|---|---|
| output RealOutput | y[worldModel1.m, worldModel1.gcl] |
block BCL extends Icons.BlockIcon; outer PDE.World.worldModel worldModel1; parameter Integer gcl = worldModel1.gcl; Modelica.Blocks.Interfaces.RealOutput y[worldModel1.m,worldModel1.gcl]; equation for j in 1:gcl loop y[1, j] = 1.0; y[2, j] = 0.0; y[3, j] = 2.5; end for; end BCL;
PDE.FiniteVolume.Examples.EulerSystem.SODProblem.Roe.BCR
This block implements right boundary condition for the Euler equations.
Release Notes:
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | gcr | worldModel1.gcr |
| Type | Name | Description |
|---|---|---|
| output RealOutput | y[worldModel1.m, worldModel1.gcr] |
block BCR extends Icons.BlockIcon; outer PDE.World.worldModel worldModel1; parameter Integer gcr = worldModel1.gcr; equation for j in 1:gcr loop y[1, j] = 0.125; y[2, j] = 0.0; y[3, j] = 0.25; end for; public Modelica.Blocks.Interfaces.RealOutput y[worldModel1.m,worldModel1.gcr]; end BCR;