This package contains Euler equations solved with the Method of Lines.
Release Notes:
| Name | Description |
|---|---|
| ShockWaveEquation | |
Implements the Euler system of equations
where
The initial conditions are
where rhoi is determined by the equation of state for ideal gases:
where T = 300K, R = 8.314 J/K*mole and Mair = 28.96 g/mole
The boundary conditions are
Release Notes:
model ShockWaveEquation
inner World.worldModel worldModel1( n=10, qss=1);
PDE.MOL.Integrator.UniversalIntegrator Density(
ve=worldModel1.n - 1,
ice=worldModel1.n - 1,
bcr=1);
PDE.MOL.Integrator.UniversalIntegrator Velocity(
vb=2,
icb=2,
bcl=1);
PDE.MOL.Integrator.UniversalIntegrator Pressure(
ve=worldModel1.n - 1,
ice=worldModel1.n - 1,
bcr=1);
Modelica.Blocks.Math.Product product[worldModel1.n];
Modelica.Blocks.Math.Product product1[worldModel1.n];
Modelica.Blocks.Math.Gain gain[worldModel1.n](k=-1);
Modelica.Blocks.Math.Gain gain1[worldModel1.n](k=-1);
Modelica.Blocks.Math.Add add[worldModel1.n];
PDE.MOL.SpaceDerivative.Derivatives.u_x derivator(
bcl=0, bcr=-1);
PDE.MOL.SpaceDerivative.Derivatives.u_x derivator1(
bcl=-1);
Modelica.Blocks.Math.Division division[worldModel1.n];
Modelica.Blocks.Sources.RealExpression realExpr[worldModel1.n](y=1);
Modelica.Blocks.Math.Product product2[worldModel1.n];
Modelica.Blocks.Math.Product product3[worldModel1.n];
Modelica.Blocks.Math.Add add1[worldModel1.n];
Modelica.Blocks.Math.Gain gain2[worldModel1.n](k=-1);
Modelica.Blocks.Math.Gain gain3[worldModel1.n](k=-1);
Modelica.Blocks.Math.Product product4[worldModel1.n];
Modelica.Blocks.Math.Product product5[worldModel1.n];
Modelica.Blocks.Math.Add add2[worldModel1.n];
Modelica.Blocks.Math.Gain gain4[worldModel1.n](k=-1);
Modelica.Blocks.Math.Gain gain5[worldModel1.n](k=-1);
Modelica.Blocks.Math.Product product6[worldModel1.n];
Modelica.Blocks.Sources.RealExpression gamma[worldModel1.n](y=1.4);
Modelica.Blocks.Sources.RealExpression ICdensity[worldModel1.n](y=1.0);
Modelica.Blocks.Sources.RealExpression ICvelocity[worldModel1.n](y=0.0);
Modelica.Blocks.Sources.RealExpression ICpressure[worldModel1.n](y=1.0);
Modelica.Blocks.Sources.RealExpression BCR(y=0.125);
Modelica.Blocks.Sources.RealExpression BCL(y=0.0);
Modelica.Blocks.Sources.RealExpression BCRp(y=0.1);
a a1;
equation
connect(Density.y, derivator.u);
connect(derivator.y, product1.u1);
connect(Velocity.y, derivator1.u);
connect(Density.y, product.u1);
connect(Velocity.y, product1.u2);
connect(derivator1.y, product.u2);
connect(product1.y, gain.u);
connect(product.y, gain1.u);
connect(gain.y, add.u1);
connect(gain1.y, add.u2);
connect(add.y, Density.u);
connect(realExpr.y, division.u1);
connect(division.y, product3.u1);
connect(Velocity.y, product2.u2);
connect(derivator1.y, product2.u1);
connect(product3.y, gain3.u);
connect(product2.y, gain2.u);
connect(gain2.y, add1.u1);
connect(gain3.y, add1.u2);
connect(product4.y, gain4.u);
connect(derivator1.y, product6.u1);
connect(product5.y, product6.u2);
connect(gamma.y, product5.u2);
connect(Pressure.y, product5.u1);
connect(product6.y, gain5.u);
connect(gain4.y, add2.u1);
connect(gain5.y, add2.u2);
connect(BCR.y, Density.u3);
connect(BCL.y, Velocity.u2);
connect(BCRp.y, Pressure.u3);
connect(Density.y, division.u2);
connect(Velocity.y, product4.u2);
connect(add2.y, Pressure.u);
connect(ICpressure.y, Pressure.u1);
connect(add1.y, Velocity.u);
connect(a1.y, product3.u2);
connect(a1.y, product4.u1);
connect(Density.y, a1.u);
connect(Velocity.y, a1.u1);
connect(Pressure.y, a1.u2);
connect(ICdensity.y, Density.u1);
connect(ICvelocity.y, Velocity.u1);
end ShockWaveEquation;
PDE.MOL.Examples.EulerSystem.Friction
Implements the frictional resistance of the Euler system of equations
Release Notes:
| Type | Name | Default | Description |
|---|---|---|---|
| Real | alpha | 0.1 |
| Type | Name | Description |
|---|---|---|
| input RealInput | u[n] | |
| input RealInput | u1[n] | |
| output RealOutput | y[n] |
block Friction
extends PDE.Icons.BlockIcon;
outer Integer n;
parameter Real alpha = 0.1;
Modelica.Blocks.Interfaces.RealInput u[n];
Modelica.Blocks.Interfaces.RealInput u1[n];
Modelica.Blocks.Interfaces.RealOutput y[n];
Modelica.Blocks.Math.Product product[n];
Modelica.Blocks.Math.Abs abs1[n];
Modelica.Blocks.Math.Product product1[n];
Modelica.Blocks.Math.Product product2[n];
Modelica.Blocks.Sources.RealExpression param_alpha[n](y=0.1);
Modelica.Blocks.Math.Division division[n];
Modelica.Blocks.Sources.RealExpression delta_x[n](y=1/(
n - 1));
equation
connect(u, product.u1);
connect(u1, product.u2);
connect(u1, abs1.u);
connect(product.y, product1.u1);
connect(abs1.y, product1.u2);
connect(product1.y, product2.u2);
connect(param_alpha.y, product2.u1);
connect(product2.y, division.u1);
connect(delta_x.y, division.u2);
connect(division.y, y);
end Friction;
PDE.MOL.Examples.EulerSystem.Viscosity
Implements the pseudo viscous pressure of the Euler system of equations
Release Notes:
| Type | Name | Description |
|---|---|---|
| input RealInput | u[n] | |
| input RealInput | u1[n] | |
| output RealOutput | y[n] |
block Viscosity
extends PDE.Icons.BlockIcon;
outer Integer n;
Modelica.Blocks.Interfaces.RealInput u[n];
Modelica.Blocks.Interfaces.RealInput u1[n];
Modelica.Blocks.Interfaces.RealOutput y[n];
Modelica.Blocks.Logical.Less less[n];
Modelica.Blocks.Sources.RealExpression realExpression[n];
Modelica.Blocks.Logical.Switch switch1[n];
Modelica.Blocks.Sources.RealExpression realExpression1[n];
Modelica.Blocks.Sources.RealExpression param_beta[n](y=0.1);
Modelica.Blocks.Sources.RealExpression delta_x[n](y=1/(
n - 1));
Modelica.Blocks.Math.Product product[n];
Modelica.Blocks.Math.Product product1[n];
Modelica.Blocks.Math.Product product2[n];
Modelica.Blocks.Math.Product product3[n];
Modelica.Blocks.Math.Product product4[n];
equation
connect(u1, less.u1);
connect(realExpression.y, less.u2);
connect(less.y, switch1.u2);
connect(realExpression1.y, switch1.u3);
connect(u, product.u1);
connect(u1, product1.u1);
connect(u1, product1.u2);
connect(product1.y, product.u2);
connect(delta_x.y, product2.u1);
connect(delta_x.y, product2.u2);
connect(param_beta.y, product3.u1);
connect(product2.y, product3.u2);
connect(product3.y, product4.u1);
connect(product.y, product4.u2);
connect(product4.y, switch1.u1);
connect(switch1.y, y);
end Viscosity;
PDE.MOL.Examples.EulerSystem.a
Implements
in the Euler system of equations
Release Notes:
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | method | worldModel1.qss | |
| Integer | n | worldModel1.n |
| Type | Name | Description |
|---|---|---|
| input RealInput | u[worldModel1.n] | |
| input RealInput | u1[worldModel1.n] | |
| input RealInput | u2[worldModel1.n] | |
| output RealOutput | y[worldModel1.n] |
block a extends PDE.Icons.BlockIcon; outer PDE.World.worldModel worldModel1; Modelica.Blocks.Interfaces.RealInput u[worldModel1.n]; Modelica.Blocks.Interfaces.RealInput u1[worldModel1.n]; Modelica.Blocks.Interfaces.RealInput u2[worldModel1.n]; Modelica.Blocks.Interfaces.RealOutput y[worldModel1.n]; PDE.MOL.SpaceDerivative.Derivatives.u_x derivator1; PDE.MOL.SpaceDerivative.Derivatives.u_x derivator2; Modelica.Blocks.Math.Add3 add3_1[worldModel1.n]; parameter Integer method = worldModel1.qss; inner parameter Integer n = worldModel1.n; Friction friction; Viscosity viscosity; PDE.MOL.SpaceDerivative.Derivatives.u_x derivator3; equation connect(u2, derivator2.u); connect(derivator1.y, add3_1.u2); connect(add3_1.y, y); connect(derivator2.y, add3_1.u3); connect(u, friction.u); connect(u1, friction.u1); connect(viscosity.y, derivator1.u); connect(u, viscosity.u); connect(u1, derivator3.u); connect(derivator3.y, viscosity.u1); connect(friction.y, add3_1.u1); end a;