This package contains advection equation solved with the Finite Volume Methods by using the Lax-Friedrichs flux.
Release Notes:
| Name | Description |
|---|---|
| AdvectionLF |
Implements the advection equation
where c is speed, with the Lax-Friedrichs numerical flux. The initial condition is
and boundary condition at the left is
The analytical solution of this problem is implemented in AdvectionAnalytic block
Release Notes:
model AdvectionLF
PDE.FiniteVolume.FVMIntegrator.FVIntegrator Advection(
bcr=0, bcl=0);
inner World.worldModel worldModel1(n=10);
PDE.FiniteVolume.LDLR.L.LDLRminus lDLRminus_plus;
PDE.FiniteVolume.LDLR.L.LDLRplus lDLRplus_plus;
PDE.FiniteVolume.LDLR.u.u_minus u_minus_plus;
PDE.FiniteVolume.LDLR.u.u_plus u_plus_plus;
Modelica.Blocks.Math.Product product[worldModel1.n + 1];
Modelica.Blocks.Math.Product product1[worldModel1.n + 1];
Modelica.Blocks.Sources.RealExpression const[worldModel1.n + 1](y=0.1);
PDE.FiniteVolume.Fluxes.LaxFriedrichFlux.LF lF(
alpha=0.2);
Modelica.Blocks.Sources.RealExpression BCR[worldModel1.gcr];
MOL.Examples.Diffusion.DiffusionIC diffusionIC;
Modelica.Blocks.Sources.RealExpression BCL[worldModel1.gcl](y=cos(-0.1
*time));
equation
connect(Advection.y, lDLRminus_plus.u);
connect(Advection.y, lDLRplus_plus.u);
connect(lDLRminus_plus.y, u_minus_plus.u1);
connect(lDLRplus_plus.y, u_plus_plus.u1);
connect(Advection.y, u_minus_plus.u);
connect(Advection.y, u_plus_plus.u);
connect(const.y, product.u2);
connect(const.y, product1.u1);
connect(u_plus_plus.y, product1.u2);
connect(u_minus_plus.y, product.u1);
connect(product.y, lF.u);
connect(product1.y, lF.u1);
connect(u_plus_plus.y, lF.u2);
connect(u_minus_plus.y, lF.u3);
connect(lF.y, Advection.u);
connect(diffusionIC.y, Advection.u2);
connect(BCL.y, Advection.u3);
connect(BCR.y, Advection.u4);
end AdvectionLF;