Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Tutorial 2
Objects and TeLiTabs

Learning goals

  1. Learn about the TeLiTab data format
  2. Using an object as a function 
  3. Creating a multiple case solution
Prior knowledge



Image Added

1    Objective

In this tutorial, you will create the shape of a ship's waterline in a table of frame numbers and relative, dimensionless widths. The dataset containing variations of the main dimensions of a ship from tutorial 1 is stored in a data object Ships in the dataset of the knowledge base, so it can be easily used in further calculations. This dataset combined with the dimensionless width table is used to calculate the width at the waterline at every other frame number 2 for every variation.

Note

Note that the word frame is used here as a ship's frame, not as a frame in Quaestor.

 Start

For this tutorial, the knowledgebase from tutorial 1 is used. You can either use your own (verified) knowledgebase, or download it here: [Tutorial 2 Start]

...

TeLiTab is an abbreviation of TextListTable (see TeLiTab for more detail). It is the standard format in which data is stored inside Quaestor, the easiest way to use data inside a knowledge based systems and the easiest way to exchange data with external applications (see also Use of external or satellite programs). An example of a telitab is given below, the black text to the right is comment and is not present in the actual telitab.

 

the actual telitab.

 



"Ship" 
   { 
   3 
   "Lpp" 100
   "B" 20 
   "Resistance"
      { 
      0 
      2 "R" "V" 
      "1" 1000 10 
      "2" 1200 11
      "3" 1300 12
      "4" 1400 13
      "5" 1500 14
      "6" 1600 15
      } 
   }


Number of list items in primary Telitab
Name of List item
Opening secondary Telitab
Number of list items
List item 1, name + value
List item 2 name + value
List item 3, which is a Telitab
Opening thirtiary tertiary Telitab
Number of list items (in this case zero)
Number of table parameters and their names
Dataset per case





Closing tertiary Telitab 
Closing secondary Telitab 
Primary Telitab does not need to be closed


Every level of a TeLiTab contains list items and an optional table. The table can be omitted, but if there are no list items present at a certain level, a '0' is required (like above in the resistance telitab). Parameters and case numbers are written between double quotes (""), values . Numerical values are not but strings with spaces in it should! For written between quotes, strings that contain spaces are written between double quotes. For all syntax aspects please go to: TeLiTab


A Quaestor Object  contains a set of data, either static (only data, e.g. a speed power curve or a list of components) or dynamic, and is represented as TeLiTab. An object can operate as a computational model, (requesting input and providing output) fulfilling the role of a function or subroutine in an assembled model (a ‘Solution’ in the Quaestor workbase).

...

The ship is defined mathematically, which makes it convenient to generate. The relation between the Frame frame number (0 to 20) and relative width is:

...

  1. You will be asked whether StartFrame is an Object. Say no;
  2. Hereafter you will be asked whether StartFrame is a Goal parameter or Input. Say no, because you want to provide this as input for the Waterline object;
  3. These questions are also asked for FrameStep and EndFrame. Say no to the Object question and no to the Goal parameter question. These values are input to the object.

...

  •  In the Workbase, right-click on the DISP  solution and select All to Clipboard (or press F4). The Workbase Clipboard now pops up. Click on Preview. The contents of the DISP solution are now displayed. You temporarily have to use a workaround now, because the Paste function is not yet implemented. Press Ctrl+A followed by Ctrl+C to copy the contents to the Windows clipboard. Click Cancel and close the clipboard. No need to save the values in there. Then right-click on the Ships object in the Dataset and select Database Input or press Shift+F3. In the pop-up window that appears, select Use Editor and click Continue. In the window that appears next, press Ctrl+V to paste the data in the object. Click OK. Select Yes to All and click Continue.

...

The purpose of all this is to create a table with values of B_Frame for every ship in the dataset over the full length (Frame 0 to 20). For a first run of a solution, no range use is allowed, except when you specifically tell Quaestor that it is.:

  • In the Knowledge Browser, select the Top Goals/Undefined class.
  • Select the parameter B and in the Properties window, select the Parameter tab. In the Data field, enter: @RANGEALLOWED.
  • Do the same for the Frame parameter.
  • In the Workbase, for B, enter as value 9(0.5)11 and for Frame, enter as value: 0(2)20, then click Next. Answer Yes to the question about the case matrix.

The result of the calculation is a table with B_Frame for every ship of the dataset over the full length (frames 0 to 20).

Image Added

11 @DBENTRY, @DBOBJECT and the dataset 

...

The dataset of Quaestor can only containt contain objects on its top level (below the Dataset node). When you want to use the data in the Dataset, you can either select the object or define the object as database entry so that the Process manager will show it's content. @DBENTRY defines this entry point for selection of data by Quaestor (and thus in the process manager).

@DBOBJECT is an addition to the entry point definition and defines that an object may be available in the Dataset as multi case value. For instance several ships.

Try running the process manager without @DBOBJECT. It's now possible to select the cases within the Ships object, instead of the whole object (all cases). The reason is that Quaestor now expects there is only one relevant object, being the one specified as @DBENTRY, so only selections within this object are relevant to be shown in the process manager.

Image Added

Please note that @DBOBJECT is an addition to @DBENTRY. So @DBENTRY should always be in the multi case object you want to use as entry point for your data in combination with @DBOBJECT
Furthermore, at this moment it is not possible to do calculations for serveral several multi case objects at once (this behaviour is suggested in earlier Quaestor version earlier Quaestor versions in situation situations where you use @DBOBJECT without @DBENTRY and as a result are able to select several or All Ships...).

...