How to use Map Editor[home]
When started, the MapEditor will look like this: By moving your mouse over most widgets and areas, you should have help ballons popping to help you use the tool.
Loading action descriptionsThe first thing you have to do is to load some factories.You've two options there :
Be aware that if the MapEditor may handle a mix of several factories in a process, the underlying FactoryAction is not yet capable of that, so you should currently restrain to using a single action factory at a time.
Creating and interacting with action boxesWe will now have to define the actions that take part in our process.Press the right mouse key in the background of the MapEditor: Discard for the moment the first two entries ("New group" and "New parameter action"). You should find below the name of the loaded factory, with a sub-menu detailing all of the actions available from this factory. Select one of the actions, to make an action box appear in the working area: Each time you'll select an action from the background popup menu, you'll create such an action box. You'll so be able to create an action box for each of the steps of your process. Now, let's see the basic way of interacting with these action boxes, to organize our workspace ares :
Action boxes internal detailsLet's see now how to set the details of each action box. Fist, you'll need to open it using the "O" button, which shoud make your action box look like :The first lines shows the parameters, that were specified as required for the action (here in this figure "Filename" and "InitialSolValue"). For each of them, an entry field allow interactive input of their values. At the end of each parameter line, is a radio-button with three mutually exclusive options: "GS", "GU" and "Local". For understanding these, please create two identical action boxes (two instances of the some action), and open them.
At the bottom of the action box is the underlying servers description. If you're in specification
mode, you may forget that part, but in execution mode, you'll have to fill it.
Connecting action boxesLet's now connect action boxes together, to streamline the process and express how data flows from action to another.Push right key mouse on the output port (right) bottom orange area of the upstream action, and select the data to be flushed downward : Then push right key mouse on the input port (left) bottom orange area of the downstream action, and select the data to be accepted as input : The two boxes are now connected, and you may check that connection prerssing middle mouse button either on upstream action output port area or downstream action input port area (and look at the listing) : Note that you may delete the link by just clicking on it (you've to be precise !) with the left mouse key.
Loading and saving a mapYou may now save your defined computationnal path, by selecting the usual "save" icon in the upper toolbar (i.e. the floppy) :You'll be able to reload it later in the MapEditor using the usual "open" icon.
Firing action boxesNow clicking on the fire (">") button of upstream action (in the exemple shown "LoadMesh") should send data downstream and make next action (here "Solver") ready to fire (the ">" button should pass to green) :Clicking on the fire (">") button of downstream action ("Solver") should start this action and consume the available input data (the ">" button should pass to red) : If you try to fire N times the upstream action, you'll be able to fire N times the downstream action before the fire button turns to red, because the inputs are buffered. The same if you've two upstream actions filling a downstream action and fire both upstream actions, two data will be buffered on the input port of downstream action, allowing her to fire two time (collector default behaviour) :
Auto-fire and parallel pathesIf we build now a chained sequence of three actions :You may fire all three modules one by one in manual mode, or press button "Manual fire" in the upper toolbar. The button should switch to "Auto fire" : If you fire now manually the first action of the sequence, all downstream actions are fired as soon as all input ports have been provided with data. Let's now build a two path computationnal sequence : Fire first action : when its execution if finished, data is sent downstream to both connected "Solver" modules which start simultaneously. For each action execution, the MapEditor create an independant thread, thus allowing several actions from paralel pathes to execute simultaneously. Be aware that the standard generated FactoryActions are not yet multi-threaded in this version, so that some FactoryActions will not be able to take advantage of that.
Execution control with conditionsYou may set conditions on the global values, by pressing left mouse key on the button which is on the right of the global value entry field :While the condition is verified, the test appears surrounded in green : If as a result of any action changing the parameter value, the test is not any more verified, it will appears surrounded in red, and the execution mode is automaticazlly switched back to "Manual fire" thus stopping the process (except by manual continuation or analysis) :
TriggersThere are some cases, when you'll want to sequence two actions without having any data to be flushed from one to the other (ex: start a plotting software when the output file has been generated). You will then need a way for upstream action to signal downstream action that it should start.Triggers are designed to solve this problem. You may connect any output port to an input trigger port, especially an output trigger if you've nothing else to send downstream. For the trigger to be active, the "Use trigger" checkbox should be activated : Be aware that once the input trigger is activated, it may receive any kind of data which it will not try to understand, but will need to have data available as any other port, for the action to start.
Parameter actionsParameter actions are Python affectations concerning global parameters.In some cases, you'll want to modify a global parameter without to have a specific action doing it (ex: increment a global iteration loop counter). You will then need a way to do it directly from the MapEditor. Parameter actions are designed to solve this problem. They should be fired via triggers, and will accept any Python expression of the form : <global variable name>= function of (<global variable name>) Here is an example for incrementing a global iteration counter named "Value": The "Manual trigger" button allow you to test your syntax by running the action without flushing any output. You may customize a parameter actions name by pressing right mouse key on its name.
Command actionsCommand actions are system commands which parameters may contain global parameters.In some cases, you'll want to run a system command with one or several global parameter as arguments, without to have a specific action doing it (ex: launch an editor on your output listing, or a plotting software on your generated output file). You will then need a way to do it directly from the MapEditor. Command actions are designed to solve this problem. They should be fired via triggers, and will accept any system expression including global variable which value will be replaced before execution by their current value. Here is an example for editing automatically an output file : The "Manual trigger" button allow you to test your syntax by running the action without flushing any output. You may customize a command actions name by pressing right mouse key on its name.
GroupsGroups are a way to wrap several actions and make them appear as a single one. It may be seen (and it is as a matter of fact !) as an Action Box containing itself a sub-map editor.When opened, the Group shows it's internal map editor in which all of the previously described behavior are available. The only two specific things about group are :
So experiment with it and provide feedback, but don't rely on them ! Thanks.
Python and C/C++ static generation of a hard wired process controller from a
MapEditor's map is still at prototype version for the moment, so the corresponding buttons
remain inactive: Comments, bugs, fixes to t_chevalier@libertysurf.fr. [Home] |