Sunteți pe pagina 1din 119

User Guide

FRIENDSHIP-Framework

FRIENDSHIP SYSTEMS GmbH Benzstrasse 2 14482 Potsdam Germany www.friendship-systems.com January 2011

Content

Part A | General Overview ......................................................................................................................7


A.1 Introduction ....................................................................................................................................................................8 FRIENDSHIP-Framework ................................................................................................................................................8 Design Principles .............................................................................................................................................................8 About this Guide ...............................................................................................................................................................8 A.2 Graphical User Interface ................................................................................................................................................9 Windows ...........................................................................................................................................................................9 Mouse and Keyboard Gestures .....................................................................................................................................11 Workspaces ...................................................................................................................................................................12 Settings ..........................................................................................................................................................................13 A.3 Commands....................................................................................................................................................................14 Introduction ....................................................................................................................................................................14 Update Mechanism ........................................................................................................................................................14 Global and Type Commands .........................................................................................................................................14 Command Structure .......................................................................................................................................................14 Creation Commands ......................................................................................................................................................15 Automatic Type Conversion ...........................................................................................................................................15 A.4 Basic Types ..................................................................................................................................................................16 Introduction ....................................................................................................................................................................16 FBool ..............................................................................................................................................................................16 FUnsigned ......................................................................................................................................................................16 FInteger ..........................................................................................................................................................................16 FDouble..........................................................................................................................................................................16 FVector3.........................................................................................................................................................................16 FSeries ...........................................................................................................................................................................16 FString............................................................................................................................................................................16 A.5 Parameters ....................................................................................................................................................................17 Introduction ....................................................................................................................................................................17 Parameter ......................................................................................................................................................................17 Series Parameter ...........................................................................................................................................................17 String Parameter ............................................................................................................................................................17 A.6 Point Modeling .............................................................................................................................................................18 Introduction ....................................................................................................................................................................18 3D Point .........................................................................................................................................................................18 Curve Intersection ..........................................................................................................................................................18 Surface Intersection .......................................................................................................................................................19 Projection .......................................................................................................................................................................19 A.7 Curve Modeling ............................................................................................................................................................20 Introduction ....................................................................................................................................................................20 Line ................................................................................................................................................................................20 Circle ..............................................................................................................................................................................21 Ellipse .............................................................................................................................................................................21

Page 2 of 119

BSpline ...........................................................................................................................................................................21 NURBS ...........................................................................................................................................................................21 CSpline ...........................................................................................................................................................................22 Interpolation ...................................................................................................................................................................22 Fillet................................................................................................................................................................................22 FSpline ...........................................................................................................................................................................23 Generic Curve ................................................................................................................................................................23 Offset Curve ...................................................................................................................................................................24 Intersection.....................................................................................................................................................................24 Projection .......................................................................................................................................................................25 Surface Curve ................................................................................................................................................................25 Poly Curve ......................................................................................................................................................................25 NACA Curve ...................................................................................................................................................................25 NACA-4-Digits Curve .....................................................................................................................................................26 Curve Engine .................................................................................................................................................................26 A.8 Surface Modeling .........................................................................................................................................................28 Introduction ....................................................................................................................................................................28 BSpline ...........................................................................................................................................................................28 NURBS ...........................................................................................................................................................................29 Ruled Surface ................................................................................................................................................................29 Lofted Surface ................................................................................................................................................................29 Surface of Revolution .....................................................................................................................................................29 Coons Patch ...................................................................................................................................................................30 Fillet Surface ..................................................................................................................................................................30 Interspace Surface .........................................................................................................................................................30 Sub Surface ...................................................................................................................................................................31 Poly Surface ...................................................................................................................................................................31 Meta Surface ..................................................................................................................................................................32 A.9 Transformations ...........................................................................................................................................................34 Introduction ....................................................................................................................................................................34 Translation .....................................................................................................................................................................34 Rotation ..........................................................................................................................................................................34 Scaling ...........................................................................................................................................................................34 Transformation Chain .....................................................................................................................................................34 Matrix4 ...........................................................................................................................................................................34 Cartesian Shift ................................................................................................................................................................34 Delta Shift .......................................................................................................................................................................35 Surface Delta Shift .........................................................................................................................................................36 Generalized Lackenby ...................................................................................................................................................36 Delta Sum ......................................................................................................................................................................37 Delta Product .................................................................................................................................................................37 Coordinate System .........................................................................................................................................................37 A.10 Images ...........................................................................................................................................................................39 Introduction ....................................................................................................................................................................39 Image Point ....................................................................................................................................................................39 Image Curve...................................................................................................................................................................39 Image Surface ................................................................................................................................................................39

Page 3 of 119

Image Offset Group ........................................................................................................................................................39 Image Surface Group .....................................................................................................................................................39 Image Panel Mesh Group ..............................................................................................................................................39 A.11 Surface Meshes and Volume Grids ............................................................................................................................40 Introduction ....................................................................................................................................................................40 Mesh Engine ..................................................................................................................................................................40 Panel Mesh Group .........................................................................................................................................................40 Unstructured Panel Mesh ...............................................................................................................................................40 Structured Panel Mesh ...................................................................................................................................................41 Blade Mesh Engine ........................................................................................................................................................41 A.12 Features ........................................................................................................................................................................42 Introduction ....................................................................................................................................................................42 Feature Definition ...........................................................................................................................................................42 From Selection ...............................................................................................................................................................44 Nesting ...........................................................................................................................................................................44 Syntax Essentials ...........................................................................................................................................................45 A.13 Variation and Optimization ..........................................................................................................................................48 Introduction ....................................................................................................................................................................48 Variant Management ......................................................................................................................................................48 Design Variable ..............................................................................................................................................................49 Inequality Constraint ......................................................................................................................................................49 Equality Constraint .........................................................................................................................................................49 Design Engines ..............................................................................................................................................................50 Ensemble Investigation ..................................................................................................................................................51 Exhaustive Search .........................................................................................................................................................51 Sobol ..............................................................................................................................................................................51 Brent...............................................................................................................................................................................51 Nelder Mead Simplex .....................................................................................................................................................51 Tangent Search ..............................................................................................................................................................51 Newton Raphson ............................................................................................................................................................51 NSGA-II ..........................................................................................................................................................................52 MOSA .............................................................................................................................................................................52 Design Engine Table ......................................................................................................................................................53 Diagrams ........................................................................................................................................................................54 A.14 Integration.....................................................................................................................................................................57 Introduction ....................................................................................................................................................................57 Definition ........................................................................................................................................................................57 Configuration ..................................................................................................................................................................58 Computation ...................................................................................................................................................................58 Setup ..............................................................................................................................................................................60 Custom Integration .........................................................................................................................................................60 Generic Integration .........................................................................................................................................................62 COM Interface ................................................................................................................................................................64 Generic Results ..............................................................................................................................................................65 A.15 Parallel and Distributed Computing ...........................................................................................................................66 Introduction ....................................................................................................................................................................66

Page 4 of 119

General Settings ............................................................................................................................................................66 SSH Resource Manager ................................................................................................................................................66 Resource Manager Setup ..............................................................................................................................................66 Remote Application ........................................................................................................................................................68 Task Monitor ..................................................................................................................................................................69 A.16 Visualization .................................................................................................................................................................70 Introduction ....................................................................................................................................................................70 GL Image .......................................................................................................................................................................70 GL Picture Frame ...........................................................................................................................................................70 GL Clipping Cube Setup ................................................................................................................................................70 Timer ..............................................................................................................................................................................71 Linear Dimension ...........................................................................................................................................................71 Label ..............................................................................................................................................................................72 Legend ...........................................................................................................................................................................72 Bar Chart ........................................................................................................................................................................72 Skybox ...........................................................................................................................................................................73 2D Window Setup ..........................................................................................................................................................73 A.17 Import and Export ........................................................................................................................................................74 Introduction ....................................................................................................................................................................74 Current Design ...............................................................................................................................................................74 IGES ...............................................................................................................................................................................74 Offsets ............................................................................................................................................................................74 OpenNURBS ..................................................................................................................................................................75 STL.................................................................................................................................................................................75 COLOUR STL ................................................................................................................................................................75 PFF ................................................................................................................................................................................75 Panel Mesh ....................................................................................................................................................................75 Techplot (Subset) ...........................................................................................................................................................75 Wave Pattern (nuShallo) ................................................................................................................................................75 Configuration SHIPFLOW ..............................................................................................................................................76 Configuration FS-Modeler ..............................................................................................................................................76 Wakefield .......................................................................................................................................................................76 Wavefront OBJ Connector .............................................................................................................................................76 GridPro (stl.tmp) .............................................................................................................................................................76 Plot3D ............................................................................................................................................................................76 GeomTurbo ....................................................................................................................................................................77 A.18 Batch Mode ...................................................................................................................................................................78 Introduction ....................................................................................................................................................................78

Part B | Examples ..................................................................................................................................79


B.1 Getting Started .............................................................................................................................................................80 Introduction ....................................................................................................................................................................80 Geometry Variation ........................................................................................................................................................80 Parametric Hull Surface .................................................................................................................................................83 Parametric Diffuser Surface ...........................................................................................................................................86 Integrate External Software ............................................................................................................................................90

Page 5 of 119

B.2

Hull Design ...................................................................................................................................................................94 Introduction ....................................................................................................................................................................94 Section Visualization ......................................................................................................................................................94 Offset Data .....................................................................................................................................................................94 Offset..............................................................................................................................................................................94 Offset Group...................................................................................................................................................................94 Offset Group Assembly ..................................................................................................................................................94 Section Group ................................................................................................................................................................95 Hydrostatic Calculation ..................................................................................................................................................95 Lackenby Variation .........................................................................................................................................................97 Design of Basic Curves ..................................................................................................................................................98 Sectional Curves ............................................................................................................................................................99 Surface Design .............................................................................................................................................................100 Shipflow Integration ......................................................................................................................................................101 Shipflow CHAPMAN .....................................................................................................................................................103

B.3

Maritime Propeller Design .........................................................................................................................................104 Introduction ..................................................................................................................................................................104 Generic Blade ..............................................................................................................................................................104 Propeller .......................................................................................................................................................................106 Wakefield .....................................................................................................................................................................106 Fillet Modeling ..............................................................................................................................................................107

B.4

Turbomachinery Components ..................................................................................................................................109 Introduction ..................................................................................................................................................................109 Rectangular Volute .......................................................................................................................................................109 Wing Design .................................................................................................................................................................111 Stream Section .............................................................................................................................................................114 Axial Compressor .........................................................................................................................................................116

References .............................................................................................................................................................................119

Page 6 of 119

FRIENDSHIP-Framework User Guide

Part A | General Overview

Page 7 of 119

FRIENDSHIP-Framework User Guide A.1 Introduction

A.1

Introduction
Design Principles
A typical design procedure within the FRIENDSHIPFramework starts with a fully-parametric model of the considered shape. During the geometry setup, objects are related to each other via introducing dependencies. Changes that are applied to one object are internally passed to dependent objects for update purposes. Surfaces are no longer described via basic point data. More intuitive descriptors (e.g. user-defined distributions which describe product properties) help to modify geometry smartly in a way that the resulting surfaces cover high fairness for geometrically feasible designs. Note that no black-box models are used, the engineer is completely free to set up any individual design. In the second step, parts of the geometry are linked to variation engines. Any floating-point number of the model setup can be varied. The user chooses a specific engine and defines bounds for variables as well as constraints and objectives. In order to be able to assess the manual or automatic variants, external (mostly analysis) software is coupled and configured. The engines simply evaluate parameters that request an external value. This transfers external data into the FRIENDSHIP-Framework. Based on this integration along with parametric geometry variation sophisticated formal optimizations can be carried out.

FRIENDSHIP-Framework
This software allows design and optimization of any flowexposed functional surfaces, in particular Ship Hulls and their Appendages Propellers Compressor and Turbine Blades Wings Pump Devices Casings, e.g. Volutes Diffusers

Having the focus on efficient variation, a smart parametric modeling technique (CAD) is combined with any in-house or commercial simulation code e.g. for CFD analysis of the geometry. Variation and Optimization Apart from parametric and conventional CAD functionality, this software comes with a set of embedded variation and optimization strategies. These algorithms can be comfortable linked to the geometry and perform automatic variant creation. For that purpose, comprehensive variant and constraint management are provided. Integration Any program or tool which is needed for geometry design and analysis can be coupled. Convenient integration mechanisms make the external program an inherent part of the FRIENDSHIP-Framework. By doing so, design and analysis expertise is centralized in order to streamline the design process.

About this Guide


This guide encapsulates the essence of the programs functionality. Additional detailed documentation and sample files are directly provided within the program environment. General Overview The first part of this guide describes the graphical user interface and general creation of geometry as well as basic variation, integration and visualization matters. Examples

In addition to configuration and execution of external programs, comprehensive post-processing functionality is available. Result data gets visualized and tables are generated so that the entire design process finally takes place within a single workbench.

Following this, selected applications from the maritime field and from turbomachinery are given. These demonstrative examples are guided stepwise and help to transfer the Know-How to own sophisticated projects. As a starting point, see also the introduction example of the Getting Started section.

Page 8 of 119

FRIENDSHIP-Framework User Guide A.2 Graphical User Interface

A.2
Windows

Graphical User Interface


making the project read-only. These attributes are accessible via the ObjectEditor. Object Documentation The third column contains an icon that indicates whether documentation is available for the corresponding object. Via a single mouse click onto the icon, documentation can be accessed either for writing or reading (if not empty) via the DocumentationBrowser. Type Documentation In contrast to the mentioned object documentation, type documentation is also available via the DocumentationBrowser. Affiliation The affiliation is changed by clicking onto the initially green-colored circle icon in the fourth column of the tree. Objects belong to the current project by default. However, there are additional states possible to be set that allow keeping certain objects in the user configuration file of the program. Then, an object with changed affiliation is always available, even if no project is loaded. This is because it is provided by the configuration file. Such a mechanism is useful only for a small subset of recurrent objects. Objects with an affiliation for a temporary state are not stored in the project or configuration file.

The graphical user interface (GUI) comes with a set of different windows which are explained in the following sections. ObjectTree The entire project setup is organized in the ObjectTree. Similar to a Windows Explorer, objects can be moved via Drag&Drop and renamed. Dependencies among objects are kept for renaming. The user is free to set up an entirely user-specific project organization where e.g. scopes (like folders) help to introduce structures.

Project The first element of the ObjectTree is the current project. This object carries the project documentation which can be shown on project opening. It also contains a toggle for

Page 9 of 119

FRIENDSHIP-Framework User Guide A.2 Graphical User Interface

Administration The administration branch is also available via context menu (right mouse button) as well as any available root node. For instance, lights, cameras and toolbars can be configured in here. In particular, export options are accessible. ObjectEditor This window allows setting the attributes of selected object(s). If more than one object is selected, the common attributes are given which can be set at once for each object.

background color or point and line sizes as well as camera and light options. Filters and Principal Views At the bottom of these windows, different filter mechanisms and principal views are provided. In particular, the name filter helps to only show the objects that contain certain text fragments in their full names. Names and name fractions need to be separated by commas for multiple filtering. Grid View For each 3D window a special grid view can be visualized which helps e.g. to create points at certain positions etc.

In the screenshot above, the selected object is indicated at the top of the editor. Forward and backward navigation is available by using the arrow icons in order to switch between selections. Multiple selections will show the names of each selected object. Next, the object type (here: FParameter) and the objects name is given where the latter can be changed (this can also be done directly in the object tree. On the right-hand side, the automatic update button is shown for some types, see also the parameter for more information. For any object, the type-specific attributes can be set with this editor. These attributes are categorized, e.g. in the screenshot above there is only one category, namely General. Attribute Editors An editor field of an attribute mostly behaves like the console, e.g. object creation via creator commands as well as auto-completion is available. Note that all attributes and further functionality of an object can be also reached via simple console commands, see section commands for more information. 3DView Objects get rendered and displayed within this window. Settings of this window are accessed via context menu (right mouse click into the view). It allows changing the

Grid view options are available via the settings dialog (Appearance) in order to configure the grid style. The plane elevation can be set at the bottom of the 3DView next to the icon. The cursor position of the mouse is taken as next elevation when switching to another principal plane, see shortcuts F6 and F7. Points can be quickly created within the grid, see the corresponding shortcut. A snap-to-grid mode is also available via the 3DView button ( ) for convenient point positioning on a grid. Console Commands can be accessed for selected object(s) via the console. If a selection is available, the command list is given by typing in a dot (.) along with the auto-completion.

If no selection is given, type the objects name plus dot and auto-completion in order to receive the commands, e.g. myObject + . + auto-completion (without quotation marks and plus characters).

Page 10 of 119

FRIENDSHIP-Framework User Guide A.2 Graphical User Interface

Short Cuts Keyboard short cuts are given in this site. Many short cuts can be configured to the needs of the user. Dependencies This window tracks dependencies of objects. It shows supplier and client relations by simply moving an object into this editor via Drag&Drop. Such a tracking mechanism is helpful when the project gets more complex after a while. The dependencies window is not visible by default and can be set visible via the windows menu. History History steps are displayed in here. The user can move backward in history during the design process (redo/undo). SelectionSet This widget contains the current selection which can be sorted or modified manually. Sorting is sometimes important e.g. if a creator command is called which expects a certain input order. Also, a selection can be locked to avoid that it gets lost by mistake. Constraints This is a convenience widget that monitors the constraints. Constraints can be filtered and displayed by their current state. Toolbar The toolbar contains the buttons for e.g. open and save a project as well as the workspaces.

This functionality allows the creation of objects via the console by using their creator commands. Attributes of objects can be set via the console too. Actually, any object creation via the menu and attribute setting via the ObjectEditor is also accessible via the console. Furthermore, the console provides error and info messages. DocumentationBrowser A comprehensive online documentation with search functionality can be found here as well as samples for objects and design structures. Each available command for any object type is also listed along with its description. The following main sections are available: Home This is the starting site of the browser. Samples This site contains sample projects which demonstrate essential design structures and principles of the software. MyProjects User projects can be parsed automatically so that a list of projects gets generated along with project documentation. This provides a convenient view on closed projects and their user documentation. Directories are configured via the settings menu. Features User-defined directories can be parsed for feature definitions. The definitions are given in a list and can be readily imported into the current project. Detailed documentation of the definition with input description is given too. Directories are configured via the settings menu. Types Any object has a certain type which always starts with F, e.g. FLine, F3DPoint. These types are described in detail. In particular, the command list of each type is given too. Global Commands Apart from type commands, global commands provide more general auxiliary functionality. The available commands are described along with some examples.

Mouse and Keyboard Gestures


Different mouse button combinations are required for zoom or selection of objects. The following sections mainly focus on the 3DView or the ObjectEditor. Object Reference via ALT-Key This is one of the major gestures. Instead of typing the objects entire name, this name information is easily pasted to any place by using ALT key: First, locate your cursor at the target location, e.g. any attribute editor field in the ObjectEditor. Then, keep ALT pressed and click onto the object for which the name shall be pasted. Auto-Completion Press CTRL + SPACE in order to receive either the (completed) command or the entire possible command set. This works for object names and commands. It helps to save time with regard to any command typing.

Page 11 of 119

FRIENDSHIP-Framework User Guide A.2 Graphical User Interface

General Zoom Use the middle mouse button (scrolling) in order to zoom in and out. The zoom has the focus at the mouses cursor position. Zoom In In the 3DView, keep SHIFT pressed, then click the left mouse button and select a rectangular zoom region from the upper left to the lower right corner. Zoom Out Similar to zooming in, keep SHIFT pressed, then click the left mouse button and select a zoom out region now from a lower right position to an upper left. General Rotating In the 3DView, keep the right mouse button pressed in order to rotate along objects. Rotation along Principal Axes In the 3DView, press CTRL, ALT and a for choosing the principal axis x, y or z. Use the right mouse button for rotation while CTRL, ALT and a remain pressed. Scene Moving In order to move the entire scene in the 3DView, keep the middle mouse button pressed and shift the scene. Active Scope Scopes behave like directories. Click with the middle mouse button onto a scope in the ObjectTree in order to make it active. Now, new objects will directly be created within this scope. The active scope is also indicated at the lower right corner of the program. CTRL + ALT While keeping these two keys pressed, create points within the grid view by using the left mouse button. F6 Activate and deactivate the grid view within the 3DView. F7 Switch between principal axes/planes while shifting a point in the 3DView. This allows movements of points if no principal plane or grid view has been activated. F12 This is a shortcut for the last creation command. In case F12 is used while objects are selected, the current creation command tries to involve the input for creation purposes.

Switch between Program Windows In order to quickly switch between the different windows and widgets, use CTRL + TAB. In particular, this allows switching between the last two windows that have been active when using the keyboard shortcut only once.

Workspaces
The graphical user interface can be configured to the needs of the user. The window arrangements as well as views, colors, camera settings, lights, sizes for points and curves are stored in a workspace. Also, the background of the 3DView can be set. Workspaces are located in the toolbar. The user is free to switch between different workspaces instantly by clicking onto the name of the corresponding workspace.

Settings for the 3DView are accessible via the context menu (right mouse button within the window, last entry of the menu).

Page 12 of 119

FRIENDSHIP-Framework User Guide A.2 Graphical User Interface

Settings
Program settings can be configured via menu > edit > settings.

Company Profile The company name and a company logo can be set which then will be included for the title page of the diagram PDF report. Feature and Project Directories Choose custom directories for your projects and feature definitions (.fdf). These directories are parsed on each program startup and on manual user refresh (icon is located at the corresponding documentation site in the DocumentationBrowser). A convenient documentation gets thus generated and displayed which enables efficient informative file browsing. For this mechanism, the users documentation of projects and feature definitions is provided.

Page 13 of 119

FRIENDSHIP-Framework User Guide A.3 Commands

A.3

Commands
Global Commands Global commands are frequently used for some auxiliary reasons: Trigonometric functions or control statements (loops, if-statements etc) are available. Type Commands Type commands are member and attribute commands of a certain type. For instance, the base type FCurve has a position command which is also available for each derived type, e.g. for FLine. The commands are called directly at the object, e.g. a position call for object myLine
myLine.getPos( 0.5 )

Introduction
The functionality and fundamental concept of the FRIENDSHIP-Framework is entirely governed by commands. Almost each action a user performs is carried out by a command. This could happen by clicking a button, choosing a menu-entry, setting attributes in the ObjectEditor or explicitly entering a command into the console. See also the auto-completion description which saves an enormous amount of time while working with commands.

Update Mechanism
In particular, objects are connected to each other by using commands, e.g. by receiving and utilizing values from other objects. This leads to the powerful fact that not only discrete values can be set for an object but any sophisticated so-called expressions. In the end, this generates object dependencies where an incorporated update mechanism takes care of the object state.

If an object is selected, the command is simply called on the console via


.getPos( 0.5 )

For more information about curves, see the corresponding chapter. All attributes that can be set for a certain object type in the object editor are also accessible via the corresponding get and set commands. For instance, setting a start position of a line can be written as
myLine.setStartPos( [0,0,1] )

See the following screenshot for an example where the auto-completion is also given.

General geometry modeling and variation via updates of design engines are based on this idea. For instance, see how result values of a CFD simulation are stored in parameters. As a different example, instead of a discrete value, a design variable is set for a coordinate of a point for variation purposes.

Command Structure Global and Type Commands


Global and type commands can be distinguished. The available commands are documented in detail and can be found in the DocumentationBrowser. The following parts represent a general command structure: Name and Return Value Each command has a unique name. Also, in general, commands return a specific value. This value can be used again for further processing, e.g.
myLine.getPos( 0.5 ).getY()

Page 14 of 119

FRIENDSHIP-Framework User Guide A.3 Commands

Here, the return value of getPos() is an FVector3 which provides another command that can be directly called, getY(). Arguments Some commands require input arguments which are important for execution. Default arguments are possible and indicated with = character (no explicit input required by the user). In the example above, the argument is an FDouble which has a value of 0.5.

Examples For instance, if a command expects an integer value, any double type can be set which gets converted into an integer value. This eases the design process in many situations since the user does not need to take care about types. As a more practical example, a section group can be used like offset groups, e.g. for hydrostatic calculations (which actually expects offset groups). Selection of automatic type conversions The following list shows selected types that can be converted into the type that is listed next to it. From FDouble FParameter FPoint FEntityGroup FImageOffsetGroup FSectionGroup FImageSurfaceGroup FLackenby Into FInteger, FUnsigned, FBool FDouble FVector3 FObjectList FOffsetGroup FOffsetGroup FObjectList FDeltaShift FPanelMesh FObjectList FString

Creation Commands
For most types, creation commands are available. They are implicitly called when an object gets created via the menu (e.g. menu > create > curves). Some creation commands offer convenient mechanisms for selected objects. For instance, if two points are selected and a line is created via the menu, a specific creation command is automatically taken which involves the two points during line creation as start and end position. These creation commands can also directly be called in feature definitions or via the console for object creation.

Automatic Type Conversion


Several automatic type conversions, so-called casts, are provided that convert one type into another automatically. Of course, this only works for a special set of type combinations.

FMeshEngine FVector3Series FStringParameter

Page 15 of 119

FRIENDSHIP-Framework User Guide A.4 Basic Types

A.4

Basic Types
FDouble
This type is used for any floating-point number. Examples
123.456, -10.5, 0.25

Introduction
Basic types are used for discrete numbers or series as well as for vector definitions. Most of the time, the user does not recognize that basic types are involved. For instance, when a floating-point number is used in any editor, a basic type gets created internally. But, and this is the reason why the user has to be aware of basic types, commands use them as input and output. Consider the following example where a curve command returns a vector position:
FVector3 getPos( FDouble t )

FVector3
This type is used for vector representations. The last vector example shows how e.g. parameters or any double values can be involved for simple vector settings. Examples
[1,1,0], [0.5,0.5,-1.5], [myXParam,0.0,1.0]

The command expects a FDouble value as input and returns an FVector3. In an actual model setup, the call might look like this:
myCurve.getPos( 0.5 )

FSeries
This type is used for definition of number sequences. For instance, they are applied in section generation and within design engine setups. Different definitions are possible and given below. Examples User-defined discrete values:

Now, this command can be set anywhere in the model whenever a vector is expected as input (because this is the return value of the command). This expression mechanism actually allows setting up complex dependencies.

FBool
This type is used so as to express true or false. Examples
true, false

v1,v2,v3,v4

(e.g. 0,2,3.5,3.7,4)

Starting from v0 until vn using equidistant steps = v1-v0:


v0,v1..vn (e.g. 0,2..20 or 20,18..0)

Combination with different equidistant steps from vn:


v0,v1..vn,vm..vp (e.g. 0,2..20,20.5..30)

FUnsigned
This type is used for unsigned integer values. Examples
0, 1, 2, 3, 123

Alternative equidistant definition for m values:


v0,vn:m (e.g. 0,20:10)

FString
Any string is represented by this type. They are used for names, labels or for data exports (file name) etc.

FInteger
This type is used for signed integer values. Examples
-123, -2, -1, 0, 1, 2, 3

Examples
Length, Result

Concatenations are possible via the + character, e.g.


value = + myResult.getValue().toString() + %

Here, the value of parameter myResult is converted to a string via the command toString().

Page 16 of 119

FRIENDSHIP-Framework User Guide A.5 Parameters

A.5

Parameters
a parameter so that the value update is only requested on demand (and not continously using an automatic update). On Demand also means that a request from a design engine triggers the update procedure which then provides the parameter value. Parameter values e.g. from basic calculations or simple discrete values are the candidates for an automatic update (toggle on). If an parameter is not up to date, an evaluation can be forced by the red triangle icon ( ) just above the editor field. Also, for this out of date status, the name and its type are colored dark red in the ObjectTree.

Introduction
Parameters are used in order to centralize information. Defined once, parameters can be involved in a complex model setup and changes are made exclusively at a single location. For instance, a parameter that holds the length of a design might be set at different objects of the model that depend on it. If the parameter gets changed the entire model adapts automatically.

Parameter
Being probably the most frequently used object, any double value expression (command) can be set for a parameter. Typically, a parameter holds either a discrete scalar value specified by the user or any command (combination) that, in the end, returns a double value.

Creation Choose menu > create > parameters > parameter.

Series Parameter
Examples for double expressions are mathematical formulas, control statements that return a double value or addressing result entries from tables. Note: Being a related entitiy, the design variable holds merely discrete values and no expressions. Automatic Update The automatic-update button is located at the top of the object editor for a selected parameter. Time-consuming, expensive update procedures can be omitted for the time being until e.g. manually requested. Set it inactive (i.e. toggle off) whenever a result of a computation is defined in Number sequences of type FSeries are defined and stored in a series parameter. Creation Choose menu > create > parameters > series parameter.

String Parameter
Strings of type FString can be defined and stored in a string parameter. Creation Choose menu > create > parameters > string parameter.

FRIENDSHIP-Framework User Guide Page 17 of 119

FRIENDSHIP-Framework User Guide A.6 Point Modeling

A.6

Point Modeling
For general views, the three principal axes are indicated on which the point can be shifted. Press F7 for axis switch. Press F6 for grid view. Local Coordinate System On creation, a point refers to the global coordinate system. In order to employ a local coordinate system set the corresponding LCS attribute (category geometry).

Introduction
Each point type holds global and local x-, y- and zcoordinates. Points can be set at any place in the model whenever a vector value (FVector3) is expected. This is realized by means of an implicit point-to-vector conversion. Apart from a common 3D point, intersections and projections are available. Location: menu > create > points.

Curve Intersection
Intersections between two curves are calculated and represented by a curve intersection point.

3D Point
Apart from display options and a name, the point simply consists of three coordinates x, y and z that refer to either a global or a local coordinate system.

For convenience, an intersection can be quickly created and automatically configured when two curves are selected. Of course, the curve entries can be set afterwards too.

Creation via Menu

Curve Selection

Choose menu > creation > points > 3D point. Alternatively, points can be quickly created within the grid view by using the corresponding shortcut.

Select two curves either from the ObjectTree or from the 3DView. Use the CTRL or SHIFT keys for multiple selections.

Creation via Menu

Name and Scope

Choose menu > creation > points > curve intersection. Shortest Distance In case no intersection is given between two curves, this entity calculates the shortest distance. Curve Parameters The intersection point also provides the curves parameter values of the intersection via member commands for both curves, respectively:
myIntersection.getParameterOnCurveA() myIntersection.getParameterOnCurveB()

Select the point in the ObjectEditor and set a name and a scope. Moving Points can be moved in the 3DView only with respect to principal planes within the assigned coordinate system. I.e. in case that a local system is set for the point, this system needs to be in a principal plane view ( ) for point movements.

Page 18 of 119

FRIENDSHIP-Framework User Guide A.6 Point Modeling

Surface Intersection
This entity represents an intersection between a surface and a curve.

1 1 2 2

Creation via Menu

Choose menu > creation > points > projection. Creation via Menu Set Attributes

Choose menu > creation > points > surface intersection. Set Surface and Curve

Select the projection point in the ObjectTree and set the surface, the source position and the projection direction using the ObjectEditor. Please note that the direction is an arbitrary vector where the sign is ignored. Parameter Range For convenience, the surfaces parameter range can be specified which is helpful in case more than one projections are possible for the surface and the given direction.

Select the intersection point in the ObjectTree and set the surface as well as the curve using the ObjectEditor.

Projection
This entity represents a projection where a source vector position is projected onto a surface.

Page 19 of 119

FRIENDSHIP-Framework User Guide A.7 Curve Modeling

A.7

Curve Modeling

Introduction
Curves are defined by means of a parameter interval that runs from zero to one, i.e. [0,1]. The parameter variable is called t. For instance, the following command returns the start position of myCurve as vector:
myCurve.getPos( 0.5 )

Location: menu > create > curves. Parameterization Each curve has a unique parameterization. It can be changed via the attribute parameterization, see the last attribute of the ObjectEditor screenshot below. In particular, unit speed parameterization or parameterizations that increase the speed of the curve at the ends might help in special design situations.

For each curve type, the command


myCurve.fv( axis, elevation )

returns the intersection position given as vector. Here, axis is an index (0=x, 1=y, 2=z) for the principal axis and elevation a value on this axis.

Line
Being a basic curve type, the line is defined via a start and an end position. Any vector position can be set, be it manual, e.g. [1,2,3], or given from points and commands. Each command that returns a vector is possible to be set directly as a start or end position.

The following creation is based on two points. Intersection The intersection calculation with respect to a principal axis and an elevation is often employed in modeling processes.

Point Selection

Select two points where the order of selection will define the start (first) and end (second) position of the line.

2 3

Creation

Choose menu > create > curves > line. Moving

The line can be moved by changing the positions of the start and end position. This is done directly for the points via the ObjectEditor or via the 3DView.

Page 20 of 119

FRIENDSHIP-Framework User Guide A.7 Curve Modeling

Circle
A circle is defined by means of a radius, start and end angle as well as its location. For the latter, the circle is transformed either by using a basic transformation entity or via a center axis modeled as line.

BSpline
The bspline curve is a point-based curve where the shape is additionally controlled via knot vector.

The following steps explain circle creation based on a transformation entity.

1 2 3

Circle Creation

Choose menu > creation > curves > circle. Radius and Angles The following procedure describes curve creation based on a set of selected points.

Set radius and range of angles. Transformation

Point Selection

Create a basic transformation in order to move the circle in the 3D space. For instance, choose the transformation chain to combine more than just one transformation. Expressions Please note that any double value can be set for the circles radius and angle range. For instance, parameters and design variables can be used as well as any command that returns a double value.

Select the single points where the order of selection will define the orientation of the curve.

2 3

Creation

Choose menu > create > curves > bspline curve. Moving

The curve can be moved by changing the positions of the points.

Ellipse
The ellipse is defined via two major axes, start and end angle as well as its location. Handling and modeling is similar to the circle entity please see the circle for more information.

NURBS
The NURBS curve is also a point-based curve where the shape is controlled via knot vector and, additionally, weights for each vertex. The latter are given as array of double values. Such an array can be replaced by an arbitrary command that returns a double array, e.g. setting the array of another point-based curve. See the bspline curve for more information.

Page 21 of 119

FRIENDSHIP-Framework User Guide A.7 Curve Modeling

CSpline
This curve type calculates an approximation curve by means of point data input or arbitrary vector positions. Internally, a bspline curve is fitted to the input with regard to a least square algorithm. The degree and the number of control vertices of the bspline curve are adjustable. Furthermore, tangent angles at the beginning (tab) and at the end (tae) can be fixed for continuity purposes.

Interpolation
For this curve a set of point data is interpolated.

Point Selection

Select the single input data points where the order of selection will define the orientation of the curve.

2
In case that the number of control vertices is equal to the number of input data points, an interpolation is performed.

Creation

Choose menu > create > curves > interpolation curve.

Point Selection

Select the single input data points where the order of selection will define the orientation of the curve.

Fillet
This curve type computes a fillet curve between two given input curves.

2 3

Creation

Choose menu > create > curves > cspline. Curve Characteristics

In case the tangent angles at the beginning or/and at the end shall be fixed, toggle the corresponding boxes. If desired, choose a different degree and a number of vertices in order to change the constraints for the least square fit.

Curve Selection

Select the source and, secondly, the target curve (e.g. keep CTRL pressed).

2 3

Creation

Choose menu > create > curves > fillet curve. Joints

Adjust the joint location by toggling the corresponding boxes of curve. Front joint means that the fillet is joined at the front, i.e. at the parameter value 0, of the input curve.

Page 22 of 119

FRIENDSHIP-Framework User Guide A.7 Curve Modeling

FSpline
Fairness optimized 2D curves are generated by the fspline curve type. The curve is defined via start and end position for which tangent angles can be set by the user. Furthermore, area and area centroid constraints can be involved for curve generation.

be involved. Based on smoothed fsplines, the produced surfaces provide excellent shape characteristics with regard to fairness. Area Setting In many situations the area setting of the fspline needs to be related to a reference area. This makes it flexible in case a model gets scaled etc. since no discrete value is applied. For instance, create a line from the start to the end point. Then, set the area of the fspline as follows:
theLine.getArea( axis, plane ) * factor

Area axis and principal plane need to be specified, e.g. 1 and 2 for the screenshot above. The parameter factor might then given by a number between 1.05 and 1.1.

1 2 3

Creation

Choose menu > create > curves > fspline curve. Principal Plane

Generic Curve
For this curve type the x-, y- and z-coordinates can be defined by the user in order to represent a parametric curve.

Choose a principal plane for the 2D curve. Start and End Position

Set a vector position for start and end of the curve. This could be any vector data, e.g. provided by points or commands.

Tangent Angles

Optionally, set the tangent angles. Please note that these angles refer to the chosen principal plane and its mathematical orientation. In the lower left corner of the 3DView (see the screenshot above), the positive orientation is indicated at the coordinate system by means of circular arrows.

1 2

Creation

Choose menu > create > curves > generic curve. Coordinate Definition

Area and Centroid

Optionally, set the area value and centroid as well as the axes which refer to the specified abscissa or ordinate of the principal plane, respectively. The area value, for instance, might also be negative which depends on the curves orientation since the integral area gets considered. Fully-Parametric Modeling For parametric surface models, this curve type is helpful if area or volume distributions of a surface need to be controlled. The 2D sectional design of the fspline can smartly be utilized in Meta surface creation, for instance. Here, the area setting of the fspline can be mapped to a 3D surface via a user-defined area distribution. Furthermore, distributions for the tangent angles can also

Set an arbitrary definition for x, y and z. Coordinate settings are either constant or dependent on the variable t which runs from 0 to 1 by default.

3 Generate NURBS Curve


In some design situations the evaluation of the generic curve is expensive where an internal efficient NURBS curve can be used instead. In particular, generic thickness curves for offset curves are recommended to be approximated by a NURBS curve. Number of Interpolation Points Specifies the number of interpolation points used for generating the NURBS curve.

Page 23 of 119

FRIENDSHIP-Framework User Guide A.7 Curve Modeling

Sine Function As an example, a Sine function definition is given: x = t * 2 * pi() y = sin( t * 360 ) z=0

Both Sides

For instance in case of profile design, both side of the source curve can be considered which accelerates the profile modeling process. Freenet Frame The Freenet Frame of the source curve can also be considered in order to apply the offset with regard to this space definition.

Note that the global command for the Sine evaluation expects an input angle given in degree by default. Profile Design Arbitrary mathematical profile definitions can be quickly set up by means of this curve type. For instance, such a profile is then stored in a feature definition and ready for blade or wing design etc.

Intersection
This curve type represents intersections between two given surfaces.

Offset Curve
Based on a source curve an offset curve is generated by means of a constant value or distribution. The offset is calculated perpendicular to the source. Mostly, this curve is restricted to a 2D plane, i.e. a principal plane.

Curve creation is also possible for a selection of two surfaces. However, the following steps describe the basic creation process from scratch.

1 1 2
Creation

Creation

Choose menu > create > curves > intersection curve.

Parent and Partner

Choose menu > create > curves > offset curve. Source

Set the parent surface and the partner surface. The resulting intersection curve will be defined in the domain of the parent surface.

Set an arbitrary curve as being the source from which the perpendicular offset is applied.

Non-NURBS Approximation

Offset

For non-NURBS surfaces, a NURBS approximation is required since the intersection computation is performed on NURBS surfaces for performance reasons. Start Linear and Maximum Deviation The value of the maximum deviation specifies the deviation from the bilinear interpolation, i.e. a linear surface. In general, this is more robust for intersections. If Start Linear is not active, surface positions get simply interpolated in order to create a cubic NURBS surface.

Choose either a constant value or a distribution (given in a principal plane) which shall be taken as offset function.

Plane

Select a principal plane in order to tell the curve which axis represents abscissa and ordinate. This is required for calculation of the offset value based on the given distribution as well as for actual offset creation.

Page 24 of 119

FRIENDSHIP-Framework User Guide A.7 Curve Modeling

Projection
The projection curve is defined by a source curve, a target surface and a projection direction.

1 2 3

Creation

Choose menu > create > curves > surface curve. Surface

Set a surface whose domain is considered. Domain Curve

Set an arbitrary domain curve. Domain curves have to be designed in the [0,1] x [0,1] space of the global xycoordinate-system.

1 2 3 4 5

Creation

Poly Curve
A set of arbitrary curves can be put into the container-like poly curve in order to address a single curve via a single parameter interval, i.e. [0,1].

Choose menu > create > curves > projection curve. Target Surface

Set the target surface. Source

Set the source curve which can be an arbitrary 3D curve. Direction

Set the projection direction by using any vector input. Non-NURBS Approximation

Please see the intersection curve for more information about approximation matters of non-NURBS surfaces. Domain Curve For any surface curve, the domain curve (with regard to the underlying surface) is available via a command.

Curve Selection

Select the input curves. Take care that the desired order is given during the selection (again, this can still be changed later on).

Creation

Choose menu > create > curves > poly curve.

Surface Curve
This curve type represents a curve on a surface. Arbitrary domain curves are possible as input.

Parameterization Change the parameterization of the poly curve in order to overwrite the default parameterization (default: for N curves the ith start position is given at t = [i 1] / N).

NACA Curve
A set of NACA66 curves can readily be accessed by this curve type. Via the ObjectEditor, profiles with predefined thickness ratios, uniform load distribution values and lift coefficients are available. By means of the member commands these characteristics can also be set manually using discrete values.

Page 25 of 119

FRIENDSHIP-Framework User Guide A.7 Curve Modeling

Curve Engine
This key entity is able to produce a bunch of curves where the abstract curve description stems from a feature definition. Such a definition is arbitrary. For instance, any input can be used which provides high flexibility. Most importantly, a single curve needs to be available as attribute from the feature definition. This single curve, called base curve, is then employed by the curve engine. Creation

1 2

Choose menu > create > curves > NACA curve. NACA Type

Select the desired NACA66 type.

NACA-4-Digits Curve
The NACA-4-Digits profile is available for which chord length, thickness ratio, maximum camber value and camber position can be set.

Basic scalar input arguments (e.g. FDouble) can be linked to functional distributions. Such a user-defined function is designed by means of any curve type. For instance, a scalar area input is mapped to an area distribution according to the functions interval.

1 2

Creation

In particular, curve engines are used within Meta surface modeling.

Choose menu > create > curves > NACA-4DS curve. NACA Settings

1 2

Creation

Choose menu > create > curves > curve engine. Feature Definition

Set values for the mentioned quantities which define the final profile. Blade and Rudders Values like the chord length or thickness ratio are applicable in surface generation processes where a userdefined distribution defines the values according to a certain range. See Meta surfaces for more information and the blade or wing design for examples.

Select a feature definition which contains at least one curve attribute. Take care that such a curve attribute is set to accessible at the feature definition otherwise the definition cannot be chosen.

Base Curve

Select the base curve which shall be used for curve generation. It is possible that a feature definition contains more than just one curve.

Page 26 of 119

FRIENDSHIP-Framework User Guide A.7 Curve Modeling

Coordinate System

Distributions Double arguments expect either a scalar (constant) value or an arbitrary distribution that is related to the coordinate system of the previous step. In the latter case, a factor can also be applied which multiplies the given ordinate values of the distribution:
[function, factor]

Select the coordinate system in order to provide knowledge about the functions abscissa and ordinate, see the next step.

Input Arguments

Set the input for the input arguments of the feature definition.

This is helpful in case that a normalized function is given which requires ordinate scaling.

Page 27 of 119

FRIENDSHIP-Framework User Guide A.8 Surface Modeling

A.8

Surface Modeling
There are different convenient creator commands available via the console. Most frequently, feature definitions are used for creation of point-based surfaces. The following exemplary creation steps start with a set of four given points which are input for a creator command.

Introduction
Surfaces are defined via a 2D domain [0,1] x [0,1] for the surface parameters u and v. For instance, a 3D surface position is received via the command
mySurface.getPos(0.5,0.7)

Point Selection

Select four points in the order that is illustrated below.

for u = 0.5 and v = 0.7. Location: menu > create > surfaces. Quality Assessment In order to judge fairness and curvature characteristics, each surface allows visualization of isophotes and curvature plots. For a selected surface, choose the different materials in the category Display Options in the ObjectEditor.

Creation

Type the following command into the console while the four points are selected
bsplinesurface mySurface( 4, 4, false )

BSpline
The BSpline surface is based on a 2D (N x M) array of point or vector data. Furthermore, the knot vectors for both the u- and v-direction determine the surface shape too. They are set by means of simple double arrays.

The surface gets created and for both the u- and vdirection four control vertices are used. These vertices are not created as point objects (false) but they are inherent numerical part of the surface. During creation, the command checks the selection set for suitable input since the last argument of the command actually which is not typed expects four points. In general, if possible the last argument gets always filled up with data from the selection set.

Modifications

Select the surface and activate the edit mode (button at the upper left corner of the GUI). This visualizes the

Page 28 of 119

FRIENDSHIP-Framework User Guide A.8 Surface Modeling

control vertices which can be dragged around or set manually. Leave the edit mode after the modification.

Curve Selection

Select the curves in the desired order. The order will determine the surface shape and its orientation.

NURBS
This point-based surface type is related to the bspline surface from above. Apart from control vertices and knot vectors, weights can be set for each vertex for more modeling freedom. This has to be provided as a 2D array of double values. Please see the bspline surface for more information.

Creation

Choose menu > create > surfaces > lofted surface.

Surface of Revolution
For this surface a curve is rotated with respect to an arbitrary input axis.

Ruled Surface
The ruled surface type generates a linear interpolation between two input curves.

Generatrix

Create an arbitrary curve which shall be rotated for surface creation.

Curve Selection

Rotation Axis

Select the two curves (again, if no curves are selected then set them afterwards via ObjectEditor).

Create an arbitrary axis using the line type or set one of the principal axes.

Creation

3 4

Creation

Choose menu > create > surfaces > ruled surface.

Choose menu > create > surfaces > surface of revolution. Settings

Lofted Surface
This NURBS surface generates a lofted surface by means of a set of arbitrary input curves.

Set the rotation axis and generatrix for the surface.

Angles

If desired set an angle interval in order to restrict the generation range in the rotational direction.

Page 29 of 119

FRIENDSHIP-Framework User Guide A.8 Surface Modeling

Coons Patch
This surface is created by means of bilinear interpolation between four boundary curves that are located in the 3D space.

Orientation Apart from the default orientation (moving away from the surface) the orientation can be reversed too. Tangent Factor This value influences the intensity of the tangential direction along the surface boundary. Factor Damping This optional curve input allows applying a function along the surface boundary which amplifies or damps the tangential factor. The curve needs to be modeled within the xy-system and within the range [0,1] that directly corresponds to the surface edge interval.

1 2

Create

Number of Edge Points

Choose menu > create > surfaces > coons patch. Boundary Curves

Set the boundary curves for the surface. Different curve orientations are corrected internally. In case the corners are not coincident the surface does not fit into the boundaries.

The tangential fillet is basically constructed at discrete positions along the surface boundaries. The number of these positions can be specified. The higher this number the more accurate the resulting fillet surface will be finally. This entry can be found in the category General.

Interspace Surface
This surface is a result of merging two NURBS or BSpline surfaces with the same topology, i.e. the same number of control vertices and the same degree. The linear interpolation between these two surfaces includes the weights and is controlled via a single scalar value (regulator) that runs from zero to one.

Fillet Surface
This surface type is created between two given surface boundaries having a smooth transition (C1-continous).

1 2

Create

Choose menu > create > surfaces > fillet surface. Start and End Surface

An interspace surface can nicely be used for variation purposes between two favored surface designs, e.g. from an IGES import. Only a single value needs to be changed for variant creation.

Set the surface from which the fillet starts and where it shall end up. Edge Set the surface edges.

Surface Selection

Select the two NURBS/BSpline surfaces. Take care that they have the same topology.

Creation

Choose menu > create > surfaces > interspace surface.

Page 30 of 119

FRIENDSHIP-Framework User Guide A.8 Surface Modeling

Regulator

Linear Setup In order to quickly create a linear setup of a sub surface, select the parent surface and create a sub surface. Then type the following command into the console while the sub surface is selected:
.createLinearSetup()

Set a value for the regulator entry. The default is 0.5. As mentioned before, this value can be exchanged by a design variable for automatic variant creation between the two surfaces.

Sub Surface
Parts of a surface can be extracted and represented by a sub surface. This surface type is based on user-defined surface curves where each of them is related to the parent surface.

Note the dot . at the beginning of the command. This creates domain and surface curves that are automatically referenced by the subsurface. Adjust or replace the domain curves to the individual needs.

Poly Surface
Similar to the poly curve the poly surface combines a set of arranged surfaces into a single surface. By doing so, the set of surfaces is then addressed via a single parameter interval.

Sub Domain

Create a sub domain with four domain curves in the xyplane within the interval [0,1] x [0,1].

Surface Curves

Create four surface curves by means of the domain curves.

Surface Orientation

3 4

Creation

Make sure that the surface orientations are well arranged according to their adjacent domain directions. See the following screenshot for an example.

Choose menu > create > surfaces > sub surface. Surface Curves Setting

Set the opposite surface curves as being C1 and C2. Also, set D1 and D2 in the same manner, respectively.

Visualization of Parent Surface

If desired toggle on or off the parent surface for visualization purposes. Surface Trimming A sub surface can be used for trimming and cutting purposes of surfaces along with projection and intersection curves. These surface curves provide the domain curve via a get-command which then is involved in the domain setup for the sub surface.

Select the desired surfaces.

Creation

Choose menu > create > surfaces > sub surface.

Page 31 of 119

FRIENDSHIP-Framework User Guide A.8 Surface Modeling

Surface Arrangement

Meta Surface
This power entity provides fully-parametric surface design where excellent fairness and high flexibility is required.

In case that the surface creation is not correct in terms of their orientation, rearrange the entry for the surfaces by modifying the surface arrays. For instance, in the following screenshot, the definition is given by [[s0,s1]] and the v-directions of the two surfaces get combined.

The next screenshot, in contrast, illustrates the combination of different adjacent surfaces by merging the u-directions. Here, the definition is given by [[s0],[s2]].

Based on any curve definition, the Meta surface is created by means of curve engine settings within a certain range of the engines coordinate system. The resulting surface geometry is modified exclusively via the input descriptors (e.g. the distributions) of the curve engine. This means the surface does not get touched directly by the designer. Following this, a Meta surface is perfectly suited for variation and optimization purposes. It produces geometrically feasible surfaces along with excellent fairness characteristics.

1 2
In order to ease the handling of poly surfaces, feature definitions can be applied which e.g. might provide automatic mechanisms for the creation of poly surfaces by domain checks etc.

Creation

Choose menu > create > surfaces > Meta surface. Range Definitions

Set the first curve engine (Definition at Begin) and a base position. This position corresponds to an abscissa value of the curve engines coordinate system. Set the second engine and a base position in order to mark the end abscissa. Most of the times, a single curve engine is used for the entire range.

Blending

Set a blending method which controls the fractions of the definitions in between the range. Smooth blending is recommended in case that adjacent Meta surfaces are designed. It enforces smooth transitions (first order continuity).

NURBS Surface Generation

A Meta surfaces is not a standardized entity type that can be exchanged with other software, e.g. with regard to an IGES export. Therefore, set a surface representation in order to have a common surface type which can be imported and and used in different programs. A NURBS representation is generated internally and used for visualization and evaluation. This NURBS surface is

Page 32 of 119

FRIENDSHIP-Framework User Guide A.8 Surface Modeling

based on interpolation of Meta surface positional data, i.e. the exact surface positions based on the underlying curve engine and its input. The following representations are possible: Cubic Here, a cubic interpolation is generated where the surface parameterization is kept, i.e. the mapping of surface positions to their corresponding u- and v-values (domain parameters). It avoids conflicts within modeling procedures where information of the surface domain is involved. This interpolation works well mostly for uniform interpolation positions. Auto-Cubic (Recommended) This representation generates a cubic interpolation where the parameterization of the surface gets changed. It produces better interpolation results compared to the previous representation since more fitting freedom is given. It is recommended for heterogeneous interpolation positions. Note that for both representations straight surface parts are not favorable to be modeled by a Meta surface since these cubic interpolations are not able to produce flat surfaces.

The number of surface interpolation positions determines the final accuracy with respect to the Meta surface definition and can be set too: Interpolations in Curve Direction This specifies the number of interpolation positions in curve direction, i.e. the curve which comes from the curve engine. Interpolation in Surface Direction This specifies the number of interpolation positions in surface direction which results from the specified range. Examples See fillet modeling or the axial compressor for blade related examples. An exemplary wing design is also included in this guide. See the hull design example for a maritime application. Additionally, Meta surface examples can be found in the samples area of the DocumentationBrowser.

Page 33 of 119

FRIENDSHIP-Framework User Guide A.9 Transformations

A.9

Transformations
Scaling
Object scaling is defined via the scaling entity.

Introduction
In general, objects are transformed by using two different types of transformations: Basic Transformation Translation, Rotation, Scaling, Transformation Chain, Matrix4 Shift Transformation Cartesian, Delta Shift, Delta Surface Shift, Lackenby, Delta Sum, Delta Product Shift transformations are applied to image objects exclusively while basic transformations are additionally used for transformation of coordinate systems. Location: menu > create > transformations.

1 2

Creation

Choose menu > create > transformations > scaling. Scaling Factors

Set the scaling factors for x-, y- and z-coordinates. For instance, a factor of 1 means no scaling.

Transformation Chain
In case that basic transformations need to be concatenated, a transformation chain is the entity of choice.

Creation

Translation
Moving around objects can be parameterized by means of the translation entity.

Choose menu > create > transformations > transformation chain. In case transformations have been selected, they are directly set for the chain on creation.

Transformation Chain

1 2

Creation

Choose menu > create > transformations > translation. Delta Values

Set the transformations in the right order. Note that the order affects the transformation result according to mathematical vector transformations.

Set the delta values for x, y and z.

Matrix4
This auxiliary transformation allows setting up a userdefined 4x4 matrix for transformation purposes.

Rotation
Object rotation is defined via the rotation entity.

Location: menu > create > transformation > auxiliaries.

1 2 3

Creation

Cartesian Shift
The Cartesian shift introduces wave-like deformations for a given surface. A cosine-like shift function is defined in a spherical space, i.e. for x, y and z coordinates independently. The function fades out in radial direction with regard to a source vector position.

Choose menu > create > transformations > rotation. Angle

Set the angle of the rotation in degree. Rotation Axis

Set either an index for a principal rotation axis (0=X, 1=Y, 2=Z) or an arbitrary rotation axis using a line object.

Page 34 of 119

FRIENDSHIP-Framework User Guide A.9 Transformations

Creation

Delta Curve Design

Choose menu > create > transformations > shift transformations > cartesian shift.

2 3

Source Location

Create an arbitrary shift function by using any curve type. This function should be defined in the range of the object which shall be shifted. Otherwise, the assigned value for the shift will be zero.

Set the source vector, e.g. a point object. Centralization

Creation

The source can be considered to be at the center of the cosine-function or phase-delayed at the boundary of the modified area. Set the toggle, respectively.

Choose menu > create > transformations > shift transformations > delta shift.

Principal Axis

4 5

Amplitude

Use the toggle in order to set the principal axis direction for which the shift shall be applied.

Set the amplitude value for the shift. Coordinate Components

Factor

Set the x-, y- and z-coordinate as being affected by the shift or not. For instance, in the screenshot above only the z-coordinate of the surface gets transformed. Also, set the axis extension, i.e. the range that gets transformed by the shift.

If desired, set an optional factor for multiplication of the ordinate (shift) values. This is helpful e.g. for visualization purposes when a normalized function has been designed.

Delta Curve Usage

Set the delta curve from the first step as being the shift function.

Delta Shift
This transformation allows shifting any geometry type mapped via images along a principal axis by means of a user-defined function. This function, called delta curve, is related to a principal coordinate system with a certain abscissa and ordinate axis. Finally, the shift values for each position are given by the ordinate values of the function.

Abscissa and Ordinate

Set the abscissa and ordinate axis. This provides the information of how the delta curve can be interpreted. Variation Geometry variation via shift functions is carried out by introducing design variables for the delta curve. For instance, replace discrete coordinate values of points while such a point is part of a delta curve.

Page 35 of 119

FRIENDSHIP-Framework User Guide A.9 Transformations

Surface Delta Shift


This transformation allows shifting any geometry type mapped via images along a principal axis by means of a user-defined surface. This surface, called delta surface, provides the shift values according to a specified vector component, i.e. x, y or z. At a certain surface position, the value of the component is applied for shifting.

Generalized Lackenby
This famous transformation entity is based on the original Lackenby approach but extends it by means of smooth delta curves. It is mainly utilized in systematic variations and formal optimizations in order to quickly achieve improvements of an existing ship hull.

Actually, a geometry position is projected onto the delta surface in order to determine the surface position and thus the shift value.

Initial offset data of a ship hull can be slightly moved along the x-axis according to user-defined constraints like the change of the prismatic coefficient (displacement changes) or the change of the center of buoyancy. Based on a given sectional area curve e.g. from a hydrostatic calculation and the constraints this entity internally creates fair delta curves for which the tangent angles can be controlled too. The range of the transformation and, optionally, the shift values at the bounds are user input. Apart from the sectional area curve, each input could be replaced by a design variable within a variation where a design engine automatically changes the values. Images, in particular the image offset group, can readily use this transformation. An example of a hull variation setup is given here. For further information see [Abt, Harries, 2007].

1 2

Delta Surface Design

Create an arbitrary delta surface. Creation

Choose menu > create > transformations > shift transformations > delta surface shift.

Principal Axis and Factor

Set the principal axis direction and the factor. See the delta shift for more information.

Delta Surface Usage

Set the delta surface from the first step as being the shift function.

Creation

Component of the Surface Position

Choose menu > create > transformations > shift transformations > lackenby.

Choose the component of the surface position which shall provide the shift value.

Sectional Area Curve

Set the sectional area curve. Any meaningful curve can be used as input. Typically, this curve is provided by a hydrostatic calculation of the initial (!) hull. The following command has to be inserted:
hc.getSectionalAreaCurve()

Here, hc is the name of the corresponding hydro computation which usually differs for different projects.

Page 36 of 119

FRIENDSHIP-Framework User Guide A.9 Transformations

Delta Sum
Being a shift transformation too, it combines a set of shift transformations by just adding up the shift values component-wise. Location: menu > create > transformation > auxiliaries

Delta Product
In contrast to the delta sum, single shift values from shift transformations are multiplied to each other. Location: menu > create > transformation > auxiliaries.

Coordinate System
In order to refer points to a local system, an individual coordinate system can be created. It holds the basic transformations and applies them to the points. Also, a propeller is moved in space by means of a coordinate system for positioning purposes. Finally, it is used for grid visualization within distribution design.

3 4

LPP

Set a value for the length between the perpendiculars. Delta CP and Delta XCB

Set values for the change of the prismatic coefficient and the forward position of the center of buoyancy. Note that percentage values are expected.

Creation

Aftbody Delta Curve

Set values for the aftbody delta curve. At least the start position XBeg needs to be set. Each of the remaining entries is optional. For smooth transitions, set the tangent angle TanBeg to zero. For the optional entries, the Generalized Lackenby produces default values while fair delta curves are generated.

Choose menu > create > transformations > coordinate system.

Transformation

Define a transformation either by a transformation object (translation, rotation, transformation chain) or manually by two points in space. In the latter case, the first point defines the origin while the second one aligns the z-axis. Furthermore, a rotation angle can be specified which rotates the system with respect to the z-axis.

Forebody Delta Curve

Set values for the forebody delta curve. At least the end position XEnd needs to be set. Each of the remaining entries is optional. For smooth transitions, set the tangent angle TanEnd to zero.

Display Options

Set a color, extensions and grid options.

Page 37 of 119

FRIENDSHIP-Framework User Guide A.9 Transformations

Grid View

Moving Points For point movements make sure that a principal plane is activated for the corresponding coordinate system. General Grid View Note that there is a global grid view available too for visualization purposes.

Choose All for being the grid type (display options). Select the coordinate system and activate ( ) a principal plane at the 3DView.

Note that the current coordinate system is indicated at the right lower corner of the program.

Page 38 of 119

FRIENDSHIP-Framework User Guide A.10 Images

A.10

Images 3
Transformation

Introduction
The major idea of images is given as follows: Take an existing geometry and apply transformations efficiently. By doing so, the user shall not be bothered with the mathematical representation of the geometry. Having this in mind, an image object is a transformed geometry which merely requires the following input: Source geometry Transformation

Set the transformation.

Image Curve
This image transforms a given curve according to a specified transformation. The domain of the source curve can be changed for the image curve. This enables to reorientate a curve quickly and to restrict the domain. Location: menu > create > images > image curve.

According to the specific image type, the source geometry can be given e.g. as curve, a surface, offset data or meshes. For the transformation, any transformation type can be selected which is set directly at the image. An image transforms the rendering positions of the source geometry e.g. for visualization purposes. The original input is not touched. Images are listed separately in this guide in order to clarify the specific definition of an image. These entities are very powerful in terms of modeling and variation. Also, due to their transformation strategy, a thoughtful image export has to be considered by the user for exchange of geometry among different software systems. For instance, the IGES format does not support image surfaces so they need to be converted into NURBS representations. This is done by means of approximation or interpolation where the transformed rendering positions are used. Location: menu > create > images.

Image Surface
This image transforms a given curve according to a specified transformation. The u- and v-domain of the source surface can be changed for the image surface, e.g. for trimming or orientation purposes. Location: menu > create > images > image surface.

Image Offset Group


This image transforms a given offset group according to a specified transformation. It is utilized e.g. within optimizations of given offset data in combination with a Generalized Lackenby or an arbitrary delta shift. See the lackenby example for an application. Location: menu > create > images > image offset group.

Image Surface Group


This image transforms a given surface group according to a specified transformation. Via this entity an entire set of surfaces can be transformed at once instead of setting up an image surface for each source surface. Location: menu > create > images > image surface group.

Image Point
This image transforms a given point according to a specified transformation.

1 2

Creation

Choose menu > create > images > image point. Source

Image Panel Mesh Group


This image transforms a given panel mesh group. Location: menu > create > images > image panel mesh group.

Set the source geometry, i.e. the source point.

Page 39 of 119

FRIENDSHIP-Framework User Guide A.11 Surface Meshes and Volume Grids

A.11

Surface Meshes and Volume Grids


Reversed In case the normal orientation of the panels are not as required e.g. for external programs, the orientation can be reversed. Swap Domains The u- and v-domain of the mesh can also be exchanged which might also be important for expected data arrangement of other programs. Transformation The generated mesh is instantly transformed if a transformation is provided by the user. Euclidean Spacing Some functionality is provided for generating a more homogenous mesh in case the underlying surface parameterization is very heterogeneous. Note that this is done numerically with significant additional computational costs. The casting direction specifies the more homogenous parameter direction which serves as reference for the numerically optimized direction. Automatic Type Conversion The mesh engine can also be used at places where a panel mesh is expected. For instance, putting it into a panel mesh group is supported although panel meshes are actually expected. This works because of an implicit type conversion.

Introduction
Based on modeled surface setups, surface meshes can be generated with provided entities. Furthermore, the program reads external volume grids, e.g. for transformation purposes. For blade meshing, a specific engine is available which supports creation of wake panels, for instance.

Mesh Engine
Basic surface mesh functionality is provided by the mesh engine. The number of panels in both surface domain directions is specified along with a factor for introducing panel densities.

1 2 3

Creation

Choose menu > create > meshes > mesh engine. Surface Setting

Panel Mesh Group


This entity holds a list of structured and/or unstructured panel meshes. Also, the mesh engine can be directly inserted. In particular, it provides the export functionality, i.e. in order to export any panel mesh it needs to be listed in a panel mesh group. This group is then selected for export. Location: menu > create > meshes > panel mesh group.

Set the surface if no surface was selected during creation. Number of Panels

Set the number of panels for the u- and v-direction of the surface (default: 10). Density Factors For the two parameter directions, a density factor can be set in order to introduce a global clustering. Typically, this value is located in the interval [0.8,1.2] for clustering at a specific bound of a surface parameter (u or v). Negative values, e.g. [-0.8,-1.2], introduce clustered panels either at both parameter bounds or in the center of the surface parameter interval.

Unstructured Panel Mesh


This entity as well as the structured panel mesh is used for providing data from a panel mesh import. Unstructured means that panels with three or four vertices are possibly given.

Page 40 of 119

FRIENDSHIP-Framework User Guide A.11 Surface Meshes and Volume Grids

Structured Panel Mesh


See the unstructured panel mesh. Only four vertices are allowed for the panels.

Close Mesh At the trailing edge of the blade, the mesh can be explicitly closed. This is done via taking the center of the first and last positions at the trailing edge. The center position is then applied as starting and ending position at once. Wake Panels Wake panels can be appended for the blade surface which is sometimes required by different simulation software. Non-Lifting Panels Finally, a simple tag for the non-lifting attribute can be set for the panels. This information gets stored along with the panels. For instance, it is written out for a custom integration and might be helpful in simulation software too.

Blade Mesh Engine


This entity extends functionality of the common mesh engine, see this entity for more information about the settings. The additional attributes are outlined. Location: menu > create > meshes > blade mesh engine

Page 41 of 119

FRIENDSHIP-Framework User Guide A.12 Features

A.12

Features
own sophisticated definitions or to adapt existing definitions slightly to the needs of a user. Automatic creation of a feature definition is described subsequently.

Introduction
The Feature technique has been introduced to this software in order to encapsulate any user-defined command sequence. The entire command set of the software is available for writing macros and subroutines. For instance, company-specific and recurrent modeling processes are defined only once by the engineer. The definition itself is represented by a so-called feature definition. It can be stored externally and reused e.g. in different projects. Transient vs. Persistent Based on a feature definition, transient and persistent features can be created. More detailed, there is a difference between feature and feature definition in terms of model objects: Only a persistent feature can be considered as a feature while for a transient feature merely results of command executions are visible. For access to the different creation methods, see also here. Transient The feature definition is parsed only once and the commands get executed. If creation commands of objects are given, the generated entities can then instantly be found in the ObjectTree. This execution type is useful for macro-like processes, e.g. specific curve or surface creations as well as recurrent geometry processing. Persistent If a feature definition is executed persistently, a feature object gets created and appears in the ObjectTree. The feature still holds the command structure and updates itself when its input gets changed. Generated objects that are defined in the feature definition are accessed via the feature object. They cannot be changed directly but only via the features input data.

1 2

Creation

Choose menu > features > new definition. Definition Name

Set a meaningful name for the definition.

Export Definition The definition can be stored externally via the export button. User-defined feature directories are possible to be involved. See menu > edit > settings > features. Stored definitions can then be accessed via menu > features. Reload From File Feature definitions can also be initialized from an existing, external definition that has been stored previously. Documentation Documentation with text and pictures can be set for the definition via the documentation button this opens up the DocumentationBrowser and the page where information can be placed. Recreate on Update If no basic types are explicitly used as well as control statements (If, goto, break etc.) are not involved this toggle can be deactivated which accelerates the update of the feature. The recommended default is true.

Feature Definition
The feature definition provides the platform for setting up any command sequence. It can be considered as a comprehensive scripting environment where, for instance, even I/O-functionality (file reading and writing) can be accessed. An editor helps to define input and output as well as the actual command sequence. In the following steps a definition is set up manually in order to provide an understanding of the technique. This also enables to write

Page 42 of 119

FRIENDSHIP-Framework User Guide A.12 Features

Is Drawable This can be deactivated in case that no geometry is created which needs rendering in a 3DView. It affects the update functionality of the feature, e.g. if toggled off there is no feature update due to visualization purposes. Update only on User Request If this toggle is active the feature update is exclusively triggered by the user using . There will not be a forced update e.g. from the 3DView due to visualization. Default Automatic Update If true, the feature will be updated at any time and not just e.g. if required for visualization in the 3DView. For instance, a persistent feature which is set to invisible along with deactivated automatic update will not be updated as long as nothing requests anything from it (like making it visible again etc).

Hide Input fields can be hidden so that a default input cannot be changed from outside. Category The upcoming input interface, i.e. the editor of the persistent feature, can be organized to the needs of the user. This entry creates a specified category for the editor. Label Argument name and label do not have to be identical. A label can be different in order to provide a more readable description for the user. Description This description is shown on mouse-over later on at the entry of the editor.

Command Sequence

Input Arguments

If required, define input arguments for the definition. Choose at least the input type, a name and a default value.

Enter the command sequence which follows the same rules as for the console. Use the auto-completion functionality so as to type in the commands.

Type Choose an input type which should be as flexible as possible. For instance, in case the type is FDouble then a discrete value but also a parameter or a design variable etc. can set as being input later on. On the other hand, if a FParameter type is chosen, exclusively a parameter can be set (no design variable or double value). Default Value Set a default value that suits to the type. A default value for the basic type FDouble might be 1.0 while more complex objects like curves require e.g. NULL. Allow Expression Set this to true if any expression is allowed that returns the chosen type. Following the FDouble example again, false would restrict the input to be a discrete value (no suitable objects or commands can be set).

The DocumentationBrowser lists all commands for each entity as well as global commands for setting up loops, ifand goto-statements. Examples for array parsing and setting are given later on. Also, files can be read and written via feature definitions. Finally, feature definitions allow nesting of other feature definitions too. Evaluate This checks the command sequence. Errors get underlined and red-colored. Apply This transfers changes to existing persistent features, i.e. to features that are already based on this definition.

Attributes

Any object that will be created on execution of the definition is listed here. These objects are taken from the command sequence of the last step.

Page 43 of 119

FRIENDSHIP-Framework User Guide A.12 Features

geometry that has been comfortable designed with the convenience of the graphical user interface.

Selection

Each object that shall be part of the feature definition needs to be selected, e.g. by selecting it in the tree. Input Arguments Accessible For a persistent feature, this attribute will be visible and can be accessed. It allows hiding attributes that are not important to the final feature user. Also, setting attributes accessible counts for transient executions as well otherwise required attributes are not created. If a referenced object is not part of the selection it will be set as input argument. Therefore, objects that are intended to be input arguments for the definition should not be selected.

Creation

While the objects are selected, choose menu > features > new definition from selection.

Close

Close the editor by using the button on the lower right corner. Access for Editing and Creation Feature definitions can be accessed via the menu > features or directly via the ObjectTree below the Feature Definitions branch. Use the context menu (right mouse click) directly at the definition for access.

Input Arguments

Check the input arguments of the definition for their type and name. If required, adapt them to the individual needs.

Nesting
Feature definitions can be nested, i.e. existing definitions can be directly accessed and reused inside a new definition.

Select Definition

Choose a desired feature definition by means of the provided definition editor. Note that the parent definition then works with an individual copy of the selected definition. The chosen definition needs to be available either in the project or via a user-defined directory.

Creation Transient and persistent creation is available via the menu > features or via the context menu which is given above. After creation, persistent features appear in the ObjectTree as a separate feature object with an individual input interface. Its attributes are also given below this object in the tree and can be referenced from other objects as well. Attributes are accessed read-only. For transient feature creation, the created attributes are located in the tree, too.

From Selection
Apart from manual typing, feature definitions can also be created based on a user selection. This is handy e.g. for

Page 44 of 119

FRIENDSHIP-Framework User Guide A.12 Features

Attribute Settings Object attributes are set via the member commands of an object.
// create an fspline and set the two positions, // e.g. by utilizing a line position line othercurve() ... fsplinecurve mycurve() myCurve.setStartPos([0,0,0]) myCurve.setEndPos(othercurve.getPos(0.5))

Messages

Command Sequence

Any messages can be printed out to the console via the echo-statement.
parameter v(0.5) echo(value = + v + %)

Refer to the chosen definition by adding fp_ (feature persistent) to the definition name. Persistent creation is thus indicated along with input values in the user-defined order.

Goto Statement Jumps between user-defined labels are realized with the goto-statement. This can be utilized to set up loops etc. Note that undesired infinite loops are also possible to be set up via labels.
// create a label myLabel: // // move back to the label goto(myLabel)

Arrays and Lists Definition attributes are accessed via the : character. Make sure, that these attributes are accessible. Data can be organized in lists which allow array-like access via indices. The entity group is a flexible container that holds any entity type. Therefore, on access there is a conversion required from a general entity to the specific object type. Here, mostly the parent type is used. For instance, for any curve type this is the parent type FCurve:
bsplinecurve myCurve() // create an entity group and store the curve entitygroup myData() myData.add(myCurve) // access the group: // take the first element (index=0) // and calculate the x-position at parameter t=0.5 parameter x(myData.at(0).castTo(FCurve). getPos(0.5).getX())

Syntax Essentials
Some of the most frequently used command snippets are given and explained shortly. In general, auto-completion is recommended within the definition editor. For an incomplete command this either provides the complete object/command or all possibilities immediately which saves typing time. Object Creation Any object is created by using a specific creator command. For instance, if poi + auto-completion is typed, the command gets completed to point or each available object/command is listed which begins with poi.
// this is a comment: create two points and a line point a(0,0,0) point b(1,1,1) line connection(a,b)

Loops There are different options to set up a loop. See the section global commands in the main header of the DocumentationBrowser.

Page 45 of 119

FRIENDSHIP-Framework User Guide A.12 Features

// use a design variable for discrete increments designvariable i(0) // execute the command list 10 times loop( 10, [ i+=1, echo("i="+i) ] ) // do another loop via goto which is more // convenient for complex command sequences i=0 myLoop: echo("i="+i) i+=1 // implement only the true statement // of the if-command, otherwise do nothing if( i<10, [ goto(myLoop) ] )

entityGroup myPoints() filling: // now the persistent section // within the loop beginPersistentSection point p00( #m * 0.5, 0, 0 ) endPersistentSection myPoints.add(p00) m+=1 if( m<N,[goto(filling)])

External Processes Feature definitions can also be utilized for starting external processes. For instance, this could be the run of more basic tools or other external software in order to obtain auxiliary information for design purposes etc.
// define a process object // which is linked to an executable process proc("myTool.exe") // optional: start the process and do not wait // proc.runDetached() // run the process

Detachment Almost for any object attribute an expression can be set. For instance, a parameter contains either a discrete double value or an expression (command) that returns a double value. Loops, in particular, need to be defined carefully according to expression assignments. In case the value (and not the expression) shall be actually used, then utilize the # character.
parameter a(0.5) parameter b(0.5) // create a parameter which holds the expression // and thus the dependency parameter c(a+b) // detach parameters parameter d( # ( a + b ) ) // change one of the values a = 0.25 // c = 0.75 // d = 1.0

proc.run()

File I/O Reading and writing of simple ASCII files can be done from within a feature definition too. In contrast to sophisticated integration interfaces like the generic integration, this possibility of coupling might be quickly applied for very basic input and output structures. The following example demonstrates how a text file is generated and filled up with a user-defined value. This file is then taken as input for an external tool which writes another result file (e.g. a calculation result). Finally, a result value is extracted from this result file. Such a value might be referenced with a parameter in order to provide it to the remaining model again.
// // // // set up the working directory string based on project and current design directory: 'this' will return the feature object itself, i.e. the persistent feature in the object tree

Persistent Section Loops may create large sets of objects which, in a convenient manner, shall be either visible for persistent features or created on transient execution. The following example ensures that each of the generated points is visible. Also, each gets created on transient execution. If no persistent section is applied then only the last point is visible (if set to accessible) or created, respectively.
designvariable N(3) designvariable m(0)

string workingDir( getDesignDir() + "/" + this.getName() + "/" ) // create a new path for the working directory mkpath( workingDir ) // open a file for writing FFile out( workingDir + "value.dat" ) out.openWrite() out.writeLine( "*** Generated by FS ***" ) out.writeLine( "value = " + value.toString() )

Page 46 of 119

FRIENDSHIP-Framework User Guide A.12 Features

out.close() // create the control points // start the external tool (calculation) process proc( "myTool.exe" ) proc.setWorkingDir( workingDir ) proc.setArguments( [workingDir + "value.dat" ] ) proc.run() // read the calculated values FFile in( workingDir + "results.dat" ) in.openRead() // simplified removes leading and ending // whitespaces as well as multiple whitespaces string header( in.readLine().simplified() ) echo( "first line = " + header ) // // // // split the string by means of (at least 1) whitespaces using regular expressions put single values into a list point point point point point p1(inputcurve.getPos(0.0)) p2(inputcurve.getPos(0.1)) p3(inputcurve.getPos(0.5)) p4(inputcurve.getPos(0.9)) p5(inputcurve.getPos(1.0))

// create an initial bspline curve bsplinecurve fitted([p1,p2,p3,p4,p5],3) fitted.setParametrization("unit speed") // create design variables designvariable p3x(p3.getX()) designvariable p3y(p3.getY()) // set the variables at the inner control vertex p3.setY(p3y) p3.setX(p3x) // now loop the input curve // and set up an objective functions // where distances are simply summed up int i(1) double dt(1./(N-1)) fobjectlist distances([])

FObjectList vals( in.readLine(). splitByRegExp("\s+") ) // store the first value of the list, // where explicit casts are required // in order to convert the data double resultvalue( vals.at(0). castTo(FString).toDouble() ) // close the file in.close()

loop: distances.add( pow(abs(inputcurve.getPos(dt*i)- fitted.getPos(dt*i)),2) ) i=i+1

From this command sequence, a persistent feature needs to be created. The name of the feature object will provide the directory name in the current design directory. Design Engines within Feature Definitions The following example tries to fit a bspline curve with five points with regard to an arbitrary input curve. This shows how design engines can be also used within Features (and not just for variant creation).
// wrap the input curve for reparametrization polycurve ipc([inputcurve]) ipc.setParametrization("unit speed")

if(i<N-1,[goto(loop)]) // now the objective function parameter objective(sum(distances)) // create a design engine, set variables // and objectives and run it done! de_newtonraphson opt() opt.setDesignVariables([[p3x,0,1,true], [p3y,0,1,true]]) opt.setEvaluations([[objective,true]]) opt.run()

Page 47 of 119

FRIENDSHIP-Framework User Guide A.13 Variation and Optimization

A.13

Variation and Optimization


For settings of results, select the corresponding design. Also, a root design can be selected which transfers the settings to the subsequent designs (e.g. the design below the baseline, e.g. ensemble_00 in the screenshot). Then, choose the desired result in the ObjectEditor and configure it. For instance, set the target scene where results are sent to.

Introduction
The software comes with a set of embedded variation and optimization strategies called design engines that can be readily employed. Three different types of engines can be distinguished, i.e. engines for Variation Single-objective optimization Multi-objective optimization.

Equality and inequality constraints can be considered or merely monitored as well. The corresponding design engines are explained in the following sections. The design engine can merely change values of design variables which then change dependent objects. In general, any floating-point number of the project setup can be replaced by a design variable. Each design engine at least monitors (!) constraints and objectives that have been set. However, variation engines are not able to actually consider constraints or to minimize objectives. In addition, some optimization engines consider equality constraints while others consider equality constraints. Additional information about the different design engines can also be found in the DocumentationBrowser as well as in [Press et al., 2007]. First of all, the variant management is shortly outlined in order to be able to cope with designs that get created by design engines. Comparison Visual results are compared by locking one design, e.g. the initial one, in the 3DView (!): Do a single click onto that design in the ObjectTree and choose the lock icon ( ) at the 3DView window. Now, comparison is done via browsing through the other variants in the ObjectTree by a single click again. Activation The variant management allows switching between different variants. For instance, the baseline can be replaced by any variant by double-clicking onto the variant. Also, designs can be activated directly from within generated tables.

Variant Management
A comprehensive variant management is available for either manually or automatically created variants. Besides the baseline different variants are stored in the branch designs of the ObjectTree. Results Results from internal or external computations can be configured and sent into a 3DView or into tables. Results of a variant are displayed by a single click onto the variant in the ObjectTree, e.g. select baseline below the Designs node.

Page 48 of 119

FRIENDSHIP-Framework User Guide A.13 Variation and Optimization

Lock Variants are locked by default in order to prevent unintentional modifications of activated designs. Release a variant via a single click onto the red lock icon. This is not merely the visual lock for comparison.

Design Variable
This entity enables the link between any model object and design engines. A design variable always holds a discrete double value. Usage Example See the following example for the application of a design variable. One control point coordinate of a bspline curve shall be varied by a design engine.

Inequality Constraint
This constraint type monitors a given value according to a specified bound and comparator.

Creation

Creation

Choose menu > integration > design add-ons > inequality constraint.

Choose menu > integration > design add-ons > design variable.

Monitor

2 3

Control Point Selection

Set any double expression that needs to be monitored. Mostly, a parameter is used for these purposes.

Select the desired point which is used by the curve. Coordinate Linking

3 4

Comparator

Set the desired comparator. Limit and Warning

Enter the design variable into the editor field of the x-, yor z-coordinate, respectively.

Set the limit for the monitored value, i.e. the value for which the constraint gets violated. Also, set the warning distance: In case the monitored value moves into this distance (according to the limit) an indication is given in the result tables of a run as well as in the constraint widget.

5
Now, a design engine is able to vary the corresponding coordinate. Note again, a design variable can be set whenever a double value is expected from an editor field. Quick Creation and Linking Alternatively, a design variable is quickly created and linked to the right location by using the context menu:

Update on Demand

Within automated variation/optimizations, set this toggle active. Otherwise the constraints get checked each time a supplying object is changed (e.g. by the user).

Equality Constraint
This constraint type monitors a given value according to a specified value which has to be met. It can be considered by the Newton Raphson design engine. Apart from the comparator, the setup steps are given in the description of the inequality constraint. Creation Choose menu > integration > design add-ons > equality constraint.

Page 49 of 119

FRIENDSHIP-Framework User Guide A.13 Variation and Optimization

Design Engines
As mentioned before, design variables can be changed by design engines. Different design engines are available for variation (Design of Experiments, DoE), single-objective and multi-objective optimization. The following sections shortly describe the design engines that come with the software. Location: menu > integration > design engines. Starting a Design Engine A design engine run is triggered either via the context menu (right mouse button at the selected engine) or via the toolbar where the green triangle icon needs to be chosen. General Each design engine contains a general part located at the top of the editor where engine-specific settings can be made. Preprocessing Commands A list of commands can be specified that shall be executed after (!) the design variables have been set and before (!) updating the evaluations.

Configure the views and close the editor again. This view information is later on taken when finishing the generated designs. These screenshots are then placed in the corresponding variant directory and automatically put into the designs documentation. I.e. after the design engine run, this report-like auto-generated documentation can be accessed via the object tree by clicking onto the righthand side icon ( ) of the design. Design Variables Choose the design variables from the project which shall be involved in the variation/optimization. For most engines (apart from Ensemble Investigation) the lower and upper bounds need to be set. Also, the current value of the variable can be set directly within this editor. Evaluations Choose the evaluations from the project. Note that only parameters are available within this editor. After the run, all these entries will be listed in the design engine table (result table) with the corresponding value. Make sure all parameters of interest are chosen, i.e. need to be listed in the result table. If possible for the specific engine, the evaluations can be set as being an objective that will be minimized (!).

This could be, for instance, writing out an input file that is required for the external analysis software (based on the current design). Separate the list entries by using commas. Design Screenshots Furthermore, screenshots can be taken from each generated design and its results. The setup is created by clicking onto the add icon ( ) in the design engines Design Pre/Postprocessing category.

For more than one objective, choose a multi-objective algorithm, e.g. NSGA-II or MOSA. Constraints Equality and inequality constraints can be involved. Either they are just listed in the design engine table after the run along with their design value or they are actually considered by the corresponding engine (only if possible for the underlying algorithm!).

Page 50 of 119

FRIENDSHIP-Framework User Guide A.13 Variation and Optimization

Ensemble Investigation
Variation | Objectives: Monitoring | Constraints: Monitoring The ensemble investigation permutes number series for systematic variations. Creation Choose menu > integration > design engines > ensemble investigation.

Nelder Mead Simplex


Optimization | Objectives: Single | Constraints: Inequality This is a very robust single-objective engine which is based on a geometrical approach. In two dimensions, a simplex is a triangle where each vertex represent a design. Via reflection, expansion and contraction operations the algorithm moves into a local minimum. No derviations are calculated. Typically, a large number of iterations are required for a minimu search. Creation Choose menu > integration > design engines > nelder mead simplex.

Exhaustive Search
Variation | Objectives: Monitoring | Constraints: Monitoring This engine generates a number of equidistant intervals between a specified domain (lower and upper bound) of a design variable. Then, these values are permuted. One subdivision yields in two evaluations of a variable. Creation Choose menu > integration > design engines > exhaustive search.

Tangent Search
Optimization | Objectives: Single | Constraints: Inequality The tangent search (TSearch) is a reliable optimization engine for small scaled optimization problems. It detects a decent search direction, ensures a fast improvement in that direction and keeps the search within the feasible solution space. By doing so, the algorithm proceeds in tangential direction of constraints (thats where the name stems from) and tries to avoid constraint violation. More information about the tangent search method can be found in [Hilleary, 1966]. Creation Choose menu > integration > design engines > tsearch.

Sobol
Variation | Objectives: Monitoring | Constraints: Monitoring This engine generates pseudo-random numbers based on a determinstic calculation. The resulting numbers are spread in a uniform manner across the domain space of the variable. It is mainly utilized for Design of Experiments (DoE) where the entire domain space of a design situation gets checked initially. This quasi-random alorithm is also known as low-discrepancy-sequence. Creation Choose menu > integration > design engines > sobol.

Newton Raphson
Optimization | Objectives: Single | Constraints: Equality This design engine is able to solve optimization problems that have quadratic characteristics within a couple of iterations. It is based on a local quadratic approximation of the objective function. The second order partial derivatives get calculated. Note that this engine is suitable only for a small subset of practical applications, e.g. within geometry modeling processes (shortest distance etc.) and not for typical, non-linear optimization problems. Creation Choose menu > integration > design engines > newton raphson.

Brent
Optimization | Objectives: Single | Constraints: Monitoring This engine can be applied for one-dimensional (i.e. for one design variable) problems and provides a good results in terms of computational time and robustness. No derivations are calculated. Creation Choose menu > integration > design engines > brent.

Page 51 of 119

FRIENDSHIP-Framework User Guide A.13 Variation and Optimization

NSGA-II
Optimization | Objectives: Multi | Constraints: Inequality Famous (non-dominated sorting genetic) multi-objective evolutionary algorithm based on the approach of K. Deb. For optimization, the number of generations and the population size have to be provided as input. The best designs are iterated stepwise from generation to generation via selection and mutation mechanisms. Creation Choose menu > integration > design engines > NSGA-II.

MOSA
Optimization | Objectives: Multi | Constraints: Inequality Dominance-based multi-objective simulated annealing is an extended version of the well-known single-objective version. The algorithm is based on an idea from thermodynamics where a hot metal naturally achieves a crystalline state if it is cooled down very slowly. This state can be considered as global minimum. Creation Choose menu > integration > design engines > MOSA.

Page 52 of 119

FRIENDSHIP-Framework User Guide A.13 Variation and Optimization

Design Engine Table


For each run of a design engine, a table gets produced. It shows the name of the variant along with its values for the design variables, evaluations (parameters) and equality and inequality constraints.

the design name. Projected shadows on the axes planes can be clicked too in order to select a design of interest. Please see the Diagram section for detailed information about diagram usage. Filtering Use the design state buttons at the top of the table in order to filter valid and invalid designs. Design Activation A design can be set as current design by double-clicking onto the design name in the table. Colum Hiding Click onto the icon at the top of the table and choose the columns that shall be hidden. PDF Report Auto-generated PDF reports are available. Click onto the PDF icon at the top of the table. Choose different options for the report generation within the dialog.

Sorting Apply a simple click onto the corresponding header (design variable or evaluation) for which table sorting shall be based on. It switches between increasing and decreasing values. Column Options Click onto the icons of the header entries in order to get the column options. 3D Diagrams Choose the diagram button at the top of the table. Select the quantities to plot and press OK. Also, a company logo and name can be put at the first page of the report (choose menu > edit > settings > company profile).

Single designs can also be marked for the diagram plot via the toggle box at the left-hand side of the table next to

Page 53 of 119

FRIENDSHIP-Framework User Guide A.13 Variation and Optimization

Diagrams
Choose the diagram button at the top of the design engine table to create a diagram from the table data. The diagram dialogue contains two tabs: the general tab, allowing you to define some properties of the diagram (e.g. a diagram name), and the mapping tab, which is used to select the table data for the diagram. General

Spider Web In a Spider Web diagram design variants are represented by lines connecting data on different axes. The axes can be arranged circular or parallel. In a Spider Web diagram an arbitrary number of columns of the design engine table can be displayed.

Diagram title Choose whether a title should be displayed along with the diagram by entering a title in the diagram title field and activating the corresponding checkbox. By default title display is active and the name of the associated design engine table will be used. Viewer A diagram is displayed in a diagram viewer which is a normal 3D window with a customized toolbar. When creating a diagram you can choose a diagram viewer from the viewer combo box. By default the last active viewer or the option new (if there is no existing viewer) will be selected. Once created, a diagram can be edited using the diagram button ( ) from the viewer's toolbar. Color Map For Cartesian diagrams a column of the design engine table can be mapped to the point color. To control the mapping a color map can be used. To do this active the Use color map checkbox and click the Edit color map button to customize the color map. Diagram Type Currently two different types of diagrams are available: Cartesian In a Cartesian diagram design variants are represented by 3D points. Columns of the design engine table can be mapped to point position (x-y- and z-axes), point color and point size, i.e. a Cartesian diagram can display a maximum of five table columns.

Cartesian Diagram Mapping For Cartesian diagrams the data can be mapped as follows:

Map To The mapping tab displays the five possible point properties, design engine table data may be mapped to: the x-y-z-position of the 3D point as well as point color and point size. Data Source To map a column of the design engine table to a point property select it using the combo box in the Data Source column. Title Select a title for the selected property. For the first three properties the title will be displayed on the diagram's axes. For point size and color the title will be visible when a 3D point is selected in the diagram. Bounds The next two dialogue columns allow for entering lower and upper bounds for the values displayed in the diagram. By default the smallest and greatest values (plus some offset) found in the selected column of the design engine table are entered. When the bounds are adjusted to

Page 54 of 119

FRIENDSHIP-Framework User Guide A.13 Variation and Optimization

exclude certain small or big values, the corresponding points will not be drawn in the diagram. Alternatively you can adjust the bounds by moving the sliders in the Adjust bounds column. Scale For the axis-mapped values scale is simply the length of the corresponding axis. For values mapped to the point size, scale is an actual scale factor changing the display size of the points. Please note that the scale values for the y-axis and the point color cannot be changed. Invert Point sizes may be displayed inverted (e.g. the smallest value from the mapped column of the design engine table is displayed as the biggest point). To activate this behavior use the checkbox in the Invert-column. Point Color Mapping One column from the design engine table can be mapped to the color of the displayed points. By default a color gradient is used with the smallest value being blue, the greatest value being red and the median value being green. You can however use a color map for the mapping by choosing Use color map from the General tab. When no data source for the point color is selected diagram points will be either green or red, representing feasible and infeasible designs. Spider Web Diagram Mapping The mapping for Spider Web diagrams is as follows:

Invert All axes can be inverted, allowing for the smallest value to be displayed at the upper end of an axis. Mapping Notes Please note that when editing a diagram and switching from a Cartesian diagram to a Spider Web diagram or vice versa, it is not sufficient to simply change the diagram type in the General tab. You will also have to define a new mapping. Diagram Viewer This section is about selecting and marking design variants. Some of the options available in the diagram viewer's toolbar refer to so-called marked designs. Please note that there is a difference between selected and marked designs.

Map To In a Spider Web diagram an arbitrary number of columns from the design engine table can be selected. The Map to column of the selection dialogue displays the angles in degrees the corresponding axes will be drawn at. The 0axis points from the center to the right. Title and Bounds The title and bounds columns provide the same functionality for Spider Web diagrams as for Cartesian diagrams.

A design (i.e. a point in a Cartesian diagram or a line in a Spider Web diagram) is selected by simply clicking on it. It is also possible to box-select or CTRL-click in order to select multiple designs. Afterwards, selected design(s) are marked by activating the corresponding checkbox in the object editor. Alternatively, mark designs before creating the diagram by checking the corresponding fields in the leftmost column of the design engine table. Use SHIFT to select multiple designs with two clicks. In the following the term marked design will refer to designs marked as described above.

Page 55 of 119

FRIENDSHIP-Framework User Guide A.13 Variation and Optimization

Diagram Viewer Toolbar The following elements can be found in the diagram viewers toolbar: Diagram Deletion Button Pressing this button will delete the currently displayed diagram. Drawing Style Combo Box Depending on the selected option in this combo box (e.g. Grid_and_labels_2D), certain elements of the diagram may be shown or omitted. Legend Combo Box A legend may be displayed detailing properties that are not visible in the diagram itself. For Cartesian diagrams a legend can only be displayed with an active mapping to the point size. If point size mapping is active the legend will show the different point sizes in the diagram and the corresponding numerical values. For Spider Web diagrams the legend will display the names of the design variants shown in the diagram along with the color and the stipple pattern (if active, see section Stipple Pattern Button below) of the corresponding line. To define a color for a design variant select it and choose the desired color in the object editor. Diagram Edit Button Clicking this button opens the diagram configuration dialogue for the currently displayed diagram. Diagram Selection Box Use this box to switch between diagrams in the current viewer. Variant Selection Box Use this box to highlight marked design variants or exclude unmarked design variants from being drawn. For Cartesian diagrams the highlight option causes marked design variants to be drawn slightly bigger and with the name of the variant attached to the point.

For Spider Web diagrams marked designs will be drawn with slightly thicker lines when highlighting is activated. 3D Text Button Cartesian diagrams can display axis labels as 3D Text, fixed on the axes or as 2D Text, overlaid above the axes. Toggle this button to switch between both drawing modes. For Spider Web diagrams this button is deactivated. Spider Web Diagram Button The axes of a Spider Web diagram can either be drawn as circular lines originating from a common center, or as parallel lines. Toggle this button to switch between both drawing modes. For Cartesian diagrams this button is deactivated. Dynamic Bounds Button For Spider Web diagrams activating this button will display two sliders on each axis allowing you to dynamically adjust the lower and upper bounds on that axis. For Cartesian diagrams this button is deactivated. Stipple Pattern Button This button can be toggled to switch between solid and broken lines in Spider Web diagrams. The stipple pattern used for a design variant can be defined by selecting the design variant and choosing the desired stipple pattern in the object editor.

Page 56 of 119

FRIENDSHIP-Framework User Guide A.14 Integration

A.14

Integration
Introduction
Any external software e.g. for CFD (Computational Fluid Dynamics) analysis can be coupled for assessment or design purposes. This is not restricted to commercial software. Any type of external program can be integrated which produces required output information. Generic Integration This type of integration is used if values need to be replaced and extracted from more complex ASCII templates. I.e. the input and output structure of the ASCII files (of the external software) needs to be manually explained to the FRIENDSHIP-Framework. The user defines where to read and put values within the given ASCII templates. An example can be found here. COM Interface For Windows software, the COM interface can be nicely utilized in order to exchange information between different programs. The external tool needs to provide such a COM interface. For instance, Microsoft Excel and Word can be coupled with this mechanism. More details on the specific integration types are given in the subsequent sections. First of all, the basic structure of coupling commercial software or in-house tools is described. It is based on an abstract definition (input description), a configuration (current setup with values etc.) and a computation (link to executable). Location: menu > integration.

For instance, geometry is automatically varied and need to be analyzed so the tool of choice is simply plugged-in. Resulting output data is provided, e.g. tables and pictures are directly given and accessible within the FRIENDSHIPFramework. From a users point of view, this also means that a set of different design tools is finally available through a single software environment. Depending on the different situations and external software, three major mechanisms are provided for integration: Custom Integration via XML Files Generic Integration via ASCII Templates COM Interface

Definition
The definition describes input and output of the external tool. Data which is to be exchanged is defined via socalled definition entries. For instance, an entry might be a simple value that needs to be transferred to the external tool. Entry types and optional default values can be chosen. Also, the maximum and minimum number of occurrence is set. Definitions are created and defined via the graphical user interface. See the individual integration methods of the following sections. Definition Modifications Please note that a definition cannot be changed if a configuration refers to it. Remove the definition entry in the configuration or the configuration itself in order to be able to apply modifications to the definition. Definition Entries Entries are added via the ObjectEditor: Select the definition and choose the icon of the upper right part of the editor.

Additionally, simple files can be easily read and written via feature definitions. See the corresponding file I/O section for an example. Custom Integration This integration type is the preferred way of coupling external software. It is recommended in case the following situation is given: The geometry shall be varied and exported, e.g. as IGES or STL file No ASCII input file needs to be manipulated, e.g. an external script runs the desired software and merely the geometry needs to be replaced No complex ASCII output is produced by the external software, e.g. only tables and pictures need to be involved Optional: the other software is able to provide result output in the XFFL-format of the FRIENDSHIP-Framework. I.e. the source code of the external software can be accessed.

Page 57 of 119

FRIENDSHIP-Framework User Guide A.14 Integration

Set as Expression If this option is active, expressions are allowed to be set for this entry. For instance, for a double type not only discrete values are possible but also commands that return a double value etc. Set Entry Label This allows more readable labels, e.g. with blanks, to be supplied to the user. If nothing is set, the entry name is taken as label.

Select the new entry in the ObjectEditor. Name and Type Set a name and a type for the new entry. Also, entries can be grouped by using the group type. This helps to introduce a definition structure. Simple double or integer values can be exchanged between programs but also specific file data which are shortly explained below: FResultsFileName Any external result that is of interest and needs to be available in the FRIENDSHIP-Framework is defined via this type. For instance, tables and pictures (png, jpg) can be directly loaded into the program for access or visualization purposes. Objective functions might be defined via values from tables. Also, simple ASCII text can be received too. The automatic option is a good default setting. If it does not work for some reason then set it to the specific file type. Also, the XFFL result file of a Custom Integration is specified as FResultFileName. FInputFile This type provides simple copy functionality for file data that is required by the external software. Files can be referred and they get copied into the design directory to be available for the external software. For instance, this can important for certain template files of a simulation (project file, macros etc.). Default Value A default value can be set which will be automatically set in the configuration later on. Maximum and Minimum Occurrence Set the occurrence rule for the entry which defines whether an entry is required at any rate or how often it could be set in a configuration (multiple input). Read Only In case that the entry is required as is and should not be changed by a user, it can be set to read-only.

Configuration
Based on a definition, a configuration is created. It contains actual input data of the current project for the specific software like surfaces that need to be exchanged between the FRIENDSHIP-Framework and any external software as well as discrete values for e.g. speed etc. Wizard The wizard can be additionally used in order to fill up the entries of a configuration. Select the configuration and choose Start Wizard in the context menu (right mouse button).

Computation
This object refers to a specific configuration and contains the link to the executable program. It is started from within the FRIENDSHIP-Framework. Results of computations are put into auto-generated tables or displayed in the 3DView.

Page 58 of 119

FRIENDSHIP-Framework User Guide A.14 Integration

Local Application Within the category Local Execution Settings the executable file needs to be set. Click onto the add button ( ) so that the following window appears:

Resources include computational resources (processors) and license resources. Needed Processors The number of needed processors specifies how many processors are used by the external software. E.g. analysis software might be optimized for utilizing two processors at once in their calculations. For each instance of this application that is started, the available number of processes as configured in the global settings is reduced by this number. New processes can only be started if the number of processors used by all running applications does not exceed the value configured in the global settings. Needed Licenses

Executable This file entry connects the FRIENDSHIP-Framework with the external software. Maximum Number of Running Instances This value limits the number of running instances of this external program, e.g. during variation process where more than just one computation can be started simultaneously. This gives additional control over the processes started by FRIENDSHIP-Framework on top of the global setting, e.g. due to limited available licenses. Setting this value to 0 means that the number of instances is only limited by the global setting. Enable Advanced Settings By enabling the advanced settings more sophisticated information about the required resources of this application can be configured.

This specifies how many licenses need to be available in order to run an instance of this application. Licenses can either be Hard Licenses (also known as node locked licenses) or Floating Licenses. The number of available licenses of each kind is specified in the next two settings. New applications can only be spawned if the number of available licenses is more or equal to this number. Hard Licenses This is the number of available hard licenses, i.e. node locked licenses. Each application uses the amount of licenses configured in the Needed Licenses setting, see above. Floating Licenses Multiple applications can share the same licenses by using Floating License objects. Note that this only a FRIENDSHIP-Framework internal setting; no connection to your floating license management tool is established. Additionally, floating license objects can be linked to the remote applications of a running SSH Resource Manager to obtain licenses configured there. This allows multiple instances of the FRIENDSHIP-Framework to use the same licenses without overusing the existing licenses.

Page 59 of 119

FRIENDSHIP-Framework User Guide A.14 Integration

SSH Resource Manager Setup Within the category Execution Settings of the computation, see the first screenshot of this section, an SSH setup can be created and configured for distributed computations in a network or cluster system. Please see Parallel and Distributed Computing for more information. Starting a Computation A computation run is triggered either via the context menu (right mouse button at the selected computation) or via the toolbar where the green triangle icon needs to be chosen. Access to Table Results Access to table results then takes place via the computation by using table commands. Generally, these values are stored in parameters. Such a parameter is easily created by double-click onto the table cell. Alternatively, this can be done manually, too. Use the name of the computation (here: myComp) and receive access via table indices for row and column:
myComp.getResults().getDataAt( 0, 0 )

Setup
The creation of a configuration and a computation at once is provided in convenient packages. These setups are directly accessible in the root menu integration. Location: menu > integration.

The indices are shown on mouse-over directly at the table entry which is helpful for large tables. If more than just one table is given for a computation, then a table name is additionally required:
myComp.getResults().getDataAt( table A, 0, 0 )

Custom Integration
As mentioned before, this type of integration is recommended in case no complex ASCII files need to be manipulated and resulting output files are tables or pictures. A standard XML (Extensible Markup Language) format is utilized for exchange of information between the software. This format is called XFFL (XML FRIENDSHIPFramework Language) and the type documentation can be found in the DocumentationBrowser. In particular, this integration is also powerful if access to the source code of the external software is given. The input and output format of the software can then be quickly adapted to XFFL so that data exchange is possible. Also, the FRIENDSHIP-Framework user does not need to know anything about the exchanged file format but merely copes with fixed configurations. Also, input and output maintenance is supported by the external provider where just a new definition needs to be supplied. XML Transformation via XSLT As an alternative to adapting the external tool's output to XFFL, it is also possible to transform the XML files generated by the FRIENDSHIP-Framework using XSLT 1.0 (Extensible Stylesheet Language Tranformations see http://www.w3.org/TR/xslt for details). XSLT is an XML based language to transform XML documents into

As mentioned above values can be extracted into parameters and involved in automated processes. For the parameter, set the update on demand toggle in order to avoid that the computation starts right after typing in the result command. This mechanism is also used for internal computations: See the hydrostatic calculation for an example which is also based on a definition and a project-specific configuration. Location of Result Data Input and output files are located (and need to be located) in the computations project directory of the current design. For the baseline, this directory is manual_results > baseline > computation name. In case a design engine is involved for variant creation, the directory is run name > design name > computation name.

Page 60 of 119

FRIENDSHIP-Framework User Guide A.14 Integration

other formats. While the output of XSLT may be of arbitrary format, the input always has to be XML. See also XSLT Definition Entries for more information.

Definition via Text Editors Such a definition is a simple ASCII file. It can be displayed and even created or modified in any text editor.

Custom Integration: Definition Setup The following steps depict the process of setting up a custom definition. Apart from maintenance matters, such a setup needs to be done only once for a specific external software.

XSLT Definition Entries The FRIENDSHIP-Framework allows applying XSL Transformations to both, the files generated by the FRIENDSHIP-Framework before passing them to the external tools (XsltIn), and to the files generated by the external tool before they are processed by the FRIENDSHIP-Framework (XsltOut). For both directions multiple XSL Transformations can be applied in series. They are executed in the order of their appearance in the Definition. In order to configure an XSL Transformations three input values are necessary:

1 2

Creation

Choose menu > integration > definitions > custom. Definition Access

The created definition is located in the ObjectTree within the root node Definitions. Set the branch visible by using the context menu in the tree.

Name

First, set a name for the definition which is related to the external program.

4 5

Definition Entries

Add the required entries for the external program. Result File Entry

Create an entry of type FResultsFileName. Result output of the external software is specified by this entry. Table data like csv-files and pictures (png, jpg) need to be defined here by just adding such an entry. Also, in case the external software writes out an XFFL file this file needs to be specified too.

First, the XML input file this is the file that is to be transformed into another format. Second, the XSLT Stylesheet this is the transformation written in XSLT that will be applied to the XML input file. Finally, the output file this is the result of the XSL Transformation.

Custom Integration: Usage The following steps describe how the custom definition is used for integration of the external program.

Save the Definition

After setting it up, save the definition: Click onto the definition with the right mouse button and choose Save Definition. This allows using the definition in different projects.

Creation

Choose the setup (!) via menu > integration > custom.

Page 61 of 119

FRIENDSHIP-Framework User Guide A.14 Integration

Depending on the output of the external program, data is provided in different tables and in the 3DView, see variant management for result visualization. Table data extraction is explained here. The location of result data is the computation directory of the current project. In case the definition is available in the current project, use it for the setup. Otherwise import a XFFL definition which has been saved before.

Generic Integration
Based on ASCII files for input and output, data is linked to these templates by using interactive anchor settings and replacement functionality. This integration mechanism is quickly applied and recommended if ASCII files need to be manipulated. For instance, a value of an input file shall be replaced to change conditions or a certain value from a complex ASCII output file is wanted for evaluation. Detailed Example As an example, please see the samples of the FRIENDSHIP-Framework within the Documentation Browser where the jumper project can be found. It nicely shows how an arbitrary external program can be coupled with the Generic Integration. This little example is also part of this User Guide (examples section, Integrate External Software) and comes with a detailed documentation, see here.

Configuration

Set the entries of the configuration with values and objects of the current project. Again, entries can be added at the top of the ObjectEditor while the configuration is selected.

Result File In particular, set the name of the external output file.

Computation

Select the computation and apply the following settings: Command File Set a name for the command file which will be written out. This file will serve as input for the external program. Arguments If required, set arguments for the program call. Executable Finally, choose an executable program.

Generic Integration: Definition Setup The following steps depict the process of setting up a definition for a generic integration.

1 2

Creation

Choose menu > integration > definitions > generic. Definition Access

4 5

Run the Computation

Select the computation and run it. Results

The created definition is located in the ObjectTree below the root node Definitions. Set the branch visible by using the context menu.

Results are directly loaded into the FRIENDSHIPFramework based on the specified name of the result file. Again, this output file needs to follow the XFFL format and is written by the external software.

Name

First, set a name for the definition which is related to the external program.

Definition Entries

Add the required entries for the external program.

Page 62 of 119

FRIENDSHIP-Framework User Guide A.14 Integration

Additional Result Data Note that also resulting table data and pictures can be involved as FResultsFileName entry. This data will then be automatically loaded into the FRIENDSHIPFramework. Tables can be accessed and used for evaluation e.g. within an optimization too.

Table Names Again, choose a template ( ). In this case, the name will be the table name which is important for result extraction later on. Different output templates (i.e. files) will produce different result tables.

Save the Definition

Column Separator

After setting it up, save the definition: Click onto the definition with the right mouse button and choose Save Definition. This allows using the definition in different projects.

Define the column separators where mostly whitespaces or tabs are used. Also, any regular expression [e.g. Wikipedia, 2009] is possible.

Definition of Result Values

Generic Integration: Usage Based on the definition of the external program, the further integration process is outlined.

Define the result values which are available and of interest. Name and Type Add a new value via the icon and set a meaningful name. Also, set the type of the value. Line and Column Use these two boxes in order to browse through the result file and to mark the value of interest. The corresponding value is indicated in the table view above. Anchor String and Occurrence In case the result file may differ for different runs, an anchor string might help to identify the desired value. The first or last occurrence of the anchor string can be used to mark the value.

Creation

Choose the setup (!) via menu > integration > generic. See the custom creation for a screenshot and more information about the creation dialog. A configuration and a computation get created. Also, an editor for generic integrations appears.

Command Template

The entries of the configuration that has been created need to be linked once to the input file of the external program. This is done via the Commands option of the editor. Select an existing command file via the lower icon which shall serve as template. It gets loaded into the editor.

Configuration

Linking of Configuration Entries

In the ObjectTree, select the configuration and set values, e.g. use design variables etc. This is now the input for the external program and gets transferred to the input file in the manner as defined above via the generic integration editor.

Mark the numerical data in the editor by using the mouse. Then, choose an entry that shall be linked to the data via the context menu (right mouse button). Linking data is realized by using the name of an entry, i.e. not the label of the entry. Make sure that the correct entry type was chosen before (if not, see definition modifications for more information).

Computation

Select the computation, set arguments and an executable program. Finally, run the computation. Result data is located in the project directory. See the following screenshot for a table result and result extraction.

Results Template

Choose the Results template in order to process the output of the external program.

Page 63 of 119

FRIENDSHIP-Framework User Guide A.14 Integration

COM Interface
The COM (Component Object Model) interface was introduced by Microsoft for communication between different Windows applications [Microsoft, 2009]. It allows comfortable access e.g. to MS Word or MS Excel but also to maritime applications like Hydromax [FormSys] for which access is readily available. The COM interface is mainly used from within a feature definition. Further documentation is available in the DocumentationBrowser where examples and tutorials are given. Also, a feature definition that supplies the HTMLdocumentation of a COM application can be readily used. Example In order to introduce the COM functionality, an Excel file shall be employed which simply calculates the sum of two given values.

calculated value is received. Finally, the application is quit. See the documentation of Microsoft for more information about the commands.
// create the com object and link it to Excel, // set it invisible there is no need // for Excel to pop up comObject excel() excel.setComObject("Excel.Application") excel.call("SetVisible",[false]) // open the workbook with the provided file name, // activate the add sheet excel.call("Workbooks.open",[file.getFileName()]) excel.call("Worksheets(add).activate") // insert the two values for addition excel.setProperty("Worksheets(add).Range(A1). Value",[a]) excel.setProperty("Worksheets(add).Range(B1). Value",[b]) // receive result value from Excel and store it double value( excel.call("Worksheets(add).Range(C1).value"). castTo(double) ) // save the workbook and quite Excel excel.call("Workbooks(1).save") excel.call("Application.quit")

From within the FRIENDSHIP-Framework, this Excel file is chosen. Then, the resulting persistent feature allows setting the two input values and calls Excel. Finally, the result value is received via the COM object and the result value is sent to a user-defined table for access.

Feature Creation

Creation of a Feature Definition

Create a persistent feature and set the desired input data.

Create a new feature definition. Set a name for the definition and choose at least a FFileIn argument (do not allow expressions via the toggle). This will be the Excel file. In addition, two further input values of type FDouble are required.

Result Data

The result value can now be referenced directly via the feature using the : character (quicker: use the key shortcut ALT for pasting names, see gestures).

COM Object

Create a COM object and set the application. For this Excel example, a so-called workbook is opened and the first sheet with name add is activated. Then, the two values are written into the corresponding cells and the

Page 64 of 119

FRIENDSHIP-Framework User Guide A.14 Integration

Generic Results
Tables are often required and handy for relating input data and results of integrated software, for instance. For this reason a generic result table can be generated from within a feature.

In some cases, however, it is helpful to organize large sets of data in a table. Such a table can be created via the generic result functionality from within a feature definition. Result access then follows the same rules using table commands.

See the following command sequence for table creation which continues the feature definition of the COM example:
// create results for this feature genericResults results(this) // command addTable returns the table data // table: 1 row, 3 columns, name FromExcel ftabledata td( results.addTable("FromExcel",1,3) ) // set labels td.setVerticalHeader(0,"Values") td.setHorizontalHeader(0,"A") td.setHorizontalHeader(1,"B") td.setHorizontalHeader(2,"Addition C = A + B") // insert data into the cells, // value is received from Excel td.setData(0,0,a) td.setData(0,1,b) td.setData(0,2,value)

Set the generic results to be accessible for result extraction via a parameter that contains the following command:
myFeature:results.getDataAt("FromExcel",0,2)

Here, myFeature is a persistent feature which is based on the command sequence from above.

Page 65 of 119

FRIENDSHIP-Framework User Guide A.15 Parallel and Distributed Computing

A.15

Parallel and Distributed Computing


time then the current action is aborted. 0 means that no timeout is considered which might block the program in certain cases where no external response is available for some reason (e.g. due to network problems etc).

Introduction
In general, computations can be executed concurrently on the local computer considering the available processors or they can be distributed to e.g. a cluster system using SSH. For local computing, merely the general settings as described below need to be checked by the user as well as the setting at the corresponding computation. Remote computations, however, require the so-called resource manager which needs to be installed and configured, e.g. by a person who is responsible for network administration. Then, a resource manager setup is defined within the FRIENDSHIP-Framework which defines the connection to external, available applications via the resource manager. Such a setup is finally chosen at a computation object.

SSH Resource Manager


The SSH Resource Manager is the external tool that enables the FRIENDSHIP-Framework to distribute computations among several computers. It is a Java application that may either be used as a stand-alone program or as a servlet deployed on a servlet server (e.g. Tomcat). It can be run on any computer and operating system for which the Java run-time environment (Version 1.6) is available. In order to use the SSH Resource Manager for computations it needs to be configured to suit your network and application setup. To do so a web-application is provided that may be deployed on any web-server running PHP. Both, the SSH Resource Manager and the configuration application, can be found in the installation directory of the FRIENDSHIP-Framework (see subdirectory tools). Additional information about setting up and running the SSH Resource Manager and the configuration application can be found in the respective docs directories.

General Settings
First of all, basic configuration issues are briefly described. The following settings are available via the menu > edit > settings:

Resource Manager Setup


The setup to use the resource manager for a computation needs to be done at least once via the graphical user interface of the FRIENDSHIP-Framework. These settings are stored in the user configuration file. It can be accessed via the ObjectTree, node administration > resource managers.

Polling Frequency This value specifies the time interval [ms] which is used in order to check whether a computation has finished. Maximum Number of Processes Local computing: This is the total maximum number of locally running processes allowed. Generally, this number corresponds to the number of available processors, e.g. for 4 processors a maximum of 3 is recommended so that the software itself is not affected. Timeout Interval This time [s] is used for communication with the SSH resource manager: if no signal arrives after this period of

Page 66 of 119

FRIENDSHIP-Framework User Guide A.15 Parallel and Distributed Computing

Select the SSH setup: Required information for the resource manager needs to be provided by the user where these settings are described below. SSH Resource Manager Address This is the URL of the resource manager servlet, for instance http://myServer:8080/. Creation The setup can be created via the corresponding button at the computation. Alternatively, the following command creates a setup by using the console:
resourceManagerSetupSsh()

Resource Manager User Name The user name is required for authentication at the resource manager. Resource Manager Password This password is required for authentication. SSH User Name (optional) The SSH user name is used by the resource manager in order to establish a connection via SSH to a remote host. This name can be pre-configured using the web application from the provided zip-file. SSH Password (optional) This is the SSH password for authentication with remote hosts.

After creation setup is stored in the administration node where also the default local setup can be found. Again, configuration of these setups is conveniently done via the button of the computation but can be also done directly in here.

Page 67 of 119

FRIENDSHIP-Framework User Guide A.15 Parallel and Distributed Computing

Remote Application
For each computation type the desired resource manager setup can be chosen first. In the second step, the available applications are automatically provided and listed within the SSH execution settings:

Such an expression matches any file ending with ".dat" except those that start with "input" while ignoring the case, e.g. iNp123.dat, but not iNput123.dat. Example 3:
regexp(([a-z][0-9]).*)

This matches any file that starts with a lower case letter followed by a number, e.g. f7.ext, but not ff7.ext. Example 4:
regexp(results(1|2)\\.dat)

This matches only results1.dat or results2.dat. Example 5:


regexp((?!file1\\.dat$|file2\\.dat).*)

This final example matches all files except for file1.dat and file2.dat. Note that it is not enough to use
regexp((?!file1\\.dat$|file2\\.dat))

as you always need a positive match for a regular expression. If the copying of output files to the Framework fails due to network issues, for example, the button next to it will be enabled and allows to re-request the result files. Delete Result Files from Resource Manager Remote Application An update of the applications list on remote hosts can be requested via the button of Remote Applications ( ). Requested Output Files Here you can specify which result files are copied from the computer running the resource manager to your local machine. This can be a comma separated list of files, including wildcard expressions and regular expressions (Java Syntax). In order to use a regular expression apply the syntax
regexp([<your regular expression>])

This setting determines whether the result files of the external program are deleted from the temporary directory on the computer running the resource manager after they were transmitted to the machine running the FRIENDSHIP-Framework. Notify By Email When Finished If the user of the SSH Resource Manager has an email address configured, this option can be selected to receive an email when the computation has finished.

Example 1:
"output.dat, *.png, regexp((?i).*ship.*)

This would match the file "output.dat", any file ending with ".png", and any file that includes the word "ship" ignoring the case. Example 2:
regexp((?i)(?!input).*\\.dat)

Page 68 of 119

FRIENDSHIP-Framework User Guide A.15 Parallel and Distributed Computing

Task Monitor
This window shows all processes that are started by the FRIENDSHIP-Framework and those which are finished or failed. The upper part of this window lists the single processes while the lower part shows the output of the selected process. I.e. the console output of an external program running in batch mode can be directly shown in this lower window during a run by selecting the corresponding process.

For remote computations this needs to be refreshed ( ) manually by the user in order to keep network traffic low. For runs on a local PC the output is updated continuously automatically. Location Choose menu > windows > task monitor.

Page 69 of 119

FRIENDSHIP-Framework User Guide A.16 Visualization

A.16

Visualization
Introduction
Visualization issues comprise both the support for an engineer to clarify the design process and dedicated 2D/3D presentations for customers. Major visualization elements are introduced which help in the daily work but also for sophisticated product animations.

1 2 3

Creation

Choose menu > visualization > GL picture frame.

GL Image
This entity efficiently transforms a list of geometry objects. Entire geometry visualizations are instantly duplicated and transformed. For instance, animated blade rotations can be nicely realized via GL images and timers while keeping the computational costs low.

Picture

Choose a picture via the button at the image attribute. Adjustment

Set a plane and coordinate positions for the picture, if required. Also, use the mirror and rotate options for further adjustments.

GL Clipping Cube Setup


Clipping enables quick view restriction for a region of interest. It can be readily applied by means of the provided setup feature.

1 2 3

Selection

Select the desired geometry. Creation

Choose menu > visualization > GL image. Transformation

Set a basic transformation for the GL image. This excludes shift transformations.

Creation

GL Picture Frame
Any picture can be loaded into a plane of the 3DView, e.g. for remodeling purposes (lines plan, functional distributions). The supported file formats are png, jpeg and gif.

Choose menu > visualization > GL clipping cube setup. On creation, choose a scene for which clipping shall be applied.

Lower and Upper Corner

Two points get created automatically. Use this corner points to select the region of interest.

Page 70 of 119

FRIENDSHIP-Framework User Guide A.16 Visualization

Clipping Cube

The clipping cube object is located in the administration branch, node 3D-Clipping. Activate the cube by using the corresponding toggle. Choose the different positive or negative axes to be clipped. Scenes In case the clipping cube shall be used in another scene, select the current scene (administration > 3D-scenes) and deselect the cube in the display options. Then, choose the other scene and set the cube again.

In order to animate a blade rotation, a GL image of the blade is transformed with a rotation object. This rotation receives the angle value from a design variable. In this example the design variable is called delta and the timer contains the following command list:
[ delta += 2, IF( delta >= 360, [ delta = 0 ] ) ]

It increments the value by 2 and resets the value each time if it is greater than 360. The time interval shall be around 20 msec. The angle value of the rotation is defined as follows:
index * 360 / N + delta

Here, the number of blades is specified by the variable N and index denotes the index of a single blade.

Timer
A set of commands is executed by the timer object according to a specified time interval given in millisecond.

Linear Dimension
Add dimensions to geometry via the linear dimension entity. For instance this also supports the understanding of parametric designs where model parameters can be visualized by dimension lines.

1 2 3 4

Creation

Choose menu > visualization > timer. Command List

Set a command list which shall be executed periodically. Interval

Set a value for the time interval. Start

In order to start the timer click either onto the timer icon in the ObjectTree or use the green-colored triangle-like button in the toolbar. Example For animations, the design engine concept can be applied: Introduce a design variable at a certain place in the model setup. Instead of changing the design variable by a design engine, a timer is now utilized. The timer object simply increments etc. the design variable with respect to a defined time step.

Creation

Choose menu > visualization > comments > linear dimensions.

2 3

Comment

Set a comment for the dimension, if required. Start and End Position

Set a start and end position for the dimension. Optionally, set a separate position for the text.

4 5

Plane

Choose a plane for the dimension. Configuration

Configure the text and its background to the specified needs.

Page 71 of 119

FRIENDSHIP-Framework User Guide A.16 Visualization

3
Label
A label represents a piece of text that is put anywhere in the 3D space. Settings are similar to the linear dimension.

Fore- and Background

Set a color for the text as well as a font and set the background of the legend.

Display Options

Set a scene into which the legend is sent. Choose full names or local names to be displayed. The position of the legend is set via the two numbers that describe the location related to a screen interval [0,100]. Grid View Introduce a coordinate system in order to combine a legend with a grid view.

1 2 3

Creation

Bar Chart
This entity allows mapping of double values to visual bar charts. An arbitrary number of bars is displayed depending on the given list size.

Choose menu > visualization > comments > label. Position and Text

Set a position, plane and a text. Origin

Optionally, set an origin into which a line is drawn in order to point to a position of interest.

Configuration

Configure the text and its background to the specified needs.

1
Legend
A legend is helpful for identification of colored geometry objects.

Creation

Choose menu > visualization > comments > bar chart.

Input Values

Insert as many values as desired into the list. These values are related to the subsequent lists for labels and colors. Not only discrete values are possible but also any expression (command) that returns a double value.

3 1 2 4 5

Labels and Colors

Set labels and colors for the bars. Selection Foreground and Background

Select all objects that shall be given in the legend. Creation

Apply settings for the fore- and background. Display Options

Choose menu > visualization > comments > legend.

Send the bar chart to a specified scene. Also, set the position and extensions as well as further display options.

Page 72 of 119

FRIENDSHIP-Framework User Guide A.16 Visualization

Skybox
Utilizing feature definitions, a skybox setup is provided. For product presentations, the final geometry can be rendered in realistic 3D environments.

2D Window Setup
In order to create engineering drawings, use the 2D window setup which is provided as feature definition for convenience purposes.

Creation Choose menu > visualization > 2D window setup. Propeller For the propeller entity, drawing mechanisms are implemented. Use Drag&Drop (e.g. multiple times) in order to put propeller objects into a 2D window for drawing. For configuration, select the item in the 2D window so that attributes can be changed in the ObjectEditor.

Choose menu > visualization > 3D skybox setup. The upcoming objects can be stored exclusively in the project by using the toggle in the dialog. Otherwise, the skybox is present also after restart of the program.

Configuration

See the administration node (3D-Skyboxes) for configuration of the skybox. Texture switches and wave settings are provided.

Page 73 of 119

FRIENDSHIP-Framework User Guide A.17 Import and Export

A.17

Import and Export


Circular Arc (100) Composite Curve Entity (102) Conic Arc (104) Line (110) Point (116) Ruled Surface (118) Surface of Revolution (120) Transformation Matrix (124) Rational B-Spline Curve (126) Rational B-Spline Surface (128) Curve on a Parametric Surface (142)

Introduction
Different import and export formats are available as well as data connectors which are described in the following sections. Import Location: menu > file > import Export Location: menu > file export Connector Data connectors are used for visualization and transformation of larger data files, e.g. for grid deformations. The data is not imported but only visualized. For each connector a transformation can be set where the transformed data is either written into the same file or into a specified one. Location: menu > file > connector Settings Export settings, in particular, can be configured in the administration branch, see the figure below.

Note that image curves and surfaces get converted into NURBS types (126, 128). Settings for this conversion are controlled via the IGES export object in the export node of the administration branch. Blending surfaces like the Meta surface and the Generic Blade hold an NURBS representation which is exported for an IGES exchange.

Offsets
Polygonal point data is represented by the offset type. For this data, import and export is provided following a simple file convention:
group name x0 y0 z0 1 x1 y1 z1 0 ... xn yn zn 9 end

Current Design
A current design can be exported in order to separate it from a comprehensive investigation setup, for instance. Choose menu > file > export > current design.

Multiple groups are possible and automatically arranged in an offset group assembly. Here, 1 means that a new offset starts while 9 indicates the end of the group. The word end is required at the end of the file. The file name itself ends with .shf, e.g. myfile.shf. Alternatively, simple x-, y- and z-coordinates are possible:
x0 x1 x2 x3 x4 y0 y1 y2 y3 y4 z0 z1 z2 z3 z4

IGES
The following entities are supported for the import and export of IGES (Initial Graphics Exchange Specification) files:

An empty line indicates that a new offset starts. For this kind of data the file name needs to end up with .xyz, e.g. myfile.xyz

Page 74 of 119

FRIENDSHIP-Framework User Guide A.17 Import and Export

OpenNURBS
Exchange functionality for 3DM files (Rhino) is provided via the openNURBS interface. Note that for import and export only a subset of entities is supported: Points B-Spline curves and surfaces

Import The discrete profile point data of each given section is imported (2D/3D) along with radial distributions of rake, skew and pitch (imported as linear bspline curves). Simple NURBS surfaces for suction and pressure side get created automatically. The radial functions and even the individual profile sections of each radius can be manipulated which gets directly transferred to the two NURBS surfaces. Furthermore, the manipulated blade can be exported as PFF again via a given Feature (PFF Manager) that has been created through the import.

STL
Unstructured triangulated surfaces can be exported via the STL export. Connector Furthermore, STL data can be visualized and transformed by means of the STL connector. STL Output Control Note that STL data can be made watertight by using the STL Output Control. This means that e.g. varied parametric models still keep a watertight topology during the variation and its individual STL export process. Please get in touch with us if you want to use this control for which a Beta-version is available for free usage. Location: menu > file > connector > STL

Panel Mesh
Surface meshes can be imported and exported via the panel mesh format. Panels with three or four vertices are allowed. The format contains the indexed positions along with the corresponding panel indices. The first number indicates the number of vertices. Then, the vertices follow where an index is given too at the end of the line. In the panel section, the number of panels is given first. At the beginning of a line, 3 or 4 indicates the number of vertices for a panel. The vertex indices are given along with the panel index (last number in the line).
121 0.00000 1.38750 2.55000 3.48750 ... 1 4 1 4 2 4 3 ... 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1 2 3 4

COLOUR STL
Unstructured triangulated surfaces can be grouped by colors and exported via the COLOUR STL export. Connector Colored STL data can be also visualized and transformed by means of the common STL connector. Location: menu > file > connector > STL

2 3 4

13 14 15

12 13 14

1 2 3

PFF
The PFF (propeller-free-format) provides a radial description of a blade where sectional data of a number of profiles is stored. It is mainly used in the maritime field. The y-coordinate for the suction side and pressure side is given as discrete numbers along the x-axis. The latter is related to the chord length (percentage). Values for rake, skew and pitch as well as profile thickness information are also stored. Export Select a propeller and choose menu > file > export > PFF.

Techplot (Subset)
A subset of Techplot import is provided. This functionality is also implicitly used for result visualization of designs that contain Techplot data.

Wave Pattern (nuShallo)


Common wave patterns of the CFD software -Shallo [HSVA, 2009] can be imported and visualized.

Page 75 of 119

FRIENDSHIP-Framework User Guide A.17 Import and Export

Configuration SHIPFLOW
CFD configurations (ASCII files) for the Swedish simulation software SHIPFLOW [FLOWTECH, 2009] can be imported. They are directly converted into a configuration in order run the CFD from within the FRIENDSHIP-Framework.

GridPro (stl.tmp)
The stl.tmp format can be considered as a reduced STL format. It is used by the grid software GridPro [PDC, 2009].
4 1.0 2.0 3.0 4.0 3.0 4.0 3.5 3.5 2 1 3 2 0 4 1 2 0 2.0 2.5 3.0 4.5

Configuration FS-Modeler
Setup files for the FRIENDSHIP SYSTEMS parametric modeler can still be imported. Note that there is no further support for this software it is fully replaced by the FRIENDSHIP-Framework.

First, the number of vertices is given which is followed by the vertex coordinates for x, y and z. Then, the number of triangles is given (here: 2) and the indices for triangle constructions. 0 means return to the first vertex again.

Wakefield
Wakefields for maritime applications can be imported and exported. They are used for visualization matters and as input for integrated CFD calculations. Import A comma-separated file format is expected which gives the x-, y-, z-coordinates and the corresponding velocities u, v and w. The wakefield needs to be located in the xplane and sorted by angles. For a fix angle position the values are given where the radius increases; then for the next angle position the values are given and so on.

Plot3D
This format is used for export of panel meshes in the Plot3D (p3d) format. It is a simple ASCII file format that originates from the Plot3D program developed by Pieter Buning at NASA Ames [Plot3D, 1990]. It is widely diffused in CFD codes. Different specifications exist for solution and grid files. In detail the grid files which are exported from the FRIENDSHIP-Framework have the following structure:
(Number of grids) N (Dimensions of the grids) L1 M1 N1 L2 M2 N2 ... Lnb Mnb Nnb (x-coordinates for the first grid) x11 x12 ... x1N1 (y-coordinates for the first grid) y11 y12 ... y1N1 (z-coordinates for the first grid) z11 z12 ... z1N1 (flag values for the first grid) m11 m12 ... m1N1 (x-coordinates for the second grid) x21 x22 ... x2N2 ... (x-coordinates for the nb-th grid) znb1 znb2 ... znbNnb (flag values for the nb-th grid) mnb1 mnb2 ... mnbNnb

Wavefront OBJ Connector


The Wavefront OBJ connector imports geometry data which is given in the open geometry-only OBJ file format (.obj files). Transformations can be applied to the imported geometry. Location: menu > file > connector > wavefront OBJ

Here, Ni = Li x Mi x Ni is the number of grid nodes for the i-th grid. The ordering of the grid node information is such that if a node number i corresponds to the point (l,m,n) in index space, then node i+1 corresponds to point (l+1,m,n). The preferred file name suffix is .p3d.

Page 76 of 119

FRIENDSHIP-Framework User Guide A.17 Import and Export

GeomTurbo
This is a special turbomachinery export for direct coupling of blade surfaces like compressor blades with NUMECA software. It supports Meta Surfaces that are designed by means of the Stream Section type. Radial sections get exported in the 3D space along with the curves that describe the channel geometry.

Page 77 of 119

FRIENDSHIP-Framework User Guide A.18 Batch Mode

A.18

Batch Mode
openProject("C:\fw\myProject.fdb") // change some objects, here: design variables |designvariables| width.setValue(0.50) |designvariables|radius.setValue(0.25) // export new STL geometry stlOutputControl.exportColourStl("geom.stl") exit(true)

Introduction
The FRIENDSHIP-Framework can also be started in a non-GUI (Graphical User Interface) version, i.e. in batch mode. This might be of interest in work flows where e.g. merely a geometry engine is needed which takes some input and exports varied designs. The following steps describe how the batch mode can be used.

Project Setup

Start to create and setup a FRIENDSHIP-Framework file (.fdb) with the standard GUI version.

Note that each object (and not only design variables) in the project can be addressed and changed by using its member commands.

Script

Batch Call

Write an ASCII-file (.fsc) which will control the upcoming batch mode call. Example File: myScript.fsc See the following lines for an example script with name myScript.fsc. The script opens the project file, changes some values of design variables and exports the resulting new geometry as STL data:

Finally, run the FRIENDSHIP-Framework in the batch mode by using the following commands: Windows PC
Framework_crt.exe myScript.fsc

Linux PC
Framework_crt.sh myScript.fsc

Page 78 of 119

FRIENDSHIP-Framework User Guide

Part B | Examples

Page 79 of 119

FRIENDSHIP-Framework User Guide B.1 Getting Started

B.1

Getting Started

Introduction
Simple examples are presented which introduce the fundamental concepts of the software. Basic geometry is modeled and linked to design engines for variation of the shape.

Geometry Variation
As an initial example, a cylinder is modeled and varied. First, a line is rotated around a principal axis which yields the cylinder surface. Then, some parameters of the design are linked to design engines via design variables.

Set the name to end and insert add an offset value to the z-coordinate, i.e. +1. The end point now has the same x and y-position as the starting point but a different height.

Line

Select (!) the two points for the start and the end position, either in the ObjectTree or in the 3DView. Take care, that the start position is selected first. Then, create a line via menu > create > curves > line. This again takes the two points as input for creation: Start and end positions are automatically set. Choose contour as name for the line:

Start and End Position of a Line

Create a point which shall describe the start position of a line. Choose menu > create > points > 3d point.

Line Creation: Alternative Method Set the name to start and insert a value of 1 for the xcoordinate. End Position While the starting point is still selected, press the key F12. This calls the last creation command and takes information of the selected point into account for creation. Without point selection, create a line via the menu and insert start and end position manually. Use the ALT-key in order to paste the name into the editor field.

Page 80 of 119

FRIENDSHIP-Framework User Guide B.1 Getting Started

Surface of Revolution The coordinate is now defined via changing the value of design variable radius. Such a change can be done manually (just by entering another number for the radius) or via design engines, see step 6. Height Add another design variable for the height of the cylinder (also, call it height). Insert it at the z-coordinate of the contours end position:

Create a surface of revolution via menu > create > surfaces. Set the attributes as follows:

Volume Calculation

For demonstration purposes, create a parameter which shall calculate the volume of the cylinder. Choose menu > create > parameters > parameter. The contour is now rotated around the principal axis z. In circumferential direction of the surface, the surface resolution is increased to 200 for smoother visualization. Based on the two design variables radius and height, the volume can now be calculated as follows:

Design Variables

Create a design variable which shall vary the radius of the cylinder: Choose menu > integration > design add-ons > design variable (alternatively, mark the number and click right mouse button > create design variable). Select the design variable, name it radius and set the value to 1. As similar described here, replace the x-coordinate of the contour start position by the variable: Here, the two global commands pi() and pow() are used.

Page 81 of 119

FRIENDSHIP-Framework User Guide B.1 Getting Started

Design Engine Setup

Post-Processing

Create a design engine via menu > integration > design engines > ensemble investigation. The created engine is now given in the node Design Engines in the ObjectTree.

A table gets created which shows the variant information for each design. Diagrams and PDF-reports can be created from this table. Also, sorting of values (e.g. sort variants by their increasing volume) is provided by doubleclicking onto the header.

Select the design engine and configure it: Design Variables Choose the two design variables and set a number series. In our example, the radius and height shall be varied between 0.5 and 1 using 5 equidistant values. Evaluation Choose the volume parameter as evaluation. Design Activation A design is activated for processing either via the table or via the ObjectTree. As a precaution a design is locked (see icon at the right-hand side of the design name).

Variation

Finally, run the design engine.

Page 82 of 119

FRIENDSHIP-Framework User Guide B.1 Getting Started

Parametric Hull Surface


The fully-parametric design of general surfaces is described in detail. As an example, a basic yacht hull gets created. The central surface type is the Meta surface. This technique can be transferred to arbitrary functional surfaces like blades, volutes, rudders, wings etc.

Feature Definition Arguments

Input values of type FDouble are needed for the current xposition, z-positions at the bottom (keel) and the top (deck) and beam. Also, the angle at the deck and the inner weight of the upcoming NURBS curve shall be possible to set. Optional, set meaningful names for the categories in order to group the input for the interface layout.

In steps 1-4, the sectional curve of the hull is defined as NURBS curve within a feature definition. This curve will mathematically describe the surface at each x-position and is defined in the YZ-plane. Then, functional curves are created which describe the curves input parameters in a certain range (i.e. the length of the hull). These functions are linked to the curve definition via a curve engine which finally allows creating a Meta surface.

Feature Definition Create Function

First, the bottom position is defined by the x-position and the keel z-position. Secondly, the top position at the deck is given by the beam and deck z-value, respectively. The inner point of the NURBS curve is located in such a manner that the given angle value is met. Here, the tangent value is calculated via the global command tan().

Create a Feature Definition

The sectional NURBS curve shall be defined within a feature definition. Create a new definition via menu > features > new definition. Set the name of the definition to sectionCurved, for instance.

The NURBS curve is then defined by the three points and the input weight. Note that for the first and the third point a weight of 1 is assigned (default). This input weight will control the local shape of the curve. Finally, close the window.

Page 83 of 119

FRIENDSHIP-Framework User Guide B.1 Getting Started

Feature Definition Attributes

Length Parameter Take care the the last position of each function involves the length parameter from the previous step. X-Position Note that also a function x = f(x) for the x-position is required, i.e. it provides the x-position for a certain abscissa value. Here, a simple linear function can be created either represented via a bspline curve too, a line or a generic curve. This function shall also involve the length parameter (end position).

After pressing the Apply button the section needs to be made accessible:

7 5
Length Parameter Create a parameter (menu > parameters > parameter) for the length of the surface and set it to e.g. 1 initially.

Curve Engine

Functional Distributions

Now, the functional distributions need to be linked to the feature definition. Create a curve engine (menu > curves > curve engine), choose the feature definition sectionCurved and the base curve section. Note that the correct Y-plane is chosen which refers to the given functions!

The input (Feature Definition Arguments) shall be given by functions. Create arbitrary functions in the Y-plane: Choose create > menu > curves > features > bspline curve | initial planar. Choose the ZX-plane and e.g. three points to be created.

Create functions for the keel, the beam, the angle and the weight.

In this example, the angle function is designed in a normalized system (i.e. the maximum ordinate is 1) so that the values are multiplied by a factor (45 degree).

Page 84 of 119

FRIENDSHIP-Framework User Guide B.1 Getting Started

Meta Surface

Section Visualization Select the surface and use series and series parameters in order to define the section positions for visualization.

Create a Meta surface (menu > create > surfaces > meta) and set it according to the following screenshot:

Now, the surface is visible. See the Meta surface type for more information about e.g. the base position. An entire, exemplary project setup is given below:

Page 85 of 119

FRIENDSHIP-Framework User Guide B.1 Getting Started

Parametric Diffuser Surface


In this little example a curved diffuser is designed which shall turn e.g. a hot gas flow by 90 degrees. This fullyparametric design can be quickly extended by some first basic parameters that might be used in automated variation and optimization loops.

Scope Select the circle and the parameter (CTRL) and choose create > scope in order to put both into a new scope. Set the scopes name to outlet.

Inlet Definition

Copy (CTRL+C) the outlet scope and paste (CTRL+V) it again. Take care that the scope is not selected when pasting it. Set the name of the new copied scope to inlet. The circle needs to be rotated and translated to the inlet position. This is done via two transformations:

Note that the resulting surface is not just a simple natural connection between the two circles of the inlet and outlet: The shape is smartly controlled along the contour curves by means of the individual parameter set that is defined in this example.

Rotation Outlet Definition Create a rotation via create > transformations > rotation.

Create a circle via create > curves > circle and call it curve.

Translation Create a translation via create > transformations > translation. For the translational values, create two inlet parameters xi and zi and set them to 0.1 and -0.075, respectively.

Parameter Create a parameter for the outlet radius via create > parameters > parameter, call it radius, set the value to 0.05 and set it at the circle.

Page 86 of 119

FRIENDSHIP-Framework User Guide B.1 Getting Started

Combine Rotation and Translation First, select the rotation, then additionally the translation (order is important) and create a transformation chain via create > transformations > transformation chain. Call this object e.g. trafo. Set this final transformation object at the inlet circle curve. Put the new objects into the inlet scope. Inlet Radius Set the radius parameter to. 0.025.

Outer Contour Again, copy and paste the previous fspline curve. Change the name e.g. to long and slightly modify the start and end positions so as to start and end at the outer region.

Diffuser Contours

The two contours are needed which connect the inlet and the outlet circles. For simplicity purposes, two fspline curves are swiftly utilized.

Shorter Inner Contour Create an fspline curve via create > curves > fspline. Set the curves plane to Y (Z,X) and the start and end positions with regard to the existing project parameters, see screenshot below. Note that the angle settings refer to the mathematically positive coordinate system of the (Z,X) plane.

Feature Definition for Diffuser Surface

A simple circle description shall be the basis for surface generation between inlet and outlet along the contours. The surface will be a meta surface for which a featurebased curve definition as well as a curve engine need to be set up.

Page 87 of 119

FRIENDSHIP-Framework User Guide B.1 Getting Started

Creation of a new Feature Definition Create a new definition via features > new definition and set a reasonable name for it, e.g. CurveDiffuser. The input arguments of the definition shall be merely the two contour curves as well as a double value for the curve parameter on the two contours. Here, an ellipse is taken in order to be able to allow the second ellipse axis to be varied at a later stage (i.e. this basic feature definition can be simply extended by involving the second axis as well). Definition Attributes Take care that the attributes like the resulting ellipse curve are set to accessible in order to see it within the 3DView. Testing While setting up the definition it is very helpful to create a persistent feature of it. This feature then appears in the object tree and directly displays current changes to the feature definition in the 3DView.

Circle Definition The two positions on the contours are calculated and used for direction and distance information. Then, an initial ellipse which is given in the XY-plane is rotated and translated to the desired contour position. The rotation angle is calculated by means of the global command atan() where the positive angle value is ensured via the command abs().

Surface Generation

A meta surface will be created between the two contour curves by using the feature definition from the previous step and some additional input information.

Page 88 of 119

FRIENDSHIP-Framework User Guide B.1 Getting Started

Parameter Function For the upcoming surface, a little function still needs to be created which describes the parameter values on the two contour curves in the parameter interval [0,1].

Create a generic curve via create > curves > generic and set the x- and y-position to t. This produces a linear parametric curve which runs from 0 to 1 within the XYplane. Curve Engine Create a curve engine via create > curves > curve engine. Choose the feature definition and set the ellipse as being the base curve. Also, set the generic curve as parameter function.

Now, the surface is visible. After all, put the generic curve and the curve engine as well as the diffuser surface into a separate scope (in the screenshot above, the scope is called diffuser).

Ellipse Shapes

The circle-based shape of the surface shall now involve the second major axis of the ellipse in the given feature definition. Within the definition, replace the command
curve.setAxisB( 0.5*distance )

by the new command


curve.setAxisB( diam )

where diam is a new input argument of type FDouble. Function Curve For this value a separate function needs to be set up in the XY-plane (abscissa range [0,1]) and set at the curve engine ce as being further input for curve generation. The start ordinate of this function needs to be equal to the inlet radius while the end ordinate of the function corresponds to the outlet radius, respectively (so the ellipse shapes blend over to the inlet and outlet circles). Contour Curves If still more degrees of freedom are required in order to have a larger shape variety, just exchange the fspline curves by means of e.g. bspline curves. Variation Introduce design variables for e.g. the control vertices of the contours and for the function which controls the ellipse shape.

Final Diffuser Surface Create a meta surface via create > surfaces > meta and choose the curve engine as input as well as the abscissa values 0 and 1 which herewith refer to the parameter function.

Page 89 of 119

FRIENDSHIP-Framework User Guide B.1 Getting Started

Integrate External Software


The following example describes how external software can be coupled in order to evaluate and optimize geometry designs. In particular, CFD simulations are addressed which can be conveniently involved in the design process. In order to keep the procedure clearer, a very simple tool called Jumper is integrated. It calculates the distance of an accelerated ball which is pushed into the air (without viscous effects). New Entry The coordinates of the first point shall be written out later on for which new definition entries are required. Click onto the green icon ( ) at the upper right corner of the definition window. This creates a new entry which can be selected in the ObjectTree again. Set the name of the first entry to P1 and choose type Group for grouping of data. The goal is to find the optimum accelerating curve which yields in the maximum distance D. The curve itself shall be designed in the FRIENDSHIP-Framework as a cubic bspline curve with three points. The height of the first point is allowed to vary within a certain range as well as the horizontal coordinate of the second point. The third point is fixed. The Jumper tool expects an ASCII input file with the point coordinates. After calculation, it writes out the distance value into an ASCII file as well as a PNG-picture which shall be loaded into the GUI. Set minimum and maximum occurrence to 1. Create another entry while the P1-entry is selected. This time, set the name to x (this will be the x-coordinate of the first point) and the type to FDouble. A generic integration is presented since template files need to be written and read. See the integration section for more information about the different integration mechanisms.

Tool Input and Output Definition Select P1 again and create an entry for the y-coordinate, respectively. Repeat this for the second and third point of the curve. Note that if multiple entries are selected simultaneously the attributes like type and occurrence can be set at once.

Choose menu > integration > definition > generic which creates a new definition, see the node Definitions in the ObjectTree. Call it jumperdefinition, for instance.

Page 90 of 119

FRIENDSHIP-Framework User Guide B.1 Getting Started

PNG Picture In order to define that a picture shall be loaded into the GUI later on, select the jumper definition and create and entry with type FResultsFileName.

Output File Template (Results)

Choose Results and select ( ) the file output.txt from the same directory. Add ( ) a new value (category Values) and set the name to distance. Use the spin boxes Line and Column in order to extract the distance value (highlighted). The distance value gets then displayed in a preview in the table at the upper right corner of the window.

Configuration and Computation

Choose menu > integration > generic for a package of configuration and computation, choose jumperdefinition.

A configuration and a computation get created and can be accessed via the ObjectTree. Also, the generic integration editor is open now.

Geometry Modeling

Create a bspline curve with three points, e.g. via menu > curves > features > bspline curve | initial planar.

Input File Template (Commands)

In the generic integration editor, choose ( ) the template file input.txt from the directory samples > integration > jumper > input.txt (FRIENDSHIP-Framework installation directory).

The coordinates shall be initially set as follows:


p1 = [0,0.5,0], p2 = [0.2,-0.5,0], p3 = [1,0,0]

Configuration

The configuration will hold the current setup for the external tool. Select the configuration in the ObjectTree. PNG Picture First of all, the name of the output picture needs to be entered now (output.png), i.e. the picture which will be produced by the Jumper software.

The point coordinates of the template need to be linked to the definition entries which is done via the context menu, see the screenshot above.

Page 91 of 119

FRIENDSHIP-Framework User Guide B.1 Getting Started

Extract Distance

After the run, a table pops up containing the distance value. Apply a double click with the left mouse button onto the table entry (i.e. the value) in order to create a parameter which holds the distance value.

Geometry Furthermore, the positions of the bspline curve need to be entered into the configuration. This is done for each point separately.

10 Display Picture
Open the picture viewer via windows > picture viewer. This directly displays the generated picture of the Jumper tool.

Note that clicking onto the picture locks it. This is useful for comparing variants. In general, variant results can be accessed via click onto the corresponding design in the ObjectTree (node Designs).

Computation

The executable file needs to be specified now. Choose the computation in the ObjectTree. Set the executable jumper.exe from the same directory again within the category Local Exection Settings.

Run the Computation

Run the executable either via the context menu or the icon ( ) in the menu.

Page 92 of 119

FRIENDSHIP-Framework User Guide B.1 Getting Started

11 Optimization
The optimal curve needs to be found which provides the largest distance value. The y-coordinate of the first point shall be a free variable as well as the x-position of the second point. See also the previous guided example for a more detailed demonstration of geometry variation. Design Variables Introduce design variables for both and set them at the points coordinates, respectively. Objective Note that the design engines minimize so that our distance value needs to be extended by a negative sign, i.e. multiplied by -1. Design Engine Choose a design engine for optimization. See the following screenshot for a tangent search setup (menu > integration > design engines).

Note that for both variables a reasonable lower and upper bound is assigned. Again, press engine. Compare Variants Browse through the variants in the ObjectTree (node Designs) in order to display the corresponding pictures of each variant step by step. in order to start the selected design

Page 93 of 119

FRIENDSHIP-Framework User Guide B.2 Hull Design

B.2

Hull Design
optimizations. For an import, three different entity types get created which are explained in the following sections. Offset data can also be generated based on surfaces, see section generation via section group for more information.

Introduction
The following sections cover hull design matters with focus on variation and optimization setups. Here, the FRIENDSHIP-Framework offers additional efficient functionality that is tailored to the needs of naval architects and maritime designers.

Section Visualization
Any surface type provides the option of section visualization with regard to a specified principal plane.

Offset
This entity represents simple point data, i.e. a polyon, with a start and end position. In other words, offsets have an orientation. Different member commands are available for cutting, sorting or certain manipulation functions. Creation

Selection

Choose menu > create > offsets > offsets.

Select the surface(s) for which sections need to be visualized.

Offset Group
Container that holds single offsets. Member commands are available which proceed on the entire group at once. Creation Choose menu > create > offsets > offset group.

Principal Plane

For the selected surface(s), choose the x-, y- or/and zplane via the toggles in the ObjectEditor (category section visualization).

Section Definition

Use a series or a series parameter in order to define the sections. Section View At the 3DView, the section mode can be activated via a button. Rendering is then restricted to sections, see the screenshot above.

Offset Group Assembly


Container that holds single offset groups. Member commands are available which proceed on the entire assembly at once. Furthermore, this object is often used for the SHF export, e.g. for export of an entire hull with different groups for bulb, forebody, aftbody, etc. Creation

Offset Data
Discrete point data is often used as input for mesh generation within CFD calculations or for hydrostatic calculations. It is mostly imported via the SHF offset import and subject of transformation procedures within

Choose menu > create > offsets > offset group assembly.

Page 94 of 119

FRIENDSHIP-Framework User Guide B.2 Hull Design

Section Group
Discrete sectional data can be generated in case that offset data is required either from a surface import or from a fully-parametric ship designs.

Creation

Choose menu > integration > hydrostatic. This setup creates a configuration and a computation which can be found in the ObjectTree. Set reasonable names for the two objects.

Configuration

Select the configuration and set the following attributes: LPP and Max Area Optional values which are used for normalization of the resulting sectional area curve. This is for better comparison of different variants. In case that no values are set, default values are computed and applied. These values are written into the console after the calculation. Sink For hydrostatic evaluation, the sections are cut at zero level (z==0). The sink value allows translating the sections by a positive number into negative z-direction. Heel Set a value for the heel angle (using degree) if this shall be considered.

Plane

Create a plane, e.g. with a normal in x-direction. Choose menu > create > offsets > plane.

2 3

Selection

Select the surfaces for which sections are required. Creation

Choose menu > create > offsets > section group. This takes the selection as input for creation.

Offset Group Entry

Plane and Section Positions

Set the section plane as well as positions by using any series or a series parameter. Automatic Type Conversion Whenever an offset group type is expected (e.g. from an attribute editor in the ObjectEditor) the section group can be set instead. This works because of an implicit type conversion.

Open the branch below the configuration. Set data for the offset group entry. Set either an offset group or a section group. Mirror Plane Set a plane for mirroring of symmetric offset data. The default is the y-plane if no plane is given. Mirror Symmetric modeled offset data can be extended in order to receive the values for the entire data. Catamaran Type

Hydrostatic Calculation
Based on discrete sectional data either from a section group or an offset group, hydrostatic quantities can be calculated.

Offset data is mirrored completely according to the specified mirror plane. It is not just an extension of the data e.g. at y==0 but a group mirroring like for catamarans. Auto Sort Since offset data contains an orientation the offsets can be sorted automatically for the internal calculation (from keel to deck).

Add Further Offset Data

Add entries if more than just one offset group is given. This is done either via the configuration: Select it and add

Page 95 of 119

FRIENDSHIP-Framework User Guide B.2 Hull Design

a group at the top of the ObjectEditor ( ). Alternatively, select the last offset group entry and click onto the symbol for duplication (right below the auto-sort toggle).

Calculation branch

Select the corresponding computation, computations in the ObjectTree, and start it.

Results

The results are visible in a 3DView and a table. Optional: Configure the results as described in the results section.

Usage of Results

Extract table data and put the required values into parameters for further processing. See the description of result extraction via computations.

Page 96 of 119

FRIENDSHIP-Framework User Guide B.2 Hull Design

Lackenby Variation
This guided example demonstrates how an automated hull variation is set up. Hydrostatic calculations are involved for the initial design and the created variants.

As a remark and suggestion, note that the key F12 calls the last creation command. In this case this is the creation command with the selection input. For the next offset group, just select it and press F12. Transformation Set the lackenby entity as being the image transformation.

Hydrostatic of Transformed Data

Create another hydrostatic setup for the image offset groups (instead of the initial offset groups). Evaluations Extract some relevant hydrostatic values via the hydrocomputation of the image offset groups by introducing parameters e.g. for total volume or moment formulas. Set the parameters to UpdateOnDemand.

An existing hull shall be transformed for a variation so the starting point is offset data either from an import or via generated sections.

Constraints

Offset Data

Offset groups or section groups need to be available. Import offset data via the SHF import. Alternatively, generate sections from surfaces.

If required, introduce constraints which monitor geometry or hydrostatic restrictions. Set the constraints to UpdateOnDemand.

2 3

Variation

Initial Hydrostatics

Set up a hydrostatic calculation for the initial offset data. Generalized Lackenby

Create a generalized lackenby transformation. Sectional Area Curve As described in the lackenby section, set the sectional area curve which is provided by the initial hydrostatic computation via the getSectionalAreaCurve() command. Design Variables Introduce design variables for quantities of the lackenby that shall be varied by a design engine. For instance, set a single design variable for both the entries TanEnd of the aftbody and TanBeg of the forebody. Set design variables for DeltaCP and/or DeltaXCB if desired.

Create a design engine e.g. the Sobol for Design of Experiments (DoE). Choose the number of designs that shall be created as well as the desired design variables and set meaningful bounds, respectively. Constraints can also be monitored.

8 9

Run the Variation

Select the design engine and run it. Assessment

Check the generated designs and their hydrostatics via the variant management functionality. For instance, generate a PDF report from the different design data. CFD Analysis Any simulation code is involved in the same manner by introducing the desired configuration and computation. Evaluation results are also stored in parameters via table commands. Make sure that these parameters are chosen as evaluation at the design engine too. See the Shipflow Integration for an exemplary CFD calculation. For any other CFD software, convenient interfaces are provided for general coupling.

Images

Do the following steps for each offset group separately. Create image offset groups for the initial offset groups: Creation and Source Setting Select a single offset group and choose menu > create > images > image offset group. This automatically sets the source.

Page 97 of 119

FRIENDSHIP-Framework User Guide B.2 Hull Design

Design of Basic Curves


This example outlines the process of setting up basic curves for a hull design. Based on these curves, surfaces can be created e.g. by using ruled surfaces, lofted surfaces and Meta surfaces. Most importantly, key values should be defined via a parameter which is referenced each time. In the end this guarantees the model to be dependent on a set of parameters exclusively.

4 1
Center Plane Curve

Deck

Create the deck curve.

Design Water Line

Create a center plane curve by using lines in combination with e.g. fspline or bspline curves. Introduce parameters for key positions and length as well as depth and height.

Create a design water line which is dependent on a draft parameter. The positions at the flat of side is given via
point onFOS(fos.fv(2,draft))

Flat of Bottom

Create the flat of bottom e.g. via the fspline curve. Introduce parameters for the start (y-coordinate) and end (x-coordinate) position. Also, the area with respect to the xy-plane could be a parameter.

For convenience, this command can be called via the console directly. Here, the position is returned for a zelevation specified by the draft (z-axis corresponds to index 2). The position at the center plane curve is received in the same manner. See curve intersection for more information.

Flat of Side

Create the flat of side where also parameters for the height, beam and positions are involved. In case an fspline is used, take care of the angle settings in the zxplane: Angles are defined via the mathematically positive orientation from z- to x-axis.

Hull Changes Testing

The shape is now exclusively controlled via parameters. No point is touched and moved manually, for instance. For testing purposes, change each parameter value in order to check the design.

Page 98 of 119

FRIENDSHIP-Framework User Guide B.2 Hull Design

Sectional Curves
In this guided example, a sectional curve is designed which can be nicely used for surface creation later on. Exemplary, one major section is described based on the basic curve design above.

Position Check

Change the value for the x-position via the parameter in order to check whether the sectional curve moves forward or backward properly.

Sectional Area

Optionally, introduce another parameter for the sectional area which refers to the area below the water level. Then, set the fspline area respectively.

1 2

X-Position

Create a parameter for the considered x-position. Flat of Bottom Joint Upper Area (Rectangular)
beam * (draft zAtFos)

Create a line that runs from the center plane curve to the flat of bottom. The lines start position is dependent on the parameter for the x-position. The lines end position at the flat of bottom is received via
fob.fv(0,xp)

FSpline Area
0.5 * (SectionalArea UpperArea)

Again, see curve intersection for more information about the command fv(). Optionally, store this intersection position as well as the subsequent intersections in point objects for visualization purposes.

The area of the fspline now adapts to the new value of the sectional area parameter. Recursive Detection In some cases the area setting for the fspline (also for attribute settings in general) might involve recursive detections which indicate a potential logical problem. Here, a re-design of some references is required, e.g. via introduction of additional objects so that not the same objects are referenced within the fspline.

Curved Bilge

A simple curved bilge is designed. Create an fspline curve that connects the flat of bottom with the flat of side. Set the fsplines principal plane to yz. The start position is taken from the last curve by the position command,
cpc2fob.getPos(1)

The end position of the fspline is given via


fos.fv(0,xp)

Set the start angle to 0 degree and the end angle to 90.

Deck Joint

Create a line that takes the end position of the curved bilge and the intersection position again at the deck curve by using the fv() command.

Poly Curve

Finally, select the three sectional curves and create a poly curve so that a single curve is available.

Page 99 of 119

FRIENDSHIP-Framework User Guide B.2 Hull Design

Surface Design
Based on the previous examples, surfaces can be generated. The following surface design employs the Meta surface type. See also the first Meta surface example of this section which describes surface generation in detail.

Curve Engine and Meta Surface

Create and configure a curve engine by means of the curve definition and the distributions. For the x-position via the linear distribution, use a factor in order to scale the xposition according to real x-positions. Then, create a Meta surface which is based on this curve engine. The generation range might be normalized to [0,1]. Surface Topology Alternatively, only the curved part might be made of a Meta surface. For the remaining surfaces, ruled surfaces are employable. Angles and Area

Feature Definition from Selection

For the Meta surface a curve definition is required for a surface description in longitudinal direction (i.e. x). From the previous example, select the three sectional curves and the final poly curve. Then, create a feature definition from selection. Input Arguments The x-position and optional area settings are not included in the selection and therefore set as input arguments of the definition. Adjust the descriptions and names of the input arguments to your needs.

The start and end angle of the curved part as well as the area can also be controlled via distributions. In the latter case, the sectional area curve of the hull determines the area of the curved part. Hull Design Examples A set of hull design examples can be found in the samples section of the DocumentationBrowser. Rudder Design See the guided example of a wing design for a related geometry setup.

Definition Test

Create a persistent feature of the definition in order to test it. Insert the input like the basic curves and x-position via the ObjectEditor.

Distributions

According to the Meta surface technique, create functional distributions. In particular, create a linear distribution for the x-position, e.g. by a line object.

Page 100 of 119

FRIENDSHIP-Framework User Guide B.2 Hull Design

Shipflow Integration
A tight integration is provided for the Swedish CFD software Shipflow. In the following steps, offset data is imported and a Shipflow configuration is set up. Then, Shipflow is started and simulation results are visualized.

Offset Data Import

Choose menu > import > offsets in order to import offset data of a vessel into the current project. The data needs to be given in the specific Shipflow format.

VShip Select the vship entry and set values for speed and a Reynolds number, for instance.

Shipflow Setup

Create a Shipflow setup via menu > integration > shipflow. This automatically creates both a Shipflow configuration and computation. These objects are given in the ObjectTree.

Shipflow Settings

Title If desired, set an individual title for the calculation.

Select the configuration in the tree and set up the input data for Shipflow. Adding Entries Configuration entries are introduced by using the icon at the right upper corner (then, new entries appear as additional node in the ObjectTree below the configuration). Hull For the entry Hull of XFLOW, a mono hull ship type might be configured as follows:

Offset Data and Shipflow

In order to actually provide the offset data to Shipflow, add an offset entry for XFLOW: Select XFLOW and add an offset entry. The new entry also appears below the node XFLOW.

Note that the entries indicate the name of the offset groups. This means that the group names have to be equal to these entries. Program Select the program entry in the ObjectTree and add the programs which are needed.

The offset data itself is given to Shipflow by means of the exportSHF command of the offset group assembly which has been imported before. This ensures that always the current data is used for Shipflow. For instance, for varied offset data image offset groups are put into an assembly which is then used for export.

Run Shipflow

Select the Shipflow computation in the ObjectTree. Set the executable path and run the CFD calculation.

Page 101 of 119

FRIENDSHIP-Framework User Guide B.2 Hull Design

Command File and Results

A file viewer gets automatically created which shows the common Shipflow command file. Result Visualization Wave patterns etc. of the calculation can be visualized in the 3DView. See the results section of the variant management chapter. Here, the visualization can be configured to the individual needs of a user too.

Page 102 of 119

FRIENDSHIP-Framework User Guide B.2 Hull Design

Shipflow CHAPMAN
This guided example briefly shows how to run the Shipflow module XCHAP. Some basic pre-processing is also described. The offsets might be given in meters for the full scale ship. The coordinate system is defined with the origin at the keel base line at AP. The x-axis points forward and the y-coordinates are positive. The exemplary model is configured with a simple actuator disk and a rudder.

Configure XCHAP Set the maximum number of iterations to zero (!) with the keyword MAXI on the XCHAP command. Toggle the Close Monitor When Finished option to off to keep the monitor open after Shipflow has completed the computation. Some useful information from the computation will be written to the monitor window. Check: Initial Run of XCHAP Select the corresponding computation in the ObjectTree and run it. The Shipflow process monitor will be shown. Notes Shipflow is using the zonal approach for this case so the modules XPAN, XBOUND, XGRID will also be executed during the computation. Output Data and Visualization Command and output files are automatically displayed in the viewers. Visualization of results is configured at the corresponding design (e.g. baseline), see here for more information. Select CFD results for XCHAP. Boundary conditions, point classification and orthogonal slices of the mesh can be visualized for the different component grids. Select one or more component grids in the Meshes multi select box. Changes in the visualization editors will be applied to the selected grids. SPOST If SPOST shall be used, configure the corresponding SPOST item, again directly at the design. If the toggle is checked, SPOST will be launched automatically and will load the selected design results. SPOST will be closed when the toggle is unchecked, the project is closed or the program is terminated.

Note that this example is based on the integration description for Shipflow where configuration matters are explained.

Offset Data Import

Choose menu > import > offsets in order to import offset data of the vessel into the current project. The data needs to be given in the specific Shipflow format.

Pre-Processing

The overlapping grid is created in the pre-processing step. The grid, boundary conditions and point classifications are checked.

XCHAP Calculation

Set the maximum number of iterations back to 2000 with the keyword MAXI on the XCHAP command. Select the computation and run it again.

Post-Processing

If desired, use SPOST for post-processing of the calculation.

Page 103 of 119

FRIENDSHIP-Framework User Guide B.3 Maritime Propeller Design

B.3

Maritime Propeller Design 2


Feature Definition

Introduction
The FRIENDSHIP-Framework provides the generic blade as well as the propeller entity for propeller design in the field of maritime applications. The generation process of the blade surface is based on the novel Meta surface technique. Actually, the generic blade is extended by convenient transformation and settings for rake, skew and pitch. Sectional views are available too.

Create a feature definition from the profile. Choose creation from selection. Adjust the input arguments, if required.

Curve Engine

Create a curve engine and configure it by using the feature definition from the previous step. Distributions Create functional distributions for the parameters of the profile, e.g. for the chord length. Any 2D curve can be utilized to describe the parameter distribution with regard to the normalized radius. For instance, design a curve in the normalized xy-plane ([0,1]x[0,1]). Use a coordinate system for grid visualization.

Generic Blade
This surface type is based on a general curve, i.e. profile, which at least requires a length. This profile is then mapped onto cylindrical surfaces. Local profile parameters are described as distributions with regard to the radius. The same counts for global parameters of the blade, i.e. rake, skew and pitch, respectively.

Generic Blade

Choose menu > create > blade > generic blade. Set the attributes of the blade which are explained below. Finally, the blade surface is generated in the normalized 3D space. It can be scaled by using the propeller entity. Blade Orientation This option defines the rotational direction. Curve Access The surface comprises a u- and v-domain: This option determines which direction is mapped to the profile. The other domain corresponds to the radial direction of the blade. Blending Different profile definitions can be combined in a single blade. This option tells the blade the transition function between two definitions in radial direction. Smooth endings are recommended for tangent continuous transitions.

2D Profile Definition

Create a profile mode defined in the xy-plane. Use any curve type and involve parameters for scalar values. At least, a chord length needs to be existent. Note that NACA66 and NACA4DS profiles are readily available. Just add parameters for the NACA input. Also, check out the offset curve for profiles that are based on thickness distributions.

Page 104 of 119

FRIENDSHIP-Framework User Guide B.3 Maritime Propeller Design

Data This entry encapsulates the profile information where a list is expected:
[ curve engine, base radius, chord name ]

Note that the squared brackets are required too. Insert the curve engine, a normalized base radius between 0 and 1 (e.g. the hub radius) and a string which equals the chord parameter of the profile definition (this parameter is then internally used for applying the skew at half way of chord length). For multiple profiles in a single blade, add the same input again using comma separation:
[ E1, R1, C1, E2, R2, C2 ]

Then, the first and second definitions are merged within the radii R1 and R2. Starting from radius R2 until r=1.0, the second definition is applied exclusively. Representation See the Meta surface description of this attribute. Coordinate System Distributions for rake, skew and pitch are related to a coordinate system which needs to be chosen. It defines abscissa and ordinate for the function input. Rake This entry defines the rake of the blade. A scalar value or a distribution plus factor for ordinate scaling are expected. The factor is useful for normalized distributions. Skew This entry defines the skew of the blade. Pitch This entry defines the pitch of the blade. Maximum Normalized Radius In some cases the in-built normalized radius needs to be extended slightly for control volume intersections etc. This maximum value is changed via this attribute. Skew Representation The label of this option corresponds to the following illustration. Skew is therefore defined either via the length s or via the angle-based value r s. The skew value is interpreted as radius-normalized value. Pitch Representation The pitch value is defined either via the actual value P or via the angle , see the illustration. The pitch value is also interpreted as radius-normalized value. For P/D definitions, set the factor of the input curve to 2. Dense Hub/Tip This toggle allows to dense the surface at the hub and tip area. 2D / 3D Profile View Cylindrical sections are displayed in the 3D or 2D space. Profile Analysis Depending on the actual profile definition, no thickness or camber distribution is available which is often important for a designer. This option analyses the displayed profiles and plots the analysis into the view. Profile Radii Map This attribute holds the profile radii defined as series according to the radius interval [0,1]. Surface Export For the surface export, the blade is converted according to the specific output format. The IGES-export, for instance, converts it to a NURBS surface where the rendering positions are interpolated. More information about import and export can be found here.

Page 105 of 119

FRIENDSHIP-Framework User Guide B.3 Maritime Propeller Design

Propeller
This entity encapsulates propeller functionality based on a given generic blade.

Wakefield
Wakefields can be imported and involved for blade design. They are additional input for coupled CFD tools and can be transferred via a appropriate configuration entry. The wakefield import supports csv-files and expects positions and corresponding velocities, i.e. {x,y,z,u,v,w}.

Basic hub design is provided. In addition, the propeller entity is also used as input for engineering drawings.

1 2

Creation

Choose menu > create > blade > propeller. Blade Settings

Set a generic blade and the number of blades (NOB) as well as the diameter.

Coordinate System

For transformation of the propeller, use a coordinate system which can be translated to a desired location.

Hub Definition

Set the extensions and diameters for the hub. For instance, involve the previous diameter parameter in order to set up a relationship. Blade and Hub Access Each blade and the hub geometry can be accessed via get-commands of the propeller. Engineering Drawing As mentioned above, engineering drawings are provided for the propeller entity.

Page 106 of 119

FRIENDSHIP-Framework User Guide B.3 Maritime Propeller Design

Fillet Modeling
For sophisticated fillet modeling between hub and blade, the Meta surface can be applied. The following surface generation incorporates a general design approach which exemplary demonstrates flexible parametric techniques. The project file of this example is also available via the DocumentationBrowser (samples). Note that this is only a demonstration of an arbitrary fillet. See also the Fillet Surface type for quickly constructed smooth joints.

point du1(normalize(to.getDU point dv1(normalize(to.getDV // vector directions

(u1,v1))) (u1,v1)))

point dirStart(du0*fu0*distFactor + dv0*fv0*distFactor) point dirEnd (du1*fu1*distFactor + dv1*fv1*distFactor) // the inner points of the final bspline curve point second(start + dirStart) point third (end + dirEnd ) // now the final cubic bspline curve (joint) bsplinecurve joint([start,second,third,end],3)

Curve Engine and Distribution

A curve engine is required that employs the feature definition from above. The curve shall run along the surface boundaries of the blade and a specified hub surface. Therefore, distributions are created for the ulocation of the hub surface as well as for the u-location of the blade surface.

Curve Definition via Features

Hub Surface

First of all, a feature definition is created according to the steps of Meta surface design. The idea is to define a curve that starts from one surface and ends up at another one. The transitions shall be smooth. For the following command sequence of the feature definition, the two input surfaces are called from and to. Further input is given by the domain values {u0, v0} and {u1, v1} that yield two surface positions via the position command. Factors determine the tangent lengths (extensions) of the resulting curve at the joints. The final curve is created as bspline curve for which the control points are defined.
// user input // surface domain values: u0, v0, u1, v1 // factors for tangents : fu0, fv0, fu1, fv1 // start and end position on both surfaces // surface 1 : from // surface 2 : to point start(from.getPos(u0,v0)) point end (to.getPos (u1,v1)) // reference length for tangent setting, // take a third of the distance parameter distFactor(abs(end-start)/3) // normalized derivatives point du0(normalize(from.getDU(u0,v0))) point dv0(normalize(from.getDV(u0,v0)))

Based on a propeller entity, a suitable surface of the hub needs to be available. Propeller Hub Surface The entire hub surface of the propeller is received via
propeller|p.getHub()

The returned surface is now input for an image surface. The domain of this image surface is restricted to [0.5,1] in u-direction in order to process on half of the hub. Sub Surface of the Hub Then, this image surface is input for a sub surface that runs around the blade. See the curved surface on the hub in the screenshot.

The domain curves of the sub surface are given in the following screenshot. Note that four different curves are modeled.

Page 107 of 119

FRIENDSHIP-Framework User Guide B.3 Maritime Propeller Design

Finalize Settings of the Curve Engine

The two surfaces are now available along with the distributions that describe the feature definition input. Set this information at the curve engine. The feature definition can be then be tested by using an image curve with source
curveengine.getCurve(0.5)

The value 0.5 returns a generated curve of the engine, see the following screenshot.

5
Most of the input has a default value. The input functions of the u-directions determine the final parameterization of the fillet surface. For instance, using arbitrary curves for function design allows introducing a surface density at the leading edge region.

Meta Surface

Finally, create a Meta surface that is based on the curve engine and a specified range. Fully-Parametric Technique The shape of the fillet is now exclusively controlled via the curve engine input. The surfaces speed along the boundaries is defined via the u- and v-functions at the engine. For instance, further functions might be introduced that separately define the tangent extensions (i.e. the factors) along the hub and blade boundaries.

Page 108 of 119

FRIENDSHIP-Framework User Guide B.4 Turbomachinery Components

B.4

Turbomachinery Components
Distribution The offset value is received from a distribution and this implicitly defines the volutes volume. Use any curve type to create such a distribution in the interval [0,1].

Introduction
This section covers geometry designs from the turbomachinery industry. Main applications are Design of Radial and Axial Compressors Turbine Blades Wind Turbine Components Volute Designs Pumps

Please contact FRIENDSHIP SYSTEMS for information about design and optimization of specific turbomachinery components. See the corresponding sections for variation and optimization of the following geometries as well as for integration of any simulation software e.g. for CFD analysis. Also, a parametric diffuser design can be found here.

Offset via Generic Curve Create a generic curve and set the x- and y-coordinate as follows:
circle.getPos(t).getX() + cos(circle.getTan(t)) * function.fv(0,t).getY()

Rectangular Volute
The following guided example briefly depicts the design of a rectangular volute. Surface generation is based on a 2D contour of the volute which is designed initially. The xycoordinate-system is used for 2D modeling.

circle.getPos(t).getY() + sin(circle.getTan(t)) * function.fv(0,t).getY()

Here, function is the distribution name. The command


function.fv(0,t).getY()

returns the y-ordinate of the distribution according to a specific x-elevation (index 0) x==t. See curve intersection for more information.

Inner Contour

Create a circle for which the radius is set via a parameter. Rotate the circle by 90 degrees with respect to the z-axis so that the curve starts at the outlet position.

Parallel Outlet

Outer Contour

Create an upper line which is connected to the curved part of the upper contour.

Another contour curve shall be created perpendicular to the circle.

Page 109 of 119

FRIENDSHIP-Framework User Guide B.4 Turbomachinery Components

hand side is deactivated for both since the arc shall be located on the right-hand side of the curves. Introduce a parameter for the tongue radius and set it at the Feature, see the picture.

Subcurve via Image curve

Use position commands and parameters in order to make these lines dependent on the remaining geometry. Upper Line The start position of the upper line simply comes from the end position of the outer contour:
outercontour.getPos(1)

Create an image curve based on the entire generic curve (outer contour) where the domain is restricted by the resulting parameter of the previous tongue Feature. This parameter is an accessible attribute of the Feature.

The end position is given via


[xpp,outercontour.getPos(1).getY(),0]

where xpp is a parameter having a minimum x-value for the length of the outlet. These expressions can be directly set as start and end position of the upper line. Lower Line The start position can be set via
[xpp,ylower,0]

Polycurve Optionally, introduce a polycurve that combines the single curve parts, i.e. the lower parallel part, the outer subcurve and the upper parallel part.

Extrusion in Height Direction Second Contour

where ylower is another parameter that contains the yelevation of the lower line. The end position is given by
[0,ylower,0]

The basic contour is ready now and all required parts are given. The next steps for extrusion depend on the desired final topology of the volute, e.g. for grid generation etc. Use image curves and a translation in z-direction (again, use a parameter for z).

to have an intial, straight line for which the upcoming tongue can be constructed.

Tongue

Surfaces

A circular arc shall join the sub curve with a parallel part. Choose menu > create > curves > features > NURBS Curve | circular fillet for creation of the tongue curve.

Create ruled surfaces based on the two contours. In addition, Coons patches can be applied to connect four boundary curves.

Feature Settings The first curve is the lower parallel curve from the last step and the second curve is the outer contour. The option left-

Page 110 of 119

FRIENDSHIP-Framework User Guide B.4 Turbomachinery Components

Wing Design
An exemplary fully-parametric wing design is given. For simplicity, the underlying profile description merely consists of basic parameters which shall clarify the design process. Any profile can be applied. Finally, the wings shape is controlled via user-defined distributions for the profile parameters.

Pressure Side Create an image curve (create > images > image curve) where the source is given by the suction side. Scale (create > transformations > scaling) the image curve by a negative y-coordinate, i.e. s = {1,-1,1}. Also, change the domain from [0,1] to [1,0] in order to reverse the orientation.

Profile Design Single Profile Curve In order to address a single curve, put the suction side and pressure side curves into a poly curve (create > curves > poly curve). This single curve now runs from the trailing edge via the leading edge back to the trailing edge. Profile Transformations A scaling for the chord length and a translation is still required which will be combined in a transformation chain. Create another image curve which has the single profile curve as source input. First step, major transformation: For the total transformation, create a transformation chain (create > transformations > transformation chain) and set it at the image curve. Second step, configure single transformation parts: The chain should hold a translation with parameters (create > parameters > parameter) for dx, dy and dz. Also, create a scaling which involves the chord as factor.

The profile shall be described by its length (chord), profile area and leading edge position (LE), see the picture.

Suction Side Create an fspline curve (create > curves > fspline) in the xy-plane which runs from the position [1,0,0] to the LE [0,0,0]. At the LE, a vertical tangent is set. Furthermore, a parameter (ceate > parameters > parameter) for the profile area is involved for the fsplines area.

Page 111 of 119

FRIENDSHIP-Framework User Guide B.4 Turbomachinery Components

Now, the final profile can be moved in the 3D space via the three delta parameters whereas its length and profile area are controlled via the parameters for chord and area.

Profile Feature Definition

The profile definition can be typed in manually in a blank feature definition and tested stepwise with a persistent feature. See the following screenshot for the definition: Testing Create a persistent feature of the definition so as to check the correct behavior of the profile definition stepwise for different input values. Alternatively: Definition via Selection Instead of setting up the profile definition manually, the feature definition can also be created fully automatically: Apart from the parameters (for the position and length as well as area), select all participating objects in the ObjectTree. Then, create a feature definition of the profile from the current selection (i.e. keep it selected during creation) via menu > features > feature from selection.

Distributions

Create arbitrary distributions for the profile parameters using any curve type, for instance use linear bspline curves (create > curves > bspline curve). The distributions shall be given in a normalized system, i.e. [0,1] x [0,1]. Real model values are received later on via curve engine factors.

Page 112 of 119

FRIENDSHIP-Framework User Guide B.4 Turbomachinery Components

Be aware of the abscissa and ordinate of the functions which are the X and Y axes in the picture above, respectively. This will be of interest for the coming up curve engine.

Curve Engine

Create a curve engine (create > curves > curve engine) which is based on the feature definition from above. Set the single profile as base curve and the distributions for the input parameters along with their factors. Distributions As mentioned before, arbitrary distributions can be used for parameter description. For the following screenshot, the linear distributions from above are changed to cubic bspline curves.

Extensions In order to extend this little project, a further rotation (create > transformations > rotation) of the profile could be introduced, e.g. which rotates the basis profile with respect to the x-axis before it gets transformed into the 3D space. This enables winglet-like designs at the end of the wing. The rotation might be created directly within the existing feature definition by typing it manually. Then, it just needs to be added to the transformation chain of the profile. Following this, another profile rotation with respect to the z-axis might represent a twist angle etc.

Surface Generation

Finally, create a Meta surface (create > surfaces > Meta surface) based on the curve engine. The generation range is [0,1] since this corresponds to the abscissas of the distribution interval.

Page 113 of 119

FRIENDSHIP-Framework User Guide B.4 Turbomachinery Components

Stream Section
Generally, turbomachinery blade design is based on this specific curve type. Focusing on typical design processes, any mean camber line or blade metal distribution can be involved along with an arbitrary thickness function. Curve information is transformed between length-preserving and angle-preserving coordinate systems with respect to a user-defined stream surface definition.

Camber Line

Define a camber line in the xy-plane. The curve is considered to be related to the angle-preserving (m,) system in order to cope with real flow angles. Here, m is the meridional coordinate normalized with respect to the radius. In the picture below, a local coordinate system was created in order to demonstrate that the x- and y-axis are interpreted as (m,)-system.

Stream Lines

Define stream lines represented as zr-curves by using any curve types which then describe the flow volume. The number of stream lines for different radii is arbitrary (at least two). Note that flow direction is the positive z-axis and the x-axis represents (i.e. equals) the r-axis for the given curves.

For instance, the fspline allows defining a smooth mean camber curve with blade inlet and outlet angles. Also, the end position of the curve could be implicitly defined via a stagger angle etc. Finally, any mean camber curve can be imported too e.g. as NURBS curve from an IGES file. Blade Metal Angle Alternatively, a mean camber curve can be derived from a blade metal distribution. It describes the angle along the mean camber line, i.e. Provide or design such an angle distribution in the xyplane which is then internally considered as (m,)-data.

4 2
Stacking Axis

Thickness Distribution

Define a stacking axis somewhere between the stream surfaces (these surfaces are internally defined by rotating the stream lines around the z-axis).

Define a thickness distribution by using any curve type. The distribution is considered to be a function of the mean camber arc length and shall be considered as normalized with respect to the true chord length, i.e. T/C. This means that the final distributions runs between [0,1].

Page 114 of 119

FRIENDSHIP-Framework User Guide B.4 Turbomachinery Components

In the picture above, the thickness distribution is scaled and visualized by means of an image curve. Combined thickness curves can be created by using the poly curve type, e.g. in order to put together the single leading edge and trailing edge circle elements with the remaining curve.

Stacking Set the stacking axis as well as the section radius. This radius value defines the position of the sections leading edge along the stacking axis. Camber Data Set the camber data mode. Choose either the mean camber line or the blade metal angle definition and set the corresponding curve. True Chord This value indicates the true chord length of the section in the (m,r) system calculated from transforming the anglepreserving data into the length-preserving system. Thickness Distribution Set a normalized thickness distribution which shall be applied to the camber line data. Blend Positions Set the blend positions within the interval [0,1] for the leading and trailing edge. These two relative values refer to the thickness distribution. They are used for curve splitting of the final section. Internally, four different curves get generated (leading edge, trailing edge, suction side, pressure side). Stream Visualization Use surface of revolutions in order to visualize the stream. Curve Approximation Based on the mean camber curve and the thickness values, an approximation of the suction side and pressure side is generated. Discrete point data gets approximated by an internal bspline curve where the number of control vertices can be set via a member command:
streamsec.setNumberOfControlVertices(8)

Creation of the Stream Section

Choose menu > create > blade > streamsection.

Definition Choose the curve definition to be either in the lengthpreserving (m,r) system or in the 3D space (XYZ). Stream Lines Set the stream lines that have been designed previously. Since a list is expected, use the following convention:
[streamline1,streamline2]

This has effects of the final shape of these curves. A higher number of vertices also correlate with a higher computational costs e.g. within surface generation processes where a set of sections is involved.

Page 115 of 119

FRIENDSHIP-Framework User Guide B.4 Turbomachinery Components

Axial Compressor
Based on the stream section curve type, an exemplary compressor stage is designed. The stream section provides the curve definition for a Meta surface. A single description for thickness distribution and mean camber curve is assumed, respectively.

In this example, two circular arcs shall be defined for leading and trailing edge, respectively. These two arcs are connected to the maximum thickness position by means of two fspline curves.

In the first step, the stream section is defined within a feature definition. Based on this definition, a curve engine is then created and configured with regard to the feature input. More detailed, functional distributions are employed for a radial characterization of the blade. In the end, the Meta surface gets created. Optionally, an additional feature visualizes the compressor stage with a specified number of blades.

The radii (rl, rt) and blend point positions (bl, bt) for leading and trailing edge are user input as well as the maximum thickness value tmax and position xmax. Note that thickness distribution is described in the interval [0,1] in the xy-plane.
// locate the LE and set the start angle // with regard to the input blend point position translation dl(rl,0,0) parameter angleLE(acos((rl-bl)/rl)) circle LE() LE.setTransformation(dl) LE.setRadius(rl) LE.setStartAngle(180-angleLE) LE.setEndAngle (180) translation dt(1-rt,0,0) parameter angleTE(acos((rt-(1.0-bt))/rt)) // locate the TE and set the end angle

Feature Definition

Create a new feature definition. It will contain the stream section description, i.e. a curve definition. Set a meaningful name for the definition.

Mean Camber Curve

A parametric description of the mean camber curve shall be applied. For instance, use the following command sequence in order to describe the camber curve via an fspline:
point mc1(0,0,0) point mc2(cp*cos(stagger),cp*sin(stagger),0) fsplinecurve camber(mc1,mc2) camber.setActivePlaneXY() camber.setStartTan(bia) camber.setEndTan(boa)

circle TE() TE.setTransformation(dt) TE.setRadius(rt) TE.setStartAngle(0) TE.setEndAngle (+angleTE) // ceate two fspline curves that connect // TE and LE => maximum thickness position point tdmax(xmax,tmax,0) fsplinecurve td0(TE.getPos(1),tdmax) td0.setActivePlaneXY() td0.setStartTan(TE.getTan(1)) td0.setEndTan(180) fsplinecurve td1(tdmax,LE.getPos(0)) td1.setActivePlaneXY() td1.setStartTan(180) td1.setEndTan(LE.getTan(0)) // put the four curves together // into a single curve polycurve thickness([TE,td0,td1,LE])

Here, the chord length cp refers to the (m,) system and is an input attribute as well as the angles stagger, bia (blade inlet angle) and boa (blade outlet angle).

Thickness Distribution

In the same feature definition, add a thickness distribution after the mean camber curve.

Page 116 of 119

FRIENDSHIP-Framework User Guide B.4 Turbomachinery Components

Stream Section

Describe a stream section in the definition and set the input data. Note that stream lines and the stacking axis are definition input, i.e. these are arbitrary curves. Also, the stacking location (radius) is input.
streamsection section() section.setDefinition("XYZ") section.setStream(streamlines) section.setStackingAxis(stackaxis) section.setStackingRadius(stackradius) section.setCamber(camber) section.setCamberMode("mean camber") section.setThicknessDistribution(thickness) section.setBlendPositionLE(bl) section.setBlendPositionTE(bt)

Make sure that this section is set to accessible.

Recreate on Update

Set recreate on update to false in order to accelerate the upcoming surface generation. Finally, close the feature definition.

Curve Engine

Create a curve engine for the feature definition from above. Set the stream section as base curve. Set constant values and/or functional distributions for the definition attributes. Stacking Radius The function for the stacking radius is received from a line in the xy-plane running from x=0 to x=1. The y-coordinates of the lines start and end positions are given by the two radii values of the stacking axis:

Meta Surface

Create a Meta surface and employ the curve engine from above. The blade is now described by a single surface. NURBS Surface Generation Choose auto-cubic for the surface representation in order to produce a homogeneous NURBS representation. The densities at leading and trailing edge stem from internal separate curve creation of the stream section. Surface Rendering For the Meta surface, the v-resolution is the expensive rendering direction. During the design process, insert a low value, e.g. 5 in order to allow real-time modifications. Compressor Stage GL images can be applied to visualize the entire compressor stage. The following command sequence of a feature definition takes the number of blades N as input and creates the remaining blades.
parameter dr( 360 / (N-1) )

In this example, the following expression calculates the radius of the start position:
sqrt( pow( |stacking|c.getPos(0.0).getX(), 2 ) + pow( |stacking|c.getPos(0.0).getY(), 2 ) )

Page 117 of 119

FRIENDSHIP-Framework User Guide B.4 Turbomachinery Components

designvariable i(0) rotateBlade: beginPersistentSection() rotation rot( #i*dr, 2 ) glimage b00([blade]) b00.setTransformation(rot) endPersistentSection() i=i+1 if( i<N-1, [goto(rotateBlade)], [break()] )

See the feature syntax for more information. Parametric Variation In this example, a specific parameterization for the mean camber curve as well as for the thickness distribution is employed. Basically, any type of description is possible. For variation of the design, introduce design variables e.g. for the functional distributions and vary them by means of design engines.

Page 118 of 119

FRIENDSHIP-Framework User Guide 0References

References
Abt, C., Harries, S.: Hull Variation and Improvement using the Generalized Lackenby Method of the FRIENDSHIPFramework, THE NAVAL ARCHITECT, RINA, September 2007 Formation Design http://formsis.com/ Systems Pty Ltd: Hydromax,

Hilleary R.: The Tangent Search Method of Constrained Minimization, 1966 HSVA: CFD-software -Shallo, www.hsva.de, 2009 Microsoft: COM: Component Object www.microsoft.com/com, August 2009 Model,

Plot3D: Users Manual, P.P. Walatka, P.G. Buning, L. Pierce, P.A. Elson, NASA TM 101067, 1990 Press W. H., Teukolsky S. A., Vetterling W. T., Flanery P. T.: Numerical Recipes, Third Edition, Cambridge University Press, 2007 FLOWTECH International AB: CFD-software SHIPFLOW, www.flowtech.se, 2009 Wikipedia: Regular Expressions, http://en.wikipedia.org / wiki / Regular_expression, August 2009

Page 119 of 119

S-ar putea să vă placă și