This package contains examples of partial differential equations solved with the general block.
Release Notes:
| Name | Description |
|---|---|
| AdvectionMOL | |
| AdvectionFVM |
Implements advection equation with MOL method by using GeneralIntegrator block and setting the integrator parameter to 1.
Release Notes:
model AdvectionMOL
PDE.General.Integrator.GeneralIntegrator generalIntegrator(
vb=2,
icb=2,
n=worldModel1.n,
ve=worldModel1.n,
ice=worldModel1.n,
bcl=1,
integrator=1);
MOL.SpaceDerivative.Derivatives.u_x u_x;
Modelica.Blocks.Math.Product product[worldModel1.n];
Modelica.Blocks.Sources.RealExpression speed[worldModel1.n](y=-0.1);
MOL.Examples.Diffusion.DiffusionIC diffusionIC;
Modelica.Blocks.Sources.RealExpression BCL(y=cos(-0.1*time));
inner World.worldModel worldModel1;
equation
connect(u_x.y, product.u1);
connect(speed.y, product.u2);
connect(product.y, generalIntegrator.u);
connect(generalIntegrator.y, u_x.u);
connect(diffusionIC.y, generalIntegrator.u2);
connect(BCL.y, generalIntegrator.u3);
end AdvectionMOL;
Implements advection equation with FVM method by using GeneralIntegrator block and setting the integrator parameter to 2.
model AdvectionFVM
PDE.General.Integrator.GeneralIntegrator generalIntegrator(
vb=2,
icb=2,
n=worldModel1.n,
ve=worldModel1.n,
ice=worldModel1.n,
bcl=0,
integrator=2);
MOL.Examples.Diffusion.DiffusionIC diffusionIC;
Modelica.Blocks.Sources.RealExpression BCL(y=cos(-0.1*time));
inner World.worldModel worldModel1;
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.Sources.RealExpression speed1[worldModel1.n + 1](y=0.1);
Modelica.Blocks.Math.Product product1[worldModel1.n + 1];
Modelica.Blocks.Math.Product product2[worldModel1.n + 1];
PDE.FiniteVolume.Fluxes.LaxFriedrichFlux.LF lF(
alpha=0.2);
Modelica.Blocks.Sources.RealExpression BCR;
equation
connect(diffusionIC.y, generalIntegrator.u2);
connect(BCL.y, generalIntegrator.u3);
connect(generalIntegrator.y1, lDLRminus_plus.u);
connect(generalIntegrator.y1, lDLRplus_plus.u);
connect(lDLRminus_plus.y, u_minus_plus.u1);
connect(lDLRplus_plus.y, u_plus_plus.u1);
connect(generalIntegrator.y1, u_minus_plus.u);
connect(generalIntegrator.y1, u_plus_plus.u);
connect(u_plus_plus.y, product2.u2);
connect(u_minus_plus.y, product1.u1);
connect(speed1.y, product1.u2);
connect(speed1.y, product2.u1);
connect(product1.y, lF.u);
connect(product2.y, lF.u1);
connect(u_plus_plus.y, lF.u2);
connect(u_minus_plus.y, lF.u3);
connect(BCR.y, generalIntegrator.u4);
connect(lF.y, generalIntegrator.u1);
end AdvectionFVM;