Difference between revisions of "OpenModelica/C2/Developing-an-equation-based-model/English-timed"
From Script | Spoken-Tutorial
Sandhya.np14 (Talk | contribs) |
PoojaMoolya (Talk | contribs) |
||
(One intermediate revision by one other user not shown) | |||
Line 291: | Line 291: | ||
|- | |- | ||
||06:25 | ||06:25 | ||
− | ||'''start''' is an attribute of '''Real | + | ||'''start''' is an attribute of '''Real''' variable. |
|- | |- | ||
|| 06:29 | || 06:29 | ||
− | || Every '''data-type''' has certain attributes | + | || Every '''data-type''' has certain attributes which specify useful information related to '''variables'''. |
|- | |- | ||
Line 307: | Line 307: | ||
|- | |- | ||
|| 06:45 | || 06:45 | ||
− | || '''unit | + | || '''unit''' attribute specifies the unit of a '''variable'''. |
|- | |- | ||
Line 315: | Line 315: | ||
|- | |- | ||
|| 06:52 | || 06:52 | ||
− | || Every | + | || Every variable declaration must end with a semi-colon. |
|- | |- | ||
||06:57 | ||06:57 | ||
− | || '''v''' represents '''velocity''' of ball. It is of '''Real data-type. | + | || '''v''' represents '''velocity''' of ball. It is of '''Real''' data-type. |
|- | |- | ||
Line 327: | Line 327: | ||
|- | |- | ||
|| 07:09 | || 07:09 | ||
− | || '''g'''represents | + | || '''g''' represents acceleration due to gravity. It is of '''Real''' data-type. And its unit is '''meter per second square.''' |
|- | |- | ||
|| 07:18 | || 07:18 | ||
− | || '''parameter''' is a quantity that remains constant in a simulation run. | + | || '''parameter''' is a quantity that remains constant in a '''simulation run'''. |
|- | |- | ||
Line 347: | Line 347: | ||
|- | |- | ||
|| 07:42 | || 07:42 | ||
− | ||'''Comments '''provide useful information about the program. They are also useful for documentation. | + | ||'''Comments '''provide useful information about the program. They are also useful for '''documentation'''. |
|- | |- | ||
|| 07:49 | || 07:49 | ||
− | || Now, let me go back to the | + | || Now, let me go back to the '''slide'''s. |
|- | |- | ||
Line 359: | Line 359: | ||
|- | |- | ||
|| 07:57 | || 07:57 | ||
− | ||'''Real, Integer, Boolean''' and''' String | + | ||'''Real, Integer, Boolean''' and''' String''' data-types are supported in '''Modelica'''. |
|- | |- | ||
||08:03 | ||08:03 | ||
− | ||'''start''' and '''unit | + | ||'''start''' and '''unit''' attributes have already been defined. |
|- | |- | ||
|| 08:07 | || 08:07 | ||
− | ||'''min | + | ||'''min''' attribute specifies the minimum value of a '''variable'''. |
|- | |- | ||
|| 08:10 | || 08:10 | ||
− | ||Similarly, '''max | + | ||Similarly, '''max''' attribute specifies the maximum value of a '''variable'''. |
|- | |- | ||
Line 379: | Line 379: | ||
|- | |- | ||
|| 08:19 | || 08:19 | ||
− | || '''‘equation’ '''signifies the beginning of | + | || '''‘equation’ '''signifies the beginning of equation section of a '''class'''. |
|- | |- | ||
Line 387: | Line 387: | ||
|- | |- | ||
|| 08:30 | || 08:30 | ||
− | || The two | + | || The two equations of motion for a freely falling body, as we have already discussed, have been included here. |
|- | |- | ||
Line 403: | Line 403: | ||
|- | |- | ||
|| 08:52 | || 08:52 | ||
− | || Every | + | || Every equation must end with a semi-colon. |
|- | |- | ||
Line 431: | Line 431: | ||
|- | |- | ||
||09:24 | ||09:24 | ||
− | ||Note that there are | + | ||Note that there are '''column'''s named '''Unit''' and '''Description'''. |
|- | |- | ||
|| 09:29 | || 09:29 | ||
− | ||'''Unit''' column specifies '''units''' of | + | ||'''Unit''' column specifies '''units''' of variables as defined using '''Unit''' attribute. |
|- | |- | ||
Line 447: | Line 447: | ||
|- | |- | ||
||09:51 | ||09:51 | ||
− | ||This generates the plot of '''h with respect to time''' -with '''h''' on '''y-axis''' and '''time''' on the '''x-axis''' | + | ||This generates the plot of '''h''' with respect to '''time''' -with '''h''' on '''y-axis''' and '''time''' on the '''x-axis''' |
|- | |- | ||
||10:01 | ||10:01 | ||
− | ||By default, the simulation is run from 0 to 1 unit of time. | + | ||By default, the simulation is '''run''' from 0 to 1 unit of time. |
|- | |- | ||
Line 519: | Line 519: | ||
|- | |- | ||
|| 11:33 | || 11:33 | ||
− | ||But, the value of '''h''' has gone below zero | + | ||But, the value of '''h''' has gone below zero which is unacceptable. |
|- | |- | ||
Line 543: | Line 543: | ||
|- | |- | ||
|| 12:11 | || 12:11 | ||
− | ||Now, let me delete the first '''equation''' and simulate this '''class''' | + | ||Now, let me delete the first '''equation''' and simulate this '''class''' to see what happens. |
|- | |- | ||
||12:18 | ||12:18 | ||
− | || I have deleted the first | + | || I have deleted the first equation. |
|- | |- | ||
|| 12:21 | || 12:21 | ||
− | ||Notice that a star appears beside the name of the '''class''' in '''freeFall''' tab. | + | ||Notice that a star appears beside the name of the '''class''', in '''freeFall''' tab. |
|- | |- | ||
Line 567: | Line 567: | ||
|- | |- | ||
|| 12:44 | || 12:44 | ||
− | ||You may also use the '''Save''' button in '''toolbar''' | + | ||You may also use the '''Save''' button in '''toolbar''' which my cursor points to, to save a file. |
|- | |- | ||
Line 575: | Line 575: | ||
|- | |- | ||
|| 12:59 | || 12:59 | ||
− | || Note that an error message pops up in the '''Messages browser'''. | + | || Note that an '''error message''' pops up in the '''Messages browser'''. |
|- | |- | ||
|| 13:04 | || 13:04 | ||
− | ||It says | + | ||It says: there are too few equations and the model has 1 '''equation''' and 2 '''variables'''. Hence this cannot be simulated. |
|- | |- | ||
Line 607: | Line 607: | ||
|- | |- | ||
|| 13:48 | || 13:48 | ||
− | ||There is no data flow direction for | + | ||There is no data flow direction for equations. |
|- | |- | ||
Line 615: | Line 615: | ||
|- | |- | ||
|| 14:00 | || 14:00 | ||
− | ||'''Initial equations | + | ||'''Initial equations''' section is used to enter initial conditions. |
|- | |- | ||
Line 623: | Line 623: | ||
|- | |- | ||
|| 14:10 | || 14:10 | ||
− | || As an assignment, write a '''model''' to simulate the '''differential equation | + | || As an assignment, write a '''model''' to simulate the '''differential equation, dx/dt = -a into x ''' , where '''a = 1''', '''x''' belongs to '''R''' and the value of x at time '''t=0''' is '''5'''. |
|- | |- | ||
Line 631: | Line 631: | ||
|- | |- | ||
|| 14:31 | || 14:31 | ||
− | || Watch the video at the following link. It summarizes the Spoken Tutorial project. | + | || Watch the video at the following link. It summarizes the '''Spoken Tutorial''' project. |
|- | |- | ||
Line 639: | Line 639: | ||
|- | |- | ||
|| 14:43 | || 14:43 | ||
− | || '''Spoken Tutorial project''' is funded by NMEICT, MHRD, Government of India. | + | || '''Spoken Tutorial project''' is funded by '''NMEICT, MHRD,''' Government of India. |
|- | |- |
Latest revision as of 15:22, 16 August 2019
Time | Narration |
00:01 | Welcome to the spoken tutorial on Developing an equation based model. |
00:06 | In this tutorial, we are going to learn:
how to create a textual model in OMEdit and simulate it, |
00:14 | how to declare variables and equations, |
00:17 | how to use Simulation Setup toolbox. |
00:21 | To record this tutorial, I am using OpenModelica 1.9.2 and Ubuntu Linux Operating System 14.04. |
00:32 | But, this process is identical in Windows, Mac OS X or FOSSEE OS on ARM. |
00:40 | To understand this tutorial, you need to know equation-based modeling of physical systems. |
00:48 | Let us simulate the motion of a ball of mass 'm' which is under free fall due to gravity. |
00:54 | The height of the ball from the surface of Earth is represented by variable h. |
00:59 | The velocity of the ball is represented by variable v. |
01:04 | Acceleration due to gravity is represented by g and is assumed to be constant. |
01:10 | Variables directed away from the surface of earth are considered positive. |
01:16 | The equations of motion for a freely falling body are as follows:
dh/dt = v, dv/dt = g |
01:27 | The value of h at time t = 0 is 30 meters and the value of v at time t = 0 is 0. |
01:37 | Now, let me go to OMEdit. I have already launched it on my system. |
01:43 | To open OMEdit on Ubuntu Linux Operating System, click on Dash Home icon which appears at the top left, in launcher. |
01:53 | Type OMEdit in the search bar. |
01:56 | Click on the OMEdit icon. |
01:59 | On clicking OMEdit icon, you see a window such as this. |
02:06 | This window is known as "Welcome perspective". |
02:09 | OMEdit by default, opens in the "Welcome perspective". |
02:14 | At the bottom right-hand corner, you can locate buttons for ‘Welcome’, ‘Modeling’ and ‘Plotting’ perspectives. |
02:23 | click on ‘Modeling’ perspective. |
02:26 | ‘Modeling’ perspective has now opened. |
02:29 | I will be referring to the area between Libraries Browser on the left, Messages Browser at the bottom and Toolbar on the top, as the modeling area. |
02:41 | The toolbar has buttons related to file operations, graphical view and simulation. |
02:51 | We will learn more about these buttons as we go along. |
02:55 | Now, we shall use ‘freeFall’ class file provided in the Code Files link on our Spoken Tutorial webpage. |
03:02 | Please download this file and save it on your system. |
03:07 | To open this class, go to the File menu in Menu bar. |
03:13 | Click on Open Model/Library File |
03:17 | Locate freeFall file that you downloaded and saved on your system and open it. |
03:24 | You may also use the tool named Open Model/Library File that my cursor is pointing to, for opening a file. |
03:34 | Note that freeFall icon appears in the Libraries Browser. |
03:39 | Libraries Browser shows all classes that are loaded in a session of OMEdit. |
03:45 | Right click on freeFall icon and select View Class. |
03:52 | The class has now opened in Diagram view. |
03:56 | Do not worry if the class does not open in Diagram view. |
04:00 | I shall show you how to switch between different views. |
04:04 | Go to the top of Modeling area. |
04:07 | Note that the second button stands for Diagram view. |
04:10 | Third button is Text View. |
04:13 | Click on it to switch to Text View. |
04:17 | The class has now opened in Text view. |
04:20 | Note that the first button stands for Icon View. |
04:24 | We will learn more about Icon view and Diagram view later on. |
04:29 | You may also create a new class named freeFall and type the required information. |
04:36 | To create a new class, go to File menu. |
04:40 | Select New Modelica Class. |
04:43 | A dialog box pops up as shown. |
04:46 | In the Name field of this dialog box, type: freeFall. |
04:51 | I am using a different name freeFall1 since freeFall class is already open in OMEdit. |
04:58 | Note that two classes cannot have the same name. |
05:03 | Click on Specialization drop-down menu. Select Class. Click on Ok. |
05:10 | A new class has been created. |
05:13 | You may also use the tool named New Modelica class to open a new class. |
05:20 | Let me delete annotation section. |
05:23 | Now, you may type the required information here and save this class. |
05:29 | To save this class, go to File menu in Menu bar and click on Save. |
05:36 | Choose an appropriate location for this file and save it. |
05:41 | Now, let us understand the syntax of Modelica using freeFall class. |
05:47 | So, switch to freeFall class. |
05:49 | Go to top of Modelling area. Click on freeFall tab. |
05:54 | Programs in Modelica are arranged in the form of classes. |
05:58 | The first line of a class defines its name. |
06:02 | The name of this class is freeFall. |
06:05 | Every class must have an end statement to indicate where the class ends. |
06:11 | This class has variable declarations and equations. |
06:15 | Let me show you how to declare variables. |
06:18 | Real represents data-type. |
06:21 | h represents height of ball from surface of Earth. |
06:25 | start is an attribute of Real variable. |
06:29 | Every data-type has certain attributes which specify useful information related to variables. |
06:36 | start attribute specifies the initial value of a variable. |
06:41 | The initial value of h is 30 units. |
06:45 | unit attribute specifies the unit of a variable. |
06:49 | The unit of h is metre. |
06:52 | Every variable declaration must end with a semi-colon. |
06:57 | v represents velocity of ball. It is of Real data-type. |
07:02 | The initial value of v is zero. Its unit is meter per second. |
07:09 | g represents acceleration due to gravity. It is of Real data-type. And its unit is meter per second square. |
07:18 | parameter is a quantity that remains constant in a simulation run. |
07:24 | The value of g remains constant throughout the simulation run, with a value of 9.81. |
07:32 | The negative sign is due to sign convention used. |
07:36 | The text in double quotes is a comment written with the declaration of g. |
07:42 | Comments provide useful information about the program. They are also useful for documentation. |
07:49 | Now, let me go back to the slides. |
07:52 | parameter is a quantity that remains constant in a simulation run. |
07:57 | Real, Integer, Boolean and String data-types are supported in Modelica. |
08:03 | start and unit attributes have already been defined. |
08:07 | min attribute specifies the minimum value of a variable. |
08:10 | Similarly, max attribute specifies the maximum value of a variable. |
08:16 | Let me go back to OMEdit. |
08:19 | ‘equation’ signifies the beginning of equation section of a class. |
08:25 | This is an alternative way of inserting comments. |
08:30 | The two equations of motion for a freely falling body, as we have already discussed, have been included here. |
08:38 | der() is Modelica function for time derivative. |
08:43 | Hence, der(h) represents dh/dt. |
08:48 | And der(v) represents dv/dt. |
08:52 | Every equation must end with a semi-colon. |
08:57 | Let me show you how to simulate this class. |
09:00 | Click on simulate button in the toolbar. |
09:04 | Close the pop-up window. |
09:07 | This window is known as the Plotting perspective. |
09:11 | On successful simulation of a class, Plotting perspective opens automatically. |
09:17 | Variables browser displays information related to variables and parameters of a class. |
09:24 | Note that there are columns named Unit and Description. |
09:29 | Unit column specifies units of variables as defined using Unit attribute. |
09:37 | Description column displays comments written in double quotes with variable declarations. |
09:45 | Let me show you how to generate a plot. Select h. |
09:51 | This generates the plot of h with respect to time -with h on y-axis and time on the x-axis |
10:01 | By default, the simulation is run from 0 to 1 unit of time. |
10:07 | The unit of time depends on the system of units used for other variables. |
10:13 | Let me de-select h. |
10:17 | It is always a good practice to delete the results, once the necessary plots have been generated. |
10:25 | To delete this result, right-click on freeFall and select Delete result. |
10:33 | The result has now been deleted. |
10:36 | Let me go back to Modeling perspective. |
10:39 | Click on Modeling button at bottom-right. |
10:43 | class is used synonymously with model, in Modelica. |
10:48 | One may use model instead of class here, to produce the same effect. |
10:54 | Now, let me show you how to change the time interval for simulation. |
11:01 | Click on Simulation Setup button present in the toolbar. |
11:06 | Under General tab, locate Stop time field. Change it to 5 units. |
11:14 | Click on Simulate. Close the pop-up window which appears. |
11:21 | Let me select h once again, in the Variables browser. |
11:26 | This generates h v/s time plot. |
11:29 | Notice that the time interval has increased to 5 units. |
11:33 | But, the value of h has gone below zero which is unacceptable. |
11:40 | We will learn how to rectify this issue in the later tutorials. |
11:45 | Let me delete this result by right-clicking on freeFall and selecting Delete result. |
11:53 | Go back to Modeling perspective by clicking on Modeling perspective at bottom-right. |
11:59 | It is necessary to ensure that the number of equations is equal to the number of variables. |
12:07 | This class has two variables and two equations. |
12:11 | Now, let me delete the first equation and simulate this class to see what happens. |
12:18 | I have deleted the first equation. |
12:21 | Notice that a star appears beside the name of the class, in freeFall tab. |
12:28 | This indicates unsaved changes in the class. |
12:31 | Hence it is a good practice to save a class after a change has been made. |
12:38 | To save this class, go to the File menu and click on Save. |
12:44 | You may also use the Save button in toolbar which my cursor points to, to save a file. |
12:53 | Now, let me simulate this class by clicking on Simulate button. |
12:59 | Note that an error message pops up in the Messages browser. |
13:04 | It says: there are too few equations and the model has 1 equation and 2 variables. Hence this cannot be simulated. |
13:14 | Let me insert the equation back in its place and click on Save button in the toolbar. |
13:24 | Click on Simulate button once again to simulate this class. |
13:29 | Note that the class simulates successfully, since the number of equations is equal to the number of variables. |
13:37 | Close the pop-up window. |
13:40 | Let me go back to the slides. |
13:43 | “der()” is Modelica function for time derivative. |
13:48 | There is no data flow direction for equations. |
13:52 | For example, der(h) = v may also be written as v = der(h). |
14:00 | Initial equations section is used to enter initial conditions. |
14:05 | We shall learn more about Initial equation later on. |
14:10 | As an assignment, write a model to simulate the differential equation, dx/dt = -a into x , where a = 1, x belongs to R and the value of x at time t=0 is 5. |
14:28 | This brings us to the end of this tutorial. |
14:31 | Watch the video at the following link. It summarizes the Spoken Tutorial project. |
14:37 | We conduct workshops using spoken tutorials; give certificates. Please contact us. |
14:43 | Spoken Tutorial project is funded by NMEICT, MHRD, Government of India. |
14:49 | We thank the development team of OpenModelica for their support. |
14:53 | Thank you. |