Modelica.UsersGuide.Conventions.ModelicaCodeIn this section guidelines on creating Modelica code are provided.
Extends from Modelica.Icons.Information (Icon for general information packages).
| Name | Description |
|---|---|
| Format | |
| Naming convention | |
| Parameter defaults |
Modelica.UsersGuide.Conventions.ModelicaCode.Format
Comments and annotations should start with a capital letter, for example:
parameter Real a = 1 "Arbitrary factor";.
For Boolean parameters, the description string should start with "= true, …", for example:
parameter Boolean useHeatPort = false "= true, if heatPort is enabled";.
The annotations "tab" and "group" define the placement of component or of variables in a dialog.
Using the group annotation, the following rules shall be followed:
Using the tab annotation, the following rules shall be followed:
Imagine you define a controlled electric drive being composed of a controller and an electrical machine. The latter has parameters number of pole pairs p, nominal frequency fnom, rotor's moment of inertia Jrotor and others. The controller itself is divided into several sub-controllers – such as the one for speed control with parameters like gain k or time constant T. Then, the above parameters of your electrical drive model could be sorted using tabs and groups as follows: p, fnom and Jrotor grouped in the "Electrical machine" group in the "general" tab; k and T in the group "Speed control" under tab "Controller".
In the Modelica code, for example the parameter k will then be defined like:
parameter Real k=1 "Gain"
annotation(
Dialog(
tab="Controller",
group="Speed control"));
Trailing white-space (i.e., white-space at the end of the lines) shall not be used. The tab-character shall not be used, since the tab-stops are not standardized.
The code in a class shall be indented relative to the class in steps of two spaces;
except that the headings public, protected, equation,
algorithm, and end of class marker shall not be indented.
The keywords public and protected are headings for a group
of declarations.
Long modifier lists shall be split into several indented lines with at most one modifier per line.
Full class definitions shall be separated by an empty line.
package MyPackage
partial model BaseModel
parameter Real p;
input Real u(unit="m/s");
protected
Real y;
Real x(
start=1,
unit="m",
nominal=10);
equation
der(x) = u;
y = 2*x;
end BaseModel;
model ModelP2
extends BaseModel(p=2);
end ModelP2;
end MyPackage;
Extends from Modelica.Icons.Information (Icon for general information packages).
Modelica.UsersGuide.Conventions.ModelicaCode.NamingT for a temperature variable)._a, _b
or _p, _n, e.g., Flange_a, Flange_b,
HeatPort_a, HeatPort_b.In the following table typical variable names are listed. This list should be completed.
| Variable | Quantity |
|---|---|
| a | acceleration |
| A | area |
| C | capacitance |
| d | damping, density, diameter |
| dp | pressureDrop |
| e | specificEntropy |
| E | energy, entropy |
| eta | efficiency |
| f | force, frequency |
| G | conductance |
| h | height, specificEnthalpy |
| H | enthalpy |
| HFlow | enthalpyFlow |
| i | current |
| J | inertia |
| l | length |
| L | Inductance |
| m | mass |
| M | mutualInductance |
| mFlow | massFlow |
| p | pressure |
| P | power |
| Q | heat |
| Qflow | heatFlow |
| r | radius |
| R | radius, resistance |
| t | time |
| T | temperature |
| tau | torque |
| U | internalEnergy |
| v | electricPotential, specificVolume, velocity, voltage |
| V | volume |
| w | angularVelocity |
| X | reactance |
| Z | impedance |
Extends from Modelica.Icons.Information (Icon for general information packages).
Modelica.UsersGuide.Conventions.ModelicaCode.ParameterDefaultsIn this section the convention is summarized how default parameters are handled in the Modelica Standard Library (since version 3.0).
Many models in this library have parameter declarations to define constants of a model that might be changed before simulation starts. Example:
model SpringDamper parameter Real c(final unit="N.m/rad") = 1e5 "Spring constant"; parameter Real d(final unit="N.m.s/rad") = 0 "Damping constant"; parameter Modelica.Units.SI.Angle phi_rel0 = 0 "Unstretched spring angle"; ... end SpringDamper;
In Modelica it is possible to define a default value of a parameter in the parameter declaration. In the example above, this is performed for all parameters. Providing default values for all parameters can lead to errors that are difficult to detect, since a modeler may have forgotten to provide a meaningful value (the model simulates but gives wrong results due to wrong parameter values). In general the following basic situations are present:
To handle the conflicting goals of (1) and (3), the Modelica Standard Library uses two approaches to define default parameters, as demonstrated with the following example:
model SpringDamper parameter Real c(final unit="N.m/rad" , start = 1e5) "Spring constant"; parameter Real d(final unit="N.m.s/rad", start = 0) "Damping constant"; parameter Modelica.Units.SI.Angle phi_rel0 = 0 "Unstretched spring angle"; ... end SpringDamper; SpringDamper sp1; // warning for "c" and "d" SpringDamper sp2(c=1e4, d=0); // fine, no warning
Both definition forms, using a "start" value (for "c" and "d") and providing a declaration equation (for "phi_rel0"), are valid Modelica and define the value of the parameter. By convention, it is expected that Modelica translators will trigger a warning message for parameters that are not defined by a declaration equation, by a modifier equation or in an initial equation/algorithm section. A Modelica translator might have options to change this behavior, especially, that no messages are printed in such cases and/or that an error is triggered instead of a warning.
Extends from Modelica.Icons.Information (Icon for general information packages).
Automatically generated Tue Feb 24 16:58:53 2026.