A model
definition is the most generic type of definition in
Modelica. Later in the book (and even in this chapter), we’ll be
introducing other types of definitions (e.g., record
definitions) that share the same syntax as a model
definition, but
include some restrictions on what the definition is allowed to contain.
As we saw throughout this chapter, a model definition starts with the
model
keyword and is followed by a model name (and optionally a
model description). The name of the model must start with a letter
and can be followed by any collection of letters, numbers or
underscores (_
).
Naming conventions
Although not strictly required by the language. It is a convention that model names start with an upper case letter. Most model developers use the so-called “camel case” convention where the first letter of each word in the model name is upper case.
The model definition can contain variables and equations (to be
discussed shortly). The end of the model is indicated by the presence
of the end
keyword followed by a repetition of the model name.
Any text appearing after the sequence //
and until the end of the
line or between the delimiters /*
and */
is considered a
comment.
In summary, a model definition has the following general form:
model SomeModelName "An optional description"
// By convention, variables are listed at the start
equation
/* And equations are listed at the end */
end SomeModelName;
As we saw in the section on Avoiding Repetition, we can reuse code
from other models by adding an extends
clause to the model. It
is worth noting that a model definition can include multiple
extends
clauses.
Each extends
clause must include the name of the model being
extended from and can be optionally followed by modifications that are
applied to the contents of the model being extended from. In the case
of a model definition that inherits from other model definitions, you
can think of the general syntax as looking something like this:
model SpecializedModelName "An optional description"
extends Model1; // No modifications
extends Model2(n=5); // Including modification
// By convention, variables are listed at the start
equation
/* And equations are listed at the end */
end SpecializedModelName;
By convention, extends
clauses are normally listed at the very
top of the model definition, before any variables.
In later chapters, we will show how this same syntax can be used to define other entities besides models. But for now, we will focus primarily on models.