OpenModelica/C3/Modelica-Packages/English-timed
From Script | Spoken-Tutorial
Time | Narration |
00:01 | Welcome to the Spoken Tutorial on Packages. |
00:05 | In this tutorial, we are going to learn:
how to create a package of classes in Modelica, |
00:12 | how to reference classes in a package, |
00:16 | how to import a package and
how to use Modelica Library. |
00:22 | To record this tutorial, I am using : OpenModelica 1.9.2 and Ubuntu Operating System version 14.04 and gedit. |
00:35 | Windows users may use Notepad or any other text-editor instead of gedit. |
00:42 | To understand and practice this tutorial, you need Knowledge of class and type definition in Modelica |
00:51 | Prerequisite tutorials are mentioned on our website. Please go through them. |
00:56 | A Package is a specialized class in Modelica. |
01:01 | It is a collection of classes. |
01:04 | It can be stored as a single file or a directory. |
01:08 | We will first learn about single file storage. |
01:12 | In single file storage, all classes belonging to a package are written in a single file. |
01:20 | It is not recommended as it may get lengthy in a few cases. |
01:24 | Now, let me switch to OMEdit to demonstrate single file storage for a package. |
01:31 | Please download and save all the files available on our website. |
01:36 | You may see that there is a file and a folder bearing the name spokenTutorialExamples. |
01:43 | Please download both of them. |
01:46 | Now, let me open the necessary files in OMEdit. |
01:51 | Press Ctrl + O. |
01:54 | Go to the appropriate location on your system and select spokenTutorialExamples.mo, |
02:02 | bouncingBallWithUserTypes.mo and bouncingBallWithImport. |
02:08 | You may also open each of them individually. |
02:12 | Note that I have not selected spokenTutorialExamples folder. |
02:17 | We shall discuss more about it when we look at directory storage. |
02:23 | Click on Open. |
02:25 | You may see that spokenTutorialExamples package is now seen in Libraries Browser. |
02:32 | Double-click on spokenTutorialExamples icon. |
02:37 | Switch to Text View if the file opens in Icon/Diagram View. |
02:42 | Now, let me discuss spokenTutorialExamples. |
02:47 | First line defines the name of a package. |
02:51 | Evidently, name of this package is spokenTutorialExamples. |
02:56 | This package consists of freefall class, bouncingBall model and bouncingBallWithUserTypes models. |
03:08 | end statement defines where the package ends. |
03:13 | We have viewed all classes and models of this package at one place. |
03:19 | Now, let us learn how to view individual classes in a package. |
03:24 | Click on the plus (+) button besides spokenTutorialExamples icon, in Libraries Browser. |
03:31 | This displays the names of classes present in this package. |
03:36 | Double-click on freeFall in Libraries Browser. |
03:40 | freeFall class has now opened. |
03:43 | Individual classes of a package may be simulated. |
03:47 | But the package itself can not be simulated. |
03:52 | Let me go back to spokenTutorialExamples tab. |
03:57 | Note that Simulate button doesn’t appear in the toolbar which indicates that this package cannot be simulated. |
04:06 | Now let me unload spokenTutorialExamples from OMEdit. |
04:12 | Do a right-click and select unload. Select Yes. |
04:18 | This is done so as to avoid conflict when demonstrating directory storage. |
04:24 | Now let me go back to the slides. |
04:27 | In Directory storage, classes are stored in separate files. |
04:32 | Name of directory is same as that of the package. |
04:37 | A file named package.mo is to be included in the directory and each class starts with a within statement. |
04:47 | Now, let me demonstrate the folder spokenTutorialExamples that you’ve downloaded. |
04:54 | Note that this folder represents the same package as that we have already discussed. |
05:02 | Let me demonstrate the file structure of this folder. |
05:06 | Go to the location where you saved the downloaded files on your system. |
05:12 | Double-click on spokenTutorialExamples folder. |
05:17 | Notice that the folder has following files: package.mo, freeFall.mo, bouncingBallWithUserTypes and bouncingBall. |
05:30 | We shall understand more about directory storage using both OMEdit and gedit. |
05:38 | Note that package.mo indicates that this folder represents a package. |
05:45 | Without this file, the folder doesn’t represent a Modelica package. |
05:51 | Now, let me switch to OMEdit to demonstrate directory storage. |
05:57 | Press Ctrl + O. |
05:59 | Navigate to the spokenTutorialExamples folder that you have downloaded. |
06:05 | Select package.mo from this folder and click on Open. |
06:11 | spokenTutorialExamples package can now be seen in Libraries Browser. |
06:17 | Double-click on spokenTutorialExamples icon. |
06:22 | Open the package in Text View if it opens in either Icon/Diagram View. |
06:27 | If you scroll down, you may notice that this package is the same as that we have seen in single file storage. |
06:36 | The difference between single file and directory storage can only be understood when we open this package using a text editor like gedit. |
06:47 | You may use Notepad or any other text editor if you are using Windows. |
06:53 | Now, let me unload spokenTutorialExamples package from 'OMEdit. |
06:59 | Switch to spokenTutorialExamples folder and open all the files using gedit. |
07:08 | Now all the files are open in gedit. |
07:13 | Let us take a look at package.mo first. |
07:17 | within statement indicates that this file represents a package. |
07:21 | Name of this package is spokenTutorialExamples. |
07:25 | Note that the name of folder was spokenTutorialExamples as well. |
07:31 | package.mo file can only contain the within statement and package declaration. |
07:38 | Let me switch to freeFall tab. |
07:41 | This within statement indicates that freefall class belongs to spokenTutorialExamples package. |
07:49 | Rest of this file has information specific to freeFall class. |
07:54 | You may see that other models in this package namely bouncingBallWithUserTypes and bouncingBall follow a similar syntax as well. |
08:04 | But, we didn’t observe within statement when we opened the package in OMEdit. |
08:11 | This indicates that within statement helps OMEdit recognize the file structure. |
08:17 | Hence, it is omitted by OMEdit while displaying the package. |
08:22 | Let me go back to the slides. |
08:25 | We shall now understand more about Modelica Library. |
08:29 | Modelica Library is an open-source package. |
08:33 | OMEdit automatically loads it for every session. |
08:38 | It can be seen in Libraries Browser. |
08:41 | It has classes from mechanical, electrical and thermal domains. |
08:46 | Classes of this library can be referenced and used. |
08:51 | Now, let me switch to OMEdit to demonstrate Modelica Library. |
08:57 | Locate Modelica icon in Libraries Browser and expand it. |
09:03 | Note that Modelica Library has packages named Blocks, Complex Blocks etc. |
09:10 | You may note that a package may further contain packages as well as is evident here. Of special mention is the SIunits package. |
09:22 | Expand it. |
09:25 | This package has type definitions for physical quantities like Angle, Length, Position etc. |
09:32 | We shall see how to use these type definitions using bouncingBallWithImport class. |
09:39 | Compress SIunits. |
09:42 | And double-click on bouncingBallWithImport and bouncingBallWithUserTypes. |
09:49 | Let me shift OMEdit window to the left for better visibility. |
09:55 | We shall first look at bouncingBallWithUserTypes. |
09:59 | We have learnt about this model in the prerequisite tutorials. |
10:03 | This model has type definitions named Length and Velocity. |
10:09 | We can instead use the type definition in SIunits instead of defining them explicitly in every model. |
10:18 | We shall see how to do that using bouncingBallWithImport model. |
10:23 | Let me switch to bouncingBallWithImport. |
10:27 | A class in a package is referenced to using dot. |
10:32 | Modelica.SIunits refers to SIunits package which belongs to Modelica library. |
10:39 | Variable h is declared to be of Length type which is defined in SIunits package. |
10:47 | Similarly, variable v is declared to be of Velocity type which is defined in SIunits package. |
10:56 | Note that parameters radius and g are declared in a similar fashion. |
11:03 | Now let me Simulate this model. |
11:07 | Click on Simulate button in the toolbar. |
11:10 | Close the pop-up window. |
11:13 | Select h in the Variables Browser. |
11:17 | Note that the plot obtained is similar to the one seen in the case ofbouncingBallWithUserTypes. |
11:25 | Let me de-select h. Delete the result. Switch to Modeling perspective. |
11:33 | It is tedious to use the full name of a class every time. |
11:38 | This can be simplified using import statement. |
11:42 | Now, we shall type a few statements that show the use of import. |
11:48 | The statements to be typed are provided in a text file named import-statements.txt. |
11:56 | Go to the location where you saved it on your system. |
12:01 | Double-click on import-statements.txt. Windows users may use Notepad to open this file. |
12:11 | The file is now open in gedit. |
12:14 | Copy all the statements using Ctrl+C or by doing right-click. |
12:21 | Switch to OMEdit. |
12:23 | Paste all the statements at the beginning of the model. |
12:28 | Delete the declaration statements for Length and Velocity, which have been defined before. |
12:36 | Delete the extra spaces. |
12:39 | Save this model by pressing Ctrl + S. |
12:43 | Now the model is complete and ready for simulation. |
12:48 | Click on Simulate button to simulate it. |
12:52 | Close the pop-up window. |
12:54 | Select h in the Variables Browser. |
12:58 | Note that the plot is same as in previous case. |
13:03 | De-select h and delete the result. |
13:07 | Switch to Modeling perspective. |
13:10 | Now let us now try to understand the import statements. |
13:15 | Using the import statements, Modelica looks up for Length and Velocity type definitions using the path mentioned here. |
13:25 | This saves the trouble of referring to the package every time. |
13:30 | A detailed discussion of lookup rules is beyond the scope of this tutorial. |
13:36 | Now let us see how we can replace these two import statements by a single import statement. Delete the two statements. |
13:47 | And type: import space Modelica dot SIunits dot asterisk semicolon |
13:58 | Save this model by pressing Ctrl + S |
14:02 | This statement is known as a wild-card import. |
14:06 | This way, any class from SIunits may be accessed without explicitly mentioning it. |
14:14 | Now let me Simulate this model. |
14:17 | Click on Simulate button. |
14:20 | Close the pop- up window. |
14:22 | Select h in the Variables Browser. |
14:25 | You may notice the similarity of plot once again. |
14:29 | De-select h and delete the result. |
14:32 | Go back to Modeling perspective. |
14:35 | Now let me switch to the slides. |
14:38 | As an assignment, declare variable h and v of freeFall class as Length and Velocity types respectively. |
14:47 | These type definitions can be found in SIunits package of Modelica library. |
14:54 | This brings us to the end of this tutorial. |
14:58 | Watch the video available at the link shown below: |
15:02 | It summarises the Spoken Tutorial project. |
15:05 | If you have questions in this Spoken Tutorial, please visit the website shown. |
15:11 | We coordinate coding of solved examples from popular books. |
15:15 | We give honorarium to contributors. Please visit our website. |
15:21 | We help migrate labs from commercial simulators to OpenModelica. |
15:26 | Please visit the following website. |
15:29 | Spoken Tutorial Project is supported by NMEICT, MHRD Government of India. |
15:36 | We thank the development team of OpenModelica for their support. |
15:41 | I would like to thank you for joining me in this tutorial.
Good bye. |