Skip to content

Commit

Permalink
Adding test for PDEModelica.
Browse files Browse the repository at this point in the history
  • Loading branch information
Jan Šilar authored and OpenModelica-Hudson committed Sep 25, 2017
1 parent 6bb362f commit 5724639
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 0 deletions.
1 change: 1 addition & 0 deletions flattening/modelica/others/Makefile
Expand Up @@ -56,6 +56,7 @@ NonfixedParamSubscript.mo \
NotDependsRecursive.mo \
OverrideFinalTest.mo \
Partial1.mo \
PDEModelicaTest.mos \
PEXPipeTotal.mo \
Philosopher2.mo \
Philosopher.mo \
Expand Down
20 changes: 20 additions & 0 deletions flattening/modelica/others/PDEModelicaTest.mo
@@ -0,0 +1,20 @@
model PDEModelicaTest
model PDE
constant Real pi = 3.14159;
DomainLineSegment1D omega(N = 5, L=2);
field Real u(domain = omega);
equation
der(u) + pder(u,x) - pder(u,x,x) = 0 indomain omega;
u = extrapolateField(u) indomain omega.right;
end PDE;

model PDE2
extends PDE;
initial equation
u = sin(omega.x*2*pi) indomain omega;
equation
u = 0 indomain omega.left;
end PDE2;

PDE2 pde2;
end PDEModelicaTest;
68 changes: 68 additions & 0 deletions flattening/modelica/others/PDEModelicaTest.mos
@@ -0,0 +1,68 @@
// name: PDEModelica general test
// keywords: PDEModelica field, indomain, pder, extrapolateField, domain
// status: correct
//
// Test main features of PDEModelica
//
//setCompilerFlags("--grammar=PDEModelica"); getErrorString();
setCommandLineOptions("--grammar=PDEModelica"); getErrorString();
loadFile("PDEModelicaTest.mo"); getErrorString();
instantiateModel(PDEModelicaTest); getErrorString();

// Result:
//true
//""
//true
//""
//"function DomainLineSegment1D \"Automatically generated record constructor for DomainLineSegment1D\"
// input Real x0(unit = \"m\") = 0.0;
// input Real L(unit = \"m\") = 1.0;
// input Real dx = 0.1111111111111111 * L;
// input Real[10] x(unit = \"m\") = {x0, x0 + dx, x0 + 2.0 * dx, x0 + 3.0 * dx, x0 + 4.0 * dx, x0 + 5.0 * dx, x0 + 6.0 * dx, x0 + 7.0 * dx, x0 + 8.0 * dx, x0 + 9.0 * dx};
// input DomainLineSegment1D.Region left = DomainLineSegment1D.Region();
// input DomainLineSegment1D.Region right = DomainLineSegment1D.Region();
// input DomainLineSegment1D.Region interior = DomainLineSegment1D.Region();
// protected Integer N(unit = \"\") = 10;
// output DomainLineSegment1D res;
//end DomainLineSegment1D;
//
//function DomainLineSegment1D.Region \"Automatically generated record constructor for DomainLineSegment1D.Region\"
// output Region res;
//end DomainLineSegment1D.Region;
//
//class PDEModelicaTest
// constant Real pde2.pi = 3.14159;
// parameter Real pde2.omega.x0(unit = \"m\") = 0.0 \"x value at left boundary\";
// parameter Real pde2.omega.L(unit = \"m\") = 2.0 \"length of the domain\";
// constant Integer pde2.omega.N = 5 \"number of grid nodes\";
// parameter Real pde2.omega.dx = 0.25 * pde2.omega.L \"grid space step\";
// parameter Real pde2.omega.x[1](unit = \"m\") = pde2.omega.x0 \"space coordinate\";
// parameter Real pde2.omega.x[2](unit = \"m\") = pde2.omega.x0 + pde2.omega.dx \"space coordinate\";
// parameter Real pde2.omega.x[3](unit = \"m\") = pde2.omega.x0 + 2.0 * pde2.omega.dx \"space coordinate\";
// parameter Real pde2.omega.x[4](unit = \"m\") = pde2.omega.x0 + 3.0 * pde2.omega.dx \"space coordinate\";
// parameter Real pde2.omega.x[5](unit = \"m\") = pde2.omega.x0 + 4.0 * pde2.omega.dx \"space coordinate\";
// Real pde2.u[1];
// Real pde2.u[2];
// Real pde2.u[3];
// Real pde2.u[4];
// Real pde2.u[5];
// Real pde2.u$ghostL;
// Real pde2.u$ghostR;
//initial equation
// pde2.u[1] = sin(6.28318 * pde2.omega.x[1]);
// pde2.u[2] = sin(6.28318 * pde2.omega.x[2]);
// pde2.u[3] = sin(6.28318 * pde2.omega.x[3]);
// pde2.u[4] = sin(6.28318 * pde2.omega.x[4]);
// pde2.u[5] = sin(6.28318 * pde2.omega.x[5]);
//equation
// pde2.u$ghostL = 0.0;
// der(pde2.u[1]) + 0.5 * (pde2.u[2] - pde2.u$ghostL) / pde2.omega.dx + (2.0 * pde2.u[1] + (-pde2.u[2]) - pde2.u$ghostL) / pde2.omega.dx ^ 2.0 = 0.0;
// der(pde2.u[2]) + 0.5 * (pde2.u[3] - pde2.u[1]) / pde2.omega.dx + (2.0 * pde2.u[2] + (-pde2.u[3]) - pde2.u[1]) / pde2.omega.dx ^ 2.0 = 0.0;
// der(pde2.u[3]) + 0.5 * (pde2.u[4] - pde2.u[2]) / pde2.omega.dx + (2.0 * pde2.u[3] + (-pde2.u[4]) - pde2.u[2]) / pde2.omega.dx ^ 2.0 = 0.0;
// der(pde2.u[4]) + 0.5 * (pde2.u[5] - pde2.u[3]) / pde2.omega.dx + (2.0 * pde2.u[4] + (-pde2.u[5]) - pde2.u[3]) / pde2.omega.dx ^ 2.0 = 0.0;
// der(pde2.u[5]) + 0.5 * (pde2.u$ghostR - pde2.u[4]) / pde2.omega.dx + (2.0 * pde2.u[5] + (-pde2.u$ghostR) - pde2.u[4]) / pde2.omega.dx ^ 2.0 = 0.0;
// pde2.u$ghostR = 2.0 * pde2.u[5] - pde2.u[4];
//end PDEModelicaTest;
//"
//""
// endResult

0 comments on commit 5724639

Please sign in to comment.