This package contains Burgerīs equation solved with the Method of Lines.
Release Notes:
| Name | Description |
|---|---|
| BurgerEquation | |
Implements the inviscid Burgerīs equation
The initial condition is
and boundary conditions are
The analytical solution of this problem is implemented in BAN block
Release Notes:
model BurgerEquation
inner World.worldModel worldModel1( qss=2, n=40);
Integrator.UniversalIntegrator Burger(
vb=2,
icb=2,
bcl=1,
ve=worldModel1.n,
ice=worldModel1.n,
bcr=0);
Modelica.Blocks.Math.Product product[worldModel1.n];
Modelica.Blocks.Math.Product product1[worldModel1.n];
Modelica.Blocks.Sources.RealExpression const[worldModel1.n](y=-0.5);
PDE.MOL.SpaceDerivative.Derivatives.u_x derivator;
BICx bICx;
BAN bAN;
Modelica.Blocks.Sources.RealExpression BC;
equation
connect(Burger.y, product.u1);
connect(Burger.y, product.u2);
connect(product.y, derivator.u);
connect(derivator.y, product1.u1);
connect(const.y, product1.u2);
connect(product1.y, Burger.u);
connect(bICx.y, Burger.u1);
connect(BC.y, Burger.u2);
connect(BC.y, Burger.u3);
connect(Burger.y, bAN.u);
end BurgerEquation;
PDE.MOL.Examples.Burger.BICx
Implements the initial condition of the inviscid Burgerīs equation
Release Notes:
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | n | worldModel1.n |
| Type | Name | Description |
|---|---|---|
| output RealOutput | y[worldModel1.n] |
block BICx
extends Icons.BlockIcon;
outer PDE.World.worldModel worldModel1;
parameter Integer n = worldModel1.n;
equation
for i in 1:n loop
y[i] = (i-1)/(n-1);
end for;
public
Modelica.Blocks.Interfaces.RealOutput y[worldModel1.n];
end BICx;
PDE.MOL.Examples.Burger.BAN
Implements the analytical solution of the inviscid Burgerīs equation
Release Notes:
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | n | worldModel1.n |
| Type | Name | Description |
|---|---|---|
| input RealInput | u[worldModel1.n] | |
| output RealOutput | y[worldModel1.n] |
block BAN
extends Icons.BlockIcon4;
outer PDE.World.worldModel worldModel1;
parameter Integer n = worldModel1.n;
Modelica.Blocks.Interfaces.RealInput u[worldModel1.n];
equation
for i in 1:n loop
//y[i] = (i-1)/(n-1) - u[i]*time;
y[i] = ((i-1)/(n-1))/(1 + time);
end for;
public
Modelica.Blocks.Interfaces.RealOutput y[worldModel1.n];
end BAN;