This package offers some linear methods for solving linear constant-coefficient hyperbolic system of equations.
Release Notes:
| Name | Description |
|---|---|
PDE.FiniteVolume.FluxLimiter.LinearMethods.Upwind
The upwind method takes as input the teta matrix and gives as output matrix
Release Notes:
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | n | worldModel1.n | |
| Integer | gcl | worldModel1.gcl | |
| Integer | gcr | worldModel1.gcr |
| Type | Name | Description |
|---|---|---|
| input RealInput | u[worldModel1.m, worldModel1.n + 1] | |
| output RealOutput | y[worldModel1.m, worldModel1.n + 1] |
block Upwind
extends Icons.BlockIcon;
outer PDE.World.worldModel worldModel1;
parameter Integer n = worldModel1.n;
parameter Integer gcl = worldModel1.gcl;
parameter Integer gcr = worldModel1.gcr;
equation
y = 0.0*u;
public
Modelica.Blocks.Interfaces.RealInput u[worldModel1.m,worldModel1.n +
1];
Modelica.Blocks.Interfaces.RealOutput y[worldModel1.m,worldModel1.n
+ 1];
end Upwind;
PDE.FiniteVolume.FluxLimiter.LinearMethods.LaxWendroff
The Lax Wendroff Method takes as input the teta matrix and gives as output the matrix
which has ones in the j-th row and zeros elsewhere.
Release Notes:
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | n | worldModel1.n | |
| Integer | m | worldModel1.m | |
| Integer | gcl | worldModel1.gcl | |
| Integer | gcr | worldModel1.gcr | |
| Integer | p |
| Type | Name | Description |
|---|---|---|
| input RealInput | u[worldModel1.m, worldModel1.n + 1] | |
| output RealOutput | y[worldModel1.m, worldModel1.n + 1] |
block LaxWendroff
extends Icons.BlockIcon;
outer PDE.World.worldModel worldModel1;
parameter Integer n = worldModel1.n;
parameter Integer m = worldModel1.m;
parameter Integer gcl = worldModel1.gcl;
parameter Integer gcr = worldModel1.gcr;
outer parameter Integer p;
equation
for j in 1:n+1 loop
for i in 1:p-1 loop
y[i, j] = 0.0;
end for;
end for;
for j in 1:n+1 loop
y[p, j] = 1.0;
end for;
for j in 1:n+1 loop
for i in p+1:m loop
y[i, j] = 0.0;
end for;
end for;
// for j in 1:n+1 loop
// for i in 1:m loop
// y[i, j] = 1.0;
// end for;
// end for;
public
Modelica.Blocks.Interfaces.RealInput u[worldModel1.m,worldModel1.n +
1];
Modelica.Blocks.Interfaces.RealOutput y[worldModel1.m,worldModel1.n
+ 1];
end LaxWendroff;
PDE.FiniteVolume.FluxLimiter.LinearMethods.BeamWarming
The Beam Warming Method takes as input the teta matrix and gives as output matrix
which has in the j-th row the entries of the p-th row of the theta matrix and zeros in all other entries.
Release Notes:
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | n | worldModel1.n | |
| Integer | m | worldModel1.m | |
| Integer | gcl | worldModel1.gcl | |
| Integer | gcr | worldModel1.gcr | |
| Integer | p |
| Type | Name | Description |
|---|---|---|
| input RealInput | u[worldModel1.m, worldModel1.n + 1] | |
| output RealOutput | y[worldModel1.m, worldModel1.n + 1] |
block BeamWarming
extends Icons.BlockIcon;
outer PDE.World.worldModel worldModel1;
parameter Integer n = worldModel1.n;
parameter Integer m = worldModel1.m;
parameter Integer gcl = worldModel1.gcl;
parameter Integer gcr = worldModel1.gcr;
outer parameter Integer p;
equation
for j in 1:n+1 loop
for i in 1:p-1 loop
y[i, j] = 0.0;
end for;
end for;
for j in 1:n+1 loop
y[p, j] = u[p, j];
end for;
for j in 1:n+1 loop
for i in p+1:m loop
y[i, j] = 0.0;
end for;
end for;
public
Modelica.Blocks.Interfaces.RealInput u[worldModel1.m,worldModel1.n +
1];
Modelica.Blocks.Interfaces.RealOutput y[worldModel1.m,worldModel1.n
+ 1];
end BeamWarming;
PDE.FiniteVolume.FluxLimiter.LinearMethods.Fromm
The Fromm Method takes as input the teta matrix and gives as output matrix f(teta) which has in the j-th row
and zeros in all other rows.
Release Notes:
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | n | worldModel1.n | |
| Integer | m | worldModel1.m | |
| Integer | gcl | worldModel1.gcl | |
| Integer | gcr | worldModel1.gcr | |
| Integer | p |
| Type | Name | Description |
|---|---|---|
| input RealInput | u[worldModel1.m, worldModel1.n + 1] | |
| output RealOutput | y[worldModel1.m, worldModel1.n + 1] |
block Fromm
extends Icons.BlockIcon;
outer PDE.World.worldModel worldModel1;
parameter Integer n = worldModel1.n;
parameter Integer m = worldModel1.m;
parameter Integer gcl = worldModel1.gcl;
parameter Integer gcr = worldModel1.gcr;
outer parameter Integer p;
Modelica.Blocks.Interfaces.RealInput u[worldModel1.m,worldModel1.n +
1];
Modelica.Blocks.Interfaces.RealOutput y[worldModel1.m,worldModel1.n
+ 1];
equation
for j in 1:n+1 loop
for i in 1:p-1 loop
y[i, j] = 0.0;
end for;
end for;
for j in 1:n+1 loop
y[p, j] = 0.5*(1+u[p, j]);
end for;
for j in 1:n+1 loop
for i in p+1:m loop
y[i, j] = 0.0;
end for;
end for;
end Fromm;