This package contains Buckley-Leverett equation solved with the Finite Volume Methods.
Release Notes:
| Name | Description |
|---|---|
| BuckleyLeverettEquation |
Implements the Buckley-Leverett equation
The initial condition is
and boundary conditions are
Release Notes:
Release Notes:
model BuckleyLeverettEquation
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.Math.Product product2[worldModel1.n + 1];
Modelica.Blocks.Math.Product product3[worldModel1.n + 1];
Modelica.Blocks.Sources.RealExpression four[worldModel1.n + 1](y=4);
Modelica.Blocks.Sources.RealExpression one[worldModel1.n + 1](y=1);
Modelica.Blocks.Math.Add add[worldModel1.n + 1](k2=-1);
Modelica.Blocks.Math.Add add1[worldModel1.n + 1](k2=-1);
Modelica.Blocks.Math.Product product4[worldModel1.n + 1];
Modelica.Blocks.Math.Product product5[worldModel1.n + 1];
Modelica.Blocks.Math.Add add2[worldModel1.n + 1];
Modelica.Blocks.Math.Add add3[worldModel1.n + 1];
Modelica.Blocks.Math.Division division[worldModel1.n + 1];
Modelica.Blocks.Math.Division division1[worldModel1.n + 1];
PDE.FiniteVolume.Fluxes.LaxFriedrichFlux.LF lF(
alpha=0.5);
Modelica.Blocks.Sources.RealExpression IC[worldModel1.n](y=1);
Modelica.Blocks.Sources.RealExpression BCL[worldModel1.gcl];
Modelica.Blocks.Sources.RealExpression BCR[worldModel1.gcr];
inner World.worldModel worldModel1(n=40);
PDE.FiniteVolume.FVMIntegrator.FVIntegrator BuckleyLeverett(
ve=worldModel1.gcl + worldModel1.n,
ice=worldModel1.gcl + worldModel1.n,
vb=worldModel1.gcl + 1,
icb=worldModel1.gcl + 1,
bcl=0,
bcr=0);
equation
connect(lDLRplus_plus.y, u_plus_plus.u1);
connect(lDLRminus_plus.y, u_minus_plus.u1);
connect(u_minus_plus.y, product.u1);
connect(u_minus_plus.y, product.u2);
connect(product.y, product1.u1);
connect(four.y, product1.u2);
connect(four.y, product3.u1);
connect(u_plus_plus.y, product2.u1);
connect(u_plus_plus.y, product2.u2);
connect(product2.y, product3.u2);
connect(one.y, add.u1);
connect(one.y, add1.u1);
connect(u_minus_plus.y, add.u2);
connect(u_plus_plus.y, add1.u2);
connect(add.y, product4.u1);
connect(add.y, product4.u2);
connect(add1.y, product5.u1);
connect(add1.y, product5.u2);
connect(product4.y, add2.u2);
connect(product5.y, add3.u1);
connect(product1.y, add2.u1);
connect(product3.y, add3.u2);
connect(add2.y, division.u2);
connect(add3.y, division1.u2);
connect(product1.y, division.u1);
connect(product3.y, division1.u1);
connect(division.y, lF.u);
connect(division1.y, lF.u1);
connect(u_plus_plus.y, lF.u2);
connect(u_minus_plus.y, lF.u3);
connect(BuckleyLeverett.y, lDLRminus_plus.u);
connect(BuckleyLeverett.y, lDLRplus_plus.u);
connect(BuckleyLeverett.y, u_minus_plus.u);
connect(BuckleyLeverett.y, u_plus_plus.u);
connect(lF.y, BuckleyLeverett.u);
connect(IC.y, BuckleyLeverett.u2);
connect(BCL.y, BuckleyLeverett.u3);
connect(BCR.y, BuckleyLeverett.u4);
end BuckleyLeverettEquation;