Packages are nice to use in Modelica, but what exactly is a package?
A package is simply a container or namespace for names of classes, functions, constants, and other allowed definitions. A package is also one or the restricted classes.
Why use the word encapsulated when creating packages?
Adding the word encapsulated to the package keeps the package well structured as well as being easier to understand and maintain.
Create a package that contains a constant PI, a type Distance, a function RectangleArea, a function TriangleArea, a function CirclePerimeter and a function CircleArea.
Write a class, GeometryUser, that uses the package and calls the functions.
loadModel(Modelica)
package Geometry
constant Real PI = 3.1415926536;
type Distance = Real(unit = "m");
function RectangleArea
input Distance B;
input Distance H;
output Distance area;
algorithm
area := B*H;
end RectangleArea;
function TriangleArea
input Distance B;
input Distance H;
output Distance area;
algorithm
area := RectangleArea(B, H)/2;
end TriangleArea;
function CirclePerimeter
input Distance radius;
output Distance perimeter;
algorithm
perimeter := 2*PI*radius;
end CirclePerimeter;
function CircleArea
input Distance radius;
output Distance area;
algorithm
area := PI*radius^2;
end CircleArea;
end Geometry;
class GeometryUser
Geometry.Distance rectangleArea = Geometry.RectangleArea(4, 5);
Geometry.Distance triangleArea = Geometry.TriangleArea(4, 5);
Geometry.Distance circlePerimeter = Geometry.CirclePerimeter(3.5);
Geometry.Distance circleArea = Geometry.CircleArea(3.5);
end GeometryUser;
simulate( GeometryUser )
{val(rectangleArea,0), val(triangleArea,0),
val(circlePerimeter,0),val(circleArea,0)}