Difference between revisions of "OpenModelica/C2/Functions-and-Types/English-timed"
From Script | Spoken-Tutorial
Sandhya.np14 (Talk | contribs) |
Sandhya.np14 (Talk | contribs) |
||
Line 58: | Line 58: | ||
|- | |- | ||
|| 01:15 | || 01:15 | ||
− | || Now let us write a '''function''' named '''polynomialEvaluator''' which takes '''x''' as input and returns '''f(x) = a x (squared) (plus) b x (plus) c''' where '''a=1, b=2''' and '''c=1''' | + | || Now let us write a '''function''' named '''polynomialEvaluator''' which takes '''x''' as input and returns '''f(x) = a x (squared) (plus) b x (plus) c''' where '''a=1, b=2''' and '''c=1''' as output. |
|- | |- | ||
Line 162: | Line 162: | ||
|- | |- | ||
|| 04:14 | || 04:14 | ||
− | || In an '''assignment''' statement the value of right hand side is assigned to the left hand side. | + | || In an '''assignment''' statement, the value of right hand side is assigned to the left hand side. |
|- | |- | ||
Line 170: | Line 170: | ||
|- | |- | ||
|| 04:25 | || 04:25 | ||
− | ||In this case '''fx''' is an unknown variable. | + | ||In this case, '''fx''' is an unknown variable. |
|- | |- | ||
Line 214: | Line 214: | ||
|- | |- | ||
|| 05:31 | || 05:31 | ||
− | || Now let us simulate this '''class'''. | + | || Now, let us '''simulate''' this '''class'''. |
|- | |- | ||
|| 05:34 | || 05:34 | ||
− | ||To simulate this '''class''' you may right click on '''functionTester''' icon in '''Libraries Browser''' and select '''Simulate'''. | + | ||To simulate this '''class''', you may right click on '''functionTester''' icon in '''Libraries Browser''' and select '''Simulate'''. |
|- | |- | ||
Line 266: | Line 266: | ||
|- | |- | ||
|| 06:45 | || 06:45 | ||
− | ||Before viewing that '''function''' let me close the tabs of '''PolynomialEvaluator''' and '''FunctionTester'''. | + | ||Before viewing that '''function''', let me close the tabs of '''PolynomialEvaluator''' and '''FunctionTester'''. |
|- | |- | ||
Line 306: | Line 306: | ||
|- | |- | ||
|| 07:51 | || 07:51 | ||
− | || Now let me switch to '''multipleFunctionTester''' tab. | + | || Now, let me switch to '''multipleFunctionTester''' tab. |
|- | |- | ||
Line 314: | Line 314: | ||
|- | |- | ||
|| 08:01 | || 08:01 | ||
− | || '''multiplePolynomialEvaluator''' function is called with an '''input''' | + | || '''multiplePolynomialEvaluator''' function is called with an '''input argument''' of '''10''' units. |
|- | |- | ||
Line 330: | Line 330: | ||
|- | |- | ||
|| 08:37 | || 08:37 | ||
− | ||Now let me simulate this '''class'''. | + | ||Now let me '''simulate''' this '''class'''. |
|- | |- | ||
Line 338: | Line 338: | ||
|- | |- | ||
|| 08:46 | || 08:46 | ||
− | || Select ''' | + | || Select '''y''' and '''z''' in the '''variables browser'''. |
|- | |- | ||
Line 354: | Line 354: | ||
|- | |- | ||
|| 09:11 | || 09:11 | ||
− | ||Delete '''(y,z)''' and type '''(z,y)''' | + | ||Delete '''(y,z)''' and type '''(z,y)''' |
|- | |- | ||
Line 362: | Line 362: | ||
|- | |- | ||
|| 09:22 | || 09:22 | ||
− | ||Simulate this '''class''' once again. Close the pop up window. | + | ||Simulate this '''class''' once again. Close the pop-up window. |
|- | |- | ||
Line 426: | Line 426: | ||
|- | |- | ||
|| 10:54 | || 10:54 | ||
− | ||'''Attributes''' of Modelica data-types like '''unit''' | + | ||'''Attributes''' of Modelica data-types like '''unit''' and '''start''' can be changed accordingly. |
|- | |- | ||
|| 11:01 | || 11:01 | ||
− | ||For example, in the above case '''velocity''' is defined to be the same as '''real | + | ||For example, in the above case '''velocity''' is defined to be the same as '''real''' data type. |
|- | |- | ||
|| 11:08 | || 11:08 | ||
− | ||But its unit modified to '''m/s'''. | + | ||But its unit modified to '''meter per second (m/s)'''. |
|- | |- | ||
|| 11:12 | || 11:12 | ||
− | ||I have created a '''model''' named '''bouncingBallWithUserTypes''' to simulate type definitions. | + | ||I have created a '''model''' named '''bouncingBallWithUserTypes''' to simulate '''type''' definitions. |
|- | |- | ||
Line 454: | Line 454: | ||
|- | |- | ||
|| 11:35 | || 11:35 | ||
− | ||Please go through | + | ||Please go through the per-requisite tutorials to understand '''bouncingBall''' model. |
|- | |- | ||
|| 11:41 | || 11:41 | ||
− | || '''Length''' is defined as '''Real''' datatype | + | || '''Length''' is defined as '''Real''' datatype with its unit modified to '''meter (m) '''. |
|- | |- | ||
|| 11:47 | || 11:47 | ||
− | || Similarly '''Velocity''' is defined as '''Real''' with | + | || Similarly '''Velocity''' is defined as '''Real''' with its unit modified to '''meter per second (m/s)''' . |
|- | |- | ||
Line 474: | Line 474: | ||
|- | |- | ||
|| 12:02 | || 12:02 | ||
− | || Similarly '''v''' represents velocity of ball. | + | || Similarly, '''v''' represents velocity of ball. |
|- | |- | ||
Line 486: | Line 486: | ||
|- | |- | ||
|| 12:18 | || 12:18 | ||
− | ||Now let me '''simulate''' this. Close the pop up window. | + | ||Now let me '''simulate''' this. Close the pop-up window. |
|- | |- | ||
|| 12:24 | || 12:24 | ||
− | || In the '''Variables Browser''' notice that '''h''' and '''v''' have their respective | + | || In the '''Variables Browser''', notice that '''h''' and '''v''' have their respective '''unit'''s associated with their data-types. |
|- | |- | ||
Line 506: | Line 506: | ||
|- | |- | ||
|| 12:46 | || 12:46 | ||
− | || Now let me go back to the slides. | + | || Now, let me go back to the slides. |
|- | |- | ||
||12:49 | ||12:49 | ||
− | || As an assignment breach the restrictions on functions and observe the | + | || As an assignment, breach the restrictions on functions and observe the '''error'''s produced. |
|- | |- | ||
Line 518: | Line 518: | ||
|- | |- | ||
||12:59 | ||12:59 | ||
− | || Watch the video available at following link. '''http://spoken-tutorial.org/ | + | || Watch the video available at following link. |
+ | '''http://spoken-tutorial.org/ What_is_a_Spoken_Tutorial''' | ||
+ | It summarizes the '''Spoken Tutorial project'''. | ||
|- | |- | ||
||13:05 | ||13:05 | ||
− | || We | + | || We conduct workshops using spoken tutorials. Please contact us. |
|- | |- | ||
Line 530: | Line 532: | ||
|- | |- | ||
|| 13:15 | || 13:15 | ||
− | || We coordinate coding of solved examples of popular books.Please visit the websites for more information. | + | || We coordinate coding of solved examples of popular books. Please visit the websites for more information. |
|- | |- |
Latest revision as of 19:26, 18 August 2018
Time | Narration |
00:01 | Welcome to the spoken tutorial on Functions and Types. |
00:06 | In this tutorial, we are going to learn:
how to define a function, |
00:12 | how to use algorithm,
how to define a type. |
00:17 | To record this tutorial, I am using OpenModelica 1.9.2 and Ubuntu operating system version 14.04 |
00:27 | But this process is identical in Windows, Mac OS X or FOSSEE OS. |
00:35 | To understand this tutorial, you need to know how to define a class in Modelica. |
00:41 | You need knowledge of functions in any programming language. |
00:46 | Pre-requisite tutorials are mentioned on our website. please go through them. |
00:52 | Let us discuss a function now. |
00:55 | function is a specialized class that can take input and return output. |
01:01 | It contains algorithm section. |
01:04 | A function cannot contain equations and it cannot be simulated. |
01:10 | The syntax of a function is as shown. |
01:15 | Now let us write a function named polynomialEvaluator which takes x as input and returns f(x) = a x (squared) (plus) b x (plus) c where a=1, b=2 and c=1 as output. |
01:36 | polynomialEvaluator file is available on our website. |
01:40 | Please download and save all the files available in Code Files link. |
01:46 | To demonstrate polynomialEvaluator function, let me go to OMEdit. |
01:52 | OMEdit is now open in Welcome perspective. |
01:56 | You are only seeing a part of the OMEdit window since I have zoomed in. |
02:02 | I shall show you the relevant portions by shifting the window whenever necessary. |
02:09 | To open the files that you have downloaded, click on Open Model/Library File tool. |
02:16 | I have saved all the files in a folder. |
02:19 | Let me select them together and click on open. |
02:24 | If we have saved these files in different folders, you may open each one of them individually. |
02:31 | Note that the following classes or functions are now open in OMEdit: bouncingBallWithUserTypes , functionTester ,multipleFunctionTester, multiplePolynomialEvaluator and polynomialEvaluator. |
02:51 | To open polynomialEvaluator function and view it, Right-click on the icon in Libraries Browser and select View Class. |
03:02 | If the function doesn’t open in Text View, open it in Text View. |
03:08 | Name of this function is polynomialEvaluator as we have already discussed. |
03:14 | x is a real variable. |
03:17 | input is a keyword which is used to specify input variables. |
03:22 | Similarly, output is a keyword which is used to specify output variables. |
03:28 | fx is a real variable which represents f(x). |
03:33 | Any variable or parameter which is neither input nor output is specified using protected keyword. |
03:42 | a is a real parameter with a value of 1. |
03:47 | The values of a, b and c are as discussed in the slides already. |
03:53 | Please note that a, b and c are protected parameters. |
03:59 | Algorithm represents the beginning of algorithm section of a function. |
04:05 | Algorithm section may contain assignment statements only. |
04:10 | This sign indicates assignment. |
04:14 | In an assignment statement, the value of right hand side is assigned to the left hand side. |
04:20 | The left hand side is usually an unknown expression. |
04:25 | In this case, fx is an unknown variable. |
04:29 | The value of right hand side expression here can be calculated if the value of x is known. |
04:36 | x is usually passed as an input argument to the function whenever it is called. |
04:43 | Now let us see how to call a function using functionTester class. |
04:49 | functionTester icon can already be seen in Libraries Browser since I have already opened it. |
04:56 | To open this class, double-click on its icon. |
05:01 | This is an alternative way of viewing a class. |
05:05 | you may also right click on its icon and select View Class. |
05:11 | z is a real variable. |
05:14 | polynomialEvaluator function is called with an input argument of 10 units and it is equated to z. |
05:23 | The input value (variable) of polynomialEvaluator that is x takes the value of 10 units. |
05:31 | Now, let us simulate this class. |
05:34 | To simulate this class, you may right click on functionTester icon in Libraries Browser and select Simulate. |
05:45 | The class has now simulated. |
05:47 | You may also use the Simulate button in toolbar to simulate a class. |
05:53 | Now let me show you the Plotting perspective completely by shifting OMEdit window to the left. |
06:00 | Select z in the variables browser |
06:04 | Note that the value of z is equal to the value of f(x) at x = 10. |
06:12 | Now let me de-select z and delete this result. |
06:18 | Let me go back to Modeling perspective. |
06:21 | Click on polynomialEvaluator tab at the top. |
06:25 | Notice that polynomialEvaluator function has only one output variable. |
06:31 | Now let me show you how to output two or more variables using a function. |
06:38 | I have created a function named multiplePolynomialEvaluator which has two output variables. |
06:45 | Before viewing that function, let me close the tabs of PolynomialEvaluator and FunctionTester. |
06:54 | Since the Libraries Browser is not visible, let me shift the window to the right. |
07:01 | Double-click on multiplePolynomialEvaluator, multipleFunctionTester and bouncingBallWithUserTypes. |
07:11 | Shift the window back to its place. |
07:15 | Go to multiplePolynomialEvaluator tab. |
07:19 | This function is similar to polynomialEvaluator function except for an additional output variable. |
07:27 | An output variable name gx has been declared. |
07:32 | gx is assigned the value of a x (squared) (minus) b x (plus) c |
07:38 | The order in which output or input variables are declared is important. |
07:45 | We will understand more about this when we discuss multipleFunctionTester class. |
07:51 | Now, let me switch to multipleFunctionTester tab. |
07:56 | y and z are declared as real variables. |
08:01 | multiplePolynomialEvaluator function is called with an input argument of 10 units. |
08:08 | This means that the input variable of multiplePolynomialEvaluator takes a value of 10 units. |
08:17 | y and z take the values of f(x) and g(x) at x = 10 respectively. |
08:26 | y takes the value of output variable fx since the declaration of fx appears before the declaration of gx in the function. |
08:37 | Now let me simulate this class. |
08:40 | Click on ‘Simulate’ button. Close the pop up window. |
08:46 | Select y and z in the variables browser. |
08:51 | Note that the values of y and z are the same as f(x) and g(x) at x = 10 respectively. |
09:01 | Delete the result and go back to Modeling Perspective. |
09:06 | Now, let me interchange the order of y and z. |
09:11 | Delete (y,z) and type (z,y) |
09:17 | and save this class by pressing Ctrl+S. |
09:22 | Simulate this class once again. Close the pop-up window. |
09:28 | Select y and z in the variables browser once again. |
09:33 | Note that the values of y and z have been interchanged as compared to the previous case. |
09:41 | Let me delete this result and go back to Modeling Perspective. |
09:47 | Let me go back to the slides. |
09:50 | algorithm is Modelica syntax element to enable procedural programming. |
09:56 | Only assignment statements are allowed in algorithm section. |
10:01 | Assignment statements use the following symbol. |
10:06 | Data flows in assignment statements from right to left. |
10:10 | There are certain restrictions on functions defined in Modelica. |
10:16 | Use of der() in a function is invalid. Use of time variable is not allowed. |
10:23 | Use of when statements is not allowed in a function. |
10:28 | A function may not have more than one algorithm section and Models cannot be passed as arguments. |
10:36 | type is a specialized class to define custom data-types in Modelica. |
10:42 | For example, physical quantities like velocity and current can be defined as data-types. |
10:50 | They can be used later to declare other variables. |
10:54 | Attributes of Modelica data-types like unit and start can be changed accordingly. |
11:01 | For example, in the above case velocity is defined to be the same as real data type. |
11:08 | But its unit modified to meter per second (m/s). |
11:12 | I have created a model named bouncingBallWithUserTypes to simulate type definitions. |
11:19 | Let me go back to OMEdit to demonstrate this model. |
11:24 | Click on bouncingBallWithUserTypes tab. |
11:28 | This model is similar to the bouncingBall model which was discussed in previous tutorials. |
11:35 | Please go through the per-requisite tutorials to understand bouncingBall model. |
11:41 | Length is defined as Real datatype with its unit modified to meter (m) . |
11:47 | Similarly Velocity is defined as Real with its unit modified to meter per second (m/s) . |
11:54 | h represents height of the ball from surface of earth. |
11:58 | It is defined as length datatype. |
12:02 | Similarly, v represents velocity of ball. |
12:05 | It is declared to be of velocity datatype. |
12:09 | Remaining variable declarations and equations of this model are similar to bouncingBall model. |
12:18 | Now let me simulate this. Close the pop-up window. |
12:24 | In the Variables Browser, notice that h and v have their respective units associated with their data-types. |
12:34 | Let me select h in the variables browser. |
12:38 | The plot of h versus time is similar to that of bouncingBall model. |
12:43 | Let me de-select h. |
12:46 | Now, let me go back to the slides. |
12:49 | As an assignment, breach the restrictions on functions and observe the errors produced. |
12:56 | This brings us to the end of this tutorial. |
12:59 | Watch the video available at following link.
http://spoken-tutorial.org/ What_is_a_Spoken_Tutorial It summarizes the Spoken Tutorial project. |
13:05 | We conduct workshops using spoken tutorials. Please contact us. |
13:10 | If you have questions in this spoken tutorial, please visit the website. |
13:15 | We coordinate coding of solved examples of popular books. Please visit the websites for more information. |
13:23 | We help migrate commercial simulator labs to OpenModelica. |
13:29 | Spoken Tutorial Project is supported by NMEICT, MHRD, Government of India. |
13:36 | We thank the development team of OpenModelica for their support.
Thank you. |