Documente Academic
Documente Profesional
Documente Cultură
FRIENDSHIP-Framework
FRIENDSHIP SYSTEMS GmbH Benzstrasse 2 14482 Potsdam Germany www.friendship-systems.com January 2011
Content
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
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
Page 7 of 119
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.
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
A.2
Windows
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
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
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.
Page 11 of 119
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
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
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.
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.
Page 14 of 119
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.
Page 15 of 119
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)
FUnsigned
This type is used for unsigned integer values. Examples
0, 1, 2, 3, 123
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
Here, the value of parameter myResult is converted to a string via the command toString().
Page 16 of 119
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.
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.
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.
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.
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
Surface Intersection
This entity represents an intersection between a surface and a curve.
1 1 2 2
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
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.
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
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
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.
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.
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
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
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
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
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
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.
Page 23 of 119
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 > 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
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 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 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
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
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
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
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
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
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
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
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
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
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 > surface of revolution. Settings
Lofted Surface
This NURBS surface generates a lofted surface by means of a set of arbitrary input curves.
Angles
If desired set an angle interval in order to restrict the generation range in the rotational direction.
Page 29 of 119
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
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
Page 30 of 119
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
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.
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.
Creation
Page 31 of 119
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).
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
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
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.
Matrix4
This auxiliary transformation allows setting up a userdefined 4x4 matrix for transformation purposes.
Rotation
Object rotation is defined via the rotation entity.
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.
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
Creation
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.
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.
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.
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.
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
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
Choose menu > create > transformations > shift transformations > delta surface shift.
Set the principal axis direction and the factor. See the delta shift for more information.
Set the delta surface from the first step as being the shift function.
Creation
Choose menu > create > transformations > shift transformations > lackenby.
Choose the component of the surface position which shall provide the shift value.
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
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
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.
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.
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
Page 37 of 119
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
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
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 Point
This image transforms a given point according to a specified transformation.
1 2
Creation
Choose menu > create > images > image point. Source
Page 39 of 119
A.11
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
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.
Page 40 of 119
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.
Page 41 of 119
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
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
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
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
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
// 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
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()
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
A.13
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
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
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
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
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
Ensemble Investigation
Variation | Objectives: Monitoring | Constraints: Monitoring The ensemble investigation permutes number series for systematic variations. Creation Choose menu > integration > design engines > ensemble investigation.
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
Page 62 of 119
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.
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.
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
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
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
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
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
A.15
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.
General Settings
First of all, basic configuration issues are briefly described. The following settings are available via the menu > edit > settings:
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
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
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 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
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
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
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
Set a plane and coordinate positions for the picture, if required. Also, use the mirror and rotate options for further adjustments.
1 2 3
Selection
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.
Two points get created automatically. Use this corner points to select the region of interest.
Page 70 of 119
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
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
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
Page 71 of 119
3
Label
A label represents a piece of text that is put anywhere in the 3D space. Settings are similar to the linear dimension.
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
Optionally, set an origin into which a line is drawn in order to point to a position of interest.
Configuration
1
Legend
A legend is helpful for identification of colored geometry objects.
Creation
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
Set labels and colors for the bars. Selection Foreground and Background
Send the bar chart to a specified scene. Also, set the position and extensions as well as further display options.
Page 72 of 119
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
A.17
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
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.
Page 75 of 119
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
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
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
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
Part B | Examples
Page 79 of 119
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:
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
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
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
Page 82 of 119
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.
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().
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
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
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
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
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.
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
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
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 )
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
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
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.
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.
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.
In the generic integration editor, choose ( ) the template file input.txt from the directory samples > integration > jumper > input.txt (FRIENDSHIP-Framework installation directory).
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
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 executable either via the context menu or the icon ( ) in the menu.
Page 92 of 119
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
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
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 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
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
Choose menu > create > offsets > section group. This takes the selection as input for creation.
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 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
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
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.
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
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
4 1
Center Plane Curve
Deck
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.
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
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)
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
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.
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
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.
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.
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
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:
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.
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.
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.
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
B.3
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.
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.
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.
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.
(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)
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.
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.
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.
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.
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.
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.
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.
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.
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-
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.
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.
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.
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.
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].
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)
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.
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.
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.
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)
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 ) )
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.
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