// Some code samples
// to check if the applied style is correct
within foo.bar;
// Let's check some class with a quoted identifier
final
encapsulated partial operator record
'Quoted record "whatever"' "Quoted record"
/* Few imports */
import Foo.Bar "Foo import"
annotation(ignore = false);
import Baz = Foo.Baz;
import Bar.*;
import Bark.{Foo,Bar, Baz};
import Ark.{
Bar, Baz};
// Some extension
extends .Bark.Bark()
annotation();
// Now some other class specifiers!
inner outer record Inner=der(.Foo.Baz, Foo,bar) "Der?";
redeclare final inner package Foo = input
Foo.Bar[1,2](x=2+3) "Foo";
protected // Now protected section
flow constant Foo.Baz Bar=2, Baar; parameter Real Foo(start=2, fixed=false),
Bar if false;
annotation(Icon());
end 'Quoted record "whatever"';
// Now some model!
final partial model FooModel
"Foo model"
extends .Bark.Bark(break connect(a.b ,c),break Baz,
anotherUselessVar = break);
// Some conditional expressions
parameter Real[1] foo = if bar then 2 elseif baz then 3 else 4;
Integer[1, 3, 4] bar =if true then
1 elseif baz<2 then 3 else 2;
Real smallest=(Modelica.Math.Vectors.sort({4,2,5,1}))[1];
protected
// Here we have two comments
/*
And they are separated
with a single blank line
*/
String A = toString([2.12,-4.34;-2.56, - 1.67] );
SI.Length[3] 'length of "whatever"'(start = 0,
min = -1, max = 1, nominal=0) = { 1* 0.25 for i in 1 : 3};
public
redeclare Foo x(y=z) = Bar
annotation (Placement(
transformation(
extent={{-20,-10},{20,10}},rotation=90,
origin={-98,4}), iconTransformation(extent={{-40,-10},{40,10}},
rotation=90,
origin={-68,0})));
initial equation
if foo == Types.Dynamics.FixedInitial then
bar = bar_start; elseif foo == Types.Dynamics.SteadyStateInitial then
der(bar) = 0; end if;
equation
a = -b*c "Equation";
x* ( -y) =2^z / (m- n);
foo =if bar then 0 else
3;
foo = bar(x,y=y,z=baz(
a,
b));
/* If-else blocks */
if foo then
// comment
bar = baz * bar;
else
bar = 0;// another
end if;
if a<b then
if x < 0 then
m = n;
elseif x <y then
m = 2*n;
else
m=0;
end if;
else
m = n^2;
end if;
/* For loop */
for i in 1:n loop
h[i]=c[i] * T[i];
end for;
for i in 1:m loop
for j in 1:n loop
connect(a[i], b[i, k]);
end for;
end for;
/* Wrapped equations */
foo =foo*pi
* bar^2/4;
foo = bar * baz*(bark
- bam);
/* Nested wrapping */
a_nominal = Z_factor * func_a(foo = b_nominal, bar = c)
* Av * Y * func_b(
x_nominal * p_nominal * d_nominal,
x_small = d_limit
* d_small)
"Description";
/* Arrays */
volumes = {diameter[i] * diameter[i]
* 0.25 * length[i] for i in 1:n};
foo = sum(bar[i] - baz[i]
for i in 1:10);
points={{-98,-60},{-64,
-60},{-64,-63.4667},{-27.1111,-63.4667}};
foo = (bar - 1) ^ 3
*(1-(baz + 12) / (10 * (baz + 1)) + sum(
(1 - 2 * (foo - k) / ((foo + 1) * k * (k + 1))) * 1 / (k - 1) * ((bar - 1) / r) ^ (k - 3)
for k in 1:42));
/* Matrices */
extent = [-10, 110; 10, 90];
extent = [
-10, 110; 10, 90];
a[:,:]=[1,1,1,1,1; 2,2,2,
2,2];
m[:,:] = Math.Matrices.sort(
[
Math.Vectors.length(v1),
Math.Vectors.length(v2);
Math.Vectors.length(v1 + v2),
Math.Vectors.length(v2 - v1)
]);
end FooModel;
// And now functions!
final pure function Foo "Return something"
extends .Modelica.Icons.Function
;
input Integer a "Aaa";
output Real result "Length";
protected
Real b "Bbb";
parameter Integer control = 0 annotation (choices(choice = 0 "Foo", choice = 1 "Bar"));
algorithm
(A,B,C):= foo.bar.baz
(a);
(D,,E) := foo.bar .baz(b);
(, G,(H,
J)) := foo.bar.baz(c);
foo:={{bar[i] + j*
(baz[i] - ber[i])/n for i in 1:n} for j in 1:m};
bar:={{foo[i] + j*(baz[i] - foo[i])/n
for i in 1:n}
for j in 1:m};
baz := aaa
+ bbb * (ccc + ddd-
eee)
- fff * ggg;
external"C" foo[1].bar [2] = baz(x
,y,z)
annotation (Library="doesn't matter");
annotation (smoothOrder = 2);
end Foo;
impure function Baz "To check annotations after empty sections"
algorithm
annotation ();
end Baz;
function Baz "To check annotations after decriptions"
annotation ();
end Baz;
function Extern "To check annotations to external functions"
external
annotation ();
annotation ();
end Extern;
partial function Bar "Just in case"
initial algorithm
x := y;
/* If statement */
foo := if a == 1 then bar
else baz
"What is this about?";
/* Multiline statements */
y := u1 > 0
and u2 > 0 and
u3 > 0
and u4 > 0;
y := u1 > 0
or u2 > 0 or
u3 > 0
or u4 > 0;
Modelica.Utilities.Streams.print(
"foo" + "bar"
+ "baz");
end Bar;
// And some enums
type Foo=enumeration(Foo1, foo2) "foo enum";
type Foo=enumeration(Foo1,
foo2) "foo enum";
type Foo=enumeration(Foo1 "foo1", foo2) "foo enum with description of one element";