FINEMarine User Guide
FINEMarine User Guide
www.cadence.com
CONTENTS
CHAPTER 1. GETTING STARTED
1.1 Introduction 14
1.2 How To Use This Manual 16
1.3 First Time Use 18
1.3.1 Basic Installation 18
1.3.2 Advanced Graphics Options 18
A. Graphics Driver 18
B. Background Color 19
1.3.3 How to start the Fine Marine Interface 20
1.3.4 How to enable Python environments for Fine Marine on cloud containers 20
1.4 Required Licenses 20
CHAPTER 2. INTERFACE
2.1 Project Selection 25
2.1.1 Create New Project 25
2.1.2 Open Existing Project 26
2.2 Main Menu Bar 27
2.2.1 Project Menu 27
2.2.2 Mesh Menu 32
2.2.3 Solver Menu 34
2.2.4 Plugins 35
A. How to activate them 35
2.3 Icon Bar 36
2.4 Computations Management 41
2.5 Graphical Management 44
2.5.1 Project Parameters 44
2.5.2 View Area 44
2.5.3 Mesh Information 55
2.5.4 Graphics Area 55
2.5.5 Viewing Buttons 56
2.6 File Chooser 61
CHAPTER 3. C-WIZARD
3.1 Resistance application 65
3.2 Seakeeping application 93
3.3 Open water application 117
3.4 Planing regime application 134
3.5 Refinement dictionary 162
3.6 Launching C-Wizard in batch mode 166
3.7 C-Wizard computation matrix 169
3.8 Extended applications 177
3.9 Grid convergence study 195
CHAPTER 5. SELF-PROPULSION
5.1 Introduction 226
5.2 Computation procedures 227
5.3 Input 233
5.4 Output 237
5.5 Recommendations 239
5.5.1 Best practices 239
5.5.2 Self-propulsion plug-in 239
GETTING STARTED
Welcome to the Fine Marine's Guide, a presentation of this F low IN tegrated E nvironment for
computations on unstructured hexahedral meshes dedicated to Marine applications. This chapter
presents the basic concepts of Fine Marine and shows how to get started with the program by
describing:
l what Fine Marine does and how it operates,
l how to use this guide,
l how to start the Fine Marine interface.
In this section
1.1 Introduction 14
1.2 How To Use This Manual 16
1.3 First Time Use 18
1.4 Required Licenses 20
Components
The resolution of Computational Fluid Dynamics (CFD) problems involves three main steps:
l spatial discretization of the flow domain,
l flow computation,
l visualization of the results.
To perform these steps, three software systems have been created. The first software system
(developed by NUMECA), Hexpress, is an automated all-hexahedral unstructured grid generation
system. The second software system (developed by the CNRS and the Ecole Centrale de Nantes),
the flow solver ISIS-CFD, is a 3D unstructured flow solver able to simulate Euler or Navier-
Stokes (laminar or turbulent) flows. The third software system (developed by NUMECA),
Cfview, is a highly interactive Computational Field Visualization system.
These three software systems have been integrated in a unique and friendly Graphical Interface
(GUI), called Fine Marine, allowing the solution of complete simulations of 3D internal and
external flows from the grid generation to visualization, without any file manipulation, through the
concept of a project. Moreover, multitasking capabilities are incorporated, allowing the
simultaneous treatment of multiple projects.
Multi-tasking
Fine Marine fully integrates the concept of multitasking. This means that a complete project can
be managed in the Fine Marine interface; making the grid using Hexpress, running the
computation with ISIS- CFD and visualizing the results with Cfview. Furthermore, multiple
computations can be started, stopped and controlled.
Project Management
To manage complete flow analyses, Fine Marine integrates the concept of project. A project
involves grid generation, flow computation and visualization tasks. The results of each of these
tasks are stored in different files that are automatically created, managed and modified within Fine
Marine:
l The grid files: The grid generation process in Hexpress creates files containing the
representation of the geometry, the grid related to the project and the definition of the boundary
conditions types. Four files with extensions ".igg", ".dom", ".bcs" and ".hex" are containing
all relevant information about the mesh. Furthermore, two files with extensions ".rep" and
".dist" are containing the report of the grid generation process and the wall distance,
respectively.
l The project file: The project file is created by Fine Marine with the extension ".iec" and it
contains the input parameters needed for the flow computations.
l The computation files: Fine Marine creates a new subdirectory for each computation where it
stores the following files:
l a file with extension ".sim" containing all computation input parameters used by the solver,
l a file containing the distance to the wall for all grid nodes, "feet.cpr",
l "eff_*.dat" files that contain the global fluid forces and moments acting on each body and
are used to restart the solver,
l the ".cpr" files which contain the different quantities (or ".xdr" from projects generated with
old versions),
l a series of ".di.sj" and ".di.vj"files (where i and j stand for the ID number of the domain
and the ID number of the scalar or vectorial quantity, respectively) and the ".cfv" file used
by Cfview to visualize the quantities,
l a ".res" file used to visualize the residual history (see Monitoring),
l a ".std" file that contains global information about the computation history,
l The Cfview visualization files: In addition to the ".sim" and ".cfv" files, the flow solver
creates a series of files, which can be read by Cfview. These files have different extensions.
The results will be visualized in Cfview through the reading of the file with extension ".d1.s*".
When creating a new project (e.g. "project.iec"), a new directory is made "\project". In this directory
the project file is stored: "\project\project.iec" and a directory is created called "\project\_mesh\". In
the latter sub-directory, the grid files used for the computations should be stored. However, it is also
possible to select a grid that is located in another directory. Only one mesh file should be used for all
computations in a simple project. If computations need to be done on another mesh, it is advised to
duplicate the existing project (see Duplicate Project) or to create a new one (see Main Menu Bar).
Outline
The use of non-supported parameters is at the responsibility of the user and will not guarantee correct
and/or physical results.
Conventions
Some conventions are used to ease information access throughout this guide:
l Commands to enter in are in italic.
l Keys to press are in italic and surrounded by <> (e.g.: press <Ctrl>).
l Names of menu, sub-menu items and names of buttons in dialog boxes are in bold.
l Numbered sentences are steps to be followed to complete a task. Sentences that follow a step
and are preceded with a dot (•) are sub steps. They describe in detail how to accomplish the
step.
When using Fine Marine for the first time, it is important to verify thatFine Marine is properly
installed according to the installation note. The installation note provided with the installation
software should be read carefully. The following points are important:
l Hardware and operating system requirements should be verified to check whether the chosen
machine is supported.
l Installation of Fine Marine, in a directory chosen by the user and referenced in the installation
note as "NUMECA_ INSTALLATION_ DIRECTORY", should respect the described
procedure in the installation note.
l A license should be requested that allows the use of Fine Marine and the desired component
and modules (see Required Licenses for all available licenses). The license should be installed
according to the procedure described in the installation note.
l Each user wishing to use Fine Marine or any other NUMECA software must perform a
configuration as described in the installation note.
When these points are fulfilled the software can be started as described in the installation note or
"How to start the Fine Marine Interface" (p. 20).
A. Graphics Driver
The graphics area of Fine Marine interface uses the default driver of the machine. It is possible to
explicitly change the driver used by Fine Marine in the following way:
On LINUX
On Windows
B. Background Color
The background color of the graphics area can be changed by setting the environment variable to
NI_IGG_REVERSEVIDEO on LINUX platforms. Set the variable to "ON" to have a black
background and set it to "OFF" to have a white background. The variable can be manually
specified through the following commands:
On LINUX
On Windows
l Log in as Administrator.
l Launch System Properties from the Start/Settings/Control Panel/System menu.
l Go in the Environment Variables.
l Modify or add the IGG_REVERSEVIDEO entry to either ON or OFF.
The selection will take effect at the next session.
On Linux-based cloud containers where no separate python versions are installed, the Python
package included in Fine Marine can be used. User-defined modules can simply be placed
somewhere on the disk and then used with the Python 2.7 environment from Fine Marine. The
PYTHONPATH variable should point to the location. If a single, or multiple Python installations
are available, it is better to point the PATH to the standalone Python installation, as this avoids
updating the PATH variable after each new Fine Marine installation. The following lines should
be added in the .bashrc file in order to use the included Python distribution with user-defined
modules:
export PATH=/home/hpcuser/NUMECA/finemarine111/LINUX/_
python/bin/:/home/hpcuser/NUMECA/finemarine111/LINUX/_ mpi/_
ompi4.1.4/bin:${PATH}
export PYTHONPATH=$PYTHONPATH:/home/hpcuser/<path_to_module_location>
The standard licenses for Fine Marine allow for the use of all basic features of Fine Marine
including:
Additional Licenses
Within Fine Marine, the following supported features are available but require an upgrade or a
separate license:
l CATIA v5 import (see Hexpress User Manual),
l More cores for parallel computations with ISIS-CFD, with a maximum number of 9999 cores
can be used for a single computation,
l Non Deterministic module for the uncertainty quantification features.
In addition to Fine Marine, other products are available that require a separate key in the standard
Fine Marine license:
l Fine Turbo (Flow INtegrated Environment using structured mesh technology, see Fine Turbo,
IGG, Autogrid5 User Manuals),
l Autoblade & Fine Design3d (structured 3D inverse design technology, see Fine Design3d,
Autoblade User Manuals),
l Fine Open (Flow INtegrated Environment using unstructured hexahedral mesh technology,
see Fine Open User Manuals).
INTERFACE
When launching Fine Marine, as described in Getting Started , the interface appears in its default
layout as shown in the following figure. An overview of the complete layout of the Fine Marine
interface is shown in the second figure just below. In the next sections, the items of this interface are
described in more detail.
It is also possible to specify the exact position and size of Fine Marine interface on the screen. To do so
the file preferences.dat should be created and stored in /.numeca directory. Details can be found in
"Preference file for the windows sizing" (p. 783)
Together with the Fine Marine interface, a Project Selection window is opened which allows the
creation of a new project or the opening of an existing project. See Project Selection for a description
of this window.
A File Chooser window is available for browsing through the file system and to select a file. More
details on the File Chooser window are given in File Chooser.
In this section
2.1 Project Selection 25
2.2 Main Menu Bar 27
2.3 Icon Bar 36
2.4 Computations Management 41
2.5 Graphical Management 44
2.6 File Chooser 61
When the Fine Marine interface is started, the Project Selection window appears, as shown in
FIGURE 2.1.
This window allows to create a new project or to open an existing one as described in the next
sections. Project Selection window also suggest the User to start working within the C-Wizard
mode of computation directly from here. More details about the C-Wizard mode can be found in
the Description of the plugins. It is possible to open a project or to create a new one without the
Project Selection window using the Project menu.
FIGURE 2.3
Project and Grid File Selection window
l Click on Ok to accept
Use only English letters, Arabic numerals, "." and underscore symbol "_" in the project names,
project paths and computation names.
l Click on Ok (Save on Windows) to accept the selected name and location of the new
project
3. A new directory is automatically created with the chosen name as illustrated in FIGURE 2.4
indicated by point (1). All the files related to the project are stored in this new directory. The
most important of them is the project file with the extension .iec which contains all the project
settings (FIGURE 2.4-(2)). Inside the project directory, Fine Marine creates automatically a
sub-directory _mesh (FIGURE 2.4-(3)).
4. Depending on your choice regarding the grid file selection (step 1), there are two possibilities:
l If you have chosen to create a grid file, Hexpress is launched after defining the new project.
You can then create the mesh and save it in the _mesh directory of the new project. Click
on the Close icon in Hexpress to return to the Fine Marine project. The new mesh is
automatically associated with the project.
l If you have chosen to open a grid file, after defining the new project, a File Chooser,
allows you to browse to the grid file with extension .igg. Select the unstructured grid file
and press OK to accept the selected mesh. The new mesh is automatically associated with
the project and the mesh properties are immediately displayed in the Mesh properties
window. They can also be checked anytime in the Properties... menu (see Properties).
To open an existing project, two possibilities are available after clicking on Open an Existing
Project:
New Project
The Project/New menu allows to create a new Fine Marine project. When clicking on
Project/New, the Project Selection window appears. A new project can be created or an existing
one can be opened, see Project Selection.
During the creation of a new project, a new grid can be created or an existing one can be assigned
to the project through a Grid File Selection box.
A File Chooser window appears, as described in File Chooser, allowing to browse in the
Directory list to the directory in which the new project subdirectory will be created (in the
example of FIGURE 2.4 the directory /home was selected). Give a new project name in the File
list, for example project.iec, and click on OK to create the new project.
When starting a new project a new directory is then created with the chosen name (1). All the files
related to the project are stored in this new directory. The most important one is the project file
with the extension .iec (2), which contains all the project settings. Inside the project directory,
Fine Marine creates automatically a sub-directory _mesh (4). Since all the computations of the
project must have the same mesh it is advised to store the mesh in this dedicated directory. Finally,
each time computations are created and saved, a subdirectory is added (3). The output files
generated by the flow solver will be written in the subdirectory of the corresponding running
computation.
FIGURE 2.4
Directories managed through Fine Marine
Once the new project name is defined, two possibilities are available:
l Create a grid file (Creating a mesh): Hexpress is launched. Next, you can create the mesh and
save it in the _mesh subdirectory of the new project. Click on the Close icon to return to the
Fine Marine project. The new mesh is automatically associated to the project. The mesh unit is
assumed to be meters.
l Open a grid file (Importing a mesh): another File Chooser appears that allows to browse to
the grid file with extension .igg. Select the grid file and press OK to accept the selected mesh.
The geometry is then loaded in the Graphics Area of the interface. The mesh unit is assumed
to be meters.
1. Click on Project/Open.
2. A File Chooser window appears.
3. Browse through the directory structure to find the project file to open. This file normally has
the .iec extension. If this is not the case, the file filter in the input box named List Files of
Type, has to be modified.
4. Select the project file.
5. Click on the file name.
6. Click on OK.
The opened project becomes the active project. All subsequent actions will be applied to this
project.
Selecting the project from the list of files in the Project menu
The Project menu lists the names of the five most recent opened projects. Click on a project name
from this menu to open the corresponding project.
Fine Marine will check the write permission of the project directory and of the project files and
will issue a warning if the project and/or directory are in read only mode. In both cases the project
can be modified, but the changes will not be saved.
Only one project can be active. Opening a second project will save and close the first one.
An attempt to open a project that no longer exists will remove its name from the list in the Project
menu.
Save Project
The Project/Save menu stores the project file (with extension .iec) on the disk. The project file is
automatically saved when the flow solver is started, when Fine Marine is closed, or when another
project is opened.
The Project/Duplicate menu is used to store the active project on the disk under a different name.
A File Chooser opens to specify the new directory and name of the project. A confirmation
dialog box appears, which contains a checkbox to enable/disable the copying of the associated
result files. Clicking on Cancel will dismiss the operation.
By selecting Duplicate the results the interface will also duplicate the results of the active
computation
The Create minimal backup menu is used to save only valuable for the current project files as a
projectname_backup_date_timefolder. That means when this option is selected, .iec project file,
_mesh subfolder with .dom, .bcs and .igg mesh files will be saved inside the project folder. It is
also possible to compress it into the .zip folder for the further storage or transfer, for instance.
The Project/Save solver simulation File menu is used to store all the information needed for the
flow solver to run the active computation.
If more than one computation is selected in the Active Computations list, then all parameters
defined in the Project Parameters area, will be assigned to all selected computations (highlighted
in blue). This may be dangerous if the parameters for the currently opened information page are not
the same for all the selected computations. To avoid this, it is recommended to select only one
computation at a time.
When starting a computation, the .sim file is automatically updated (or created if not existing)
through the main menu (Solver/Start or click on ).
Edit... opens a dialog box displaying all the commands performed by the user in the current
session.
Save All... saves all actions performed so far in the current session in a python file.
Execute... allows to execute a python script.
Re-execute Last... executes the last python script again.
All details corresponding to scripts are explained in a dedicated chapter (Python &
Plugins).
Previous Projects
The graphical user interface stores an history of the 3 last closed projects. Clicking on one of these
will open the project if the project is still at the same location.
Quit
Select the Project/Quit menu item to quit the Fine Marine integrated environment. If changes
have been made in the active project, these changes can be saved or not.
Note that this action will NOT stop the running calculations. A Task Manager window will remain
open for each running computation. Closing the Task Manager window(s) will kill the running
calculation(s) after confirmation.
The use of non- standard characters in the project name (other than English letters, Arabic
numerals, and underscore symbol "_") is not recommended. It may cause problems when opening
the project on another computer on which such characters may not be defined or misunderstood (a
back slash for example may be understood as a directory name separator, etc.).
If the name of an already existing project is specified, this project file will be overwritten. All
other files and sub-directories will remain the same as before.
It is also recommended to not use a project name which contains more than 50 characters.
When creating a new project, a grid file is automatically assigned. However, the assigned grid file
can be changed by clicking on Mesh/Link a HEXPRESS project menu. A File Chooser
appears, which allows to browse to a grid file with extension '.igg'. Select the grid file and press
OK to accept the selected mesh. Option of Move mesh files to project _mesh folder is checked
by default, thus all files from the folder of selected '.igg' file will be moved to the project /_mesh
folder. Otherwise, uncheck this option.
If the mesh from another project is selected and the check Move mesh files to project _mesh
folder is active, it will move, not only copy all the mesh files from the source project.
Load Mesh
By default, when a grid file is assigned to a project, the associated geometry is shown in the
graphics area of the Fine Marine main window, but the mesh is not displayed. The Mesh/Load
Mesh command allows to load (and therefore visualize) the mesh in the graphics area of the Fine
Marine window.
Unload Mesh
The Mesh/Unload Mesh command unloads the mesh and clears it from the memory of the
computer. However, the geometry of the computational domain remains visible in the graphics
area. By default, only solid surfaces are shown (shading).
Properties
FIGURE 2.5
Mesh Properties window
Clicking on Mesh/Properties... opens a dialog box that displays global information about the
mesh:
l Mesh file: name and location of the mesh file,
l Grid units: the units used in this project. Currently, it is not possible to change them and
Meters is imposed.
l Mesh properties: the configuration (2D or 3D), the total number of cells and vertices per block
(domain) are detected from the mesh.
This menu gives access to the flow solver management. In this section, information is given on
how to start, stop and save the batch script for the launching of the flow solver. All these actions
may be performed by using the pull down menu appearing when the button Solver of the Menu
bar is clicked.
Start Solver
It is not recommended to start the flow solver before setting the physical boundary conditions and the
computational parameters.
When launching a computation, the result files produced by a previous execution of that computation
will be overwritten by the new results. It also implies that the initial solution will be created from the
values set in the Initial Solution page within Fine Marine (more details in Initial Solution).
Stop Solver
Save Batch File button under Solver menu saves the .batch file (on LINUX) or .bat file (on
Windows) in which all the steps of the chains for the flow solver will be written (pre-processing,
solver and post-processing) for a basic sequential run. For more possibilities, the same button is
present in the Task Manager to save specific steps (see Task List).
2.2.4 Plugins
The purpose of this menu is to provide a plugin mechanism where users can put their own python
scripts and access them through the interface, via Plugins menu.
The first part of the menu contains two sub-menus: Load Module Directory... and Save As
Default . The Load Module Directory... opens a directory chooser to select a directory
containing users scripts. When the directory is selected:
l a sub menu, under the Plugins menu is added, with the name of the directory,
l the graphical user interface looks for all ".py" files in the specified directory, except files
starting with underscore ('_'),
l for each ".py" file an item is added to the above-mentioned sub-menu. The name of the item is
the name of the python script, without the ".py" extension.
If a directory is not selected, a dialog box appears with the text "You must select a directory".
The Save As Default option saves all currently loaded menus in the file "~/.numeca/ fm_gui_
default_plugins". The file is an ASCII file that looks like:
/usr/local/MyPlugins/
The icon bar contains project management buttons which are shortcuts to specific parts of the Fine
Marine GUI.
File Buttons
The New Project icon is a shortcut for the menu item Project/New.
The Open Project icon is a shortcut for the menu item Project/Open.
The Save Project icon is a shortcut for the menu item Project/Save.
The Save ISIS Simulation File icon is a shortcut for the menu item Project/Save ISIS
Simulation File.
The Start Solver icon is a shortcut for the menu item Solver/Start.
The Suspend Solver icon is a shortcut for the menu item Solver/Suspend.
The Kill Solver icon is a shortcut for the menu item Solver/Kill.
Module Buttons
These buttons allow to start the pre- or post-processors, to open the task manager and to monitor
the active computation:
The Start TASK MANAGER icon is used to open the task manager menu.
The Start CFView icon is used to open the post-processing management window and
Cfview.
The Start Monitor icon is used to open the "Monitoring" (p. 683).
The Start Results Analysis icon is used to open the "Results Analysis" (p. 746) module.
Plugin Buttons
All these plugins are developed in Python and made available inside the installation package.
They can be edited, extended or replaced by a user-defined script as long as the name of the script
remains the same.
Self-propulsion
This plugin is used to define the required inputs for the self-propulsion computational cases of the
available Application types:
l Fixed vessel speed, solved RPM,
l Fixed RPM, solved vessel speed,
l Fixed power, solved RPM and vessel speed,
l Fixed power, solved vessel speed with actuator disk.
Details can be found in "Self-propulsion " (p. 225).
The units converter allows to convert or compute several values that are commonly used in Fine
Marine. One can perform the following calculations:
l Angle Radians (rad) to Degrees (deg) or vice versa,
l Length Feet (ft) to Meters (m) or vice versa,
l Speed Knots (Kt) to meter per second (m/s) or vice versa,
l Compute the kinematic viscosity (m²/s) based on the density (kg/m³) and the dynamic viscosity
(kg/(m.s)) or compute the dynamic viscosity based on the density and the kinematic viscosity.
FIGURE 2.6
Units converter
The tool computes useful information for wave generation simulations such as frequencies, time
step, wave celerity, etc... It can replace the file setup_for_wave_generation.ods for the simulation
part.
Porous media
Known Limitations
The properties of the porous media don't follow the mesh. As a consequence, if the domain
rotates the properties will remain the same in the cartesian grid.
This tool offers the possibility to define a domain of the project as a porous media. A porous
media can be used to mimic the presence of a material with pores (voids), like a net, an engine etc.
When clicking on the Save button, the following actions will be performed:
l if the computation folder doesn't exist, it will be created,
l the dynamic library will be compiled and moved to the simulation folder,
l the PMinput.dat file will be created.
The behavior of the porous media is defined by the Ergun law, which is given by the following
relation:
l ( , , )
The two directions and are defined and then is computed automatically to produce an
orthonormal frame; if and are not orthogonal, takes the value ; these
vectors are non-dimensionalized so that the properties of the porous media are only defined by
and .
Recommendations
Porous medias are defined at a domain level, not at a body level. Only one domain can be
selected as porous media.
When clicking on the Computations button at the top left of the interface a list of all the
computations of the project is appearing. The active computation is highlighted in blue and the
corresponding parameters are presented in the Project Parameters area (more details in
Graphical Management ). All the project parameters of the computation can be controlled
separately by selecting (from this list) the computation on which all the modifications are applied.
At the bottom of the Computations menu the following buttons are available:
New creates a new computation as a duplication of the active computation. Newly created
computation has the same name as the original one with the prefix new_.
Reset will clean all the files withing the selected computation_name folder inside the Project and
save the computation again to be ready to run the simulation.
To prevent the nonessential actions, the following warning is shown: This will delete active
computation directory and save computation again.
For the "Uncertainty Quantification" (p. 869) studies the set of dependent computations can be
reset as well by activating: Reset non-deterministic runs too.
FIGURE 2.10
Warning message for the computation involving the Non-deterministic data
Rename allows to rename the active computation, you can click on, double-click on the selected
computation line. Then, type the new name and press <Enter> to validate your choice or <Esc>
to cancel the new name.
Delete will delete the selected computation(s).
FIGURE 2.11
Comments editor
Arrows can be used to move selected computations up and down by one position.
When right-clicking on an active computation, a pop-up menu is appearing that is giving access to
these commands. See above.
The Project Parameters is the second button on the left of the interface, below the Computations
button. When clicking on this button a directory structure appears allowing to go through the
available pages of the project definition. The Parameters window (FIGURE 2.2) shows the
parameters corresponding to the selected page in the Project Parameters list. To see the pages
available in a directory, double-click on the name or click on the sign in front of the name.
.
FIGURE 2.12
Project Parameters area
The graphics area always remains visible, and pages of the Project Parameters list are accessed
through pop-up windows. Two pages cannot be accessed at the same time.
The View subpanel (FIGURE 2.13) controls viewing operations on the geometry and the grid.
Selection Mode
The button allows the face mode viewing. All the viewing modifications are applied on the
selected face.
To open a dialog box Face Viewer listing all the available faces, right-click on the button .
The faces can now be selected interactively by left-clicking in the graphics area or by selecting
them from the list. The Face Viewer can also be opened by pressing the dedicated icon .The
content is the same as in Hexpress.
The button allows the block mode viewing. All the viewing modification are applied on the
currently selected block (domain). The block may be selected interactively by left-clicking on the
block in the graphics area.
Viewing Mode
The second buttons row allows to modify the way of displaying surfaces in the graphics area:
displays the topological vertices and edges numbers as text in the graphical area
l displays the triangulation from the geometry surfaces or the mesh faces.
FIGURE 2.15
Rendering Editor
A Save as Default button is dedicated to save the current settings as preferences. This includes the
material and mesh properties as well as the background colors.
The Reset button cancels all performed rendering operations since the Rendering editor dialog
box is open.
Material
l Specular: affects the light reflections on the surface. The shape, the strength and the color of
the highlight depends of the material. For instance, a material like cotton tissue will not have
any specular highlight, in comparison to a reflective surface like a mirror that will have a very
bright specular highlight.
l Color: is the color of the specular highlight.
l Opacity: controls the transmission of light through the surface. An opacity of 1.0 means a
completely opaque surface. An opacity of 0 means a completely transparent surface.
l Reflection: is the property of a surface to reflect the surrounding environment. Reflection is the
property of a surface to reflect the surrounding environment. A "spherical environment
mapping" technique is applied on the selected surface (s) when the option use reflection
mapping is set active:
l An image, also called "map", is provided for each surface. This map represents a given
material.
l The color of each surface point is found by using the local normal at the surface point to
address the map.
l Amount: changes the reflectivity property of the surface.
A reflectivity amount of 0 means that the surface has no reflectivity: the final color is the diffuse
color of the surface. A reflectivity amount of 1 means that the surface is purely reflective: the
final color is equal to the reflection color. All value in-between result in a mix of reflectivity and
surface color.
This tab, used for controlling the mesh lines appearance, allows to control:
l the color of the mesh
l the line pattern
l the thickness of the mesh lines
l whether lighting should be applied on the mesh lines or not
Each operation in this tab takes immediately effect, as for the Material tab, according to the active
Scope (Face, Block or Grid).
Background
The third tab allows to define the background color. of the graphics area.
The edition button Ed. allows the user to specify his own background color independently of the
proposed colors. The look of the menu varies according the operating system.
During the initial and adaptation steps, the user can only control the color and mesh attributes for the
whole mesh and not face by face. This is explained by the fact that during these steps, the cartesian
mesh is not attached to any face.
No lighting is applied on the mesh solid surface representation during the initial and adaptation steps.
Camera Position
Clicking on the icon ( ) opens the Camera Position dialog box as shown in FIGURE 2.17
l Save button: Saves the current camera position. A new entry, Camera # will be added in the
list each time the Save button is hit.
l Delete button: Deletes the selected camera position.
l Close button: Closes the dialog box.
Distance Tool
The distance tool is useful to measure the distance between two points or between a point and
a line. The following dialog box will appear, showing the distances computed along principal
directions between the two points:
FIGURE 2.18
Distance tool wondow
Coordinates Tool
The coordinates tool is useful to get the coordinates of a point. The following dialog box will
appear, showing the coordinates computed along principal directions, according the mouse
position:
When a mesh is assigned to the project, the mesh information area is shown at the bottom on the
left of the interface. It contains the following information:
FIGURE 2.20
Mesh information area
l Number of cells
l Number of vertices
The graphics area shows the geometry of the mesh assigned to the active project. When the mesh
is loaded, the mesh on the solid surfaces is shown. The graphics area remains always visible. The
grid icons can be used to change the visualization of the mesh. These are described in View Area.
Pressing <Alt Gr> + P will automatically shrink the quick access pad.
The viewing buttons are used to perform viewing manipulations on the active view, such as
scrolling, zooming, and rotating. The manipulations use the left, middle, and right buttons of the
mouse in different ways. For each viewing button, the sub-sections below describe the functions
associated with each mouse button.
For systems that only accept a mouse with two buttons, the middle mouse button can be emulated for
viewing options by holding the <Ctrl> key with the left mouse button.
These buttons allow to view the graphics objects on a X, Y, or Z projection plane. Press the left
mouse button to project the view on an X, Y, or Z constant plane. If the same button is pressed
more than once, the horizontal axis changes sense at each additional press.
Coordinate Axes
The coordinate axes button acts as a toggle to display different types of coordinate axes on the
active view using the following mouse buttons:
l Left: press to turn on/off the display of a symbolic coordinate axis at the lower right corner of
the view.
l Middle: press to turn on/off the display of a scaled coordinate axis for the active view. The axis
surrounds all objects in the view and may not be visible when the view is zoomed in.
Scrolling
This button is used to translate the contents of the active view within the plane of the graphics
window in the specified direction. Following functions can be performed with the mouse buttons:
l Left: press and drag the left mouse button to indicate the translation direction. The translation is
proportional to the mouse displacement. Release the button when finished. The translation
magnitude is calculated by measuring the distance between the initial clicked point and the
current position of the cursor.
l Middle: press and drag the middle mouse button to indicate the translation direction. The
translation is continuous in the indicated direction. Release the button when finished. The
translation speed is calculated by measuring the distance between the initially clicked point and
the current position of the cursor.
3D Viewing Button
This button allows to perform viewing operations directly in the graphics area. Available
operations are 3D rotation, scrolling, and zooming.
The rotation buttons are used to rotate graphical objects on the active view about the X, Y, or Z
axis. The rotations are always performed about the centre of the active view. Following functions
can be performed with the mouse buttons:
l Left : press and drag the left mouse button to the left or to the right. A clockwise or
counterclockwise rotation will be performed, proportional to the mouse displacement. Release
the button when finished.
l Middle: press and drag the middle mouse button to the left or to the right. A continuous
rotation will be performed, clockwise or counterclockwise. Release the button when finished.
Zoom In/Out
This button is used for zooming operations on the active view. Zooming is always performed
about the centre of the view. Following functions can be performed with the mouse buttons:
l Left: press and drag the left mouse button to the left or to the right. A zoom in/out will be
performed, proportional to the mouse displacement. Release the button when finished.
l Middle: press and drag the middle mouse button to the left or to the right. A continuous zoom
in/out will be performed. Release the button when finished.
Region Zoom
Fit Button
The fit button is used to fit the content of the view to the view limits without changing the current
orientation of the camera (which can be interpreted as the 's eyes).
This tool is also accessible with the <F3> key.
Original Button
The original button is used to fit the content of the view and to give a default orientation to the
camera.
This tool is also accessible with the <F4> key.
Cutting Plane
This option displays a movable plane that cuts the geometry and the mesh. The surface mesh is
displayed. The plane is symbolically represented by four boundaries and its normal, and is by
default semi-transparent.
the mesh should be loaded (see the Load Mesh paragraph to know how to load the mesh) to see a cut
of the mesh. Otherwise, the cutting plane will be only visible on the geometry.
FIGURE 2.22
Cutting plane options dialog box
Hide cut-away: hide the geometry on the other side of the plane.
Activate transparency: deactivate to make the cutting plane fully transparent.
It is advised to deactivate plane transparency when using the X11 driver to increase the execution
speed.
Show mesh: deactivate to hide the mesh and view geometry only.
Intersecting cutting plane only: active to display only cells intersecting the cutting plane. The
cells are displayed through each side of the cutting plane.
Shading: active to display cells in solid mode. Deactivate for wireframe mode.
Shrink factor: from 0 to 1, the shrink factor reduces the cell size in the X, Y, and Z direction.
For file management (opening and saving of files), Fine Marine uses the standard File Chooser
window. The layout of the File Chooser depends on the used operating system, but a typical
layout is shown in FIGURE 2.24. The Directories list allows to browse through the available
directory structure to the project directory.
The Files list can then be used to select the filename. In the case where a file needs to be opened,
an existing file should be selected in the list of available files. When creating a new file, a new
filename can be specified with the appropriate extension.
In the List Files of Type bar the default file type is set to list only the files of the required type. For
a description of all available file types in Fine Marine, see Project Management.
C-WIZARD
The C- Wizard mode implemented into the Fine Marine interface provides a complete workflow to
create and define parameters of a project depending on its Application. Available types of applications
are:
General applications:
l Resistance
l Seakeeping
l Open water
l Planing regime
Extended applications (from batch mode only):
l Hydrofoil resistance
l Sailing yacht resistance
l Trim optimization
l PMM maneuvers
Start of the C-Wizard can be directly done from the Welcome box while starting a new project.
The geometry imported in C-Wizard must be defined in the International System of Units. The C-Wizard
assumes that the geometry is in meters, and thus it does not scale it depending on the units chosen for the
project.
It is strongly recommended to check the shell/bash window (Unix OS/Windows OS) for the processing info,
since all the entered and automatically imposed parameters will be reflected in there. In addition, a
cwizard.log file is also created in the project directory for later analysis.
Current limitations:
l The wizard cannot handle multiple bodies, domains, meshes.
l 2D configurations are not supported.
l Thin surfaces in the geometry definition cannot be managed by the wizard.
These limitations should be considered for the automatic setup procedure. However, all
settings remain available for manual modifications through the Fine Marine classic interface.
In this section
3.1 Resistance application 65
3.2 Seakeeping application 93
3.3 Open water application 117
3.4 Planing regime application 134
3.5 Refinement dictionary 162
3.6 Launching C-Wizard in batch mode 166
3.7 C-Wizard computation matrix 169
3.8 Extended applications 177
3.9 Grid convergence study 195
This application is dedicated to the analysis of hull resistance. It can be used to prepare a single
speed computation or a complete resistance curve.
The simulation setup can be multi-fluid, mono-fluid double body or for underwater body.
A self-propulsion computation can be prepared by setting the surge (Tx) to solved and activating
a constant external force or actuator disk.
Beginner Tutorial 3 offers step by step instructions to set up a resistance case using the C-Wizard.
Limitations:
l The setup is designed for displacement and semi- displacement hulls and underwater
vehicles. For high-speed crafts, the planing regime mode can also be interesting in case the
geometry is compliant with a user-defined or Savitsky estimated final position.
The first page of the C-Wizard provides the general Project management menu: here the
project directory can be specified. Selecting the Application type Resistance will provide access
to the specific parameters in accordance to this application.
It is also possible to define the Wizard units that will be used during the wizard process.
If a mono-fluid double body computation is chosen the domain will be cut at the free surface
level and only the under water part of the body will be simulated. This approach can be used
when the effect of free surface deformation does not need to be considered.
In a mono-fluid underwater computation, it is assumed that the body is far enough from the free
surface to not consider its effects. Therefore, the body will be located at the halfway point of the
height of the domain.
Body configuration
The Body configuration menu has the following input data and settings available:
Input geometry
The following formats can be imported into the C-Wizard: Parasolid/CATPart, STL/Domain or
Existing mesh.
l Parasolid/CATPart format can be modified by the C-Wizard: it can be cut at the mirror plane
to create a half body simulation or at the free surface to build a mono-fluid simulation. The
geometry should not have a bounding box already included since the script will create it
automatically.
l STL/Domain format cannot be modified except to scale and translate parts. Therefore the file
needs to already include the domain box and have the desired configuration.
For mono-fluid double body computations the top of the domain should cut the body at the free
surface location.
The input geometry should always be defined in meters, regardless of the length unit chosen.
If the geometry name contains blank spaces, a copy of the initial geometry file will be done into the
/_mesh directory and renamed with '_' instead of a blank space.
If an Existing mesh is chosen, the mesh can have been built with Hexpress or Hexpress/Hybrid.
In the mesh directory at least the following files should be present:
l Hexpress: *.igg, *.dom and *.bcs
l Hexpress/Hybrid: *.bcs, *.dom, *.igg, *.hex and *.fnmb.
If the imported mesh is an Hexpress mesh and it was not generated, the C-Wizard will re-generate
it at the end of the Part I. Hexpress/Hybrid meshes need to be generated before they are imported
since the C-Wizard cannot re-generate them.
Body configuration
If the Input geometry is a Parasolid/CATPart with an entire body the user is requested to decide
whether the body is cut into two halves through its symmetry plane or to maintain the entire body
geometry.
If Cut body in two (with mirror plane) is selected the mirror plane will always be placed at
Y=0.0. On the other hand if Keep entire body (no mirror plane) is selected the domain will be
centered in Y direction on the body center.
However, if the input is an STL, Domain or an Existing mesh with half body, it must have the
mirror placed at Y=0.0.
Body orientation
If the initial position of the body is not aligned with the Cartesian axis of the primary reference
frame, then the answer is No and a section called Angles is displayed. Here any initial angle, for
instance a yaw or a pitch angle, can be defined. For more details please check the Cardan Angles
section.
When Center of Gravity is set to Automatic (based on the free surface) , the user can still
impose the vertical position of the Center of Gravity by checking Specify zCoG, and entering the
value.
When Adjust pitch for hydrostatic equilibrium? is set to Free , the value of the hydrostatic trim
can be retrieved in the Fine Marine shell.
In case of mono-fluid double body computations, the Initial free surface position and Body
mass settings appear only for Input geometry: Parasolid/CATPart. For other input formats the
hydrostatics will not be computed and the user is only asked to input Body reference length and
the Center of gravity: User defined.
FIGURE 3.3
Body configuration menu for mono-fluid computation.
In case of mono-fluid double body computations, if the bulbous part of the ship is very close to the
free surface and its surface is tangent to the latter, bad quality cells might appear in that area.
Activating motions to be solved here is equal to apply the Solved type of motion for the trim
(Ry0), sink (Tz0) and surge (Tx0) degrees of freedom in the Body motion menu. Some
explanations can also be found in the Solved Law of Motion section.
Trim (Ry0) and sink (Tz0) can not be solved for mono-fluid computations.
Flow definition
Clicking the Next button will switch to the page of the Flow definition menu.
FIGURE 3.4
Flow definition menu.
Speed definition
If Resistance curve is chosen the C-Wizard will prepare one computation per speed.
If the resistance curve has a constant speed increment it can be defined by entering the minimum
speed Vmin , the maximum speed Vmax and Speed Increment . The list of speeds is
automatically generated by pressing Enter after the Speed Increment definition.
Otherwise the user can directly enter a list of speeds separated by spaces or commas.
If the surge (Tx0) is solved, the user is only requested to provide an Estimated speed in Speed
definition (positive value(s)).
In case of successive restarts, the surge motion (Tx0) of the restart computations will be defined using
relative time . This is a powerful feature in combination with the Convergence checker which can be
activated in the Additional inputs page of the C-Wizard.
This option will scale the input geometry with the scaling factor specified. All input data will be
scaled accordingly to maintain Froude number.
The geometry and all input should be given in the original scale.
If the input geometry is an existing mesh the complete mesh is scaled. Viscous layers are not
recomputed for the new scaled velocity.
Fluid properties
Water and Air dynamic viscosity and density need to be defined. A database with ITTC
standards for fresh water and salt water is available based on temperature.
If default values are kept, the C-Wizard will use the data for fresh water at 15 degrees.
In case of mono-fluid computations, only Water database is available here.
Shallow water
This option activates the specific treatment for the mesh and flow settings when the proximity of
the bottom should be taken into account. To begin, one can verify if the configuration is indeed a
shallow water problem. According to ITTC formula, shallow water is defined by:
FIGURE 3.6
Shallow water activation.
If the configuration can be considered as a shallow water case, the Depth value should be defined
as the distance between the free surface level and the bottom location.
The following modifications are made to the project setup when shallow water is active:
l Bottom patch treatment:
The bottom patch is solid in shallow water cases. To minimize the mesh size it is split in two
parts:
zmin_FWD: from upstream boundary to approximately 0.5*LOA behind the body. Viscous
layers are inserted in this patch with a target y+ of 300 to accurately capture the velocity
gradients between body and bottom.
zmin_BWD: slip wall condition, no viscous layers inserted.
The boundary condition for mesh deformation Bottom (shallow water) (see "Boundary
conditions for grid deformation" (p. 387) is applied to both bottom patches.
l Refinement boxes:
In X and Y directions the boxes cover the body bounding box.
Box1: from bottom patch to free surface. 4 refinement levels in Z direction, 3 refinement levels
in X and Y directions.
Box2: from bottom patch to body lowest point. It ensures at least 10 cells in the Z direction,
cells will have an aspect ratio of 8.
l The body is moved down by 0.5*under keel clearance for meshing:
Under keel clearance is defined as the distance between the lowest point in the body and the
bottom patch. This technique means we mesh in a "worst case scenario" with the mesh very
compressed. During the computation the body will move up, stretching the mesh instead of
compressing it and making mesh deformation more robust.
Additional inputs
Clicking the Next button will switch to the page of the Additional inputs menu. These options
are not mandatory.
Actuator disk
The actuator disk simulates the effect of a propeller without the need to mesh its geometry.
The tangential force should not be activated for a half-body computation of a single-screw ship.
l Activate body self update: Frequency [Time Steps]. It defines how often the actuator disk
force will be updated.
When Activate body self update is checked, the user can access:
l Body drag: The thrust will be updated to match the ship resistance at every body self
update frequency. If Tangential force is active the Thrust/Torque ratio defined here will be
kept throughout the computation.
l Open water data: the actuator disk will use open water data to compute the actual thrust
and torque (if the tangential force is activated) during the computation, more information
can be found in "Actuator Disk" (p. 406) menu. The user is requested to input the *.dat file
of the open water values and the revolution rate.
It is possible to make a self- propulsion computation using the Open water data. The surge
(Tx0) should be solved and the rotation rate should be Imposed.
The number of actuator disks in one project is limited to 1, although it can be manually modified.
When an Actuator disk is activated the mesh is refined around it in the following way:
If the body is not aligned with Cartesian axis the actuator disk coordinates and shaft direction need to
be given before rotation. The C-Wizard will take care of rotating it. For example if the hull has a
pitch angle of 2 degrees the actuator disk needs to be defined in the hull with pitch = 0.0. All
rotations are done around the center of gravity.
External force
With this option activated the mesh will be refined during the simulation to accurately capture the
free surface. It is recommended for high speed hulls causing a large free surface deformations. For
low speed hulls the default HEXPRESSTM mesh is sufficient.
Depending on the chosen option, the C-Wizard applies the Free surface (tensor) criterion or the
Free surface + Pressure Hessian criterion for Initial base refinement + AGR and AGR only
respectively. Parameters are defined automatically. Criterion description and more details can be
found in the Criterion section.
Two options are available in the resistance mode:
Wall roughness
With this option the user can define the roughness of the body surfaces. A uniform roughness will
be applied to all patches with wall function boundary condition: all solid patches except the ones
containing 'deck' in their name.
The user can choose among the proposed values or define its own equivalent sand grain height in
micrometers.
The Value description button opens a window with the details of each roughness level. The
second column in the table corresponds to the Equivalent sand grain height in micrometers.
FIGURE 3.8
Wall roughness values available in the C-Wizard.
From Schultz, Michael P. (2007) 'Effects of coating roughness and biofouling on ship resistance
and powering', Biofouling, 23:5, 331 - 341
Convergence checker
This option activates the convergence checker for the computations of the current project. The
following parameters are used:
l Stability interval: 50%
l Average last: 50%
l Tolerance: 1%
l Check after: acceleration ramp
l Quantities: Fx and Solved motions
l This functionality is included in Fine Marine but requires additional calibration. The
corresponding version is set to Beta.
l Coarse mesh initialization cannot be used in combination with successive restarts in case a
resistance curve is being simulated.
This option allows activating the coarse grid initialization for resistance computations allowing a
reduction in total computation time of up to 75%. This entails setting up a two-step project with a
coarse initial mesh which is used to get through the initial transient (the acceleration of the vessel)
in the first computation. The second computation then restarts from this initial solution and uses
systematic refinement to obtain the converged result on a fine grid. The systematic refinement is
done using the dedicated "Systematic refinement criteria" (p. 570) available through the Adaptive
Grid Refinement menu.
If the previously detailed option Adaptive grid refinement (AGR) on free surface during the
simulation is turned on during the C-Wizard set-up, the Multisurface + Systematic criterion is
used. Otherwise, the Systematic refinement criterion is activated.
The coarse mesh is generated starting from the Medium mesh density (see the Mesh setup page),
but using half the number of initial mesh refinements in each direction. The resulting base mesh
therefore ends up with a cell count which is three to five times lower than a standard Medium
mesh density mesh. This means that the Mesh density cannot be changed if the Coarse mesh
initialization is activated. Using a custom refinement dictionary remains possible.
FIGURE 3.9
Coarse mesh initialization (currently in Beta mode).
The refinement dictionary contains an additional field Freeze cell size. The value of this field (0
for inactive, 1 for active) determines if the same cell size with coarse grid initialization is
maintained the same as without. This is achieved by adding an additional refinement for these
patches and ensures that the snapping procedure is successful even on coarse meshes. It is
recommended to activate the freeze for small surfaces that would get at most 4 cells across their
smallest dimension with the Medium refinement level.
Computation resources
If activated, the C-Wizard will automatically add the computations to the task manager with the
specified number of cores per computation. This option is activated by default.
FIGURE 3.11
Computation resources activation.
The dependencies between multiple computations are automatically set in the task manager if the
Successive restarts option was activated in the Flow definition menu. These computations will
start automatically once the dependency has been fulfilled.
Mesh-setup
The C-Wizard Mesh-Setup menu provides settings to configure the domain and the mesh unless
the user has imported an existing mesh in which case this section is not accessible. Hexpress will
create them automatically respecting the geometry and input parameters (body configuration,
orientation, free surface position, etc.). All the settings are driven by the type of simulation and
input provided earlier.
Kelvin angle:
It merges faces which have the same name. It supposes that the faces are correctly named with a
Computation Aided-Design software, with Hexpress or using the "Export from Rhinoceros®" (p.
957) tool for instance. Therefore, names should be defined carefully in the CAD software to
avoid that too many faces being merged.
The faces will only be merged if the names are identical. A face called shaft1 will be merged with
another shaft1 but not with shaft2. This way suffixes can be used to have the required mesh setup
defined in the refinement dictionary for faces containing "shaft" in their name but avoid merging
the faces.
At the end of the merging process the main edges defining the geometry should still be there to
allow HEXPRESSTM to capture the geometry correctly.
It groups all faces which are contiguous and more or less tangential. A minimum angle should be
chosen. If two contiguous faces have a maximum angle between 0 and , then the faces are
grouped. This method is especially helpful when the geometry imported is a Parasolid file with
many faces. A low angle will merge more faces whereas an angle close to 180 degrees will merge
fewer faces. Each time two faces are merged, the new face gets an ID (the ID is incremented one
by one).
After that, the plugin will assign specific values according to the name of the face: hull, deck,
bow, aft, etc.
For C-Wizard projects the Merge faces with the same name option is the preferred one. It is up
to the user to define how many parts will be present in the computation by defining patch names
inside a CAD software (such as CADfix for eg.). The user will ensure that groups of patches with the
same name will be correctly defined depending on the computation specifics. Once the names are
defined, the C-Wizard will perform merging and will apply mesh parameters automatically.
Thanks to this option, the C-Wizard will automatically create two domains:
l the Background domain, respecting the standard Resistance Domain size guidelines;
l the Overlapping domain, containing the ship, respecting the overset guidelines.
The initial cells in the Overlapping domain have 4 refinement levels compared to the Background
domain. The initial cell size (ICS):
ICSbackground = ICSoverlapping 24
Hence refinement levels defined in the dictionary will be decreased by 4 to reach the same final
cell size.
Example: the user requests hull patches to have 7 refinements. In the Overlapping domain
they will have 7 - 4 = 3 refinements.
When this option is active two extra refinement areas are added in the Background domain:
l a refinement box at the Overlapping domain location.
l overset internal surfaces where the free surface crosses the domains interface to have cells with
a maximum aspect ratio of 4.
Compared to the approach without overset, this option provides more robustness for the
computation (avoiding weighted mesh deformation), but increases CPU time by 2 on average.
Hence, it is recommended to activate this option in case large motions are expected.
By default Explicit coupling is active in the Overset menu. But this option is deactivated for
Resistance cases with Froude > 1.0, as the computations will have a more unsteady behavior.
By defining a threshold where every lower angle will be considered as sharp, geometry will be
simplified where the sharp angle is detected. By default the Threshold value is fixed to 10
degrees. Sharp angles in the geometry can lead to poor quality cells in the Hexpress mesh, for
instance in the area of keels, spray rails, skeg tangent to hull and etc. This function can help, in an
automated way, to preserve better mesh quality by locally splitting and merging patches to remove
the sharp angle.
Domain size
l Automatic: it is assumed that the domain size can be defined for this application according to
the Froude number (Fn) and the Body reference length (Length over all LOA of the ship).
Hence default numbers are specified as:
l LOABefore = 1.5
l LOABelow = 1.5
l LOABehind = 3 (Fn≤1), 4 (1<Fn<1.5) or 5 (Fn≥1.5)
l LOAAbove = 1.0
l LOASide = 2.0
The C-Wizard will not precisely respect this number of LOA: the domain size is adjusted to:
l exactly have LOA/1024 for the free surface refinements,
l have a number of initial cells multiple of 4 in the Medium mesh to fit the Grid Convergence
study requirements.
If the Input geometry is an STL or the Domain the following option is available:
l Keep initial size: The domain size will be kept as an Input geometry and the mesh will be
recalculated considering the C-Wizard settings.
Please note that if the domain size is too small compared to the recommendations, the quality of the
solution can be affected. It is advised to use this option only for resistance and planing regime.
Triangulation density
Y+ value
Automatic or User-defined.
The automatic Y+ value is based on the assumption that the wall function will be used during the
computation and computed in the following way:
Viscous layers are defined and computed for solid faces only and if the face is not called
"DECK" or "Deck" since there is usually no need to insert viscous layers on the deck of a ship
(viscous effects from the air part are negligible).
The script assumes an isotropic mesh is used on the solid walls. Hence, the height of the first
Euler cell on the solid walls can be computed by the script according to the number of refinement:
The number of viscous layers is computed based on a theoretical formula and does not take into
account the influence from patches nearby. It is advised to let the inflation method active or to check
the number of viscous layers to insert after the optimization step.
To deactivate the viscous layer insertion and make a fast analysis, a big Y+ value (let's say 10000) can
be put as a user-defined value.
Refinement dictionary
In order to specify user defined mesh parameters the User defined option must be chosen and at
this moment the user can load its own "Refinement dictionary" (p. 162) that will be used by the
C-Wizard mode.
Mesh setup
The free surface is refined to reach a target cell size of LOA/1000 in Z direction. The aspect ratio
of the cells is 128 and a diffusion of 4 is applied. If the mesh density is Coarse the diffusion is
reduced to 3.
Buffer insertion of Type II is activated by default for the edges on the Mirror plane during the
snapping step. However, Hexpress will try to respect this input but it is not guaranteed that it will
be the case after snapping.
After specification of the inputs, if domain creation and boundary conditions automatic definition
are successful, it will be suggested to follow the mesh generation or to manually check first the
mesh settings.
The domain creation will not work in case the symmetry plane is not perfectly aligned with the Y
plane.
For the general mesh settings, in case of Shallow water activation, mesh generation settings will
be updated accordingly to respect the water Depth and the ship wave region.
To finalize the mesh generation step, when the Manually check the mesh first has been selected,
the Start button of Hexpress will initialize the mesh generation. After the mesh is successfully
created, selecting the Go back to the project set up will proceed to the next step of the wizard.
Project setup
When meshing procedures have been finalized, the project will be automatically created
respecting the previously defined parameters.
Estimation of the hydrostatic parameters will be automatically done by 'domhydro' tool. If the
Initial free surface position was set to User defined, the following hydrostatic properties of the
body will be displayed:
l Displacement: [kg]
l Coordinates of the Center of Gravity: [m, ft]
However, if the Initial free surface position was set to Automatic (based on body mass), only
the estimation of the Z-coordinate of the free surface location [m, ft] will be displayed as
follows.
FIGURE 3.16
C-Wizard report: Interface input parameters for an automatic estimation of the free surface
location.
After confirming the Estimation of hydrostatic values, the settings of the computations will be
automatically defined.
The Computations menu will be updated with the cN_X.X names, where N is the computation
number and X.X is the speed value.
The acceleration time of the body is defined differently for independent computations and
successive restarts.
When working in batch mode these values can be modified in the input file.
A computation with Froude number below 0.1 requires a finer timestep value to account for the
smaller scale physics that occurs. As such, the timestep value must be divided by two in this
case. To compensate for this change, the following durations are multiplied by two:
l acceleration ramp
l computation duration
l Quasi-static DT2 and DT3 values
Independent computations
Successive restarts
In the case of successive restarts, the duration of the acceleration ramp is defined by an
empirical formula that takes the block coefficient into account:
This formula is valid for all block coefficients larger than 0.16. For block coefficients below this
value, the settings for independent restarts are used.
Streaking correction will be activated to avoid any numerical ventilation at higher Froude
numbers. It will have no impact on the results.
This application is dedicated to the analysis of bodies in waves. A single wave will be used and
several advancing speeds for the body can be prepared.
A special setup with Internal wave generator will be prepared for cases where the body has zero
advancing speed.
Limitations:
l Following waves (encounter angle lower than 90 degrees) are not supported.
The first page of the C-Wizard provides the general Project management menu: here the
project directory can be specified. Selecting the Application type Seakeeping will provide access
to the specific parameters in accordance to this application.
FIGURE 3.17
First page of the C-Wizard: Selection of computation type.
It is also possible to define the Wizard units that will be used during the wizard process.
Body configuration
The Body configuration menu has the following input data and settings available:
Input geometry
The following formats can be imported into the C-Wizard: Parasolid/CATPart, STL/Domain or
Existing mesh.
l Parasolid/CATPart format can be modified by the C-Wizard: it can be cut at the mirror plane
to create a half body simulation or at the free surface to build a mono-fluid simulation. The
geometry should not have a bounding box already included since the script will create it
automatically.
l STL/Domain format cannot be modified except to scale and translate parts. Therefore the file
needs to already include the domain box and have the desired configuration.
Existing mesh will not be modified.
Once an input file is imported the user needs to specify if it contains Half body or an Entire
body.
The input geometry should always be defined in meters, regardless of the length unit chosen.
If an Existing mesh is chosen, the mesh can have been built with Hexpress or Hexpress/Hybrid.
In the mesh directory at least the following files should be present:
l Hexpress: *.igg, *.dom and *.bcs
l Hexpress/Hybrid: *.bcs, *.dom, *.igg, *.hex and *.fnmb.
Names of the external box patches should match with the CWizard standards: xmin, xmax, ymin,
ymin_ SYM, ymax, zmin, zmax and cylinder_ side. If they don't the user will need to correct the
external boundary conditions at the end of the C-Wizard setup.
If the imported mesh is an Hexpress mesh and it was not generated, the C-Wizard will re-generate
it at the end of the Part I. Hexpress/Hybrid meshes need to be generated before they are imported
since the C-Wizard cannot re-generate them.
Body configuration
If the Input geometry is a Parasolid/CATPart with an entire body the user is requested to decide
whether the body is cut into two halves through its symmetry plane or to maintain the entire body
geometry.
If Cut body in two (with mirror plane) is selected the mirror plane will always be placed at
Y=0.0. On the other hand if Keep entire body (no mirror plane) is selected the domain will be
centered in Y direction on the body center.
However, if the input is an STL, Domain or an Existing mesh with half body, it must have the
mirror placed at Y=0.0.
Body orientation
If the initial position of the body is not aligned with the Cartesian axis of the primary reference
frame, then the answer is No and a section called Angles is displayed. Here any initial angle, for
instance a yaw or a pitch angle, can be defined. For more details please check the Cardan Angles
section.
Initial free surface, body mass, center of gravity and hydrostatic pitch
When Center of Gravity is set to Automatic (based on the free surface) , the user can still
impose the vertical position of the Center of Gravity by checking Specify zCoG, and entering the
value.
Activating motions to be solved here is equal to apply the Solved type of motion for the trim
(Ry0), sink (Tz0) and surge (Tx0) degrees of freedom in the Body motion menu. Some
explanations can also be found in the Solved Law of Motion section.
Inertia matrix
Two possibilities are given for the estimation of the inertia matrix:
l Uniform mass distribution using Domhydro
l Regression law using ITTC formula
More information can be found in "Estimate inertial data" (p. 347). The coefficient used by the C-
Wizard for cx, cy, cz are the default values: 0.37, 0.25, 0.25.
Flow definition
Clicking the Next button will switch to the page of the Flow definition menu.
Speed definition
If Resistance curve is chosen the C-Wizard will prepare one computation per speed.
If the resistance curve has a constant speed increment it can be defined by entering the minimum
speed Vmin , the maximum speed Vmax and Speed Increment . The list of speeds is
automatically generated by pressing Enter after the Speed Increment definition.
Otherwise the user can directly enter a list of speeds separated by spaces or commas.
If Successive restarts is activated the result of each speed will be used as initial solution for the
next one (Initial solution menu of Fine Marine interface). This option should not be used if more
than one computation will be run at the same time. With Independent computations each
computation will be run without any dependence on previous speeds.
If the surge (Tx0) is solved, the user is only requested to provide an Estimated speed in Speed
definition (positive value(s)).
In case of successive restarts, the surge motion (Tx0) of the restart computations will be defined using
the relative time .
This option will scale the input geometry with the scaling factor specified. All input data will be
scaled accordingly to maintain Froude number.
The geometry and all input should be given in the original scale.
If the input geometry is an existing mesh the complete mesh is scaled. Viscous layers are not
recomputed for the new scaled velocity.
Fluid properties
Water and Air dynamic viscosity and density need to be defined. A database with ITTC
standards for fresh water and salt water is available based on temperature.
If default values are kept, the C-Wizard will use the data for fresh water at 15 degrees.
Wave generator
The wave period and the wave height are requested as well as the wave encounter angle. This
angle corresponds to the wave angle compared the ship direction (being X- positive). The
illustration is provided as a reference and it is coming from ITTC procedures.
FIGURE 3.21
Resistance curve parameters.
l Number of Lref resolved behind the body : defines the length of the domain in X
direction and takes Lref =max(LOA, wave length).
l Number of time steps per encounter period: defines the value of the time step based on
the encounter period between the ship and the wave.
In order to simulate the ship motion in oblique waves, the wave direction is transformed into an
equivalent ship yaw angle. Therefore, the ship has advancing speed in both Tx and Ty and the
wave system is aligned with the Cartesian axis of the primary reference frame.
The " Wave generation info calculator" (p. 38) plugin is also available here.
If the body has zero advancing speed (Single speed = 0.0) a special setup is prepared to minimize
the impact of waves reflection from the body reaching back the wave generator. In such case, an
internal wave generator is used instead of the boundary condition wave generator. The domain
size is defined according to the guidelines described in the application guidelines for seakeeping
simulations. Two damping areas are created, one upstream of the internal wave generator and one
near the outlet.
The reference speed used in the solver setup is the wave celerity.
Speed = 0.0 is only possible with single speed, not in a Resistance curve.
This option activates the specific treatment for the mesh and flow settings when the proximity of
the bottom should be taken into account. To begin, one can verify if the configuration is indeed a
shallow water problem. According to ITTC formula, shallow water is defined by:
with H the height of the water surface compared to the bottom, and D the draught.
FIGURE 3.22
Shallow water activation.
If the configuration can be considered as a shallow water case, the Depth value should be defined
as the distance between the free surface level and the bottom location.
The following modifications are made to the project setup when shallow water is active:
l Bottom patch treatment:
The bottom patch is solid in shallow water cases. To minimize the mesh size it is split in two
parts:
zmin_FWD: from upstream boundary to approximately 0.5*LOA behind the body. Viscous
layers are inserted in this patch with a target y+ of 300 to accurately capture the velocity
gradients between body and bottom.
zmin_BWD: slip wall condition, no viscous layers inserted.
The boundary condition for mesh deformation Bottom (shallow water) (see "Boundary
conditions for grid deformation" (p. 387) is applied to both bottom patches.
l Refinement boxes:
In X and Y directions the boxes cover the body bounding box.
Box1: from bottom patch to free surface. 4 refinement levels in Z direction, 3 refinement levels
in X and Y directions.
Box2: from bottom patch to body lowest point. It ensures at least 10 cells in the Z direction,
cells will have an aspect ratio of 8.
The Richardson extrapolation is not guaranteed here since the domain size is customized in the Z-
direction.
In Seakeeping application with shallow water the wave length depends on the water depth. The
Wave generator infos tool can be used to compute it.
Additional input
Clicking the Next button will switch to the page of the Additional inputs menu. These options
are not mandatory.
Actuator disk
The actuator disk simulates the effect of a propeller without the need to mesh its geometry.
Geometric definition: it should be as close as possible to the real propulsion system.
l Thickness, Inner radius and Outer radius [m, ft]
l Center coordinates [m, ft]
l Shaft direction (pointed to the wake). If the shaft is horizontal: Dir_X = -1.0, Dir_Y = 0.0,
Dir_Z = 0.0. If the shaft has an angle epsilon downward compared to horizontal axis: Dir_X =
-cos(epsilon), Dir_Y = 0.0, Dir_Z = -sin(epsilon).
Force definition:
The tangential force should not be activated for a half-body computation of a single-screw ship.
l Activate body self update: Frequency [Time Steps]. It defines how often the actuator disk
force will be updated.
When Activate body self update is checked, the user can access:
l Body drag: The thrust will be updated to match the ship resistance at every body self
update frequency. If Tangential force is active the Thrust/Torque ratio defined here will be
kept throughout the computation.
l Open water data: the actuator disk will use open water data to compute the actual thrust
and torque (if the tangential force is activated) during the computation, more information
can be found in "Actuator Disk" (p. 406) menu. The user is requested to input the *.dat file
of the open water values and the revolution rate.
It is possible to make a self- propulsion computation using the Open water data. The surge
(Tx0) should be solved and the rotation rate should be Imposed.
The number of actuator disks in one project is limited to 1, although it can be manually modified.
When an Actuator disk is activated the mesh is refined around it in the following way:
l A refinement sector starting 2 disk radius upstream of the disk and ending 6 disk radius
downstream is created. Its radius is 1.1 times the disk radius. Its refinement level is a function
of the disk radius and mesh density.
l A second smaller refinement sector covering exactly the disk volume is created only if
necessary to make sure there are at least 20 cells in the disk thickness.
External force
With this option activated the mesh will be refined during the simulation to accurately capture the
free surface. It is recommended for high speed hulls causing a large free surface deformations. For
low speed hulls the default HEXPRESSTM mesh is sufficient.
Depending on the chosen option, the C-Wizard applies the Free surface (tensor) criterion or the
Free surface + Pressure Hessian criterion for Initial base refinement + AGR and AGR only
respectively. Parameters are defined automatically. Criterion description and more details can be
found in the Criterion section.
Wall roughness
With this option the user can define the roughness of the body surfaces. A uniform roughness will
be applied to all patches with wall function boundary condition: all solid patches except the ones
containing 'deck' in their name.
The user can choose among the proposed values or define its own equivalent sand grain height in
micrometers.
The Value description button opens a window with the details of each roughness level. The
second column in the table corresponds to the Equivalent sand grain height in micrometers.
From Schultz, Michael P. (2007) 'Effects of coating roughness and biofouling on ship resistance
and powering', Biofouling, 23:5, 331 - 341
Computation resources
If activated, the C-Wizard will automatically add the computations to the task manager with the
specified number of cores per computation. This option is activated by default.
FIGURE 3.25
Computation resources activation.
The dependencies between multiple computations are automatically set in the task manager if the
Successive restarts option was activated in the Flow definition menu. These computations will
start automatically once the dependency has been fulfilled.
Mesh setup
The C-Wizard Mesh-Setup menu provides settings to configure the domain and the mesh unless
the user has imported an existing mesh in which case this section is not accessible. Hexpress will
create them automatically respecting the geometry and input parameters (body configuration,
orientation, free surface position, etc.). All the settings are driven by the type of simulation and
input provided earlier.
FIGURE 3.27
Case 1 and 2 of Demo Case 12: Seakeeping demonstrated the achievable reductions in
computation time when using the light setup.
It merges faces which have the same name. It supposes that the faces are correctly named with a
Computation Aided-Design software, with Hexpress or using the "Export from Rhinoceros®" (p.
957) tool for instance. Therefore, names should be defined carefully in the CAD software to
avoid that too many faces being merged.
The faces will only be merged if the names are identical. A face called shaft1 will be merged with
another shaft1 but not with shaft2. This way suffixes can be used to have the required mesh setup
defined in the refinement dictionary for faces containing "shaft" in their name but avoid merging
the faces.
At the end of the merging process the main edges defining the geometry should still be there to
allow HEXPRESSTM to capture the geometry correctly.
It groups all faces which are contiguous and more or less tangential. A minimum angle should be
chosen. If two contiguous faces have a maximum angle between 0 and , then the faces are
grouped. This method is especially helpful when the geometry imported is a Parasolid file with
many faces. A low angle will merge more faces whereas an angle close to 180 degrees will merge
fewer faces. Each time two faces are merged, the new face gets an ID (the ID is incremented one
by one).
After that, the plugin will assign specific values according to the name of the face: hull, deck,
bow, aft, etc.
For C-Wizard projects the Merge faces with the same name option is the preferred one. It is up
to the user to define how many parts will be present in the computation by defining patch names
inside a CAD software (such as CADfix for eg.). The user will ensure that groups of patches with the
same name will be correctly defined depending on the computation specifics. Once the names are
defined, the C-Wizard will perform merging and will apply mesh parameters automatically.
Overset
Thanks to this option, the C-Wizard will automatically create two domains:
ICSbackground = ICSoverlapping 24
Hence refinement levels defined in the dictionary will be decreased by 4 to reach the same final
cell size.
Example: the user requests hull patches to have 7 refinements. In the Overlapping domain
they will have 7 - 4 = 3 refinements.
When this option is active two extra refinement areas are added in the Background domain:
l a refinement box at the Overlapping domain location.
l overset internal surfaces where the free surface crosses the domains interface to have cells with
a maximum aspect ratio of 4.
Compared to the approach without overset, this option provides more robustness for the
computation (avoiding weighted mesh deformation), but increases CPU time by 2 on average.
Hence, it is recommended to activate this option in case large motions are expected.
By defining a threshold where every lower angle will be considered as sharp, geometry will be
simplified where the sharp angle is detected. By default the Threshold value is fixed to 10
degrees. Sharp angles in the geometry can lead to poor quality cells in the Hexpress mesh, for
instance in the area of keels, spray rails, skeg tangent to hull and etc. This function can help, in an
automated way, to preserve better mesh quality by locally splitting and merging patches to remove
the sharp angle.
Domain size
For the Automatic option, the domain size and meshing strategy for the waves is defined
according to the application guidelines for seakeeping simulations. These guidelines consider not
only the length overall (LOA) of the ship but also the wave characteristics.
Although it is also possible to define differently with the following options:
l Define as a function of LOA : It is available here to change the C- Wizard predefined
parameters by imposing user-defined values by means of LOA.
If the Input geometry is an STL or the Domain the following option is available:
l Keep initial size: The domain size will be kept as an Input geometry and the mesh will be
recalculated considering the C-Wizard settings.
Please note that if the domain size is too small compared to the recommendations, the quality of the
solution can be affected. It is advised to use this option only for resistance and planing regime.
Triangulation density
Y+ value
Automatic or User-defined.
The automatic Y+ value is based on the assumption that the wall function will be used during the
computation and computed in the following way:
Viscous layers are defined and computed for solid faces only and if the face is not called
"DECK" or "Deck" since there is usually no need to insert viscous layers on the deck of a ship
(viscous effects from the air part are negligible).
The script assumes an isotropic mesh is used on the solid walls. Hence, the height of the first
Euler cell on the solid walls can be computed by the script according to the number of refinement:
where:
l HEuler: size of the Euler mesh cell;
l Hinit: size of the initial mesh cell;
l N: number of refinement on the face. The number of viscous layers needed to completely fill
the Euler cell is computed with an inflation technique and a stretching ratio of 1.2.
The number of viscous layers is computed based on a theoretical formula and does not take into
account the influence from patches nearby. It is advised to let the inflation method active or to check
the number of viscous layers to insert after the optimization step.
To deactivate the viscous layer insertion and make a fast analysis, a big Y+ value (let's say 10000) can
be put as a user-defined value.
In order to specify user defined mesh parameters the User defined option must be chosen and at
this moment the user can load its own "Refinement dictionary" (p. 162) that will be used by the
C-Wizard mode.
Mesh setup
Buffer insertion of Type II is activated by default for the edges on the Mirror plane during the
snapping step. However, Hexpress will try to respect this input but it is not guaranteed that it will
be the case after snapping.
After specification of the inputs, if domain creation and boundary conditions automatic definition
are successful, it will be suggested to follow the mesh generation or to manually check first the
mesh settings.
FIGURE 3.30
C-Wizard report window: Switch to the automated mesh generation.
The domain creation will not work in case the symmetry plane is not perfectly aligned with the Y
plane.
For the general mesh settings, in case of Shallow water activation, mesh generation settings will
be updated accordingly to respect the water Depth and the ship wave region.
To finalize the mesh generation step, when the Manually check the mesh first has been selected,
the Start button of Hexpress will initialize the mesh generation. After the mesh is successfully
created, selecting the Go back to the project set up will proceed to the next step of the wizard.
Project setup
When meshing procedures have been finalized, the project will be automatically created
respecting the previously defined parameters.
FIGURE 3.31
C-Wizard report: Interface input parameters for an user defined free surface location.
However, if the Initial free surface position was set to Automatic (based on body mass), only
the estimation of the Z-coordinate of the free surface location [m, ft] and the Estimated inertia
matrix [kg/m²] will be displayed as follows.
FIGURE 3.32
C-Wizard report: Interface input parameters for an automatic estimation of the free surface
location.
This application is dedicated to the analysis of propeller performance in open water. It can be used
to prepare a single advance ratio or a complete performance curve.
Bollard pull configuration is supported with an automatically modified setup.
Beginner Tutorial 4 offers step by step instructions to set up an open water case using the C-Wizard.
The first page of the C-Wizard provides the general Project management menu: here the
project directory can be specified. Selecting the Application type Open water will provide access
to the specific parameters in accordance to this application.
For this application, only Mono-fluid model is available as only the propeller is modeled during
an open water simulation.
It is also possible to define the Wizard units that will be used during the wizard process.
Body configuration
The Body configuration menu has the following input data and settings available:
Input geometry
The following formats can be imported into the C-Wizard: Parasolid/CATPart, STL/Domain or
Existing mesh.
l Parasolid/CATPart format can be modified by the C-Wizard.
l STL/Domain format cannot be modified except to scale and translate parts. Therefore the file
needs to already include the domain box and have the desired configuration.
l Existing mesh will not be modified.
The input geometry should always be defined in meters, regardless of the length unit chosen.
If the geometry name contains blank spaces, a copy of the initial geometry file will be done into the
/_mesh directory and renamed with '_' instead of a blank space.
If an Existing mesh is chosen, the mesh can have been built with Hexpress, Hexpress/Hybrid or
Autogrid5. In the mesh directory at least the following files should be present:
l Hexpress: *.igg, *.dom and *.bcs
l Hexpress/Hybrid: *.bcs, *.dom, *.igg, *.hex and *.fnmb.
l Autogrid5: *.bcs, *.dom, *.igg, *.hex and *.fnmb.
Names of the external box patches should match with the CWizard standards: xmin, xmax, ymin,
ymin_ SYM, ymax, zmin, zmax and cylinder_ side. If they don't the user will need to correct the
external boundary conditions at the end of the C-Wizard setup.
If the imported mesh is an Hexpress mesh and it was not generated, the C-Wizard will re-generate
it at the end of the Part I. Hexpress/Hybrid and Autogrid5 meshes need to be generated before
they are imported since the C-Wizard cannot re-generate them.
Positive/Negative X-axis
It defines the direction of the flow when looking at the propeller from the astern direction.
In case of Autogrid5 mesh as input, the flow is aligned with the Z-axis.
When viewing a propeller from astern, the leading edges of the blades will always be farther away
from the viewer than the trailing edges. For instance, the propeller rotates clockwise, and is right-
handed, if the leading edges are on the right.
In case of Autogrid5 mesh as input, the flow is aligned with the Z-axis so the propeller rotation can
be defined from X-axis to Y-axis or the opposite direction.
Automatic/User-defined
If the propeller center is not known by the user, its coordinates will be automatically computed
within the C-Wizard process.
Yes/ No.
If the propeller is not aligned with the X-axis, two other angles have to be defined:
In case of Autogrid5 mesh as input, the body alignment is forced along the Z-axis.
Automatic (= Radius)/User-defined
Flow definition
Clicking the Next button will switch to the page of the Flow definition menu.
J or Define speeds
Fix flow speed or Fix rotational speed
List of computational points
Fixed speed definition
FIGURE 3.36
Speed selection parameters.
The computations to run can be defined either by prescribing the Advance ratio J or by defining
the speeds.
In each case, to perform a performance curve, the choice is given either to fix the flow speed or
the rotational speed.
To prescribe a performance curve with a constant increment:
Restart type
This option will scale the input geometry with the scaling factor specified. All input data will be
scaled accordingly to maintain Reynolds number.
The geometry and all input should be given in the original scale.
A scaling factor smaller than 1 will reduce the geometry size.
Fluid properties
Water dynamic viscosity and density need to be defined. A database with ITTC standards for
fresh water and salt water is available based on temperature.
If default values are kept, the C-Wizard will use the data for fresh water at 15 degrees.
Open water computation implies the mono- fluid flow model thus only Water database is
available here.
Additional inputs
Clicking the Next button will switch to the page of the Additional inputs menu.
Wall roughness
With this option the user can define the roughness of the body surfaces. A uniform roughness will
be applied to all patches with wall function boundary condition: all solid patches except the ones
containing 'deck' in their name.
The user can choose among the proposed values or define its own equivalent sand grain height in
micrometers.
The Value description button opens a window with the details of each roughness level. The
second column in the table corresponds to the Equivalent sand grain height in micrometers.
FIGURE 3.38
Wall roughness values available in the C-Wizard.
Convergence checker
This option activates the convergence checker for the computations of the current project. The
following parameters are used:
l Stability interval: 50%
l Average last: 50%
l Tolerance: 1%
l Check after: acceleration ramp
l Quantities: Fx, Mx
When the Convergence checker is activated, the Maximum number of time steps that is usually
defined will be doubled to let the Convergence checker operate.
Computation resources
If activated, the C-Wizard will automatically add the computations to the task manager with the
specified number of cores per computation. This option is activated by default.
FIGURE 3.39
Computation resources activation.
Mesh setup
The C-Wizard Mesh-Setup menu provides settings to configure the domain and the mesh unless
the user has imported an existing mesh in which case this section is not accessible. Hexpress will
create them automatically respecting the geometry and input parameters (body configuration,
orientation, etc.). All the settings are driven by the type of simulation and input provided earlier.
Mesh density
If Yes is selected, an additional refinement sector capturing the wake flow field behind the
propeller will be defined, with the following logic:
The maximum number of refinements is set to 8, with an isotropic target cell size of D/48to limit
the number of cells. The refinement sector in itself is defined as:
l Sector length: D/6 upstream, 4D downstream
l Sector radius: 0.6D
where D is the propeller diameter.
This option does add a considerable amount of cells and should therefore be used with care.
It merges faces which have the same name. It supposes that the faces are correctly named with a
Computation Aided-Design software, with Hexpress or using the "Export from Rhinoceros®" (p.
957) tool for instance. Therefore, names should be defined carefully in the CAD software to
avoid that too many faces being merged.
The faces will only be merged if the names are identical. A face called shaft1 will be merged with
another shaft1 but not with shaft2. This way suffixes can be used to have the required mesh setup
defined in the refinement dictionary for faces containing "shaft" in their name but avoid merging
the faces.
At the end of the merging process the main edges defining the geometry should still be there to
allow HEXPRESSTM to capture the geometry correctly.
It groups all faces which are contiguous and more or less tangential. A minimum angle should be
chosen. If two contiguous faces have a maximum angle between 0 and , then the faces are
grouped. This method is especially helpful when the geometry imported is a Parasolid file with
many faces. A low angle will merge more faces whereas an angle close to 180 degrees will merge
fewer faces. Each time two faces are merged, the new face gets an ID (the ID is incremented one
by one).
After that, the plugin will assign specific values according to the name of the face: hub, duct,
shaft, blade, etc.
By defining a threshold where every lower angle will be considered as sharp, geometry will be
simplified where the sharp angle is detected. By default the Threshold value is fixed to 10
degrees. Sharp angles in the geometry can lead to poor quality cells in the Hexpress mesh, for
instance in the area of keels, spray rails, skeg tangent to hull and etc. This function can help, in an
automated way, to preserve better mesh quality by locally splitting and merging patches to remove
the sharp angle.
FIGURE 3.41
Example of geometry before (left top), mesh (right top) and geometry after (left bottom), mesh
(right bottom) the Simplify sharp angles procedure
Domain size
l Automatic: it is assumed that the domain size can be defined for this application according to
the propeller radius R (R is automatically computed by the C-Wizard). Hence default numbers
are specified as:
Please note that if the domain size is too small compared to the recommendations, the quality of the
solution can be affected. It is advised to use this option only for resistance and planing regime.
Triangulation density
Y+ value
Automatic or User-defined.
The automatic Y+ value is based on the assumption that the wall function will be used during the
computation and computed in the following way:
The script assumes an isotropic mesh is used on the solid walls. Hence, the height of the first
Euler cell on the solid walls can be computed by the script according to the number of refinement:
where:
l HEuler: size of the Euler mesh cell;
l Hinit: size of the initial mesh cell;
l N: number of refinement on the face. The number of viscous layers needed to completely fill
the Euler cell is computed with an inflation technique and a stretching ratio of 1.2.
The number of viscous layers is computed based on a theoretical formula and does not take into
account the influence from patches nearby. It is advised to let the inflation method active or to check
the number of viscous layers to insert after the optimization step.
To deactivate the viscous layer insertion and make a fast analysis, a big Y+ value (let's say 10000) can
be put as a user-defined value.
Refinement dictionary
In order to specify user defined mesh parameters the User defined option must be chosen and at
this moment the user can load its own "Refinement dictionary" (p. 162) that will be used by the
C-Wizard mode.
After specification of the inputs, if domain creation and boundary conditions automatic definition
are successful, it will be suggested to follow the mesh generation or to manually check first the
mesh settings.
FIGURE 3.42
C-Wizard report window: Switch to the automated mesh generation.
To finalize the mesh generation step, when the Manually check the mesh first has been selected,
the Start button of Hexpress will initialize the mesh generation. After the mesh is successfully
created, selecting the Go back to the project set up will proceed to the next step of the wizard.
Project setup
When meshing procedures have been finalized, the project will be automatically created
respecting the previously defined parameters.
The Computations menu will be updated with the cN_X.X names, where N is the computation
number and X.X is the speed value.
The flow reference velocity used to define the Time step value parameter is computed considering
not only the Flow speed V flow but also the Rotational speed ω of the propeller. This reference
value is also used to compute the first layer thickness for a given Y+ during the viscous layer
insertion in Hexpress and the Reynolds number in the Flow model menu of Fine Marine.
In case of computing the Performance curve of the propeller, the first layer thickness is
estimated considering only the maximum Rotational speed of the propeller. However, the
reference velocity to define the Reynolds number in the Flow model menu for each computation
will consider its corresponding Rotational speed.
A body Propeller will be created with all solid patches. If patches containing duct in their name a
second body Duct will be created. The body Propeller will have an imposed rotation, while Duct
will remain fixed. Note that all elements in the geometry should have rotational symmetry.
This application is dedicated to the analysis of planing hulls. A specific treatment is applied to
deal with important changes in trim angle compared to hydrostatic position.
The computation will be initialized by placing the hull in an estimated planing position. This
position can be predicted with the Savitsky method if the hull shape is compliant with it or with a
user-defined prediction.
A resistance curve is available with Savitsky prediction of the planing position. Initial conditions
are used to place the hull for each speed and Adaptive Grid refinement takes care of the free
surface refinement.
Beginner Tutorial 5 offers step by step instructions to set up a planing hull case using the C-Wizard.
Limitations:
l Importing an existing mesh is not available.
l The "C-Wizard computation matrix" (p. 169) is not available in a fully automated manner.
l C- Wizard cannot be started from a geometry in a configuration representing a
hydrodynamic equilibrium since in domhydro the dynamic parameters are computed from
a hydrostatic configuration.
The first page of the C-Wizard provides the general Project management menu: here the
project directory can be specified. Selecting the Application type Planing Regime will provide
access to the specific parameters in accordance to this application.
FIGURE 3.43
First page of the C-Wizard: Selection of computation type.
It is also possible to define the Wizard units that will be used during the wizard process.
Body configuration
The Body configuration menu has the following input data and settings available:
The following formats can be imported into the C-Wizard: Parasolid/CATPart, STL/Domain or
Existing mesh.
l Parasolid/CATPart format can be modified by the C-Wizard: it can be cut at the mirror plane
to create a half body simulation or at the free surface to build a mono-fluid simulation. The
geometry should not have a bounding box already included since the script will create it
automatically.
l STL/Domain format cannot be modified except to scale and translate parts. Therefore the file
needs to already include the domain box and have the desired configuration.
Once an input file is imported the user needs to specify if it contains Half body or an Entire
body.
The planing regime application should be used with symmetric geometries (half or entire body) as the
Savitsky empirical formula has been developed using symmetric hulls. The geometry must also be
aligned with the Cartesian axis.
The input geometry should always be defined in meters, regardless of the length unit chosen.
If the geometry name contains blank spaces, a copy of the initial geometry file will be done into the
/_mesh directory and renamed with '_' instead of a blank space.
Body configuration
If the Input geometry is a Parasolid/CATPart with an entire body the user is requested to decide
whether the body is cut into two halves through its symmetry plane or to maintain the entire body
geometry.
If Cut body in two (with mirror plane) is selected the mirror plane will always be placed at
Y=0.0. On the other hand if Keep entire body (no mirror plane) is selected the domain will be
centered in Y direction on the body center.
However, if the input is an STL or a Domain with half body, it must have the mirror placed at
Y=0.0.
If the initial position of the body is not aligned with the Cartesian axis of the primary reference
frame, then the answer is No and a section called Angles is displayed. Here any initial angle, for
instance a yaw or a pitch angle, can be defined. For more details please check the Cardan Angles
section.
Initial free surface, body mass, center of gravity and hydrostatic pitch
When Center of Gravity is set to Automatic (based on the free surface) , the user can still
When Adjust pitch for hydrostatic equilibrium? is set to Free , the value of the hydrostatic trim
can be retrieved in the Fine Marine shell.
Activating motions to be solved here is equal to apply the Solved type of motion for the trim
(Ry0), sink (Tz0) and surge (Tx0) degrees of freedom in the Body motion menu. Some
explanations can also be found in the Solved Law of Motion section.
The Savitsky method is known as a resistance prediction method for prismatic planing hulls.
Generally speaking and based on the input information provided, the C-Wizard mode with the use
of the Savitsky prediction method will estimate the planing hull final position for the given speed.
If the Savitsky prediction method requirements are not respected by the computation conditions,
information will be provided at the end of the setup. With the suggestion given, conditions could
be modified to meet the requirements.
Please, note that the Savitsky prediction method has been created for prismatic hull shapes. According
to this, the accuracy of the prediction cannot be guaranteed for other hull shapes. The C-Wizard uses
the same settings regarding body motion as detailed in the application guidelines for High-speed
vessels.
These values should be entered for the ship in the initial hydrostatic position.
l Hull characteristics:
l b[m, ft]: beam of the hull;
l beta[deg, rad]: deadrise angle of the hull.
l Engine characteristics:
l f[m, ft]: distance of thrust line to the CoG;
l epsilon[deg, rad]: an angle between the bottom line and the thrust line.
l Advanced:
l Predicted Pitch Correction[%]: modifies the prediction
Savitsky prediction method is known to give an over estimation of trim values, hence in the C-
Wizard mode the Predicted Pitch Correction option allows to correct the estimation.
By clicking the Illustration button, a picture illustrating the described parameters will become
available:
Please note, that the initial position of CoG and Cardan angles will be updated in the .input file with
respect to Savitsky predictions.
User-defined position
If an estimation of the final position of the boat is known, the C-Wizard will directly move the
planing hull in this position.
These values should be entered relatively to the ship in its initial hydrostatic position:
l Sinkage: the value should be positive if the boat goes down and negative if the boat goes up.
l Trim: the trim value is the rotation around the CoG along the Y-axis
The rotation center used to apply the trim is the Center of Gravity defined in hydrostatic position
(before applying the sinkage).
Flow definition
Clicking the Next button will switch to the page of the Flow definition menu.
Speed definition
FIGURE 3.49
Resistance curve parameters.
If the user is working in batch mode it is possible to choose if the different speeds of the resistance
curve are set up in a single project (single mesh) or in separate projects.
*
*** SPEED DEFINITION
* List of speeds
7.0
* Single mesh for all speeds 1= YES/0 = NO
0
*
When working from the graphical interface single mesh is used by default to have one single
project.
If the surge (Tx0) is solved, the user is only requested to provide an Estimated speed in Speed
definition (positive value(s)).
This option will scale the input geometry with the scaling factor specified. All input data will be
scaled accordingly to maintain Froude number.
If the input geometry is an existing mesh the complete mesh is scaled. Viscous layers are not
recomputed for the new scaled velocity.
Fluid properties
Water and Air dynamic viscosity and density need to be defined. A database with ITTC
standards for fresh water and salt water is available based on temperature.
If default values are kept, the C-Wizard will use the data for fresh water at 15 degrees.
Shallow water
This option activates the specific treatment for the mesh and flow settings when the proximity of
the bottom should be taken into account. To begin, one can verify if the configuration is indeed a
shallow water problem. According to ITTC formula, shallow water is defined by:
with H the height of the water surface compared to the bottom, and D the draught.
FIGURE 3.50
Shallow water activation.
If the configuration can be considered as a shallow water case, the Depth value should be defined
as the distance between the free surface level and the bottom location.
The following modifications are made to the project setup when shallow water is active:
l Bottom patch treatment:
The bottom patch is solid in shallow water cases. To minimize the mesh size it is split in two
parts:
The Richardson extrapolation is not guaranteed here since the domain size is customized in the Z-
direction.
Additional inputs
Clicking the Next button will switch to the page of the Additional inputs menu. These options
are not mandatory.
Actuator disk
The actuator disk simulates the effect of a propeller without the need to mesh its geometry.
The tangential force should not be activated for a half-body computation of a single-screw ship.
l Activate body self update: Frequency [Time Steps]. It defines how often the actuator disk
force will be updated.
When Activate body self update is checked, the user can access:
l Body drag: The thrust will be updated to match the ship resistance at every body self
update frequency. If Tangential force is active the Thrust/Torque ratio defined here will be
kept throughout the computation.
l Open water data: the actuator disk will use open water data to compute the actual thrust
and torque (if the tangential force is activated) during the computation, more information
can be found in "Actuator Disk" (p. 406) menu. The user is requested to input the *.dat file
of the open water values and the revolution rate.
It is possible to make a self- propulsion computation using the Open water data. The surge
(Tx0) should be solved and the rotation rate should be Imposed.
The number of actuator disks in one project is limited to 1, although it can be manually modified.
When an Actuator disk is activated the mesh is refined around it in the following way:
If the body is not aligned with Cartesian axis the actuator disk coordinates and shaft direction need to
be given before rotation. The C-Wizard will take care of rotating it. For example if the hull has a
pitch angle of 2 degrees the actuator disk needs to be defined in the hull with pitch = 0.0. All
rotations are done around the center of gravity.
External force
With this option activated the mesh will be refined during the simulation to accurately capture the
free surface. It is recommended for high speed hulls causing a large free surface deformations. For
low speed hulls the default HEXPRESSTM mesh is sufficient.
Depending on the chosen option, the C-Wizard applies the Free surface (tensor) criterion or the
Free surface + Pressure Hessian criterion for Initial base refinement + AGR and AGR only
respectively. Parameters are defined automatically. Criterion description and more details can be
found in the Criterion section.
Wall roughness
With this option the user can define the roughness of the body surfaces. A uniform roughness will
be applied to all patches with wall function boundary condition: all solid patches except the ones
containing 'deck' in their name.
The user can choose among the proposed values or define its own equivalent sand grain height in
micrometers.
FIGURE 3.52
Wall roughness values available in the C-Wizard.
From Schultz, Michael P. (2007) 'Effects of coating roughness and biofouling on ship resistance
and powering', Biofouling, 23:5, 331 - 341
Convergence checker
This option activates the convergence checker for the computations of the current project. The
following parameters are used:
l Stability interval: 50%
l Average last: 50%
l Tolerance: 1%
l Check after: acceleration ramp
l Quantities: Fx and Solved motions
When the Convergence checker is activated, the Maximum number of time steps that is usually
defined will be doubled to let the Convergence checker operate.
Computation resources
If activated, the C-Wizard will automatically add the computations to the task manager with the
specified number of cores per computation. This option is activated by default.
Mesh setup
The C-Wizard Mesh-Setup menu provides settings to configure the domain and the mesh.
Hexpress will create them automatically respecting the geometry and input parameters (body
configuration, orientation, free surface position, etc.). All the settings are driven by the type of
simulation and input provided earlier.
Kelvin angle:
It merges faces which have the same name. It supposes that the faces are correctly named with a
Computation Aided-Design software, with Hexpress or using the "Export from Rhinoceros®" (p.
957) tool for instance. Therefore, names should be defined carefully in the CAD software to
avoid that too many faces being merged.
The faces will only be merged if the names are identical. A face called shaft1 will be merged with
another shaft1 but not with shaft2. This way suffixes can be used to have the required mesh setup
defined in the refinement dictionary for faces containing "shaft" in their name but avoid merging
the faces.
At the end of the merging process the main edges defining the geometry should still be there to
allow HEXPRESSTM to capture the geometry correctly.
It groups all faces which are contiguous and more or less tangential. A minimum angle should be
chosen. If two contiguous faces have a maximum angle between 0 and , then the faces are
grouped. This method is especially helpful when the geometry imported is a Parasolid file with
many faces. A low angle will merge more faces whereas an angle close to 180 degrees will merge
fewer faces. Each time two faces are merged, the new face gets an ID (the ID is incremented one
by one).
After that, the plugin will assign specific values according to the name of the face: hull, deck,
bow, aft, etc.
Overset
Thanks to this option, the C-Wizard will automatically create two domains:
l the Background domain, respecting the standard Resistance Domain size guidelines;
l the Overlapping domain, containing the ship, respecting the overset guidelines.
The initial cells in the Overlapping domain have 4 refinement levels compared to the Background
domain. The initial cell size (ICS):
ICSbackground = ICSoverlapping 24
Hence refinement levels defined in the dictionary will be decreased by 4 to reach the same final
cell size.
Example: the user requests hull patches to have 7 refinements. In the Overlapping domain
they will have 7 - 4 = 3 refinements.
When this option is active two extra refinement areas are added in the Background domain:
l a refinement box at the Overlapping domain location.
l overset internal surfaces where the free surface crosses the domains interface to have cells with
a maximum aspect ratio of 4.
Compared to the approach without overset, this option provides more robustness for the
computation (avoiding weighted mesh deformation), but increases CPU time by 2 on average.
Hence, it is recommended to activate this option in case large motions are expected.
By defining a threshold where every lower angle will be considered as sharp, geometry will be
simplified where the sharp angle is detected. By default the Threshold value is fixed to 10
degrees. Sharp angles in the geometry can lead to poor quality cells in the Hexpress mesh, for
instance in the area of keels, spray rails, skeg tangent to hull and etc. This function can help, in an
automated way, to preserve better mesh quality by locally splitting and merging patches to remove
the sharp angle.
Domain size
l Automatic: it is assumed that the domain size can be defined for this application according to
the Froude number (Fn) and the Body reference length (Length over all LOA of the ship).
Hence default numbers are specified as:
l LOABefore = 1.5
l LOABelow = 1.5
l LOABehind = 3 (Fn≤1), 4 (1<Fn<1.5) or 5 (Fn≥1.5)
l LOAAbove = 1.0
l LOASide = 2.0
l Define as a function of LOA : It is available here to change the C- Wizard predefined
parameters by imposing user-defined values by means of LOA.
If the Input geometry is an STL or the Domain the following option is available:
l Keep initial size: The domain size will be kept as an Input geometry and the mesh will be
recalculated considering the C-Wizard settings.
Triangulation density
Y+ value
Automatic or User-defined.
The automatic Y+ value is based on the assumption that the wall function will be used during the
computation and computed in the following way:
Viscous layers are defined and computed for solid faces only and if the face is not called
"DECK" or "Deck" since there is usually no need to insert viscous layers on the deck of a ship
(viscous effects from the air part are negligible).
The script assumes an isotropic mesh is used on the solid walls. Hence, the height of the first
Euler cell on the solid walls can be computed by the script according to the number of refinement:
where:
l HEuler: size of the Euler mesh cell;
l Hinit: size of the initial mesh cell;
l N: number of refinement on the face. The number of viscous layers needed to completely fill
the Euler cell is computed with an inflation technique and a stretching ratio of 1.2.
To deactivate the viscous layer insertion and make a fast analysis, a big Y+ value (let's say 10000) can
be put as a user-defined value.
Refinement dictionary
In order to specify user defined mesh parameters the User defined option must be chosen and at
this moment the user can load its own "Refinement dictionary" (p. 162) that will be used by the
C-Wizard mode.
Mesh setup
The free surface is refined to reach a target cell size of LOA/1000 in Z direction. The aspect ratio
of the cells is 128 and a diffusion of 4 is applied. If the mesh density is Coarse the diffusion is
reduced to 3.
Buffer insertion of Type II is activated by default for the edges on the Mirror plane during the
snapping step. However, Hexpress will try to respect this input but it is not guaranteed that it will
be the case after snapping.
After specification of the inputs, if domain creation and boundary conditions automatic definition
are successful, it will be suggested to follow the mesh generation or to manually check first the
mesh settings.
FIGURE 3.56
C-Wizard report window: Switch to the automated mesh generation.
The domain creation will not work in case the symmetry plane is not perfectly aligned with the Y
plane.
For the general mesh settings, in case of Shallow water activation, mesh generation settings will
be updated accordingly to respect the water Depth and the ship wave region.
To finalize the mesh generation step, when the Manually check the mesh first has been selected,
the Start button of Hexpress will initialize the mesh generation. After the mesh is successfully
created, selecting the Go back to the project set up will proceed to the next step of the wizard.
Project setup
When meshing procedures have been finalized, the project will be automatically created
respecting the previously defined parameters.
The hydrostatic properties of the body will be displayed:
l Displacement: [kg]
l Coordinates of the Center of Gravity: [m, ft]
Estimation of the inertia matrix values will be automatically done by "Domhydro" (p. 982) tool
but the user can still edit the values since they have to be as accurate as possible for a good
resistance and motion calculation.
l Estimated inertia matrix: [kg/m²]
FIGURE 3.57
C-Wizard report: Interface input parameters for an user defined free surface location.
Components of the inertia matrix (moments and products) are defined at the center of gravity of
the body in the reference frame.
If the project includes several speeds and Savitsky is chosen for the final position estimation, there
is one predicted position per speed. The savitsky.output file with the complete Savitsky
prediction information is stored in the project folder.
l Several speeds with overset active (recommended): the Body motion initial conditions are used
to place each speed to the corresponding predicted planing position.
l Several speed in a single domain: the body is placed in the median trim and sinkage of all the
predicted positions. The body motion initial conditions are then used to go from the mean
value to the predicted position for each speed. The aim of this method is minimizing mesh
deformation.
The Computations menu will be updated with the cN_X.X names, where N is the computation
number and X.X is the speed value.
If the hull is equipped with engines that extend its dimensions, an extra step may be needed.
Indeed, to place the boat according to the Savitsky prediction, the C-Wizard needs to know where
is the bottom aft of the hull. If the geometry imported doesn't contain the names of the patches, the
bottom aft of the engine will wrongly be taken instead, and the positioning will not be correct. To
handle this kind of situation, one can proceed in two steps by launching the C-Wizard twice:
1. Create a domain using the Resistance mode of the C-Wizard, name the patches and find the Z-
coordinate of the free surface if needed;
2. Create the final project using the Planing regime mode of the C-Wizard with the domain
previously created.
If you need to retrieve the position of the free surface computed by the C-Wizard, click on Go back
to project setup. The value can be found in the Initial solution menu.
Step 2
The C-Wizard always reads the refinement dictionary provided in the file 'cwizard_refinement_
dictionary.csv' present by default in /_python/_cwizard/templates/. This file provides information
about the refinements that will be applied for different patches according to their name. This file
can be customized by the user, directly into the installation folder (all users of the version will be
impacted) or through a local copy of the file at a different location.
FIGURE 3.58
Example of vocabulary and refinement settings.
If names have been defined in accordance with this vocabulary, the C-Wizard will be able to
recognize them and to define mesh settings accordingly. They can be defined with a CAD
software, with Hexpress or using the "Export from Rhinoceros®" (p. 957) tool for instance.
A 'Coarse' mesh corresponds to the 1st level of mesh density, 'Medium' to the 2nd level and 'Fine'
to the 3rd level. Hence, if the selected mesh density in the interface is 'Medium', the 2nd number
of the refinement level will be selected. The same idea applies for the diffusion.
If the face name is not in this table, the script will assign he target cell size criteria (0,0,0) together
with a maximum number of refinements equal to 6 and global diffusion.
Patch names can be written in different ways: capital letters or not, with a suffix or prefix, etc.
For instance, "surf1_ domship_ Deck_ 2" will be considered as "Deck" for the refinement
parameters, as long as it is the only keyword found in the dictionary.
If there are several patches containing the same name (for example "Hull1", "Hull2" and "Hull3")
they will be grouped together in Hexpress. If a patch name contains two dictionary names from
the dictionary ("Hull_ small"), the patch will go to the group with the highest number of
refinements (in this case "Small") and get the highest number of refinements applied.
l Application: type of application can be specified as 'all', or dedicated to one several modes
from C- Wizard: 'resistance' , 'seakeeping' , 'openWater' , 'planingRegime' . If several are
specified, they must be separated by ';' without spaces.
l Criterion: type of Adaptation criterion can be defined as 'Distance', 'Curvature' and/or
'Target' for Target cell sizes. If several are specified, they must be separated by ';' without
spaces;
l Max number of refinements (coarse;medium;fine): maximum level of Refinements for each
mesh level, using an integer such as 2;4;6 for instance;
l Target (coarse(X;Y;Z);medium(X;Y;Z);fine(X;Y;Z)): Target cell size on the specified patch
defined by the size in X,Y,Z directions, such as (0;0;0);(0;0;0);(0;0;0). The decimal numbers
have to be written here: with a '.' and not a ',';
l Diffusion (coarse;medium;fine): Refinement diffusion level can be specified as 'global' or
with the integers, 2;4;2 for instance.
Adaptation groups are created if several faces have the same name (or names contained in the same
row of the '.csv' file). The name of the group is the first name of the row.
Example for refinement of a patch named "Deck" using the default values from the
dictionary
If the geometry contains a patch named "Deck", a Target cell size criterion will be applied with a
maximum number of refinement of 4 and target sizes of (0,0,0). The diffusion will be set to global
(2 by default).
The patch names in a row are "Blade", "Suction_side" and "Pressure_side", and that 3 patches of
the domain are called "Suction_side" and 3 others "Pressure_side", will all be grouped under the
name "Blade".
On one hand, the C-Wizard checks if the keyword of the '.csv' is contained in the patch name,
regardless of capital or small letters. For instance, "Foil_1" and "Foil_2" would both be refined as
"foil". On the other hand, the method Merge by name will perform the merging only if the
patches have the exact same name. Hence, "Foil_1" and "Foil_2" will not be merged together.
This is an important concept to understand: if two patches should receive the same refinements
but they should not being merged together, they should have the same keyword inside their name
but they should have a different prefix or suffix.
This file can be edited in simple text editors (Notepad++ or Kate, for instance), but also in
Microsoft Excel and LibreOffice. To import the file properly in Microsoft Excel (2007):
1. Open Microsoft Excel > Data > From text;
2. On the first import page choose the option 'Delimited';
3. On the second check ',' as delimiters (and only ',');
4. Keep the default options for the last page.
Some edges such as propeller blade leading edges or the hull-transom intersection need extra
refinement because of the complex flow physics happening in the area.
Three automatic edge refinements are defined in the C-Wizard if the edge joins two patches
whose names include the following keywords:
l Propeller leading and trailing edges: "blade", "suction_ side" or "pressure_ side". Edges
between patches including these keywords will have 8 refinements.
l Foil leading and trailing edges: a refinement level of 12 will be applied to edges between 2
patches with "foil" in their name.
l Hull-transom: when a common edge is found between patches including the keywords "hull"
and "transom" or "aft", a refinement level of 7 will be applied to the edge.
To avoid the refinement, the user can give the exact same name to the two patches and activate
"Merge faces by name" to merge the patches and remove the edge.
It is possible to run the C-Wizard full procedure in batch mode and the way to launch it depends
on the operating system.
Launching command
It is recommended to store the .input file and to launch the C-Wizard in batch mode from the project
directory.
.input files from Fine Marine version 6.0 or earlier are not supported.
Templates of the .input files for the resistance, seakeeping, open water, sailing yacht resistance
and hydrofoil resistance applications are available under the following directory for Linux and
Windows OS:
/NUMECA_SOFTWARE/finemarine#/_python/_cwizard/templates/
These template files are:
l resistance: cwizard_resistance.input,
l seakeeping: cwizard_seakeeping.input,
l open water: cwizard_open_water.input,
l planing regime: cwizard_planing.input,
l sailing yacht resistance: cwizard_sailingYachtVPP.input,
l hydrofoil resistance: cwizard_foilVPP.input,
l trim optimization: cwizard_resistanceTrimOpt.input.
Expert template files contain all the information required for the computation launch. Input files
are also created during the C-Wizard setup through the interface as described in the paragraphs:
"Open water application" (p. 117), "Resistance application" (p. 65), "Seakeeping application" (p.
93), "Planing regime application" (p. 134) and then can be modified in accordance to the user
preferences. It is also possible to create a multiple calculation setup thanks to the matrix
implementation approach. Details can be found in the paragraph "C-Wizard computation matrix"
(p. 169).
In the ADVANCED PARAMETERS of the .input, the user can control the solver outputs:
By setting 1 in the template, the expert parameter 3dOutputSaving_ will be modified from YES
to NO .
When the 3dOutputSaving_ parameter value is set to NO, GUI will not save any volume outputs.
Classic outputs are covered including the Volume probes, Optional output variables and Mean output
Activating Save minimal output, the C-Wizard will clean the cache folder from the _mesh
directory after the mesh generation.
All 3D outputs are removed and only surface probes can be used for the post-processing. The
type of surface probes, per application, is defined as followed:
Multi-fluid computation
Mono-fluid computation
For more information about the surface probes, please refer to the "Surface Probes" (p. 660) section
in the user guide.
Expert usage
Example of comments
To create multiple simulations the project Matrix approach can be applied for the C-Wizard
computations. It can be done using a variety of geometries, speeds, imposed angles and draughts
values.
This page describes the matrix setup for Resistance, Seakeeping, Open water, Foil and Sailing
yacht. For trim optimization see the dedicated page in "Extended applications" (p. 177).
With matrix setup computations the description of a ship or ships can be specified in several
positions. To modify the ship initial position automatically in accordance with the Matrix
parameters, the initial geometry has to be provided in the upright position.
To use the Matrix mode, the template file .input provided within the /NUMECA_
SOFTWARE/finemarine#/_python/_cwizard/templates/ should be modified. This mode is only
available in batch mode. Here are the necessary inputs to specify the computation Matrix.
Matrix modes
Firstly, there are two options to define a matrix to calculate. A full matrix or a sparse matrix.
This will result in a full matrix: all combinations of yaw, pitch, roll and draught will be used as
This approach allows to set up a sparse matrix, where only some combinations of angles, draughts
and mass are used.
To use it the MATRIX INPUT FILE field is available in the input file:
*** MATRIX INPUT FILE
* 1 = YES /0 = NO ; *.csv path & name (If YES, leave all MATRIX PARAMETERS and List
of speeds to 0.0)
0 /path_to_matrix_definition/sparse_matrix.csv
*
An example of matrix input file can be found in /NUMECA_SOFTWARE/finemarine#/_python/_
cwizard/templates/matrix.csv.
l Comments can be included in this file by starting the line with "#".
l The first non-commented line needs to be a header with the list of matrix parameters. The
order of this header will be user to read the rest of the file. Also, the file should not contain
blank lines.
l The file can have draughts defined - mass and center of gravity will be computed. Or it can
have mass and center of gravity defined and free surface position will be computed.
l The following column titles are available: "yaw", "pitch", "roll", "draught", "speed" or
"mass", "cog", "speed", "transition" and "cavitation".
l The "speed" column is compulsory, the rest are optional.
FIGURE 3.61
Computation list in a project created with the matrix.csv above and single mesh approach. "Y"
stands for yaw, "R" for roll and "V" for velocity.
FIGURE 3.62
Computation list in a project created with the matrix.csv above and single mesh approach. "M"
stands for mass and "V" for velocity. Center of gravity is not included in the computation name.
Depending on the selected mode of matrix calculation, the body motion setup will be adapted.
Domhydro workflow:
l For each different draught the mass, CG and inertia matrix will be computed.
l For each different mass and CG, the free surface position and angles are computed.
l If there are angles (yaw, pitch or roll) the mass, CG and inertia of the draught will be kept. The
sinkage (Tz) needed to keep static iso-displacement will be computed. This extra sinkage will
only be applied if the sinkage degree of freedom is solved during the computation.
l Rotations are applied around the CG computed by Domhydro.
The matrix of mass and CG is only compatible with the single mesh approach.
l When a non-zero angle is specified in the matrix its corresponding degree of freedom will be
automatically set to "Fixed". For example if a list of pitch angles (Ry) is given the pitch will
automatically be set to "Fixed". The reason behind this setting is that CG position is not
recomputed for each rotation. If pitch was solved all computations would converge to the same
solution. Check the trim optimization mode if you need to run cases with different static CG
positions.
This approach allows to save meshing time and disk space. However it is only suitable for
small rotation angles and draughts. For large position changes mesh deformation can lead to a
low quality mesh.
If single mesh is not active one project is created per matrix point as shown in "Matrix project
structure." (p. 170). If more than one speed is given, each speed will have a separate computation.
When this approach is used a text output file single_mesh_setup_summary.dat is created in the
project folder. It contains a summary of the setup for each computation to help the user verify the
settings easily.
The following values are written in the file for each computation: Speed, Free surface Z position,
Initial Tz0, Initial Rz0, Initial Ry1, Initial Rx2, Mass, CoG.
Body configuration
Yaw and Roll angles are incompatible with the half body configuration.
If an actuator disk or external force is active it will be applied in all the matrix points. The
coordinates and directions should be defined in the coordinate system of the geometry as it was
imported in upright position.
The C-Wizard will make the necessary transformations for each matrix position.
If single mesh is not active, the user can choose if AGR is used or not.
If single mesh, is active AGR will be automatically activated. The main AGR settings used will
be the following:
l If the option Initial base refinement + AGR is chosen, the following settings will be applied:
l Criterion: Free surface tensor
l Target grid spacing normal to free surface: 1.3*Lref/1024
l If the option AGR only is chosen, the following settings will be applied:
l Criterion: Free surface + Pressure Hessian
l Target grid spacing normal to free surface: 1.3*Lref/1024
l Hessian criterion threshold: 0.1 Lref
Launch parameters
l Number of cores
Number of meshes to be performed at the same time. This option depends on the license profile,
thus please contact your local support team in case of questions. This option is not relevant for
single mesh approach where a single project is created.
To track the progress of each computation launched under the global project the "cwizard.status"
file is created within the project directory each time. Details can be found in "The C-Wizard
Status File: .status" (p. 769).
The main concept of the C-Wizard is to provide default settings for the mesh generation and
computations. A first division is done by general categories such as "Resistance application" (p.
65), "Seakeeping application" (p. 93), "Open water application" (p. 117), and "Planing regime
application" (p. 134). These categories are sufficient to filter the questions to ask to the user and
determine the most important settings automatically. However, even if they are based on best
practices gathered from the user, they should remain conservative enough to be applicable on a
large variety of utilization. For such reason, extended applications are also provided.They contain
optimized default settings dedicated to particular applications, such as hydrofoil or sailing yacht
resistance, also based on recent investigations and users feedback.
In this chapter the user will find the following applications:
l Hydrofoil resistance
l Sailing yacht resistance
l Trim optimization
l PMM maneuvers
l Cavitation and transition
Current limitations are the same as for the global C-Wizard framework and available in "C-
Wizard" (p. 63) main page.
Hydrofoil resistance
This extended application is based on the "Resistance application" (p. 65) and on the "C-Wizard
computation matrix" (p. 169). We invite the users to first read these two chapters as well as
"Launching C-Wizard in batch mode" (p. 166) before continuing.
Two domain generation modes are possible. They are related to the two reference lengths existing
in an hydrofoil case:
l the hull reference length (LOA)
l the foil reference length (the chord)
Hull-based
In this case, the hull reference length is used to calculate the domain dimensions whereas the foil
reference length is used to insert proper viscous layers.
The objective of this method is to allow an easy comparison between a simulation with only the hull
and one with only the foil.
Foil-based
In this case, the domain size is based on the foil reference length. With this mode
The hull reference length is used for the triangulation and to define the Initial Cell Size of the
domain, which will have implications on the free-surface target cell size.
Mesh
Cavitation
In foil mode, the cavitation model can be activated either for all computations (full matrix), or for
specific simulations (sparse matrix). The specifics are:
l The SAUER model is used.
l A two-simulation setup is created with an initialization computation and a true cavitation run.
l The water vapor pressure must be prescribed.
l The initial sigma value can be user-defined or computed automatically as 1.3*sigma.
l The vapor density value can be user- defined (default value: 0.02kg/m3) or computed
automatically using the ideal gas law and a salinity of 35ppm in case of salt water (density
above 1000kg/m3).
*** CAVITATION
* No=0/Yes=1; water vapor pressure
0 2000.0
*
*** INITIAL SIGMA
* Automatic=0/User-defined=1; value
0 1.0
*
*** VAPOR DENSITY
* Automatic=0/User-defined=1; water vapor density; temperature (Celsius)
0 0.02 15
*
In foil mode, the transition model can be activated either for the full matrix (full matrix), or for
specific simulations (sparse matrix).
This extended application is based on the "Resistance application" (p. 65) and on the "C-Wizard
computation matrix" (p. 169). We invite the users to first read these two chapters as well as
"Launching C-Wizard in batch mode" (p. 166) before continuing.
This extension for sailing yacht has been developed in the frame of the America's cup. The main
goal is to provide a Velocity Prediction Program (VPP) with the matrix of efforts from the hull.
The VPP code classically used in the Cup solves the performance of a sailing yacht in various
wind conditions by balancing hull, rudder, hydrofoil and sail forces. As a result, this extended
application is only available in matrix mode and therefore only in batch mode.
A new template, called "cwizard_sailingYachtVPP.input" is provided in the installation package
under:
/NUMECA_SOFTWARE/finemarine#/_python/_cwizard/_templates
As in the rest of matrix applications the different geometry positions and speeds can be given
directly in the input file to obtain a full matrix or through a MATRIX INPUT FILE to obtain a
sparse matrix. See the main C-Wizard computation matrix page for more details.
The user can also choose between two approaches with regard to the meshing strategy applied to
the combinations of yaw, pitch, roll, draught and speed per geometry under study, defined under
*** SINGLE MESH in the input file:
l No single mesh: each combination of the matrix has its own mesh, which leads to one project
per combination in the matrix. Therefore, per geometry there will be as many projects as
number of combinations in the matrix and each project will have as many computations as
number of speeds.
l Single mesh: all the combinations in the matrix are computed with a single mesh, which leads
to one project per matrix. Therefore, per geometry there will be only one project with as many
computations as number of combinations in the matrix.
The center of gravity input will be used as the reference point to apply the pitch and roll angles in
single mesh mode and also to calculate the efforts in both approaches.
Also, some particular expert parameters are automatically added to the setup in "Expert
Parameters" (p. 646) menu:
l The streaking correction is activated (see "Activate streaking correction" (p. 544)).
l The velocity clipping is activated to avoid any local and temporary divergence (see "Activate
velocity clipping" (p. 544)).
Trim optimization
This extended application is based on the "Resistance application" (p. 65) and on the "C-Wizard
computation matrix" (p. 169). We invite the users to first read these two chapters as well as
"Launching C-Wizard in batch mode" (p. 166) before continuing.
The objective of the Trim optimization is to find the optimum initial static trim leading to minimal
drag for a given displacement and operational speed. This will allow the operator to distribute the
loads and ballasts on the ship in an optimal way to minimize fuel consumption.
A new template, called "cwizard_resistanceTrimOpt.input" is provided in the installation package
under:
/NUMECA_SOFTWARE/finemarine#/_python/_cwizard/_templates
Workflow
Inputs
The inputs given by the user are:
l Ship geometry at zero static trim
l List of draughts at midship (d1, d2,...dn)
l List of trims (t1, t2,...tm)
l List of speeds (v1, v2,...vp)
Specifics
l C-Wizard matrix mode will create one project per pair of (draught, trim) and one computation
per speed in all projects. Therefore n*m projects with p computations each will be created.
l Iso-displacement conditions are considered for each draught: the same displacement is defined
for all trim values. The z-coordinate of the free surface remains at the same location for all
projects and the ship is translated in the z direction to ensure iso-displacement conditions.
l The center of rotation used to apply trim angle is the CoG computed by Domhydro.
Inputs definition
Draught and trim and trim units are given in the MATRIX PARAMETERS section of the input
file. In this case all combinations of draught and trim will be used.
**************** MATRIX PARAMETERS ******************
*
*** MATRIX PARAMETERS
* Draught (defined at midship)
d1 d2 … dn
* Trim (0=angle/1=length; list of values)
0 t1 t2 … tm
*
This approach allows to set up a sparse matrix, where only some combinations of draught and
trim are used.
The trim unit (angle or length) still needs to be defined in the input file.
Draught
The list of draughts is the distance between ship baseline and waterline defined at midship (Lpp/2)
for zero trim. If di > d1 the ship will be sunk.
The first draught should correspond to the draught in the imported geometry.
The free surface location is the Z-coordinate of the waterline in the reference frame of the
geometry of the ship. This value corresponds to the variable *** INITIAL FREE SURFACE in
the input file and must be user-defined. The free surface location will be the same for all the
projects.
The trim can be defined as an angle or as a length. In both cases positive bow down trim is
defined as positive, independently of the ship's advance direction.
l As an angle it is defined as the rotation around Y axis in the units of choice of the user
(degrees or radians).
l If length units are chosen the reference length between perpendiculars (Lpp) needs to be user-
defined. In that case the trim definition is the following:
where T F is the draft at the forward perpendicular and T A the draft at the aft perpendicular, both
measured from the baseline. The trim angle t is then recovered as:
This approach allows to save meshing time and disk space. However it is only suitable for
small rotation angles and draughts. For large position changes mesh deformation can lead to a
low quality mesh.
If single mesh is not active one project is created per matrix point. If more than one speed is given,
each speed will have a separate computation.
If an actuator disk or external force is active it will be applied in all the matrix points. The
coordinates and directions should be defined in the coordinate system of the geometry as it was
imported in upright position.
The C-Wizard will make the necessary transformations for each matrix position.
If single mesh is not active, the user can choose if AGR is used or not.
If single mesh, is active AGR will be automatically activated. The main AGR settings used will
be the following:
l If the option Initial base refinement + AGR is chosen, the following settings will be applied:
l Criterion: Free surface tensor
l Target grid spacing normal to free surface: 1.3*Lref/1024
l If the option AGR only is chosen, the following settings will be applied:
l Criterion: Free surface + Pressure Hessian
l Target grid spacing normal to free surface: 1.3*Lref/1024
l Hessian criterion threshold: 0.1 Lref
Mesh
FIGURE 3.63
Refinement sectors for drag based wrench
Sector 1 is horizontal and Sector 2 is aligned with the shaft direction. If a trim is applied to the
ship both sectors follow the rotation.
Solver settings
Use of an existing mesh as input is not possible. The input needs to be a single geometry in
Parasolid, CATPart, STL or domain format.
Trim given as a length is not compatible with automatic body reference length.
PMM maneuvers
This extended application is based on the "Resistance application" (p. 65) and on the "C-Wizard
computation matrix" (p. 169). We invite the users to first read these two chapters as well as
"Launching C-Wizard in batch mode" (p. 166) before continuing.
This extension for PMM maneuver has been developed in the frame of the development of the
Digital Twin technology. The main goal is to feed a maneuvering model with CFD-based PMM
maneuvers results. As a result, this extended application is only available in matrix mode and
therefore only in batch mode.
The following maneuvers are available:
l Static drift
l Pure sway
l Pure yaw
l Yaw and drift
l Roll decay
FIGURE 3.64
Illustration of available maneuvers
Static drift , Pure sway, Pure yaw and Yaw and drift maneuvers are compatible in mono-fluid
This parameter defines the number of periods that are repeated in case of oscillatory maneuver.
The different maneuvers to prepare are prescribed in a matrix.csv input file which can be written
as follows. Two distinct maneuver files can be written, the relevant parameters by maneuver are
described in the table bellow.
For all maneuvers except Roll decay, with U the ship's forward speed, Beta (β) the drift angle, v_
max the maximum sway velocity, r_max the maximum yaw rate and w (ω) the angular frequency:
# The first uncommented line will contain the parameter names
# “maneuver” and “U” are compulsory (not case sensitive)
Maneuver, U, Beta, v_max, r_max, w
Static drift, 12.350137, 0.000000, 0.000000, 0.000000, 0.000000
Static drift, 12.350137, -0.500000, 0.000000, 0.000000, 0.000000
Static drift, 12.350137, -1.000000, 0.000000, 0.000000, 0.000000
Pure sway, 12.350137, 0.000000, 2.544128, 0.000000, 0.471239
Pure sway, 9.547606, 0.000000, 0.334166, 0.000000, 0.471239
Pure sway, 9.547606, 0.000000, 0.668332, 0.000000, 0.471239
Pure yaw, 9.547606, 0.000000, 0.000000, 0.012453, 0.471239
Pure yaw, 9.547606, 0.000000, 0.000000, 0.008302, 0.471239
Pure yaw, 7.410082, 0.000000, 0.000000, 0.019685, 0.481732
Yaw-drift, 12.350137, -8.000000, 0.000000, 0.010847, 0.471239
Yaw-drift, 12.350137, -12.000000, 0.000000, 0.010847, 0.471239
Yaw-drift, 12.350137, -16.000000, 0.000000, 0.010847, 0.471239
Yaw-drift, 9.547606, -20.000000, 0.000000, 0.016812, 0.471239
Roll decay with U the ship's forward speed and roll_init the initial roll angle:
# The first uncommented line will contain the parameter names
# “maneuver” and “U” are compulsory (not case sensitive)
Maneuver, U, roll_init
Roll decay, 0.0, 10.9
Roll decay, 1.021, 10.8
Roll decay, 1.701, 3.6
Roll decay cases are using the overset methodology in order to handle large motions. Hence, they
must be defined in a separate maneuver.csv file. If the file contains the Roll decay maneuver mixed
with other maneuvers, the user is asked which project to prepare.
The C-Wizard enables the automatic set-up of a large matrix of computations with cavitation and
or transition. Both features can be combined or assessed separately, depending on the specified
combination in the Matrix input file or the C-Wizard input file. The cavitation and transition
settings are intended for foils and accessible through the foil VPP template cwizard_
foilVPP.input. The set-up in itself is based on the one for Hydrofoil resistance detailed at the
start of this topic and previous knowledge about such a set- up is strongly recommended.
Additionally, prior knowledge of "Cavitation" (p. 464) and "Laminar transition model" (p. 524)
modeling with Fine Marine is expected.
Workflow
Next to the inputs required for the Hydrofoil resistance (VPP), only the vapor pressure needs to
be specified by the user.
The vapor pressure value is required to determine the correct set-up of the target and initial values
for the cavitation parameter σ. The value of σ is determined based on the following formula:
Input definition
In the C-Wizard input file, the first value should be changed to 1, to enable cavitation and
transition:
*** CAVITATION
* No=0/Yes=1; water vapor pressure
0 2000.0
*
*** TRANSITION MODEL
* No=0/Yes=1
0
*
It is strongly encouraged to use the AGR Only setting for the Adaptive Grid Refinement setting.
This is done through the following lines:
*** ADAPTIVE GRID REFINEMENT
* No=0/Initial base refinement+AGR=1/AGR only=2
2
Solver settings
Time configuration
Turbulence model
Body motion
The body is always accelerated from standstill. Requested translations and rotations are handled
through the linear and angular position modification laws for the affected degrees of freedom.
These modifications are immediately performed at the start of the computation (t=0s). Given that
no degrees of freedom are solved, the quasi-static approach is not necessary.
Cavitation model
Transition model
The Multisurface+Flux-Component Hessian criterion is used to allow for the most accurate
capturing of the flow when the cavitation/transition models are activated. This model refines
regions where either velocity or pressure gradients are large. The target cell sizes, minimum cell
size and Hessian threshold values are based on the boat reference length during initialization,
while the foil reference length is used for the restart with activated cavitation model.
During initialization, the Free surface + Pressure Hessian criterion is used instead, as this
consumes slightly less overhead resources. More information on both Hessian criterion types can
be found in the "Hessian criterion" (p. 589).
The refinement is limited in X- and Y-direction to 1 chord length behind the foil to limit the
number of cells created by the AGR criterion. In any case, the flow behind this limit does not
influence the results on the foil.
FIGURE 3.65
Example of grid convergence curve
The C-Wizard contains the possibility to create a grid convergence study. This feature is separated
in different steps:
l Project architecture
l Mesh setup
l Post-processing
Methodology
The method we propose systematically refines the initial mesh used by Hexpress while keeping
the same surface refinements in all meshes using the C-Wizard tools. This ensures the whole
volume being refined systematically and not only the area around the Solid patches.
The C-Wizard is able to generate from 3 up to 5 grid levels: Coarse, Medium, Fine, Very fine,
Ultra fine. The relation between those levels is described below.
Initial mesh
Considering that the initial meshes contain a number of cells N in each direction (X, Y, Z), the
following relationships can be established starting from the Medium mesh:
l Ncoarse = 3/4*Nmedium
l Nmedium
l Nfine = 5/4*Nmedium
Due to the fact that the number of initial cells in Hexpress needs to be integer value it is not possible
to have a constant refinement ratio r . It is kept as close to constant as possible. Constant refinement
ratios can be achieved in structured meshes.
Adaptation step
The Initial mesh changes, but not the surface refinements in order to keep the relationship
between the different grid levels. To perform this:
l the cwizard_refinement_dictionary.csv is read (default or user-defined)
l the Maximum number of refinements of the Medium grid is read
l a new internal refinement dictionary is created to ensure the same surface refinement in all grid
levels
In addition to that, the Diffusion is also adapted for each grid level:
l Coarse: 2
l Medium: 3
l Fine: 4
l Very fine: 5
l Ultra fine: 6
The goal is to keep the overall "shape" of the octree mesh intact: the cell size changes are done at
the same location.
Considering this, the C-wizard is able to generate a series of nested meshes that are closely related
and can be used in the frame of a grid dependence study.
In order to preserve the validity of this methodology, Adaptive Grid Refinement should not be
used.
Usage
The Grid Convergence study is only available in batch mode, hence the page "Launching C-Wizard
in batch mode" (p. 166) should be read carefully.
Activation
The activation of the Grid convergence study is made in the C-Wizard .input file in the following
lines. The first digit set to -1 activates the Grid convergence, the second digit set the number of
grids, between 3 and 5:
*** SELECT MESH DENSITY
* 0=Coarse/1=Medium/2=Fine/-1=Grid convergence; number of grid levels
-1 4
*
Refinement dictionary
To define the number of surface refinements to apply on the geometry patches for all grid levels,
the cwizard_ refinement_ dictionary.csv must be up-to-date for the geometry of interest. The
refinement of the Medium level is used to apply the refinements for each grid level.
Post-processing
With this feature, a post processing tool is provided in the installation package. The goal of this
tool is to:
l Retrieve the necessary outputs of the computations ran in the frame of the grid convergence
study,
l Compute the estimated exact value based on the Richardson extrapolation of the results in
different grid levels,
l Compute an uncertainty interval where the exact solution is placed with 95% confidence
l Create a report and graphs summarizing the analysis results.
Outputs:
l Report with analysis steps and summary
l Data summary garph
l Richardson extrapolation and GCI graph
l Least squares fit and uncertainty graph
All outputs will be stored in a folder named Grid_convergence_report_Date_Time.
Execution
FIGURE 3.67
Post-processing tool: user inputs
1D analysis is advised.
Default: 1D
l Quantities to analyze
FIGURE 3.68
Example of .csv input file
The argument -auto can be added to perform all the default actions.
The index i goes from 1 to n g , being n g the number of meshes used. h = 1.0 corresponds to the
finest mesh.
Data summary
The first output is a data summary for the user to check.
Richardson extrapolation
The behavior of the solution error is defined as the difference between the discrete solution and
the exact solution, and depends on the order of convergence p:
where f is any flow or integral quantity computed by the CFD code, f0 is the value at an infinitely
refined mesh (h=0), and p is the order of convergence shown by the results. Higher order terms
are considered negligible.
Requirements for this method to be applicable:
l Results are in the "asymptotic range of convergence".
l The grids are geometrically similar (have a constant refinement ratio).
If p > 0.0 for the data set, the post-processing scripts proceeds to compute the value of f0 , p and
Grid Convergence Index. Otherwise it prints a message explaining the data shows an oscillating
behavior.
Grid convergence index (GCI) is a measure of the percentage the computed value is away from
the value of the asymptotic numerical value. It indicates an error band on how far the solution is
from the asymptotic value. It indicates how much the solution would change with a further
refinement of the grid.
Where Fs is a safety factor: Fs = 1.25 if p is in the expected range for a 2nd order CFD code [0.5,
2.1] and Fs = 3.0 if p is outside this range.
r is the mean refinement ratio between all the meshes used.
A small value of GCI indicates that the computation is within the asymptotic range.
The data with the function interpolation, the estimated exact solution and the GCI shown as an
error bar are plotted in a graph:
The least-squares fit is obtained by minimizing the weighted residual of the function, for example
for Richardson extrapolation:
From the solution the function parameters obtained, and the standard deviation of the fit (which
takes the weights into account) is computed. See [1] for the complete formulation.
Procedure:
1. The Richardson extrapolation (RE) and RE weighted functions are fit to the data in least
squares sense. The order of convergence (p) is obtained.
2. Depending on the data behavior an error estimator is chosen:
l p in the expected range [0.5, 2.1]: the function for error estimation is chosen as the best fit
function (lowest standard deviation) among RE and RE weighted.
l p > 2: RE would cause too small error estimates. The function for error estimation is chosen as
the best fit function (lowest standard deviation) among 1st and 2nd order functions weighted
and non-weighted.
l p < 0.5: RE would cause a too conservative error estimation. The function for error estimation
is chosen as the best fit function (lowest standard deviation) among 1st, 2nd and 1st +2nd
order functions weighted and non-weighted.
Then the factor of safety is determined based on the quality of the fit:
Data range:
The quality of the fit is evaluated based on how the standard deviation of the fit (σ) compares to
the data range (Δf).
The error estimation is considered reliable if σ < Δf, and uncertainy is defined as:
Otherwise if σ ≥ Δf:
For a grid refinement study with monotonically convergent smooth data this method reduces to
the above mentioned GCI.
The data, least squares function fit and uncertainty interval are plotted in a graph:
l Before running the grid convergence study, it is recommended to run a serial project using the
C-Wizard Coarse grid level. Make sure the mesh is sufficient to snap the geometry and mesh
quality allows to run the computation, even if the geometry capturing is not great.
l It is strongly recommended to use 4 grid levels or more.
l If the data do not show monotonic convergence the Richardson extrapolation will not be
computed.
Examples
1. Data show monotonic convergence:
References
[1] Eça, Luís & Hoekstra, M. (2014). A procedure for the estimation of the numerical uncertainty
of CFD calculations based on grid refinement studies. Journal of Computational Physics. 262.
104–130. 10.1016/j.jcp.2014.01.006.
DYNAMIC VPP
Establishing the performance map of a sailing yacht in all kinds of wind conditions and angles is
essential to get the maximum out of a boat. To do so, Velocity Prediction Programs were developed to
retrieve this performance map based on large matrices of aero and hydro data in an iterative process.
The introduction of CFD simulations has drastically improved the accuracy of the hydro model, but the
costs are non-negligeable. The Dynamic VPP feature developed in partnership with Finot-Conq gets rid
of many of the classical “static” VPP flaws. In one single computation a 5 degrees of freedom speed
optimization is performed.
The key elements of the Dynamic VPP are:
l Objective: 5DoF boat speed optimization.
l The yaw angle is considered fixed and the rudder position is adjusted to keep equilibrium of the
yawing moment.
l Inputs: True wind speed and angle.
l Parameter: sail power.
l Result: boat speed, optimal sail power control, efforts and motions.
The VPP is dynamic in the sense that it allows computing successive converged states for different sail
power values, but it does not simulate dynamic conditions like wind gusts or maneuvers.
Current limitations:
l The free surface is assumed to be placed at Z=0.0m.
l All cases must be setup for starboard tack (wind coming from starboard).
l The sail power optimization algorithm requires reaching a steady equilibrium to detect the
convergence and switch to the next sail power iteration. The signal oscillations must be
within convergence tolerance criteria.
l Only one rudder is considered. In case of a twin rudder boat the user should enter the data
for the leeward rudder.
l The rudder must not be meshed as it is represented analytically. The rudder is always
considered fully submerged.
l A power law is considered for the wind profile. The user does not need to impose a wind
profile in the CFD simulation.
l The value for Number of time steps to stabilize the solution after last convergence
needs to be below the value for Convergence check frequency.
In this section
4.1 Dynamic VPP workflow 214
4.2 Dynamic VPP GUI and parameters 218
b. The ship must be oriented along the global X-axis. If desired, apply an estimated heel angle
to the hull.
a. If the geometry is in Parasolid or CATPart formats use CAD manipulation >
Transform > Rotate
b. If the geometry is a domain or STL use Domain manipulation > Move part > Rotate
2. Prepare a resistance project setup manually or using the C-Wizard. If the C-Wizard is used,
the following options need to be active:
a. Full body
b. Is the body aligned with the Cartesian axis? If a heel angle was applied in the previous step,
select No and specify the heel angle in Roll (Rx2).
c. The free surface needs to be placed at Z=0.
d. The Surge needs to be solved.
e. Speed: estimated speed.
f. Adaptive grid refinement
g. Place body in overset domain: if the heel angle range allowed is small, overset will not be
needed. A single domain with mesh deformation can be used.
A power law is considered for the wind profile. The user should not impose a wind profile in
the CFD simulation.
3. Start the Dynamic VPP plugin and enter all data required, see the GUI and parameters
section for detailed information. Click Apply to run the plugin and the following modifications
c. Set the degrees of freedom Tx0, Ty0, Tz0, Rx2 and Ry1 to solved.
d. During the computation the dynamic VPP controller will:
a. Compute the drag/lift coefficient of the non-simulated elements using polars
b. Compute the aero forces and moments
c. Retrieve the ship motions, hydro forces and moments from the CFD computation
d. Compute windage forces and moments
e. Compute propeller drag
f. Control the rudder
g. Sum all the efforts
h. Regulate the power value
i. Check convergence of iteration (more details in "Convergence check methodology" (p.
217))
j. Estimate next iteration's power parameter
Until a converged state is reached for all forces and motions. For the next iteration the
sail power setting is modified to explore another area of the design space, and the
process is repeated.
If after 3 iterations an optimum is found in one of the extreme cases, the computation will
stop, regardless of the number of iterations requested.
l If the optimum is found within the first three iterations, no extra line will be written.
The user should check the results for the maximum speed value.
l Otherwise, once all iterations have been computed, the final optimized value for Power
and Vmax is written, as in line 6 in the image below.
FIGURE 4.2
Content of the DynamicVPP_convergence.dat file at the end of an optimization with 4
iterations.
If for any reason a computation with the dynamic VPP is stopped there are two options to
continue the dynamic VPP optimization in a restart:
1. From the GUI
a. Create new computation and define it as a restart.
b. Run the VPP GUI, enter all inputs again.
The DynamicVPP_history.dat, DynamicVPP_convergence.dat are correctly copied from the
previous computation.
DynamicVPP.input and isis_dynamic_lib.so are also stored in the restart folder.
2. Manually
a. Create a new computation
b. Copy DynamicVPP.input, DynamicVPP_history.dat, DynamicVPP_convergence.dat and
isis_dynamic_lib.so from the first computation into the restart computation folder.
After X seconds of physical time, convergence tests will be performed every Y seconds of
physical time on values collected during a period of Z seconds.
Convergence parameters:
l X: Convergence check start after
l Y: Frequency of convergence check
l Z: Data collection duration for convergence calculation
The convergence check is a two-steps check:
1. Check that the absolute mean deviation is within target, i.e. verify the trend is converging
2. If the first point is valid, check that the maximal absolute deviation is within target, i.e. verify
the oscillations are within expectations
The plugin is started from the button in the icon bar. An initial project setup should be
prepared before running the plugin, check the Workflow page for details.
l Ship characteristics
l Body name: select the physical body as defined in the Body Definition menu.
l Center of gravity in upright position.
l LOA: ship length over all.
l Hull beam: excluding foils and appendages.
l Ship freeboard at Bow, Midship and Aft: distance between free surface and deck at the
three locations.
l Air draft: distance from the surface of the water to the highest point on the ship.
l Ship mode : Archimedean or foiler, the added mass coefficients will be recomputed
depending on the mode selected.
l Rudder characteristics
l Rudder area
l Rudder geometric center
l Rudder inclination (around ship axis X): rudder inclination from the vertical, when the
ship is upright (0° heel).
l Propeller characteristics
l Propeller Installed Projected Area as per ORC or IMS measurements.
l Main sail
l Mainsail area
l Mainsail geometric center
l Mainsail sections: text file with .dat extension with the list of section areas and their
corresponding height. Text after “#” will be ignored.
Example mainsail_sections.dat:
# Sail sections
# Section_Area Height_of_Section_Center (one line per sail section)
11.44 16.49
17.91 12.66
20.61 8.52
20.72 4.54
l Foresail
l Foresail type: Jib/Genoa, asymmetric spinnaker or Gennaker/Code0
l Foresail area
l Foresail geometric center
l Fractionality: mast percentage location for foresail head
l Foresail sections: only if Jib/Genoa is selected as foresail type. Text file with .dat extension
with the list of section areas and their corresponding height. Text after “#” will be ignored.
Example genoa_sections.dat
# Sail sections
# Section_Area Height_of_Section_Center (one line per sail section)
2.74 14.24
8.32 10.88
14.12 7.19
20.02 3.47
l General
l Height of boom above waterline
l Sails highest point
l Height of Spinnaker Hoist (ISP)
l Take into account extra windage?: consider additional elements in the aero computation.
l Windage section file: text file with .dat extension with the list of element types, their front area
and side area. Text after “#” will be ignored.
Example windage_elements.dat:
# Windage sections (Element name case sensitive - Do not use capitals)
# Element_type Front_area(0°) Side_Area(90°) Z_CoE (one line per element)
mast 2.1 4.5 10.985
mast 0.0 1.1 2.67 #boom
cable 0.12 0.12 8.685 #D1x2
hull 4.8 14.3 1.53 #hull
hull 1.2 2.0 1.81 #roof
crew 0.25 0.5 3.65
The user can add other element types than mast , cable hull or crew . In that case a polar file
including the new elements needs to be provided.
l Windage drag coefficient: default or user-defined (upload windage 0/90deg drag coefficients
file). The windage polar file should be a text file with .dat extension with the list of element
types and drag coefficients at 0.0 and 90 degree angle of attack. Text after “#” will be ignored.
Example Windage polar file:
# Element_type, Cd(0deg), Cd(90deg)
mast 0.05 0.4
...
where Cd stands for drag coefficient and Cl for lift coefficient.
l Rudder polar
l Upload the rudder polar: if user-defined, import a .dat file with the format below.
Example rudder_polar.dat:
# Rudder polar
# AoA Cd Cl
0 0.007502 0.0
1 0.007909 0.0810135
2 0.00913 0.162027
...
where AoA stands for angle of attack, Cd for drag coefficient and Cl for lift coefficient.
l Mainsail polar: default or user-defined with the format below.
l Foresail polar: default or user-defined with the format below.
Example sail_polar.dat file:
# beta, Cd, Cl
0 0.00962 0.0
1 0.00913 0.162027
where beta stands for the apparent wind angle, Cd for drag coefficient and Cl for lift
coefficient.
l Number of iterations to perform: number of successive equilibrium states the dynamic VPP
should compute.
At least 3 iterations are required to evaluate the optimum power. If the optimum is found to be in
one of the extreme cases tested in the first 3 iterations, the computation will stop, regardless of the
number of iterations requested.
Once the variation of all quantities is below the criteria specified, the iteration will be
considered converged.
The convergence inputs are stored in the convergence.now file in the computation folder. The
file is dynamically read during the simulation allowing on-the-fly adaptation by the user.
SELF-PROPULSION
While investigating ship power requirements, free- running model experiments or self- propulsion
simulations can be very useful. Regarding the fact that measurements of the actual ship propeller thrust
are not usually available, numerical self- propulsion simulation can support better mapping from
desired to actual thrust within a shorter time frame and reduced costs.
In CFD, a general approach is adopted respecting the available numerical algorithms what normally
leads to several computations to be performed before reaching the self- propulsion point. For the
described challenges, Fine Marine suggests a particular dynamic library which eases and speeds the
self-propulsion studies up.
In this section
5.1 Introduction 226
5.2 Computation procedures 227
5.3 Input 233
5.4 Output 237
5.5 Recommendations 239
Four types of computations are available depending on the known/ unknown variables and how
the propulsion system is modeled:
With the real propeller geometry in a rotating domain:
l Type I: fixed ship speed [m/s] and computed propeller rotational velocity [rad/s];
l Type II: fixed propeller rotational velocity [rad/s] and computed ship advancing speed [m/s];
l Type III: fixed delivered horsepower (DHP) [W] and computed both propeller rotational
velocity [rad/s] and ship advancing speed [m/s];
One or two propellers can be present in this type of computation. With two propellers the
following configurations can be used:
l Full body with two propellers
l Half body with mirror plane to simulate a 4 propeller configuration.
With Actuator disk:
l Type IV: fixed thrust horsepower (THP) [W] and computed ship advancing speed [m/s].
See the next section Computation procedures for the step by step setup of a project.
The most typical propulsion tests, as described by the International Towing Tank Conference
(ITTC), are performed with a model captive to the carriage of a towing tank. For a given target
speed, runs at different propeller rotational speeds (RPS, or revolutions per seconds) are
performed and the net towing force is measured. Objectives here are to find the propeller RPS that
will lead to a given towing force indicating that the self-propulsion point has been reached by
balancing the propeller thrust and the total resistance.
These above- mentioned results can be obtained with the computation Type I of the self-
propulsion dynamic library. In a single run the library will compute the correct RPS of the
propeller for each imposed ship velocity ensuring that the propeller thrust will compensate the
ship drag forces (including the residual force that can be non zero). Residual force here can be the
towing force of the carriage or additional forces due to the specific case conditions.
Current limitations:
l Only computations with the ship advancing in the X-direction;
l Only computations with a steady-state converged solution, i.e. not valid for seakeeping
simulations;
l For computations of Type I, II and III: the maximum number of propellers in the domain is
2. When using a mirror boundary condition this allows to simulate up to 4 propellers.
This section goes through the steps to set up a self-propulsion computation using the controller
dynamic library.
Before launching the self-propulsion plugin, the user must set up the computation parameters. An
example for computation Types I, II and III can be found in the Advanced tutorial 2 on the self-
propulsion of the KCS.
The body motion laws for ship and propeller need to be defined as follows:
For type IV where the propeller is considered into the computation through an actuator disk
model, in the Actuator disk parameters menu the user must activate Body force update of type
PROPELLER CODE.
Once the computation is set up launch the self-propulsion plugin using the icon
General input:
l Additional constant wrench applied along the x axis [N]: it can be used when there is a
carriage towing force or tugging conditions to be taken into account for the simulation.
This option is only available if all degrees of freedom except surge (Tx0) are fixed. If at least one
other degree of freedom is solved, then the wrench should be prescribed in the Body forces >
Dynamic parameters menu under "Constant Wrench" (p. 354).
When two propellers are present in the computation the following extra inputs will appear:
l Propellers position: identify starboard and port propellers.
l Propellers revolution rate ratio: it defines the revolution rate of the propellers in Type I self-
propulsion. The starboard propeller revolution rate will be this ratio times the starboard
propeller revolution ratio.
Examples:
-1: both propellers have the same revolution ratio and rotate in opposite directions.
1: both propellers have the same revolution ratio and rotate in the same direction.
0.5: the starboard propeller rotates at half the revolution ratio of the port one. Both rotate in
the same direction.
FIGURE 5.3
User inputs for Type IV self-propulsion
Advanced
The limiter should not be activated from the first time step when the ship advancing speed or the
rotational speed of the propeller is either small or zero.
Number of time steps before the controller is activated : this parameter will control
activation of the dynamic library after the given number of time steps.
Specific parameters
l Maximum variation of Omega between two consecutive time steps when limiter is
activated: controls the limiter behavior. Expressed in percentage of the value of omega at time
step n.
l Maximum variation of vessel speed between two consecutive time steps when limiter is
activated: controls the limiter behavior. Expressed in percentage of the value of vessel speed
at the current time step.
l Estimated advance coefficient at operating point: J=Vship/(Omega*D) [-] Vship in [m/s]
and Omega in [rps].
If the SPinputs.dat was manually completed, paste it together with the compiled library file in the
computation folder where the .sim file is stored.
Fine Marine searches for the files with names isis_dynamic_lib.so (.dll) and SPinputs.dat, therefore
they must not be renamed.
At the first time step the input data will be printed to the .std file for the user to check. The outputs
will be stored in the SPResults.dat file in the computation directory and information will be
printed to the .std file.
The input file SPinputs.dat contains all the inputs needed by the self-propulsion dynamic library.
It will be created by the self-propulsion plugin.
If the user wishes to modify it manually template SPinputs.dat files can be found together with the
compiled dynamic libraries in:
1. For Type I, Type II and Type III: In .../_data/isis/dynamic_lib/SP_sliding_grids/linux64/ for
Linux OS and ...\_data\isis\dynamic_lib\SP_sliding_grids\win64\ for Windows OS.
2. For Type IV: In .../_data/isis/dynamic_lib/SP_actuator_disk/linux64/ for Linux OS and ...\_
data\isis\dynamic_lib\SP_actuator_disk\win64\ for Windows OS.
Defined through the Fine Marine GUI Name of the vessel and propeller through the Body
Definition menu will be stored in the .sim file, thus the name used in and in the .sim and
SPinputs.dat should strictly match.
This parameter is also available in Fine Marine GUI through the Body motion menu in the Dynamic
parameters . For instance, to model the towing tank constant tugging speed, it could be necessary to
activate the Non follower force option.
The value of 30.3 Newtons used in the SPinputs.dat template is for the KCS hull computation case.
It should be changed according to the user case conditions.
Advancing velocity of the vessel becomes mandatory when the residual force is non zero
(namely, Additional constant wrench applied along the X- axis), otherwise the residual force will
be changed to zero and therefore not taken into account.
*** Propeller rotational velocity, [rad/s]: decimal number
The rotational velocity of the propeller at operating point must be imposed by the user in case of
the solved vessel speed, and will be estimated in case of fixed power.
*** Power of the propeller [W]: decimal number
The power of the propeller at operating point. Must be defined only for the fixed power
simulation (Type III).
Expert input parameters [optional input]:
This parameter is also available in Fine Marine GUI through the Body motion menu in the Dynamic
parameters . For instance, to model the towing tank constant tugging speed, it could be necessary to
activate the Non follower force option.
The value of 30.3 Newtons used in the 'SPinputs.dat' template is for the KCS hull computation case.
It should be change according to the user case conditions.
5.4 OUTPUT
The SPResults.dat output file is created and updated at every time step when the dynamic library
for self-propulsion is used.
The SPResults.dat file contains the following data, depending on the type of the computation
carried out:
Type II: Fixed propeller rotational velocity [rad/s] and computed ship
advancing speed [m/s]
Type III: Fixed delivered horsepower (DHP) [W] and computed both
propeller rotational velocity [rad/s] and ship advancing speed [m/s].
Type IV: Fixed thrust horsepower (THP) [W] and computed ship
advancing speed [m/s]
5.5 RECOMMENDATIONS
GENERAL PARAMETERS
The General Parameters page, as shown in FIGURE 6.1 , can be used to specify the time
configuration and dependence of the equations to solve.
FIGURE 6.1
General parameters page
In this section
6.1 Unsteady Computation Interface 243
6.2 Best Practice on Time Accurate Computations 243
When selecting the Unsteady time configuration in the General Parameters page (or Steady and
Multi-fluid in the Fluid model page), the following additional parameters become accessible in the
Fine Marine interface:
Control variables
On the Computation Control/Control Variables page, the following parameters appear when
selecting an unsteady time configuration:
l Maximum number of non-linear iterations: to define the number of non-linear iterations for
each time step
l Number of time steps: to define the number of time steps to perform
l Time step law : to define the evolution of the time step as a function of time (see Control
Variables chapter)
By default only one set of output files is created. It is possible, however, to save some quantities at
specified time steps into separate files. This action can be done using the Probe capability, see Probe
Variables.
Fine Marine can perform first and second order accurate simulations in time. When requesting a
second order restart of an unsteady computation, the flow solver will automatically look for files
containing the solution at previous time steps. If the files exist, a second order restart is performed.
If the files are not found, a first order scheme is used for the first time step.
General advice on how to perform time accurate computations is provided in this section.
Initialisation Procedure
In some cases it is necessary to perform a preliminary steady state computation. The objective
might be to ensure that the problem naturally depicts the unsteady behavior and/or to get an
adequate guess solution before going towards time-accurate calculations with periodic behavior.
The steady state initialization may be done in a separate computation, performed in steady mode.
The time accurate calculation is then started using this solution as an initial solution. In step 5,
select Initial solution from file and select the solution of the steady computation.
It is possible to start from a previous time accurate solution. For general information about starting
from an initial solution, see Restart from a Previous Computation.
It is also possible to start a new project without blocking the deformations, but it is recommended to
free up to two degrees of freedom
For the first time step, a first order time-accurate scheme is used. A second order time-accurate
scheme is then used for the second time step.
The time step law should be defined on the Control Variables page. Choice of the correct time
step law and values depend on the expected frequency of the flow phenomena to be captured. In
general, it is recommended to compute 100 time steps per period.
FLOW MODEL
The Flow Model page, as shown in FIGURE 7.1, can be used to specify several characteristics of the
flow:
l the mathematical model to:
l choose between laminar and turbulent flow,
l edit the gravity intensity,
l reference parameters defining the Reynolds number linked to Fluid-1, defined in the Fluid Model
page and the Froude number of the computation.
In this section
7.1 Mathematical Model 248
7.2 Gravity Intensity 257
7.3 Reynolds and Froude Numbers 257
When working with Laminar flows, turbulent component should not be taken into consideration
during the simulation.
In Fine Marine, available non-turbulent models are:
l Laminar: dynamic viscosity will be the laminar kinematic viscosity;
l Euler: dynamic viscosity will be set to 0 and all Solid Boundaries will be set to the Slip Wall
condition.
Information about Boundary condition types can be found "Solid Wall Boundary Condition" (p.
268)
When selecting turbulence Navier-Stokes models, turbulence is taken into account through the
chosen turbulence model. In Fine Marine, several turbulence models are available:
l Spalart-Allmaras,
l k-epsilon (Launder-Sharma),
l k-omega (Wilcox),
l k-omega (BSL-Menter),
l k-omega (SST-Menter),
l k-omega (SST-Menter-2003),
l EASM (Explicit Algebraic Stress Model),
l EASM-BSL (BETA)
l EASM-SBSL (BETA)
l EASM-SSC (BETA)
l DES-SST,
l DES-SST-F1,
l DES-SST-F2,
l DDES-SST,
l IDDES-SST.
For EASM turbulence model, the expert parameter turbModelRotCorrection_ will be switched on
by default.
l Spalart- Allmaras is not compatible with wall- function for the solid walls boundary
condition.
l k-ω (SST-Menter-2003), DDES-SST and IDDES-SST models need further testing to
formulate clear guidelines.
l EASM-BSL, EASM-SBSL and EASM-SSC have not been validated at an industrial level
yet and are flagged as BETA. They are not compatible with wall function boundary
condition and they can increase the CPU time up to three times.
A. Introduction to Turbulence
The Detached Eddy Simulation models can only be selected for 3D projects due to their
theoretical formulation.
k- ω (SST- Menter) is the default and represents the recommended turbulence model for all basic
hydrodynamic computations.
l EASM turbulence model demonstrates slightly better results for a reasonable extra CPU cost,
especially for ships with a large Cb generating large longitudinal vortices from the hull sides.
l Be careful in case of large flow separation - which can happen on a flat wet transom - EASM
will overestimate the turbulence. This problem does not appear with dry transoms since the
influence of the air is negligible in case of a multi-fluid computations, but it is not negligible for
wind studies.
l To use DES models see "Best practice for DES models" (p. 254).
See Section 2 of the theoretical manual for more details about all turbulence models.
Cell size
When calculating turbulence quantities, it is important to place the first grid within a certain range
(y wall ) to the wall. When doing computations including viscosity (Navier-Stokes equations) the
boundary layer near a solid wall contains high gradients. To properly capture these high gradients
in a numerical simulation, it is important to have a sufficient number of grid points inside the
boundary layer. When Euler computations are performed, no boundary layer exists and therefore
the cell size near solid walls is of less importance.
To estimate an appropriate cell size ywall for Navier-Stokes simulations including turbulence, the
local Reynolds number based on the wall variable y+ is computed.
The value of y+ associated with the first node near the wall will be referred to as y1+:
FIGURE 7.2 shows the evolution of u + against y + from the measurements of Lindgren (1965)
with:
Low-Reynolds models resolve the viscous sublayer and are well suited for y 1 + values below 1
whereas high-Re models apply analytical functions to the log-layer and are appropriate to y 1 +
values ranging from 30 to 300 (it depends on the extension of the buffer layer for the considered
flow). For y 1 + higher than 30, Wall-function boundary condition can be used whereas No-slip
(wall resolved turbulence model) should be preferred for y1+ below 1.
FIGURE 7.2
Boundary layer profiles
Picture from White, F.M., Viscous Fluid Flow, McGraw Hill, 1991.
Moreover, one can notice that the logarithmic function does not apply for separated flow. When it
is expected that get a significant amount of separation, a low-Reynolds number turbulence model
is more appropriate. In that case, wall-function should not be used.
One way to estimate ywall as a function of a desired y1+ value is to use a truncated series solution
of the Blasius equation:
Suggested y+ values depend on the Reynolds number. Bigger the Reynolds number is, bigger the y+
value can be. Hence for model scale (equivalent to low Reynolds numbers), y+ will be in the range of
30/50 and from 50 until 200/300 for full scale (for high Reynolds numbers).
Thanks to a special treatment in the flow solver, any value of y + from 1 to the upper limit stated
above can be set with a wall function. However, the range of maximum turbulence production [10,20]
should be avoided for y + of first cell since this leads to errors of 3% to 4% on the estimation of
viscous stresses.
The y+ value for the Menter k-ω turbulence model should actually be closer to 0.2 than to 1 when not
using wall-function.
Note that the reference velocity, V ref, can be taken from the body velocity. The reference length,
L ref, should be based on the body length since an estimation of the boundary layer thickness is
implied in this calculation. For instance, in the case of a marine simulation, one could use the boat
length, or the so-called length between perpendiculars, as reference length. It refers to the length
of a vessel along the waterline from the forward surface of the stem, or main bow perpendicular
member, to the after surface of the sternpost, or main stern perpendicular member. This is
approximate, of course, as the thickness of the boundary layer will vary widely within the
computational domain. Fortunately, it is only necessary to place y 1 + within a range and not at a
specific value.
Another method of estimating y wall is to apply the 1/7th velocity profile. In this case, the skin
friction coefficient Cf is related to the Reynolds number:
where Rex should be based on average stream wise values of V ref and L ref as discussed above.
Since uτ is based on C f it may be calculated based on the friction velocity, and ywall may then be
calculated from y1 + . Note that either method is not exact but they will yield results that are quite
close to each other. In fact, it can be instructive to calculate ywall using both methods as a check.
Since only one wall distance is being calculated, the particular flow being studied should be kept
in mind. For instance, if it is a diffusing flow C f, and hence y1 + , can be expected to drop. Since a
certain range is desired (e.g., 20< y +<50 for high-Re Standard k-ε) the user may choose to base
the calculation of wall distance on an average of that range (e.g., 40).
It is important to know, that the flow solver does not update the wall distance during the
simulation. Hence, this can cause a problem for propeller computations with the sliding grid, since
the close cells outside the rotating domain will have a different distance to the wall during the
simulation.
These instructions should provide reasonable estimates but it is always wise to plot y + once a
solution has been obtained. Spot checks should be made to ensure that most y1+ values fall within
the desired range. For instance, it is useful to plot y+ contours over the first layer of nodes from a
given wall. There are some special cases where such checks do not strictly apply. For instance,
skin friction approaches zero at points of separation, so it is expected that y1 + will be low in such
regions.
General advice
The resolution method employed in the flow solver requires approximately 9 nodes across a free
shear-layer, and approximately 15 across a boundary layer to provide grid independent results for
turbulent flows. If wall functions are used, the boundary layer only requires approximately 9
nodes.
After the various grids creation, the level of skewness must be analyzed. Providing clustering in a
curved geometry can often lead to internal angles of grid cells smaller than 10°. It is important to
minimize the number of cells containing such low angles as the calculation of fluxes can become
significantly erroneous under such conditions. More information concerning how to check the
quality of a grid can be found in the Hexpress User Guide. The expansion ratio, or the ratio of
adjacent cell sizes, should also be checked. It is particularly important to keep this value within an
absolute range of about 0-1.6 in regions of high gradients, such as boundary layers, free shear-
layers and shocks. If it is obvious that adjacent cells are different in size by factors significantly
greater than two, the clustering in this region should be reduced or the number of nodes should be
increased.
Verification of y +
By following these instructions, it should be possible to generate a grid of reasonable quality for
turbulent flows. It is recommended, however, to check values of y 1 + with Cfview after
approximately one hundred iterations on the fine grid to ensure the proper range has been
specified. At the same time, it can be useful to plot contours of residuals and turbulence over
selective planes within Cfview. If the level of skewness is too high, this will be indicated by local
peaks in residuals that are orders of magnitude greater than the rest of the flow field.
These models can be classified in Detached Eddy Simulation (DES). A DES approach is based
on an implicit splitting of the computational domain into two zones. In the first region near solid
walls, the conventional RANS equations have to be solved. Within the second region, the
governing equations are the filtered Navier-Stokes equations of the LES approach. In the list of
DES models, we can list: DES-SST, DES-SST-F1, DES-SST-F2, DDES-SST and IDDES-SST.
1. When to use it
DES should be used if the expected flow solution is dominated for strong unsteadiness.
However, this model will be far more expensive because of the LES component and the lack
of spatial symmetry in the instantaneous flow solution. DES model is then not recommended
for marine applications (k-ω (SST-Menter) is most of the time more accurate and far less
expensive) but can be used for aerodynamic or mono-fluid applications.
As an example: Cell size is about 14 mm for JBC ship from the Tokyo Workshop 2015
(model scale).
l Y+ must be below 1. Hence a target of 0.2 or 0.3 should ensure to be below 1 while
inserting the viscous layers.
4. Simulation settings for the restart (as soon as DES is activated)
l Unsteady mode
l Switch the turbulence model to one of the DES models
l Numerical schemes for Turbulence and Momentum: BLENDED with a level of upwinding
of:
o 0.05 (5%) for mono-fluid simulations;
o 0.1 (10%) for multi-fluid simulations (can be increased up to 0.2 in ideal conditions with
high quality meshes for instance).
times higher) so that the ship sees 1000 times the same particle.
l 20 non linear iterations with 2 order of gain.
FINE/Marine cannot make a restart between a steady mono fluid and an unsteady mono fluid
computation using a accumulation of the results. Hence, the user should not activate the option
“Import convergence history” in that particular case.
Due to the fact, that turbulence is not solved for the Euler type of equations the following advices
could be followed:
1. Flow Model should be set as Laminar
2. Boundary Conditions for the Solid walls set as SLIP (zero shear stress). Else, the Wall-
function condition can be applied to the Solid boundaries in case the convergence is slow and
hard to reach.
3. Dynamic viscosity is not possible to set as zero now, so it should be reduced to a small value
tending to zero.
When gravity is taken into account, the Gravity Intensity (FIGURE 7.3) should be edited. One
input is required which corresponds to the gravity intensity along Z-axis for 3D projects and Y-
axis for 2D projects.
FIGURE 7.3
Gravity Intensity
When a mono-fluid computation is performed, the gravity intensity is set automatically to 0 by the
solver. It is thus not present in the interface.
When the gravity is taken into account in the Navier-Stokes equations, the source term:
is introduced in the momentum equations where ρ is the density and the gravity vector. Because
the fluid is assumed incompressible, the density of each fluid is uniform.
Characteristic values can be specified to compute the Reynolds and the Froude numbers:
l Reference length
l Reference velocity
These values are used to give useful information to choose the suitable turbulence model (Best
Practice for Turbulence Modeling) and the flow configuration.
FLUID MODEL
Every Fine Marine project contains at least one fluid with corresponding properties.The fluid can be
defined by:
1. using the default fluid(s) properties. They correspond to salt water and atmospheric air in case of
multi-fluid flow,
2. creating a new fluid by editing the name and properties.
When an existing project is opened, the fluid is defined by the properties as given in the project file.
Presently, only Newtonian liquids with uniform density can be simulated.
This menu also allows to a model passive scalar field. This field is not interacting with the other fluids.
Its objective is to use the information from the other fluids to be passively convected.
In this section
8.1 Mono-Fluid Project 260
8.2 Multi-Fluid Project 261
8.3 Passive scalar 263
In the Fluid model menu, the fluid properties can be defined: the Name of the fluid, the Dynamic
viscosity and the Density. All modifications are applied to the current project only.
FIGURE 8.1
Fluid Model Page for Mono-Fluid project
Usually, Fluid-1 corresponds to the liquid water. Hence, the interface provides the complete
database of water properties: clicking on the "drop" button in the Fluid model menu will access
the table of fresh and salt water. The user can select a line from the table, presenting the following
parameters: temperature, density, dynamic viscosity and kinematic viscosity. Clicking Ok button
will confirm the choice and set this parameter to Fluid-1. Presented values refer to the ITTC
standards.
When activating the Multi- fluid feature, the free surface capabilities become available. This
section describes the parameters which need to be defined.
The Fluid model menu proposes to set up the properties of the first and the second fluids (Fluid-1
and Fluid-2 respectively). It is important to note that Fluid-1 is always defined below Fluid-2,
along the gravity direction.
The water properties table is available in both Mono- and Multi-fluid projects.
In the page Initial Solution, the free surface location can be changed. The default value is set to 0
[m] along the Z-axis, see Uniform Values for more details about the Initial solution page.
FIGURE 8.4
Interface position
In the Numerical Schemes page, the mass fraction discretization scheme can be changed. The
default model is BRICS, see Multi-Fluid Equations.
FIGURE 8.5
Discretization Scheme for Multi-Fluid Computation
In the Under- relaxation parameters page, the mass fraction is also available, see Under-
Relaxation Parameters.
A passive scalar is a diffusive contaminant in a fluid flow that is present in such low concentration
that it has no dynamical effect (such as buoyancy) on the fluid motion itself (therefore passive). It
can also be considered as a tracer.
The passive scalar does not influence the fluid properties, but there is still a transport equation
solved for it. It is represented as a scalar quantity within an incompressible fluid flow. This is a
valid assumption for example for the transport of air within the water. For the smoke going out of
the chimney of a ship for instance, the literature mentions that this feature can be used as a first
approach but might not be sufficient for a full detailed analysis, also since temperature cannot be
taken into account for the moment.
This feature is compatible with both mono- and multi-fluids simulations.
It is important to note that, scalar transport does not assume any physical dimensions for passive
quantities. Therefore, this feature allows to study the transport of mass concentration or any other
field in the same way.
This passive scalar can be activated in the menu by clicking on the check box button. Once this is
done, the name of the scalar can be freely defined. The default name is 'SCALAR'.
When the passive scalar is active, the scalar value can be defined per patch on SOLID and
EXTERNAL boundary conditions types (see "Boundary Conditions " (p. 265)).
The type of numerical scheme to solve the transport equation is selectable in the "Numerical
Models" (p. 538) menu.
Passive scalar choice is also available for volume, surface and point probes (see "Probe
Variables" (p. 658)) to see the evolution in time of the scalar field. It is also present as a mean
output variable (see "Mean Flow Variables" (p. 675)).
BOUNDARY CONDITIONS
During the Hexpress grid generation process, the type of boundary conditions must be defined in the
Boundary Conditions page:
l Solid,
l External,
l Mirror,
l Full non-matching,
l Periodic.
This chapter gives a description of the available boundary conditions in the Boundary Conditions
page in the Fine Marine project set-up.
See also: Turbulence models in the Theory Guide.
When selecting the Boundary Conditions page, the following window appears:
A characteristic of the Boundary Conditions pages is their subdivision into two areas. The left
area always contains a list of the different patches, and the right area represents the selected
boundary condition type. A patch can be identified by the name of the block face to which it
belongs, or by the name given in Hexpress. For the selected patch(es), the right area is where the
boundary condition parameters are set.
One or several patches may be selected in the left area by simply clicking on them. Clicking on a
patch deselects the currently selected patch(es). It is possible to select several patches located one
after another in the list by clicking on the first one and dragging the mouse over the next ones or
holding the <Shift> key between the first patch and the last one. To select a group of patches that
are not located one after another in the list, the user should click on each of them while
simultaneously holding down the <Ctrl> key.
It is also possible to select all the similar patches by pressing the right-click button of the mouse on
the selected patch(es).
If the Inlet or Outlet boundary conditions type was selected in Hexpress, a warning message will
appear as soon as the user enters the Fine Marine GUI: they are not available for Fine Marine projects
since only External, Solid , Mirror and Periodic boundary condition are possible. These conditions
should be replaced directly in Hexpress as soon as the following warning message appears:
FIGURE 9.2
Warning message due to presence of INLET or OUTLET boundary condition(s)
If the same names are set for different patches in Hexpress, the interface will automatically add extra
information to distinguish them:
l B# (Block or domain number),
l F# (Face number),
l P# (Patch number).
The information will not be kept for the post-processing step.
The Solid wall boundary condition page is customized according to the type of calculation
(inviscid or viscous). Several possibilities are available depending on the type of flow. These
boundaries can be set as laminar or turbulent.
FIGURE 9.3
Solid Wall page
Slip Wall
This type of boundary condition corresponds to a zero shear stress at the wall: the tangential
component of the velocity is different from 0 and the turbulent production due to shear is
neglected.
When dealing with multifluid simulations, the part of the body which is always surrounded in the
fluid with a very low density, can be set to Slip wall. The Reynolds number is much less important
and the turbulence effects can be neglected.
No Slip Wall
The No Slip (wall resolved turbulence model) condition imposes a zero velocity on to the
boundary.
The Wall-function is currently limited to k-ε, k-ω and EASM models and does not exist for Spalart-
Allmaras.
FIGURE 9.4
Warning message for the flow model page
Wall roughness
A wall roughness model (see Roughness in the Theory guide) is available on theSolid patches
where a Wall-functioncondition has been applied. There are two ways of defining it:
l Uniform roughness:same roughness for all wall-function patches
l Per-patch roughness:different roughness values for each wall-function patch
Once activated, this approach is automatically applied to all wall-function patches and requires the
input of aSand grain height value, defined in meters:
FIGURE 9.6
Wall roughness option with sand grain height definition for the currently selected patches only
If the roughness must be deactivated for specific patches, enter a sand grain height value of 0, these
patches will be considered as hydrodynamically smooth.
FIGURE 9.7
Wall roughness values available in the C-Wizard.
Wall roughness model is implemented only for turbulence models solving k-ω equations, such
as SST and EASM models. Sand grain height is a global parameter applied to all wall-
function surfaces except the ones with a sand grain height of 0.
Synthetic Jet
Synthetic jet boundary condition can be applied to Solid and External patches. This boundary
condition will be used when the aim is to define an input flow through a patch. When a patch is
defined as a Synthetic jet boundary condition, the Jets definition button appears in order to
define one or several jets:
FIGURE 9.8
Synthetic jet boundary condition
Jet definition
In this menu, all the jet patches, Solid or External, will appear:
Initially, these patches will be grouped into a single patch name " Jet". It is then possible to
Rename, Create or Merge different jets. The jet properties can be set in the Jet parameters
menu.
This menu gives access to the fluid to consider, its blowing direction and some velocity properties
of the selected jet:
FIGURE 9.10
Jet parameters menu
Jets have to be defined one by one, it is not possible to duplicate parameters from one jet to
another.
Fluid
The user is able to choose between Fluid-1 and Fluid-2 according to those defined in the Fluid
model menu.
In case of mono-fluid simulations, this section will not appear and the jet will automatically blow the
fluid defined in the Fluid model menu.
Normal direction
In this section, the user specifies the blowing direction of the jet. Three options are available:
FIGURE 9.11
User-defined direction of blowing
Kinematic law
Two different velocity definitions are predefined, the parameters can be set directly in Fine
Marine interface.
l Constant law is defined with following parameters:
o Initial time [s]
o Blowing velocity [m/s]
FIGURE 9.12
Constant velocity definition
In addition, a Dynamic library can also be used in order to set a user-defined kinematic law. The
dynamic library Update_ Jet_ Features.f90 can be found in _ data/isis/dynamic_ lib/ of the
installation folder. For further information, please refer to the "Dynamic libraries" (p. 799) section.
The solver will take Update_Jet_Features.f90 user-defined program into account only if the
kinematic law of the considered jet has been set to "Dynamic library".
Once activated in the menu (see " Fluid Model" (p. 259)), the passive scalar can be activated on a
given patch and its value defined individually.
FIGURE 9.14
Passive scalar value
Temperature
Once activated in the menu (see "Temperature" (p. 477)), the temperature and solute diffusion can
be activated on a given patch and their values defined individually.
The external boundary condition is provided to treat velocity and pressure conditions. But it is
also possible to impose a wave generator or an Overset type for the specific calculations
involving the "Overset Grid Management" (p. 601).
Thanks to this boundary condition type, it is possible to prescribe the velocity, the mass fraction
and the turbulence by using default values or entering constant values.
The imposed variables at this boundary type depend on the local flow direction with respect to the
boundary patch: the flow is locally entering or leaving the domain. As a consequence, a Dirichlet or a
Neuman condition will be applied. The code will automatically adapt the condition to the correct
situation and control the mass flow rate.
A velocity ramp can be imposed to reach the desired constant velocity starting from 0 m/s. Please
read the description of the expert parameter DurationToTargetVelocity_ in the Impose Velocity
Ramp at Far Field section to know more about this possibility.
It is also possible to enter a user defined profile for Vx, Vy, Vz velocity components separately
but also for Turbulent quantities. This is done by selecting fct(space) instead of Constant Value:
FIGURE 9.17
User Defined Far Field
When fct(space) is selected, the user has to specify the Profile type. When a profile is selected,
the user has to define it in the Profile manager accessible by clicking on the button next to
profile data.
FIGURE 9.18
Profile manager window
The Profile Manager allows to define profiles used to interpolate the corresponding physical
variables at the boundary. The user can either manually enter the values into the columns of the
Profile Manager or import an external file.
This external file must be created with the extension .p and be imported using the Import button.
The values of the physical variables stored in this file can come from any source: experiments,
previous computations, etc. It is also possible to import CGNS data (see the format description).
In case of a 2D profile, the quantity is not represented in the graphics area of the profile manager.
Profiles should cover the patch full length or area. Indeed, the flow solver can interpolate the values
from the profile on the mesh but it is not possible to extrapolate.
The profile is graphically represented on the right part of the window. When putting the mouse
over a green cross, the interface indicates which point it corresponds to.
In the Profile Manager it is also possible to Export the profile for backup or later usage but also
to Clear the profile.
In the column title of the Profile manager : u means Vx, v means Vy, w means Vz.
.p file format
Here is a description of the format to create the external profile (.p file):
Line 1: a string defining the name of the quantity. It can be Vx, Vy, Vz, Turbulent kinetic energy
or Turbulent dissipation.
Line 2: interpolation type (see the available "Interpolation types" (p. 281)) and the number of
points of the profile curve.
The next lines can consist in different types of information:
l For 1D interpolation profiles, the 1st column is the coordinate, the 2nd one is the physical
value and the 3rd one is always 0.
l For 2D interpolation profiles (except x, y and z and r, θ and z), the 1st two columns are the
coordinates and the 3rd one the physical value.
l For 2D interpolation profiles for x, y and z and r, θ and z, the 1st three columns contains the
coordinates. For the velocity, the next three columns contain each velocity component whereas
for the turbulent quantity, 1 column containing the physical value is enough.
Interpolation type
1 1D interpolation along x
2 1D interpolation along y
3 1D interpolation along z
4 1D interpolation along r
5 1D interpolation along θ
51 2D interpolation along x and y
52 2D interpolation along x and z
53 2D interpolation along y and z
54 2D interpolation along r and θ
55 2D interpolation along r and z
56 2D interpolation along θ and z
61 2D interpolation along x, y and z
62 2D interpolation along r, θ and z
TABLE 9.1 Interpolation types
Example
The following lines give an example of the data profile format for the quantity Vz (from 0.1 to
0.5m/s) with an X-profile (from 0 to 1m) defined with 5 points:
Vz
15
0 0.1 0
0.3 0.2 0
0.6 0.3 0
0.8 0.4 0
1 0.5 0
CGNS format
It is also possible to import a CGNS file. The flow solver can only read triangulated CGNS files.
It is not possible to probe the Velocity, Turbulent Kinetic Energy and Turbulent Dissipation in one
Fine Marine simulation and directly impose the resulting CGNS file. It should come from Cfview.
Mass fraction
For the Mass fraction, the user can choose between the default value and a user defined value.
For the user defined value, the choice between Fluid-1 and Fluid-2, corresponding to the fluids
from the Fluid model menu, is possible.
For the turbulence it is also possible to activate the option From turbulence level initialization .
This is similar to what is already present for the Initial Conditions menu.
A more extensive way of prescribing initial conditions at the boundaries using an initialization
program is described in "Flow Field Initialization Program" (p. 792).
Prescribed Pressure
For this type of boundary condition (Dirichlet), the pressure is imposed during the initialization of
the computation. It gives access to two different types of conditions described below.
If the Z- axis is oriented along the gravity vector, the pressure value is set to
. This value will evolve during the computation if the mesh is moving
vertically or according to the free surface position. The fluid is free to enter or exit this boundary.
This condition is recommended for the top and the bottom patches of the domain in case of a 3D
project with multi-fluid flow for boat simulation.
This boundary condition cannot be used together with a user- defined pressure (using a Fortran
program, see Files Used as Initial Data Profile ) since the flow solver will overwrite this user-
defined pressure.
Frozen pressure
This boundary condition keeps the pressure constant and equal to 0 during the computation.
It should be preferred for hydraulic projects, for mono-fluid computation or for the exit of a multi-
fluid computation where this boundary is not affected by the gravity (for instance, the top of a
domain).
This type of boundary condition (Neumann) imposes the pressure gradient to zero. The pressure,
as for any other dependent variable, is located at the center of the control volumes (cell-centered
location).
This boundary condition is recommended for hydraulic and multi-fluid projects, especially for a
boundary where two fluids exit the domain.
Illustration
The following figure illustrates a cell at the vicinity of a boundary (dashed): F means "Fluid" and
B means "Boundary". If a zero pressure gradient is applied on B, the gradient at B is equal to its
value in F and the pressure is extrapolated from F to B according to the hydrostatic equilibrium if
the gravity vector is not the zero vector. The pressure on the boundary is then computed by the
following formula
In any case (prescribed or zero pressure gradient), at B, velocity fluxes and velocity component
are solved according to the mass conservation constraint in cell F.
This boundary condition is implemented for the "Overset Grid Management" (p. 601) support. It
can intersect with other physical and solid boundaries existing in all the domains of the simulation.
It has no impact on the physics of the flow but allows to transfer the information between the
different grids of the simulation.
If at least one EXTERNAL boundary is specified as an overset boundary condition Overset Grid
will be activated automatically if it is not yet active. On the other hand, if Overset Grid will be
deactivated, all overset boundaries will be switched to the Far Field EXTERNAL boundary
condition.
Wave Generator
Wave generation is integrated directly into the Navier-Stokes momentum equation through an
additional source term based on the potential solution of a wave. If the wave generation is done
using the boundary condition wave generator, the wave is generated at the specified boundary.
Alternatively, the Internal Wave Generator (see "Internal wave generator" (p. 499) for more info)
can be used, which generates waves from a point inside the domain.
The "WaveReg_FSD" (p. 994) tool can be used to evaluate the wave signal as generated by the flow
solver for the given set of parameters.
Regular waves
Regular wave generation requires information regarding the water depth, the wave height and
wave period through the user interface. The required parameters in the menu shown in FIGURE
9.20 are defined visually in FIGURE 9.21.
The water depth is a positive value (displayed by a blue arrow in the graphics area). It measures
the distance between free surface at rest and the bottom of the domain in order to maintain V x =0
at the bottom boundary of the domain as shallow water changes the behavior of the wave.
Entering the water depth explicitly is therefore needed to distinguish various wave types and to
determine the set of Fourier coefficients (see below) that define the wave potential.
Wave types can be distinguished based on the water depth as:
1. D > L/2: deep water,
2. L/20 < D < L/2: intermediate,
3. D < L/20: shallow water.
The direction of propagation (displayed by a yellow arrow in the graphics area) points either in
positive or negative X-direction.
It is also recommended to precisely define the reference point (displayed in yellow in the
graphics area) on the patch. Hence, the computation starts with a wave kinematic without normal
fluxes: velocity vector is parallel to the plane of the wave generator. Alternatively, the reference
point can be used to apply phase shifts: if the point is in X = 0, Y = 0 and the EXT patch crossing
(0,0), the oscillator will start moving from Y = 0 in X = 0. Now, the oscillator is not in X = 0, the
only effect will be a phase shift.
The location of the wave generator is fixed respectively to the body. This means, that in the case
of a constant speed of the solid body (no acceleration), the frequency f by which the waves hit it
is constant.
In the Galilean Reference Frame, if the kinematic wave generator is moving towards the reference
point, the perceived frequency of the waves will be increased. The relative frequency can be then
written:
where f' is the wave frequency in the body reference frame, U b the velocity vector of the wave
source (same as of the boat), L the wave length, and f' the frequency in the Galilean reference
frame. In case the source is moving away from the reference point, the above formula becomes:
1. Under the Plugins/Predefined menu, the Wave generation info tool is dedicated to the setup
of a wave generation project. The tool computes useful information for wave generation
simulations such as frequencies, time step, wave celerity, etc...
Using the default wave generation method, waves can be propagated in positive and negative X-
direction only. Generating oblique waves is discouraged, but possible using the legacy Stokes method
with the expert parameter waveGenerationMethod_ combined with the expert parameter
bcWaveObliquePropagation_, where the X- and Y- unit vector components can be specified.
The Wave generator settings are defined as global parameters. The corresponding patches cannot be
edited separately.
The discretisation of the nonlinear wave potential is based on the work by Fenton, see [1] and [2].
Based on the numerical solution for the coefficients of a Fourier series representation ([2]), this
method allows for accurate wave generation both for shallow water waves and nearly-breaking
waves, up to steep deep-water waves, see FIGURE 9.22. The discretisation of the wave using a
Fourier series is controlled through the number of Fourier coefficients (terms) and so-called height
steps, which are sometimes necessary to represent very high waves. The solver automatically
determines the suitable wave discretisation parameters, but they are also accessible through the
dedicated expert parameters FSDTerms_ and FSDSteps_.
The wave potential Φ in the reference frame that's moving with the wave (X=ct and Y=y) is
defined as:
where:
where η is the wave elevation and E j is another set of coefficients to be determined iteratively.
More information can be found in the theory guide on the FSD wave generation method.
The legacy wave generation method is not suitable for shallow water waves, waves in the
breaking wave limit and high waves due to its theoretical basis in the Stokes expansion theory.
Stokes theory applies only to deep-water and intermediate-depth waves. This method is still
accessible through modifying the expert parameter waveGenerationMethod_ and setting it to
Stokes.
The Internal Wave Generator (IWG) only allows generating first-order Stokes waves.
Specifying a higher order through the expert parameter waveGenerationStokesOrder_ will
not have any effect for the IWG.
For this wave generation method first, second, or third order Stokes wave definitions can be used.
The order depends on the wave steepness that is required in the computation. A higher wave
order additionally increases the accuracy of the wave interface close to the solid boundary until
two wavelengths downstream. After that point, the difference between the different wave orders
will be negligible if the goal is only to increase precision.
The wave order should be computed according to Le Méhauté (1976) An introduction to
hydrodynamics and water waves using the values of the Depth (h), the wave Period (τ), the
wave Height (H) and the absolute value of gravity intensity g taken from the "Flow Model" (p.
246) menu. The scheme below illustrates the range of applicability of each wave order and how
to determine it based on the values of the abscissa h/(gτ2) and the ordinate H/(gτ2):
The red line represents the limit of validity of the Stokes theory, whereas the green line is the
border between first and second order and the purple line the border between second and third or
higher order waves. Only the propagation of intermediate depth and deep water waves can be
simulated using this method, taking into account that the upper limit of validity for a periodic and
propagating deep-water wave is a wave steepness (H/L) of 0.14.
The wave order can only be set through the expert parameter waveGenerationStokesOrder_, for
which the default wave order is set to 3.
Generally speaking, a linear wave has a sinusoidal surface profile with small amplitude and
steepness, while a nonlinear wave has larger amplitude (finite-amplitude), sharper crests and
flatter troughs than the linear wave. Defining the wave order correctly as such improves the
accuracy of the computation.
More details can also be found here.
The solved dispersion relation is the generic dispersion relation (Stokes wave): it gives the wave
length L from the knowledge of the wave period T and from the water depth D.
The dispersion relation is:
References
[1] Fenton, J.D., 1990. Nonlinear wave theories. Ocean Engineering Science, 9, pp.1-18.
[2] Fenton, J.D., 1999. Numerical methods for nonlinear waves. In Advances in coastal and
ocean engineering (pp. 241-324).
Irregular waves
Main assumptions
l Ocean waves are irregular and random in shape, height, length and speed of propagation. A
real sea state is best described by a random wave model.
l Each sea state, in given meteorological conditions, has a precise power spectrum.
l Spectral analysis assumes a sea state can be modeled as a superposition of a large number of
regular sinusoidal wave components.
Implementation
The Irregular wave set-up is available in the Boundary Condition menu for the External
boundary condition Wave Generator. When the Irregular condition is activated, several spectra
and the User-defined spectrum becomes available.
Available spectra
l Pierson-Moskowitz
Only the 1st order of irregular waves is implemented for the moment. All the spectrum equations are
detailed in the theory guide in the chapter for Irregular waves.
After the spectrum was selected, the following parameters will become available:
It is strongly recommended to store the spectrum input file inside the Project folder.
991
0.552300000000000 1.425134561970092E-008 0.200072553915353
0.556822222222222 2.105653169018277E-008 -3.10241674047480
0.561344444444444 3.059213503130416E-008 -1.11056951161608
0.565866666666667 4.373966352698112E-008 -1.79666237050452
0.570388888888889 6.159070885437247E-008 1.44797659527557
0.574911111111111 8.547564616889585E-008 0.835759044159744
0.579433333333333 1.169912378314590E-007 -3.13185364267893
0.583955555555556 1.580259532187931E-007 -2.53878755253289
...
983 lines here are omitted.
The first line has the number of waves frequencies (n). Following lines contain: the frequency (fi,
[s-1]), spectral density (Si, [m²s]), initial phase of the wave component ( ,[rad]) that should be
between [-π;π]. The initial phase is defined at the Reference Point.
Direction of propagation and Reference point have a similar definition as for the regular waves.
The Depth, Direction of propagation and the Reference point should be specified together
with the spectrum data file.
General recommendations
l The duration of the simulation is a key to achieve the target wave energy spectrum. For
seakeeping experimental tests, at least 100 to 200 waves have traditionally been used (typically
0.5 to 1 hour), which is often defined as satisfactory if linear effects only are considered.
Respecting this, the number of waves to encounter can be set to 100 during the numerical
simulation.
l The mesh defines what frequencies will be captured. The user needs to decide what are the
higher frequencies to be kept and define the mesh with the respect to this condition.
l Ensure that the refined mesh region can capture the highest waves (in Z-direction).
l Adaptive Grid Refinement can generally help to start from a coarser initial mesh size and
capture the wider range of wave frequencies.
l Depending on the aim of the simulation (structural damage, seakeeping,…) the high frequency
waves will be important or not.
Synthetic Jet
Synthetic jet boundary condition can be applied to Solid and External patches. This boundary
condition will be used when the aim is to define an input flow through a patch. When a patch is
defined as a Synthetic jet boundary condition, the Jets definition button appears in order to
define one or several jets:
FIGURE 9.25
Synthetic jet boundary condition
Jet definition
In this menu, all the jet patches, Solid or External, will appear:
Initially, these patches will be grouped into a single patch name " Jet". It is then possible to
Rename, Create or Merge different jets. The jet properties can be set in the Jet parameters
menu.
This menu gives access to the fluid to consider, its blowing direction and some velocity properties
of the selected jet:
FIGURE 9.27
Jet parameters menu
Jets have to be defined one by one, it is not possible to duplicate parameters from one jet to
another.
Fluid
The user is able to choose between Fluid-1 and Fluid-2 according to those defined in the Fluid
model menu.
In case of mono-fluid simulations, this section will not appear and the jet will automatically blow the
fluid defined in the Fluid model menu.
Normal direction
In this section, the user specifies the blowing direction of the jet. Three options are available:
FIGURE 9.28
User-defined direction of blowing
Kinematic law
Two different velocity definitions are predefined, the parameters can be set directly in Fine
Marine interface.
l Constant law is defined with following parameters:
o Initial time [s]
o Blowing velocity [m/s]
FIGURE 9.29
Constant velocity definition
In addition, a Dynamic library can also be used in order to set a user-defined kinematic law. The
dynamic library Update_ Jet_ Features.f90 can be found in _ data/isis/dynamic_ lib/ of the
installation folder. For further information, please refer to the "Dynamic libraries" (p. 799) section.
The solver will take Update_Jet_Features.f90 user-defined program into account only if the
kinematic law of the considered jet has been set to "Dynamic library".
Once activated in the menu (see " Fluid Model" (p. 259)), the passive scalar can be activated on a
given patch and its value defined individually.
Wave generator and Overset types are not compatible with passive scalar feature.
FIGURE 9.31
Passive scalar value
Temperature
Once activated in the menu (see "Temperature" (p. 477)), the temperature and solute diffusion can
be activated on a given patch and their values defined individually.
The mirror condition assumes the geometry and the flow to be symmetric (the velocity field is
supposed tangential to the mirror plane). In this situation, the computation can be restricted to one
half of the complete domain saving an important amount of computing resources. The post-
processing will be done on one part, but can be repeated and displayed as a complete domain, see
Cfview manual for more details about the repetition capabilities.
Cfview allows to duplicate the geometry and the results according to one mirror patch. The tool
"isis2cfview" makes its choice following these considerations: for 3D projects, the check is first done
on mirror planes with normals along Y- axis, then Z- axis and finally X- axis. For 2D projects, the
order is the following: X and then Y-axis (not possible along Z-axis).
Mirror is not compatible with large deformations. Hence incompatibilities between rigid mesh
displacement and mirror planes can exist. This list is given below (please check Domain Mesh
Management to know what is a rigid mesh displacement):
l roll angle with Y/Z-mirror plane,
l pitch angle with X/Z-mirror plane,
l yaw angle with X/Y-mirror plane.
To work around this situation, a slip wall can be used instead of mirror planes.
Non conformal interfaces are present as soon as FNMB (Full Non Matching Boundary)
conditions are defined and computed in Hexpress (see Hexpress User Manual for more
information). These interfaces will transfer the information of the flow between several domains.
There is no user input required in this menu. These patches will be present in the Sliding patch
motion tab of the Mesh management menu as well (Mesh Management chapter).
By default the resolution of the sliding grids is explicit. For specific cases where the sliding grid
domain does not advance and sees an incoming flow, some discontinuities may appear in the
sliding grid interfaces. In that case, switching to implicit resolution may help avoiding these
discontinuities. To do so, set the expert parameter _SLI_implicit_dom_coupling to YES in the
Expert parameters tab of the Control variables menu (More details can be found in the
"Sliding grids" (p. 930)).
When using implicit resolution of the sliding grids with BoomerAMG linear pressure solver, a special
attention should be taken with the initial conditions. If the initial solution is not compatible with Div
(U)=0 (for instance U=1m/s at the Inlet but U=0m/s inside the domain) then the solution might be
wrong.
The periodic boundary condition assumes that the geometry of interest and the expected pattern of
the flow have a periodic nature. It therefore allows running the computation on a single
geometrical pattern and extrapolate to the entire geometry.
Two periodicity types are compatible with Fine Marine:
l rotation,
l translation.
In the case of a rotating machine, such as a marine propeller, the flow distribution features a
periodic characteristic. Hence only a part of the rotating machine can be computed and periodic
boundary conditions can be used.
Applications
Marine propellers
Offshore platform risers
Limitations
l The mesh on the periodic surfaces must be identical.
l Periodicity by rotation is only around Z-axis. If the mesh does not have the periodicity
along the z-axis, the following error message will pop up. The user is then requested to
rotate the mesh.
Meshing
The Fine Marine solver supports only matching meshes for the periodic boundary conditions. To
create periodic meshes for:
The periodic meshes from Autogrid5 are of higher quality and very quick to generate. They should be
preferred over Hexpress meshes.
Option 1: For profiles that can be extruded (cylinders, NACA profiles with constant chord, ...)
1. Create a 2D mesh (one cell in the Z-direction and Mirror planes on the Z-planes) and generate
it;
2. In Grid > Mesh transformation: extrude one of the mirror face as many times as necessary to
create the mesh in the Z-direction. At this moment, Hexpress takes care of converting the Z-
planes from MIR to PER boundary conditions;
3. Define the Periodicity in Grid/ Periodicity...
Option 2: For patterns that can be mirrored (anchor chain type, ...)
1. Create a 3D mesh with a symmetry plane;
2. In Grid > Mesh transformation: mirror and copy the mesh;
3. Save the mesh;
4. Assign the PER boundary conditions manually in the BCS file.
For geometries with periodic boundaries which cannot be handled with extrusion or mirroring
methods in Hexpress (see above sections),Hexpress/Hybrid has to be used.
The keywords are:
l PERIODICCONNECTIONROTATE
l PERIODICCONNECTIONTRANSLATE
Fluid setup
The pressure solver BoomerAMG may have some convergence issue, PCGSTAB_MB should be
preferred.
The forces and moments, displayed on the monitor, are for a single computed geometry, as it is
done for half-body simulation, hence the efforts on the complete geometry must be computed by
multiplying by the number of patterns.
The post-processing in Cfview will be done on a single part, but can be repeated and displayed as
a full geometry, see Graphics Repetition for more details about the repetition capabilities of
Cfview.
BODY DEFINITION
The Body definition menu allows to manage the definition of one or several bodies, sub- bodies or
frame bodies.
It is possible to sort patches by Domain and by Bodies - patches . Initial ordering is done by the
domain name in A-Z order, also patches of the same domain go in the A-Z order. To switch between
the sorting criterion ( Domain or Bodies-patches) the user can click on a column title - an arrow will
appear next to the title. Arrow up means A-Z sorting, arrow down is for Z-A.
When computing force and moment integrals on non-closed bodies or sub-bodies, it may be relevant to
activate the dedicated correction for "Motion and Force Variables" (p. 653).
In this section
10.1 Definition 310
10.2 Identifier 311
10.3 Group 312
Body
In Fine Marine, a body is defined as a set of faces which share the same kinematics. As a result,
all the entities moving with the same kinematics must be defined by only one body.
Global fluid forces acting on each body are calculated and recorded in the "eff*.dat" files. In
some occasions, one would like to know forces on some parts of a body. For this purpose, the
notion of sub-bodies has been then introduced.
Sub-body
A sub-body is a part of a body on which fluid forces are calculated separately. Fluid forces on
sub-bodies are recorded just after the global body forces in the "eff*.dat" files. They are defined
by the following label: "BodyName SubBodyIndex".
It is important to remember that sub-bodies are not necessarily closed bodies and this can have an
impact on the meaning of the output forces. In case of a keel from a mono- hull sailing yacht for
instance, the keel can be defined as a sub-body. However, the keel could be a non closed body since
the top patch could belong to the hull. As a consequence, the pressure integration to compute the
forces is not complete on this sub- body. The meaning of the lift force should not be taken as an
absolute value but rather as a relative value while comparing designs or speeds. It should be however
correct for the drag force for instance since the missing top patch does not contribute too much to the
drag.
Frame body
A frame body is a special body which is not associated with any patch. The motion of a frame
body can be fixed or imposed. One use of this tool is to ease the post-processing step by allowing
the projection of the forces applied on a body of interest onto this frame body. The frame bodies
can be created or deleted using the dedicated Create / Delete frame buttons. More information
can be found in the "Frame body" (p. 372) page.
10.2 IDENTIFIER
Each face has its own identifier defined in the face connectivity file. It is composed of six digits:
the first three are used to define the boundary condition, whereas the last three are used to define
index bodies (one digit) and possibly sub-bodies (the two last digits). Among the boundary
conditions flag, the first digit defines the mesh deformation condition.
FIGURE 10.2
Identifier
Only solid patches and non-conformal interfaces are shown in this menu.
It is important to notice, that up to Fine Marine v2.3, the boundary conditions of the grid
deformation and the fluid boundary conditions are linked together. Although, later versions uses
the first digit to define the way the weighting coefficients will be computed for the deformed
mesh. If no mesh deformation is present, the first digit will stay 0.
The list of available mesh deformation flags is as follows:
l Neumann condition: 5,
l Dirichlet condition: 4,
l Shallow water condition: 6.
Boundary conditions for the mesh deformation are also explained in the Boundary conditions for
grid deformation section.
Each body has its own body index in the flags of the faces, sub-bodies are defined by the subset
of faces of the body which shares the same sub-body index (the two last digits of the face flags).
These sub-bodies do not need further information in the input data file. Hence, any data about
sub-bodies is prescribed in the input data file. These sub-body flags have no influence on the
computation of the flow.
For a non-body face flag (index of body = 0), the index of the sub-body is also used to distinguish
the different parts of external boundaries (one can, for instance, change the boundary condition using
the tool "change face flag", after generating the mesh, see Boundary Conditions Manipulation).
10.3 GROUP
One patch can be selected in the left area by simply left-clicking on it. Clicking on a patch
deselects the currently selected patch(es).
It is possible to select several patches located in the list by clicking on the first one and holding the
left mouse button while selecting the next one. Another way is to select the first patch of the list,
then hold down the <Shift> key and left-click on the last patch of the list.
The Delete body button is active when at least one group is selected.
Clicking with the left-mouse button on the plus sign left of a group name in the list will
display the patches included in this group.
When a patch is selected, it is also highlighted in the Graphics Area window where the mesh
topology of the project is displayed.
FIGURE 10.3
One body creation
It is also possible to create a sub-body. For this purpose, display the patches included in a group.
Select one or several patches using the left-mouse button and the <Ctrl> or <Shift> key. Click on
Create sub-body to finish the action. The sub-body group is now available inside a body.
BODY MOTION
This chapter describes the available laws of motion in the Fine Marine interface for each body and its
respective six degrees of freedom. A fixed, imposed, or solved body motion can be set up for each
body and performed by the flow solver for two different parametric systems. Special connections
between bodies can also be defined.
If a project contains several bodies , the parameters of this menu have to be defined for each body . By
clicking on the body name, the interface will display the settings to be defined for each body. One can also
select multiple bodies together using the <Ctrl> key and apply the settings at once.
In this section
11.1 Coordinate Frame 316
11.2 Degrees of Freedom 319
11.3 Initial conditions 358
11.4 Multibody definition 359
11.5 Virtual body 371
11.6 Frame body 372
In order to manage the highly mobile character of the marine applications, Fine Marine as the
capability to handle different coordinate frames:
l Global frame: Also called Galilean or Cartesian frame, it is aligned with the Earth reference
frame and never moves during the simulation.
l Body frame: Original frame of the geometry. It remains “attached” to the boat during the
simulation. When the boat is in its hydrostatic position, the body frame is the same as the
global frame. To define a Body frame, the "Cardan Angles" (p. 316) should be activated.
l "Frame body" (p. 372): Auxiliary virtual bodies used only to create a new user-defined
frame. The Frame body can follow some of the degrees of freedom of the real bodies.
Cardan Angles
Definition
To study the motions of a boat, a new parametric system is required to define the orientation of
the bodies. In Fine Marine, the rotation angles are defined by the Cardan angles. They consist in
the decomposition of three successive rotations (intrinsic) represented on FIGURE 11.1:
1. Yaw / Rz0: rotation around Z in the frame indexed 0 (i.e. the Global frame)
2. Pitch / Ry1: rotation around Y in the frame indexed 1 (i.e. after the rotation Rz0)
3. Roll / Rx2: rotation around X in the frame indexed 2 (i.e. after the rotation Ry1)
FIGURE 11.1
Orientation with Cardan Angles
A bit of theory...
The reference configuration of the body is defined as the mesh reference: ℛ Bi = (G i ,β Bi ) is the
frame linked to this configuration.
The primary configuration (noted with subscript p) is defined by the virtual configuration of the
body rotated by the rotation from βBi to β0 around the Reference point / Center of gravity of the
body Gi. In that case, the frame attached to the boat coincides with β0 and (ψp,θp,ϕp) = (0,0,0).
FIGURE 11.3
Configurations
The inputs required by the interface in the Motion definition tab to "Prescribe the initial Cardan
angles" (p. 318) are the three Cardan angles (ψ0i ,θ 0i ,ϕ0i ) to rotate from the primary configuration
to the reference configuration.
FIGURE 11.4
Cardan angles for motion reference axis section
The Cardan angles for motion reference axis have to be prescribed to align the Body frame
correctly with the position in which the body was meshed:
l If the boat is meshed at hydrostatics and is aligned with +X, the Cardan angles remain 0,0,0.
l If the boat is meshed in a dynamic position, the Cardan angles should be prescribed.
When the Cardan angles are correctly prescribed, the green frame in the graphical interface should
align with the boat.
Hint : The same angles can be used to prescribe a rotation with the sequence (roll, pitch, yaw) along
the Galilean axis X0 > Y0 > Z0 or with the sequence (yaw, pitch, roll) along the successive axis Z0 >
Y1 > X2.
Why? : The decomposition in 3 successive rotations (yaw pitch roll), a.k.a. Cardan angles, is a
particular case of Tait-Bryan angles. As such the two following rotation sequences are equivalent:
l Intrinsic rotation: z-y′-x″ (Z0 > Y1 > X2) sequence: the intermediate frames are used.
l Extrinsic rotation: x-y-z (X0 > Y0 > Z0) sequence: the rotations are made around the Cartesian
axis.
It is recommended to mesh the geometry with an orientation close to the equilibrium position to keep
an optimal mesh quality during the whole computation.
The Show/Hide button will display the new reference frame defined with Cardan angles as soon as
they are different from 0.
When Cardan Angles are not activated, the degrees of freedom linked to the rotation possibilities for
mesh deformation types (weighted or rigid), are limited to the following triplets in the " Domain
Mesh Management" (p. 382) menu:
A warning message will appear in case these triplets are not respected.
Fine Marine provides a 6 Degrees of Freedom (D.O.F) capability to handle the body motions:
l 3 translations: Tx, Ty, and Tz
l 3 rotations: Rx, Ry, Rz
The index following the D.O.F represents the coordinate frame in which the motion is represented
(see more details in the "Coordinate Frame" (p. 316) page).
Each D.O.F motion type can be either Fixed, Imposed or Solved, independently from the motion
type of the other D.O.Fs.
The degrees of freedom Tz, Rx and Ry are frozen in the whole interface when the mesh configuration
is 2D.
If a project contains several bodies , the parameters of this menu have to be defined for each body.
By clicking on the body name, the interface will display the settings to be defined for each body. One
can also select multiple bodies together using the <Ctrl> key and apply the settings at once.
Definition
When a degree of freedom is set to Fixed, it will not evolve during the simulation.
The Dynamic Parameters tab is not available in case all D.O.Fs are set to Fixed or Imposed.
The Motion Variables tab in the Outputs menu is also not available in case all D.O.Fs are set to
Fixed, see Motion and Force Variables.
Inputs
If no other degree of freedom is set to Solved , the Reference point needs to be specified.
Otherwise, the Center of gravity will be used instead.
l Reference point: corresponds to the three coordinates (X,Y,Z) of the reference point in the
Cartesian frame. This point is used:
l to compute the resultant moment of the fluid forces on the body;
l as a rotation point in case "Initial conditions" (p. 358) have been applied or other degrees of
freedom are Imposed.
The Show/ Hide button will display the reference point in the graphics area.
Definition
When a degree of freedom is set to Imposed, a motion law can be chosen to dictate the evolution
of this D.O.F.
If a D.O.F is set to Imposed, the mesh deformation technique should be prescribed in the Domain
Mesh Management menu.
Inputs
l Motion Law: defines the motion law applied on the corresponding degree of freedom. For
each imposed law, parameters are required (click on the Edit button to open the corresponding
page). The existing motion laws are described further down on this page.
If no other degree of freedom is set to Solved , the Reference point needs to be specified.
Otherwise, the Center of gravity will be used instead.
Modification of reference point in case of restart : output and variables are updated to keep
the same physical position, orientation and velocity for the body. It affects the modification of
body outputs to keep the simulation consistent (and the moments of the fluid loads are also
changed since the computation point is not the same as the first simulation). This change is only
possible if the first computation has a (0,0,0) reference orientation and if the motion does not have
any rotation motion during the first computation. In the other cases, the following message error
message is displayed in the .std file: "Problem concerning the reference orientation. Modification
of orientation impossible for a first computation with non-zero orientation".
The Show/ Hide button will display the reference point in the graphics area.
Motion laws
All ramp and position modification motion laws include the choice between absolute or
relative time
l Absolute time: the time is based on the physical time of the computation. In other words, t =
0.0s refers to the first computation starting time and all motion laws are defined in that time
frame. Restart computation motion laws need to start at the final time of the previous
computation. This means that if the absolute time is chosen, the final simulated time of the
previous computation should be taken into account.
l Relative time: the time is defined relatively to the current computation. In other words, t = 0.0s
means the beginning of the current computation.
Example
In a resistance curve using successive restarts, each consequent computation can start
properly even if the previous computation stopped earlier due to manual intervention or the
use of the convergence checker.
Constant speed
In this case, only one value is necessary to define the law of motion: the speed of the body. It will
remain constant during the computation.
For the classical ramp profile, with absolute time the initial velocity V 0 will be applied to the
body from the beginning of the computation until time T 0 , where a linear velocity ramp will start.
The ramp will reach a target velocity V1 at time T1.
If relative time is chosen, V0 will be kept for the duration dt0 from the end of the previous
computation and then the linear ramp will start with a duration dt1 to reach V1.
FIGURE 11.8
Classical Ramp Profile with absolute or relative time
For the 1/4 sinusoidal ramp profile, with absolute time the initial velocity V 0 will be applied to
FIGURE 11.9
1/4 Sinusoidal Ramp Profile with absolute or relative time
For the 1/2 sinusoidal ramp profile, with absolute time the initial velocity V 0 will be applied to
the body from the beginning of the computation until time T 0 , where half of a sinusoidal ramp
will start. The ramp will reach a target velocity V1 at time T1.
If relative time is chosen, V0 will be kept for the duration dt0 from the end of the previous
computation and then the linear ramp will start with a duration dt1 to reach V1.
where:
l α0 corresponds to the amplitude
l ω is the pulsation, defined by ω = 2π/T (the period should be entered, noted T)
l ϕ is the dephasing
The 1/2 sinusoidal ramp profile will start at the time T0 and stop at the time T1.
The Planar Motion Mechanics (PMM) sway motion has been introduced to define a sinusoidal
motion along Y-axis (d.o.f.: Ty).
The motion can be described by the sway amplitude η0 , and the number of PMM rotations per
minute N. The transitory phase is modeled by a sinusoidal ramp profile which will start at the time
T0 and stop at the time T1. The motion is then described by:
l Transverse translation: Ty = ηPMM = -η0 sin(2πN(t-T0)/60)
l Transverse velocity: Vy = νPMM = -η0(2πN/60)cos(2πN(t-T0)/60)
l Transverse acceleration: Ay = d(νPMM)/dt = η0(2πN/60)²sin(2πN(t-T0)/60)
FIGURE 11.13
PMM Sway Motion Law Menu
The Planar Motion Mechanics (PMM) yaw motion has been introduced to define a sinusoidal
motion along Z-axis (d.o.f.: Rz).
The motion can be described by the yaw motion amplitude ψ0 , the number of PMM rotations per
minute N, and the drift angle β. After the transitory phase between T 0 and T 1 , the motion can be
described by:
FIGURE 11.14
PMM Yaw Motion
Without coupling this motion with the PMM sway law, one will not probably get a symmetric path. It
will be harmonic, but most probably not symmetric.
FIGURE 11.15
PMM Yaw Motion Law Menu
l a sinusoidal motion in lateral direction with the sway amplitude ymax and the frequency
Significant model consideration should be taken into account: that can be helpful
in backward recalculation to the settings to be impose through the interface. Still, for the theoretical
solutions the better approach would be to keep different from x, which is not done for
the moment.
Z-axis gyration
This law is dedicated to the Z-axis rotation (d.o.f. Rz). The center of gyration Cgyr is required for
the 1/4 sinusoidal ramp profile: the initial rotating velocity ω o will be applied to the body from the
beginning of the computation until time T o , where a quarter of a sinusoidal ramp will start. The
ramp will reach a target rotating velocity ω1 at time T1.
l Tx and Ty should be set as fixed: the motion is fully defined by choosing Z-axis gyration.
l Rx, Ry , Rz and Tz can be solved.
l It is possible to activate the Rotating Frame Method to speed up the computation. This
method is compatible with the solved motions mentioned in the previous point. If Rotating
Frame Method is active the results (forces and moments) will be given in the body frame.
l To post-process the results the degrees of freedom Tx, Ty, Tz and Rz need to be active in the
Travelling Shot.
This law consists in the modification (linear or angular, depending if the chosen d.o.f. deals with
translation or rotation respectively) of the position of a degree of freedom using a smooth
evolution. The modification can be done with a relative or absolute manner.
The modification will start at the time T 0 and stop at the time T 1 and will move the body
(translation or rotation) according the difference of position ΔP = P1 - P0 (relative modification) or
by directly imposing the final position P1 (absolute modification).
If relative time is chosen the initial position P0 will be kept for a duration dt0 after the end of the
previous computation and then move to P1 during dt1.
FIGURE 11.18
Relative or absolute modification of the DOF position
Relative time and relative position are not compatible to avoid unwanted motions if the first
computation stops before reaching the expected final position.
This law copies the motion of one degree of freedom from another body during the computation.
FIGURE 11.19
Relative or absolute modification of the DOF position
Like all other motion laws it can be used for physical bodies in Body motion or for a domain
with independent motion in Mesh management. For Tx, Ty, Tz, Rx, Ry and Rz all unlinked
bodies will be available for copy. For Rn all bodies linked to another one with a rigid or pin
connection will be available.
It is not possible to copy the motion from the same body, or to have a loop where bodies copy a
DOF from each other. In these cases an error message will be shown.
Example of usage: a zig- zag simulation with overset feature, containing an independent
background domain and a ship in an overlapping domain. The background needs to follow
the X and Y translations of the ship but not its rotations. The DOF Tx and Ty of the
background domain can be set to "copied from another body" and the ship selected in the
body drop-down list.
Dynamic libraries
To be able to drive dynamically the motion of bodies (especially relative rotation of a body linked
to a pin joint) a specific dynamic library is integrated as a function of different inline variables
(forces, position of bodies,...).
FIGURE 11.20
Dynamic libraries
Though there is no possibility to edit the motion through the interface, the button will be grayed
out.
The d.o.f. imposed by this motion law can be controlled through the position, velocity or
acceleration.
The imposed value for the current time (tc) can depend on forces acting on bodies and sub-
bodies, and/ or kinematics of bodies at the previous time step (tp).
User-defined
A user-defined law allows the user to define his own imposed motion law defining a chart. This
chart is available for each d.o.f. as a function of the time. It can be set up manually or directly
FIGURE 11.21
User-defined profile manager
The left part of the window consists in entering (t, DOF(t)) values, in the two corresponding
columns, "t" referring to the time and "DOF (t)" referring to the position/ angle of the
corresponding d.o.f.. For instance, "DTx" in the figure above is the position relative to the initial
configuration, of the center of gravity (or the reference point in case there is no solved motion)
along X-direction.
By pressing <Enter> after each input value, the profile is updated in the graphics part. It is also
possible to Import/ Export profiles from/ to file. The format of the file is defined with two
columns: one for the time and the second for the evolution of the d.o.f.. The Clear Profile button
clears the current profile.
The profile must have at least two defined pairs (t,DOF(t)) of values. Besides, the first pair has to
start with t=0. Another constraint is that the time values should increase. If all these conditions are
not respected, a warning will appear, saying that the profile is not allowed.
The motion profile law has to be smooth enough and the file has to be written in double precision
(ideally 14 decimal places) to avoid irregularities in the second derivatives. Irregularities in second
derivatives lead to irregularities in the pressure field that can show as noise in the computed forces
during the simulation.
If non-null initial Cardan angles for motion reference axis are defined, the second column of the file
gives the modification of Cardan angles with respect to these initial Cardan angles, since the primary
configuration is the starting point. Value for the relative motion can be non-null at a time t=0.
Definition
When a degree of freedom is set to Solved, the motion associated to this D.O.F will be resolved
by the solver based on the Dynamic parameters prescribed. The motion can either be solved by:
l solving the Newton's law based in inertial data, or
l using the Quasi-Static (QS) approach (see Quasi-Static Approach for more information) in
case of Steady simulation.
It is possible to solve one, several or all D.O.Fs at the same time. As a consequence, the
combination of Fixed, Imposed and Solved degrees of freedom is allowed.
For solved rotations, the rotation point is the Center of gravity.
If a D.O.F is set to Solved , the mesh deformation technique should be prescribed in the Domain
Mesh Management menu.
Inputs
l Motion Law: defines the motion law applied on the corresponding degree of freedom. For
each imposed law, parameters are required (click on the Edit button to open the corresponding
page). The existing motion laws are described further down on this page.
As soon as one d.o.f. is solved with the Newton's law, it is advised to divide the time step value by
two. That's why the interface can ask the user to reset the default time step values for the Control
Variables menu (see Control Variables) through a warning.
Introduction
When dealing with simulations to reach an equilibrium position for a hull (steady-state solution),
the first method is to use a fully unsteady approach, i.e. to couple the flow motion and the
Newton's law at each time step. As a consequence, for the stability of the numerical algorithm, the
required time step should be small enough.
To relax this condition and decrease the CPU time, the quasi-static (QS) method has been
developed. It is based on a succession of predicted body attitudes. These attitudes are evaluated
using an ad-hoc quasi-static approach.
This procedure remains stable even for larger time steps, enabling the use of the sub-cycling
acceleration method for the fraction volume equation.
A second application for the quasi-static approach is to find the equilibrium position for a foil that
will give the desired lift and lateral forces. The forces become an input instead of an output, and
the solver iteratively finds the rake and yaw angles for the hydrofoil at a given speed.
This way the manual iterative process of running foil computations in a large number of positions
until the right forces are reached is avoided, saving a lot of computational time.
Both methods are explained in details for the graphical user interface and guidelines here below
but the theory is also developed in the chapter Acceleration algorithms.
Layout
The QS method is activated in the Body motion menu. By default, the it is not active. This
approach is only available for 3D configurations and the conditions to activate it are:
l Multi-fluid activated,
l Time configuration is steady.
The user needs to choose between hull and foil modes.
FIGURE 11.22
Quasi-Static approach activation
Hull mode
Only Tz0, Rx2 and Ry1 are concerned by the QS hull approach. In this case, a "Solved" motion
type means "Solved motion with the QS approach".
The menu on the right part shows the status of the QS approach related to each concerned d.o.f.:
This method does not require the values for the Inertia matrix, the added mass and damping
coefficients. Defaults can be kept.
The Edit button allows to modify the parameters. When clicking on it, a separate window
appears.
l Linear or Smoothlaw shows the selected law for the QS approach.
FIGURE 11.23
Quasi-Static hull mode approach parameters
FIGURE 11.24
Quasi-Static intervals in terms of number of timesteps.
The parameters dT2 and dT3 are the same for each d.o.f.. On the contrary, T1 and the Under-
relaxation parameters are specific for each d.o.f.
Hence, at time T1, the method predicts a new position that will be effective at time T1 + dT2.
More generally, at each time Tp equal to T1 + ndT3 (n is the number of predictions), the method
predicts a new position that will be effective at time Tp + dT2.
l Since the motion is imposed rather than solved at each time step, the motion solving is much
more stable, especially during the transient.
l If correctly used, the method leads to monotonic solutions.
l At low Froude numbers, the motion solution does not oscillate, removing the need for long
simulation periods to come to a stable result.
l The quasi-static leads to the same results as the 'classical' approach (Newton's laws).
l The method can conceptually be used at all Froude numbers (settings changed accordingly)
but the method is not recommended for high Froude numbers when dynamic forces are
dominant. Indeed, the predictions can be too important forcing the user to drastically reduce
the under relaxation parameters which will increase the convergence time.
It is recommended to use dT3 = dT2 to have a smooth convergence of solved motions and forces.
Different values for dT2 and dT3 lead to the same results but they create small peaks in the efforts
convergence.
The under-relaxation parameters should be decreased if the hull behavior is expected to have
some unsteadiness or an important dynamic component.
For typical ship resistance simulations it is recommended to:
l Release the ship motions from the beginning
l Define dT2 = dT3 = 20Δt
l Relaxation parameters (for all DOF's):
l 0.2 for Froude < 0.3
l 0.15 for 0.3 < Froude < 0.5
l 0.10 for Froude > 0.5
l For shallow water simulations, it is also advised to use lower values like 0.05 to avoid
abrupt changes in motions, which would make the ship touching the ground during the
transient.
For more guidelines based on several applications, please read the Application Guidelines.
Foil mode
The QS foil mode should be used for an isolated hydrofoil. The rake (Ry1) and yaw (Rz0) angles
can be solved with this approach. Activate QS foil mode and set the d.o.f. to Solved to use QS.
The flow solver will adapt the rake and the yaw of the hydrofoil and check the target lift and side
forces iteratively. With this process the solver progressively determine the dynamic equilibrium
position for the foil at the imposed forward speed.
Current limitations:
l The procedure supposes that the body simulated is a hydrofoil. It will work incorrectly if it
is applied to bodies that do not have a wing-like shape. The surface and velocity of the foil
must be large enough for the requested forces. The hydrofoil must be able to generate the
requested forces, otherwise the imposed angles Rz and Ry will keep on increasing and the
computation will crash.
FIGURE 11.25
Quasi-Static foil mode parameters.
l Target forces Fy and Fx: target foil side force and lift force to be reached at convergence.
Units are Newtons.
If only Ry is solved only Fz will be available to impose. If only Rz is solved only Fy will be
available to impose.
Best practice
l Forward speed (Tx0) should be imposed with a sinusoidal law. The acceleration can be high
to reach quickly the target speed, e.g. 2 timesteps.
l It is recommended to fix Tz0, Ty0 and Rx2 when using QS foil.
l Release the foil motions from the beginning.
l Define dT2 = dT3 = 20Δt.
l Keep under-relaxation parameter to 1.
l The foil can be placed in an overset domain to allow it to move without limitations due to
mesh deformation.
l Adaptive grid refinement can be used to accurately capture the large wake created by
hydrofoils at high speed.
B. Dynamic Parameters
When one or more D.O.Fs are Solved for a specific body, the parameters required by the solver
to resolve the body motions must be prescribed.
Inertial Data
A solved body motion requires inertial parameters, such as mass, position of center of gravity, and
inertia components.
Geometry configuration
The geometry configuration must be specified. If the case is modeled with a symmetry plane, the
flow solver has to know if the computation is performed on half of a body.
Important: If Half body is selected, the output forces will be given for the simulated half body.
For 2D cases, an entire body will be considered so that the influence of the fluid will be taken into
consideration in a proper way.
Center of gravity and Mass must always be provided for the entire body, even if a half-body is
simulated. The code will adapt them automatically according to the choice for the geometry
configuration.
The first parameters are the coordinates (X,Y,Z) of the body gravity center in the initial reference
frame and the second parameter is the body mass.
The Show/Hide button will show the gravity center in the graphics area.
Finally, when the rotations of the body have to be solved, the inertia matrix needs to be defined,
and its components have to be evaluated at the body center of gravity in the reference frame of the
body. The first three components are related to the inertia momentum (A 0=Ixx, B0=Iyy, C0 = Izz),
and the last three to the inertia products.
For simulations in which only one rotation is solved, only the inertia momentum and the two inertia
products related to the axis of rotation are required. For instance, if only the pitch motion Ry1 (y-axis
rotation) is solved, B0, D0 and F 0 should be set to the correct values . The other inertia product E0 can
be set to 0 but the other inertia momentum A 0 and C0 must be positive and different from 0, i.e. 1.
Finally, the inertia matrix should be positive definite. In particular, its determinant should be strictly
greater than 0.
For a 2D case, only the momentum inertia C0 is useful (the interface freezes the other components of
the matrix and defines the other components as 1).
For a linked body, the inertia matrix can be expressed its own primary frame if the option Align
primary axis with has been activated (see "Primary axis definition" (p. 362))
This menu offers the possibility to estimate the inertial data if it is not known. It is only available
for multi-fluid simulations.
The mass and center of gravity will be computed by the "Domhydro" (p. 982) tool, also
available as a plugin in Hexpress. More information in Marine Plugins.
Domhydro assumes the body is in hydrostatic position and the mass is uniformly distributed on
the complete body.
User Inputs:
l Initial free surface position. This value will be initialized with the value in the Initial solution
menu.
l The Z coordinate of the center of gravity can be optionally imposed. By default it is
computed by Domhydro.
FIGURE 11.27
Estimate inertial data.
For the inertia matrix computations the user has two options:
l Uniform mass distribution: takes the same assumptions described above.
l Regression law (ITTC) uses the following formulas for the inertia matrix:
In 3D:
Where cx, cy, cz are regression coefficients that can be adjusted in the Advanced >> tab. Default
values are: cx = 0.37, cy = 0.25, cz = 0.25.
Lpp is the length between perpendiculars of the ship. When the body is aligned with the X axis,
Beam and Lpp are computed from the bounding box of the body
l Lpp along X;
l Beam along Y, doubled if it’s a half-body.
If the body is not aligned with the X axis the user will need to input the Lpp and Beam values.
l The mass is taken from the Domhydro results.
The resulting estimation will be displayed in a pop- up menu. The user can choose which
parameters to apply in the computation setup.
Coupling Parameters
This tab controls the coupling between the flow and the body motions.
Coupling parameters are not available for bodies with an Imposed motion type.
When solving the motions of the body, instabilities can appear coming from the dependence of
fluid forces on body acceleration. To ensure stability, a virtual added mass term can be added on
each side of the Newton's law (the right-hand side being treated explicitly). These additional terms
have the same function as an under relaxation coefficient.
The following options are available for estimation of the Added mass coefficient:
l Approximate: added mass is computed (Laplacian operator resolution) at the estimation
frequency, at the beginning of the time step.
l Accurate: similar to approximate, but added mass is recomputed for each non-linear iteration of
a calling time step.
l User defined: added mass is defined by the user to a fixed value throughout the simulation.
The input is non-dimensional, expressed as a fraction of the body mass.
The Estimation frequency for the first two modes can be set to 0 to only perform the estimation
once, at the beginning of the simulation. Any other value will set a periodic call for the
estimations.
An Approximate estimation mode together with a 0 value as estimation frequency are the default
values, since, in most cases, the added mass is not varying significantly.
The Accurate Estimation mode can allow to determine the matrix of added mass coefficients as
the potential code does, at the expense of simulation time, as it includes the resolution operator
inside each non-linear iteration. It is very rarely needed, as the motion amplitude between time
steps should be relatively small, leading to a negligible difference with the Approximate
estimation.
For the multiple bodies calculations, when one or several bodies are linked to the another body
with a certain connection type, an option to Take linked bodies into account for the added
mass estimation becomes available within the Coupling parameters menu. The Estimation
mode for at least one D.O.F. shouldn't be User defined.
FIGURE 11.31
Activation of a linked body added mass estimation for the multiple body calculations
Damping coefficient
When the aim of the computation is to reach an equilibrium position of a ship, transient states are
out of interest. To obtain this state more rapidly and avoid high amplitudes oscillations due to
transient states, a Damping coefficient can be added to the Newton's law for the trim and sinkage
degrees of freedom, for instance.
These terms do not affect the equilibrium position, since the damping term is a function of the
velocity of the concerned D.O.F. The evaluation of this damping term is based on the analogy of
a 1-D damping spring-mass system, where the hydrostatic force plays the role of the feedback
force. The damping term, which is proportional to the water plane area, is calibrated to be on the
critical state when the damping coefficient is imposed equal to one. In fact, the water plane area is
multiplied by this damping coefficient to generate the applied damping term.
If the damping coefficient is defined with a value higher than 1.0, the damping term will have
a stronger and reverse impact.
External Forces
Fine Marine gives possibilities to impose various additional external forces acting on bodies:
l Constant wrench (thanks to force, torque and calculus point) linked to the body,
l Drag based wrench to take into account the global force (for the propeller, for instance, the
force but not the torque).
l Spring wrench
l Damping wrench
The Drag based wrench can be used simultaneously with an actuator-disk, especially if its body
force update is not active. In the case body force update is active, the drag being already balanced
by the Drag based wrench, the actuator disk will have no influence.
In case of rigid motion, the user can choose to activate the Drag based wrench to initialize the
computation for a future computation with the Actuator disk. See also: "Actuator Disks" (p. 860).
The boat must move in the X- direction in the primary frame, since the update is based on force
balancing in that direction.
The Show/ Hide button will display the external forces in the graphics area as soon as an input is
different from 0. These values and their representation take the Cardan angles into account.
Constant Wrench
With these inputs, it is possible to specify respectively: the Cartesian components of the imposed
force, the Cartesian components of the torque and the Cartesian coordinates of the application
point of this wrench. All this data has to be given in the initial reference frame.
This wrench can typically be used to simulate a propeller force or a towing force. Hence, one has
to specify the Cartesian components of the propeller shaft orientation (respectively the Cartesian
components of the towing force orientation). The last are the Cartesian coordinates of the point
where the propeller (respectively the towing force) acts on the body.
To block the direction of the external force the Non follower force can be activated. An
explanation about the difference in calculation follower and non follower force can be found in
the External Tools chapter. This functionality can be activated in case the application point of the
force can vary, while the direction of force action should stay constant. The force is then not
dependent of the body motion. For instance, this can be useful to simulate the wind force action
on a sail or a towing tank carriage motion.
.
l The forward speed of the ship has to be parallel to the X-axis (positive or negative). However, a
body motion with an high angle compared to 0 along X-direction is not allowed since we assume
the boat is moving in the X-direction. This can cause a problem with gyration motion or the boat
moving in the Y-direction. However, for Y-direction motion, one can define a Cardan angle of
90deg.
l The sign of the orientation vector has no influence here since the imposed force is always in the
opposite direction of the drag.
l The magnitude of the force is determined such that its projection on X-direction is equal to the Fx
component. The direction and the application point move with the boat just like a propeller. Drag
wrench force is updated only at the beginning of each time step using the drag of the previous
time step.
l The drag based wrench can be simultaneously used with an actuator-disk to take into account the
effect of the towing force. The X-axis component of the actuator disk acting on the ship will be
logically subtracted from the opposite of the drag to evaluate the towing force.
l The parameters Dir_z and Z are frozen in case of a 2D project.
Force and moment components calculated during the simulation will receive the stiffness values
of the spring load at the application point in the primary frame of the body and will be applied to
the specified D.O.F.'s.
For example, for the rotation stiffness, moment components along axes will be defined by the
product of the rotational stiffness by the angular deviation of the given Cardan angles (roll, pitch
and yaw).
For a half- body configuration, the external effort resulting from the spring wrench that the user
specifies in the GUI will always be replicated on the other side of the mirror plane. This is the case
whatever the location of the application point, being located on the mirror plane or away from it.
Damping wrench
Similarly to the Spring wrench conditions, this will add coefficients (C d >0) to the force and
moment components with respect to the specified application point.
All loads are computed with respect to the primary configuration considered as non-loaded
configuration. Rotational damping is defined related to the axis of the Cardan angles respectively
(Rx2,Ry1,Rz0).
For a half-body configuration, the external effort resulting from the damping wrench that the user
specifies in the GUI will always be replicated on the other side of the mirror plane. This is the case
whatever the location of the application point, being located on the mirror plane or away from it.
Initial Conditions
For a body with solved motion, initial kinematics have to be specified. For instance, an initial
displacement can be imposed deduced from the position in the reference mesh. It can be
composed of a translation and a simple rotation along X- axis, Y- axis or Z- axis only. The
corresponding data for imposing an initial displacement are:
l Initial velocity
l Initial instantaneous rotating vector
l Initial translation
l Initial rotation
The parameters W_GC, dRx0, dRy0, T_z0, deltaRx0 and deltaRy0 are frozen for 2D projects.
For instance, if the body is at rest at the beginning of the simulation, a null velocity is imposed. When
a restart computation is run, these values are not taken into account since the configuration of the last
computed time step is automatically saved and read from the file body_param.dat.
The Show/ Hide button will display the initial conditions (for translation and rotation only) in the
graphics area as soon as an input is different from 0. These values and their representation take into
account the Cardan angles.
The initial kinematics capabilities can be used to perform a rolling motion simulation for instance.
When the user defines an initial rotation of 0.8 radians around X-axis, the body will rotate initially
with a rolling angle of 0.8 radians. If the D.O.F. Rx is set as Solved, the code will then perform a
computation in order to stabilize the boat from its initial position.
The Initial conditions panel allows to impose an initial translation and/or rotation to the bodies
without solved DOF, for which it is not possible to access to the Dynamic parameters panel.
Such panel will not be visible if the selected body has at least one solved DOF.
FIGURE 11.34
Initial conditions panel
In case of restart , initial translation and rotation are not inherited from the previous computation:
thus, they should be re-imposed also in the restarting computation. For instance, in case of a wind
study simulation with an initial rotation, both the first computation using RANS and the second one
using DES should have the same initial angle of rotation.
Best Practices
This option is mainly thought for multi-domain mono-fluid simulations of ship superstructures for
wind study purposes. In this configuration, the ship can be placed in a rotating domain to easily
start the simulation with different wind angles.
When multiple bodies have been created in the Body definition menu, in the Body motion
menu, the list of bodies will be displayed without the reference to domains. An option becomes
accessible: a special link can be defined between the bodies. First of all, one should pick the body
the selected body from the tree will be attached to.
FIGURE 11.36
Link between bodies
RIGID connection
For a RIGID connection, no input is required. It allows to fix a body with another one, to follow
its motion.
PIN connection
PIN definition
The axis and the center of the connection should be defined through the Edit button.
Motion definition
One degree of freedom for rotation, named Rn should be defined. The "n" refers to the axis
defined with Edit button of the link. The motion can be fixed, imposed . Please refer to Imposed
Law of Motion for the definition of each imposed motion law.
FIGURE 11.38
Rn degree of freedom
PIN visualization
The vectors represented in the graphics area are originated at the PIN connection point and
directed in the normal direction. The rotation direction is defined thanks to the speed sign of the
imposed rotation law. In case the rotation starts off negative and ends up positive or vice versa,
two arrows are added.
FIGURE 11.39
PIN connection display
When a PIN connection is defined, the Cardan angles are hidden and the primary axis of the
attached body should be defined with the following menu:
A configuration where the primary axis is orthogonal to the pin axis (such as a pin axis on Z,
and a primary axis on X) can lead to a gimbal lock which crashes the solver.
Examples
Applications:
l Propeller not rotating along one of the cartesian axis
l Moving rudder on a zig-zag configuration
Workflow:
1. Define the PIN connection point at the mechanical connection (e.g: propeller center, rudder
connection, ...)
2. Define the PIN direction along the rotation axis
3. Define the reference point at the PIN connection point location (reference for the Moments)
4. Align the primary axis with a desired direction (e.g: X for a propeller, Z for a rudder, ...)
This connection allows one body to translate in a predefined direction during the simulation. It is
typically used to test appendages in different locations within the same project.
The slider joint and thus the coordinate of its axis is defined based on the primary configuration
of the head of the kinematic chain.
This means that if the head body of the kinematic chain has non null Cardan angles, the axis of the
silder has to be defined with respect to this primary configuration and not to the reference
configuration given by the cartesian axis of the mesh.
FIGURE 11.41
Edition of the Slider joint connection
Motion definition
One degree of freedom for translation, named Tn should be defined. The "n" refers to the axis
defined with the Edit button of the link. The motion can be fixed, imposed or solved. Please
refer to Imposed Law of Motion for the definition of each imposed motion law.
A Linear position modification with initial and final times equal to zero can be used to change
the initial position of the body.
The vectors represented in the graphics area originate at the reference point of the body and are
oriented in the direction of the translation.
Examples
Application: test a fixed rudder at different positions with respect to the hull
Workflow:
l Place the rudder in an overset domain and refine the hull domain where the rudder will be
placed.
l In the Body motion menu, link the rudder to the hull with a Slider joint connection
l Edit the connection parameters and define the rudder translation direction
l Define the rudder motion law as Linear position modification . Change the Position
modification to Relative.
l Set initial and final times to zero, and the Position change (P1 - P0) to have the rudder at the
desired location.
"Dynamic Parameters" (p. 344) can be specified for linked bodies with RIGID and PIN
connection type, even if the motion is Imposed or Solved. In this case, the inertial effects are
transmitted to the parent body through additional external forces. If the Align primary axis with
option is activated, the inertia matrix of the linked body must be expressed in the frame of the axis
that has been chosen.
When specifying the Motion type for rotation D.O.F. (Rn) as Imposed, the Inertial effects
menu with the checkbox Consider inertial parameters of this body becomes available:
FIGURE 11.45
Motion definition frame for an Imposed Motion type of a linked body
By activating this option the Dynamic parameters menu with Inertial parameters becomes
available for modifications. For example, the influence of a linked body can be taken into
consideration respecting the imposed law of motions.
By defining the Motion type of a linked body as Solved, the Dynamic parameters menu is
FIGURE 11.46
Motion definition frame for a Solved Motion type of a linked body
The quasi static method is not compatible with a solved PIN connection. The method will be
then disabled.
In addition to the Inertial data, Coupling parameters, Initial conditions menus having the
same options comparing to the non- linked body case, the External forces menu provides
additional settings for the Wrench from parent body.
The Inertia matrix of the linked body needs to be defined in the parent body primary frame.
FIGURE 11.48
Coupling parameters tab: the inertia matrix must be provided in the parent body frame.
The inertial effects are not integrated directly into the inertial parameters of the parent body. As a
consequence, it will converge only if the inertia parameters of the linked bodies are relatively small
compared to the inertial parameters of the parent body, since they are treated explicitly.
As it is explained in the Mesh Management chapter, created from the sliding patch(es), virtual
body can be treated somehow as the rigid body regarding it's motion definitions. After the body
has been created within the Mesh management page, it will be automatically added into the
Bodies list of the Body Motion menu with the name Virtual_body_#.
FIGURE 11.49
Body motion menu: virtual bodies motion parameters
A frame body is a special body which is not associated with any patch. Its aim is to copy one or
several degrees of freedom of another body in order to create the output in a different frame.
The definition of such a body is made directly in the "Body Definition" (p. 307) menu. The
created body will appear in the Body motion menu:
FIGURE 11.50
Frame body motion definition
l Cardan angles can be set for this body to define the initial orientation of the frame body.
l The degrees of freedom of a frame body can be fixed or imposed.
l The goal of the tool is to ease the post-processing step by allowing the projection of the forces
applied on a body of interest onto the frame body. To do so, once the kinematic components of
the considered bodies are saved in the Global frame of reference (see "Motion and Force
Variables" (p. 653)), the "eff_change_frame.py" (p. 1006) macro can be run to output the
forces in a new frame.
Example
MESH MANAGEMENT
This menu allows to define the mesh deformation strategy linked to each domain according to bodies
motions present or not in the domain.
In the list Domains, different domains are shown without displaying bodies and sliding patches.
This menu is divided in three parts: "Sliding patch motion", "Domain mesh management" and
"Independent domain motion".
In this section
12.1 Multidomain definition 377
12.2 Sliding Patch Motion 378
12.3 Domain Mesh Management 382
12.4 Independent domain motion 389
Fine Marine can handle multidomain projects. This means that domains can be manipulated
separately to allow completely different motions between them. However, information about the
flow should be transferred as soon as there is a "sliding" against each other. These connections
can be done using non- conformal interfaces (named as "Full Non- Matching Boundary"
connections in Hexpress) and listed in the Boundary conditions menu of Fine Marine interface
as Non-conformal interfaces. These non-conformal interfaces can be grouped together to create
sliding patches. These groups can be used to define special links between the domains.
The first tab of Mesh Management menu contains the list of Domains of the project. Second tab
Sliding patches motion suggests the choice of non- conformal patches with the details as:
boundary condition type, identifier and name of domain to which this patch belongs.
Sliding patches motion page is only available for the multidomain projects with Full non matching
boundary (FNMB) condition created. Patches flagged as " SOL* " are the boundary condition type
corresponding to the FNMB in Hexpress.
Displayed list presents non-conformal patches for the selected domain with no relation to the rigid
bodies existing in the project. All settings for bodies should be done through the Body Definition
and Body Motion menus.
To work with the existing sliding patches, the user can perform the following operations:
l choosing the Create link (with possibly a single patch selected), the definition of a link type
becomes available. Through the Attach patches to and with connection drop down list boxes
the choice of the pilot body (between all existing in all domains) and the type of connection
can be done.
The connection point will be the centre of the rotation. If the rotating body has only imposed or fixed
motions, this point must be the reference point (defined in body motion). If the rotating body has any
solved motion, it must be the centre of gravity.
For all connection types except Rigid, clicking on Edit button will allow to define the connection
point coordinates.
Several patches can be added to the sliding patch link by clicking Merge button. This function
becomes available when there are links created, all other selected items are ungrouped patches.
If non-conformal boundaries are not present in the current domain, the Sliding patch motion is not
available.
Starting from Fine Marine v4.1 creating the virtual body based on Sliding patches is available.
Attention should be payed to the Fine Marine v3.1 projects: Body Definition, Body motion and Mesh
Management setting will be defined as Defaultswithout virtual bodies definitions.
To create a virtual body from the sliding patch(es) select from the Sliding patch motion Patches
menu the future virtual body patch(es) and click Create virtual body.
FIGURE 12.5
Virtual body from sliding patches creation
From now created Virtual_body_# will be added into the Bodies list of the Body Motion menu.
Concerning the Domain mesh management, mesh deformation strategy will follow the motion
from the Virtual_body_#.
Initially, a virtual body creation benefit is to make it possible to impose a motion of the domain as
a rigid body, link it to another virtual or rigid body and etc., to treat the sliding patches somehow
as a rigid body. With respect to this, the Body Motion menu receives the list of Bodies including
the Virtual_body_# . Description of available options for the virtual body management can be
found in the Virtual body section. It is also possible to create links to a virtual body within the
Mooring, Tugging and Actuator disc additional models.
It is also possible to control some results for the virtual bodies computations. Details can be found
in the Body/Sub-body Management.
FIGURE 12.6
Domain Mesh Management
When clicking on the domain in the tree on the left side of the menu, the Domain Mesh
Management tab is opened.
If no body and no sliding patches are defined in the domain, the menu Domain mesh management
is not available, but the last menu Independent domain motion is available.
The Source of domain rigid motion or pilot body should be selected. By default, the first body
from the list is selected. This option is useful as soon as multiple bodies are present. Indeed, the
pilot body will drive the domain mesh displacement whereas the other ones will not have an
influence on the domain displacement.
For the Mesh displacement definition, the following two regridding strategies can be used in
each d.o.f.:
l Rigid motion means that the mesh will follow exactly the body without being deformed,
giving the possibility to perform motions of arbitrary amplitudes
If the mesh deformation definition for the domains only contains "rigid mesh deformation", then
there is no need for the sliding patches to be linked.
l Weighted deformation means that a body-fitted mesh will be generated, using an analytical
weighted deformation technique for the body motion related to this d.o.f..
If one domains has a "weighted deformation" for any degree of freedom in its mesh definition
then the user has to group the sliding patches corresponding to the domain manually and link it to
its parent body of the domain with a "rigid" connection.
For only one moving body in an unbounded domain, the domain can follow exactly the body
without being deformed. If only Rigid is specified for each degree of freedom, the motion will be
applied to the whole domain. The motion of arbitrary amplitudes in any direction and orientation
is possible since the domain follows exactly the body motion.
In the case of free surface simulations, it is better for accuracy to keep the free surface position
with respect to the external boundaries. As a consequence, if it is requested to impose or solve a
body with a trim, a sinkage or a roll motion, it is better that these degrees of freedom do not affect
the external boundaries: they have to be treated by a deformation mesh technique (imposing
limited amplitudes of motion for these degrees of freedom). This can be done by selecting
Weighted Deformation.
When more than one body is present in the same domain it might be necessary to disconnect its
motion from the one of the pilot body.
FIGURE 12.8
Specific mesh management control for sliding patches
If Domain rigid motion source is chosen the body will follow th epilot body motion, regardless
of its own motion law. If Body itself is chosen, the body will follow its own motion law.
l Example 1: boat1 tows boat 2 using a tugging line
Both boats are meshed in a single domain. Boat1 has an imposed Tx motion, while boat2
has Tx solved.
Here boat2 needs to have Base mesh kinematics on motion of Body itself. This way the
mesh deformation will be adjusted to boat2 motions, which are different from the pilot's
boat1.
l Example 2: ship + a propeller in sliding grids with a shaft connecting both domains
The shaft has one part in each domain. The part in the propeller domain will rotate with the
propeller. But the part included in the ship domain cannot rotate, or it will break the mesh.
Here Base mesh kinematics on motion of ship body (Domain rigid motion source) should be
used. This part of the shaft will rotate from the body motion point of view, but not for the
mesh.
Rotating frame method is implemented and available in the interface. To apply this functionality
see the Rotating frame part of the Domain Mesh Management menu where it is possible to
activate/ deactivate Rotating frame method by selecting/ deselecting it into the check box.
FIGURE 12.9
Rotating frame method activation menu
This method is a steady-state approximation. The flow in each rotating cell is solved using the
rotating reference frame equations. The approach does not account for the relative motion of the
adjacent domains of simulation (which may be moving or stationary), the mesh remains fixed for
the computation. This is equivalent as freezing the motion of this rotating domain in a specific
position and observing the instantaneous flow field around a solid body in a particular position (a
propeller for instance) . Hence, the method is often referred to as "frozen rotor approach" in the
literature.
In the motion history the rotation variable ( Rz0) will be reflected as zero, but the angular velocity
variable ( dRz0) will contain the correct rotation speed.
Even if this approach is an approximation, it can provide information of the flow for many
applications. For instance, the method can be used for propeller applications in which the hull/
pod and propeller interaction is relatively weak, and the flow is relatively uncomplicated at the
interface between the moving and stationary domains. Another potential use of the method is to
compute a flow field that can be used as an initial condition for a transient sliding grid calculation,
such as a self-propulsion simulation for instance: during the first phase of the simulation, the
method can be activated in the domain of the propeller until the ship equilibrium is found. The
method should be then deactivated in a restart simulation to apply the standard guidelines for ship-
propeller interaction with sliding grids.
When using the Rotating frame method in mono- fluid configuration (such as an open water
simulation), an unsteady computation is required to be able to apply the motion parameters to the
body. Nonetheless, no time accuracy requirement is present here. A large time step value together
with a reduced number of non-linear iterations comparing to the standard approach are recommended.
This method is not aimed for the propeller-hull interaction tasks, counter-rotating and contra-rotating
propellers.
A ducted propeller can be performed using this method as well. The mesh contains one domain
and two bodies (the propeller and the duct). The rotational speed is imposed on the propeller and
the ducted is fixed (v=0). The entire mesh rotates but the solver corrects the velocity on the duct.
When RFM is active the resulting forces and moments will be given in the body frame, regardless of
the option chosen in Outputs > Force decomposition.
To control the behavior of the grid deformation independently from the fluid boundary conditions,
Expert parameters for the Boundary conditions for grid deformation are presented. In simple
words, applying available conditions for grid deformation will control the way the boundary
nodes are going to move when the mesh deformation is used, independently of the rigid motion.
With weighting deformation technique, it only have an effect on the boundary condition which is
applied when computing the weighting coefficient.
Up to Fine Marine v2.3, the boundary conditions of the grid deformation are equal to the boundary
conditions related to the computation of the weighting coefficients and the fluid boundary conditions
are linked together.
FIGURE 12.10
Boundary conditions for grid deformation
The boundary condition Free corresponds to Neumann conditions; No- slip for Dirichlet
conditions; Bottom (shallow water) for shallow water condition; Mirror condition supports
mirroring of the mesh deformation.
With this new functionality, all the patches (including SOL, EXT and FNMB) need to have a non zero
digit for the regridding boundary condition.
To track the position of the interface (air/ water) usually a Dirichlet boundary condition for the
mesh deformation PDE's is used. In terms of interfaced parameters here the No-slip condition
should be reasonable to be applied to the External boundaries, but not on Solid walls.
Fixed boundary conditions (No-slip) include vertices on the mesh that the user wishes to hold still
during the whole session while free boundary condition (Free) includes vertices that the user
wishes to be modified through the simulation. The rest are free vertices whose positions and local
frames are indirectly controlled by both types of boundary conditions. Vertices in fixed boundary
conditions should have the identity matrix as their local transform.
This menu is available for each selected domain in case no body and no links of sliding patches
are defined. Cardan angles for motion reference axis and DOF motion definition options are
presented here, with the motion types available: FIXED and IMPOSED.
When the d.o.f. is selected as Imposed, the box "Reference Point" will appear in the Body motion
menu.
When the user has defined at least one d.o.f. as Imposed, the Fine Marine GUI will generate a
new "Virtual body" by assigning a new index of body for all EXT patches of the domain.
If no EXT patches are presented in the domain, a warning "Impossible to associate a motion to the
domain since no EXT patch is present" will appear.
The General option Activate Cardan angle is presented to manage the motion of bodies (real or
"Virtual") and to control the motion of domains.
INITIAL SOLUTION
A Fine Marine computation is starting from an initial solution. The following initial solution types are
available:
l uniform values,
l from file.
Each of these types is described in the next sections. The initial solution is set for the complete
computational domain. It is not possible to define different initial solution types for different parts of
the domain.
In this section
13.1 Uniform Values 393
13.2 Restart from a Previous Computation 397
When selecting Uniform values on the Initial Solution page, the physical values used for the initial
solution can be modified as shown in the following figure.
FIGURE 13.1
Constant initial solution
The physical values are uniformly used as initial solution over all the domain, except on the
boundaries.
Initial velocity
The variables for which initial values need to be specified are the Initial velocity components.
Turbulent quantities
By default, the initial turbulent quantities are automatically computed by the interface and then
by the solver. They depend on the fluid(s) parameters and the flow model characteristics. They
can also be initialized with custom values, by selecting the Constant Value option in the drop-
down list related to each turbulent quantity:
The available turbulent quantities will depend on the turbulence model chosen.
It is also possible to define the initial turbulence level by activating the Turbulence level
initialization button. The list of initial turbulent quantities is the following one:
κ = Turbulent kinetic energy (K-ω and K-ε models only),
The turbulence level, noted a, is used to define the turbulence velocity scale noted Vs with the
formula:
with Vref the reference velocity defined in the Flow model menu.
The turbulence length, noted Ls, corresponds to a reference length for the turbulence initialization.
It can be different from the reference length defined in the Flow model menu.
νt
Interface position
For a multi-fluid computation, the interface position must also be defined and will be displayed in
the graphics area.
The initial free surface is imposed along Z-axis for 3D simulations and Y-axis for 2D simulations.
Only a Z constant line can be defined through the interface. To create an user defined free surface
location, it is possible to edit the FORTRAN program provided in the Fine Marine package.
A more extensive way of prescribing initial conditions in the whole domain using an initialization
program is described in "Flow Field Initialization Program" (p. 792).
There are several common scenarios that require restarting a simulation: when it has stopped
unexpectedly, when it should run longer than initially foreseen or to assess more or different
physics compared to the on-going simulation.
The workflow is the following:
l Select the computation to restart in the list of computations.
l Use the New button to create a new computation: all settings will be copied from the first
computation.
l In the Initial solution menu, activate the button Restart from previous computation. The
possible computations to restart from are available in a drop-down list.
FIGURE 13.2
Restarting from a previous computation
l In the Control variables menu, adjust the Number of time steps to the value needed in this
second computation.
Fine Marine also offers the possibility to perform a restart from a different project. If this option is
selected, the solution obtained in a preliminary computation on its corresponding grid will be
interpolated to the current grid. This interpolated solution is subsequently set as an initial condition
for the current computation.
FIGURE 13.3
Time savings obtained when using the grid-to-grid approach on demo case 3.
There are various scenarios that benefit from such a multigrid set-up:
l Standard resistance computations
l Self-propulsion computations with sliding grids for rotating propellers
l Bare and appended hull versions of the same geometry.
As a large part of the total computation time is performed on a coarser grid with significantly
fewer cells, the reduction in CPU time ranges from 30 to 60%; depending on the application.
l Restarting from a different project requires both geometries and flow physics to be similar. The
option is therefore ideally suited for various types of resistance/ self-propulsion computations and
has been tested for these applications specifically. A peak in the output may occur for larger
geometrical deviations, e.g. when performing an appended-hull restart from a bare hull.
l At least partial convergence should have been achieved on the first computation before
performing the restart. This implies that any acceleration should be over before the restart is made.
l The convergence history should be appended in the restart computations.
l In order to avoid any errors during the interpolation process, it is important that the meshes used
for both projects are placed in separate _mesh folders.
l Restarting from a different project is not compatible with using Adaptive Grid Refinement
(AGR) for the free surface refinement (e.g. in overset grids). The additional cells created
by AGR on the coarse grid will not be copied to the fine grid during the interpolation.
Trying to perform such an interpolation for cases with AGR on the free surface may
therefore lead to the decompression of the free surface and the divergence of the
computation.
l The number of bodies in both projects needs to be identical for the grid- to- grid
interpolation to work.
Setting up such a multigrid project differs slightly from the standard restart procedure:
l Instead of creating a new computation within the same project by copying the old
computation, the easiest way is to duplicate the original project,
l subsequently creating the second mesh and changing the necessary computation parameters.
l By checking the check box for From a different project (grid- to- grid interpolation
needed), the drop-down list of computations to restart from is changed into a file chooser.
l The path to the .sim file of the original computation is then automatically inserted once it has
been selected in the file chooser.
A. Best practices
Resistance computations
Coarse grid
The ship is supposed to reach the final speed on the coarse grid, avoiding the passing the
acceleration ramp on the fine grid. The computation settings on coarse and fine grid should be
equal, except for the following deviations from the general guidelines:
l Number of time steps: 2*acceleration time
l Convergence booster: Active
l Convergence checker:
l Stability interval: 10%
l Average last: 10%
l Tolerance: 5%
l Check after: 200 time steps
Fine grid
The second computation starts from a (partially) converged computation on the coarse grid. The
computation continues until convergence is reached at the 1% level on the fine grid.
Self-propulsion computations
FIGURE 13.5
Grid-to-grid approach applied to a self-propulsion case (Advanced tutorial 2).
Coarse grid
The methodology for this scenario is slightly different as both the bare and appended hull
computations should be fully converged.
All patches belonging to the ship (including all appendages) should be grouped defined as a single
body for the appended hull computation.
Bare hull
The bare hull computation can benefit from the convergence booster, but the other settings are the
default ones.
l Number of time steps: 4*acceleration time
l Convergence booster: Active
l Convergence checker:
l Stability interval: 10%
l Average last: 10%
l Tolerance: 1%
l Check after: 100 time steps
Appended hull
The computation with the appended hull uses the result for the bare hull as an initial condition.
The convergence booster is therefore not necessary. The other settings are identical to the bare
hull computation.
l Number of time steps: 4*acceleration time
l Convergence booster: Disabled
l Convergence checker:
l Stability interval: 10%
l Average last: 10%
l Tolerance: 1%
l Check after: 100 time steps
Ideally, the fine mesh is created first following the respective guidelines for the project set-up. The
coarse mesh is then created starting from the fine mesh, following the guidelines below for every
domain in the mesh:
l Initial mesh: Halve the number of cells in each direction. Round the number up in case of an
uneven number of cells in the fine mesh.
l Adapt to geometry: Reduce the global diffusion by two levels to maintain similar refinement
zone topology.
l Viscous layers: Maintain the same settings for both grids.
For many cases, the above suggestion will lead to a correctly generated mesh with about 5 times less
cells than the fine grid. In cases with more complex geometries, it may happen that snapping failure
occurs. If this happens, usually a local increase of the adaptive refinement on the problematic patch
will resolve the issue. This is particularly the case if very small parts of appendices (e.g. hub caps) are
meshed separately. Alternatively, the initial number of cells in a certain direction can be increased by
one or two to facilitate the correct capturing of the geometry (e.g. when the amount of cells in a
particular direction is very low).
To restart from a previous solution, it is required that some solution files (e.g. the simulation
definition file with extension .sim) are already present. See "Backups" (p. 677) for the complete
list of mandatory files.
The eff_*.dat, Mvt_BodyName.dat and body_param.dat files contain respectively the global
fluid forces, the body motions and the data related to the body. They also have to be present in the
computation folder to make a restart.
The check button Append convergence history can be selected. If selected, the convergence
history file, containing all the residuals from the previous computation, will be used as the initial
conditions of the new computation. The new residuals will be calculated with respect to the last
iteration of the previous computation and will be appended to the convergence history file. This
also goes for the efforts (eff*.dat files) and the motions (Mvt_BodyName.dat file).
For instance, it is possible to gradually increase the imposed velocity after a first run at a lower speed,
see Imposed Law of Motion to know how to change the velocity.
ACTUATOR DISK
An actuator disk approach is implemented in Fine Marine to take into account the effect of a propeller.
The first sections will describe the necessary inputs to perform a computation with one or several
actuator disk(s). The next ones propose some descriptions of the different features in details.
In this section
14.1 Definition 407
14.2 Properties 416
14.3 Best Practice on Actuator Disk Capabilities 419
14.4 Basic Equations 422
14.5 User-defined force distribution (ad_forces.f90) 423
14.6 Propeller code coupling (ad_propeller_code.f90) 429
First of all, it is necessary to activate the Actuator disk feature by clicking on the Activate
Actuator Disk menu.
FIGURE 14.1
Actuator disk activation menu
As soon as the model is active, the computation will contain at least one Actuator Disk.
FIGURE 14.2
Actuator Disk default parameters
Fine Marine allows to define how the body forces will be acting on the Actuator disk. When
Body force update is active, the following options are available:
FIGURE 14.3
Body force update selection menu
The first one defines a prescribed interval for the force update with the parameter named
Frequency which can be function of the number of Time steps for an unsteady computations or
the number of Iterations for a steady computation.
The next paragraphs explain the different types of body force update.
Body drag
The Thrust of the Actuator Disk is automatically updated during the computation such that it
ensures the equilibrium of the forces in X-direction at a prescribed interval in a manner of Thrust
= (Σ External forces - Drag). External forces can be the constant wrench, the mooring and
tugging lines or dynamic libraries for the external forces. If Body force update is set not active,
the value of the Thrust during the computation will equal the one specified in the interface.
If no external force is imposed on the body, the update will simply impose Thrust=Drag in absolute
value.
For the BODY DRAG type of force update it is possible to define the Force distribution with
the following options:
l DEFAULT: If the center of the mesh control volume is located inside the actuator disk, then,
the actuator disk body force assigned to this control volume will be equal to the force density
at the center of the control volume times the volume of the control volume. Body forces are
uniform in angular direction but changes in radial direction with the DEFAULT law.
l UNIFORM: uniform force distribution inside the actuator disk.
l USER-DEFINED : the user can provide his own body force distribution by using user
defined dynamic library (a complete description of the dynamic library is given in the "User-
defined force distribution (ad_forces.f90) " (p. 423) section).
It allows to read external open water data to balance the force between the actuator disk and the
linked body. The user has to provide .dat file containing the Thrust, Torque coefficient and the
efficiency with regard to the Advance ratio. Below is an example of the required format for the
open water data file.
If the Thrust and Torque are out of the range of values given inside the open water performance data,
the solver will use the extreme values so that no extrapolation is performed, only interpolation within
the provided range of values. Hence, for the particular case of the bollard pull, values for J=0 (or
close to J=0) should be given as well.
The user can give Kq or 10Kq in the open water .dat file. If the maximum value for all imported Kq
values is higher than 0.2 the solver will assume that 10Kq is given. A message will be printed in the
.std file to confirm.
When OPEN WATER DATA is selected, new entry appears in the Actuator disk properties
menu and allows to specify the path to the .dat file in the Open water data menu.
By default the file chooser is filtered to .dat file format. As the forces are updated, the Thrust and
the Torque are disabled.
Another option is available for the OPEN WATER DATA - Revolution rate with the
following options:
FIGURE 14.6
Revolution rate selection menu
When the User imposed is selected, the entry to enter the value in [RPS] appears below the box.
FIGURE 14.7
User impose value for Revolution rate
When Revolution rate is set to 0 it means that it will be solved, whereas if it has a non-zero value
- it is considered as prescribed. The User imposed option can be used to solve the body velocity.
When multiple actuator disks are defined within the same computation, and the revolution rate
(along with thrust and torque) is updated automatically for each of these disks, the RPM of all
disks will be assumed to be the same.
Wageningen B-series
When OPEN WATER DATA is selected, a new button Wageningen B-series appears in the
Actuator disk properties, next to Open water data. By clicking on this button, a new interface
is open in order to edit the B-series parameters, such as geometrical properties of the propeller and
the name of the .dat file.
Once all inputs are edited, the button Show curves allows to display the performance curves of
the propeller.
FIGURE 14.9
Example of generated curves
with:
l the chord length at 0.75R
The Wageningen B-series open-water data is only valid for non-ducted propellers.
l The expanded area ratio varies over a certain range, given by:
Propeller code
Here the body forces will be determined by an external propeller code (usually a potential code)
provided by the user through a dynamic library. A RANSE potential code coupling approach
contains following steps:
More information can be found in the "Propeller code coupling (ad_propeller_code.f90)" (p. 429)
section.
When Body force update option is used, the vessel must advance in the X-direction in the primary
frame, since the update is based on force balancing in that direction.
Activate tangential force controls whether the tangential force is activated or not in the
computation. It is not necessary to activate the tangential force to obtain a good prediction of the
resistance.
Half boat simulation with an Actuator Disk in the middle of the symmetry plane are possible as long
as the Activate tangential force option is not active.
Ramp start time: absolute time in seconds at which the ramp begins. If the ramp duration is set to
0, the actuator disk start is simply delayed.
Ramp duration: duration in seconds of a linear ramp to go from zero to the required thrust. The
default value 0 means there is no ramp.
The Show/Hide button will display the Actuator Disk definition in the graphics area. These values
and their representation take the Cardan angles into account.
Ramp duration and start time are common to all actuator disks in the computation.
14.2 PROPERTIES
l Impose power: in case of body force update option is active using the open water data, if the
propeller revolution rate is not defined and the power value is higher than 0.001. Then the
actuator disk will operate with this prescribed power. It corresponds to , n being the
revolution rate and Q the torque. It is the power delivered at the shaft after the gear box.
l Thickness of the propeller: virtual thickness of the propeller along the shaft direction.
The best practice is to impose the thickness of the real propeller, usually a tenth of the outer
diameter.
l Inner Radius, Outer Radius: respectively the inner and the outer radius of the propeller.
When the shaft or hub is present in the simulation, the value of inner radius must ensure that the
actuator disk does not intersect any solid patch.
l Inflow plane distance: distance between the inflow plane and the center of the propeller.
This plane should not be located inside a rotating domain. The best practice is to define the inflow
plane at some distance from the region where the body forces are added (so at some distance from
the actuator disk), so that it doesn't induce errors. One can usually consider the distance equal to a
fifth of the actuator disk outer diameter as a good choice if it is not already in the boat.
in case the Body force update option is not used the shaft direction is not strictly defined.
Otherwise, the direction is aligned with the imposed forward direction of the body (typically the
X-direction is applied).
l Linked to body: name of the body which the propeller is attached to, see "Body Definition"
(p. 307) to know how to create a body. The actuator disk does not necessarily touch the body.
FIGURE 14.10
Representation of the actuator disk parameters
FIGURE 14.11
Disks list
The actuator disk approach consists in adding a source term of forces field in the Navier Stokes
equations in order to take into account the propeller effects. Nevertheless, this method is
approximate and all the propeller effects will not be computed with precise details.
The most precise results can be obtained by using the Thrust and Torque capabilities. These
values should be specified through the page Actuator Disk, see Special Characteristics
In reality, the thrust is unknown because it is depending on the flow behavior. However, once a
steady velocity is reached, the thrust is equal to the drag. That is the reason why it is possible to
activate the option Self Update. With this option, the code will automatically update the intensity
of the thrust at the given frequency by the intensity of the drag.
For instance, let's define the following variables:
l Thrust: T
l Initial thrust: T0
l Torque: Q
l Initial torque: Q0
For instance, if T 0 = 1N and Q 0 = 0.3Nm or T 0 = 100N and Q 0 = 30Nm as initial input values,
the results will be the same. Only the ratio is important as demonstrated by the above equation.
If the propeller torque Q 0 is not known, it is however possible to estimate its magnitude from open
water test of the propeller.
If there are several actuator disks with "body force update", the proportion in thrust is set by the
initial Thrust value in the interface. For example if in the interface Thrust(AD1) = 0.5, Thrust(AD2)
= 0.25 and Thrust(AD3) = 0.25, the actuator disk 1 will give 50% of the thrust and actuator disks 2
and 3 will give 25% each.
The following advices are written to avoid additional numerical difficulties and to control the
computations.
Rigid motion
In case of rigid motion, it is recommended to activate the actuator disk in a restart computation
from a previous converged solution without the actuator disk.
When using Cardan angles, all parameters should be given in primary frame (see Cardan Angles).
If one needs to perform a computation with different Cardan angles, the only thing to do is to
regenerate a mesh and change the Cardan angles. Parameters for actuator disk remain unchanged.
Body motion with an high angle compared to 0 along X- direction are not allowed as long as the
"body self update" option is used, since we assume the boat is moving in the X-direction. This can
cause problem with gyration motion or boat going to Y-direction. However, for Y-direction motion,
one can define a Cardan angle of 90deg.
To simulate an azimuth thruster the actuator disk can rotate during a computation. The following
set up needs to be used:
1. In Body definition create a frame body using Create frame
2. In Body motion, link the frame body to the vessel with a pin connection. Define its rotation
axis and motion law: this frame body serves the function of a virtual pod.
3. In the actuator disk menu use Link to body to link the actuator disk to the frame body.
In this case the refinement sector in the actuator disk location should be enlarged to cover the area
where the disk will move during the computation.
Make sure the actuator disk does not intersect any solid bodies with the motion law defined.
l It is recommended to generate a mesh with a fine enough grid density inside and near the
actuator disk. In practice, 20 cells in the thickness of the disk are recommended and the
number in the radial direction can be chosen to create isotropic cells. In other words, based on
They represent body forces per unit volume normalized by ρU²/L where U is the reference
velocity, L is a reference length, and ρ is the fluid density. Coefficients are expressed as:
Integration of the body forces over this analytical volume exactly recovers the prescribed thrust T
and torque Q:
The ad_forces.f90 dynamic library can be used to define a custom body force distribution. This
force distribution is assumed to only vary in radial (r) and tangential (θ) directions and is constant
in the axial direction. The values can either be specified directly or interpolated from a (externally-
defined) table. While specifying the custom normal (Fni) and tangential (Fti) body forces, it
should be taken into account that the integration of Fni and Fti has to roughly correspond to
respectively the imposed thrust (T) and imposed torque (Q ). The integration is performed as
detailed by the following equation:
FIGURE 14.12
Inflow plane to the propeller
FIGURE 14.13
GUI settings when using the ad_forces.f90 dynamic library
Assuming first-quadrant propeller operation, the thrust specified in the GUI should be strictly
positive. The sign of the specified torque depends on the desired rotation direction of the
propeller. The RPM specified in the GUI only influences the calculation of the nondimensional
propeller characteristics Kt, Kq and J.
The ad_forces.f90 template that is detailed below can also be found in the _data/isis/dynamic_
lib/ path inside the Fine Marine installation folder. When this file is modified, replacing the imp_
eff_dyn.f90 inside the folder by the ad_forces.f90 completes the change.
A. Main variables
Within the main variables of the dynamic library, only the output variables should be modified
when imposing a custom distribution:
l Input variables:
l T_imp: Imposed thrust
l Q_imp: Imposed torque
l Rin: Inner radius of the actuator disk
l Rout: Outer radius of the actuator disk
l Ri: Radial position of the current point
l Angle: Angular position of the current point
l Output variables:
l Fni(Ri,Angle): Imposed normal body forces
l Fti(Ri,Angle): Imposed tangential body forces
If more than one actuator disk is defined, a different partition is assigned to each actuator disk.
Thrust and torque values can be imposed to the separate disks, which can be done using the loop
in the example for two disks below.
if (mybloc.eq.1) then
idisk=1
T_imp(idisk) = ...
If everything is correctly defined, the following output will be displayed in the .std file
Actuator disk : 1
Imposed thrust : 377.100000000000
Imposed torque : 16.7000000000000
The propeller is located in the domain and full propeller thrust is applied to the body shaft.
Propeller : 1
Thrust after integration: 364.130762172498
Expected thrust : 377.100000000000
Thrust will be adjusted.
Propeller : 1
Corrected thrust : 377.100000000004
Total thrust for the disk 1 (along the shaft axis)
377.100000000004
It can be noted that the thrust after integration (364.13 N) does not fully match the
imposed/expected thrust (377.1 N) and is scaled up to match the imposed thrust. If this difference
is too large (larger than 20%), the solver will stop and print the message:
Thrust does not match the body force.
The dynamic library can be compiled by following the procedure outlined "Procedure" (p. 816).
The radial body force is not taken into account in the current implementations.
14.6.1 Definitions
Data exchange between Fine Marine and the potential code is done on a local cylindrical
coordinate system linked to each propeller. This local coordinate system does not move with the
boat, nor rotate with the propeller. The origin of this local coordinate system is defined at the
center of the propeller. The axial direction of this coordinate system is aligned with the axial
direction of the propeller pointing from the boat to the wake. Facing the boat, counterclockwise
direction is the positive angular direction. The radial direction is pointed outward. The angle
ranges from 0 at y=0 to 2π (included).
A uniform grid in this cylindrical coordinate system is generated at a prescribed distance in front
of the propeller to provide the inflow condition to the potential code (see figure below). The axial,
tangential and radial velocity components are provided to the potential code with a three-
dimensional array Va(i,j,k), Vt(i,j,k) and Vr(i,j,k). The first index i ranges from 1 to nr (variation in
the radial direction). i=1 is located at Rin , the radius of the propeller shaft. i=nr is located at Rout ,
the outer radius of the propeller blade. The second index j ranges from 1 to nt. It is the variation in
the circumferential direction (tangential). At j=1, the angle is zero, while at j=nt , the angle is 2π.
nr and nt are controlled by the expert parameter ActuatorDiskInternMeshDim_. The last index
k ranging from 1 to ndisk is the index of the propeller. The reference 0 angle is located at 0
o'clock as illustrated on the figure by the red line in the disk. Additional information defined in the
reference frame such as the center of the propeller (Xdisk,Ydisk,Zdisk) and the inflow plane
(Xdisk_wake,Ydisk_wake,Zdisk_wake), the shaft direction (ADnx,ADny,ADnz), the Cartesian grid
of the inflow plane (x_wake,y_wake,z_wake) and the Cartesian velocity component at the inflow
plane (u_wake,v_wake,w_wake) etc. are provided for user's convenience. They are not mandatory
for the propeller code.
B. Force definition
The body force is the force acting on the fluid. Hence, the axial force should be positive. Radial
body force is not taken into account in Fine Marine. Those body forces are distributed inside a
cylindrical volume with a prescribed thickness.
A grid identical to the inflow grid is located at the center of the propeller and used to represent the
body force computed by the propeller code. The axial body force distribution fa and tangential
body force distribution ft defined at each node of this grid need to be provided by the potential
code to Fine Marine.
The force distribution should be defined such that integration of the forces on the actuator disk
plane represented by this grid provides the propeller thrust T and torque Q, namely
The grid representing the inflow plane is moved in the computational domain according to the real
position of the propeller. The position of the propeller in the computational domain is defined by
the position of its center and the normal vector (nx,ny,nz) pointing from the boat to the wake. The
virtual propeller with its inflow plane is first translated to its real position at the computational
domain. Then, a first Cardan rotation around the Z1 axis with an angle of rotation equal to atan2
(ny,nx) is performed, (X1,Y1,Z1) being the Cartesian coordinate system on which the
computational grid is defined. After this rotation (see figure below), the new axis X2 is aligned
with the normal vector (nx,ny,nz) projected into the X2-Y2 plane. A second Cardan angle rotation
around the Y2 axis with an angle of rotation equal to:
will place the propeller together with its inflow plane in their final position.
FIGURE 14.15
Cardan angle rotation
The flow solver can handle any number of boats (limited to 99) with any prescribed and/or solved
motion. An arbitrary number of propellers can be attached to each boat. Paralleled computation
with adaptive mesh refinement and automatic load balancing is fully supported. Each block
interpolates the velocity at the inflow plane located at a prescribed position in front of the
propeller for all points at the inflow plane found inside the block. The interpolated result are
collected and distributed to all blocks so that each block contains required inflow conditions for all
propellers. Those inflow conditions as well as all other information such as the kinematic for all
boats can be transferred to the potential code using a user-defined dynamic subroutine. The
potential code can be either integrated directly into this dynamic subroutine, or launched from it
using a system call. Data exchange with disk files will be necessary in the last case. The user-
defined subroutine can manage freely the computation for all propellers at each block. It is not
necessary that all blocks perform all computations for all propellers. The first bloc performs the
BEM computation for the first propeller, the second bloc performs the computation for the second
propeller, etc. If you have 3 propellers and use only 2 blocs, then, it is the first bloc that performs
the BEM computation for propeller 1 and 3 propeller.
The propeller code must provide the propeller thrust T_imp and torque Q_imp, as well as the
propeller rate of revolution An_ imp if the propeller code adjusts the revolution rate of the
propeller. Values specified by the user for T_imp, Q_imp and An_imp are also provided as input
data through the actuator disk menu, to be used by the propeller code. It is the propeller code
which should decide how to use them for the 2D code. In the 3D propeller code, the choice
between a prescribed and updated propeller rate of revolution is controlled by the imposed_n and
imposed_P parameters.
Two different scenarios can be distinguished:
1. In a computation with prescribed propeller rate of revolution for example, An_imp will be
considered as the prescribed propeller rate of revolution and the propeller code will not change
this value. User is free to choose its unit (RPS for instance). The input values for T_imp and
Q_imp will not be used by the propeller code. However, they must contain the output results
obtained by the propeller code.
2. In a computation with a self-updated propeller rate of revolution, T_imp can be considered as
the expected propeller thrust, An_ imp can be considered as the estimated initial rate of
revolution. The propeller code must adjust the propeller rate of revolution to obtain the
expected thrust T_imp and provides the resulting torque Q_imp and rate of revolution An_imp.
The input value Drag_total is designed for a self-propulsion computation. In such a computation,
we assume that the boat advances in the X-direction in the primary frame aligned with the axial
direction of the boat. Drag_total is the projection of all forces acting on the boat except those of
the propeller on the X-direction of a coordinate system fixed to the center of gravity of the boat,
following the same translation motion with it, and rotates only with the Rz0 axis. In a self-
propulsion computation, the thrust of all propeller attached to the boat projected in the same
direction should be in balance with Drag_ total. Such projection can be computed with the
following program:
The objective of a self-propulsion computation is then to adjust the rate of revolution of An_imp
in such a way that the Fx_total computed with the above formula using the resulting propeller
thrust T_imp predicted by the propeller code satisfy the relation Drag_total = Fx_total for all
boats.
There are two provided propeller code files: ad_propeller_code.f90 and ad_propeller_code_
3d.f90. The latter has been developed more recently to allow an axially-varying distribution of the
body forces and velocities and incorporates a set of additional parameters. Unless a 3-dimensional
variation of the inflow velocities or body forces in the propeller plane needs to be taken into
account, users are recommended to use the 2D ad_propeller_code.f90.
Both files can be found in the _data/isis/dynamic_lib/ path inside the Fine Marine installation
folder. When the propeller code file is modified, replacing the imp_eff_dyn.f90 inside the folder
by the ad_propeller_code(_3d).f90 completes the change.
A. Code variables
The available variables are classified as input and output variables. Only the output variables are
passed back to the Fine Marine solver.
l Input variables:
l ndisk: number of propellers
l nr: number of points in radial direction for the inflow plane
l nt: number of points in tangential direction for the inflow plane
l AD_Body_number: body index to which the propeller is attached
l ua_wake,ut_wake,ur_wake (nr,nt,ndisk) double precision array. Axial, tangential and radial
velocity components at the inflow plane for each propeller
l x_wake,y_wake,z_wake: (nr,nt,ndisk) double precision array. Location of the inflow planes
in the reference frame fixed to the boat
l u_ wake,v_ wake,w_ wake : (nr,nt,ndisk) double precision array. Cartesian velocity
component of the velocity vector with respect to the reference frame fixed to the boat
l Xdisk,Ydisk,Zdisk : center of propeller in the reference frame
l ADnx,ADny,ADnz: shaft direction in the reference frame
l Xdisk_ wake,Ydisk_ wake,Zdisk_ wake : location of the center of inflow plane in the
reference frame
l ADnx_c,ADny_c,ADnz_c: shaft direction at current position
l Rin,Rout: inner and outer radius of the inflow plane
l Drag_total : total forces in ship advancing direction to be balanced with propeller thrust.
See explanation above.
l mybloc, nbody, ID_Body, tc, CGref_R0, CGtc_R0 and Theta1tc are the same arguments as
found in the imp_eff_dyn.f90 user defined dynamic library allowing user to determine the
current position as well as the motion of the boat (see User-Defined Programs).
l Output variables:
l Fa_Pcode,Ft_Pcode,Fr_Pcode (nr,nt,ndisk) double precision array. output body forces
(axial, tangential and radial components)
l T_imp,Q_imp,An_imp: output propeller thrust, torque and rate of revolution
The skeleton for the user-defined propeller code dynamic library is given below. The Fa_Pcode
and Ft_Pcode distribution given below, correspond to the default force distribution law used in
actuator disk computations. It is provided for illustration purpose only, since the resulting body
forces do not depend on the inflow velocity as they should for a true propeller code.
The non-linear iteration number itnl and current time step itt are not passed to the ad_propeller_
code.f90 dynamic library. To be able to use both numbers as a variable, a second dynamic library
that is called at every time step ( imp_ eff_ dyn.f90 ) should be compiled alongside the ad_
propeller_code.f90 dynamic library. The compilation procedure for multiple dynamic libraries is
described in detail "Procedure to COMBINE several dynamic libraries at the same time" (p. 822).
The supporting dynamic library (with itnl and itt) should contain the following lines:
common/mydata1/itnl_save
integer itnl_save
double precision,save::t_last=0.0
integer,save:itt=0
common/mydata1/itt_save
integer itt_save
if(abs(t_last-tc).gt.1.0d-6) then
t_last=tc
itt=itt+1
end if
itnl_save = itnl
itt_save = itt
while the ad_propeller_code.f90 should contain the following:
common/mydata1/itnl_save
integer itnl_save
common/mydata1/itt_save
integer itt_save
The itnl_save and itt_save parameters can subsequently be used as the itnl and itt would.
D. Code variables
The available variables are classified as input and output variables. Only the output variables are
passed back to the Fine Marine solver.
l Input variables:
l mybloc : index of the current computation bloc
l nbody : number of defined bodies in the simulation
l ID_Body : input = body flag index in the .bcs file
l tc : current time
l CGref_R0 : Center of gravity of the body indexed ip_body in the reference configuration
l CGtc_R0 : current position, velocity and acceleration of the current body indexed by ip_
body
l Theta1tc : Cardan angles and their successive derivatives of the current body indexed by
ip_body
l Drag_Total: All forces acting on the body except propeller forces (see explanation above)
l Xdisk,Ydisk,Zdisk: Center of propeller in the reference frame (the position at the original
mesh)
l Xdisk_c,Ydisk_c,Zdisk_c: Current position of the center of propeller
l Xdisk_wake,Ydisk_wake,Zdisk_wake : Center of the inflow plane in the reference frame
l ADnx,ADny,ADnz: The direction of propeller axis (pointed to the wake) in the reference
frame
l ADnx_c,ADny_c,ADnz_c: The current direction of propeller axis
l Rin,Rout: The inner and outer radius of the propeller
l x_wake,y_wake,z_wake: 2D mesh at the inflow plane in the reference frame used to define
the inflow velocity.
l u_wake,v_wake,w_wake: Cartesian velocity components at the inflow plane defined in the
reference frame
l ua_wake,ut_wake,ur_wake: Cylindrical velocity components at the inflow plane
l ndisk: Number of propellers
E. Code skeleton
The code skeleton for the 3D version of the propeller code coupling is given below. Again, the
implemented force distribution is provided only as an example and should be modified to include
the propeller code output.
Subroutine ad_propeller_code_3d &
(mybloc,nbody,ID_Body,tc, &
CGref_R0,CGtc_R0,Theta1tc, &
Drag_Total, &
Xdisk,Ydisk,Zdisk,ADnx,ADny,ADnz, &
ADnx_c,ADny_c,ADnz_c,DxD,Rin,Rout, &
Xdisk_wake,Ydisk_wake,Zdisk_wake, &
x_wake,y_wake,z_wake, &
u_wake,v_wake,w_wake, &
ua_wake,ut_wake,ur_wake, &
Fa_Pcode_3D,Ft_Pcode_3D,Fr_Pcode_3D, &
T_imp,Q_imp,An_imp, &
ndisk,nx,nr,nt,AD_Body_number, &
Xdisk_c,Ydisk_c,Zdisk_c, &
VXdisk_c,VYdisk_c,VZdisk_c, &
OmegaXdisk_c,OmegaYdisk_c,OmegaZdisk_c, &
Half_Disk, RefU, Rho_water,&
X_Pcode_mesh,R_Pcode_mesh,Theda_Pcode_mesh,Itype_mesh_Pcode,&
P_imp,P_max,imposed_n,imposed_P,&
itnl,AD_update_3D_bodyforce_distribution,&
NForce_AD,X_AD,R_AD,Theda_Pcode_AD,Fn_AD,Ft_AD,Fr_AD,&
Num_Cell_AD,Id_Disk_AD,AD_F_Water,i_reset_AD,&
Wake_Flow_Distance,Amu_Water,AD_Ramp_Duration)
!DEC$ ATTRIBUTES ALIAS:'ad_propeller_code_3d_'::ad_propeller_code_3d
!DEC$ ATTRIBUTES DLLEXPORT::ad_propeller_code_3d
implicit none
if (Itype_mesh_Pcode.eq.1.and.mybloc.ge.2) return
! if (mybloc.le.1) then
! print *,'Itype_mesh_Pcode : ' ,Itype_mesh_Pcode
! print *,'Itnl : ' ,itnl
! print *,'Update body force: ' ,AD_update_3D_bodyforce_distribution
! print *,'T_imp : ',t_imp(1)
! print *,'Q_imp : ',q_imp(1)
! print *,'n_imp : ',an_imp(1)
! print *,'P_imp : ',p_imp(1)
! print *,'P_max : ',p_max(1)
! print *,'imposed_n : ',imposed_n(1)
! print *,'imposed_P : ',imposed_P(1)
! print *,'Drag_Total : ',Drag_Total(1)
pi=3.141592653589793238462643383279502884197d0
!
! Here is an example for 3D force distribution used
! for verification only
!
if (Itype_mesh_Pcode.eq.1) then
do idisk=1,ndisk
r0=Rin(idisk)
r=Rout(idisk)
dx=DxD(idisk)
a=dx/2
hr=(r-r0)/float(nr-1)
hx=dx/float(nx-1)
k=1
do j=1,nr
rj=r0+(j-1)*hr
xb=2*a*sqrt(abs(1.0-rj/r))-a
do i=1,nx
xi=-a+hx*(i-1)
ar=abs(1.0-abs((rj-(r+r0)/2)/((r-r0)*0.5)))**0.6
rb=r*(1.0-((xi+a)/(2*a))**2)
if (abs(xb+a).le.1.0d-10) then
ai=0.0
else
ai=((0.5-abs((xi-(-a+xb)/2)/(xb+a)))/0.5)**2
end if
if (rj.gt.rb) then
Fa_Pcode_3D(i,j,k,idisk)=0.0
If everything is correctly defined, the following output will be displayed in the .std file
Actuator disk : 1
Imposed thrust : 377.100000000000
Imposed torque : 16.7000000000000
The propeller is located in the domain and full propeller thrust is applied to the body shaft.
Propeller : 1
Thrust after integration: 364.130762172498
Expected thrust : 377.100000000000
Thrust will be adjusted.
Propeller : 1
Corrected thrust : 377.100000000004
14.6.5 Compilation
The dynamic library can be compiled by following the procedure outlined "Procedure" (p. 816).
LINES
Fine Marine provides several approaches to model lines connected to a body, depending on the
application. The lines menu distinguishes between using a static, spring-analogy approach for Mooring
and Tugging lines and a quasi-static approach using the Catenary approach.
The catenary approach is available under license. To upgrade your license, please contact your local software
provider or support office.
In this section
15.1 Mooring 448
15.2 Tugging 452
15.3 Catenary approach using the Catway module 455
It is possible to compute the flow around a ship, which has docked for instance, thanks to the
simulation of a mooring line. In that case, the mooring line will be attached to the body at the
fairlead point and to the anchor point. In reality, the anchor point is in the sand, on a dock or on
an offshore platform for instance. The mooring is implemented in Fine Marine to take into
account the effect of one or several mooring lines on one or several bodies. The first section will
describe the necessary input to perform such a computation with one or several mooring line(s).
The second section details the implementation.
First of all, it is necessary to activate the mooring feature by clicking on the Activate Mooring
option. As soon as the menu is opened, the computation will contain at least one mooring line.
FIGURE 15.1
Mooring is not active
Fine Marine allows to perform computations with several mooring lines. They can be created
through the interface. For this purpose, clicking on Add will create a new line in the list. Clicking
on Remove will delete the active line and its properties.
FIGURE 15.3
Configuration with four mooring lines
The fairlead position does not have to be exactly onto the body surface. The force will act on the
body thanks to the Link to body parameter.
The initial tension in the mooring line is defined with respect to the configuration in which the body
is meshed. If initial kinematics are defined in the Initial conditions menu, they will be applied after
having computed the initial length of the mooring line. As a result, the initial kinematics will affect
the tension existing in the line at the start of the computation.
The Show/Hide option allows to display the selected mooring line in yellow in the graphics area.
FIGURE 15.4
Mooring parameters menu
When using Cardan angles, the fairlead coordinates should be given in the body primary frame
defined by the Cardan angles (see coordinate frame). If one needs to perform a computation with
different Cardan angles, the only thing to do is to regenerate a mesh and change the Cardan
angles. Parameters for fairlead coordinates remain unchanged.
The anchor coordinates should be given in the reference frame of the mesh.
Each mooring line is seen as a spring. Hence, the force of the mooring line F ML defined by the
spring can be written:
where K stands for the stiffness, ΔL is the variation of the spring length and T is the initial tension
of the mooring line.
When solving the Newton's law (i.e. for a solved motion, see Solved Law of Motion for more
explanations about this motion), this force is then taken into account:
where F is the force applied on the body, m is the mass of the body and a is the body's
acceleration.
After each time step, the tension obtained on each mooring line, will be stored in a separate file called
"tension_line.dat", available in the computation folder.
For half- body computations, the line properties should be kept the same as for a full- body
computation. However, only lines that are part of the modeled half of the domain should be defined.
The ISIS-CFD solver takes care of mirroring the efforts as if an identical line would be defined on
the opposite side of the symmetry plane for a full-body geometry. When a line is defined exactly on
the symmetry plane, this is interpreted as a single line (there is no doubling of the efforts for this
situation).
Tugging lines have been developed to give the possibility to simulate tugboats for instance in Fine
Marine or more generally any simulation which involves 2 bodies linked by one line or more.
First of all, it is necessary to activate the tugging feature by clicking on the Activate Tugging
option. As soon as the menu is opened, the computation will contain at least one tugging line.
FIGURE 15.5
Tugging is not active
Fine Marine allows to perform computations with several tugging lines. They can be created
through the interface. For this purpose, clicking on Add will create a new line in the list. Clicking
on Remove will delete the active line and its properties.
In 2D, the Z coordinates are grayed out since there are not used by the solver.
The extremities position does not have to be exactly onto the body surface. The force will act on
the body thanks to the Link to body parameter.
The initial tension in the tugging line is defined with respect to the configuration in which the
body is meshed. If initial kinematics are defined in the Initial conditions menu, they will be
applied after having computed the initial length of the tugging line. As a result, the initial
kinematics will affect the tension existing in the line at the start of the computation.
l No forces in case of compression: helps to avoid compression of tugging lines if needed. If the
option is active and while in compression, the tugging lines forces are equal to 0.
When using Cardan angles, the extremity coordinates should be given in the body primary frame
defined by the Cardan angles (see coordinate frame). If one needs to perform a computation with
different Cardan angles, the only thing to do is to regenerate a mesh and change the Cardan
angles. Parameters for extremity coordinates remain unchanged.
Each tugging line is seen as a spring. Hence, the force of the tugging line F TL defined by the
spring can be written:
where K stands for the stiffness, ΔL is the variation of the spring length and T is the initial tension
of the tugging line.
where F is the force applied on the body, m is the mass of the body and a is the body's
acceleration.
After each time step, the tension obtained on each tugging line, will be stored in a separate file called
"tension_tuggingline.dat", available in the computation folder.
For half- body computations, the line properties should be kept the same as for a full- body
computation. However, only lines that are part of the modeled half of the domain should be defined.
The ISIS-CFD solver takes care of mirroring the efforts as if an identical line would be defined on
the opposite side of the symmetry plane for a full-body geometry. When a line is defined exactly on
the symmetry plane, this is interpreted as a single line (there is no doubling of the efforts for this
situation).
The Catway cable module (developed by D-ICE Engineering) is implemented in Fine Marine to
allow the simulation of more complex mooring set-ups in the marine environment using the
catenary approach. The catenary approach implemented in this Catway module allows fully three-
dimensional set-ups.
The catenary approach offers the user a higher degree of accuracy compared to spring-analogy
when dealing with moored vessels or offshore structures by using a quasi-static approach to
determine the tension forces in each line. Lines are defined between two nodes and can either be
fixed in the domain (e.g. on the seabed) or linked to a body. Multiple lines can be defined,
allowing a large range of applications to benefit from using the catenary approach. The first
section contains information on the general set-up of the catenary lines, which is followed by a
more detailed description of all required user-inputs. The underlying physical principle with
respect to the calculation of forces on the structure is treated afterward. The last section provides
some additional advice for setting up simulations using the catenary approach.
Once the catenary approach has been activated by clicking the Activate catenary approach, a
first line will be created of which the initial properties are displayed under Lines definition.
FIGURE 15.8
Catenary approach not active.
When saving a computation for the first time with the catenary approach activated, a
computationName_catway_input.json file is created in the computation folder, containing the
input parameters for the lines specified in the GUI. At each time step, the computationName_
catway_output.json file is updated with the tension and node position for the previously defined
lines.
A small workaround needs to be used in order to apply the Catway catenary approach in monofluid
projects. The computation needs to be be set up as a multi-fluid project, but the free surface needs to
be put either above the domain (entire domain filled with water) or below the domain (entire domain
filled with air).
There are three main menus in which the user needs to define the specifics of the catenary lines.
The definition of lines is treated first, followed by the definition of material properties and the
node definition.
Lines definition
Fine Marine allows performing computations with several different catenary lines. Lines can be
added and removed in the interface, using the Add and Remove buttons. For each line, the node
locations can be shown as large yellow dots in the graphical area if the Show/Hide button is
checked.
FIGURE 15.9
Lines definition menu of the catenary approach.
The value set for the unstretched length must be at least equal to the distance between both nodes.
If the value of the unstretched length is equal to the distance between the nodes, the line will be
initialized almost completely taut. If the value of the unstretched length is larger than the distance
between the nodes, the line will be initially slack.
l Node 1 and Node 2: The endpoints of the line can be selected from a drop-down list of defined
nodes.
When the catenary approach is combined with an overset approach, the cable definitions
are less straightforward as the unstretched length cannot be smaller than the distance
between the nodes, but initial conditions in Fine Marine allow for an arbitrary positioning
of bodies in overset domains. Additionally, the initial translation of the overset bodies
should not be larger than the reference length of the vessel due to a current limitation of the
calculation of the cable end points for very large initial translations.
If larger initial translations or shorter cables are needed than what can be specified in the
GUI, users should manually edit the catway_input.json file for the respective cable. The
body-attached node position should be calculated based on the original body position in the
mesh plus the additional rotations/ translations specified in the GUI.
l Number of points for post-processing: This number defines the amount of points that are used
for the visualization of the line in the post-processing step.
The number of points for post-processing can be increased if the lines should be rendered more
smoothly in Cfview. As the position and tension of each of these points is written to a file at every
time step, however, this will increase the size of the computation on disk.
Materials definition
Fine Marine allows defining several materials, which can be shared by multiple lines. Materials
FIGURE 15.10
Material properties menu of the catenary approach.
The tangential and normal drag coefficient are currently disabled as the current version is
limited to a quasi-static formulation of the catenary equation solver.
Nodes definition
As for lines and materials, nodes can also be added and removed using the Add and Remove
buttons.
For nodes that are not linked to a body (e.g. anchors on the seabed), it is possible to define the
coordinates outside the computational domain.
As line definitions are dependent on node and material definitions, it is not possible to delete
nodes and materials if they are still used by a line. As a consequence, lines should be deleted first
if the respective material and/ or nodes are to be deleted.
The boundary conditions at the boundary nodes of the catenary lines are comparable to a hinged
support; i.e. all translations are restricted, but rotations are allowed.
The main difference between the static approach (using mooring/ tugging lines) and the catenary
approach, is that the weight of the line is taken into account for the latter. The equilibrium shape
of, and tension in the line are determined by solving the catenary equation. This equation
determines the shape of the line based on the specified mass and stiffness properties, unstretched
length of the line and the end node positions.
For half- body computations, the line properties should be kept the same as for a full- body
computation. However, only lines that are part of the modeled half of the domain should be defined.
The ISIS-CFD solver takes care of mirroring the efforts as if an identical line would be defined on
the opposite side of the symmetry plane for a full-body geometry. When a line is defined exactly on
the symmetry plane, this is interpreted as a single line (there is no doubling of the efforts for this
situation).
The forces exerted by the line(s) on attached bodies and the node positions are calculated at every
nonlinear iteration within the solver.
Communication between the Catway and ISIS solvers is done through the computationName_
catway_ output.json file. The Catway solver provides the tensions at the end points to ISIS
through this output file, which ISIS interprets as a single line force. This line force is then added
to the body force (as for mooring/tugging computations) and the position of the attached body is
evaluated through Newton's second law. At the subsequent time step, the ISIS solver then passes
the updated boundary node positions back to Catway.
The output file is also used for the visualization and post-processing using Cfview and the Results
Analysis Tool.
An overview of the processing of the Catway data, both input and output, can be found in the
illustration below.
l Stability of a simulation depends on the linear stiffness k (multiplied by the cable length in the
definition below) of the lines, which is defined by the Young Modulus E and the diameter d
as:
l When making an estimate of the material properties, a realistic upper limit of the stiffness
(defined here as k=EA, instead of EA/L) would be of order 10 4 . Very high stiffness values
may lead to difficulties in solver convergence. This advised value was determined during
testing and should be seen only as a first guess in case no other line data are provided.
l For most cases (e.g. decay tests and in the presence of waves), the time step will be guided by
the requirement to accurately capture other physical phenomena (e.g. the decay or wave
period). In some cases however, the time step will be determined by the stiffness of the lines.
In general, a high stiffness k will require a low time step to accurately solve the response and
maintain stability within the solver. In case solver divergence is observed, a decrease of the
time step may therefore be the solution for getting a stable computation.
l A full-body computation should be considered if (mooring) lines with different properties are
linked to a symmetrical body on both sides of its symmetry plane.
l The tension and node positions of a line can also be plotted as a function of time using the
Results Analysis tool once the simulation has been successfully completed.
l The lines can be visualized in Cfview once a simulation has been successfully completed. No
traveling shot should be applied when loading the .cfv file. More information about the
visualization options in Cfview can be found on the dedicated page on the visualization of
catenary lines in Cfview.
FIGURE 15.14
Visualization of the mooring lines using Cfview.
CAVITATION
The numerical modeling of cavitation is based on the resolution of a transport equation similarly to
what is done for the free surface. But, in this case, source terms are added to model vaporization and
condensation of the phases liquid/vapor. Three different models have been implemented: Merkle, Sauer
and Kunz models. The objective of this chapter is to present the settings to use these models and use
cavitation in Fine Marine simulations.
16.1.1 Introduction
Cavitation is defined as a rapid decrease of pressure resulting in a phase change to vapor from an
initially homogeneous liquid. In most cases, cavitation arises when the liquid is exposed to high
accelerations, such as in marine propellers, hydrofoils or pumps. When the vapor bubbles, which
are formed from a rapid pressure drop, burst, they cause adverse effects to these types of
mechanical systems, such as thrust reduction, noise or vibration.
The numerical modeling of cavitation in Fine Marine is based on the resolution of a transport
equation similarly to what is done for the free surface. The three models implemented are based
on a model of transfer between the phase liquid and phase vapor. They use empirical coefficients
to model vaporization and condensation of the phases liquid/ vapor caused by cavitation.
A detailed description of the mathematical models can be found in the Theory Guide: Cavitation
models.
The cavitation module solves a transport equation for either the Liquid or the Vapor phase. For
computations in which cavitation is modeled in conjunction with a free surface (multifluid), the
expert parameter CavitationEquationType_ should be changed to VAPOR to ensure a robust and
accurate prediction of cavitation.
16.1.2 Parameters
First of all, it is necessary to activate the cavitation modeling by clicking on the "Activate
Cavitation" button.
FIGURE 16.1
Cavitation activation
l mono-fluid: the reference pressure will correspond to the pressure imposed by the external
boundary condition "prescribed pressure", which is 0.
l multi-fluid: the reference pressure will correspond to the pressure at the free surface, which is
also 0 by default.
The vapor pressure in the cavitation model is to be set relatively to this reference pressure, so in the
case Pref=0, the vapor pressure ( Pv) value will become negative.
where
and the cavitation reference velocity at 0.7 times the propeller radius (0.7R):
The P ref becomes more important if the user chooses to define σ value instead of the P v, since the
latter will be deduced from σ and the Pref.
l Fluid density: information about the density of the main fluid (fluid-1)
l Vapor density and viscosity: density and viscosity of the vapor
l Reference pressure: reference pressure for the cavitation
l Cavitation reference velocity: reference velocity for the cavitation.
FIGURE 16.2
Flow properties for the cavitation modeling
C. Cavitation parameter
One has the choice between two solutions to define the vapor pressure, using the coefficient σ or
directly the value of the vapor pressure.
with P ref the reference pressure, P v the vapor pressure, ρ the fluid density and V cref the
cavitation reference velocity.
l Tac: physical time from which the model is active in the computation.
Tac is an absolute time, thus if the computation is a restart from the previous computation, the
physical time preformed in the previous computation should be taken into account within the Tac
value.
The default Cavitation parameters are not adapted to all kinds of applications. It is strongly
recommended to modify the parameters respecting the physical conditions of the cavitating flow
simulation.
D. Cavitation models
First of all, one of the following models should be selected: Sauer, Merkle or Kunz. Then different
inputs are required, depending on the selected cavitation model:
l for Sauer: Nuclei density,
l for Merkle and Kunz: Liquid production coefficient, Liquid destruction coefficient and
Cavitation reference length.
16.2.1 Parameters
Flow Properties
l Fluid density
l Reference pressure: reference pressure in the domain. Its value is zero by default in Fine
Marine.
Cavitation Parameters
Where P ref is the reference pressure of the fluid, P vap is the vapor pressure in the flow, ρ is the
fluid density and Vref the reference velocity in the flow.
Having cavitation from t=0 in the simulation can create difficulties in the convergence of the
simulation. To start the simulation without cavitation and have a smooth transition to cavitation
the parameters σinit and Vapor pressure init can be used.
Setting the value of σ higher than the physical one or setting Vapor pressure init lower than the
physical vapor pressure of the fluid will ensure a smooth start of cavitation by means of a ramp to
the target values. The starting time of the ramp and its length are defined by Tac and ΔTdec.
As a first guess, a value for σinit= 1.3*σ, or an initial vapor pressure 1.3 times lower than the physical
vapor pressure can be specified.
l Liquid production coefficient and Liquid destruction coefficient: they regulate how fast
vapor is converted into liquid and vice- versa. Their default values are set according to
experimental results in the literature. They should not be changed unless the behavior of
cavitation needs to be modified due to the flow physics present in the simulation.
l Cavitation reference length: for foils use the foil chord, for propellers the blade chord at
0.7*Radius.
Sauer
l Nuclei density : this parameter represents the number of spherical bubbles per volume of
liquid. The default value is set according to literature. If the solution is oscillatory, decreasing
this value will increase the stability of the solution.
Expert parameters
CavitationEquationType_
The cavitation equation is a transport equation that can be solved either for the liquid (default) or
the vapor phase. The choice for which phase to solve depends on the type of application, and
impacts the solver robustness and the accuracy of the solution.
l For monofluid cases, the default value can be used: CavitationEquationType_: LIQUID
l When a free surface is present, the value should be changed to: CavitationEquationType_:
VAPOR
CorrectWFBufferLayer_
For simultaneously simulating cavitation and ventilation of foils and other surfaces which are
similar to flat plates, it may be necessary to activate a wall-function correction inside the buffer
layer.
l Only for fine meshes: CorrectWFBufferLayer_: YES
Mesh
A fine mesh in all the areas where cavitation is expected to appear is key to a good result. A
uniform cell size should be kept in these areas.
In the viscous layer insertion step it is recommended to use a Y+ < 1 in the blades. The creation of
cavitation pockets can happen in the viscous layer region and a wall resolved approach will
improve its capturing.
Flow Model
Turbulence Model
Boundary conditions
If the blades have viscous layers with Y+ < 1, make sure the solid boundary conditions are set to
No slip (wall resolved turbulence model) in these surfaces.
Time Step
Where C 0.7R is the blade chord at 70% of radius, U is the advance speed of the propeller (or far
field flow speed if the propeller is fixed), n is the rotational speed of the propeller in rps and R is
the radius of the propeller.
Pressure solver
Accurate cavitation modeling requires obtaining good convergence in the pressure solver. For this
purpose, in the Control Variables > Advanced section, change the gain to 5 orders and the
number of iterations to 1000 for PCGSTAB_MB or 200 for BoomerAMG. BoomerAMG is
recommended whenever possible since 1000 iterations for PCGSTAB_MB.
Recommended Workflow
To use cavitation, we need to use an unsteady approach but a time discretization of order 1 is
required in order to avoid possible instabilities that might occur when using the second-order
scheme. For multifluid simulations, select Steady mode. However, for monofluid computation,
the GUI will automatically impose the second-order scheme. To change it click on Comment,
under the list of Computations and copy the following lines:
*
*** TIME SCHEME
*
BACKWARD ORDER 1
If the pressure solver is set to PCGSTAB, the following expert parameter need to be adjusted:
l presIlu_: 3 (ILU level)
This parameter can be found in the Computation Control >Control Variables > Advanced
tab.
Post-Processing
The post- processing of cavitation results always needs to include a time average. The
modification of expert parameters helps to stabilize the solution, but cavitation is an unsteady
phenomenon by definition.
During the simulation, in the .std file of the simulation (or in the Task Manager window),
indicators about the cavitation are printed. For instance:
--------------------
cavitation parameter : 1.70975376491370
vapour pressure : -796044.469125389
--------------------
Stability
The default Sauer model should be appropriate and stable for most cases.
Reference Pressure
In mono-fluid computations one of the patches (usually the downstream patch) needs to be set
with the Boundary Conditions > Prescribed pressure > Frozen pressure. The value for this
Frozen pressure is 0 in a mono-fluid computation.
The vapor pressure of water at 15 deg is 1700 Pa. In Fine Marine the reference is not atmospheric
pressure but 0, so the vapor pressure the user needs to input in Fine Marine is Pv -Patm = -99 625
Pa. The other option is to set the parameter σ, which is a direct measure of the difference between
reference pressure and vapor pressure, normalized with the dynamic pressure in the flow.
TEMPERATURE
The temperature and its effects on the flow can be modeled using a temperature model with the
Boussinesq approximation and a solutal model. This method can be used to simulate fume exhausts.
In this section
17.1 Introduction 478
17.2 Parameters 479
17.3 Best practices 482
The Temperature and Solutal models extend the Fine Marine flow solver capabilities to
simulate flows involving temperature and pollutants. Using the Boussinesq approximation, the
temperature differences will induce a displacement in the flow allowing the good modeling of
natural convection and the solute diffusion will allow the tracking of pollutants such as smoke.
This feature can be coupled with the "Adaptive Grid Refinement" (p. 546) feature ( "Temperature
and solute Hessian" (p. 560) criterion), improving greatly the gradient capturing of the Temperature
and the Solute while reducing largely the cell count of the initial problem.
FIGURE 17.1
Example of smoke exhaust using AGR
In clear
The temperature, by changing the density of the flow (following the Boussinesq approximation),
will induce a displacement of the flow called natural convection.
The solute diffusion has a definition closer to a material and describes an element such as the
smoke or a pollutant which doesn't have its own phase: a concentration. The solute will also
change the density of the flow inducing another level of flow displacement.
Examples
Use of temperature alone: study the impact of a synthetic jet pulsing hot water close to the
bathing area at the transom of a luxury yacht
Use of temperature and solute diffusion: study the smoke diffusion out of a cruise ship's
chimney
17.2 PARAMETERS
To define a simulation with Temperature and possibly Solute, it is necessary to define certain
initial conditions such as the ambient temperatures, the reference solute mass fraction or the
temperature of the sources. To do so, the following menus are available.
FIGURE 17.2
Temperature menu
This menu allows the activation of the Temperature model. For each fluid, the following
parameters need to be defined:
l Ambient temperature [K]
l Prandtl number (Pr)
l Thermal expansion coefficient (β) [1/K]
Boundary conditions
FIGURE 17.3
Temperature and solute definition in the Boundary conditions menu
Once the Temperature menu is set, the Temperature and the Solute diffusion can be prescribed
on the domain patches in the "Boundary Conditions " (p. 265) menu. The following boundary
conditions are eligible:
l SOLID
l EXTERNAL:
l Far field
l Prescribed pressure
l Zero pressure gradient
l Synthetic jet
The desired patches will then radiate the specified temperature and solute prescriptions.
17.3.1 Workflow
First computation
Restart computation
When the flow is initialized, perform a restart activating the temperature model and solute
diffusion.
In the restart computation, in the Initial solution menu, do not select the "Append convergence
outputs" check- box. Indeed, the residuals for Temperature and Solute do not exist in the first
computation which would make the .res file unreadable by the Monitor.
17.3.2 Inputs
The values for the Prandtl number for air and water can be taken in the literature.
The solute mass fraction is defined in the range [0,1] and is representative of the dilution of the
solute.
For instance, if the reference solute mass fraction in the domain is 0 (0% of solute) and one patch
injects a solute mass fraction of 1 (100% of solute). A solute mass fraction of 0.2 at a specific
location of the flow means 20% of solute.
17.3.3 Advices
Here are listed some advices for the usage of Temperature and Solute:
For the constant , we have the following rough indication for ship-type flows: 0.2 corresponds
to a reasonably coarse mesh, 0.1 is medium-fine, and 0.05 gives a very fine mesh.
UNCERTAINTY QUANTIFICATION
The physical variation present in the system can be found in literature as irreducible uncertainty,
variability and inherent uncertainty, this uncertainty is the natural variability that is inherently present.
Due to the physical variability, operational uncertainties are always present when considering a real
physical processes. Examples of operational uncertainties can include free stream conditions like
pressure, velocity, turbulence and for instance cavitation production terms and etc. By measurements
one should be able to find probability density functions for these parameters.
Fine Marinee provides an uncertainty quantification (UQ) module called Non-Deterministic Data,
which uses the Non-Intrusive Probabilistic Collocation Method (NIPCM) introduced by Loeven, 2010,
and allows to treat operational uncertainties such as boundary conditions and some model parameters.
The selection of quantities to be attributed with an uncertainty and the choice of the uncertainty is
straight forward here and the generation of non-deterministic sub-computations is automatically done
by the in Fine Marine GUI. The NIPCM method is applied to the parameters of the and their values are
automatically modified following the imposed uncertainty law.
Polynomial chaos methods (PCM) represent one class of non-deterministic methods which gained wide
acceptance in the CFD community for propagation of the uncertainties in numerical simulations, where
the random quantities are subjected to a spectral representation via a polynomial chaos expansion
(PCE). PCMs show interesting advantages with respect to the perturbation methods. PCMs can handle
more general types of uncertainties while they seem to be more computationally efficient as the basic
Monte Carlo methods. Anyhow, reliable conclusions could be started, for particular applications, only
after completing a comparative assessment of the user-selected non-deterministic methods.
General framework for the computation including the uncertainty quantification analysis is as follows:
1. Define parameters to be uncertain during the computation.
2. Specify input distributions for uncertain parameters by selecting the Probability Density Function
type (PDF).
3. Perform non-deterministic parent computation.
4. Perform deterministic computations for every collocation point.
Computing collocation points and weights based on PDF's of the uncertain parameter(s) together with
constructing the stochastic solution using all obtained deterministic solutions, e.g. mean/ variance fields,
uncertainty bars or probability density functions are done thanks to the Non-Deterministic Data and
Non- Deterministic Results modules within the Fine Marine software.
In this section
18.1 Parameters 486
18.2 Results 492
18.3 Report file 497
18.4 Recommendations 498
Before creating a deterministic computation, the user has to create a non- deterministic
computation (usual Fine Marine computation). Then, the deterministic computation will be
created based on the non-deterministic computation (parent computation).
The non-deterministic module can be activated in the Additional Models/ Non-Deterministic
Data part of menu. Select Activate Non-deterministic data to enable options for the further
setup. It will be suggested to select uncertainty for quantities in the Boundary Conditions and
Cavitation model menu.
FIGURE 18.1
Non-deterministic module activation window.
In the Boundary Conditions page, a check box uncertain will appear at the right side of the
boundary condition available for the uncertainty analysis. By checking the uncertain box
corresponding boundary condition will be marked as an Uncertainty entry.
Parameters to be possibly selected as an uncertain:
From External Boundary Conditions
Far field:
Uncertainties are not selectable for quantities defined by a profile: for instance, when the Velocity
component is defined as a Profile data, and not as a Constant value.
l Turbulence parameters
l Wave generator: Period, Height
Only the Regular waves parameters are available for the uncertainty quantification analysis for
the moment.
From Cavitation models:
l σinit: initial cavitation parameter
l σ: target cavitation parameter
l Vapour pressure init: initial vapour pressure
l Vapour pressure: target vapour pressure
Sauer cavitation model: Nuclei density
Merkle and Kunz cavitation models: Liquid product coefficient, Liquid destination coefficient
,Cavitation reference length.
After selecting the desired parameters, switch back to the Additional Models / Non-
Deterministic Datapage, the uncertainty settings for the computation will appear as follows:
Full tensorization of collocation points provides higher number of computations and especially in
case of multiple number of Uncertainty entries for a given accuracy can be reduced thanks to the
Sparse growth method. The same accuracy can be achieved with less points, meaning reduction of
computation time costs with less number of simulation to run .
In order to eliminate duplicate points due to nestedness, a very small value is used to compare the
difference of quadrature points abscissas in all dimensions to this small value, which is set to
epsilon=1e-12. If the user imposes a PDF which would extend only in this range of data, such as
a beta-PDF with minimum value 0.0 and a maximum in the order of 1e-12, then the collocation
points will not be identified as different. The method is thus not applicable in this range of data.
Given the extremely small length scale this should not be a large problem in basically any
application.
Only Golub-Welsch quadrature rule can be used. Sparse codes in literature use a variety of
quadrature rules representing more nestedness, but also less accuracy. As for the full-
tensorization, the Golub-Welsch algorithm for Gauss-Quadrature seems to be the best choice
for our needs, due to its flexibility and high accuracy through Gauss-Quadrature.
Sparse grids can give negative weights for sub-computations which is considered to be admissible be
method.
Example
number_of_points 100
00
0.010101010101010102 1.4613474490780709e-005
0.020202020202020204 0.00011601194732412229
0.030303030303030304 0.00038850903048303503
0.040404040404040407 0.00091370627391922316
0.050505050505050511 0.0017704751368160471
0.060606060606060608 0.0030349384765434905
...
It is also possible to export the probability density function (PDF) into a '.p' format file by using
the button export.
At the bottom of the Non-deterministic Data page the total number of sub-computations to be
created will be displayed. By changing any of described before parameters this number will be
updated with respect to all changes imposed. Deterministic computations will have variations of
uncertain values and its possible combinations.
Option of using results of the non-deterministic run into the deterministic ones can be applied by
checking the box Restart sub-computation from the parent.
By pressing the Generate computations button deterministic sub-computations will be created
according to the given parameters and this page will be automatically closed.
If the Non-deterministic datacheck box will be unchecked after the deterministic computations has
been created, the last will be deleted. In this case, following warning message will be displayed:
FIGURE 18.4
Warning message when the Non-deterministic mode is disabled.
After finalizing creation and setup of the parent non- deterministic computation together with
deterministic sub-computations, modifications into the parent are not recommended anymore. This is
due to the fact that changing defined here uncertainty parameters settings can influence the results in
an undesired way.
Launching of computation can be performed as usually: through the Fine Marine GUI or with the
python commands described in the Uncertainty Quantification section.
18.2 RESULTS
After running the desired deterministic computations (including parent non- deterministic
computation), the user can find results on the corresponding page - Computation control/Non-
Deterministic Results .
FIGURE 18.5
Non-Deterministic Results: specifying the percentage of results to be used
If some value is absent in the eff_*.dat file, it will be shown as 0 in the table and the warning will be
printed in the console.
A new file Uncertainty_ results.dat will also be created in the parent non- deterministic
computation folder when pressing the Ok or the Updatebutton of the Non-deterministic Results
page. This file stores the same data as displayed on the page:
Force: name of the force and the body (sub-body) on which it is calculated. The body(sub-body)
name is in brackets.
Value: force value extracted from the parent non-deterministic computation, meaning functional
(φ).
Statistical moments of Output PDFs:
Min: minimum value of the functional (φk) among all of the deterministic sub-computations.
Max: maximum value of the functional (φk) among all of the deterministic sub-computations.
Skewness: The skewness of any functional (φk) are evaluated with:
Only some types of distribution can be reconstructed. Indeed only PDF defined by a Pearson
reconstruction (from type I to VII) can be adequately reconstructed. In other cases the
reconstructed PDF will be an approximation based on the first four moments.
NON-DETERMINISTIC RESULTS
=========================
Generated by FINE/Marine 5.2
FORCES
Force Value Mean value Variance Min Max Skewness Kurtosis
Fx(prob) 8.214611e+02 -8.972963e+28 1.762562e+58 -2.861600e+29 4.304872e+05
8.214611e-10 -8.972963e-28
Fx(pale1) 2.127680e+02 2.169839e+19 1.030689e+39 -2.580462e+03 6.919909e+19
8.214611e-10 -8.972963e-28
Fx(pale2) 2.155566e+02 1.129593e+28 2.793292e+56 2.207096e+02 3.602424e+28
8.214611e-10 -8.972963e-28
Fx(pale3) 2.147760e+02 -8.924098e+28 1.743417e+58 -2.846016e+29 1.162512e+05
8.214611e-10 -8.972963e-28
Fx(pale4) 2.132834e+02 1.963878e+20 8.443094e+40 -7.816432e+02 6.263073e+20
8.214611e-10 -8.972963e-28
...
During the collocation points computation the report file uq_configuration.log is generated in the
parent computation directory. It lists selected uncertainties with their corresponding parameters
and provides exhaustive list of changes in sub-computations compared to the parent computation.
Several guiding ideas for the choice of Uncertainty type can be suggested:
l Gauss is not limited
l Truncated Gauss is limited by a value of approximately 35000 (taken from an industrial
experience)
l Beta is the most flexible: allow to define several peaks and change the distribution itself
Regarding these, first two types in general can be advised to be used when the parameter value is
close to realistic value and there is no need in a big amount of uncertain checks. Beta type is more
flexible and allows more advanced features. Here the calculated behind weighting factor for the
collocation points will define how far the collocation point will be from the most probable point
(non-deterministic computation values).
The Internal wave generator (IWG) creates waves in the domain based on a momentum source term
applied to the Navier-Stokes equations. More natural than imposing a wave generator on a boundary
condition, it ensures a clean wave signal at all times. The feature is especially relevant for fixed bodies
such as platforms, where waves reflected from the body could reach the upstream boundary of the
domain. The generator is located inside the domain instead of in a boundary and it should be used in
combination with sponge layers placed near both ends of the domain to dampen the waves.
Waves can only propagate along the X-direction. To simulate oblique waves, the body should
be rotated.
The internal wave generator will generate waves that propagate following the X-axis of the global
reference frame. The waves can be generated in positive or negative direction along the X-axis.
Parameters
Activating the Internal wave generator in the Additional models menu will make the
parameters describing the regular and irregular waves available:
Common parameters
l Depth: distance between free surface at rest and the bottom of the domain in meters. It is
displayed by a blue arrow in the graphics area. More information in the Boundary
Conditions"Wave Generator" (p. 285) section.
l Source location: wave generation point coordinate in X. It is shown as a yellow point on the
graphics area with one or two yellow arrows indicating the direction of propagation of the
waves.
Direction of propagation: for specifying the direction of propagation of the waves from the
wave generator: Positive X, Negative X.
Link to domain: possibility to select the domain the internal wave generator is linked to, in order
to follow its motion.
Activate smooth wave initialization: allows initializing the wave field at the start of the
computation to reduce the required computation time. The wave initialization has a start-up
transient of 1 wave period from the start of the computation to ensure solution robustness.
Using wave field initialization is especially recommended with following waves. For head waves, the
largest gain with wave field initialization will be achieved for shallow waves with a large wave length
(and therefore large period). For steep waves with short wave lengths, the time needed for the waves
to propagate through the domain is much faster, leading to a smaller advantage of using the wave
field initialization.
Forced layers
Forced layers can be placed near the sides of the domain to remove any wave reflections. They
impose the exact wave signal from the IWG, in this way removing any wave reflections from
solid bodies or domain boundaries.
It is recommended to use this feature in combination with Wave damping near the downstream
boundary.
Forced layers with a thickness of half wave length should be placed:
FIGURE 19.5
Forced layers in the Internal wave generator menu
Forced layers are only compatible with Internal wave generator . For boundary condition wave
generator only Wave damping downstream should be used.
l Height: wave height from through to crest in meters. It is displayed in green in the graphics
area.
l Period: wave period in seconds.
The discretisation of the nonlinear wave potential is based on the work by Fenton, see [1] and [2].
Based on the numerical solution for the coefficients of a Fourier series representation ([2]), this
method allows for accurate wave generation both for shallow water waves and nearly-breaking
waves, up to steep deep-water waves, see FIGURE 19.6. The discretisation of the wave using a
Fourier series is controlled through the number of Fourier coefficients (terms) and so-called height
steps, which are sometimes necessary to represent very high waves. The solver automatically
determines the suitable wave discretisation parameters, but they are also accessible through the
dedicated expert parameters FSDTerms_ and FSDSteps_.
FIGURE 19.6
Regions of validity for wave theories. "Water wave theories" by Kraaiennest is licensed under
CC BY-SA 3.0, modified with added axis label text
The wave potential Φ in the reference frame that's moving with the wave (X=ct and Y=y) is
defined as:
U(bar) is the mean fluid speed, c is the wave speed (celerity), d is the water depth and B j is the
set of coefficients that need to be determined iteratively.
The surface elevation is defined as:
where η is the wave elevation and E j is another set of coefficients to be determined iteratively.
More information can be found in the theory guide on the FSD wave generation method.
The legacy wave generation method is not suitable for shallow water waves, waves in the
breaking wave limit and high waves due to its theoretical basis in the Stokes expansion theory.
Stokes theory applies only to deep-water and intermediate-depth waves. This method is still
accessible through modifying the expert parameter waveGenerationMethod_ and setting it to
Stokes.
The Internal Wave Generator (IWG) only allows generating first-order Stokes waves.
Specifying a higher order through the expert parameter waveGenerationStokesOrder_ will
not have any effect for the IWG.
For this wave generation method first, second, or third order Stokes wave definitions can be used.
The order depends on the wave steepness that is required in the computation. A higher wave
order additionally increases the accuracy of the wave interface close to the solid boundary until
two wavelengths downstream. After that point, the difference between the different wave orders
will be negligible if the goal is only to increase precision.
FIGURE 19.7
Estimation of the wave order
The red line represents the limit of validity of the Stokes theory, whereas the green line is the
border between first and second order and the purple line the border between second and third or
higher order waves. Only the propagation of intermediate depth and deep water waves can be
simulated using this method, taking into account that the upper limit of validity for a periodic and
propagating deep-water wave is a wave steepness (H/L) of 0.14.
The wave order can only be set through the expert parameter waveGenerationStokesOrder_, for
which the default wave order is set to 3.
where
References
[1] Fenton, J.D., 1990. Nonlinear wave theories. Ocean Engineering Science, 9, pp.1-18.
[2] Fenton, J.D., 1999. Numerical methods for nonlinear waves. In Advances in coastal and
ocean engineering (pp. 241-324).
l Available spectra:
l ITTC
l Pierson-Moskovitz: modified spectrum according to the 1978 ITTC conference.
l JONSWAP: proposed after analysing data collected during the Joint North Sea Wave
Observation Project. Takes into account that the sea state continues to develop through
non-linear wave-wave interactions even for very long times and distances. This spectrum
extends Pierson-Moskowitz to include developing sea states.
l JONSWAP 3 parameters: additionally to the JONSWAP spectrum parameters, allows to
control the significant wave height.
l User-defined.
l Peak period (Tp): wave period in seconds corresponding to the frequency with the highest
wave energy in the spectrum.
l Significant height (Hs): mean wave height (through to crest) similar to the highest third of the
waves (H1/3) parameters.
Modern definition: 4 times the standard deviation of the surface elevation.
l Steepness (Gamma): non-dimensional peak shape parameter. It varies from 1 to 5.
l User-defined data file: the spectrum parameters for the User-defined spectrum should be
specified through a spectrum.dat file, for instance, and consist of the number of wave
frequencies and spectral density values together with its distribution parameters for each
frequency.
It is strongly recommended to store the spectrum input file inside the Computation folder.
991
0.552300000000000 1.425134561970092E-008 0.200072553915353
0.556822222222222 2.105653169018277E-008 -3.10241674047480
0.561344444444444 3.059213503130416E-008 -1.11056951161608
0.565866666666667 4.373966352698112E-008 -1.79666237050452
0.570388888888889 6.159070885437247E-008 1.44797659527557
0.574911111111111 8.547564616889585E-008 0.835759044159744
Direction of propagation and Reference point have a similar definition as for the regular
waves.
The Depth, Direction of propagation and the Reference point should be specified together
with the spectrum data file.
Guidelines
1. The complete summary of the best practice for seakeeping simulations is provided in the FAQ
application guide for seakeeping simulations.
2. As waves generated using the IWG are of higher accuracy than the ones generated by the
boundary condition wave generator, using the IWG should be preferred.
3. Under the Plugins/Predefined menu, the " Wave generation info calculator" (p. 38) tool is
dedicated to the setup of a wave generation project. The tool computes useful information for
wave generation simulations such as frequencies, time step or wave celerity.
4. Time configuration should be set to Unsteady (see " General Parameters" (p. 241)).
5. At least 2 orders of gain for non-linear iterations are necessary to reach a correct accuracy. For
this purpose, set the Maximum number of non-linear iterations to 20 and the Convergence
criteria to 2 (see "General Parameters" (p. 626) of the "Control Variables" (p. 625) menu)
6. The IWG has a length of 1 wavelength centered on the source point, therefore the wave
requested by the user is not generated immediately at the source, but after a certain distance.
1.5 wavelengths should be kept between the source point and the body or area where the wave
signal is analyzed.
7. Forced layers areas should be placed at laterals of the domain to avoid any reflection. The
recommended length of the forced layers is half wavelength. No forced layers should be
placed in a mirror plane that cuts a solid body.
WAVE DAMPING
Wave damping is achieved by a sponge layer that dampens free surface waves to avoid any undesired
reflections at the boundaries of the domain. The damping term is automatically adapted according to
the scale of the problem ensuring its efficiency for all wave simulations.
Sponge layer damping acts as a porous medium using Darcy's law to damp the momentum in Z
direction. The damping term acts on the momentum on Z direction and it is adapted according to
the scale of the problem. This damping method can be used both with the Boundary condition
wave generator ("External Condition" (p. 276)) and with the Internal wave generator ("Internal
wave generator" (p. 499)).
More information regarding the theoretical sponge layer formulation can be found in Choi,
Junwoo and Sung, Bum Yoon,"Numerical simulations using momentum source wave-maker
applied to RANS equation model", Coastal Engineering, 56 (10), pp. 1043 - 1060, 2009.
Parameters
The parameters defining the sponge layer become accessible after checking the Wave damping
box in the Additional models menu.
The parameters Smin and Smax are used to specify the length of the damping area(s) in X- and
Y-directions. The values proposed by default correspond to the domain boundaries (Gmin and
Gmax) meaning that no damping is applied. Once the values are changed the damping zone will
be represented graphically.
In 3D projects, Y-direction defaults for Smin and Smax should be kept to avoid any damping in
the Y-direction, which would distort the wave signal. In 2D projects, only the X-direction is
available to define the damping area.
If no damping is needed in one direction Gmin should be identical to Smin, and Smax should be
identical to Gmax. Any difference will create a damping zone.
MODAL APPROACH
The present Modal approach offers an efficient two- way coupling solution for the fluid structure
interaction (FSI) simulations, whereby the structure is represented by its mode shapes and natural
frequencies. The modal equations are solved inside the fluid flow solver in order to retrieve the
deformation of the structure and to take it into account in the flow calculation. It presents the
advantage to involve only one solver reducing thereby the complexity of the computational set up.
Functionality is based on the resolution of the modal equation of the structure. As starting point, a
structure code is used to compute modal shapes and eigen frequencies. With this data Fine Marine will
compute the deformation of the structure by solving the modal equation.
FIGURE 21.1
Parameters: Modal approach
A specific license key is required to be able to use this module. Please contact your local support team in case
you do not have it yet.
Details can be found in the paper published by F. Debrabandere, B. Tartinville, C.Hirsch "A
Staggered Method Using a Modal Approach for Fluid-Structure Interaction Computation".
Activating the Modal approach in the Additional models menu will make the Coupling
parameters page available.
To have body(ies) in the list of Bodies, in the Body Motion menu it should have an Imposed
motion type and no Solved motion for any of D.O.F.'s. Bodies with imposed motion are listed on
the left, their corresponding parameters on the right.
FIGURE 21.2
Coupling activation
Checking the Coupling activation in the Coupling parameters and pressing Edit... button will
make the Modal structures configuration menu available.
After specifying the "Structure file" (p. 521), the Number of modes to be used during the
computation should be set. By default, it is specified equal to the number of modes provided
within the "Structure file" (p. 521).
Visual definition of what are the mode shapes can be presented as follows:
FIGURE 21.4
Mode shapes used for the Vortex vibration calculations: a) Mode 1, b) Mode 2, c) Mode 3, d)
Mode 4
Non-zero Cardan angles are not supported in the flow solver for bodies when the Modal
approach is activated.
A modal body cannot be spread into several domains, all the body patches need to belong to
one single domain.
For unsteady computation, the time step is strongly recommended to be less than one third of the
period of the highest mode to avoid possible divergence.
To compute and save the weighting coefficients for the mesh deformation it is also possible to
perform a pre-processing step by launching the sequential solver in batch mode with an "-init_
modal" option such as:
isiscfdmarine121 -a -init_modal -print
Here the pre-processing step will not checkout a flow solver license and will compute and save
the weighting coefficient only. This will help to decrease the time of initialization for Radial Basis
Function (RBF) interpolation used to handle the computational domain deformation according to
the solid body displacement.
Mesh deformation method using Radial Basis Function (RBF) supports large structure
deformations supporting the good quality deformed meshes in such cases.
Coupling options
Several coupling options are available. They allow to increase the accuracy or the speed of the
computation:
l Node reduction tolerance: This option reduces the computation time when the number of
structure nodes increases. This method selects a reduced number of nodes while keeping an
accurate definition of each mode within a certain tolerance. The value has no units as it is
defined as the ratio between amplitude error and exact amplitude per mode. More information
can be found in the theory guide in chapter Flexible body with modal approach.
l Reference length: Using an accurate reference length for the modal body improves the quality
of the information transfer between structure and fluid.
l Deformable domain boundaries: External boundaries of the domain containing the modal
body can be deformed by applying a weighted deformation coming from the modal body. It
can help keeping a high mesh quality and is especially useful for a modal body in an overset
domain.
Deformation strategies
Applies to all boundaries, including Solid patches that do not belong to the modal body.
Eligible boundaries are all External patches except: mirror planes, wave generators, synthetic jets
patches, sliding interfaces and periodicity. It also excludes Solid patches that do not belong to the
modal body.
l Activate Quasi-Static deformation approach: A quasi-static approach can be used for the
deformation of the structure. As for the quasi-static approach for the motions, this allows to
converge towards a steady state deformation very rapidly, and to decouple the time step
definition from the modes frequency. The parameters are the same as the ones from the
"Quasi-Static Approach" (p. 339) for body motions and can be defined per mode.
Under-relaxation parameter of 0.5 is reasonably stable, hydrofoils usually work with 0.6 too
but not with 0.8 for instance. Hence, these parameters might be increased a little bit.
Also, it is easier to define under-relaxation parameters for each mode with the same value. It
could be nice to change them according to each mode but it sounds complex to anticipate since
the impact of each mode on the solution should be known in advance.
The frequency of update for dT2 and dT3 can be defined with the same values as for the quasi
static for motions (typical is 20 time steps).
l Advanced >>> button shows the expert parameter Map the loads on the non-deformed
configuration set as on by default.
As described in Section 4.2 of the theoretical manual the eigen frequencies and mode shapes
normalized with the mass are the inputs needed for the modal approach.
These properties can be computed by a side code (CSM for instance) or measured experimentally.
<Comment line>
Number of dimensions: <#dimensions>
Number of modes: <#modes>
Number of nodes: <#nodes>
Eigen frequencies
<f1>
21.3 OUTPUTS
Information about the amplitudes and their time derivatives calculated during the simulation are
written into the "Mvt_ bodyname.dat" file that is stored within the computation folder. The
structure of the file is explained in "The motion file: Mvt_bodyname.dat" (p. 778).
Calculated quantities can be also opened into the "Monitoring" (p. 683). Here the Quantities to
display: Amplitudes will display the resulting modal deformations parameters read from the
"Mvt_bodyname.dat" file with respect to the Modes simulated during the computation.
For the fluid structure interaction computation cases to monitor the convergence history of
"Unsteady Forces and Moments" (p. 691) the SaveConvEfforts_ can be activated (set to YES)
on the Advanced page of Control variables menu. Results can be opened within the Monitor at
the same time with the other quantities.
The script post_node_modal_approach.py is available to post process the results and extract the
time history of the motion of one node of the structure.
The transition from a laminar to a turbulent flow can have an important role for applications that deal
with low or moderate Reynolds number, such as marine unmanned, small submarines or hydrofoils
under certain conditions. While Reynolds Averaged Navier-Stokes (RANS) modeling is widely used
due to the relatively low computational cost, it is unable to predict transitional flow features. To take
into account this phenomenon, additional models need to be used, commonly referred as transition
models.
The available implementations are based on the Local Correlation-based Transition Modeling (LCTM)
concept, where experimental correlations are being integrated into the standard convection- diffusion
transport equations using local variables.
Among the numerous parameters that affect the transition one can list: the free stream turbulence
intensity, the pressure gradient, the Reynolds number, and the surface curvature. In the transition
process, phenomenon of the laminar separation bubble can play a significant role. Strong adverse
pressure gradient makes laminar boundary layer to separate from the solid body surface.
Details can be also found in the paper of: Menter, F.R., Smirnov, P.E., Liu, T. et al., A One-
Equation Local Correlation-Based Transition Model, Flow Turbulence Combust (2015) 95: 583.
doi:10.1007/s10494-015-9622-4 and Rubino, G., Laminar-to-Turbulence Transition Modeling of
Incompressible Flows in a RANS Framework for 2D and 3D Configurations (2022).
doi:10.13140/RG.2.2.13761.68969.
In this section
22.1 Available models 526
22.2 Procedure 527
22.3 Best practices 535
Two models are available for coupling with k-omega (SST-Menter v2003):
l γ-Reθ: Menter and Langtry (2012), shown as "GAMMA-RETHETA".
l γ: Menter et al. (2015), shown as "GAMMA".
The γ model is a simplification of γ-Reθ, reducing the number of transition variables from 2 to 1.
Both models rely on intermittency γ, which acts on the production term of the turbulent kinetic
energy transport equation in the SST model. It can be seen as the percentage of time for which the
flow is turbulent (0 indicating fully laminar and 1 fully turbulent). The base models assume a two-
dimensional character of transition, and cannot take into account the effects of cross flow. For that
reason, an extension for crossflow is proposed for γ-Reθmodel (see below).
The γ-Reθ model is not Galilean invariant, for translating body the prediction is incorrect. It is
required to fix the body and move the flow instead of the other way around.
The following steps suggest the example of a complete procedure for the simulation, in which the
experimental conditions for the Turbulence level are known and can be used for the flow
initialization.
4. Perform only the pre-processing step in Task Manager or launch it in batch with the tool
"hexpress2isis" (p. 998): this will prepare the files to be run with the solver (including conversion,
partitioning or concatenation of previous results)
Example of the init_isiscfd.f modification for the Turbulence intensity and Viscosity
ratio initialization
c
c
c For gfortran user, add "-frecord-marker=4" in your compilation
c old version of gfortran may not accept this option
c
c
implicit none
character*40 title,title1
integer::i1,i2,i3,n1,n2,n3,n,n_begin,nvar_bnd,i
double precision::t,ymin,ymax,h,yc,surf,u0,tu,tu0,rmu,rho,mu,kinf,winf,pi,alpha,alphar
double precision,dimension(:),allocatable::x,y,z,u,v,w,k,aw,surfx,surfy,surfz
integer,dimension(:),allocatable::flag
c
c Import the cell-centered grid
c
open(10,file='gridcc.bin',status='old',form='unformatted')
c
c Heading of the file
c
read(10) title ! title of the data
print*,'title ',trim(title)
read(10) title1 ! internal version/type information
print*,'informations ',trim(title1)
read(10) i1,i2 ! useless data
read(10) i1,n1,i2,n2,i3,n3,t ! Dimension of the file
c
c
c Loop on boundary faces
c
n_begin=n-nvar_bnd
do i=1,nvar_bnd
i1=n_begin+i
c
c Boundary condition flag in 3.1 release:
c ABBCCDDEE
c with:
c A: mesh deformation flag
c BB: boundary condition flag
c CC: body index
c DD: sub-body index
c EE: domain index (starting from 1)
c
c Identification of the wall by face flag
c
if (flag(i).eq.1010101 .or. flag(i).eq.401010001) then
Note that the values of the Fluid density, Dynamic viscosity, Inlet velocity, Incidence, Turbulence
intensity and Viscosity ratio will depend on the test case conditions.
7. If the example file provided above has been used and a.out launch is finished with success,
three new files are generated and should be used to initialize the Boundary conditions for:
l Velocity: v.bin
l Turbulent kinetic energy: k.bin
l Turbulent frequency: aw.bin
8. Copy the generated files into the computation folder.
9. Modify the computation .sim file with the following lines, considering the new initialization of
Velocity, Turbulent kinetic energy and Turbulent frequency:
*
*** R/W : VELOCITY (T)
*
v.bin
Using a transition model requires particular attention to set-up the mesh, boundary conditions,
initial solution and computation parameters appropriately. Otherwise, it may not be able to
improve the simulation, even provide worse predictions (for example: with inaccurate inlet
turbulence variables).
Transition modeling
If the body can be fixed so that the flow moves around it, it is recommended to use the
"GAMMA-RETHETA" model to be able to activate the crossflow calculation, as 3D effects are
often non-neglectable. However, this model is not Galilean invariant and can not be used for
moving bodies.
If the body is not fixed, the "GAMMA" model must be used. This model is Galilean invariant
and can be used for both moving or fixed bodies.
Transition models are only available with k-omega (SST-Menter v2003).
Boundary conditions
The boundary condition on the solid walls should be defined to "no slip wall" (see "Solid Wall
Boundary Condition" (p. 268)). Transition modeling does only make sense when using a wall-
resolved approach in order to fully resolve the velocity profile in the boundary layer.
Transition models have no effect on the solid walls which are not defined with a "no slip"
boundary condition.
As the Transition model is based on local values in the boundary layer and solves a transport
equation for the Intermittency, this requires a suitable grid refinement along the Solid walls.
The size of first cell must be sufficiently small to reach a lower than one or in the order of one
(as for all low- Reynolds turbulence models). Moreover too large expansion ratios must be
avoided for the clustering in the normal direction. It is advised to keep an expansion ratio lower
than 1.2.
The refinement location along the streamwise direction is also important for a good transition
prediction. In general, transition predictions will require more points along the streamwise
direction than fully turbulent predictions. A large number of points is requested mainly for
separation induced transition with possible reattachment. The refinement should be concentrated
around the area of possible separation bubbles and reattachment.
Creating the adequate viscous layers height is also a must. Hence, make sure the mesh quality and
height of the viscous layers mesh are as expected, otherwise the accuracy of the model might
suffer. In practice, it would be nice to prefer adaptive grid refinements during the solver execution
than refining in Hexpress too much, which will compress the height of the viscous layers.
Alternatively, Fidelity proposes other methods like extrusion which ensures higher viscous layers
in the generated mesh.
For academic validation, it is interesting to note that the flow solver is also compatible with
structured meshes. This could help to create adequate viscous layers if need be to validate the model.
For instance, an Igg/Autogrid5 generated mesh can be converted into the suitable file format through
Hexpress and used during the transition simulation. More details can be found in the Hexpress
documentation.
The user should pay attention to the inlet turbulence variables. The predicted results are very
sensitive to the values of the inlet turbulence variables because of the decay of turbulence from the
inlet to the separation induced transition zone. The inlet boundary conditions should be well
defined considering the Turbulence intensity. The ideal for the best estimation is to know the
turbulence intensity profile at downstream of the inflow boundary.
When the Turbulent intensity ( Tu ) is known, the Turbulent kinetic energy ( k inf ) can be
determined as:
and with the Viscosity ratio ( ), the Turbulence eddy frequency (winf) can be determined as:
Other recommendations
l The activation of the transition modeling requires a considerably high overall number of time
steps up to convergence. The appropriate stabilization of the efforts and motions should be
checked in the Monitor.
l The activation of the crossflow modeling comes with extra cost on the computational
resources. To save on computation time, it is best to initialize the simulation without crossflow
activated, and then make a restart computation with the option activated.
l When FCH criterion for adaptive grid refinement is used in combination with a fixed body
configuration, the expert parameter raffHessianRef_ should be specified to INFLOW
VELOCITY (see expert parameters for "Adaptive Grid Refinement" (p. 924)).
l For unsteady computations, a restart from a steady computation might be advisable to reduce
the total computational time. During the unsteady phase more than 20 non-linear iterations per
time step might be necessary to ensure an appropriate decrease of the residuals during each
time step.
NUMERICAL MODELS
The Numerical models menu gives access to the Numerical schemes , Under- relaxation
parameters and Additional parameters tabs in order to define the numerical parameters of the
computation. They are described in the next section.
In this section
23.1 Numerical Schemes 540
23.2 Under-Relaxation Parameters 543
23.3 Additional parameters 544
Turbulence Equations
The different discretization schemes available for the turbulent equations are:
l GDS,
l UPWIND,
l HYBRID,
l CENTERED,
l AVLSMART,
l BLENDED.
The HYBRID scheme uses an automatic blending between upwind and centred schemes based
on the local Peclet number.
The BLENDED scheme is similar to the HYBRID scheme but the level of the upwinding must
be imposed. An input is mandatory for the BLENDED scheme. The value must be set between 0
to 1 and gives the level of upwinding. For instance, 0.8 corresponds to 80% of upwinding and
20% of centred discretization.
See section 1.2 of the Theoretical Manual for more explanation about the numerical schemes.
Momentum Equations
The different discretization schemes available for the transport equations are:
l GDS,
l UPWIND,
l HYBRID,
l CENTERED,
l AVLSMART,
l BLENDED,
See section 1.2 of the Theoretical Manual for more explanation about the numerical schemes.
Multi-Fluid Equations
The different discretization schemes for the mass fraction are listed below. There are only
available for multi-fluid computation.
l BRICS,
l BICS,
l GDS,
l IGDS,
l MGDS,
l AVLSMART,
l HRIC,
l CICSAM.
The GDS scheme used for momentum equations is based on upwind or centred discretization and
could be not appropriate for maintaining the sharpness of an interface convected by the transport
equation of the mass fraction field since the use of some upwind-differencing produces numerical
diffusion, which results in a very strong smearing of the interface. If the central differencing
preserves the sharpness of the interface, it introduces unfortunately non-physical oscillations
around the interface and produces values of the mass fraction which are outside the physically
meaningful bounds [0,1]. On the other hand, the GDS scheme does not suffer from any cell
Courant-Friedrich-Lewy (CFL) number limitation and could be used without any time step
limitation.
When the discretization scheme GDS is used for computing the transport equation of mass fraction, a
coefficient must be specified. This value is located between 0.1 and 0.5. The optimum value is 0.101
and is set as an expert parameter (see List of Advanced Parameters).
See Section 1.2 of the Theoretical Manual for more explanation about the numerical schemes.
Cavitation Equations
The different discretization schemes for the cavitation are listed below. They are only available for
computation when a cavitation model is active (see Cavitation).
l BRICS_GDS,
l UPWIND,
l BRICS
l GDS,
l AVLSMART.
The different discretization schemes for the passive scalar are listed below. They are only
available for computations when a passive scalar model is active (see Fluid model).
l GDS,
l AVLSMART.
Temperature Equation
The different discretization schemes for the temperature are listed below. They are only available
The different discretization schemes for the solute diffusionare listed below. They are only
available for computations when the solute diffusion model is active (see "Temperature" (p. 477)).
l GDS,
l AVLSMART.
Transition equations
The different discretization schemes for the transition are listed below. They are only available for
computations when a transition model is active (see "Laminar transition model" (p. 524)).
l 1ST ORDER UPWIND
l HYBRID
l CENTERED
l AVLSMART
l GDS
l BLENDED
l 2ND ORDER UPWIND
In this page, it is possible to change the under-relaxation parameters. The list is the following:
l Velocity components
l Pressure
l Velocity flux
l Correction
l Turbulent kinetic energy
l Turbulent frequency
l Mass-fraction (available for Multi-Fluid only)
Corrects the mass fraction in case of specific streaking problem. The streaking is a numerical
entrapment of air in the boundary layer below the hull. Two methods are implemented:
l Standard method
l Aggressive method
It usually happens for high speed boats, sailing yachts, or barges with a vertical and flat bow that
creates unsteady bow waves.
Aggressive streaking correction is more intense and eliminates more potential streaking. It has
shown no negative side effects on cases with no streaking and it is the recommended method.
Correction should be activated from the very beginning of the computation. Activating it with a
restart is too late to remove the streaking issue.
This option will set a limiting value to the velocity in the computation. It can be used in case of
complex simulations (e.g. Overset and/or Seakeeping) where a very localized and sudden velocity
peak due to numerical instabilities could provoke a crash in the computation.
A factor must be given. This factor will be multiplied by the reference Velocity in order to
specify the maximum velocity value in the computation.
A too low factor can lead to the creation of many cells if Adaptive Grid Refinement is used with
"Flux component Hessian criterion " (p. 559).
An Adaptive grid refinement algorithm is implemented in the Fine Marine flow solver which
automatically refines the mesh during the computation. The first part of this chapter introduces this
feature, whereas the second part explains the input required through the interface. The chapter ends
with advice on how to use this method.
Adaptive grid refinement is only compatible with full-hexahedral (2D or 3D) meshes, such as
the ones generated by Hexpress.
In this section
24.1 Introduction 547
24.2 Refinement Criteria 549
24.3 Grid Quality 573
24.4 Limiting Box 577
24.5 Refinement Control 582
24.6 Best practices 587
The adaptive refinement is an iterative process in which the mesh is dynamically adapted to the
requirements of the solution, during the computation. The decision on where to refine the mesh is
based on the physics of the flow. Mesh adaptation is a powerful tool which is useful for a wide
range of applications, since it can:
l Accurately capture flow details, such as waves, wake flows and boundary layers, and
trailing vortices behind ships and propellers. Since adaptive grid refinement is local, it can
create much finer meshes around small details than what is feasible with static meshes.
l Create efficient meshes, by inserting fine cells only there where they are really needed. For
example, unsteady flows change in time; therefore, a non-adapted grid must be fine in all the
positions where the local phenomena will ever be during the simulation. On the other hand,
adaptive grid refinement can place the fine grid only where the flow features are now, and
change the grid as the flow evolves. Thus, a great reduction of the total number of cells is
possible.
l Simplify the computations, by allowing easier meshing in Hexpress. For example, in certain
situations, it is no longer necessary to create free-surface meshes with Hexpress. Also, one can
be sure that all relevant flow features are captured, without placing volume refinement boxes.
l Assure the accuracy of overset computations, by smoothing out the transition in cell sizes
over the interface between domains (See also "Overset Grid Management" (p. 601)).
The refinement is cell-based: existing cells are subdivided into smaller cells to locally create a
finer grid. The refinement can be Isotropic or Directional (dividing cells in one direction only):
this reduces the total number of refined cells when flow features are aligned in a specific direction
(e.g. the water surface). The method contains several types of criterion which determine where the
grid has to be refined.
The refinement procedure is called repeatedly during the flow computation, with a given number
of time steps between each call.
Step 1
The refinement criterion is calculated, based on the current flow field. The criterion is represented
by a tensor field (to control directional refinement).
Step 2
This criterion is transformed into the decision of which cells should be refined or coarsened. This
decision may depend on the type or on the orientation of the cells, but it does not depend on the
specific way the criterion is calculated, it is the same for all criteria. If cells have the right size
according to the criterion, they are not modified.
Step 3
Finally, the coarsening and refinement of cells are performed where needed. Part of the
refinement is the automatic load balancing: when computing in parallel, parts of the refined grid
are moved from one processor to another, to keep the same total number of cells on each
processor.
For steady flows, the procedure eventually converges and the grid is no longer changed when the
procedure is called. For unsteady flow, the grid changes permanently.
We recommend to use the adaptive grid refinement method conservatively when working on new
problems, to first get experience and limit the total number of cells generated. It is easier to go from
coarse to fine meshes than the opposite.
The evolution of the number of cells during the computation is given in a file called nb_cell.dat ,
which is stored by the solver. The "Results Analysis" (p. 746) tool of the Fine Marine interface has
an option to save this evolution as a plot inside a picture.
Since the adaptive grid refinement method changes the mesh files, the refined mesh is stored as an
output of the computation in the computation directory.
First of all, it is necessary to activate the adaptive grid refinement feature by clicking on the
Activate grid refinement option.
FIGURE 24.2
Adaptive grid refinement activation menu
Once the adaptive grid refinement is active, the Criterion page is open. This page contains the
main parameters which control the position and size of the refined cells: the refinement criterion,
which indicates the physical features on which the refinement decision is based, and the
refinement threshold which is the global indicator of the mesh fineness.
Surface-capturing criteria
Combined criteria
Other criteria
FIGURE 24.3
Criterion page
Parameters
The Refinement target values control the number of cells during the computation:
FIGURE 24.4
The effect of reducing the refinement threshold. The right figure has a threshold that is half the
one for the left figure.
For Surface-capturing criteria, the threshold is called Target grid spacing normal to free surface ,
since it directly indicates the size of the refined cells.
l Minimum size limit for refined cells: cells that are smaller than this parameter in a direction,
are not refined in that direction. The default (0) means that there is no restriction.
For Hessian and Combined criteria, it is mandatory to choose a minimum cell size larger than the
thickness of the first cells in the boundary layer.
The quality of the refined grids is better when a fixed threshold is used. A useful approach for a
series of computations is to use a target number of cells for one computation, to establish the right
order of magnitude for the threshold, and then to run the entire series of computations with this
fixed threshold.
This is a useful option for new types of computations when no guideline for the threshold is available.
Even if the initial threshold can have an influence on the convergence speed of the procedure, one
can put whatever value (but normally for the Hessian criterion, a value of 10e-2 to 10e0 works
correctly).
Use number of cells as target is only possible for Hessian and Gradient criterion. It should not be
used with any Free surface criterion.
Several criteria are available which refine the mesh around the interface between 2 fluids, for
example the free-surface (air/water), or at the edges of cavitation pockets (water/vapor). They are
controlled by a specially property that sets the desired grid size in the direction normal to the
interface.
The mesh must be refined in a zone around the interface to avoid its diffusion. The criterion does
not do this automatically, it only refines where the volume fraction is between 0.1 and 0.9. Thus,
it is essential to set buffer layers (see also "Grid Quality" (p. 573)). At least two full buffer layers
are advised.
This criterion is similar to the standard Free surface tensor criterion (see below); it is an old
implementation where the buffer layers are computed differently, which produces more
refinement in zones of foam and breaking waves. Hence, using the tensor version of this criterion
is recommended.
This is a directional refinement criterion, it refines the mesh in a direction normal to the free
surface. When the surface is at an angle to the mesh, this results in isotropic refinement, but when
the surface is aligned with the mesh, the cells are refined in one direction only. This criterion is the
preferred choice for free-surface refinement.
FIGURE 24.6
Free surface tensor criterion
This criterion is the same as the previous one except that when the surface is aligned with the
mesh, the cells are also refined in an isotropic way. In general, this choice is not advised since it
creates refinement which is not essential to capture the surface.
Multisurface (tensor)
Identical to the Free surface (tensor) criterion with the optional addition of water/vapor interface
refinement for cavitation.
FIGURE 24.8
Multisurface criterion
Individual target cell sizes can be specified for each surface type. Internally, the flow solver will
convert individual Target grid spacing cell sizes into a single Threshold value and a
multiplication factor for the cavitation refinement criterion. Activating one or both of the Target
grid spacing to surface Free surface or Cavitation surface checkboxes will allow the User to
enter the desired cell size in the chosen area.
Refinement criteria are based on the Hessian matrix of second spatial derivatives of one or
multiple flow quantities, creating refinement throughout the computational domain (taking limiting
boxes into account). Since second derivatives are related to interpolation errors for linear
reconstructions, the Hessian gives a rough indication of the zones where the truncation error for a
finite-volume discretization is high. The Hessian matrix is:
Different criteria are obtained by basing the Hessian on different variables. The use of this
criterion requires to set two parameters:
l Hessian alpha multiplier: non-dimensional coefficient that sets up the sensitivity to the flow
features. Assuming the reference length is matching the size of the object, the typical range is
[0.2,0.05], with 0.2/0.15 corresponding to coarse/medium, and 0.05 to very fine. It is
multiplied by the flow reference length to obtain the dimensional value shown as Hessian
criterion threshold above in the greyed out case.
For non- combined criterion based on second spatial derivatives, the value shown as
Hessian criterion threshold in the greyed out case should be copied in the Refinement
criterion threshold to be effective.
The minimum cell size must not be smaller than the thickness of the first cells on the wall
(from viscous layers).
For this directional refinement criterion the Hessian is based on the pressure. Thus, the criterion
targets flow features like stagnation points, pressure peaks, and vortex cores. Combined with a
Free surface criterion (see also "Combined criteria" (p. 561)), the pressure Hessian is very useful
for capturing waves.
FIGURE 24.10
Pressure Hessian tensor criterion
This isotropic refinement criterion uses the norm of the pressure second spatial derivative matrix.
The pressure Hessian is evaluated the same way as for the Pressure Hessian (tensor) criterion
but produces more cells since all cells are refined isotropically.
FIGURE 24.11
Pressure Hessian isotropic criterion
This tensor-based directional refinement criterion is based both on the pressure and the velocity.
Thus, it targets the regions where the Pressure Hessian criterion is active, but also boundary
layers, shear layers, and wakes. It is the criterion of choice whenever a wake flow is to be
computed but it is also effective for accurately representing boundary layers, which may be
necessary to compute forces on bodies (even pressure-dominated ones) accurately.
The flux-component Hessian criterion is computed from Hessians of the pressure and velocity
components, weighted according to the way they appear in the fluxes. A typical flux is for
example , so the criterion is chosen as:
where the velocity is . The power factor α is in general taken equal to 0.5.
The maximum of two tensors is computed using an approximate procedure. Numerically, the
gradients are computed with a Gaussian evaluation plus misalignment corrections; they are
already known in flow solver. The pressure gradient is then smoothed but the velocity gradients
are not. Finally, the second derivatives are computed by differentiating the gradients using a
weighted Least-squares evaluation.
For the choice of the Threshold, since the velocity Hessians are scaled to the same dimension as
the pressure Hessian, the same initial guess as for the Pressure Hessian criterion can be used (see
above).
The flux-component Hessian criterion creates refinement in the boundary layers, parallel to the
wall. For the Wall-function boundary conditions, the gradient in the first layer of cells on the
boundary (and therefore the refinement criterion) depend very strongly on the thickness of this
layer. Therefore, it is important to make sure that this layer is never refined parallel to the wall, by
imposing a minimum cell size that is larger than the thickness of the first layer of cells.
Finally, since the Flux component Hessian criterion reacts to all the flow features, it can create
large numbers of refined cells. It may be useful to limit the number of cells created by selecting a
relatively large threshold, or a large minimum cell size (which means that the finer details of the
boundary layer will not be resolved). Finally, if the far wake is of no interest, refinement far
behind a body can be prevented by setting a limiting box (see also section about "Limiting Box"
(p. 577) parameters).
In case velocity clipping is activated and the factor is low, thus clipping the velocity in many
cells, many refinements will be made by AGR as the second derivative of the velocity field is
artificially increased by the clipping. The velocity clipping factor can be raised to limit the
affected region and limit this effect.
The criterion is of Hessian type to approximate the truncation error in the temperature and solute
FIGURE 24.13
Temperature and solute Hessian criterion
In order to better capture different physical phenomena or different parts of the flow, Hessian-
based criteria can be combined with free surface criteria (free surface (tensor) or Multisurface)
and Temperature Solute Hessian criterion. Each combined criterion can have a different
threshold.
For Hessian-based refinement of free-surface flows, the Hessian criterion is combined with a
surface capturing criterion. The criteria are combined into one tensor criterion by taking a
weighted maximum of the two tensors. We still want the threshold (Target grid spacing normal
to free surface) to indicate directly the desired cell size, as for the free-surface criterion, so a
weighting factor c is applied only to the Hessian criterion:
C(S,i) being the value of the criterion for the free surface tensor and C(H,i), the one for the pressure
Hessian. This gives a (approximate) maximum of the two tensors.
This criterion is a combination of the Free surface (tensor) criterion and the Pressure Hessian
criterion. Advice on their use can be found in "Free surface (tensor)" (p. 554) and "Pressure
Hessian (tensor) " (p. 558) paragraphs.
FIGURE 24.14
Free surface + Pressure Hessian combined criterion
For cavitating flow generally, the Pressure Hessian criterion is combined with the Multisurface
(tensor) criterion.
FIGURE 24.15
Multisurface + Pressure Hessian combined criterion
For accurate wake/boundary layer simulation of flows with free surface or cavitation, the Flux
component Hessian criterion is combined with the Multisurface criterion.
FIGURE 24.17
Multisurface + flux component Hessian combined criterion
Since the Multisurface criterion has the same behaviour as the Free surface (tensor) criterion
and can be used to capture the free surface in non-cavitating flows, no separate Free surface +
Flux component Hessian criterion has been provided.
For this combined criterion, up to three thresholds can be specified. The first threshold
corresponds to the free-surface criterion, the second to the cavitation surface criterion and the third
to the Hessian alpha multiplier. One of the first thresholds may be set to zero, in which case the
respective criterion is deactivated.
Every "Criteria based on second spatial derivatives" (p. 557), as well as their combinations with
FIGURE 24.19
Temperature threshold for combined criteria
Gradient criteria are not recommended anymore. Please consider using the hessian criteria.
Three gradient criteria are still available for backward: the gradient of the pressure, the gradient of
the velocity or the vorticity itself. These criteria give isotropic refinements.
FIGURE 24.20
Gradient criterion: pressure, velocity and vorticity
This criterion improves the mesh continuity between overlapping meshes to ensure a better
transfer of data interpolation for the Overset type of computations. The criterion checks the cell
size at the overlapping boundaries of each domain and refines the mesh of the other domain, such
that its cell sizes are not more than two times larger.
This criterion is always active when any other physical criterion are used in combination with
adaptive grid refinement method (except "Surface capturing criteria" (p. 553) for which the
criterion is not compatible). If the criterion is used on its own, it only ensures a smooth transition
between cell sizes; it cannot be relied upon to refine a very coarse background mesh enough to
capture a flow. Therefore, the original meshes in both domains must be reasonably fine already.
If the cells are (an)isotropic in the overlapping domain, then the background or the other overlapping
domain will be refined (an)isotropically.
At least 4 cells are needed for the initial mesh of the background in the region of each overlapping
boundary. In practice the background grid usually has to be much finer than that.
FIGURE 24.21
Example of resulting mesh for simulation with Overset continuity only criterion used
To control the criterion behavior the Minimum cell size limit for refined cells is available as well
as parameters of the "Grid Quality" (p. 573), "Limiting Box" (p. 577) and "Refinement Control"
(p. 582) menus. If the criterion is used on its own, only the Control parameters need to be set.
The default values can be kept for the other menus.
In the Grid quality tab, it is still possible to adapt the diffusion of the criterion value. The
recommendation is to let a sufficient number of copy to make sure that while the overlapping
domain is moving, the cells size from these domain boundaries will match with the other domain
even if there is no call to the refinement procedure at every time step. As such, to ensure this
match, the solver uses two times the number of full copy + 3, but also two times the number of
partial copy defined in the menu.
Systematic refinement is a type of refinement criterion that applies to the entire domain, refining
each cell a single time (except in boundary layers if so desired). As such a refinement is only
applied once at the beginning of the computation, systematic refinement criteria are in a class of
their own and mainly developed in order to increase productivity and obtain results faster. This is
done by splitting computations into two parts: a coarse grid initialization and a restart on a finer
grid. This reasoning is similar to the grid-to-grid restart procedure, with the important difference
that, by using systematic refinement, the fine grid and the coarse grid are topologically very
similar. This ensures better solution continuity at the restart and faster convergence on the fine
grid. It also avoids user involvement in creating the fine mesh, increasing productivity. Systematic
refinement can also be used in a project with a single computation (without restart) in order to
simply create a finer grid on the fly, instead of meshing it as such in Hexpress.
l This functionality is included in Fine Marine but requires additional calibration. The
corresponding version is set to Beta.
Systematic
The Systematic refinement criterion refines all cells in the entire computational domain once with
the possible exception of viscous layers, which can be protected as for other refinement criteria.
This refinement is done during the initialization phase of the computation.
The main use case for this criterion is to obtain results on a systematically refined grid after
interpolating the initial solution from a coarse grid (i.e. for restarts). This is done inside a single
project and with a single (coarse) mesh. Using a coarse mesh for the initial calculation allows
speeding up the computation time needed to bring a vessel up to speed and get through the
transient part of the computation.
FIGURE 24.24
The refinement procedure for the Systematic criterion.
Multisurface + Systematic
The Multisurface + Systematic criterion maintains the uniform refinement of the free surface by
refining cells either until the specified target cell size or the requested number of refinements is
reached, depending on which of the two thresholds is larger.
FIGURE 24.25
Multisurface + systematic refinement criterion
To ensure accurate flow solutions, it is not enough to have a grid that is adapted to the solution.
The adaptive grid refinement method must also ensure that the grid quality is good enough, so that
the solution is not perturbed by local large errors. This means that the size of the cells may not
vary too abruptly in space and that large aspect ratios are to be prevented in certain situations. In
practice, grid quality is ensured by refining extra cells, or by preventing coarsening of cells.
Criterion Diffusion
For non-smooth refinement criterion (like the free surface criterion), it may be necessary to refine
the grid not only in the cells indicated by the refinement criterion, but also in a few extra layers
around these cells. These extra layers are called 'buffer layers'. They are created by copying the
refinement criterion from a cell to its neighbours. For directional refinement criterion, these
procedures are applied individually to each component of the criterion.
For each 'full' buffer layer ( FIGURE 24.27 a)), the following procedure is applied to the
refinement criterion qi in each cell i (k goes from 1 to the Number of layers copying full
criterion value):
Therefore, if a cell has a refinement criterion high enough to pass the threshold, after one buffer
step all of its neighbour cells also have a refinement criterion above the threshold. The number of
layers can be set to zero if needed, the default is 1 buffer layer.
with 0 < c < 1. The fractional copy will diffuse the value of the criterion among the neighbour
cells. If the criterion value in the neighbour cells is bigger than the value of the criterion in the
reference cell multiply by the fraction ratio, the cell will not be refined. For non-smooth criterion,
this guarantees a smooth transition in cell size from often-refined cells to the original grid size.
The default is 1 buffer layer with a fraction of 0.6.
If "full" and "fractional" buffer layers are required, the "full" one is first applied by the flow
solver and then the "fractional" one.
FIGURE 24.27
Buffer types
Grids for viscous computations may have special boundary layers close to the walls. Options are
available to protect these boundary layers during grid refinement. The measures typically affect a
'column' of boundary layer cells laying above one wall face. The possibilities are:
1. keeping the cells of a column together during redistribution,
2. preventing refinement in the boundary layer (and removing any existing refinement),
3. ensuring that all cells of a column have the same refinement.
Measure 2 is not absolute, it may be overridden by grid quality constraints. Measure 3 however, is
enforced. Which measures are applied, depends on the choice of the user:
l For Longitudinal direction only, measures 1 and 3 are taken, and 2 only in the direction
normal to the wall. In other words: only refinement perpendicular to the wall is allowed.
l With Any refinement, only measure 1 is applied. Thus, there will be refinement parallel to the
surface.
Usually, this is the right choice for criteria with the Flux component Hessian.
l When Ignore boundary layers is chosen, there is no protection. Boundary layers are treated
like the other cells of the mesh and any refinement is allowed.
No Refinement option sets the refinement criterion to zero in the boundary layer, however some
mesh quality rules that are applied later on can still cause refinement in the boundary layer,
notably the inner product rule: if the division of a cell would cause the inner product of its faces
normal vectors with the line cell center - face center of its neighbour cells to fall below a given
threshold, then the neighbour has to be refined as well. This typically causes columns of refined
cells.
The adaptive grid refinement can be limited to a rectangular box. Using this method, the total
number of resulting cells can be reduced. It is important to note that the goal of a box is not to
apply refinement inside, but to prevent from refinement outside it. Inside the box, the criterion
decides how to adapt the grid.
By default the boxes are not active. Besides, coordinates are set to very large size to be sure that the
box will have no influence by default.
FIGURE 24.29
Box refinement page
With this choice, grid adaptation according to the selected refinement criterion will be performed
in the restricted area defined by a box displayed in yellow in the graphics area, which is set by
specifying its minimum and maximum coordinates in x, y, and z-direction.
If the specified coordinates are outside the domain geometry, the bounding box is restricted to the
domain geometry.
FIGURE 24.30
Effect of Isotropic refinement restriction: x-refinement restricted by Xmax.=1.05 (left); no box
restriction(right)
Different boxes can be specified for each direction. In case of isotropic criterion, the boxes will
have no influence at all. For the directional refinement criterion, different boxes may be set for
each of the three components of the criterion and displayed respectively in green, blue and gray in
the graphics area.
If both common box and direction-specific boxes are defined, the size of each of the six sizes of
the box for the directions X, Y or Z, is set to the largest in absolute value of the sizes specified in
the common box and the direction-specific box.
If the specified coordinates are outside the domain geometry, the bounding box is restricted to the
domain geometry.
When this option is deactivated (default), the limiting boxes are based on the original grid without
mesh deformation or motion: a cell is seen as inside or outside the box depending on its
coordinates in the original grid. For mono-domain computations, it means that the box follows the
domain wherever it moves, thus following the body (since the body has limited motion
amplitude).
For multi-domain meshes, as domains may move significantly with respect to each other, the
boxes defined on the original mesh may not be in the right position. By using this option, the
boxes can be rigidly attached to a body to follow its motions. The definition of the box
coordinates still refers to the original grid. This feature is particularly useful for maneuvering cases
such as course keeping where the ship is typically moving inside the domain (figure 4).
As the boxes must be recomputed to follow the body motions, the computation time is slightly
increased.
The follower box should not be activated when the relative motions of the domains are minor, like
in seakeeping cases (figure 5).
The Control page contains several parameters, of different types, which control the global
behavior of the grid refinement algorithm. The first two parameters control the frequency of the
adaptive grid refinement method during the computation:
l Number of steps before first call to refinement procedure (default: 50): the solver will wait
50 time steps (unsteady and multi-fluid/steady computation) or 50 iterations (mono-fluid/steady
computation) before calling to the adaptive grid refinement method for the first time.
l Number of steps between calls to refinement procedure (default: 50): this input represents
the number of time steps (or iterations) between two calls to the adaptive grid refinement
procedure.
The following group of parameters allow to control the following aspects of the adaptive
refinement:
l Reinitialize solution after first refinement: when this option is activated, the grid refinement
in the first time step is performed iteratively. After the first refinement step, the flow solution
(notably the volume fraction and the pressure) is reinitialized, using the same procedure which
is used before the computation. The grid is then refined again, and the solution is reinitialized.
This procedure is repeated until the refined grid no longer changes. The goal of this procedure
When using this option, the initial refinement is performed during the first time step (i.e.
Number of steps before first call to refinement procedure is automatically grayed out and
set to 0).
If the initial position of the water surface corresponds to a grid plane, it will not refine at the
free surface location. To avoid this situation, the advanced parameter Base free surface
criterion on smoothed mass fraction should be activated.
If the computation using the Adaptive grid refinement is specified as a Restart from previous
computation in the "Initial Solution" (p. 392), the Reinitialize solution after first refinement
parameter will be grayed out and deactivated.
l Project refined grid onto body surfaces: this method projects the adaptively refined mesh
(containing a body) onto a triangulated surface file giving the desired shape for this body. The
linear interpolation that is used to position the new nodes during grid refinement, does not put
these nodes onto the body surface. In order to capture the geometry accurately, the refined grid
has to be reprojected onto the body geometry. The implementation is based on a triangulated
surface file (.its file), created from the triangulation of the domain description file (.dom file).
The .its file is generated by the hexpress2isis tool.
The projection method is also used with optimization suites (see Projection chapter).
The next control concerns the available memory for the computation.
This parameter is machine-dependent, not simulation-dependent. Once the maximum for a machine is
known, the same value can be used for every simulation.
The next box relates to the Averaged criterion: If activated, the refinement criterion values (i.e.
the decision on how much a cell is refined) are computed by evaluating the chosen refinement
criterion in the instantaneous flow at regular intervals and subsequently averaging these values.
This averaged criterion is then used for the mesh adaptation. The average can be performed over
the entire duration of the computation (minus an optional start-up interval at the beginning).
Alternatively (and preferably), a sliding window average can be used. Two parameters are
available to control this criterion:
1. Number of steps before first calculation of average
2. Number of steps between updates of average
These two keywords specify the frequency with which the instantaneous criterion is computed
and added to the average.
The principle is the same as for the adaptive refinement: the first criterion evaluation takes
place during the time step Number of steps before first calculation of average + 1 and from
then on, the criterion is evaluated every Number of steps between updates of average time
steps. A third parameter is available for this criterion:
l Calculate using moving averages:
The sliding window functionality is coupled with the adaptive refinement steps. It is
executed by saving several tables of averaged criterion values. Each table contains the
information gathered between 2 refinement procedures and is updated with the frequency
defined by Number of steps between updates of average. By subsequently averaging
over these tables, a moving average over a longer period is obtained. After each refinement
procedure, a new table is created and the information is reset.
Current limitations:
The averaged criterion is not compatible with the following criteria:
l Free surface (directional)
l Free surface + pressure Hessian
l Pressure gradient (isotropic)
l Velocity gradient (isotropic)
l Vorticity (isotropic)
l Systematic
The Averaged criterion is particularly useful for strongly unsteady computations (e.g. computations
for which flow structure and global forces are strongly time dependent), where using classic AGR
The last frame relates to the Refinement convergence criterion: if activated, it monitors the
evolving number of cells and stops the activity of the adaptive grid refinement if the change in
number of cells falls below a user defined threshold. The following parameters define this
convergence criterion:
l Total number of adaptation calls in the check window : defines the number of mesh
adaptation calls (starting from the last one) used for the reference average;
l Length of the sliding window: defines the number of mesh adaptation calls (starting from the
last one) used for the comparison average;
l Tolerance: defines the threshold (in %) for the criterion.
The criterion stops the adaptive grid refinement if the difference between the reference and
comparison average falls below the tolerance.
This convergence criterion is particularly helpful for resistance cases with low Froude numbers. For
other applications (for example high speed boats), it is not recommended as it decrease the pressure
solver efficiency, resulting in a slight increase of the total computation time.
The following global best practices are available here for adaptive grid refinement. For the
application-specific guidelines, please consult this section.
The general principle of the free surface criterion is that it adds greater precision to the free-
surface definition for simulations on meshes that are already reasonably fine. A general principle
is that the best simulations are obtained when the original Hexpress mesh is very regular. The
cells in the original mesh must be as nearly rectangular as possible.
Refer to the dedicated section in seakeeping best practices: Adaptive grid refinement for
resistance.
Ship in waves
Refer to the dedicated section in seakeeping best practices: Adaptive grid refinement for
seakeeping.
The use of combined criterion is recommended to make the grid sufficiently fine below the free
surface in order to resolve the orbital velocity of the wave field that is simulated, as free- surface
criterion only provides a finer grid at the location of the water surface.
Impact
This type of flow is characterized by very rapid, violent motion of the water surface. A time step
adapted to the Courant number is mandatory. Settings for the computation can be chosen as in the
2D Falling Object Tutorial.
Hydrofoils
Refer to the dedicated section in hydrofoil best practices: Adaptive grid refinement for foils.
The use of combined criterion is recommended to ensure that the mesh is sufficiently fine and not
miss important flow features.
Criteria based on Hessian matrices adapt the mesh throughout the computational domain. These
criteria have the capacity to generate an adapted fine mesh starting from an initial mesh that is
coarse everywhere. Typical applications include wake flow simulation, vortex capturing, and the
precise computation of pressure peaks. The Hessian criteria on their own are meant for: mono-
fluid flow; for free-surface flow, see "Combined criteria" (p. 561).
For the constant , we have the following rough indication for ship-type flows: 0.2 corresponds to a
reasonably coarse mesh, 0.1 is medium-fine, and 0.05 gives a very fine mesh.
A Minimum cell size must be set. The minimum value for this parameter is the thickness of the
first layer on the boundary. Usually, larger values can be chosen, a good choice is often between
L*10-3.
Grid quality: Diffusion layers are not critical. One or two full buffer layers can be used if desired.
For the FCH, the Boundary layer protection should be set to Any refinement in general. For
the PH, Any refinement is recommended but Longitudinal only is also acceptable.
Box: It is recommended to restrict all refinement to a box which excludes only the outflow part of
the domain (at least 1.0L from the outflow boundary), in order to diffuse wakes and vortices. If
the far wake is deemed not important, the limit of this box can be moved forward.
The description of the geometry in the domain file must be of very high quality, otherwise the
adaptive refinement will detect the edges of the individual triangles and refine there. Typically,
this means that all triangles should be at least several times smaller than the faces of the
original mesh which cover the same surface.
These criteria can be used for multi-fluid computations in the same situations where the Hessian
criteria would be used for mono-fluid computations (section "Criteria based on second spatial
derivatives" (p. 557)). An additional application is capturing any type of surface wave, which can
be performed with the Free surface + Pressure Hessian criterion starting from a coarse mesh
without any initial free-surface refinement.
The baseline principle is to limit or remove the refinement of the free-surface in the initial mesh,
otherwise there is nothing for AGR to refine.
Additional information: see the "Criteria based on second spatial derivatives" (p. 557).
Grid checks and troubleshooting: Points to watch out for are:
l Too many cells are created? Check that the alpha Hessian multiplier and the minimum cell size
have been set correctly.
l The water surface is always contained within the automatically refined mesh? This must be
checked in time since the computation is unsteady. When in doubt, use surface probes (Cut
plane) to check. If this happens, reduce the time step, reduce the number of time steps between
refinements (but do not choose less than 2) or increase the number of full criterion copy layers.
l The water surface is completely contained within the refined zone of the original mesh?
The flow is steady or nearly steady. The water surface moves little with respect to the mesh, even
if high Courant numbers are chosen. The ship may have imposed or solved motion. The
combination with the Pressure Hessian criterion is necessary to accurately capture the wave
propagation, which depends on the discretization of the pressure field just underneath the surface.
Refer to the dedicated section in seakeeping best practices: Adaptive grid refinement for
resistance.
Ship in waves
In this type of flow, the free surface moves with respect to the grid but this movement is not very
violent. The flow is fully unsteady and it is important to achieve low Courant numbers in order to
preserve the sharpness of the water surface. The combination with the Pressure Hessian criterion
is necessary to accurately capture the wave propagation, which depends on the discretization of
the pressure field just underneath the surface.
Refer to the dedicated section in seakeeping best practices: Adaptive grid refinement for
seakeeping.
Mesh set up
Prepare the mesh with usual precision to capture the free surface correctly.
Set Maximum number of refinements of initial cells to maximum 2 or 3 and adapt the threshold
accordingly.
Grid quality
l Set diffusion for smooth flows to 1 or 2 full buffer layers and 0 fractional,
l Optional: change the Boundary layer protection to No refinement.
Boxes
The boxes can be used for vortex tracking. The boxes are meant to focus at specific parts of the
flow and to limit the refinement where it is not needed. When in doubt, it is advised to choose
large boxes. The criterion determines the refinement and not the box.
Frequency
l For steady simulations, it is advise to wait for convergence before the refinement call. 500 time
steps (or iterations) are usually necessary. A frequency of 25 time steps (or 50 iterations) is
advised.
l For full unsteady simulations, the refinement should be performed every 2 - 4 time steps. For
stability reasons, it is strongly advised to perform at least 5 time steps before the first
refinement.
Systematic refinement criteria are predominantly meant to be applied in a restart procedure where
the solution is initialized on a coarse grid ("coarse grid initialization"). This means that the
transient part of the simulation (e.g. where the ship is brought up to speed) is performed on a
coarse grid to reduce the computation time needed by the solver for this part of the computation.
The restart is then performed with either the Systematic or Multisurface + Systematic Adaptive
Grid Refinement criterion activated. The approach followed here is similar to the grid-to-grid
restart procedure, but while the latter allows more control over the cell count in the refined mesh,
the current approach improves the quality and robustness of the solution due to the more similar
topology of the coarse and fine grids. Additionally, the systematic refinement criteria allow
working inside a single project (folder) with a single mesh, improving the productivity inside the
Fine Marine workflow. The different coarse grid initialization procedures are schematized in the
flow chart below.
l Using systematic refinement criteria can lead to the creation of a large number of cells as the cells
in the coarse grid are halved in each direction. Subsequently, the number of grid cells resulting
from a single systematic refinement is approximately five times the number of cells defined in the
coarse grid. As indicated by the flowchart above, using the systematic refinement criteria is
therefore discouraged if only limited computational resources are available.
As for the other criteria, the general principle holds that very regular meshes lead to the highest
quality of results. Very regular meshes are obtained if the cells of the initial mesh (the so called
"Euler cells") of Hexpress are as close to cubic as possible. The quality of the coarse mesh
directly influences the quality of the systematically refined one. Cells with high skewness and low
orthogonality should be avoided wherever possible, as these may cause issues after the grid has
been refined using the Systematic criterion. A more extensive definition of a "good" mesh is
provided in the FAQ on Mesh Quality.
In case the computation using the Systematic criterion suddenly diverges shortly after the restart,
the reason is usually the solution on the coarse grid. A good starting point to identify possible
issues on the coarse grid is the discretization of the free surface, as also explained in the FAQ on
Physics of the computation. If there are already issues on the coarse grid during the initialization,
refining the grid using the Systematic criterion will not improve the situation.
Criterion::
l The Systematic criterion does not allow the specification of additional options in this tab.
l For the Multisurface + Systematic criterion, the guidelines for the "Free surface criterion" (p.
587) should be followed with respect to the target and minimum cell size of the free surface
refinements. The Number of grid levels specifies how many systematic refinements of the
initial mesh should be done. Specifying 1 level corresponds to a single refinement.
Convergence
Continuing the computation on the coarse grid after achieving convergence does not reduce the
convergence time on the refined grid of the restarting computation. Therefore, the Convergence
checker should be activated for the coarse grid computation and can be activated for the restart.
The Convergence booster can also be used for the initialization computation if an acceleration
ramp is defined for the analyzed body.
A restart is always performed on the refined mesh. In the case that the number of partitions
changes between the two computations, the history of cell refinement in the current mesh is lost
and the refinement present in this grid cannot be undone. Hence, it is advised to keep the same
number of partitions while performing a restart.
If a restart is made with a different criterion with the same number of partitions, the refinement
due to the first criterion will be undone, as it is no longer considered necessary by the new
criterion. This can be a desired effect.
If one wishes to perform a restart with a different criterion, while keeping the refinement created
by a first criterion, the files family.cpr present in the block directories /b??? must be deleted
before running the restart. This destroys the history of cell refinement in the current mesh, which
means that the refinement of the current mesh is not undone.
Different methods are available to analyze the refinements produced by the adaptive grid
refinement method.
The file 'nb_cell.dat' is created in the computation directory when automatic grid refinement is
activated. This file shows the evolution of the total number of cells created during the
computation. If it increased a lot whereas it was not expected, the first idea is to try to modify the
settings of the automatic grid refinement to produce less cells (increase the threshold, decrease the
diffusion, etc.).
The evolution of the number of cells from this file can be checked in a form of a plot using the
"Results Analysis" (p. 746) tool.
The flow solver stores in memory the mesh and the solution. For the adaptive grid refinement,
since the size of the mesh will vary during the simulation, the data to store in memory tables will
also vary. Hence, the flow solver will allocate large tables and partially fill them up. It is up to the
user to define this allocation with the maximum number of cells per partition (see dedicated
parameter in "Refinement Control" (p. 582)).
The main idea is to look at the refinements from vertical or horizontal cutting planes or from the
boundaries of the domain. For domain boundaries, just select the mirror or external patches and
display the mesh on them. This allows to verify the cells size or the cells density, especially for
free surface criteria. Concerning the cutting planes, precise the direction of interest (using the
normal X, Y or Z) and progressively translate the cutting plane using the Step scrolling button
from the Cutting plane menu.
FIGURE 24.36
Cutting plane menu to check the refined grid
Estimated converged cell size is a vector field to be activated in the Output menu as an optional
variable. It gives the expected cell sizes in a converged mesh, in X, Y and Z-direction, based on
The Overset grid approach or Overlapping grids or Chimera approach allows the interpolation of
the fluid solution between two (or more) grids that are overlapping. This methodology implemented in
the Fine Marine solver widens the range of applications that can be studied.
The Overset grid management menu is available in theNumerical parameters section in the Fine
Marine interface:
FIGURE 25.1
Overset grid management menu
Overset grids technology is not applicable when combined with the Free surface (directional)
"Refinement Criteria" (p. 549) of an adaptive grid refinement due to its non-tensorial nature.
Therefore a tensorial free surface criterion should be used instead.
Overset grids technology is not compatible with the "Specific Numerical Parameters" (p. 945)
reverseRenumbering_.
In this section
25.1 Introduction 603
25.2 GUI and Parameters 607
25.3 Best practices 610
25.4 Examples 616
The Overset grid approach provides the capability to solve complex configurations, especially
for large body motions. This approach is also known as Overlapping grids or Chimera approach.
The concept is that two (or more) domains are allowed to overlap and the solution is interpolated
in between them. This methodology allows to have good mesh quality in each domain and
unlimited complexity in the body motions.
FIGURE 25.2
Illustration of overlapping grids
For instance, modeling the ship, rudder and propeller motions can be performed combining
"Sliding Patch Motion" (p. 378) and Overset grid approach.
FIGURE 25.4
Example of a Sliding and Overset grids combined project: propeller domain (pink) consists of
Sliding patch connection and Overset domain defines the rudder region (gray)
Step 1
Two domains or more are created: typically a background domain containing the physical
boundaries and a separate domain surrounding the solid body of interest. Both regions are meshed
separately.
Step 2
The outer boundaries of the overlapping domain are set to Overset in the "External Condition"
(p. 276) page of the Boundary conditions menu.
Step 3
The relationship between the computational grids should be defined in the Overset grid
management menu explained in the "GUI and Parameters" (p. 607) page.
Cells treatment
As the overlapping domain moves within the background region, the overlapping cells will
evolve during the simulation. Information is transferred between the two regions through these
overlapping cells thanks to the so-called procedure of blanking:
l active: regular equations are solved,
l blanked: no equations are solved, cells temporarily or permanently non-active,
l interpolated: value are updated respecting active cells located in another domain.
l This method should not be preferred when standard approaches can be applied such as mesh
deformation or sliding grids. The main reason is that the overset grid approach relies on
multiple interpolations between several computational grids (more than sliding grids) which
can lead to difficulties for mass conservation or local flow transfer. As a result, the user might
observe convergence instabilities including forces oscillations.
l Overset grid method is not yet fully operational for extreme shallow water, squat effect and
grounding and require further calibration. Also, precise guidelines are not yet available for all
kind of applications. However, the user is invited to read the "Best practices" (p. 610) page.
Domain specification
The general concept of the Overset grid management is based on creating multiple domain
configurations and defining them with appropriate parameters. For each Domain specification,
the following options are available:
l Overlapping: domain containing a solid body. If there are no solid bodies defined in the
overlapping domain, it will be considered as a Background domain.
l Background: general domain mesh region acting as a background region; always considered
behind an overlapping domain.
l Linked : linked domain are dedicated to domains which are defined as sliding grids but
contained inside an overset domain.
This is typically the case for a propeller+ship simulation where the propeller is connected to the
ship domain with sliding grids whereas the ship is contained inside an overlapping domains.
Linked domain together with the parent domain forms a composite domain from the Overset grid
management point of view. External boundaries of the parent domain will be applied to the linked
domains; solid bodies of both linked and parent domains will be considered as solid bodies of the
composite domain.
By checking the box in front of the domain names (the eye symbol) it is possible to visualize the
concerned domain in the graphical area.
When a body is located inside an overset domain defined as Overlapping , the mesh deformation
around the body should be set as Rigid motion instead of Weighted deformation (see " Domain
Mesh Management" (p. 382)).
Bodies on domain boundaries is an Expert parameter that allows to select the bodies from the
a background domain which are physical boundaries and risk to be overlapped.
l The Distance parameter needs to be defined together with this option. It defines a protected
region with all the cells in the background domain within the Distance value from the physical
boundary. The cells inside the protected region will always remain active. If an overlapping
domain enters this region its cells will automatically be blanked.
See the Best practices section for more details.
When this parameter is activated the flow solver uses an explicit scheme for overset interpolation,
else implicit is used.
Implicit is more robust but slower whereas explicit is faster but less robust.
Explicit scheme requires that:
l The flow through the boundaries is not evolving too abruptly in an unsteady way.
l Overset domain boundaries are not updated frequently, in other words, grids relative motion
must be slow.
Default: Not activated
Interpolation methods
To provide connection between domains, data exchange is supported with the following
interpolations:
l Least-squares
l Distance-weighted
To ensure the second order accuracy the Least-squares interpolation is generally used with the
specified minimum interpolation coefficient threshold value. To control the interpolation method
manually an expert parameter OversetMinInterCoeff_ described in "Specific Numerical
Parameters" (p. 945) can be used, but it is not recommended to change it until all the other
guidelines have been verified. By changing its value to 0 the use of distance- weighted
interpolation will be enforced.
Visualization
General flow analysis for the overset projects has no major difference compared to the other types
of projects. But it is also possible to get the visualization of the status of the cells: active, blanked
and interpolated.
Mesh generation
When creating the mesh project within Hexpress for an overset computation type the following
recommendations can be considered:
l The cell size ratio between overlapping and background domains should be close to 1 if not
exactly 1 to improve the transfer of information at interpolation location.More details on how
to achieve it at the end of this section.
l If the free surface crosses the overset boundaries, try to respect an aspect ratio of 2, maximum
4 at the intersection of free surface and overlapping domain. If AGR is used, this restriction
can be applied on the background only and the AGR will propagate the same aspect ratio in
the overlapping domain.
The plugin Overset_internal_surface_creation is available in Hexpress to create low aspect
ratio cells in this area of the Background mesh.
l When possible, the mesh for all the domains should be done with the domain aligned with
Cartesian axes and then rotated at the end of the mesh generation using the Grid > Mesh
transformation... menu in Hexpress or Initial conditions menu of the "Dynamic Parameters"
(p. 344) in the Fine Marine interface. This will ensure a better quality for the surface mesh.
l In the Background domain, specific refinement zones close to the Overlapping domains can
be created so that the mesh in the background is matching the initial mesh of the overlapping
domain.
l To improve the interpolation, the cell size should be as uniform as possible on the overset
boundaries, otherwise it is not possible to get a good cell size matching. This means that the
overset boundaries should be far enough from the body to avoid that the mesh diffusion from
the solid body reaches the overset boundaries and increase the refinement in this area.
2. Retrieve Init_ cell_ size_ Background using the law "8 refinements at free- surface":
;
Note: this is the Initial Cell Size in all three directions, in order to have an isotropic mesh.
3. Retrieve Init_cell_size_Overlapping using the law: ;
Note: This is the Initial Cell Size in all three directions, in order to have an isotropic mesh.
Note 2: The value 4 is coming from the fact that AGR prefers to have a maximum of 4
refinement to perform. Like this, with value 4, 4 AGR refinements match 8 refinements on the
free-surface.
4. Create the Background domain following the usual guidelines (see Application guidelines for
Domain size in Resistance cases). The domain size should not be perfectly respected, it should
match a multiple of Init_cell_size_Background;
Example
The background domain should be 5.5LOA in X-direction with LOA = 5.25m,
which means a total target dimension of 28.875m in X-direction.
The Initial Cell Size background is .
size should be increased slightly to match a round number of initial cells: 21.48
rounded up to 22 cells in X-direction.
Final domain size in X-direction: 29.568m
1. One internal surface or refinement box for free-surface refinement (usual setup, LOA/1000);
2. One internal surface:
l X dimensions: 1.2*overlapping_domain_size_X (to handle possible rotations)
l Y dimensions: 1.2*overlapping_domain_size_Y (to handle possible rotations)
l Z dimensions: free-surface location
l Parameters: same as free-surface parameters except aspect ratio defined as 4.
Note: The goal is to have less anisotropy at interpolation location.
3. Add a refinement box in the Background with refinement 4 (same as Init_ cell_ size_
Overlapping) around the Overlapping domain area with diffusion of 3.
Note: The goal is to have the exact same mesh size at interpolation location.
For the study for the ship having a rudder and a rudder box, the guideline is to generate an
overlapping domain for the rudder which goes over the rudder box.
The Background domain is always considered behind an Overlapping domain using Overset.
Hence, if the background domain contains solid walls and if the overlapping domain overlaps
those solid walls, then they will be invisible for the flow.
The ground patch in a shallow water configuration is a common example.
There are two different options to deal with this configuration:
1. Define the background domain as Overlapping (recommended): the interpolation will be
performed half way between the solid bodies in each domain.
2. Keep the background domain defined as Background and
l set the Is a physical boundary condition present? menu to Yes
l specify the Distance value as the minimum expected distance between the solids.
The cells within Distance from the solid boundary in the Background domain will always
remain active. If the overlapping domain enters this region its cell will be blanked.
The Distance value should be small enough to avoid that the closest cells to the body in the
overlapping domain enter the protected region of the Background domain.
The Distance value should cover a minimum of 4 cells in addition to the Viscous layer
thickness in the Background domain for the interpolation to properly occur and to provide a
physical solution.
FIGURE 25.9
Example of close position case for Solid boundaries, pressure fields distribution:
sufficient (top) and insufficient (bottom) distance between the solid bodies
This figure illustrates the case where the body is very close to the border of the computational
area. If the Distance value is not big enough, the viscous layers and the body can be
overlapped by the background's protected layer.
Numerical setup
Considering known specifics of an overset approach the following advices can be applied:
l Actuator disk:
An overset domain should never overlap an actuator disk or the forces in the disk will not be
computed properly.
Several examples of the Overset grid management menu settings for different computational
cases can be found below.
Two domains are created, one for the life boat and one for the background flow see "Illustration
of overlapping grids" (p. 603).
l 'Background': fluid domain,
l 'Life boat': overlapping domain with the boat defined as a Solid body.
FIGURE 25.10
Setup for the Life boat launch case
Set-up:
l Background: fluid domain with the Solid walls of the channel,
l DTMB: overlapping domain with the DTMB hull as a Solid body.
FIGURE 25.12
Setup for the Overtaking maneuver case
Two domains are defined, 1 for the submarine and 1 for the torpedo.
l 'Submarine': overlapping domain with the submarine hull as a Solid body,
l 'Arm': overlapping domain with the torpedo hull as a Solid body.
FIGURE 25.13
Setup for the Submarine torpedo launch case
Circular motion test for a ship with propeller and rudder interaction
In that case, it is possible to combine the overlapping and sliding grids since the propeller domain
do not usually intersect with any other part of the geometry.
l Rudder: overlapping domain,
l Propeller: linked domain,
l Ship : overlapping domain (in this example, it should not be "background", otherwise the
overlapping domain of the moving rudder would blank the cells of the rudder box attached to
the ship).
Complete setups
Democases 9, 10 & 11 are defined using the Overset technology and can be taken as examples.
PROJECTION
A projection method is present in Fine Marine to project an existing mesh onto a triangulated surface
file. For instance, this feature can be used for the computation optimization: a series of different body
shapes is provided by the optimization suite. Using the projection, an existing grid can be adapted
quickly and automatically to each shape, and the converged state of a baseline solution on the grid can
be used as starting point for each computation.
This projection menu is only available under the license (no additional cost).
It is not compatible with 2D projects. Also, at least 1 body needs to be defined in the project.
In this section
26.1 Workflow 622
26.2 Projection Strategy 622
26.3 Examples 623
26.4 General Parameters 624
26.5 Expert Parameters 624
The mesh is projected onto a triangulated surface file in a simple, flow solver specific format: the
".its" file ("ISIS-CFD Triangulated Surface"), whose format is described in the Triangulated
surface file chapter.
For a given mesh, the initial ("baseline") ".its" file is generated by "hexpress2isis", based on the
".dom" file of the Hexpress mesh. A computation on the initial mesh can then be started.
Optimization suites can deform this baseline (the initial ".its" file) into different variants (new
".its" files) for subsequent computations on different hull forms.
Pre-requisites:
l The ".its" files must be topologically equivalent to the original ".its" file: it should contain the
same number of surfaces and triangles but also the IDs of the surfaces should be the same,
l The computation must contain a solid body.
Summary:
1. Run the pre- processing step: if working from the task manager activate only the "Pre-
processing" subtask. If working in batch run hxp2isis_no_interactivemarineXX -print. This will
create the initial .its file in the _mesh folder.
2. Run a first computation with Projection active using the initial ".its" file from the _mesh folder.
3. Run a restart computation with a modified its file.
Projection of the body surface nodes onto the triangulated surface is performed at the very
beginning of a computation and directly after each adaptive grid refinement step.
It is assumed that the geometry of the body is given in a triangulated surface file with extension
".its". During the basic projection, for each node in the mesh that lies on the surface of the body,
the triangle in the ".its" file that lies closest to the node is searched. The node is then moved to the
surface of this triangle.
26.3 EXAMPLES
As an example, three scenarios of one or more computations are described. The type of projection
is indicated as "AT" (node on arbitrary triangle), or "PT" (node on predefined triangle). For
optimization, it is assumed that a first ("baseline") computation is performed on the original grid,
followed by several computations on hulls that have been deformed by the optimizer.
To specify which file should be used as a baseline for the optimization runs, a file chooser appears
as soon as the projection method is activated.
FIGURE 26.1
Projection menu
For the first baseline computation, the projection should already be active. Hence, it is mandatory
to perform the pre-processing once without projection, go back to this menu, select the ".its" file
newly generated and launch the complete simulation.
Two expert parameters are linked to the projection method: itsProjectionDeactivateCBFP_ and
itsProjectionDeactivateCBFS_. These two parameters control the speed and the robustness of
the projection method.
CONTROL VARIABLES
This section describes global and expert parameters for the management of steady or unsteady
computations.
In this section
27.1 General Parameters 626
27.2 List of Available Time Laws 635
27.3 Sub-cycling Acceleration 642
27.4 Expert Parameters 646
This menu allows to define global parameters to manage the computation for its convergence,
time stepping and expert parameters.
FIGURE 27.1
Time step tab parameters
The Time step tab is grayed out in case of steady mono fluid computations.
Convergence tab
FIGURE 27.2
Convergence tab parameters
General parameters
l For steady simulations, the Maximum number of iterationsrepresents the maximum number
of iterations before stopping the computation. Also, Convergence criteria corresponds to the
number of orders of magnitude the infinite norm of the residuals must decrease to stop the
computation. If this criteria is not reached, the computation proceeds until the Maximum
number of iterations has been performed.
l For simulations involving a time step, the input Maximum number of non linear iterationsis
the maximum number of non- linear iterations per time step. Convergence criteria,
corresponds to the maximum number of orders of magnitude the infinite norm of the residuals
must decrease during each time step. If this criteria is not reached the solver proceeds until the
Maximum number of non-linear iterations has been performed.
Highly unsteady simulations or locally high mesh densities or clustering of cells have an impact
on the number of nonlinear iterations to impose. Hence, it is advised to increase this value in case
of local important refinements. This will ensure a better convergence order. The user is invited to
check the tutorials, democases and FAQ to know how many non linear iterations should be used
for practical cases.
The input named Save solution every corresponds to the frequency for the solver to save the
entire solution including the 3D flow data, for a future post processing or restart. The
frequency can be defined in iterations for a steady simulation or in time steps for time
dependent simulation.
Convergence parameters
l Convergence booster
The possibility to activate convergence booster has been developed to accelerate the
resistance simulations using a dynamic evolution of the maximum number of non linear
iterations and under relaxation values during the ship acceleration. Indeed, since its transient
acceleration is out of interest, the solver will start the simulation with a low number of non
linear iterations but high values of under relaxation, as shown in the figure below, to boost the
convergence before coming back to the requested parameters by the user from the interface at
the end of the acceleration ramp.
It is recommended to use this convergence booster with a classic 1/2 sinusoidal acceleration ramp,
with a duration as proposed by the C-Wizard for instance (0.2m/s2 of acceleration)
Starting Fine Marine v10.2, this capability is integrated in the solver. The original dynamic library
remains available in the installation folder under "_data\isis\dynamic_lib\Convergence_booster\"
as an example. In this folder, the "src" folder contains the source code of the library that the user
might want to check or edit.
l Transpiration method
The transpiration method changes the boundary conditions for moving bodies. Instead of
deforming the mesh at every non-linear iteration, it uses a transpiration boundary condition.
With this approach, the update of mesh boundaries and mesh deformation algorithms are
applied only once per time step, decreasing the computational cost.
Current limitations:
l Not dedicated to fully unsteady simulations like sea keeping, cavitation, etc.
l The convergence of all physical bodies is checked.
Stability interval represents the stability interval computed by the last X% of time steps, during
which the averaged quantities should be less than the tolerance.
Average last represents the percentage of the last time steps to compute the averaged value of
the selected quantities. It is possible to define 0% to take the last value only. The default value
is 10%.
Tolerance is the value oscillation compared to its averaged value under which the quantity is
considered as converged .
In order to avoid pathological cases in the very beginning of the simulation, the convergence
check is not done from the very beginning of the simulation, but only starting from the time
step number defined by Check after input.
Convergence criterion
The library stops the computation when the two following conditions are met:
1. Ax (acceleration along the x-direction) is zero during the stability interval.
2. The relative error between the last X% of time steps and the average value is below the
tolerance for each selected quantity.
The formula for the relative error is given by:
where time step number i runs across last X% of time steps, qi is the quantity value at time step
i, the reference value a is the average of the last time steps. The quantity qi is considered
converged when ε < Tolerance.
The code prints information in the .std file of the computation (and hence visible in the Task
Manager information window while running the simulation through the graphical user
interface) to inform the user about the settings that will be used and the current status of the
convergence check:
l Before the first time step, the setup is displayed.
l During the simulation, the status of the convergence is given. A variable can be
"converged" or "not converged".
Examples
Hydrofoil
l Stability interval 20
l Average last 0
l Tolerance 1.0
l Check after 100
l Check quantities Fx, Fz, Fy, Mx, My, Mz
Ship resistance
l Stability interval 30
l Average last 10
l Tolerance 1.0
l Check after 200
l Check quantities Fx, Tz, Ry
Open water propeller
l Stability interval 10
l Average last 10
l Tolerance 1.0
l Check after 100
l Check quantities Fx, Mx
In Fine Marine, various time step laws are implemented. It is possible to choose among five
different laws:
l Uniform
l Linear
l Sinusoidal
l Hyperbolic Tangent
l Adapted to Courant Number
Default values are initially proposed for each law according to current values of Lref and Vref from
the Flow model menu. If one changes them, a warning will appear to know if the interface should
compute the new default values or not.
The sub- cycling acceleration is not described in this section. Please go directly to Sub- cycling
Acceleration to know more about this feature.
Uniform Law
It is recommended to use the previous formula to compute the time step value, where Δ t is the time
step value (seconds), Lref and Vref are the reference length and velocity respectively. The reference
velocity, Vref, can be taken from the body speed. The reference length, Lref, can be based on the water
line. These values should be entered in the Flow Model menu (see Reynolds and Froude Numbers).
Linear Law
The time step will be first equal to Δti until Ti. Then the time step will increase linearly from Δti to
Δtf starting from Ti and finishing at Tf. The time step will be then equal to Δtf for the rest of the
computation.
Default values:
l Initial time step:
Sinusoidal Law
The time step can also evolve with a sinusoidal law. The amplitude A should be specified, as well
as the period T and the mean time step value Δt m . An initial time T i is imposed to define the
starting time of the oscillations during the computation.
Default values:
l Average of the time step:
l Amplitude:
l Period:
FIGURE 27.8
Sinusoidal Law Scheme
The time step will be first equal to Δti until Ti. Then the time step will increase as an hyperbolic
curve from Δti to Δtf starting from Ti and finishing at Tf. The time step will be then equal to Δtf for
the rest of the computation.
Default values:
l Initial time step:
FIGURE 27.9
Hyperbolic Law Scheme
This law is adaptive: the time step is not known in advance and will be adapted at each time step
to reach the target Courant number.
Different criteria are available and can be combined:
l Free surface: The Courant number is based on the flow velocity. The checked cells are the
ones close to the free surface (which means with the mass fraction in the range [0.1;0.9]). Only
available when Multi-fluid is activated in the Fluid model menu.
l Overset grids relative motions: The Courant number is based on the grids relative velocity,
not on the flow. The checked cells are the ones at the overset interfaces. Only available when
Activate overset grid is activated in the Overset grid management menu.
Parameters
l Number of time steps N: The maximum number of time steps. Defaults: 1000
l Courant number Co: The target Courant number. To ensure a good transfer of information
through the overset and sliding interfaces, a maximum Courant number of 1 at sliding
interfaces and 0.5 at overset interfaces is recommended (more information in "Best practices"
(p. 610) section). Default: 0.3 for free surface, 1.0 for grids relative motions.
l Maximum time step: The maximum value for the time step. This value should be set carefully
to fit all the criteria other than the Courant number. Default:
l Time of the simulation Tmax: The maximum physical time to simulate. Note that if the
Number of time steps is not big enough, this time of simulation may not be reached. Default:
l For simulations with unknown motions of overlapping or sliding grids. For instance:
l Roll damping simulations,
l Maneuvers simulations with ship sailing in a Earth fixed frame background domain,
l Self-propulsion studies with propeller resolved propeller velocity (mode 2),
l etc.
l When grids relative velocities change during the simulation. Using UNIFORM time step law,
the time step must be small enough to respect the Courant number condition when the velocity
is the highest. ADAPTED TO COURANT NB law reduces the time step value only when
necessary, reducing significantly the needed number of time step to simulate a given physical
time and so the CPU cost. For instance:
l Simulations with rudders located in an overset grid. In that case the time step can higher
when the rudders are not rotating,
l Roll damping simulations,
It is important to know that the time step law adapted to Courant number does not guarantee that the
Courant number will be always under the expected value. Since this law is based on the Courant
number calculated from the previous time step, the solver estimates what will be the time step for the
next one. If high velocity fluctuations are observed, this Courant number changes a lot, hence the law
can give Courant number above the objective.
When unsteady animation have to be created, it is recommended to use seconds instead of timesteps
in the Output>Probe interval menu.
The use of sub-cycling acceleration is no longer recommended in Fine Marine 9.2 and later.
Introduction
The checked cells Courant number is the one close to the free surface (which means with the mass
fraction in the range [0.1;0.9]). The Courant numbers far from the free surface are out of interest.
This method is available for both steady and unsteady free surface simulations. However, in
the unsteady mode, this method has not been validated enough; thus the symbol BETA has
been added. This functionality must be used with care and it is provided only for testing and
not for production.
Layout
When activating this option, the interface requires the same extra inputs for each time law:
l Maximum number of sub-cycles: corresponds to the maximum splits number of the global time
step to reach the target Courant number,
l Target courant number: represents the target Courant number for the selected computation
FIGURE 27.12
Activation of the sub-cycling acceleration method
For each time law, the interface gives information in italic about the influence of the sub- cycling
acceleration on the time step.
Example
The following example is based on the linear time law. Lref and Vref are equal to 3.048 m and
1.531 m/s respectively, without solved motion. In that case, 5 maximum sub-cycles have been set
to reach a target Courant number of 5. The initial time step ΔTi is then multiplied by 5 (and its
name changed to "Global ΔTi") and the same for ΔTf (please check the description of the formula
used to compute default values in the Linear Law section). The final time step used for the global
simulation is 0.0995, whereas the minimal final sub-cycling time step used for the advection of the
volume fraction equation is 0.0199 in that case.
FIGURE 27.13
Example of sub-cycling acceleration with the linear time law
The number of sub-cycles effectively used will be the minimum needed to reach the target
Courant number (if this number is lower than the specified Maximum number of sub-cycles). In
the other case, when the target Courant number can not be obtained with the specified Maximum
number of sub-cycles, the computation will be performed using this maximum number of splits.
With this procedure, the diffusion of the interface now depends on the sub-cycle Courant number,
which is lower than the Courant number originally obtained with the global time step.
This fact leads to two possible ways of using this method:
1. One can use the same uniform time step as usual, and can activate the sub-cycles acceleration
method to decrease the Courant number, and then get a more accurate description of the
interface. In this case, the CPU time is increased with respect to a classical computation, but
the quality of the result will be improved.
2. One can use a larger global time step (for example five times the usual time step), and activates
the sub-cycling acceleration method to reach approximately the same (or even a little bit lower)
sub-cycle Courant Number compared to a classical computation. Here, the accuracy is the
same as one obtained with a classical computation, but CPU time is greatly reduced.
This 2nd way is used by the interface to compute the default values.
Remarks
l A simple way to control the sub-cycling procedure is to voluntarily limit the number of sub-
cycles to a given value. In this case, one can put a very low value for the target Courant
number. In that case, the sub-cycle Courant number will be approximately equal to the global
Courant number divided by the number of splits.
l If a global time step is too important for a simulation with solved d.o.f., the flow/motion
coupling will become instable. To overcome this difficulty, the quasi-static method should be
used too (see Quasi-Static Approach). This procedure will remain stable even for larger time
steps.
l The association of the sub-cycling acceleration method with the time step law 'Adapted to
Courant number' can be more convenient. In this case, the specified Courant number does not
take into account the sub-cycling process. Indeed, for the velocity/pressure coupling, it can be
Under the Expert parameters tab of the Computation control/Control Variables page a list of
non-interfaced expert parameters is available. As stated in the interface, these parameters should
not be modified unless explicitly stated in this manual. See the "List of Expert Parameters" (p.
923) for a description and available options.
The parameters, if modified by the user, can be brought back to their default value at any time by
means of the Reset to default values button, available on the top right of the tab.
An Advanced>>> button provides the access to the specific Pressure solver parameters and is
available for both Steady and Unsteady computations.
For the moment BoomerAMG is not recommended for simulations with overlapping or sliding grids
since some cases can diverge. Hence, if one of these features is used, in "Dynamic switch" mode the
solver will not try to switch to BoomerAMG. In "BoomerAMG" mode, with sliding grids the solver
will try BoomerAMG, with overlapping grids, the solver will try BoomerAMG only if the parameter
Explicit coupling is activated in the Overset grid management menu. Anyway, the solver can still
switch to PCGSTAB if it doesn't converge.
If the flow and grids relative motions are quite steady, overset domain boundaries will not be updated
frequently so the interpolation should be stable enough to activate the parameter Explicit coupling
together with "BoomerAMG" mode. In that case the solver will try BoomerAMG to benefit from its
acceleration. An example of this scenario is when a ship is inside an overset domain and will
eventually reach a final steady position.
OUTPUT
This chapter is dedicated to the output available in Fine Marine. A certain number of quantities are
automatically output by the Fine Marine flow solver. The output contains the information necessary to
make a restart of the computation.
Furthermore, Cfview allows to calculate derived quantities, which limits the memory size of the
outputs. All outputs generated by the solver for Cfview are written in ".d1.s*" files for scalar quantities
and in ".d1.v*" files for vector quantities. These binary files can then be processed by the Cfview
visualisation software, which reads the ".cfv" file to determine which quantity is associated with which
file.
The last section summarizes the different backups that is possible to create depending on the objective.
In this section
28.1 Automatically computed variables 652
28.2 Output 653
28.3 Backups 677
Some parameters do not need to be specified as outputs in order to be visualized in Cfview. The
following quantities are automatically generated by the flow solver and are therefore directly
available when opening a project in Cfview:
l Relative velocity or Absolute velocity vector
The relative velocity will be computed if the traveling shot option is active for the corresponding
degree of freedom, otherwise, the absolute velocity will be computed. For instance, in case of
resistance applications, with an imposed forward motion in the X- direction, activating the
traveling shot for Tx will create the relative velocity vectors.
l Pressure (normal stress).
This pressure is coming from the flow solver directly and contains the influence of the static and
hydrodynamic pressures where the static pressure is defined as:
These variables do not appear in the output menu because they are automatically generated by the
solver. They are mandatory to make a restart.
If an unsteady computation is selected, the flow solver needs all the previous listed quantities at the
time step T but also at T-ΔT if a second order accurate restart is needed (except the gradients and the
pressure).
For solid wall (with no-slipping boundary or with wall function), the velocity defined at the wall is
not shown, but the extrapolated velocity from the internal cells to the wall. This will allow to check in
Cfview the velocity distribution near the wall, identify the problematical region when convergence
problems appear, plotting the wall limiting streamline, etc.
28.2 OUTPUT
This page offers the possibility to prescribe the kinematic parameters to be displayed in the
Monitor (they have no influence on the computation). The page is divided in several sections
described below all related to the degrees of freedom specified in Body Motion menu (see
"Degrees of Freedom" (p. 319)): translations (including their velocity and acceleration), rotations
(with angular velocity and acceleration).
The last option is dedicated to the frame of the Body force decomposition. The forces and
moments observed in the Monitor can be expressed in the Global frame or in the Body frame of
reference. The moments will be computed on the Reference point if there are no solved motions
or on the Center of Gravityif at least one degree of freedom is solved.
For example:
For the simulation with Solved Trim, where α is the Trim angle.
Note that if half body configuration is used the forces computed by the solver will correspond to
half body.
An example of the Body Motions page is shown on FIGURE 28.1 for a free trim and sinkage
motion with a X-axis forward motion.
FIGURE 28.1
Default Body Motion page
To avoid singular configurations induced by any classical decomposition of the body orientation by
three successive rotations, the whole kinematics (for the body and for the mesh too) can be described
using quaternion.
Wave making resistance (noted R W ) is a notion different from the outputs that one can find from
the flow solver. To do the correlation with Fine Marine, we should write the definition of the total
resistance RT:
with R F the viscous resistance (which depends from the Reynolds number), R f the form
resistance and R W the wave resistance (which depends from the Froude number). Besides, R f =
kRF, k being the form factor.
In Fine Marine:
with i = x,y,z (see Forces and moments for more information). Hence, for the component x:
RT = Fx,
RF corresponds to FxV,
RW+Rf is equal to FxP.
In other words, Fx = FxV+FxP = FxV+Fx_Form+Fx_WaveMaking
From the above definition: F x P = F x_ Form + F x_ WaveMaking . But by default we cannot
distinguish the last 2 terms.
To know exactly what is the intensity of the wave making resistance, we could do the following
exercise (but time consuming):
ITTC 57 formula
To verify the experimental data, coming from ITTC 57 formula, one can write as well:
with SDWL the wetted surface, ρ the density of the water and
l The second option is to activate the pressure correction feature implemented in the Fine Marine
flow solver. This correction estimates the pressure load on the missing surfaces at the interface
between the non-closed geometrical entities by interpolating from the pressure field around the
edges of the surfaces generating the holes.
The correction is activated by copying the following lines to the "Computations Management"
(p. 41). The comment editor is accessed by clicking on the “Comment” button at the bottom of
the computation’s menu of the GUI.
*
*** FORCES : COMPUTE SUB-BODY HOLE FORCES ?
*
YES
When active, the pressure correction feature generates 6 additional files with “_O” extension in
the computation directory for each one of the total forces and total moments (“eff_Fx_O.dat”,
“eff_Fy_O.dat”, “eff_Fz_O.dat”, “eff_Mx_O.dat”, “eff_My_O.dat” and “eff_Mz_O.dat”).
These files include the pressure correction on the non-closed geometrical entities (bodies or
sub-bodies) that are automatically detected in the project by the algorithm. The file structure is
identical to the non-corrected eff_*.dat files.
The missing pressure field on the unmodelled interface between the geometrical entities does not
come from a CFD computation but from an interpolation in the solver based on the surrounding
pressure field. As a result, the accuracy of the correction will reduce as the size of the hole
increases with respect to the size of the bodies.
The corrected forces and moments can not be displayed in the monitor. The values displayed in
the Monitor still correspond to the non-corrected results.
Flow variables can be periodically saved on disk during the computation for the post-processing
of unsteady simulations.
Regarding the expected memory usage when there are probes specified for the post-processing,
the following example can be useful.
Several studies have been carried out for the cases with mesh sizes from 3 to 18 Mcells and
volume probes for the mesh, hydrodynamic pressure and mass fraction defined.
It has been noticed, that the relation between the probe size and the number of cells is linear, thus
the following result has been obtained:
l Probe size when non-reconstructed: 0.04 Gb/Mcells
l Probe size when reconstructed: 0.27 Gb/Mcells
Where "probe size non-reconstructed" is the size of all files needed for the reconstruction (located
in project_name/bxxx folders) for 1 volume probe.
And "probe size reconstructed" is the sum of the "probe size non-reconstructed" plus the size of
all the files created during the reconstruction for 1 volume probe.
Information on probes reconstruction procedures can also be found in the Post-Processing chapter.
If the the forces-by-section tool is used with the goal of obtaining the sectional force distribution at
the same intervals as the saved (volume) probes, the wall-forces probe needs to be activated. If only
surface probes are saved, this can be done in the GUI. If only volume probes are saved, this needs to
be done through the Comment field:
**** PROBE WALL FORCES: FREQUENCY*
***
f0
***
where f corresponds to the probe saving frequency.
When reconstructing the probes, the computation folder will contain as many wall_data_n# files as
probes. These files are needed for running forces-by-section, which can be done by using e.g. a simple
bash script containing a loop over these wall_data files:
for src in wall_data_n#*;do
forces_by_section -body=1<< EOF
$src
A. Surface Probes
Fine Marine is able to save surface probes during the computation. The advantage is to use less
disk space and to load them into Cfview very rapidly. However, saving a surface means that only
this surface will be available: if the surface was not correctly defined, the computation should be
started again. This feature should be preferred for making animations or when the surfaces
locations and types are well known and sufficient for the computation analysis.
In this menu, five surface probe types are present and are described below. They can be removed
anytime by pressing the Remove button.
There are two common parameters to all surfaces type:
l Save probe every X timesteps/seconds: it corresponds to the frequency of the probe saving
(Probe interval) expressed in time steps or seconds for unsteady simulations.
l Save probe after X seconds: it delays the recording of the first probe by the given amount of
time (Probe start time), expressed either as absolute or relative to the starting time of the
selected computation.
By default, the surfaces will be saved in CGNS format (following SIDS standards). This format is
the one that Cfview will be able to open. But the format can be changed thanks the expert
parameter SurfaceProbeFormat_ (see the List of Advanced Parameters), which gives access to
CGNS (simple or double precision), STL and Tecplot formats.
Surface probe is based on dual meshes. As a consequence, the corners of a free surface or a cutting
plane can be not calculated and so not represented.
FIGURE 28.4
Surface data
Free surface
The free surface corresponds to a probe of the mass fraction, equal to 0.5. There is no property for
this surface probe type.
This surface is not available if mono-fluid configuration is selected in the Fluid model menu.
Isosurface
An isosurface variable must be given together with the desired isovalue. It is possible (but not
mandatory) to give an extra probe variable, whose values are saved on the isosurface to be used
for colouring the isosurface.
FIGURE 28.5
Isosurface properties
Cut plane
The position of the cutting plane is given with a normal vector (not necessarily of unit length) and
a point on the plane: the Origin. The variable to be saved on the cutting plane is the Quantity. It is
not mandatory to define a body to follow. If selected, the cutting plane moves according to the
body motion. If no body is selected, the plane remains fixed in space and time.
It is not advised to probe on the external boundaries of the computational domain with a cutting
plane: it can lead to an empty file.
Cylinder probe
Position and main particulars of Cylinder probe can be specified by the Origin coordinates X, Y,
Z; Normal vector coordinates; Radius and Height definitions provided in the Properties part of
the menu. The variable to be saved on the Cylinder probe is the Quantity. It is not mandatory to
define a body to follow. If selected, the probe moves according to the body motion. If no body is
selected, it remains fixed in space and time.
For the better quality of results representation in can be generally recommended to increase the
computational mesh resolution for the probed region to avoid "holes" into the results visualization.
Ellipsoid probe
Position and main particulars of Ellipsoid probe can be specified by the Origin coordinates (X,
Y, Z); Normal vector coordinates (X, Y, Z); Main axis radius and Perpendicular axis radius
definitions depending on the Normal vector specified and provided in the Properties part of the
menu. The variable to be saved on the Ellipsoid probe is the Quantity. It is not mandatory to
define a body to follow. If selected, the probe moves according to the body motion. If no body is
selected, it remains fixed in space and time.
For the better quality of results representation in can be generally recommended to increase the
computational mesh resolution for the probed region to avoid "holes" into the results visualization.
Wall probe
The wall probe allows to save quantities on the body's (or bodies) surface. By default the
Pressure is selected but it can be removed (pressing << button). An other quantities can be
added (pressing >> button). This probe gives access to the "identifier" (see the Identifier section)
of the body (or bodies), which will help to select independently some parts of the solid patches in
Cfview (useful to compute the forces for instance).
This surface probe must be used if one would like to see the geometry itself in Cfview. In that case,
just select any quantity from the list.
This probe replaces the Probe on wall feature from previous versions (before v2.3) and replaces
the wall_data.bin file for 3D computations (indeed, the surface probe is not available for 2D
projects). It saves those variables that are needed to compute the local wall forces as friction and
pressure (the complete set of data is: Fxv, Fyv, Fzv, P and Ci).
Even if this probe is not active, the information will be saved once at least at the end of the
computation anyway, in the file called wall_data.cpr . How to extract the data from this file? Run
post_surface tool from the computation directory, specify that this file should be converted and
choose your format of preference (see post_surface section for more details). Cfview is able to read
CGNS format.
B. Volume Probes
The probes "Correlation R13" and "Correlation R23" are not available in case of 2D projects.
Starting from v2.3, the Mesh probe is not proposed in the list but saved automatically as soon as an
other probe is saved.
For this type of probes, no reconstruction is required and data collected during the computation
will be stored into the output file "points_probe.dat" at every time step.
Two different kinds are available:
l Flow probes: probe a flow quantity at a specified location (X, Y and Z). Flow probes can
follow or not the body.
The available variables for probing are:
In 2D:Y- component for the wave probe and Z- component for the flow probe are not available.
If a probe is set outside of the flow domain (or inside the Body) a value of 0 is returned. Also, noise
in the signal can be observed in case of wave breaking but it can also lead to 0 values.
Point probes placed close to the boundaries of overset meshes show significant noise due to
interpolation between the overset and background grid. It is advised to place them away.
The output file content will depend on the choice of quantities and consist of: Time step ("Time"),
quantity names selected ("DYNAMIC PRESSURE 1", for instance), probe number, coordinates of
the point where the probe will be taken (X, Y, Z) and the values itself in columns below the name
of the quantity. An example of the "points_probe.dat" file for the Flow probes can be found
below:
#TITLE =(ISIS-CFD:4.1)
Limitations
l Total number of probes is limited to 99. The type of probe for each of these can be chosen
arbitrarily.
l Velocity and vorticity probes can move with the Body, but the probed velocity will respect the
global non-moving reference frame.
The value of y + is calculated based on the distance between the wall and the center of the first
cell off the wall.
l Courant number
l Vorticity
l Helicity
l Residuals
l Grid quality: non-orthogonality (scalar field representing the non-orthogonality of the current
mesh. (controlled by the FaceReconsGQNORT_ expert parameter).
l Estimated converged cell size
l Second invariant
l Correlation R11 (correlations are present for turbulence models only, and defined in section
2.4 of the Theoretical Manual)
l Correlation R12
l Correlation R13
l Correlation R22
l Correlation R23
l Correlation R33
The probes "Correlation R13" and "Correlation R23" are not available in case of 2D projects
The "Residuals" variable gives access to several quantities grouped together under a unique name,
depending on the choice of the turbulence model.
The hydrodynamic pressure is computed from the pressure P (normal stress) by the following
formula:
with P hd representing the hydrodynamic pressure and P hs the hydrostatic pressure. The latter is
defined by the formula:
with ρ the fluid density, g the absolute value of the gravity intensity, z the vertical position and z0
the initial free surface position. The value of c represents here the analytically defined value for
the volume fraction (connected to the Multi-Fluid model): when , and when
.
For the hydrodynamic pressure variable output the flow solver uses the dynamic position of the
boat and it is necessary to keep in mind the following specifics, depending on the type of data is
desired:
l Output data vs. measurements, when the Reference pressure is calibrated with the boat at rest
conditions, it is the Initial position of the Boat that should be used for this condition
l User defines which value for z should be used: to compare with the measurement data,
interpolating the mesh z value to the value at a face center will provide the appropriate
coordinate
l Also, when there is a wave generated by the wave generator or by the ship, water is obviously
going higher or lower than z0. But since the solver still considers the position of the free
surface being at rest (so z0) and not its dynamic position, it is as if the volume fraction in the
zone between z0 and the position of the real free surface is equal to 0.
l To obtain the same result as given by the flow solver, use the center of face value (Zf)
l To compute face center (Xf,Yf,Zf) and face area vector (Sxf, Syf, Szf) from the surface grid,
import the surface data, interpolate the face centered data to node, and output a postprocessing
data
Starting v8.2, a new way of computing the Hydrodynamic pressure using the actual position of
the free-surface has been introduced. It is active by default for new projects and can be deactivating
using the expert parameter DynPressOutputWithFS_:
Old method: the fluid type is defined by the position relative to the initial regardless of the value
of the mass fraction.
(1)
(3) when
(4) when
New method: the fluid type is determined by the flow field, equations (3) and (4) are unnecessary.
l The second invariant of the velocity gradient, noted Q, can be computed as:
where Si j = (U i, j + U j,i )/2 is the symmetric part - rate of strain and Ω i j = (U i, j - U j,i )/2 is the
non-symmetric part - rate of rotation.
As a remark, to get a dimensionless quantity Q* from Q, we can write:
l Estimated converged cell size: vector field which gives the expected cell sizes in a converged
mesh, in X, Y and Z-direction, based on the current refinement criterion and threshold from
the adaptive grid refinement technique. This field can be computed every time a solution is
saved. More information can be found in the chapter "Analysis of the refinements" (p. 598).
A mean flow variable corresponds to a time average output for the whole computation. They are
computed by a trapezoidal rule. The starting time of the averaging can be specified at the bottom
of the menu in seconds of simulated time. The starting time should be chosen such that the flow
has reached a steady state before averaging is activated, as otherwise transient effects will
influence the averaged result negatively. The averaging applies to all selected fields
simultaneously.
The list of available quantities is given below:
The probes Correlation R13 and Correlation R23 are not available in case of 2D projects.
Cavitation fraction mean flow variable is not available for the Steady monofluid computation.
FIGURE 28.13
Mean flow variables page
28.3 BACKUPS
When a project is finished, it is usually time to back it up. Depending on the available back-up
space, several options are outlined.
From the _mesh folder, only keep the files to be able to generate the mesh in Hexpress. The
extension of these files are .igg, .dom and .bcs. For the settings of the computation, only keep the
.iec file located in the project directory. Within these files, no results are saved.
One may also want to keep files only for a future post-processing (comparison, verification,
etc...). In that case, in the simulation directory, the following files should be kept to visualize the
integral quantities in the Monitor:
.res, eff_*.dat (18 files: pressure, viscous and total for 3 forces and 3 moments), Mvt_*.dat
If one also wants to keep the Cfview result, the following files in the simulation directory need to
be saved (for single domain simulations):
.cfv, .d1.s*, .d1.v*, if present: .hex, .bcs. Also keep the files from the _mesh folder.
In case of Overset computations, the .blanking file is also necessary for Cfview visualization.
For a restart, one can delete all the files dedicated to Cfview (see previous section). It is not
recommended to delete any other file.
More information about this post-processing tool can be found in Wake Flow Tool description of
the Cfview manual.
l Faces file (faces_original.cpr) in the _mesh folder.
l Nodes file of the final position of the ship ( nodes_ original.cpr in the _ mesh folder or
projectname_ computationname_ nodes.cpr in the computation directory in case of mesh
deformation).
l projectname_computationname_vel.cpr in the computation directory.
More information about this post-processing tool can be found in Forces by Section description of
the Cfview manual.
l current_part_number.dat
l wall_surface_grid.bin
l The wall_data.bin or wall_data.cpr found in each bXXX partition folder. The rest of files in
each bXXX folder can be deleted.
l Computation ".sim" file.
In this section
29.1 Launching Mode 680
29.2 Computation End 682
29.3 Monitoring 683
Once the settings of the computation are correctly defined, it is strongly advised to save the
project and the computation before starting to run the computation. See Main Menu Bar to know
how to save the project and the computation.
It is then possible to start the computation by clicking on the Start button (Serial is selected by
default). If multiple computations are selected at the same time, the same launching mode settings
will be applied to all selected computations. Dependencies due to restarts are automatically taken
into account in the scheduling performed by the Task Manager.
FIGURE 29.1
Launching mode menu
The sequential mode is useful for computations with a relatively small amount of cells. These can
be launched directly through the Fine Marine interface.
For parallel computations, the interface automatically switches to the Task Manager page (see
Parallel Computations ) and allows to define the parallel computation settings. The user can
already define the required number of cores in the Launching mode settings pop-up window. In
this window, the default number is set to the available number of cores of the machine.
FIGURE 29.2
Launching mode menu - parallel computations
At the bottom of the Task Manager window a Refresh Rate can be chosen. This rate determines
how frequently the Task Manager window is updated. A higher refresh rate will update the
information in the window more frequently but will use more of the available CPU.
FIGURE 29.3
Task Manager information window
When quitting the Fine Marine interface, all the message windows will remain open and the tasks
will continue. Closing a message window will immediately kill the corresponding computation.
At the end of a computation (or just a task, see Task Definition for the definition of a task), the
interface pops up a window called "Task Manager Info". This window contains information
about the performed tasks, giving the following information:
l computation path,
l computation name,
l pre-processing status (if selected),
l solver status (if selected),
l post-processing status (if selected).
The status are the same as in the Task Manager menu, in the section where the tasks are selected
(see Task Definition).
FIGURE 29.4
Task Manager information window
In addition, this pop up gives the opportunity to check the reason why a task failed. In the
example below, the flow solver crashed. The ".std" file of the computation can then be opened
directly in the pop up.
29.3 MONITORING
The Monitor can be launched as an external tool, with the command monitor -niversion marine#
where the # is the version of the software or directly from the Fine Marine interface by clicking on
the Start Monitor button in the main icon bar.
It is also possible to directly open one or several residuals files from the command line using the
command monitor -niversion marine# path_to_res1 path_to_res2 where path_to_res# indicates
the full path of the residual files to open immediately.
The monitor features can be used in on- line (during the simulation) or off- line (after the
simulation) mode to control the following items for one or several computations:
l the evolution of motions variables, forces, and momentum for the bodies and/or sub-bodies
l the choice of units to be used for results representation
l the range of values to be presented.
Fine Marine allows multi-computations analysis. Therefore, the convergence histories of multiple
(running or not) projects can be visualized at the same time. It is also possible to compare the
convergence history associated with different computational parameters for the same project.
The monitored variables are displayed as a x-y graph in the upper part of the window. The x-axis
represents the number of non-linear iterations or time steps computed by the flow solver. For the
y-axis, it is possible to display the residuals as well as motions variables, forces, and moments. In
this graphical section, the user can interactively zoom in and out according to the following
actions:
This box contains the list of loaded computation residual files. Two buttons are provided in this
box to Remove or Add residual files through a file chooser. The residual files .res describe the
iteration process of previous or current computations.
When opening the graphic control window, the residual files associated with the running applications
is automatically active.
Monitor will also load the Mvt_bodyname.dat and eff_*.dat files from the same computation
directory to visualize motions variables, forces, and moments (see "The eff_*.dat files" (p. 774)
section for their description). For each computation, the user will have the possibility to control
these different quantities depending on the type of simulation and the structure of bodies.
It is possible to make a multiple selection with the Shift or Ctrl key to select several files to display
Quantities unless the selected computations have a different structure of quantities. A different
structure means that available bodies and associated quantities differ between computations.
If several computations are performed at the same time, the curves associated with the different
projects are drawn in different colors. The buttons for the quantities to display act only on the
curves of the file selected through the Residual file menu.
If the loaded results belong to the running computation the Update now button will reload the
latest results of the running computation. The check box Auto update will set this procedure to
be done automatically each time step of the computation.
Display options
This part of the Monitor controls the way results will be represented.
l The check box for the Legend will show or hide the naming of the corresponding
computation results file in the graphical area.
l Activating Log scale check box is available only for the Residuals history and activates a
logarithmic axis representation for these residual values.
l Time span allows to select the time range for the quantity defined with time (second). Here
the first entry set the minimum values, second - the maximum. If some will be left blank (as by
default), quantities will not be limited from the corresponding side.
l Iterations limits the range for quantities defined per solver non linear iteration. The two entries
act as for the Time span.
l The Update now button updates the graph for the active residual file and the selected block.
l The Auto update option can be checked on to follow the iteration processes automatically.
This button is not active by default.
l The Draw average of last X [%] option can be checked to draw the average value of the last
X % of time steps/iterations in the graphical area.
If the data range is limited using Time span or Iterations fields, X % is still computed from the
original data and not from truncated ones.
Only Motions, Forces, Moments and User defined plots are supported for the averaging option.
Units
Within this section the choice of Units is providing the opportunity to set the Metric, Angle and
Speed units to be used for the quantities representation. Defaults are corresponding to the SI
metric system, by switching between choices it can be customized to Feet, Degrees and Knots
and available for the Motions tab of the Quantity to display menu. Following the general logic,
Knots can be applied to only Vx, Vy and Vz; Degrees to Rx, Ry, Rz; Feet to Tx, Ty, and Tz.
Behind the selection, the following formulas has been used for the units conversion:
1 m = 3.2808399 ft
1 rad = 180 grad/pi = 57.295779513 grad
In the Structure of Bodies, the current body/ sub-body can be selected to visualize the results of
the finished or running computation. Names of sub-bodies will follow the names given through
the Bodies and sub-bodies definition menu (see the "Body Definition" (p. 307) section for how
to define the sub-bodies).
FIGURE 29.7
Bodies with sub-bodies selections in the Monitor
The option to choose several bodies/ sub-bodies at the same time and select a quantity for them
simultaneously (multi-bodies curves plotting) allows user to compare curves between bodies/ sub-
bodies within the same project as well as between different projects.
If one selects Motions as a quantity type, all the sub-bodies become disabled for selection.
Curves for bodies within the same project will be distinguished by a tag at the end of the curves and
special markers (symbols) on the curves. These markers can be circle, triangle, diamond, square, etc...
If the project includes sliding patch(es), the Quantities to display will only give access to the
Motions page with the name Sliding_patches_# .
It is also possible to monitor the virtual bodies. For such projects the Structure of Bodies menu
will include the list of existing virtual bodies with names as Virtual_body_#. Only the Motions
page of the Quantities to display will be accessible. Details on how to create a sliding grid or a
virtual body can be found in the "Mesh Management" (p. 375) section.
Residuals
Availability of residuals to display depends on the type of calculation. If one residual quantity is
not available in the project output files, the corresponding checkbox will be disabled in the
interface.
One can select among the following Residuals:
l ResU, ResV, ResW (velocity components)
l ResP (pressure)
l ResK, Resω, Resε, Resνt (turbulence data, see Uniform Values for their definition)
The flow solver computes the residuals with the L2 norm during convergence:
with
For the other information, let's consider the example below from the ".std" file:
>>> ??? GAIN IN NL RESIDUE : 0.14E+02
>>> CONVERGENCE SPEED : 0.23E+00 ORDERS/ITER.
>>> 5 ITERATIONS FOR 0.11E+01 ORDERS
Once the "GAIN IN NL RESIDUE" is known, its logarithm to the basis 10 yields the value on
the third line (0.11E+1), whereas the convergence speed is this value divided by the number of
the non linear iterations (5 in this example).
Forces and Moments quantities are potentially available for the simulation (it depends if at least
one body has been defined in the interface, see Body Definition). If the quantity is not available in
the project output files corresponding checkbox will be disabled in the interface.
Forces and moments values are stored in the eff_*.dat files. They contain the information about
the global fluid forces and moments for each body and sub-body. If a half-body configuration was
used the forces for half body will be outputted. The moments will be computed on the Reference
point if there are no solved motions or on the Center of Gravityif at least one degree of freedom
is solved.
"F" represents the forces, "M" the momentum, "V" the viscous forces and "P" the non-viscous
forces (also called pressure component). For instance, "eff_FxV.dat" corresponds to the viscous
forces applied on the body along the X-axis.
The suffix "Dyn" means that there is a correction of the quantity to exclude the hydrostatic
pressure (see Optional Output Variables for its expression).
Fz_dyn is defined as Fz_dyn = Fz - Fz_pressure, where Fz_pressure is the integration of the pressure
defined by p=rho*g*z. z here is defined in the dynamic position, hence is different from the
Hydrostatic value (which is defined with the free surface at rest). In consequence, this Fz_dyn doesn't
have a real physical interpretation.
Motions Variables
Motions variables are only related to bodies. If the quantity is not available in the project output
files, the corresponding checkbox will not be present in the interface. Names of the variables
depend on the Cardan Angle activation (see Body Motion) and on the selected outputs in the
Output menu (described in Outputs). They are defined in the "Degrees of Freedom" (p. 319)
section. For instance, "Tz0" represents the evolution of the translation of the center of gravity of
the body along Z-axis in the initial frame of reference.
The Monitor includes the possibility to display body motion relative to the center of gravity (if no
center of gravity is defined in the computation settings, these checkbox will not be visible). In
such case, the Monitor presents checkboxes both for the original motion and its relative
counterpart in Motions. The relative motion checkboxes are named by adding "rel" to the motion
name.
FIGURE 29.8
Motion quantities
The Monitor reads the "body_param.dat" file to define the relative motions in addition to the "Mvt_
bodyname .dat" file.
The convergence of the Forces and Moment can be displayed for all the nonlinear iterations.
Unsteady Forces and Moments values are stored in the same eff_*.dat files as Forces and
Moments when an expert parameter SaveConvEfforts_ is set to "YES" in the Control variables
menu Advanced page, except for that unsteady values are marked by a negative time step. In the
Monitor Unsteady forces and Unsteady moments will appear as a separate Quantities page if
available in the computational results.
Amplitudes
For the computations applying the "Modal approach" (p. 514) Amplitudes of the generalized
displacement for each Mode calculated during the simulation will be available for the display.
The generalized displacement is giving the "weight" with which the Mode participates in the
global structure deformation. Quantities available are: "Amp_M1", "dAmp_M1", "d2Amp_M1"
meaning Amplitude of deformation, and its time derivatives. Results are taken from the motion
file: "Mvt_ bodyname.dat" stored for each fluid- structure interaction (FSI), naming Modal
approach computation type.
Actuator disk
The choice for Actuator disk is only present when an actuator disk with open water data is used
in the simulation, more information are available in the "Actuator Disk" (p. 406) menu. Hence,
the Monitor offers the possibility to display quantities such as the thrust, the torque and the active
fraction, for each actuator disk. Results are read from the actuator disk file: "eff_AD.dat" created
by the solver (the format is described in "Files Produced by the Fine Marine flow solver" (p.
772)).
When the tangential force is not activated, the quantity Q and Kq are not displayed.
Pin connections
The choice for Pin connections is only present when bodies connected with "PIN connection"
(p. 360) are defined in the simulation.
Monitor offers the possibility to display all the quantities available in the eff_ Pin_
ParentBodyIndex_LinkedBodyIndex.dat files. Those quantities are described in "Pin connection
file description" (p. 777).
FIGURE 29.10
Pin connections quantities
When the user chooses User defined plots, the list of plots is shown below with buttons Add,
Edit and Remove to manage these plots.
The user can add plots using the button Add and they will appear in the list. Each plot has the
associated checkbutton to control the plot visibility. When adding the plot, the user needs to
specify the plot formula in the dialog Add user defined plot.
FIGURE 29.12
Formula definition area
Pressing Help for syntax button shows the help for formula syntax to remember all the
possibilities and limitations offered by this feature.
Regarding the list of quantities, all motions, forces and moments are added as "QUANTITY_
BODY" where QUANTITY is the quantity name as it appears in the Quantities to display,
BODY is body or sub-body name as given in the Structure of bodies. Additionally the time unit
"t" is added to the list of quantities.
Plots defined in User defined plots are shown not only when that tab is active, they are shown
for other tabs too ("global" plots). To hide such a plot the user can uncheck it in the list or
completely remove it clicking on the button Remove.
If the formula cannot be evaluated (syntax error or undefined variable, for example), nothing will be
shown in the plot area.
The expression evaluator does not check the consistency of units. For this reason the units are not
mentioned in the plot for user defined functions.
Relative motions are not available in this list of quantities and thus they cannot be used inside
the formula as variables.
Residuals, actuator disk data and pin connection data are not available to be used in user
defined plots.
Hence, here is the formula to prescribe for the Y-component of the moments:
When Show user data check box is enabled, the Monitor displays quantities from the file "user_
data.csv" stored in the computation folder of the opened simulation. If the file is not present or the
Monitor could not extract any data from it (wrong format, wrong name, wrong file permissions,
etc.) , the check box becomes disabled. In a case of user mistake (wrong syntax of user_data.csv),
the user needs to correct the file and reload .res file (pressing Update now button will not enable
Show user data again).
Example
TASK MANAGER
Using the Solver menu in Fine Marine, computations can be started, suspended or killed. For basic task
management these menu items are sufficient.
The Task Manager provides more advanced features for the management of (multiple) tasks. It
allows the user to manage tasks on different machines on a network, to define parallel computations or
to delay tasks to a given date and time.
Before using the Task Manager for the first time it is important to first read the limitations as listed
below and the next section. This section provides important information for getting started with the
Task Manager . The user should read this section carefully to fully benefit of the capabilities of the
Task Manager .
From Fine Marine the Task Manager can be accessed by clicking on the Switch to TASK
MANAGER button on the main icon bar. The interface, as shown in FIGURE 30.1, will appear.
The Task Manager Interface is described in detail including a description of all its capabilities.
Task management through the use of scripts is also possible and has the benefit that it is not necessary
to remain logged on to the machine on which the tasks are launched. See the Task Management Using
Scripts section for more detail on the scripts to use to launch the software.
Limitations
The task manager have some limitations due to the current PVM and MPI libraries:
l UNIX to PC or PC to UNIX connections are not allowed.
l When a user launches Fine Marine on different machines, the connection between these machines is
not allowed.
In this section
30.1 Getting Started 700
30.2 The Task Manager Interface 704
30.3 Parallel Computations 710
30.4 Task Management Using Scripts 726
The Task Manager is based on the PVM library. It allows Fine Marine to control processes and
the communication between processes on all the machines available to the user. PVM works with
a virtual machine managed through a pvm daemon. In this section the way the PVM daemons
work and their limitations under Windows are described.
If a user starts the Fine Marine interface on a given computer where no PVM daemon is running,
Fine Marine will automatically start the process 'pvmd' on this machine that becomes the virtual
machine server for the user. When adding a host in the Task Manager(on the Hosts definition
page) a 'pvmd' is started on the remote computer and this machine is added to the virtual machine.
If the user now starts Fine Marine on this second computer the host list will contain the original
machine on which the 'pvmd' was first started. The original machine remains the server for all the
associated virtual machines.
If the user logs on a third computer on which no pvmd is running and starts the Fine Marine
interface, Fine Marine will start a 'pvmd' on this machine and this will become the server of a new
virtual machine. If the user attempts to add a machine already controlled by a different virtual
machine (for example contained in the list controlled by machine 1), he will see the message "can
not connect the virtual machine".
If the user wants to have the three computers in the same virtual machine, one of the virtual
machines servers must be shut down (on the Hosts definition page) and this machine can then be
added to the existing virtual machine.
On Windows, only one pvmd can run and therefore, only a single user can connect to the virtual
machine. If another user wants to use the software on the PC as server (Fine Marine) or as client
(CFD flow solver), the first user must shut down the pvm daemons on this machine. To shut
down go to the Hosts definition page and click on Shutdown. This will close the interface and
removes all the pvm daemons on the machine. Remove the files pvml.<userID> and
pvmd.<userID> from the directory defined by the PVM_TMP (by default C:\tmp).
During a Fine Marine session all the tasks defined by the user are stored in the "marinetasks" file
On Windows, the home directory can not contain white spaces: if the HOMEPATH variable of the
user contains white spaces, a HOME variable must be defined corresponding to a directory that does
not contain white spaces.
The Task Manager allows the user to control processes on all the machines connected to the
network. The rsh command is used by the PVM library to access the machines. Before using the
Task Manager, the following actions must be done:
1. Modify the ".rhosts" file in the home directory in all the machines which can be used by the
Task Manager. i.e.: if the machines machine1 and machine2 will be used by the users tasks
from machine_master, the file in machine1 and machine2 must be modified as follows:
line1: machine_master <login1>
where machine_master is the host name. login1 is optional. If the login on machine_master is
different from login1, the user in machine_master will be asked to supply a password when
connecting to machine1 and machine2.
The rhosts file needs to be ended by a blank line.
The file permission must be set to 'rw' (on UNIX: chmod 600 ~/.rhosts).
2. Test the rsh command on the desired machine: an external check that the ".rhosts" file is set
correctly is to enter the following command line:
rsh remote_host ls <Enter>
where remote_host is the name of the machine to connect to. If the login on the remote host is
not the same, ensure that the ".rhosts" file contains the line:
Due to a limitation of the PVM library, Fine Marine can not be connected to a machine where Fine
Marine has already been started. When PVM tries to establish the connection, it detects that a Fine
Marine server is already running and/or pvm daemons are still running and refuses the connection. To
solve this problem, the PVM daemons must be stopped on the machine on which Fine Marine must be
connected.
When having PVM problem, here is the procedure to stop PVM daemon:
1. Log on the machine where the connection must be established.
2. Start Fine Marine and open the Task Manager and use the button Shutdown of the page
Hosts Definition. The button Shutdown can be used to stop all the PVM daemons of all the
machines connected to this Fine Marine virtual server. This action will stop all the daemons on
all the machines connected, kill all the tasks and exit Fine Marine.
3. On UNIX: remove all the /tmp/pvmd.<userID> and /tmp/pvml.<userID> files. Under
Windows these files should be removed from the directory defined by PVM_TMP (by default
this directory is C:\tmp).
4. Repeat this operation for all the machines on which the problems appear.
5. If PVM still has a problem obtaining a connection, it will print an error message either to the
screen, or in the log file /tmp/pvml.<userID>. Please send this log file to our local Support
office.
All these operations apply only to the user's daemons and user's files. Multiple users can use the Task
Manager simultaneously. There is no interaction between the PVM daemons and the PVM log files
of different users.
The Task Manager does not allow the user to launch processes from a UNIX platform on a Windows
platform.
When a user stops the pvmd on a remote host (using Remove Host button on the Hosts Definition
page) and immediately try to restart it (using the Add Host... button), a message will appear stating
that it is not possible to connect. This problem does not occur in general since there is no need to
remove a host and add it immediately after. When it occurs the only solution is to wait until the
host is available again (after 5 to 10 minutes).
From time to time, when a user tries to connect on a remote host, an error message can appear
very briefly: "Can not connect to RSH Port!!!". This may happen on a Windows machine
connecting to a host, disconnecting, and trying to reconnect again to the same host. This will stop
the Fine Marine interface. Windows contains a socket release time parameter which keeps the
connection for some time.
The Task Manager allows the user to use mixed platform machines connected to the network. It
is possible to complete the computation setup on the Windows machine and launch steps of the
computation remotely on the Linux machine. Results can be visualized on both after.
Connection is not available to Windows Vista due to the existing Microsoft system limitations
"remote paths.txt" file can be placed inside the project directory. But it is also possible to place this
file above the project folder but it is important to ensure that it will be kept accessible for both:
remote and local machines.
All machines should be able to connect to all mapped network drives. If one drive is not accessible by
one machine, the computation will stop because of MPICH process.
The Hosts definition page shows the list of available hosts that the interface can be connected to,
the operating system of these machines, their respective connection status and their possible
queuing system if it exists on the machine. If the connection is not OK, it means that the
corresponding computer is no longer visible by the interface. This may occur, for example, if the
computer has been rebooted. Once can try to connect using the Connect button.
Add a Host
When clicking on the Add host... button, the interface asks for a host name and a login name. The
login name is optional. It is needed only if the user's login on the local host and the one on the
remote host are different.
FIGURE 30.2
Add a host pop-up window
When pressing the Accept button, the host name appears in the host list, with type of operating
system and its connection status. At this point, the host is ready to receive a task.
Remove Host
When clicking on the Remove Host button, the selected host is removed from the list, and is no
Shutdown
When clicking on the Shutdown button, all listed hosts are removed. Fine Marine exits as well.
All running tasks are killed. This option is useful when changing the machine where Fine Marine
is running on. See Getting Started for more details.
A task is a collection of subtasks where a subtask refers to the execution of a program with its
arguments (for instance a .simfile for Fine Marine flow solver). These arguments are provided in
the Task Arguments & Characteristics section of the Task Manager. The different subtasks of
a given task can be run individually if the output of one subtask is not needed by other ones. If the
output of one subtask is needed by another, it must be run sequentially. For example: the output of
a computation is used to start Cfview.
FIGURE 30.3
Tasks definition page
In this section, the defined tasks and their status can be controlled. To create a task, click on the
New Task button. The defaults task name can be modified by clicking on the Rename Task
button. The selected task can be removed by clicking on the Remove Task button.
Once a task has been created and defined (see following section), it can be started or stopped by
clicking on the Start, or Stop buttons, respectively.
Clicking the button Save Batch File, a script projectname_computationname.batch (or .bat for
Windows) and a machines.txt file will be created in the corresponding computation folder. This
script enables the user to launch the same computation in batch.
The script is also saved automatically when clicking on Start button from the Launching menu or
the Task Manager.
Tasks can be moved up and down in the Task List using the Move Up and Move Down buttons.
A task can be delayed clicking on the Delay button by two possible ways: enter the date and time
for when the task should be launched in the dialog box or create a dependency from another task.
For instance, the computation can be started only when the previous task is over. The delayed
task can be disabled using the Cancel button.
FIGURE 30.4
Task Delay pop-up window
When applying the data, a small watch in the task list indicates that the task is scheduled:
FIGURE 30.5
Task List with Delay window to start a task at a later moment
This section allows to define the number of partitions for the computation. Information about the
current used .sim file is also displayed.
FIGURE 30.6
Task Definition and Characteristics
Two types of license keys can be used to trigger parallel computations: either seat-locked type
(MPROC) whose associated cores cannot be shared between several simultaneous parallel
computations or flexible type (FULLFLEX) whose associated cores can be distributed between
several simultaneous parallel computations. The flow solver uses the seat-locked type in priority.
Activating the option Use Fullflex license key forces the flow solver to use the flexible license key
type in priority.
This option can be used in case both MPROC and FULLFLEX keys are available in the license file.
To manage the communication types between the cores of the machines during the computation,
the MPI library can be changed selecting between Intel MPI and OpenMPI. The recommendation
is to use the Intel MPI library. This choice affects the MPI libraries but also the flow solver's
executable.
Task Definition
In this section, the subtasks of the selected task from the Task List are discussed. A subtask is
During its execution, each task has its own ".log" file, stored in the computation directory after
execution. For instance, "hexpress2isis.log", "isis2cfview.log",... They contain the output from the
execution of the tools. Please send these log files to your local Support office if necessary
To add/remove a subtask, tick the corresponding subtask. Select the host on which the process
should be started in the pull-down box beneath the task list. The list contains the hosts that are in
the available as defined in the Hosts definition page. The Pause Solver button will suspend the
running computation and save the data (no effect on the pre and post-processing subtasks)
FIGURE 30.7
Launching mode menu
The Machine selection and balancing button allows to give the repartition of the partitions
through the machines of the network, defined in the Host Definition page. Besides, on a
machines network (or Cluster) where the speed of different nodes is different, it is desirable to
perform a domain decomposition so that the mesh size on each block is proportional to its power.
By default, grid cells are equally distributed among all processors. To change the repartition in
each partition, first activate the process by pressing the Weighted button. Then specify the weights
(in %) of all the partitions. An indication about the number of cells is given in the column Load
(cells).
FIGURE 30.8
Machine selection and balancing menu
Parallel computation reduces the calculation time of a given problem by splitting the task among a
number of processors, each of which works on part of the problem. Communication between
these different processes is necessary at the partition interfaces to ensure that the solution near the
boundaries is consistent across the different partitions.
A domain decomposition approach is taken to the parallelization of the flow solver. The Metis
library from the University of Minnesota is used to perform the partitioning. This library uses the
graph of the mesh to perform the partitioning, with the goals of minimizing the communication
cost, using a selection of metrics, and balancing the number of grid cells in each partition.
Most current generation processors feature hyperthreading capabilities; i.e. 2 logical processors exist
for a single physical processors. This allows for a speed-up of applications that use a multithreaded
code architecture. The Fine Marine solver, however, is a multi process solver. Each logical processor
therefore hosts a single process which uses the cache and memory bus intensively in order to transfer
large quantities of data. If multiple solver threads would be run on the same logical processor, the
required bandwidth of the memory bus would be insufficient to transfer the data efficiently.
Hyperthreading is therefore discouraged and the solver performance will not scale up when using
more than a single solver thread per physical core.
The number of specified partitions should therefore be smaller or at most equal to the amount of
physical CPU cores.
Each partition must be assigned to a separate process. When starting the computation each process
has a self- contained instance of the solver referencing its own input and output files.
Communication between overlapping ghost cells of the different processes occurs at various
points in the calculation, when updated values in the ghost cells are required.
The partitions have been optimized to balance the computational load, by ensuring the same
number of cells in each partition by default, and to reduce the inter-process communication, by
minimising the number of connections between the partitions.
A number of global communications are also necessary during the calculation to make global
variables, such as the residuals, available to all processes.
At the end of the computation the outputs from the different processes have to be collected and
the full solution is reconstructed by the "postmetis" tool, see Position and Wake flow section for
more information about it.
Parallel computations can be run directly through the interface using 2 different ways: a direct
submission or the via a queueing system.
A. Direct Submission
This method will run the task on distributed machines network, added by the Host definition
page. Only the Number of partitions and the Machine selection are required (see Task Definition).
When the computation is set up, one can be press the Start button.
In case user credentials have not been entered yet (see Installation note for this), the GUI will ask
the user to do it trough the interface the first time a parallel computation is performed on the
machine.
FIGURE 30.9
User credential warning
B. Queuing System
Task Manager provides a functionality to work with queuing system in two different modes:
Automatic System and Templates. This section will introduce the two possibilities.
Within the Task Manager, the parallel computation can be set-up on the Sun Grid Engine batch
system (SGE), the Portable Batch System (PBS), the Load Sharing Facility (LSF), the Load
Leveler or the Windows HPC. This system is only available when the interface detects one of
them installed on the Cluster (if several systems are installed, SGE is selected by default). One can
activate or deactivate this section of Task Manager by clicking on Activate checkbox.
FIGURE 30.10
Automatic System
l The selection of the Queueshould be first made among the available ones.
l The available Parallel environment is detected by the interface. It can be selected from the
combobox. The names are given by the system administrator.
l The Job Name for the computation should be specified.
The correct 'mpirun' executable corresponding to the parallel flow solver executable can not be
selected directly. It should be compiled for the user's cluster specifically. The selected version of
'isiscfdmpi' should correspond to the compiled version of 'mpirun'. To select the appropriate one, save
the script and edit it to use the one installed on the Cluster.
l Number of partitions and ".sim" file are defined in Task arguments & characteristic part.
l The subtasks are defined in Task definition part.
l Once the settings are defined, it is possible to save the queuing system script by clicking on
Save Script button or to save and submit it by clicking on the Submit Script button. The script
will be saved in the computation folder with the extension ".pbs" or ".sge" (according to the
detected queuing system). A special suffix depending on if pre-processing, post-processing
and solver are selected, will be added to the name of the file:
l Pre-processing: "_pre" suffix is added,
l Solver: "_solv" suffix is added,
l Post-processing: "_post" suffix is added.
Example
1. If all the three subtasks are selected and SGE system is detected, the generated script name is
"projectname_computationname_pre_solv_post.sge",
2. If pre-processing and solver subtasks are selected on a PBS system, the generated script name
is "projectname_computationname_pre_solv.pbs",
3. If only pre-processing is selected on a SGE system, the generated script name is "project_
computation_pre.sge".
A disk/partition must be shared between the nodes with read/write/execute access for all the Fine
Marine users. The "map network drive" functionality can be used for this purpose. The partition
must have the same name in all nodes. All the projects files for Fine Marine must be on this
partition when the case is running. Then the case can be archived anywhere once it has finished.
The workflow for Windows HPC is the following:
1. Setup the project
2. Save the computation and make sure UNC paths are written to the disk (see information below
for path substitution)
3. Add the computation to Task Manager and define number of cores. Note that the distribution
of tasks among the processors will be done automatically by the Windows HPC system. There
is no need to define Machines selections and balancing.
4. Name the Windows HPC job, save and submit the script,
5. Check the HPC window for the job status.
It is strongly recommended to use path substitution.
Template Mode
Template mode allows to create and manage scripts from pre-defined templates. By default, a set
of templates is available for the supported queuing systems SGE, PBS, LSF, Load Leveler and
Windows HPC (with corresponding extension .sge, .pbs, .lsf, .lvl and .bat) under the directory
"finemarine#/COMMON/queuing_templates/_marine". All types of templates are supported for
both OpenMPI and Intel MPI (except for Windows HPC).
Functionalities are listed below:
l New: opens a pop-up window where one can choose the template to build the script from.
Clicking on Next opens the Editor.
l Edit: edits the selected template in the Editor,
l Load: loads a template already created in the list,
l Unload: unloads a template from the list,
l Submit Script: submits the selected script to the queueing system.
Two extra options are also present to manage lists of scripts:
l Backup : saves the current list of scripts (the list is stored into the Home directory under
".numeca/marine/" folder)
l Restore: loads a list of scripts
Best Practice
Since the templates are pre-defined, it is possible to replace all the fields between two "*" (for
instance, "*job_name*") and assign some values to the shell variables (for example "ARCH_
SUFFIX="). Comments inside the script (# ) give some hints to users.
All the templates are divided into several sections. In the first section, all the queuing system
instructions are written. In the second section general environment and NUMECA variables are
defined. The third section is related to the computation (paths, output files, log files). The final
section contains the command lines to start the executable using variables defined in all the
previous sections. For instance, one can read the section How to Launch Fine Marine flow solver
in Parallel using SGE on LINUX to have more details about the required SGE inputs.
A. Introduction
This chapter explains the different steps to launch a computation on a remote cluster without
graphical interface and post-process the results locally.
The following configuration is taken as an example:
l Project setup is done on a local Windows computer.
l Simulations are performed on a remote Linux cluster.
l Results post-processed on the local Windows computer.
The commands have to be adapted for other OS but the workflow remains the same.
When the mesh and the computation are saved, the following files are created:
l project_path/_mesh/
l #.bcs
l #.hex
l #.dom
l #.fnmb
l #dist
l #domhydro_h2p_b1.out
l project_path/computation_directory/
l #.sim
l hexpress2isis.input
l isis2cfv.input
The following files have to be transferred on the cluster and the Fine Marine’s file architecture has
to be conserved. The 2 following directories must be created and directory:
l project_path/_mesh/
l #.bcs
l #.hex
l #.dom
l project_path/computation_directory/
l #.sim
l hexpress2isis.input
l isis2cfv.input
During this step, the HEXPRESS files are converted into files readable by ISIS-CFD. Execute
the following command from the computation directory on the cluster:
path/to/finemarine/installation/LINUX/isis/hexpress2isis_no_interactivex86_64 -relative -print
Or using the alias:
hxp2isis_no_interactivemarine82rc -relative -print
The -relative option is used to convert the absolute paths stored in the project files into relative
ones.
If the computation has to run in parallel, the mesh has to be partitioned. The partitioning is done
using Premetis with the following command:
path_to_finemarine/installation/LINUX/isis/premetisx86_64 -npar=number_of_partition -auto
-print -relative
Or using the alias:
premetismarine82 -npar=number_of_partition -auto -print -relative
number_of_partition being the desired number of cores for the computation.
The computation can be launched using the job management tool installed on the cluster. The
ISIS-CFD command should be launched with the -relative argument.
F. Reconstruction
For Cfview
The tool to reconstruct volumic data for Cfview is isis2cfview that can be launch with:
path_to_finemarine/installation/LINUX/isis/isis2cfviewx86_64 -relative -auto -print
Or using the alias:
isis2cfviewmarine82 -relative -auto -print
For Paraview
The tool to reconstruct data for Paraview is isis2vtk. The executable doesn’t have the -relative
mode to use relative paths. Instead of -relative, -local argument can be used. To do so, all the
required files must be placed in the computation directory. The file fsister_original.cpr has to be
copied from the _mesh directory to the computation directory.
This can be done by executing the following command from the computation directory:
cp ../_mesh/fsister_original.cpr ./
Then the following command can be executed:
path_to_finemarine/installation/LINUX/isis/isis2vtkx86_64 -print -auto -local
Or with the alias:
isis2vtkmarine82 -print -auto -local
For Cfview
Surface probe
l #.cfv file
l #.hex mentioned in the #.cfv file.
l All the #.d?.s? And #.d?.v? mentioned in the .cfv file.
As soon as all the files have been downloaded from the cluster, it is possible to use them directly
in Cfview by oppening the .cfv file from Cfview.
However it is not possible to start Cfview from the Fine Marine GUI directly because it doesn’t
know that the computation has run.
For Paraview
l Vtk directory
l #.vtu
l #.vtm
Since the paths in the Paraview files (#.vtm) are pointing to the .vtu files in the Vtk directory, the
architecture has to remain the same on the local machine.
The general steps involved in running a parallel computation are the following:
1. Create the full project with the Fine Marine interface
2. Save the project and the simulation file (.sim)
3. Run hxp2isis_no_interactive tool to create the mesh files readable by the flow solver, see
hexpress2isis
4. Create the required number of partitions with the tool premetis, using "-npar=" argument to
specify the number of partitions, see Mesh Partitioning
The extension of the file should be ".batch". In bold paths to be modified according to the
installation directory and the working directory.
#!/bin/sh
#############################################
## SETTINGS
#############################################
NI_VERSIONS_DIR="NUMECA_INSTALLATION_DIRECTORY\FineMarine121"
I_MPI_ROOT=$NI_VERSIONS_DIR/LINUX/_mpi/_impi5.0.3
. $I_MPI_ROOT/intel64/bin/mpivars.sh
export I_MPI_ROOT
LD_LIBRARY_PATH=$NI_VERSIONS_DIR/LINUX/_lib_sx86_64:$LD_LIBRARY_
PATH
export PATH
export LD_LIBRARY_PATH
#############################################
## WORKING DIRECTORY
#############################################
WDIR="<path_to_computation_directory>"
cd "$WDIR"
#############################################
## LAUNCH part
The extension of the file should be ".bat". In bold paths to be modified according to installation
and working directory.
@echo off
rem #########################################
rem ## SETTINGS
rem #########################################
set NI_VERSIONS_DIR=NUMECA_INSTALLATION_DIRECTORY\FineMarine121
set SOLVER_DIR=%NI_VERSIONS_DIR%\bin\isis64
rem #########################################
rem ## WORKING DIRECTORY
rem #########################################
set WDIR=<path_to_computation_directory>
pushd "%WDIR%"
rem #########################################
rem ## LAUNCH part
rem #########################################
"%SOLVER_DIR%\hexpress2isis_no_interactive.exe" -p="%WDIR%" > hexpress2isis.log
2>&1
"%SOLVER_DIR%\premetis.exe" -npar=<numprocs> -sim="%WDIR%\<computation_
name>.sim" -auto > premetis.log 2>&1
"%NI_VERSIONS_DIR%\impi5\mpiexec.exe" -mapall -delegate -env FLEXLM_BATCH 1 -
n <numprocs> -machinefile "%WDIR%\machines.txt" "%SOLVER_DIR%\isiscfd_
intelmpi.exe" > "%WDIR%\<computation_name>.std" 2>&1
From version 6.2, IntelMPI becomes the default for both LINUX and Windows. But it is possible
to change the default MPI libraries or even the type of executable to use for each future
computations.
To by-pass these defaults, a concept of MPI customizing has been introduced. Two ways are
available:
1. When using batch mode, one can use a virtual command called isiscfd_parallel with special
arguments indicating the version of mpi to use. For instance:
isiscfd_parallelmarine121 -mpich -np 2 -machinefile COMPUTATION_
PATH/machines.txt -print
The command will launch from the computation folder a parallel computation on 2 partitions
with the MPICH version of MPI. The available options for MPI are: -mpich and -ompi
It may be required to tune some parameters:
-mpi_leave_pinned: When mpi_leave_pinned is set to 1, OpenMPI aggressively leaves user
memory registered with the OpenFabrics network stack after the first time it is used with a send or
receive MPI function. This allows OpenMPI to avoid expensive registration / deregistration
function invocations for each send or receive MPI function. When the value is set to 0, it is
disable. -1 (default) let the system decides. Setting this parameter to 0 has helped to performed a
parallel partitioning on a cluster.
-btl_ ###_ eager_ limit (### being tcp, openib,sm,...): This argument controls the size of the
message above which the processor must wait a confirmation from the other processor that the
message has been properly delivered. If the message is smaller than the specified value, the
message is sent and the processor does not wait any confirmation of reception. If the message is
bigger than this value, the message is split in sub-packets of fixed size and each sub-packet is sent
one by one and the processor waits a confirmation of reception from the other processor before
sending the next packet. By removing this parameter, the size is reduced to the default one (4096
b= 4 Kb) and the processors must wait a confirmation from the other processors in order to go on
for all messages bigger than 4 kb. This may have an impact on the speed up but it secures the
communication.
One can also store in the .numeca/ folder from his home directory, a file called default_mpi . In
this case the user needs to specify some parameters for this mpi:
l NUMECA_MPI_DIR: absolute full path to the directory containing the mpirun to use,
l ISISCFD_MPI_EXEC: type of solver executable (ompi or intelmpi),
l ISISCFD_LD_LIBRARY_PATH: absolute full path to parallel solver libraries,
l ISISCFD_CLIENT_MPI_RUN: the name of the executable for MPI (mpirun).
An example of this file setting ompi as a default MPI for any computation:
NUMECA_MPI_DIR=NUMECA_INSTALLATION/finemarine121/LINUX/_mpi/_
ompi1.6/bin
ISISCFD_MPI_EXEC=ompi
ISISCFD_LD_LIBRARY_PATH=NUMECA_INSTALLATION/finemarine121/LINUX/_
mpi/_ompi1.6/lib
ISISCFD_CLIENT_MPI_RUN=mpirun
Default_mp i has the priority compared to the argument -<mpi_version> argument for isiscfd_
parallel virtual command. If there are several Fine Marine versions installed on the machine default_
mpi will be applied to all of them.
Example for Intel libraries as default MPI for any new computation
NUMECA_DIR=NUMECA_INSTALLATION/finemarine121/LINUX/_mpi/_impi5.0.3
NUMECA_MPI_DIR=$NUMECA_DIR/intel64/bin
ISISCFD_MPI_EXEC=intelmpi
ISISCFD_CLIENT_MPI_RUN=mpirun
ISISCFD_LD_LIBRARY_PATH=$NUMECA_DIR/intel64/lib
echo $NUMECA_MPI_DIR/mpivars.sh
I_MPI_ROOT=$NUMECA_DIR
. $NUMECA_MPI_DIR/mpivars.sh
Starting from Fine Marine v5.1 Intel® MPI library is available and starting from Fine Marine v5.1
-delegate argument is mandatory, although -impersonate is also possible, but this will use a limited
domain- based authentication. This does not allow file access to network drives (even if mapped
locally), and should only be used when other options are not working.
30.3.6 Troubleshooting
If the computation is interrupted for an unknown reason, more detailed information can be found
in the shell. The shell contains all relevant information, including MPI error messages. When the
computation is launched, the message can be written into a file with the command "> output.txt"
and should be sent to our local Support office. Please also send the output.list file from each
partition.
If the "Permission denied" message appears when launching the computation, it can be a problem
of rsh or ssh usage. Please check whether it is a true rsh or whether it is a link to ssh. If you are
using rsh, please check that the ".rhosts" file is well configured according to the installation note.
If you are using ssh, please make sure that ssh can work without the need of a password.
If you want to know if the solver is using ssh or rsh, choosing the correct "isiscfdmpi" executable
is explicit for mpich. However, for the other ones, the only way to know it, is to do the following
steps:
1. deactivate rsh
2. launch the executable
3. 2 possibilities:
l if it works, ssh is used,
l if it does not work: rsh is used. But if you want to use ssh, you can make a link from rsh to
ssh so that the executable will actually work using ssh.
30.3.7 Limitations
l The distributed memory mode is restricted to homogeneous system. While not strictly
necessary, it is recommended that machines of the same speed are used, as all partitions are of
equal size by default and therefore, require the same computational cost.
l The number of processors should be strictly equal to the number of partitions. It is possible to
run more than one process on a single machine, but each process must be defined separately.
This section provides information on how to launch the installed software from a shell, without
using Hexpress, Fine Marine or Cfview interfaces.
In the next sections the commands available to launch the software are described in more detail:
The command line to start the grid generator Hexpress contains its name, the full path name of the
mesh that will be saved (geometry ".dom" should be located in the same directory and should
have the same name) and the Hexpress release that will be used. The "-batch" option avoids the
display of the Hexpress graphical user interface.
1. Create a template and geometry files (".igg", ".bcs" and ".dom") using the Hexpress interface.
2. Start Hexpress to create a mesh from these files by typing:
hexpress -batch -project /user/test.igg -niversion marine121 -print
1. Create a template and geometry files (".igg", ".bcs" and ".dom") using the Hexpress interface.
2. Start Hexpress to create a mesh from these files by typing:
c:\NUMECA_SOFTWARE\finemarine121\bin\hexpress.exe -batch -project
c:\users\mesh.igg
Once the mesh generation has been performed and the set up of the computation has been done,
the pre-processing step can be executed. It consists in a succession of tools that convert Hexpress
mesh file into mesh files readable by the flow solver and prepare the partitioning if required. For
batch scripting, one can use the following tools and arguments (no question will be prompted to
users):
postmetis -niversion marine121 -print (optional: only required in case of a restart, it should be
launched from previous computation folder)
hxp2isis_no_interactive -niversion marine121 -print (to be launched from the new computation
folder)
premetis -npar=X -niversion marine121 -print (to be launched from the new computation folder)
See the External Tools chapter for a complete description of the tools
Two different ways to launch the flow solver in sequential using batch mode exist:
isiscfd /COMPUTATION_PATH/project_computation.sim -niversion <version> -print
OR
/INSTALLATION_DIRECTORY/isiscfd < /COMPUTATION_PATH/project_
computation.sim
Based on these considerations, one can easily create his own scripts as follows:
1. Create a script file (for example, with the name "batch.sh"). Such script file must be created
with execution permission in order to launch a series of computations. An example of a
"batch.sh" file for a series of computations on LINUX:
#! /bin/csh
isiscfd /COMPUTATION_PATH1/project_computation_1.sim -niversion <version> -print
isiscfd /COMPUTATION_PATH2/project_computation_2.sim -niversion <version> -print
The script is started in a C-shell due to its first line: "#! /bin/csh". This command line, to start
Fine Marine flow solver, contains its name, the full path name of the ".sim" and the Fine
Marine release that will be used:
2. Set Permission for execution for the script file "batch.sh" by typing the command: "chmod
755 batch.sh".
3. Check that the computation is ready to run (".bcs" file and ".sim" files already present in the
working directory).
4. Launch the script "batch.sh" by typing the script file name: "./batch.sh".
Clicking the button Save Batch File in the Task Manager menu, a script "projectname_
computationname.batch" will be created in the corresponding computation subfolder. This script
enables the user to launch the same computation in batch.
Create Script File "batch.bat". An example of "batch.bat" file for a series of computations:
Clicking the button Save Batch File in the Task Manager menu, a script "projectname_
computationname.bat" will be created in the corresponding computation subfolder. This script enables
the user to launch the same computation in batch.
Specifying the - auto option alone will work only when launching the flow solver from the
computation folder directly. Everything will be treated automatically with no input required. If it is
important to launch the flow solver from the directory other than the computation folder using the -
auto option, the simulation file (.sim) directory should be specified with the -sim= option.
This chapter focuses on the conception of scripts to launch the solver in parallel and explains the
details for both LINUX and Windows operating systems.
It is strongly recommended to read first the chapter "Concept to Run a Parallel Computation in
Batch Mode" (p. 720) first since it explains the full launching procedure.
1. The following command should be used to launch parallel computations by the flow solver. It
is also possible to create a script file "batch.sh" with permission for execution. An example of
a "batch.sh" file for a parallel computation on Linux:
#! /bin/csh
INSTALLATION_DIRECTORY/finemarine121/LINUX/_mpi/_ompi1.6/ -np X -
machinefile "/users/project/computation/machines.txt" /INSTALLATION_
DIRECTORY/finemarine121/LINUX/isis/isiscfdmpi
where "X" is the number of partitions and "isiscfdmpi" should be replaced by the flow solver
executable corresponding to the machine configuration.
The script is started in a C-shell due to the line: "#! /bin/csh". To sum up, the command line,
to start the flow solver Fine Marine flow solver in parallel, contains the script name that
enables parallel computation (mpirun), the number of partitions, the full path name of the file
"machines.txt" which contains the definition of the machines that will be used to launch the
computation in parallel and the executable of the solver for parallel computations:
"mpirun -np X -machinefile "/COMPUTATION_PATH/machines.txt" isiscfdmpi"
2. Create Hosts Definition File "machines.txt". A file needs to be created to define the hosts. This
file specifies the machine information of the various processes. Two examples of a
"machines.txt" file:
Example 1: 2 processes on Hostname1
Hostname1
Hostname1
Example 2: 1 process on Hostname1 & 1 process on Hostname2
Hostname1
Hostname2
The number specified in the "machines.txt" file should be equal to the number of processes
required on this machine
The first machine (hostname) specified in the file "machines.txt" should be the one from which
the script will be launched.
3. Set permission for execution "batch.sh" by using the command: "chmod 755 batch.sh"
To run a computation on a distant machine where the interface is not installed, the option "-local"
must be added in the command line to work in relative way.
We strongly recommend to use the full path of each file and executable to avoid any trouble in
computation start.
Clicking the button Save Batch File in the Task Manager menu, a script "projectname_
computationname.batch" and a machines.txt file will be created in the corresponding computation
subfolder. This script enables the user to launch the same computation in batch.
1. Create a script file "batch.sge" with permission for execution. An example of a "batch.sge" file
for a parallel computation on LINUX:
#! /bin/csh
#$ -S /bin/sh
#$ -o /home/sgeuser/parallel_sge/parallel_sge_computation_1/ parallel_sge_computation_
1.std -j y
#$ -N comput1
#$ -pe mpi 3
#$ -notify
P4_GLOBMEMSIZE=15000000
Export P4_GLOBMEMSIZE
For sequential runs, the line " #$ -pe numecampi 3 " must be removed and the final command
2. Set permission for execution "batch.sge" by using the command: "chmod 755 batch.sge"
3. Check that the computation is ready to run (.bcs file and .sim files already present in the
working directory).
4. Close the interface
5. Launch the "hexpress2isis" and "premetis" tools from your working directory and follow the
instructions given in the shell
6. Launch the script "batch.sge" by typing the script file name: "./batch.sge".
We strongly recommend to use the full path of each file and executable to avoid any trouble in
computation start.
1. Create a script file "batch.bat" with permission for execution. An example of a "batch.bat" file
for a parallel computation on Windows:
\NUMECA_SOFTWARE\FineMarine121\bin\isis64\mpiexec.exe -np X -machinefile
"/users/project/computation/machines.txt" \NUMECA_
SOFTWARE\FineMarine121\bin\isis64\isiscfdmpi.exe
where "X" is the number of partitions and "isiscfdmpi" should be replaced by the flow solver
executable corresponding to the machine configuration.
To sum up, the command line, to start the flow solver Fine Marine flow solver in parallel,
contains the script name that enables parallel computation (mpiexec), the number of partitions,
the full path name of the file "machines.txt" which contains the definition of the machines that
will be used to launch the computation in parallel and the executable of the solver for parallel
computations:
"mpiexec.exe -np X -machinefile "/COMPUTATION_PATH/machines.txt"
isiscfdmpi.exe"
2. Create Hosts Definition File "machines.txt". A file needs to be created to define the hosts. This
file specifies the machine information of the various processes. Two examples of a
"machines.txt" file:
The first machine (hostname) specified in the file "machines.txt" should be the one from which
the script will be launched.
To run a computation on a distant machine where the interface is not installed, the option "-local"
must be added in the command line to work in relative way.
We strongly recommend to use the full path of each file and executable to avoid any trouble in
computation start.
Clicking the button Save Batch File in the Task Manager menu, a script "projectname_
computationname.bat" and a machines.txt file will be created in the corresponding computation
subfolder. This script enables the user to launch the same computation in batch.
One can choose the license key to use for the solver in case both MPROC and FULLFLEX keys
are available. By default, the 'MPROC_X' license key, where X is the number of cores defined
within the license is used by the solver if present in the license file. By adding the argument '-
fullflex' to the solver executable, the Fullflex license key will be used, thus all extra cores will be
shared among all seats purchased with the license.
Once the computation has been performed, the post-processing step can be executed. It consists in
the transformation of files into a format readable by Cfview. For batch scripting, one can use the
following tool (no question will be prompted to users):
isis2cfv_no_interactive -niversion marine121 -print (it should be launched from the previous
computation folder)
See the External Tools chapter for a complete description of the tool
1. Create a macro file ".py". See the Cfview User Manual for more details on the format of a
macro file and the commands that it can contain.
2. Launch the macro ".py" by typing: cfview -macro /user/test.py -batch -niversion marine121
The command line to start Cfview contains its name, the full path name of the macro ".py" file
to launch, and the Cfview release that will be used. The "-batch" option disables the display of
the Cfview graphical user interface.
"cfview -macro MACRO_PATH/macro.py -batch -niversion <version>"
1. Create a macro file ".py". See the Cfview User Manual for more details on the format of a
macro file and the commands that it can contain.
2. Launch the macro ".py" by typing:
The command cfview may be followed by a set of command line arguments. These command line
arguments allow the user to override some system defaults (driver used, display, double-buffering
and update abort options) or to specify files to be loaded immediately (project, macro, defaults
settings, macro module). The supported command line arguments are:
-help prints a summary of the command line arguments,
-version prints the Cfview version number,
-date prints the Cfview version date,
-defaults <file name> starts Cfview with the default settings from the specified file,
-project <file name> starts Cfview and immediately opens the specified project,
-macro <file name> starts Cfview and execute the specified macro script,
-macromodule <file name> starts Cfview and load the specified macro module,
-display <display name> starts Cfview on the specified display device,
-doublebuffering on (off) enables (disables) double buffering,
-updateabort on (off) enables (disable) update aborting (see the Cfview User Manual for more
detail on this option),
-driver <driver name> starts Cfview with the specified graphics accelerator,
-reversevideo on (off) starts Cfview with black (white) background color (see the Cfview User
Manual for more detail on this option),
-facedisplacement <n> starts Cfview with the specified face displacement (see the Cfview User
Manual for more detail on this option),
-loaddata all (none, ask) when opening a project, the quantities fields are loaded in the computer
memory (are not loaded, a specific dialog box is raised where the user chooses the field variables
to be loaded). The defaults is to load all field quantities. (see the Cfview User Manual for a
description of the data management facility and of the associated dialog box),
- batch on (off) starts Cfview without graphical user interface. This mode can be used in
combination with the -macro command line option in order to perform the execution of a macro
script without user interaction,
-hoops_relinquish_memory off this option disables the hoops garbage collection feature that is
activated when Cfview is idle for a long period of time.
POST-PROCESSING
Pressing the icon on the main icon bar, will open the Cfview post- processing management
window. Depending on the computation, different windows can be proposed. The choice of the window
is made according to the presence of probes or not (see Probe Variables for more information about
the probes).
Among the options the Last saved results can be is selected, so the isis2cfview tool will be launched
( isis2cfv_no_interactive ). Otherwise Unsteady reconstructioncan be selected,so the probes2cfview
tool will be launched by the interface. Also see the see External Tools for descriptions.
The following scenarios are possible:
a. if the interface check considers that the Post- processing hasn't been done yet, it launches
isis2cfview/probes2cfview tools.
b. If the Post-processing results are present in the computational folder and the parameters don't match
those that the user has specified (Traveling shot, Interval of reconstruction and etc.) and allows to
repeat the reconstruction with different parameters.
c. if the post- processing results are present and the parameters do match, the Post- processing is
skipped to avoid the repetition.
Since Cfview cannot directly read the files saved by the Fine Marine flow solver, a conversion is
needed. This conversion is done automatically at the end of each computation. It is also performed each
time the user would like to open Cfview through the interface.
For users working in batch, the reconstruction tool is called isis2cfview (see External Tools for its
description).
In this section
31.1 Open the last saved result 739
31.2 Open unsteady results 740
31.3 Traveling Shot 744
31.4 Results Analysis 746
In the situation where the computation does not contain any probe, a pop up will appear with the
possibility to prescribe the traveling shot parameters and then open Cfview (see Traveling Shot
for more information about traveling shot parameters). This window will open the last saved
results of the computation adding a traveling shot or not.
This choice is not definitive and it is possible to perform again the post- processing with different
parameters for the traveling shot.
FIGURE 31.1
Post-processing window (no probe performed), with traveling shot
To convert the final result to a format readable by Paraview, the tool isis2vtk is available.
To convert the final result to a format readable by Tecplot, the tool isis2tec360 is available.
In the situation where the computation contains probes, a pop up will appear with the possibility
to open the last saved results only or to reconstruct the solution including all the intermediate
probes.
Probes are defined in the menu Outputs > Probe variables.
FIGURE 31.2
Post-processing window to reconstruct probes
Unsteady results (reconstruction required) button allows to reconstruct all intermediate probes
and load them into Cfview. Traveling shot parameters can be modified (see Traveling Shot) as
well as options for the reconstruction:
l The Available probes frame allows to select the quantities to reconstruct
l As an information, the menu gives the Available number of probe intervals which are
effectively saved during the computation.
l The Interval of reconstruction allows to reconstruct only a given range of probes. By
default, the menu proposes all the probes. It can be in terms of "Time steps" or "Seconds"
depending on the project configuration.
This choice is not definitive and it is possible to perform again the post- processing with different
parameters.
The interface is using the tool "probes2cfview". To reconstruct computations with probes in batch,
please read how to use this tool in probes2cfview section.
Once the reconstruction has been performed, Cfview will open the partial loader. It gives the list
of available quantities and offers the possibility to load the required time steps, specifying the
initial and final time steps, and to give an interval input to skip some probes. Please read the
Cfview User Manual for more description about the partial loader.
FIGURE 31.3
Partial loader in Cfview for volume probes
Once all the time steps are loaded, an animation menu appears in the icon bar. This menu gives
the opportunity to load a particular time step, to launch the complete animation and to record it.
Limitation: "Time Label" option in Cfview will give the index of the volume probes list and not the
actual value of the time step (limitation not present for surface probes).
For simulations with at least one moving body, degrees of freedom (d.o.f.) carried out only by
rigid or weighted mesh displacement (see the Multibody definition section for the information
about the mesh displacement), can be visible or not by selecting a point of view. As in
cinematographic techniques, a traveling shot can be performed on each d.o.f., by attaching the
"camera" to the mesh during the rigid displacement of this d.o.f..
FIGURE 31.5
Traveling shot illustration
First of all, one should specify if the traveling shot is based on a body or not. This is done thanks
to the question: Traveling shot based on? If no body is specified, the point of view will be
attached to the initial position of the boat (like a person at port who will see the body passing by).
If a body is prescribed, the point of view will be attached to the body and will follow its
displacement.
Then, traveling shot options should be assigned to each d.o.f.. By default, they are:
This choice is not definitive and it is possible to perform again the post- processing with different
parameters.
For rotation (Rx,Ry,Rz), traveling shot is limited to the following possibilities: (0,0,0) (1,1,1) or
(0,0,1) with "1" meaning active and "0" inactive.
FIGURE 31.6
Traveling shot options
Using the traveling shot will result in getting the Relative Velocity instead of the Velocity in
Cfview.
If one of the following conditions is fulfilled for the selected body:
l it has at least one Cardan angle value different than zero or
l it has a primary axis defined
the choice between Mesh reference frame or Body primary frame will appear. See the
Reference frame page for more information.
l Mesh reference frame: reference frame of the body in its position at the beginning of the
computation, including Cardan angles.
l Body primary frame: reference frame of the body before Cardan angles are applied.
By pressing the icon on the main icon bar, the Results Analysis tool will be opened
providing tools to analyze the computation convergence but also extract interesting information.
FIGURE 31.7
Results analysis tool
The Results Analysis tool is capable of the following actions for each of the selected
computations in the right side of the Computations list:
31.4.1 Requirements
l If multiple computations are analyzed, all computations should have finished successfully
before performing the analysis.
l Files needed in the computation folder for the tool to run:
l *.std for all applications
l *.sim for open water projects
l Data are read from the following files:
l eff*.dat files for forces
l Mvt*.dat for body motions
l nb_cell.dat for the number of cells, if present
l body_wettedsf.dat for the body wetted surface, if present
l *.std file for Y+ distance, Courant number, and Actuator disk data.
The type of post processing should be first selected. The objective can be to create a resistance
curve, make a self-propulsion analysis or check results by quantity.
Resistance curve
Perform resistance curve (averaged selected quantity vs. Froude number) option is available
for the selected computations. Here, the resistance force values (Fx) will be checked and
represented depending on the Body definition structure and averaging settings applied.
Self-propulsion analysis
Perform self-propulsion analysis option is available for a single computation being selected.
l The self-propulsion analysis is limited to computations in which the ship is always aligned
with the x- Cartesian axis, the Rotation variables are defined as Rotation (not
Quaternion) and there is only one propulsion unit (either one propeller or one actuator
disk)
l Ship advancing in straight motion and aligned with the X-Cartesian axis
l Only one computation can be analyzed per execution of the tool
Scenario 1
For the computations classified as Scenario 1, the user is requested to identify the Body ¨ship¨,
the Body ¨propeller¨ and to define the Diameter of the propeller (D) unless the plugin can
FIGURE 31.8
Results analysis tool - Self-propulsion analysis inputs for Scenario 1
Scenario 2
For the computations classified as Scenario 2, the user might be requested to define the Propeller
rotational speed, to identify the Body ¨ship and to load the Open water data *.dat file unless
the plugin can automatically retrieve this information from the *.simfile or from the SPinputs.dat
file from the computation folder. The latter file will be present in the computation directory only if
the user decided to perform the simulation making use of the Self-propulsion dynamic library
"Type IV" (p. 231). See image below for the case in which the user has to define the three
aforementioned parameters.
FIGURE 31.9
Results analysis tool - Self-propulsion analysis inputs for Scenario 2
FIGURE 31.10
Results analysis tool - Example of a *.dat file of the open water curve
By clicking on Perform, the self-propulsion analysis will be performed and the results stored in
the "Computed_data.dat" file. However, before doing so it is advisable to average both efforts
and motions by activating the Average efforts and Average motions in the tab Analysis
options.
l Kq:
l Efficiency:
FIGURE 31.11
Open water performance curves
l Advance Ratio:
This tab gives access to the analysis of individual quantities such as efforts and motions among
others.
Efforts
The forces, moments and their pressure and viscous components can be selected here.
Friction lines
If the viscous drag (FxV) is selected in the Efforts section, the Friction lines section becomes
available.
This section allows to plot theoretical values computed analytically in order to verify the validity
of the FxV value. One value is computed per model and per speed, and is plotted against the FxV
quantity. The following models are available:
l ITTC57
l Grigson
l Katsui
l Schoenherr
The Imposed and Solved motions as well as their derivatives can be selected here
Other quantities
Probes units
Modal approach
FIGURE 31.13
Modal approach: Amplitudes quantities selections
If a computation using the "Modal approach" (p. 514) is present, an additional choice will be
available: Amplitudes, defined as described in "The motion file: Mvt_bodyname.dat" (p. 778).
FIGURE 31.14
Catway catenary approach: Line node quantity selection
If a computation using the Catway catenary approach is present, an additional choice will be
available: Catway, allowing to report the Position or the Tension of the specified Node belonging
to the specified Line. The nodes are numbered from 0 to the defined number of points for post-
processing minus 1.
Mooring lines
If a computation using the mooring lines is present, an additional choice will be available:
Mooring, allowing to report the fairlead and anchor positions for each lines, as well as the tension
of the lines in each direction.
Tugging lines
FIGURE 31.16
Tugging lines
If a computation using the tugging lines is present, an additional choice will be available:
Tugging, allowing to report the position of the lines' extremities, as well as the tension of the lines
in each direction.
User-defined
The user can create user-defined plots based on the quantities available in the computation using
the Add button and Edit/Remove them using the dedicated buttons.
When Add is pressed, the Add user defined plot window is displayed:
FIGURE 31.17
User-defined plots management section
FIGURE 31.18
User-defined plots syntax help
If the formula cannot be evaluated (syntax error or undefined variable, for example), nothing will be
shown in the generated plots, the quantity validity is not verified.
The expression evaluator does not check the consistency of units. For this reason the units are not
mentioned in the plot for user defined functions.
This page provides the access to the settings of available averaging and filtering procedures.
It is also possible, using the average and convergence values, to draw the following lines on the
plots:
l Draw average line: using this option, the horizontal average line is drawn on the graph.
The average line is computed over the last X% defined in Average values over the last.
l Draw convergence line : using this option, if the convergence is reached, the vertical
convergence line is drawn on the graph.
For each quantity, if the solution remains within Y% (defined by the Convergence criterion )
around the average value defined using the last X% of the computation (defined by Average
values over the last), the solution is considered converged.
Filters
Filtering options can be useful for the results better representation or smoothing the curves. For
instance, applying the "Quasi-Static Approach" (p. 339) during the simulation can result in peaks
of convergence, which are not useful regarding the computed values. Thus, Filters can be applied
for both efforts and motions with the given choices:
l Median filter : especially efficient for deleting sudden peaks caused by the Quasi- Static
approach;
l Moving average: efficient for smoothing the results curves.
When Median filter is active and the Window width in time steps is defined as N, filtering will
be applied as follows:
This page shows all the possible ways to sort and represent the data that can be defined.
FIGURE 31.20
Plot options
Plot options
l Define a range (minimum and maximum) for the X and Y-axis on the plots (no input means
no restriction);
l Define the picture size (Width x Height) in pixels;
A warning "The following quantities have not been found: Thrust Torque Number of Cells Wetted
Surface" can appear listing the Quantities not available for the plot. This can happen when an option
of Represent selected computations on the same plot have been applied and the selection of
Quantities is not compatible with the output legends formats. For instance, Torque plot together with
the Number of cells will not be available for the suitable scale.
Units
The Metric, Angle and Speed units in which the plots are displayed can be adjusted:
l Metric: Feet or Meters
l Angle: Degrees or Radians
l Speed: Knots or m/s
Dimensionless coefficient
When the option is activated, two text boxes appear: "Denominator name" and "Denominator
value". Text box "Denominator name" defines how the denominator will be named on plots. Text
box "Denominator value" defines the denominator value. Zero value will be rejected. By default,
"Denominator name" is "*" to symbolize a coefficient and "Denominator value" is 1.
When the dimensionless coefficient is used, it is indicated on plots in titles, axis labels and legend
where possible: contents of "Denominator name" text box is appended right after the quantity
name. Examples: Q*, Q / Lref, Q^ for corresponding Denominator names "*", " / Lref" and "^".
All the created results files will be stored within the project folder having the name
"Convergence_report_date_time", for instance: Convergence_report_23-09-2015_17h-06m-28s.
If selected computation have different time scales, data will be stored with the time scale along
with each quantity.
After creating the "Convergence_report_date_time", Results Analysis tool creates the info file
"convergence_report.info" which contains the applied options for the analysis.
Example
The value stored will be the averaged or the last value, depending on what is requested in the
"Analysis options" (p. 757).
Example
Computation name Speed[m/s] Froude Fx(Vessel) FxV(Vessel) Fz(Vessel) Ry1(Vessel) Time step
C1 1 0.319275 -4895.95 -7.46884 38027.7 0.0349066 0.005
C2 2 0.638551 -11029.7 -25.8028 34899.4 0.0872665 0.005
C3 3 0.957826 -19547.7 -47.9837 31146.3 0.122173 0.00333333
For each selected computation a folder having its name "computation_ name" is created. It
contains:
l "computed_data.dat" file
l selected quantities plots in PNG format
"Convergence_report_date_time" will also contain of PNG files in case of Resistance curve has
been activated or when the Represent selected computations on the same plot has been applied.
Please note, that legends for the PNG pictures are defined automatically by the Python
libraries. Thus, it cannot be guaranteed that the legend will always be placed at the same
location unless Define legend location option has been selected.
Example
Convergence report
==================
Project: /home/User1/Project_1/resistance.iec
Computation: computation_#
Mesh: /home/User1/Project_1/_mesh/mesh.igg
The following quantities have not been found: Wetted Surface
Average values
Quantity Average Min Max Std. deviation
Fx(Body1) -3.4259381e+01 -3.5224150e+01 -3.2721830e+01 3.8770517e-01
Fx(Body2) -1.6660469e+01 -1.9926500e+01 -1.4808630e+01 1.0654178e+00
Fy(Body1) -4.9440199e-01 -9.3531450e+00 3.0237600e+01 3.7201312e+00
Fy(Body2) 1.2470519e+00 -4.3823220e+00 2.5087720e+01 2.5314469e+00
All created by Results Analysis tool files can be opened by text editors including such as Open
Office and Microsoft Excel.
FILE FORMATS
This chapter describes the files used by Fine Marine and the flow solver. It is divided into two parts.
The first gives the file format information needed to use Fine Marine, while the second one describes
the format of the files used and produced by the flow solver. As Fine Marine is intended to handle the
files treatment, knowing the exact format of all the files used in a simulation process is not required.
This chapter is therefore written for advanced users.
In the following description, it is assumed that all the files are related to a generic project called
'project'. The chapter is divided in five sections:
l files produced by Hexpress,
l files produced and used by Fine Marine,
l files produced and used by the Fine Marine flow solver,
l files used as data profile,
l resource files used to control the layout and which contain default values and reference
information.
In this section
32.1 Files Produced by Hexpress 767
32.2 Files Produced by Fine Marine 767
32.3 Files Produced by the Fine Marine flow solver 772
32.4 Preference file for the windows sizing 783
32.5 External user input file: stop.now 784
32.6 Triangulated surface file 784
32.7 Wall Surface Data Description 785
32.8 Resource Files 790
This section describes the files produced by the grid generator Hexpress and used by Fine Marine:
l project.igg contains all relevant parameters about the grid generation process in Hexpress.
l project.dom contains the computational domain definition (geometry and topology).
l project.hex contains the mesh and its connection to the computational domain.
l project.bcs contains boundary conditions information. As described in the Boundary
Conditions chapter, the settings of the boundary condition type is performed in Hexpress while
the physical boundary condition parameters are set in Fine Marine. The settings of Hexpress
are stored in the file project.bcs. This file is used by Fine Marine to initialize the boundary
condition types for each patch. It is updated each time the boundary condition type is changed
in Hexpress.
For more details about these files, please refer to the Hexpress User Manual.
This section describes the files produced and used by Fine Marine (or used by the flow solver
launched from Fine Marine). Please note that Fine Marine acts as a file manager between different
software systems. Therefore, it is important that the read, write and execute permissions are set
properly for all the files and directories used by Fine Marine.
Manual modification of these files is not supported since it may corrupt the file or provide incorrect
results. Such a modification should only be done on explicit advice of our local Support office.
This file contains all the information related to the project. It is used by Fine Marine to save and
recover all project settings. This file is subdivided into several blocks. Each block contains data
and/or other sub-blocks. The beginning of each block is identified by the key word NI_BEGIN
and a name and the end of the block are identified by the key word NI_END and the name of the
block.
The file always has the following header containing the version number and the project type:
NUMECA_PROJECT_FILE VERSION 5.1
PROJECT_TYPE MARINE
After the header, 3 lines are used to store the name of the files linked to the project:
GRID_FILE /usr/local/_marine_projects/_project_1/_mesh/mesh1.igg
TRB_FILE /usr/unknown (irrelevant)
GEOMETRY_FILE /usr/unknown (irrelevant)
These are respectively the mesh, the template and the geometry files. The template and the
geometry files are not used by Fine Marine and are only there for backward compatibility reasons.
The project file contains the settings of all the computations settings. Each computation block is
identified by the following keywords:
NI_BEGIN computation
...
NI_END computation
The computation block contains the following sub-blocks:
l The Initial Solution and Boundary Condition block contains initial solution parameters and
boundary conditions definition.
l The Blade-to-Blade block contains turbomachinery flow hub/shroud definition.
l The Marine Parameters block contains all the parameters for the Fine Marine flow solver.
l The Grid Parameters block contains irrelevant information (backward compatibility).
When the solver is started, Fine Marine creates a new directory using the name of the active
computation. A subproject file (".sim" extension) containing the settings of the active computation
is saved in this new directory. This file is used as input to the flow solver.
When the user clicks on the "Start mesh set-up" button at the end of the C-Wizard Part I. plugin
procedure, it switches to the next step of the wizard (Domain and mesh setup) and it creates a
'.dat' file named 'wizard. input' in the project folder, at the same level than the '.iec' file. The script
To change the name of the body within the .input file, it should be written in one word and including
a space at the end of the line.
A global status file that summarizes the progress of every computation launched under the global
project within the "C-Wizard computation matrix" (p. 169) is stored in a project directory.
This file is located in the global directory under the name cwizard.status and contains the
following information:
Project Name Geometry Yaw Pitch Roll Draft Status
t1_Y0.0_P2.0_R0.0_D8.0 geom_name 0.0 2.0 0.0 8.0 Finished
t2_Y0.0_P2.0_R0.0_D10.0 geom_name 0.0 2.0 0.0 10.0 Pending
t3_Y0.0_P4.0_R0.0_D12.0 geom_name 0.0 4.0 0.0 12.0 Running
t4_Y0.0_P4.0_R0.0_D14.0 geom_name 0.0 4.0 0.0 14.0 Crashed
Defined through the Fine Marine GUI Name of the vessel and propeller through the Body Definition
menu will be stored in the '.sim' file, thus the name used in and in the '.sim' and 'SPinputs.dat'
should strictly match.
Advancing velocity of the vessel becomes mandatory when the residual force is non zero
(namely, Additional constant wrench applied along the X- axis), otherwise the residual force will
be changed to zero and therefore not taken into account.
*** Propeller rotational velocity, [rad/s]: decimal number
The rotational velocity of the propeller at operating point must be imposed by the user in case of
the solved vessel speed, and will be estimated in case of fixed power.
*** Power of the propeller [W]: decimal number
The power of the propeller at operating point. Must be defined only for the fixed power
simulation (Type 3).
Expert input parameters [optional input]:
Each parameter here has a suggestion about if this parameter will be important for the certain type
of the computation (1, 2 or 3):
Requirements by type of computation: 1-Optional, 2-Not required, 3-Optional
*** Estimated advance coefficient at operating point: decimal number
Dimensionless advance coefficient of the propeller defined by J=Vship/(n*D) at the operating
point where:
Vship - advancing velocity of the ship [m/s];
n - the rotational speed of the propeller [rps].
The convergence speed of the computation is related to the value of the thrust coefficient (Kt).
The closer the estimated thrust coefficient gets to the real value at operating point, the faster will
be the convergence speed together with the stability ensured. However, this may lead to stability
issues during the computation in case of inappropriate choice of parameter value.
*** Estimated thrust coefficient of the propeller at operating point: decimal number
Dimensionless thrust coefficient of the propeller defined as Kt=Thrust/(rho*n**2*D**4), where
at the operating point:
Thrust [N];
n - the rotational speed of the propeller [rps].
*** Number of time steps before the controller is activated: integer
The controller will be activated after preforming the specified number of time steps. Before this, at
each time step, the rotational speed imposed on the propeller will be the same as the one has been
obtained at the previous time step.
*** Number of time steps before the limiter is activated: integer
This ASCII file contains all the information related to the current computation. It contains a
summary of the computation variables as well as any warnings and/or error messages. If the flow
solver encounters a problem, this is described in the ".std" file. When a problem appears please
send this file together with a detailed description to our local Support office The std file is
displayed through the Task Manager when launching the code from the Fine Marine interface.
This ASCII file contains all the information about boundary conditions related to the current
computation. It contains the reference to the mesh file and to the ".sim" file. This file also shows
the identifier of each surface (see Identifier), their name and the boundary conditions created in
Hexpress.
This section describes the files produced and used by the flow solver. The flow solver uses most
of the files described above and produces the following files:
This file contains the data related to the body and stored into the computation folder with the
DemoCase3_computation_1_body_param.dat
These files contain the information about the global fluid forces and momentum for each body
and sub-body (remark: they do not contain external or actuator disk forces). F represents the
forces, M the momentum, V the viscous forces and P the non-viscous forces (also called pressure
component). For instance, eff_FxV.dat corresponds to the viscous forces applied on the body
along the X-axis. See Forces and Moments for more details. The information about the time T is
as well as the number of non-linear iterations, noted Itnl, are present (remark: for steady mono-
fluid computation, T is always equal to 0). Below, an example for an eff_Fx.dat file for an
imposed forward motion of a body called DTMB in unsteady mode.
Example: eff_Fx.dat
Actuator disk
When the actuator disk is used with open water data, the eff_AD.dat is created and contains the
rotation speed [RPS], the actuator disk thrust [N] and torque [Nm], and dimensionless coefficients
such as the advanced ratio, the torque and thrust coefficients and the active fraction. The active
fraction corresponds to the percentage of the actuator disk which is inside the water.
This file stores the convergence history of the current computation. The residuals are written
according to the non-linear iterations itnl, the time t in seconds and cpums which is the CPU time
per variable in milliseconds. To know more about the definition of the residuals, please read the
Quantities to Display section. An example of .res file is given below:
#NI_BEGIN CALCUL
# MODE UNSTEADY
#NI_END CALCUL
#COLUMNS = itnl t cpums ResU ResV ResW ResP ResK Res`w
TITLE = "(ISIS-CFD:6.1) : Convergence"
VARIABLES = "itnl", "t", "cpums", "ResU", "ResV", "ResW", "ResP", "ResK",
"Res`w"
1 0.330000E-01 0.310522E-01 0.157558E-08 0.121511E-10 0.179463E-04 0.306026E+00
0.342958E-06 0.113064E+01
2 0.330000E-01 0.436903E-01 0.443751E-03 0.732851E-03 0.787221E+00 0.151139E+00
0.728790E-07 0.385368E+00
3 0.330000E-01 0.561916E-01 0.204232E-03 0.319256E-03 0.353062E+00 0.122346E+00
0.259866E-07 0.281035E+00
...
If nvariable is the number of variables in the simulation and cpums is the time per variable in
milliseconds, these values are linked together with the time step CPU cost in [MSEC/PTS] written in
the . std file such as: CPU COST OF THE TIME STEP = cpums/1000*nvariable . The
information is computed only by the first partition to avoid unnecessary communications between
partitions.
The kinematic variables outputs are recorded in a file called Mvt_bodyname.dat. This file is read
by the Monitor to show the evolution of the body motion in time. The information about the time
T is also present. Below, an example for the body called boat is presented.
Example of Mvt_bodyname.dat
#TITLE =(ISIS-CFD:#)
#NI_BEGIN BODY
# NAME boat
#NI_END BODY
#COLUMNS = T Tx0 Rx2 Vx dRx2 Ax d2Rx2 Rn dRn d2Rn
For the computation applying "Modal approach" (p. 514) the specific variables outputs is
provided: Amp_ M1 , dAmp_ M1 , d2Amp_ M1 meaning Amplitude mode, and it's time
derivatives. Here the _M# identifies the Mode calculated, and Amplitudes are summarized for
each Mode to define the generalized displacement, which is used at its turn to retrieve the
structure deformation.
Amplitude of the Mode# can be seen as the weight or the factor of the Mode# , which is a
function of time.
#TITLE =(ISIS-CFD:6.1)
#NI_BEGIN BODY
# NAME Agard
#NI_END BODY
#COLUMNS = T Ty0 Vy Ay Amp_M1 dAmp_M1 d2Amp_M1 Amp_M2 dAmp_M2
d2Amp_M2
TITLE ="(ISIS-CFD:6.1) Var=Agard "
VARIABLES = "T ","Ty0","Vy","Ay","Amp_M1","dAmp_M1","d2Amp_M1","Amp_
M2","dAmp_M2","d2Amp_M2"
ZONE
0.5000000E-03 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.4963874E-03 -
0.7225253E-02 -0.1445051E+02 0.3610048E-05 0.7220095E-02 0.1444019E+02
0.1000000E-02 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.4926632E-03 -
0.7559974E-02 0.6221090E+01 0.6164540E-05 0.4053430E-02 -0.1672009E+02
0.1500000E-02 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.4885295E-03 -
0.8676797E-02 -0.3015745E+01 0.7804431E-05 0.2365180E-02 -0.1898088E+01
To generalize, the amplitude of a mode represents its influence into the generalized displacement,
and it should be taken into account, that Amplitude is multiplied by the Modal shape. This will
give its contribution into the generalized displacement of the given mode.
The file output.list, stored in each partition folder, contains information about the convergence
and warning messages, in case of parallel computation. Useful information can be found in it, in
case the computation refuses to start for instance. Please send these files to our local Support
office in case of troubles starting a parallel computation.
The folder b001 does not contain an output.list file. The information of this block is stored in the
general output of the code in the .std file (or in the shell if the computation has been started in batch).
This file is created when the dynamic library for self-propulsion is used. At every time step, the
dynamic library writes for each processor a file SPResults_XXX.dat where XXX is the number of
the processor. Check Type 1 computation procedure example for the self-propulsion library
description.
Each of the SPResults_XXX.dat file contains the following data, depending on the type of the
computation carried out.
Type 1: fixed ship speed [m/s] when the propeller rotational velocity [rad/s] to be calculated:
itt : current time step
tc : current value of the time step
Fvessel(tc) : vessel drag at the current time step tc
Fprop1(tc) : thrust of the propeller at the current time step tc
(Fvessel-Fprop1+Fres)(tp) : sum of thrust, drag and residual force at the previous time step
Delta n(tc) :variation of the rotational speed of the propeller to be applied at the current time step
tc
n(tc) : value of the rotational speed of the propeller to be applied at the current time step tc
Flag limiter : if the limiter bounds n(tc), then the flag is set to 1 instead of 0
The variables
Some variables are computed automatically by the solver, they correspond to the mandatory
variables, see Automatically computed variables for more details.
Some optional variables can also be computed and stored upon request through the Fine Marine
interface. They are not necessary to make a restart but they can be useful for the post-processing
step.
This file is created by the graphical user interface to know the evolution and the chronology of the
computation steps performed by all the tools including the flow solver. It indicates the following
information:
l the computation is over or not,
l the save counter,
l dates of changes,
l the status of each steps,
l pending (nothing has been done for this step yet),
l finished(the step has been correctly performed),
l stopped (the step has been stopped by the user),
l mismatch (the step has been previously done but new data are available),
l crashed (the step has not been performed correctly. Ex: missing files, executable has been
killed abruptly, etc.).
The file .lockStatus prevents all tools to write inside status.dat file at the same time. If a tool failed to
perform its tasks, the file .lockStatus might still be present which could block others tools to proceed,
including the graphical user interface. Hence, in very rare occasion where the GUI freezes, please
remove this .lockStatus file.
This file contains the information about the overset mesh cells status:
l active
l blanked
l interpolated
The information is used to represent the cells graphically in the visualizer. More details about the
overset method can be found in "Overset Grid Management" (p. 601).
To specify the position and the size of the Graphical Interface appearance a 'preference.dat' file
can be created and stored in /.numeca directory. This option is available for the Fine Marine GUI,
Hexpress and Monitor.
This file should contain the following info:
l graphical interface name: PRODUCT
l screen location: GEOMETRY
Example
PRODUCT HEXPRESS
PRODUCT CFView
GEOMETRY 1920x1200-0-0
END_PRODUCT
PRODUCT Monitor
GEOMETRY 1920x1200-0-0
END_PRODUCT
GEOMETRY 1520x1200-0-0
END_PRODUCT
PRODUCT FINE/Marine
GEOMETRY 1920x1200-0-0
END_PRODUCT
PRODUCT specifies the product name: "FINE/Marine" for Fine Marine, "Monitor" for Monitor
, "HEXPRESS" for Hexpress and "CFView" for Cfview.
GEOMETRY specifies window size and position for that product main window: it has form
widthxheight[+|-]x[+|-]y. [x|y] means x or y here; Numbers width and height specify sizes of the
window in pixels, x and y – position in pixels:
l If x is preceded by +, it specifies the number of pixels between the left edge of the screen and
the left edge of window border;
l If preceded by - then x specifies the number of pixels between the right edge of the screen and
the right edge of window border;
The solver reads a file "stop.now" at each non-linear iteration. It can be edited manually to control
the computation end. This file is automatically created by the solver when the computation is
launched and it only contains a number (written in the second column of the first line only) or a
letter (written in the first column of the first line only), with the different possibilities described
below:
l "0" (default value): this number means that the solver continues until the maximum number of
iterations/time steps written in ".sim" file is reached.
l "n" (positive number): this corresponds to the number of iterations or time steps that the solver
should still perform before the end of the computation (for instance: "2" means that the solver
will perform 2 extra iterations or time steps before saving and stopping).
l "-n" (negative number): a negative number imposes a new absolute number of time steps, i.e. -
400 will stop the computation after 400 time steps total. -1 corresponds to the Suspend button
in the interface: the solver will save the results and stop after the next time step or iteration.
l "q": this letter corresponds to the Kill button in the interface: the solver stops immediately
without saving.
On LINUX, users can type echo q > stop.now in the shell to stop a computation.
l "s": the solver will save the computation as soon as possible and keeps on running.
Standard output data of Fine Marine flow solver is the volume data field. In order to allow
advanced users to get access to wall surface data such as local friction forces or hydrostatic
pressure, a special wall surface data output is available. This section gives a description of the
structure of wall surface data.
FIGURE 32.1
Surface grid configuration
FIGURE 32.1 shows a configuration of a surface grid. There are 3 faces and 8 nodes defining
this grid.
l Face 1 is formed by nodes 1,2,5 and 4. We assume that it is assigned with a boundary
condition flag 3 (wall function), a body index 1, and a sub-body index 2.
l Face 2 is formed by nodes 4, 5, 7 and 6. It has the same boundary condition flags, body index
and sub-body index as face 1.
l Face 3 is formed by nodes 2,3,8,7 and 5. It has a boundary condition flag 2 (slipping face), a
body index 1, and a sub-body index 1.
For a parallel computation, during the domain decomposition, faces 1 and 2 are assigned to block
1, and face 3 is assigned to block 2. The wall surface grid is extracted and saved in a file named
"wall_surface_grid.bin" during the domain decomposition step with the tool "premetis" (see the
Mesh Partitioning section). It contains all boundary faces with boundary condition flag 1 (no
slipping wall), 2 (slipping face) and 3 (wall with wall function).
For a sequential computation, the wall surface grid "wall_surface_grid.bin" needs to be generated
with the "extract_wall_surface_grid" tool. Fortran not formatted binary format is employed since
it can be easily and quickly imported without the need of special IN/OUT library. However, it is
not compatible between different computer system (Linux and Windows are found to be
compatible). Hence, postprocessing needs to be performed with the same computer system as the
computation.
The following source code can be used to import the grid:
The Fortran source code "read_wall_data.f" found in the "_data/isis/Src" folder from the Fine
Marine installation directory can be used to import the output data from "wall_data.bin" file.
Results are imported for each sampling in the array var(1..nvar, 1..nfwall) where nvar is 5 or 11
depending on user input parameter. Time or nonlinear iteration number is also imported to the
variable "t" in the source code. User is free to add user postprocessing for each sampling after the
comment lines:
c*********************************************************
c Add user program here
c*********************************************************
Another Fortran source code "read_ wall_ surface_ grid.f" found in the same folder gives a
complete example for wall surface data postprocessing: Import the surface grid, compute face
center (Xf,Yf,Zf) and face area vector (Sxf, Syf, Szf) from the surface grid, import the surface
data, interpolate the face centered data to node, and output a postprocessing data in Tecplot format
(for the last sample only).
All the files have now been defined. The data to extract are the friction forces, the pressure and
the mass fraction on the solid walls. What is the procedure to extract the data?
1. At the end of the computation, perform the tool "extract_wall_surface_grid" tool. It creates the
file "wall_surface_grid.bin" from the "wall_data.bin" file.
2. Look for the Fortran program "read_wall_surface_grid.f" in "_data/isis/Src" folder from the
installation folder. Copy it into the computation directory and compile it (with g95 or gfortran
compiler using the argument "-frecord-marker=4").
3. Launch the executable a.out. It creates the file "wall_ surface_ grid.dat" where all the
information are stored in a Tecplot format.
All the resource files are located in the same directory, which is /COMMON under LINUX and
\bin under Windows. It is not possible to start Fine Marine if any of these files is missing.
This file contains the default values for all parameters related to a computation. The parameter
values displayed when creating a new project in Fine Marine are read from this file by the
interface. This file is not edited by Fine Marine.
This file contains the default values for all parameters of the available boundary conditions. The
same file is also used to create the graphical layout of the page Boundary Conditions in Fine
Marine. Fine Marine only reads from this file so this file is not modified while using Fine Marine.
USER-DEFINED PROGRAMS
This chapter describes user-defined programs to be used with Fine Marine flow solver to initialize the
flow or insert function depending on time (through a dynamic library).
In this section
33.1 Flow Field Initialization Program 792
33.2 Dynamic libraries 799
33.3 Procedure 816
33.4 Examples 823
33.1.1 Introduction
The Fine Marine solver allows the user to impose initial conditions in the whole domain for any
quantity (scalar or vector field), like: pressure, velocity, mass-fraction, etc. This initialization is
performed using a program in Fortran 77, but for a basic initialization no advanced coding
knowledge is required.
33.1.2 Workflow
Program preparation
1. Retrieve the template program provided in the Fine Marine package by copying the file called
init_isiscfd.f, available in the <INSTALLATION_DIRECTORY>/_data/isis/Src folder of the
package.
2. Modify your local copy to generate the desired profile.
The above program generates the file vessels_4_computation_2_massfr.bin that will initialize the
mass fraction as follows:
Project preparation
Batch procedure
On Linux
On Windows
33.1.3 Examples
In template file init_isiscfd.f, provided _data/isis/Src folder of the package, an example of the
initialization of a parabolic inlet velocity profile is given for a water jet.
c Set the velocity and the pressure field to zero everywhere
u=0
v=0
w=0
p=0
c Loop on boundary faces
n_begin=n-nvar_bnd
do i=1,nvar_bnd
The flag definition for any patch has changed starting v3.0 and is defined as AAABBCCDD with
AAA the boundary condition flag, BB the body index, CC the sub-body index and DD the domain
index (starting from 1). Available boundary condition flags and its meaning can be found in the
Identifier of the User Manual.
The mass fraction field can also be initialized in a particular area, along any direction. In this
example, water is defined in the zone where X-coordinate is smaller than 0.146 and Y-coordinate
is smaller than 0.292. The Z-coordinate is taken from the simulation generated by the interface,
Ci=1 corresponds to fluid-1 (water by default) and Ci=0 to fluid-2 (air by default).
Ci=0.0d0
c Define the location of the fluid-1
The aim of dynamic libraries is to give the capability for the user to dynamically impose or control
specific settings during the simulation. By doing this, the user can overwrite the parameters
prescribed through the interface or simply add more physics and external factors to the simulation.
This specification is done through Fortran programs, provided as templates in the package and
called dynamic libraries.
These libraries are not included in the executable but dynamically linked during the runtime
execution. Thus it allows to keep the library separated, reducing the executable size and the disk
space used. By calling the library components when needed, it becomes available to impose
specific parameters depending on the study.
For example, it is possible to dynamically control body motions (check the Imposed Law of
Motion section), impose external force laws or even perform the self-propulsion study (detailed
explanations can be found in Self-propulsion dynamic library).
All libraries need to be compiled following this procedure to be used in a computation.
The template files can be found in _data/isis/dynamic_lib/ of the installation folder and should be
used as follows:
l to impose customized external efforts: imp_eff_dyn.f90 (see "Custom External efforts" (p.
800)),
l to impose customized motion laws: kinematic_control.f90 (see "Kinematic control" (p. 801)),
l to make simulations of zigzag maneuvers, where the rudder (or an other appendage type) is
moved according to ship heading: kinematic_control_zigzag_selfprop.f90 (see more details
in "Zig-zag maneuver" (p. 801)),
A specific free license key is required to be able to use this module. Please contact your local support
team in case you do not have it yet.
The imp_eff_dyn.f90 dynamic library is used to apply custom external forces on the body. For
instance, it can be set in order to model the wind effort, a special propeller, the influence of
mooring lines, etc. The list of variables in imp_eff_dyn.f90 is given directly inside the dynamic
library. For each one of them, a comment describes its nature, its meaning and its possible values.
l This library is called at every time step and at every non-linear iteration if a least one degree of
freedom is solved without quasi-static approach.
The dynamic library kinematic_control.f90 is used to impose a motion law to each degree of
freedom of a body during the computation. For instance, it could be used to set a zig-zag
maneuver (see below for Zig-zag maneuver) or an unusual propulsion law. This library is called
at every time step :
• before non-linear loop (itnl = 0)
• at every non-linear iteration if a least one degree of freedom is solved without quasi-static
approach
The dynamic library is also called for every degree of freedom set as Dynamic library. Which
means that if for instance Tx, Ty and Rz for a ship and Rx for 2 rudders are set as Dynamic
library, the call will be made 5 times. Hence, if one applies motions by incrementation (e.g.:
Angle (t)=Angle (t)+V*dt) without any particular checks, the motion will be applied at every
dynamic library call. Recommended checks to be used are the following:
if (idof.eq.... .and. ibody.eq....) ...
and/or
if (itnl.eq....)
where idof and ibody are respectively the indexes of the degree of freedom and the body for
which the library is entered.
Another solution is to impose motions like this: Angle(t)=f(t)
This application makes use of the kinematic_control.f90 dynamic library and has been further
developed as kinematic_control_zigzag_selfprop.f90.
Introduction
This maneuver establishes several important characteristics of the yaw response. These are: the
Variables
The user needs to define the following variables in the inputs section of the library:
omega_in = Rudder rotational speed in deg/s.
maxangle_in: Maximum change of rudder angle in degrees (δ).
maxheading: Change of ship heading before counter-rudder is applied, in degrees (Ψ).
firstdirection: Direction of the first maneuver: -1 = port, 1 = starboard.
t_ start : absolute time to start the maneuver in seconds. Normally after a first acceleration
computation.
ship_name: Exact name given to the body in the Fine Marine GUI.
Recommendations
The computation_control.f90 library is a powerful tool allowing the user to dynamically adapt
some parameters during the simulation. For instance, the maximum number of time steps value
can be adapted, the requested accuracy of the pressure solver can be increased, the quasi-static
approach parameters can be modified, etc. The list of possible variables in computation_
control.f90 is given directly inside the dynamic library. For each one of them, a comment
describes its nature, its meaning and its possible values.
A source term of the momentum equation can be modified containing explicit contributions, such
as porous media, or other physical effects.
Definitions
A. Force application
The momentum source term can be used to apply a force either in an entire domain or at a specific
location in the mesh. It can be specified in such a way that it acts only on cells fulfilling a certain
geometrical criterion.
Applying a force in separate domain (as is done in the template) is slightly more straightforward.
If this approach is used and the application area should remain at the same point relative to the
body, this should be specified in the Fine Marine GUI. In the Body motion menu, the degrees of
freedom of the separate domain can be set to Copied from {body}.
If instead the force should be applied in the same domain as the body, the dynamic library gives
access to the CG_tcR0 variable. This variable can be used to obtain information of a specific body
as detailed below:
CGtc_G0 : current position, velocity and acceleration of the current body indexed by ip_body
at the center of gravity
1 = x, 0 = position
CGtc_R0 (2 = y, 1 = velocity , ip_body )
3 = z, 2 = acceleration
So, e.g. to obtain the relative coordinates to specify a force always 15 m in front and 5 m below
the center of gravity of the body (id=1):
The momentum equation used inside the solver expects that forces are given per unit volume (i.e.
N/m3). This means that the force density should be specified in the dynamic library.
Information can be written to the .std file using the write command:
if (mybloc.eq.1) then
write(6, '("Hello from block 1, the last timestep was ", ES24.17)') tp
call flush(6)
end if
C. Call frequency
The dynamic library is called by each partition and at each nonlinear iteration for non-steady (i.e.
time-dependent) computations. To avoid that output is written each time the dynamic library is
called, the print statements can be placed inside if-clauses:
if (itnl.eq.1) then
if (mybloc.eq.1) then
write(6,*) 'Hello world! This is the dynamic library calling.'
end if
end if
Despite being called at every nonlinear iteration by every partition, the forces are evidently only
applied once.
If the dynamic library is used in a parallel computation, each partition acts on the cells that are
assigned to it. In some cases, it might be necessary to compute the total sum of a quantity over all
partitions. MPI tools are needed to obtain such a global sum.
Linux compilation
Template files for compiling the libraries build_ Linux64_ *.sh can be found in _
data/isis/dynamic_lib/check_dynamic_lib/src_fortran in the installation folder. To use the MPI
capabilities the option -I needs to be added as follows:
FC=gfortran
/bin/rm *.so
$FC -c -fPIC -I INSTALLATION_PATH/finemarine12.1/LINUX/_mpi/_ompi2.1.2_
gcc4/include momentum_source_term.f
$FC -shared -o isis_dynamic_lib.so momentum_source_term.o
/bin/rm *.o
Please adapt the paths according to your installation.
Since the dynamic library is compiled using OpenMPI libraries, the MPI library specified when
launching the computation should be Open MPI instead of Intel MPI (default). This can either be
set in the Task Manager (Task Arguments & Characteristics) or in the LD_LIBRARY_
PATH if using a batch file.
An example of the summation of forces across multiple partitions using the above- defined
subroutine (my_glbsum(res)) is given below. This subroutine has to be included in the dynamic
library file.
Example
subroutine momentum_source_term()
The solid boundary conditions menu in the Fine Marine interface gives the option of activating
roughness with an equivalent sand grain height in patches where wall function BC is used. For
further customization of the wall function the dynamic libraries described in this section can be
used.
The wall function formulation relies on the fact that boundary layer velocity profile has a
logarithmic behavior within the log law region of the boundary layer described by:
where f is the roughness function. The change in velocity profile can be expressed by:
where k is a typical roughness height of the rough surface, U τ is the friction velocity and ν is the
fluid kinematic viscosity.
A. User_Defined_DLL_WF.f90
This library can be used to define a correlation between ΔU + and k +, and therefore an E' value.
The E' value will be passed to the flow solver and used in the wall function boundary conditions.
The template library contains an example with a correlation of the type:
The k + value is directly defined in the .sim file, so that the dynamic library does not need to be
recompiled to change it.
Computation setup
The following comments need to be added in the .sim file to activate the library and define the k+
value. To do so click on the Comment button under the Computations panel and add the
B. User_Defined_DLL_WF_k.f90
This second library allows the user to locally modify the E parameter of the Log Law from the
wall roughness height k instead of the normalized wall roughness height k+. Since E depends on
k+ and k+ on k, E is computed iteratively inside the flow solver.
Computation setup
In the Boundary conditions menu choose Activate roughness and define the sand grain height k
per patch. If a patch with wall function needs to be treated as smooth set its sand grain height to
zero.
The following comments need to be added in the .sim file to activate the library and define the k+
value.To do so click on the Comment button under the Computations panel and add the
following lines in the pop-up window that appears:
*
*** UDF:DLL_WF_K:ACTIVATE: ?
*
YES
*
*
*** QUANTITY:WALL ROUGHNESS SAND-GRAIN HEIGHT:ACTIVATE: ?
*
YES
References:
Anders Östman, Kourosh Koushan, Luca Savio (2017). Numerical and Experimental
Investigation of Roughness Due to Different Type of Coating. HullPerformance & Insight
Conference.
When using Unsteady_Boundary_Conditions.f90, the user can freely define any type of time
changing boundary condition. For instance, a time varying wind profile or pressure condition.
For this purpose, an external boundary condition should be defined as usual and the computation
should be saved to create the .sim file.
Then, the following line should be copied from the .sim file and added in the comment part of the
simulation file. For instance:
*
*** BND:FAR FIELD:03:PARAMETERS
*
98 0 0 0 5.4e-08 1.7496e-08 1.5e-08 0 -1 0 0 0 0 0 0 0 0 '-' '-' '-' '-' '-' '-
In this case, the patch 03 is assumed to be an unsteady far- field condition. The patch ID
corresponds to its location in the list of external patches tab of the menu (the first one being 01).
Then the law number (1st digit) must be changed to 98, in order to switch from a steady boundary
condition to an unsteady one.
The variables that are used in the dynamic library are documented at the top of the file. The
included example in the template is controlling the jet number 1. It sets a sinusoidal variation of
the velocity, with a given direction, amplitude, frequency and phase.
This section describes how the convergence checker can be tuned in batch or recompiled. It
corresponds to a dynamic library called isis_dynamic.so that contains the convergence checker
and that can be found in _data/isis/dynamic_lib/Convergence_checker of the installation folder
(then under linux64 or win64 depending of the operating system). This library should be placed
inside the computation folder together with the configuration file called convergence_
checker.input that the user must create. If convergence checker is activated, information about
the averaged values and convergence status of the checked quantities will be stored in the .std file
at each timestep. More information about guidelines can be found in "General Parameters" (p.
626) section of the Control variables menu.
Configuration file
The file convergence_ checker.input should be placed in the computation folder with the
following structure:
STABILITY INTERVAL X
AVERAGE LAST Z
TOLERANCE Y
CHECK QUANTITIES list of quantities
CHECK AFTER N
The lines can go in arbitrary order but the keywords are case-insensitive.
STABILITY INTERVAL represents the stability interval computed by the last X% of time steps,
during which the averaged quantities should be less than the tolerance.
AVERAGE LAST represents the percentage of the last time steps to compute the averaged value
for all quantities defined in CHECK QUANTITIES.
TOLERANCE is the value under which the quantity is considered as converged compared to its
averaged value.
By default X = 10%, Y = 1% and Z = 0% (average of last 0% is the very last time step value).
CHECK QUANTITIES: list of the quantities to check by the convergence checker from the
following list: Tx, Ty, Tz, Vx, Vy, Vz, Ax, Ay, Az, Fx, Fy, Fz, Mx, My, Mz. The names can be
separated by spaces or commas. Example: CHECK QUANTITIES Fx, Mx
In order to avoid pathological cases in the very beginning of the simulation when X% is actually 1
or 2 time steps, the convergence check is not done from the very beginning of the simulation, but
only starting from the time step number N, which is 30 by default. This number is also
configurable through the mentioned above file using the line CHECK AFTER N.
The last two lines that the library accepts from the configuration file are EPSILON and
VERBOSITY. The first one is used to specify the absolute error for checking condition 1 of the
convergence criterion (1.0E-8 by default) and the second one specifies the verbosity of the library
(1 by default). Higher verbosity will give more output from the library. Verbosity 2 gives more
information, 3+ is for debug output.
Structure
The library consists of four Fortran source files and a supplementary shell script to help to compile
it, all stored under _data/isis/dynamic_lib/Convergence_checker. These four files are:
l computation_control.f90,
l solver_quantities.f90,
l session_module.f90,
l logging.f90.
In terms of Fortran, computation_control.f90 contains the external procedure and the other three
files are modules. computation_ control.f90 contains the dynamic library subroutine
computation_control itself that is called by the flow solver. The responsibility of this code is to:
Compilation procedure
The library comes with two scripts build and build.bat to help with compiling the library from its
source. The first script uses GNU Fortran compiler and dedicated for Linux. Compilation was
tested with GNU Fortran 4.8.5 and 4.4.3. The second script uses Intel Fortran and dedicated for
Windows. Compilation was tested with Intel Visual Fortran 12.0 compiler.
When compiling, the directory obj is created near src directory. It can be deleted after successful
compilation. The result of the compilation is the single file called isis_dynamic_lib.so on Linux
and isis_dynamic_lib.dll on Windows and should be placed in the computation folder.
Input file
The dynamic library reads the input file PMinput.dat to retrieve the values for the parameters of
the porous media; thus before starting the simulation the input file has to be prepared and stored in
the simulation folder. The PMinput.dat contains the following information:
l index of the domain representing the porous media,
l the values of the vectors , , and .
Recommendations
Porous medias are defined at a domain level, not at a body level. Only one domain can be
selected as porous media.
Known Limitations
33.3 PROCEDURE
Windows how-to
Follow the steps in this section to compile dynamic libraries in a Windows machine.
1. Install a Fortran compiler such as MinGW. Make sure it is a 64bit version. Install the compiler
in a path without spaces, for example directly in C:\.
2. Go to System properties > Advanced > Environment variables and modify or create the
"Path" System variable to add the path to the compiler bin folder.
3. Check the compiler is working:
a. Open this file in a text editor:
_data\isis\dynamic_lib\check_dynamic_lib\src_fortran\build_Windows_win64_gfortran.bat
b. Change the paths to the compiler to match your installation. For example:
del *.dll
C:\MinGW\bin\gfortran.exe -c info_lib_dynamic.f90
C:\MinGW\bin\gfortran.exe -c demo_dynamic_lib.f90
C:\MinGW\bin\gfortran.exe -shared -static -mrtd -o isis_dynamic_lib.dll info_lib_
dynamic.o demo_dynamic_lib.o
..\bin\win64\test_isis_dynamic_lib.exe
del *.o
pause
c. Double click on the .bat file to execute it. If the compiler is working, the following cmd
window will open:
1. Copy the Fortran routine that is needed (in this procedure "imp_eff_dyn.f90"is used) from the
folder "_data/isis/dynamic_lib/" that is stored in the installation folder into the project directory
normally.
It is advised not to copy these files directly into the computation directory (or at least a copy, or a
symbolic link) to avoid loosing the user-defined program if the computation is deleted later on.
This file should be copied in the folder where the Fortran routine is stored (e.g. the project
directory).
Existing files stored in the installation folder can be considered as a template that can be modified
to automatize the compiling process. User can either modify them to fit the certain case
conditions, build new ones or perform the compilation steps manually.
The compiled library should always be called "isis_dynamic_lib.so " , because it is the file name
that the solver will be expecting.
3. Update the imp_eff_dyn.f90 file according to the new definition of external forces.
4. Compile the modified source of this library:
l For Unix System: open a shell, go to the folder containing the file build_ OSversion_
compiler.sh and enter the command ./build_OSversion_compiler.sh
l For Windows System: go to the folder containing the file build_OS_version_compiler.bat
and double click on this file.
This step will generate the dynamic library file "isis_dynamic_lib.so" for Unix System or
"isis_dynamic_lib.dll" for Windows System.
5. Copy the file called 'isis_dynamic_lib.so' into the computation directory or update the profile
(.cshrc or .bashrc,...) of the User account by adding the line:
export LD_LIBRARY_PATH=path_to_isis_dynamic_lib_folder:$LD_LIBRARY_PATH
or setenv LD_LIBRARY_PATH path_to_isis_dynamic_lib_folder:$LD_LIBRARY_PATH
In case the environment variable LD_LIBRARY_PATH is not yet defined, here are two
examples scripts to define it:
l for C-Shell:
#!/bin/csh
if( $?LD_LIBRARY_PATH ) then
setenv LD_LIBRARY_PATH ${MyPath}:${LD_LIBRARY_PATH}
else
setenv LD_LIBRARY_PATH ${MyPath}
endif
echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}"
l for Bash-Shell:
#!/bin/bash
export LD_LIBRARY_PATH=${MyPath}:${LD_LIBRARY_PATH}
echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}"
It is advised not to copy these files directly into the computation directory (or at least a copy, or a
symbolic link) to avoid loosing the user-defined program if the computation is deleted later on.
This file should be copied in the folder where the Fortran routine is stored (e.g. the project
directory).
Existing files stored in the installation folder can be considered as a template that can be modified
to automatize the compiling process. User can either modify them to fit the certain case
conditions, build new ones or perform the compilation steps manually.
The compiled library should always be called "isis_dynamic_lib.so " , because it is the file name
that the solver will be expecting.
These programs are written in Fortran. Please make sure that the machines you are working on
(especially nodes from a cluster for instance) can see the dynamic libraries and their dependencies.
For instance, compiling with gfortran will create a dependency with the dynamic library file
libgfortran.so.3 . User may need to copy these files in the working directory. To check the
dependency, type the command ldd isis_dynamic.so.
Fortran procedure to combine several dynamic libraries or even several times the same dynamic
library: for instance, computation_ control.f90. This is the case if one wants to use for the
convergence checker and a user-defined library to speed up simulation for instance. In such case,
the user can either integrate his own library into the computation_ control.f90 from the
convergence checker or simply make a "call" function, to keep the files separated, from the
computation_ control.f90 from the convergence checker but renaming the other computation_
control.f90 to computation_control_UD.f90. Hence:
.....
call computation_control_UD(mybloc,nbody,ID_Body,Name_Body &
01ref_R0,Theta1ref, &
.....
This user defined library becomes a sub routine of the main program.
For the compilation, the subroutines must be defined before the main program.
Hence here:
FC=gfortran
/bin/rm *.so
$FC -c -fPIC logging.f90 session_module.f90 solver_quantities.f90 computation_control_
UD.f90 computation_control.f90
33.4 EXAMPLES
All the basic Fortan functions can be used in the dynamic library.
For instance, one can print some information in the standard output .std file:
if (mybloc.eq.1) print*,'Begining of the dynamic library imp_eff_dyn'
To add an external effort along the X-axis of magnitude -1.5 N on the body 1, this line can be
used:
fx_IMP(1)=-1.5
Time dependent forces can also be used. This example shows how to impose a periodic forward
force on body 1, defining extra constants.
double precision forceAmplitude, period, mass, gravity, pi
forceAmplitude = 25.
period = 2.
mass = 62.5
gravity = 9.81
pi/2 = ACOS(0.0)
fx_ IMP (1)=- 4.*ABS (forceAmplitude*SIN (pi/period*tc)) - 2.* (- mass*0.25* (pi/period)*
(pi/period)*SIN(2*pi/period*tc))
Actions executed by the user through the Fine Marine interface are recorded in a python-like script
giving added flexibility for automation of project creation and management. The Project/Script...
menu allows to edit and save the script while it can be executed using the Project/ Script.../Execute
menu.
The Project/ Script.../Execute menu accepts the *.pyc file pattern as well as the *.py.
To launch a python script with Fine Marine in batch, the command is:
l On Linux: finemarine121 -script test.py -batch -print
l On Windows: fine_marinex86_64.exe -script test.py -batch -print (from the installation folder)
The script should contain the command open_project() to specify the project to work on.
Project/Script.../Edit... opens a dialog box displaying all the commands performed by the user since
the beginning of its session. The user can easily edit this script (add, remove and modify commands).
The dialog box contains two pull-down menus. File menu allows to open a script in a separate dialog
box and to save the script in a file. Run menu allows to run the script shown in the window under the
current session ("Rerun on top").
Script Recording Project/Script.../Save All... is used to save the dynamic recording of all
commands performed by the user since the beginning of its session. Project/Script.../Execute... is
used to run a python script file containing Fine Marine commands. A file chooser is opened to select a
file with a ".py" extension. Upon selection of a valid file, the script is executed in the current session
and the result is visualized in the graphical window. Depending on the content of the script, operations
will be added to the current project or a new project will be automatically opened before operations are
performed (the previous project is closed). If the script being run contains a syntactical error it will be
aborted and a message will appear in the shell. Project/Script.../Re-execute Last can be used to
rerun the last script that was run using the Project/Script.../Execute... command. This option is most
useful when writing own scripts manually to rapidly test it on the fly. The supported commands for
writing python scripts are described below, all other commands, even if recorded, are not officially
supported. All actions running in Fine Marine GUI cannot be all recorded as python scripts. When
replaying a python script that has been recorded automatically, it may be that the graphics
representations are not identical as in the initial session for instance.
All Fine Marine commands are available from the FM module. This means that they must be accessed
by default by using the FM prefix. All commands are defined in the python file FM.py. This file is
accessible in the installation directory INSTALL_DIR/_python/_fine/_marine/FM.py.
It is NumPy package provided to ensure the backward compatibility. Also, to support several tools developed
in Python, the plotting library Matplotlib has been added into Fine Marine starting from v3.1-2. Use of other
then provided together with Fine Marine package and results obtained are not officially supported by
NUMECA will stay under the responsibility of the user.
The next sections will present the list of supported macros. The ones which are not described are not
supported yet. The last section will be dedicated to dialog boxes creation to interact with scripts.
In this section
34.1 Macro Commands 827
34.2 Dialog Box Creation 914
l create_project(dirname): creates directory structure along with a project file with default
settings:
dirname/
dirname/_mesh/
dirname/dirname.iec
If dirname contains no path, this macro creates a project in the current working folder of the
script.
Example: create_project("/home/user/myproject_ship1")
l close_project(): closes the current project and clears the screen from all previous drawings.
l open_project(project_name): opens an existing project named as project_name.
l save_project(): saves open project.
Silent mode for save_project() is available. In case there is a computation running a warning
will be displayed: isiscfd for the computation computation_1 is running. Saving the project could
make your simulation(s) invalid.
Example
Example
set_computation_name(0,"comp2012")
l get_active_computation(): gets active computation with the index; within the Uncertainty
Quantification management this command has an extention to return the list of values for
computation_no and subcomputation_no, if the sub-computation has been selected.
l set_active_computation(index): sets active computation with the index.
Example
Within the Uncertainty Quantification management set_ active_ computation (index) has
received an extended functionality to the set_active_computations(list) accepting not only a
single computation index, but a pair of indexes, denoting computation and sub- computation
numbers respectively.
l set_ active_ computations (list): sets multiple computations; list consists of two types of
elements: single numbers and pair of numbers: if a single number is in the list, the
corresponding computation will be selected; if a pair is in list, - the sub-computation will be
selected.
l get_active_computations(): Returns list of selected computations/sub-computations defined
like the argument of function set_active_computations.
Example
FM.set_active_computations([0, 1, (1,0)])
will select computation #0, #1 and the first sub-computation of computation #1.
l reset_computation(). Cleans all the files withing the active computation folder inside the
Project and saves the computation again to be ready to run the simulation. In the case of
success it returns an empty list. If it couldn’t remove folders of some computations, it returns
the list of names of such computations.
l move_computation_down() Moves active computation down by one position.
l move_computation_up() Moves active computation up by one position.
Example
set_active_computations([0, 1, (1,0)]) will activate the parent computations with the index 0,
index 1 and the first sub-computation of computation with the index 1.
l new_ computation (name): creates a new computation with specified name. Project
parameters are duplicated from the active computation.
l save_active_computation(): saves parameters of the active computation to sim-file. Saves
sub-computations, if any present. Can be also used within the Uncertainty Quantification
management; full list of commands for UQ is available in paragraph Uncertainty
Quantification.
l Task(simfile): creates an instance of class Task associated with the .sim name. This does not
add the created task to Task Manager. In order to add the task to Task Manager, use add_task
(see below).
l wait_for_delayed_taks(): waits for all the tasks to be executed (in case any are delayed)
before executing the next function; can be used in batch mode only and should always be used
if some tasks are delayed.
l launch(): Starts the task using current parameters. Saves the batch file and returns name of the
created file. (Note that the batch file is never used for launch in GUI.)
l kill(): Kills the task computation. The same action performs "Stop" button in Task Manager.
l suspend (): Suspends the task computation. The same action performs "Suspend Solver"
button in Task Manager.
l save_batch_file(): Saves the batch file for the computation. Returns name of the created file.
Saving the batch file when working with the mixed platform connection (Windows to UNIX
platform connection exactly) is not available for the moment.
For the enable_ preprocessing, enable_ solver, enable_ postprocessing command usage when
launching computations within machine network connection it is important to add hostnames of
used machines. Procedures to setup machines connection and how to add the hostname can be
found in the Task Manager. This action can be done only once for each machine. If the machine
hasn't been added to the Task Manager yet, Fine Marine GUI will try to add it without the
password.
l disable_ preprocessing (): disables preprocessing computation step and designate it to the
given machine.
l disable_solver(): disables solver computation step and designate it to the given machine.
l disable_postprocessing(): disables preprocessing computation step and designate it to the
given machine.
l move_up(n): moves the selected computation up n positions in the task list.
l move_down(n): moves the selected computation down n positions in the task list.
l set_ machines(k1, machine1, …, kN, machineN): sets machines for the solver with the
number and machine hostname as: machine number k1 has the hostname machine1, …,
machine number kN has the hostname machineN.
l save_queue_job(system, queue, jobname, mpi_version, mpi_path): saves the batch file for
the queuing systems: system can be SGE or PBS; queue corresponds to the pull-down box
Parallel Environment in Task Manager; jobname is a created queuing job name and
corresponds to the entry field Job Name in the Task Manager; mpi_version corresponds to the
box Binary type in the Task Manager; mpi_path is the path to mpi installation to use. It can be
the empty string (in that case mpi installation provided into the Fine Marine package will be
used), to check the version used please see the NUMECA_MPI_DIR variable in the generated
file. This macro also returns name of the saved batch file, where the file name depends on the
set of selected sub-tasks and the queuing system.
l submit_ queue_ job (system,batchfile) : submits the batch job file to the queuing system.
batchfile is the file name returned by save_queue_job.
l get_ status (tool) : returns running status of the tool from 'status.dat' file. tool can be
"postmetis", "hexpress2isis", "3dto2d", "premetis", "isiscfd", "isis2hexpress", "isis2cfview"
and "probes2cfview".
l get_ status (tool, param) : returns parameter value from the 'status.dat' file. too l can be
"postmetis", "hexpress2isis", "3dto2d", "premetis", "isiscfd", "isis2hexpress", "isis2cfview"
and "probes2cfview"; param can be "STATUS", "DATE", "NPART", "SAVE_
COUNTER". (not every tool have all parameters).
Notice that status.dat' file is locked while retrieving the data from it.
For the enable_ preprocessing, enable_ solver, enable_ postprocessing command usage when
launching computations within machine network connection it is important to add hostnames of
used machines. Procedures to setup machines connection and how to add the hostname can be
found in the Task Manager. This action can be done only once for each machine. If the machine
hasn't been added to the Task Manager yet, Fine Marine GUI will try to add it without the
password.
l disable_ preprocessing (): disables preprocessing computation step and designate it to the
given machine.
l disable_solver(): disables solver computation step and designate it to the given machine.
l disable_postprocessing(): disables preprocessing computation step and designate it to the
given machine.
l set_ machines(k1, machine1, …, kN, machineN): sets machines for the solver with the
number and machine hostname as: machine number k1 has the hostname machine1, …,
machine number kN has the hostname machineN.
l save_queue_job(system, queue, jobname, mpi_version, mpi_path): saves the batch file for
the queuing systems: system can be SGE or PBS; queue corresponds to the pull-down box
Parallel Environment in Task Manager; jobname is a created queuing job name and
corresponds to the entry field Job Name in the Task Manager; mpi_version corresponds to the
l get_ postmetis_ status(): simplified versions of get_ status for the "postmetis" tool, returns
information from the 'status.dat' file for the "postmetis" tool.
l get_ hexpress2isis_ status(): simplified versions of get_ status for the "hexpress2isis" tool,
returns information from the 'status.dat' file for the "hexpress2isis" tool.
l get_ premetis_ status () : simplified versions of get_ status for the "premetis" tool, returns
information from the 'status.dat' file for the "premetis" tool.
l get_isiscfd_status(): simplified versions of get_status for the "siscfd" tool, returns information
from the 'status.dat' file for the "postmetis" tool.
l get_isis2hexpress_status(): simplified versions of get_status for the "postmetis" tool, returns
information from the 'status.dat' file for the "isiscfd" tool.
l get_isis2cfview_status(): simplified versions of get_status for the "isis2cfview" tool, returns
information from the 'status.dat' file for the "isis2cfview" tool.
l get_probes2cfview_status(): simplified versions of get_status for the "probes2cfview" tool,
returns information from the 'status.dat' file for the "probes2cfview" tool.
Advanced
l enable_solver_tool(tool, machine): enable arbitrary tools in the chain, thus can be considered
as an advanced handling of the run; tool can be "postmetis", "hexpress2isis", "3dto2d",
"premetis", "isiscfd", "isis2cfview"; machine specifies the machine to run the tool on.
l disable_solver_tool(tool): disnable arbitrary tools in the chain, thus can be considered as an
advanced handling of the run; tool can be "postmetis", "hexpress2isis", "3dto2d", "premetis",
"isiscfd", "isis2cfview".
l set_fullflex_license(usage): make the solver check for a 'Fullflex' license if usage = 1 and the
usual license if usage = 0.
Example of usage: FM.Task("SIMFILENAME").set_fullflex_license(1)
l get_fullflex_license(): returns 1 if 'Fullflex' license will be used for the task.
l task_list(): Returns a list of all Task Manager tasks. The list consists of FM.Task instances.
l get_sim_file(): Returns the .sim file name of the current computation.
l add_task(simfile): add a task associated to the sim file to the Task Manager
In batch mode, the user must open the FINE/Marine project before adding new tasks to the
task list.
Examples
l Launch the current computation with default parameters: serial, on local machine:
t = FM.add_task(FM.get_sim_file()) #add task if none, then reset to defaults
t.launch()
l Launch the current computation on the current machine using n cores:
t = FM.add_task(FM.get_sim_file())
t.set_machines(n, FM.local_machine())
t.launch()
l Do not launch, just save batch file, use 2 cores in machine1 and 8 cores in machine2:
t = FM.add_task(FM.get_sim_file())
t.set_machines(2, 'machine1', 8, 'machine2')
filename = t.save_batch_file()
Examples
l for the current computation, one wants a multi- fluid model with fluid1 = WATER,
density=1000, viscosity = 1e-6 and fluid2 = AIR, density=1, viscosity = 1e-4
FM.set_fluid_model_number(2)
FM.set_fluid_name(1,"WATER")
FM.set_fluid_density(1,1000)
FM.set_fluid_viscosity(1,1e-6)
FM.set_fluid_name(2,"AIR")
FM.set_fluid_density(2,1)
FM.set_fluid_viscosity(2,1e-4)
l for the current computation, one wants a mono-fluid model with fluid1 = AIR, density=1,
viscosity = 1e-4
FM.set_fluid_model_number(1)
FM.set_fluid_name(2,"AIR")
FM.set_fluid_density(2,1)
FM.set_fluid_viscosity(2,1e-4)
l set_passive_scalar_usage(boolean): management of passive scalar activation. Boolean can be
set 0 (to deactivate the feature) or 1 (to activate it).
l get_passive_scalar_usage(): gets the status of the passive scalar activation: 0 (inactive) or 1
(active).
l set_passive_scalar_name(name): management of passive scalar name. The name can be set
to any expression.
l get_passive_scalar_name(): gets the passive scalar name.
General
l get_bc_value(block, face, patch): gets boundary condition for a given block, face, patch.
Note that face is always equal to 1.
l set_bc_value(block, face, patch, number): sets boundary condition for a given block, face,
The indexation for the bc_value methods is one-based. This means that the first defined patch
should be referenced with index 1 when using set/get_bc_value methods.
l get_bc_patch_by_patch(patch): returns the boundary condition for the given list of patch
names.
l get_bc_patch(DomainID, patch): returns a "BCPatch Class" (p. 846) object for a given
domain and patch. Value for block is 1 for the first function, when there is only one domain
defined in the project. Note that face is hardcoded to 1.
l get_bc_patch_by_name(name): returns a "BCPatch Class" (p. 846) object with given name.
Example: get patches having name 'Hull':
get_bc_patch_by_name('Hull')
l get_bc_patch_list(pattern): returns a list of "BCPatch Class" (p. 846) objects whose name
matches the pattern string. The special characters are * (matches everything) and ? (matches
any single character).
Example: get patches ending with mirror:
get_bc_patch_list('*mirror')
l profile = import_profile(filename):
filename : string, path to profile. See the boundary conditions page for the description of the
profile format.
profile: list, where:
profile[0]: integer, interpolation type, the default type is 1;
profile[1]: list of lists, points in the profile;
profile[2]: string, error message: it will be empty of the import works successfully.
l parameter = patch.get_ parameter_ value (parameter_ name): returns the parameter value
with the given name parameter_name.
patch.set_parameter_value(parameter_name, parameter): sets the value of the parameter
with the given name parameter_name.
l type = patch.get_parameter_type(parameter_name): returns the type of the parameter with
the given name parameter_name.
To set parameters for Temperature and Solute please refer to "BCPatch Class" (p. 846) page.
Example 1
patch = FM.get_bc_patch(2,4)
parameter = patch.get_parameter_value("Vy")
parameter.set_value(2)
patch.set_parameter_value("Vy", parameter)
Example 2
patch = FM.get_bc_patch(2,4)
parameter = patch.get_parameter_value("Turbulent dissipation")
parameter.set_type("constant")
Example 3
l x, y, z = get_far_velocity(): gets the Far field velocity. The far field velocity settings are
defined as global parameters.
set_far_velocity(x, y, z): sets the Far field velocity. The far field velocity settings are defined
as global parameters. x, y, z specify the coordinate components.
l ptype = get_FF_profile_type(block, face, patch): gets the Far Field profile type. Denotes
interpolation direction or "surface" for a surface profile.
set_FF_profile_type(block, face, patch, ptype): sets the Far field profile type. This profile
type will be used for all profiles associated with Far field parameters of the patch, if any.
l ptype_x, val_x, ptype_y, val_y, ptype_z, val_z = get_FF_velocity(block, face, patch): gets
the Far field velocity data. Returns 3 pairs of values. Example:
"constant" 4.6 "profile" "vinlet_01.p" "constant" 0
The first value in a pair is "constant" or "profile". If it's "constant", the second value is a real
number; if not, the second value is a filename, absolute or relative to the working directory.
set_FF_velocity(block, face, patch, t_x, val_x, t_y, val_y, t_z, val_z): sets velocities of the
Far field patch. Arguments are the same pair that may return get_FF_velocity().
Mass fraction
l value = get_FF_mass_fraction(block, face, patch): gets the mass fraction for the patch.
Values are: 1 for 1st fluid, 2 for 2nd fluid, 0 for default option.
set_FF_mass_fraction(block, face, patch, value): sets the mass fraction for the patch.
Wave generator
l spectrum, depth, direction, referenceX, referenceY, height, period, gamma = FM.get_ bc_
wave_parameters(): gets the parameters for the wave generation at the boundary.
l FM.set_ bc_ wave_ parameters (spectrum, depth, directionX, directionY, referenceX,
referenceY, height, period, gamma): sets the parameters for the wave generation at the
boundary:
l spectrum: type of wave spectrum. Can be "REGULAR", "ITTC", "JONSWAP",
"JONSWAP 3 PARAMETERS", "PIERSON-MOSKOWITZ" or "USER-DEFINED".
l depth: depth of the water,
l directionX: propagation direction (1=positive X-direction, -1=negative X-direction),
Legacy
l height = patch.get_sand_grain_height(): gets the per-patch sand grain height of the given
patch in meters.
patch.set_sand_grain_height(height): sets the per-patch sand grain height of the given patch
in meters, height is a real, positive or null. This value is effective when the wall roughness
mode is 0.
A specific class is dedicated to synthetic jet boundary conditions with some specific macro
commands:
l jet = FM.create_jet(name): creates a new jet and name it accordingly to the string name,
which has to be different from existing jet names.
l get_number_of_jets(): returns an integer corresponding to the number of defined jets in the
current computation.
Computations always requires patches definition (boundary conditions, body creation, etc.). To
provide a convenient access to patches, the BCPatch class has been added. The class can be
combined with other python commands.
l get_name(): gets patch name, e.g. 'Hull' or 'X_mirror'
l set_name(name): sets patch name
l get_block_patch(): gets block ID and patch ID
l get_bc_name(): gets name of boundary condition of this patch, e.g. 'SOL', 'EXT', 'MIR'
l get_bc_type(): gets type of BC and opsel, see Boundary Conditions for values of BC type.
Remark: opsel is an internal output common with other NUMECA software, it should always
be defined as -1 here.
l set_bc_type(value): sets type of BC and opsel, value is a list of these two
Passive scalar:
l get_passive_scalar(): gets the relative information for a given patch (activation and value).
l set_passive_scalar(on, value): management of the passive scalar for a patch, on is defined as
'True' if the passive scalar is active for the patch and in this case value defines the passive
scalar value on the boundary.
Synthetic jet:
l patch.get_temperature(): gets the temperature defined on the patch (activation and value).
l patch.set_temperature(active, T): sets the temperature values of the patch. The Boolean
active defines the activation of the model on the considered patch and the temperature on the
patch is defined by the T scalar.
l patch.get_solute(): gets the solute defined on the patch (activation and value).
l get_body_list(): returns list of all bodies in format: ID, name, ( [child sub-body index, block0,
face0, patch0], [child sub-body index, block1, face1, patch1], ... ).
l get_nb_bodies(): returns number of bodies.
l set_body(Id,name,nPatches,patches): builds a body from patches. Id identifies a new body.
It must be an integer number greater than or equal to 1. name specifies unique name of new
body. nPatches specifies the number of patches included into new body. patches is a row of
lists separated by comma. Each list composes the values of block, face and patch.
Example: build a body called"ship" with two patches
id = get_nb_bodies() + 1
set_body(id,"ship",2,[0,0,1],[0,0,11])
l remove_patch_from_body(block, face, patch): removes the patch identified by the values of
block, face, patch from a body.
l set_ body_ by_ patch_ name (name,pattern): sets body with a given name from patches
whose names match the pattern string. Return new body ID. The special characters are: *
(matches everything) and ? (matches any single character).
Example: get body from patches ending with 'hull'
new_body_id = set_body_by_patch_name('ship','*hull')
l get_subBody_list(): gets list of all sub-bodies in format: ID, name, ( (block0,face0,patch0),
(block1,face1,patch1), ... )
l set_subBody(Id,name,nPatches,patches): builds a sub-body from patches. Works exactly
the same as function set_body(). Note that Id for body and sub-body have no relation.
Example: build a sub-body of two patches included into a body
set_body(1,"Body",3,[0,0,1],[0,0,2],[0,0,3])
set_subBody(1,"Sub-body",2,[0,0,1],[0,0,2])
l remove_ patch_ from_ subBody (block, face, patch): removes the patch identified by the
values of block, face, patch from a body.
l get_body_domain(body_id): gets a domain associated with a given body_id.
l Activate the foil mode and define QS parameters with dT2 and dT3 in time steps, assuming
the following inputs: linear law, T1 = 1 s, under-relaxation 0.5, Fy = 30.5 N, Fz = 0 N, dT2 =
22 time steps, dT3 = 30 time steps
FM.set_quasi_static_mode(FM.FOIL_QS)
FM.set_quasi_static_law(1, FM.LINEAR_LAW)
FM.set_quasi_static_intervals_type(1, FM.TIMESTEPS)
FM.set_quasi_static_intervals_ts(1, FM.FOIL_QS, 22, 30)
FM.set_quasi_static_foil_parameters(1, 1, 0.5, 30.5, 0)
l Activate the foil mode and define QS parameters with dT2 and dT3 in seconds, say dT2 = 0.1
[s], dT3 = 0.2 [s].
FM.set_quasi_static_mode(FM.FOIL_QS)
FM.set_quasi_static_intervals_type(1, FM.SECONDS)
FM.set_quasi_static_intervals_sec(1, 0.1, 0.2)
l Define dT2 and dT3 in time steps in the hull mode (dT2 = 22 time steps, dT3 = 30 time steps).
FM.set_quasi_static_mode(FM.HULL_QS) # unnecessary for a fresh project
FM.set_quasi_static_intervals_type(1, FM.TIMESTEPS)
FM.set_quasi_static_intervals_ts(1, FM.HULL_QS, 22, 30)
The following functions allow the estimation of the inertia parameters using two different
methods: Domhydro or ITTC regression laws. They correspond to the action available and
described in "Dynamic Parameters" (p. 344) chapter.
l mass, xCoG, yCoG, zCoG, A, B, C, D, E, F, error = estimate_ inertia_ data (bodyID,
defineZ, zCoG, precision=1E- 20) : returns the inertia parameters using a Domhydro
computation.
mass: estimated mass in kg (Real)
xCoG, yCoG, zCoG: estimated position of the CoG in meters (Reals)
A, B, C, D, E, F: estimated inertia matrix elements (Reals)
The following functions control the Initial conditions for bodies with no solved DOF:
l get_ motion_ initial_ displacement(bodyId): gets initial translation and rotation values for
bodyID; the latter should be of type INTEGER (index of the body of interest).
l set_motion_initial_displacement(bodyId, transX, transY, transZ, rotationX, rotationY,
rotationZ): sets initial translation and rotation values for bodyID; the latter should be of type
INTEGER (index of the body of interest); transx, transY, transZ, rotationX, rotationY,
rotationZ should be of type REAL. Initial conditions values will not be written in the .sim
simulation file if at least one DOF of the body is not fixed. If dealing with a 2D case, transZ,
rotationX and rotationY should be set to 0.
Example:
grid_bc = get_grid_bc(1, 1, 2)
bc = get_bc_value(1, 1, 2)
whole_flag = grid_bc * 100 + bc
l set_ grid_ bc (block, face, patch, grid_ bc) : the boundary condition flag for the grid
deformation of the patch. It will be the first digit of the whole B.C. flag.
l Independent domain motion:
When defining an independent domain motion the macros to be used are the Body motion
ones. The body ID to be used is defined as (-1 - DomainID)
Example
l set_ initial_ solution_ computation (name): sets the name of the computation from which
active ones should be restarted
l get_initial_solution_computation(): returns the name of the computation from which the
active one restarts. The returned value can be "" if the computation is initialized by uniform
values. If the returned value is not "", it is the name of an existing computation
l set_initial_solution_type(restart): sets the computation as a restart computation if restart = 1.
Makes the computation start from uniform values if restart = 0
l get_ initial_ solution_ type (restart): gets the computation restart type: if restart = 1 , the
computation starts from a previous computation. If restart = 0, the computation starts from
uniform values.
l set_ convergence_ accu (import_ history): allows to import the computation history of the
simulation used for restart: can be set to "YES" or "NO".
l get_initial_solution_turb_parameters(): gets initial solution parameters
l set_initial_solution_turb_parameters(level, value, length): sets initial solution parameters:
turbulence level, turbulence value, turbulence length.
l get_initial_turbulence(): gets initial turbulence level and frequency.
l set_initial_turbulence(level, frequency): sets initial turbulence level and frequency.
l get_initial_interface_position(): gets the interface position
l set_initial_interface_position(value): sets the interface position, if a multifluid computation is
used.
l get_initial_velocity(): gets initial velocity components.
l set_initial_velocity(vX, vY, vZ): sets initial velocity components vX,vY,vZ.
l restart_from_previous_computation(name, import_history): defines possibility to continue
a computation using the results from a previous computation. name specifies the '.sim' file of a
computation. import_history can be set to 0 or 1. If set to 1 (default), the convergence history
file, which contains all the residuals from the previous computation, will be used as the initial
conditions of the new computation. It is an optional parameter.
Example
Example
set_actuator_disks(["Disk A", "Disk B", "Disk C"]) will remove all existing disks and create 3
disks with default parameters. The first disk will be named "Disk A" and its disk ID will be 1,
the seconds disk will be named "Disk B" and disk ID 2, the third disk will be named "Disk C"
with disk ID 3.
34.1.15 Mooring
34.1.16 Tugging
General commands
l is_catway_available(): Checks if CATway is licensed and the catenary approach can be used
(1) or not (0).
l get_lines_type(): Checks the line type (either "CATENARY" or "SPRING").
l set_lines_type(type): Sets the line type, which can be either "CATENARY" or "SPRING".
l set_catway(): Activates the catenary approach (1) or deactivates the catenary approach (0).
Lines definition
Materials definition
l get_ materials_ list () : Returns the list of defined materials, displayed as [materialID,
materialName].
l get_material_defaults(param): Gets the default value for the diameter (param=0), Young
modulus (param=1) and linear density (param=2).
l get_material_by_ID(id): Returns the material properties (name, diameter, Young modulus
and linear density) for the material with a specified id.
l set_ material_ by_ ID (id, name, diameter, young_ modulus, linear_ density) : Defines a
material by specifying the id and allows setting the name, diameter, young_modulus and
linear_density. In case the value of the parameters is specified as None, either the default
value (new material) or the previously defined value (existing material) is used.
l remove_material_by_ID(id): Removes the material based on its id.
l get_material_by_name(name): Returns the material properties (id, diameter, Young modulus
and linear density) for the material with a specified name.
l set_ material_ by_ name (name, diameter, young_ modulus, linear_ density) : Defines a
material by specifying the name and allows setting the diameter , young_ modulus and
linear_density. In case the value of the parameters is specified as None, either the default
value (new material) or the previously defined value (existing material) is used.
l remove_material_by_name(name): Removes the material based on its name.
Nodes definition
Example
34.1.18 Cavitation
Activation/Deactivation
Temperature parameters
Solute parameters
To set the Temperature and Solute diffusion at the boundary conditions, please refer to the "BCPatch
Class" (p. 846) page.
In case the license is not providing the NON_DETERMINISTIC feature, all python functions which
set_ uncertainty parameters will fail with the error message in the console: "Your license does not
include the uncertainty quantification feature". Please contact your local support team in this case.
The variable for the Most likely value of "Beta" uncertainty type distribution is the same as for
the Average value of the "Gauss" uncertainty type: average .
Commands get_forces_list() and get_computed_force(body, force) can be used to get the 'eff_
*.dat' information for the non UQ computations.
l get_ uncertain_ force (body, force): gets the uncertainty properties of the force: mean,
variance, min, max.
Commands provided in the paragraph Computation Management can also be applied for the
Uncertainty Quantifiction management.
body and force denotes the results data for the body (sub-body) and force calculated from the
'eff_*.dat' (see also get_computed_force(body, force)). Command returns a matplotlib figure
object, which can be drawn on the screen or saved to the file after; it is also possible to add
plotted data to the figure or setup various options of the figure using matplotlib. Command
collect_ uncertainty_ results () on computations should be called before using this plot
function.
Example 1: creating a matplotlib figure and saving the plot into the file:
import matplotlib.pyplot as plt
c = range(0, 5) # range of computations with numbers [0, 1, 2, 3, 4]
for i in c:
FM.set_active_computation(i)
FM.collect_uncertainty_results(10) # use 10% of 'eff_*.dat' file last results
plot_dependency(c, 1, 1, 5, "Vx", "kvlcc2", "Fx")
plt.figure(fig.number) # if only several figures are in use
It is possible to show a figure by using plt.show() instead of plt.figure(), although this comand
is not working completely stable, thus should be applied with attention.
Example 2: non- deterministic results built with the get_ uncertain_ force (body, force),
collected with the collect_ uncertainty_ results () and plotted with the plot_ dependency
(computations, b, f, p, quantity, body, force):
Activation
l param = FM.InternalWaveParameters(): the Internal Wave Generator can be set using the
constructor (here param)
l param.set_domain(domain_nbr): sets the domain attached to the internal wave generator,
by its serial ID.
l param.set_spectrum(spectrum): sets the type of waves to generate. Possible spectrum are:
l "REGULAR"
l "ITTC"
l "JONSWAP"
l "JONSWAP 3 PARAMETERS"
l "PIERSON-MOSKOWITZ"
l "USER-DEFINED"
l param. set_ period (period): sets the period for regular waves and the peak period for
irregular waves
l param.set_height(height): sets the wave height for regular waves and the significant wave
height for irregular waves
l param.set_depth(depth): sets the depth for all types of spectrum
l param.set_steepness(gamma): sets the steepness for the JONSWAP and JONSWAP 3
PARAMETERS spectra
l param.set_data_file(filename): sets the file path for the wave spectrum for the USER-
DEFINED spectrum
l param.set_source_x(x): sets x coordinate of the wave generation source
l param.set_direction(direction): sets the direction of wave propagation. Possible directions
are:
l FM.POSITIVE_X
l FM.NEGATIVE_X
l param = get_internal_wave_parameters(): gets the constructor containing the values set in the
computation. Available values:
l domain = param.get_domain(): gets the domain attached to the internal wave generator, by
its serial ID.
l spectrum = param.get_spectrum(): gets the type of waves to generate
l period = param.get_period(): gets the period for regular waves and the peak period for
irregular waves
l height = param.get_height(): gets the wave height for regular waves and the significant
wave height for irregular waves
l depth = param.get_depth(): gets the depth for all types of spectrum
l gamma = param.get_steepness(): gets the steepness for the JONSWAP and JONSWAP 3
PARAMETERS spectra
l filename = param.get_data_file(): gets the file path for the wave spectrum for the USER-
DEFINED spectrum
l x = param.get_source_x(): gets x coordinate of the wave generation source
l direction = param.get_direction(): gets the direction of wave propagation. BOTH_X is
only available for REGULAR spectrum
l init = param.get_smooth_wave_field_initialization(): determines whether smooth wave
initialization is active (init = 1)
Activation
l activation = get_ wave_ damping_ usage (): returns 1 if wave damping is activated, 0
otherwise.
l set_wave_damping_usage(activation): enables the wave damping for activation different
from zero, disables for activation=0.
Numerical schemes
Turbulence
Multi-fluid
Cavitation
Transition
Passive scalar
Temperature
Solute diffusion
Velocity
Pressure
Velocity flux
Correction
Cavitation
Transition
Solute diffusion
Additional parameters
Streaking correction
Velocity clipping
See "Refinement Criteria" (p. 549) for more detailed information about how to choose threshold
value.
get_ overset_ domain_ type ( blockID ): returns type of the domain: OVERLAPPING = 1,
BACKGROUND = 2 or LINKED = 3.
set_ overset_ domain_ type ( blockID , site ): sets the type of the domain: OVERLAPPING,
BACKGROUND or LINKED.
Example: FM.set_overset_domain_type(0, FM.BACKGROUND)
get_overset_domain_physical_BC(blockID): returns 1 if the domain has a physical boundary
condition, 0 in other cases.
set_overset_domain_physical_BC(blockID, has_bc): sets the physical boundary condition for
the domain blockID: has_bc = 1 , 0 otherwise.
34.1.26 Projection
l is_ modal_ approach_ available (): returns 1 if GUI has detected modal approach license
feature, 0 otherwise.
l get_ modal_ approach_ usage () : returns 1 if the modal approach is enabled for the
computation, 0 otherwise.
l set_modal_approach_usage(usage): sets the usage of modal approach for the computation:
usage 1 enables Modal approach;usage 0 disables.
l get_coupling_activation(bodyID): returns 1 if the body with given index has active coupling,
0 otherwise. bodyID should be greater than 0.
l set_coupling_activation (bodyID, active): sets/unsets coupling for a body with the given
index: active = 1 sets coupling active;active = 0 disables coupling; bodyID should be greater
than 0.
Class ModalMode is used to set the parameters of the modal structure for a specified mode. It .
The class can be initialized from the ModalStructure class using the following function:
l mode = structure.modal_mode(mode_no)
mode: member of the FM.ModalMode class
mode_no: mode number between 1 and the maximum number of modes in the structure file
(Integer)
The ModalMode class contains the following functions that can be used instead of
ModalStructure.set_modal_mode and ModalStructure.get_modal_mode functions:
l damping = mode.get_damping(): Get the damping parameter of the given modal mode.
mode.set_damping(damping): Set the damping parameter of the given modal mode.
damping: damping coefficient (Real)
l A0 = mode.get_initial_amplitude(): Get the initial amplitude of the given modal mode.
mode.set_initial_amplitude(A0): Set the initial amplitude of the given modal mode.
A0: is the initial amplitude (Real)
l estimode = mode.get_amc_estimation_mode(): Get the added mass coefficient estimation
mode of the given modal mode.
mode.set_amc_estimation_mode(estimode): Set the added mass coefficient estimation mode
of the given modal mode.
estimode: Added mass estimation method: one of “Approximate”, “Accurate”, “User defined”.
l value = mode.get_amc_value(): Get the added mass coefficient prescribed value.
Coupling options
l set_ transition_ model_ usage (active): enables the transition model if active is non- zero,
disables otherwise.
l get_transition_model_usage(): get 1 if the transition model is activated, 0 otherwise.
l set_transition_scheme(scheme, upwindc): sets the turbulence discretization scheme;
1 - "UPWIND". The discretization order of the scheme can be defined using disTransOrder_
expert parameter.
2 - "HYBRID"
3 - "CENTERED"
4 - "AVLSMART"
5 - "GDS"
6 - "BLENDED"
l upwindc specifies the level of up-winding.
l get_transition_scheme(): gets the transition discretization scheme.
l set_urex_intermittency(urex): sets the under-relaxation value for the intermittency.
l get_urex_intermittency(): gets the under-relaxation value for the intermittency.
If these Python commands are used in a script to write the results-analysis file, the script should
also contain the following command to get the correct quantities:
a.set_quantities["Fx","Fz"]
FM.SelfPropAnalysis class
FM.OpenWaterPerformance class
Specific quantities
User-defined formula
l a.add_custom_formula(left, right): adds a new formula with the following construction: left
+ ‘=’ + right. If a formula with the same left part already exists, then nothing is done.
l a.edit_custom_formula(left, right): edits the formula for which left is matching the left part
with the string right. If such formula does not exist, then nothing is done.
l a.remove_custom_formula(left): removes the formula for which left is matching the left part.
If such formula does not exist, then nothing is done.
l a.remove_all_custom_formulas(): removes all existing formulas.
l formula = a.get_custom_formula(left): returns the formula for which left is matching the left
part. formula is a string with the following construction: left + ‘=’ + right. If such formula
does not exist, then an empty string is returned.
l formulas = a.get_custom_formulas(): returns a list of all existing formulas.
With
l left: STRING
Left part of formula (before ‘=’).
l right: STRING
Right part of formula (after ‘=’).
l formula: STRING
left + ‘=’ + right.
l formulas: LIST OF STRINGS
List of formulas left + ‘=’ + right.
Example
a = FM.ResultsAnalyzer()
Analysis options
Filters
For efforts:
l a.set_median_filter(use, window_width): sets median filtering for efforts: use can be 0
(inactive) or 1 (active). If 1, the filter will be used with the specified window_width
use, window_width = a.get_median_filter(): gets median filtering options for efforts.
l a.set_moving_average(use, window_width): sets moving average filtering for efforts: use
can be 0 (inactive) or 1 (active). If 1, the filter will be used with the specified window_width
use, window_width = a.get_moving_average(): gets moving average options filtering for
efforts.
For motions:
Plot options
Group/ungroup plots
Graph options
l a. set_ axis_ limits (xmin, xmax, ymin, ymax) : sets axis limits for current analysis. If an
argument is None, the corresponding limit will be disabled.
xmin, xmax, ymin, ymax = a.get_axis_limits(): returns current axis limits. If a return value is
None, the corresponding limit is not set.
l a.set_units_conversion(convert_to_feet, convert_to_degrees, convert_to_knots): sets the
unit conversion flags. By default the units are meters, radians and meters per second, but can
be converted to feet, degrees and knots by setting convert_to_feet, convert_to_degrees or
convert_to_knots to 1 to enable the conversion (0 is disabled).
convert_to_feet, convert_to_degrees, convert_to_knots = a.get_units_conversion(): gets the
unit conversion flags.
l a.set_plot_size(width, height): sets the graph size in pixels. width and height are integers.
width, height = a.get_plot_size(): gets the graph size.
Value adaptation
Dimensionless coefficient
Examples
a = FM.ResultsAnalyzer()
a = FM.ResultsAnalyzer()
a.track_averaging_on(1,1)
a.set_averaging_options(10,1)
sp = FM.SelfPropAnalysis()
sp.Rttow = 34.98
sp.SFC = 18.2
sp.open_water_file = '/home/user/open_water_file.dat'
sp.ship = ¨ship¨
sp.propeller = ¨propeller¨
sp.D = 0.23
a.set_self_propulsion(sp)
a.analyze("Convergence_report_19-04-2017_12h-09m-35s")
34.1.30 Outputs
General
Volume probes
Surface probes
l get_ mean_ parameter (number): gets mean flow parameter by checking if a mean flow
variable is enabled. Command returns 0 or 1, where 1 means that the variable is set up. The
parameter number is describe in the equivalent set function below.
l set_mean_parameter(number,flag): sets mean flow parameter. Flag can be either 0 or 1. 1
means that corresponding optional output variable is active. The parameter is associated with
number as follows:
1 Velocity
2 Pressure
6 Second invariant
7 Helicity
8 Vorticity
11 Correlation-R11
12 Correlation-R12
13 Correlation-R13
14 Correlation-R22
15 Correlation-R23
16 Correlation-R33
Point probes
Example
to set flow point probe for pressure positioned at (0.1, 0.2, 0.3):
set_point_probe(10, "PRESSURE", 0, 0.1, 0.2, 0.3)
to disable probe:
set_point_probe(10, "-", 0, 0, 0, 0)
Time step
l get_timelaw()
Gets time law.
tlaw, a, b, c ,d = FM.get_timelaw()
Convergence
l get_control_variables()
Gets control variables.
l set_control_variables(max_iterations, order, time_step, freq_saving)
Sets control variables.
max_iterations: maximum number of non linear iterations
order: convergence criteria
time_step: number of time steps
freq_saving: solution saving frequency
l get_convergence_booster_usage()
l set_convergence_booster_usage(active)
Activates the convergence booster.
active type: Boolean.
l get_convergence_checker_usage()
l set_convergence_checker_usage(active)
Pressure solver
l get_psolver_method()
Returns the active pressure solver method.
l set_psolver_method(methodID)
Sets the active pressure solver method, available are: DYNAMIC_SWITCH, PCGSTAB_MB
and BOOMER_AMG.
l set_psolver_method_params(methodID, method_params)
Sets pressure solver parameters for the given pressure solver method.
l A class PSolverMethodParams defines two attributes: convergenceCrit and maxIter .
convergenceCrit is the convergence criteria in orders, maxIter is the maximum number of
iterations. The constructor of this class takes two arguments, convergence criteria orders and
number of iterations.
method_params = FM.get_psolver_method_params(methodID)
Requests pressure solver parameters for the given pressure solver method. The returned value
is an instance of a class FM.PSolverMethodParams.
Example 2
Enable Dynamic switch, 4 orders of convergence and 150 max iterations for BoomerAMG, 3
orders of convergence and 500 max iterations for PCGSTAB_MB
FM.set_psolver_method(FM.DYNAMIC_SWITCH)
boomer_params = FM.PSolverMethodParams(4, 150)
FM.set_psolver_method_params(FM.BOOMER_AMG, boomer_params)
pcg_params = FM.PSolverMethodParams(3, 500)
FM.set_psolver_method_params(FM.PCGSTAB_MB, pcg_params)
Example 3
Enable PCGSTAB_MB and change the number of orders to 5 while keeping the same max
number of iterations
FM.set_psolver_method(FM.PCGSTAB_MB)
pcg_params = FM.get_psolver_method_params(FM.PCGSTAB_MB)
pcg_params.convergenceCrit = 5
FM.set_psolver_method_params(FM.PCGSTAB_MB, pcg_params)
The pressure solver method DYNAMIC_SWITCH has no own parameters and thus get_psolver_
method_params does not support this pressure solver method.
Expert parameters
l get_expert_integer_parameters(name)
Gets expert integer parameters for a given name
l set_expert_integer_parameters(name,length,num,value)
The wording and options used throughout this section are directly taken from Tcl/Tk. The reader
is supposed to know basics of Tcl/Tk concepts. The following widgets can currently be
constructed from a python scripts:
These functions and classes aims at mimicking some functionalities of the Tcl/Tk toolkit. It is not
meant to provide extensive functionalities for creating advanced dialog boxes. Only a reduced subset
of features is provided. Any feature not described in the above commands is not available.
34.2.1 Classes
Variable Class
These objects are mostly used with RadioButton widgets to set and query the state of the buttons.
l Variable(value) constructs a variable with the specified initial value.
l setValue(value) sets the value of the variable.
l getValue() returns the value of the variable, as a string.
Command Class
Commands are typically assigned to buttons, entries, lists, etc... and are used to execute an action
when the user presses a button, types enter in the field,... Two constructors are provided:
Example
class MyClass:
def __init__(self):
... python code ...
def myfunc(self):
... python code ...
a = MyClass()
c = Command( a, MyClass.myfunc ) # creates the Command
DialogueBox Class
l DialogueBox(title) constructs a new dialog box. title is an optional argument to specify a title
in the banner of the dialog box.
l show() displays the dialog box.
l close() closes and destroys the dialog box.
l showUnderMouse() shows the dialog box at the current mouse location.
Frame Class
l Frame(parent) constructs a frame aimed at containing other widgets. parent is the parent of
the frame and must be of type: DialogueBox, Frame, LabelFrame, NoteBook or
PanedWindow.
LabelFrame Class
PanedWindow Class
A PanedWindow is a window that is divided into two vertically, with a separator that can be
moved by the user to resize the left or right area.
NoteBook Class
NoteBooks allow to organise a dialog box in pages that can themselves contain widgets.
l NoteBook(parent) constructs a NoteBook in parent.
l addPage(label) adds a new page to the notebook with name label. Two pages may not have
the same label. The returned value is a frame (class Frame) that can be filled with other
widgets.
Label Class
Button Class
l Button (parent, text, command) constructs a button in parent with text appearing in the
button.
parent must be a container widget (see above)
command is an optional argument that can be either a function that requires no argument or an
object of type Command . Upon pressing the button, the command will be called
automatically.
CheckButton Class
CheckButton are buttons that can have two state: 0 (disabled) or 1 (enabled).
l CheckButton(parent,text,initValue,command) constructs a check button in parent.
parent must be a container widget.
text is the text at the right of the button.
initValue is the initial value of the button and can have the value 0 or 1
command is an optional argument that can be either a function that requires no argument or an
object of type Command. Upon pressing the button, the command will be called automatically.
Example
dialog = DialogueBox()
dialog.var = Variable(1) # create a variable with initial value 1
dialog.radio1 = dialog.radiobutton("Value 1", dialog.var, 0 )
dialog.radio2 = dialog.radiobutton("Value 2", dialog.var, 1 )
dialog.radio1.pack()
dialog.radio2.pack()
Entry Class
List Class
ComboBox Class
The Marine module in Hexpress comes with various plugins including one to automatically
create an internal surface at a Z-constant coordinate. One can open the corresponding python
script in "NUMECA_ INSTALLATION/_ python/_ hexpress_ plugins/Marine/" to see how the
script is build. Here is a description of the example (comments are added and marked by a symbol
#).
close.pack(side="right") #the action "pack" will show the button and put it on the right
of the dialog box
apply.pack(side="right")
def apply(self):
try:
domain = HXP.get_active_domain() #defines "domain" which contains a list of the
active domain
except Exception, value:
Warning(value.args[0])
return #goes out of the function "apply"
b = domain.get_xyz_box() #returns the box containing the domain and stores the
information in the variable "b"
Under the Expert parameters tab of the Computation control/Control Variables page is a list of
non-interfaced expert parameters. As stated in the interface, these parameters should not be modified
unless explicitly stated in this manual. This chapter contains a list of all non- interfaced expert
parameters that are described in this manual. The parameters, if modified by the user, can be brought
back to their default value at any time by means of the Reset to default values button, available on the
top right of the Expert parameters tab.
In this section
35.1 Actuator Disk 924
35.2 Catenary approach 924
35.3 Adaptive Grid Refinement 924
35.4 Sliding grids 930
35.5 Computation Control 931
35.6 Impose Velocity Ramp at Far Field 932
35.7 Information shown in the Task Manager (written in .std file) 933
35.8 Mesh Deformation Technique 935
35.9 Numerical Corrections 937
35.10 Coupling Parameters 939
35.11 Multi-fluid Smoothing 940
35.12 Output Data Management 941
35.13 Projection 944
35.14 Specific Numerical Parameters 945
35.15 Regular and Irregular waves 950
35.16 Modal approach 953
35.17 Temperature and solutal models 953
ActuatorDiskInternMeshDim_ Virtual mesh dimensions (Nz, Nr, Nt) used by the Wake_flow_
pp tool to setup automatically the number of cells used in the Actuator disk
Default: 25 35 97
ActuatorDiskResearchCoef_ Parameter to help the searching algorithm.
Default: 5
ActuatorDiskLegacyApproach_ Parameter to use the former version of the actuator disk
approach. This old version should not be used anymore.
Default: NO
catwayDebug_ Writes comprehensive output of the calculations for the Catway catenary
approach to the computationName.std file at each nonlinear solver iteration.
Default: NO
Enabling this option increases the size of the .std file considerably. Its usage should therefore be
limited to debugging purposes.
raffBlockAvg_ Displays average information over all blocks (if NO selected, the information will
be shown per block).
Default: YES
Modified: NO
FIGURE 35.1
Computation of the Hessian matrix
FIGURE 35.2
Cavitation foil computation: SMOOTHED GAUSS (left) and LEAST-SQUARES (right)
applied.
Default: YES
raffRepetitions_: When this parameter is set to more than 1, the refinement procedure is called
multiple times in one refinement step. This allows a more complete adaptation of the grid to the
current solution, which may be needed for unsteady simulation on strongly refined grids.
Default: 1
Convergence parameters
Convergence booster
l urAdaptIntervals_ Number of periods (nperiod) in which separate values for the under-
relaxation and number of non-linear iterations are specified.
Default: 4
l urAdaptTMin_ Relative start times of the intervals with regard to the acceleration ramp
duration. The start time of the first period is the beginning of the computation. Real array, size
[nperiod-1].
Default: 0.9 1.4 1.9
l urAdaptDeltaItnl_ Reduction of the number of nonlinear iterations per period with regard to
the prescribed number of non-linear iteration. Integer array, size [nperiod].
Default: 3 2 1 0
l urAdaptVelocity_ Under-relaxation for the velocity (Relax_ U, Relax_ V, Relax_ W) per
period. Real array, size [nperiod].
Default: 0.8 0.7 0.6 0.5
l urAdaptPressure_ Under-relaxation for the pressure (Relax_P) per period. Real array, size
[nperiod].
Default: 0.6 0.5 0.4 0.3
Convergence checker
Other
with H the height of the water surface compared to the bottom and D the draught.
ShallowWater_ Allows to activate the mesh deformation technique for shallow water.
Default: NO
Modified: YES
ShallowWaterParam_ The first parameter is the fraction of the space below the ship (UKC)
where mesh compression will take place. A value of 0.9 means that mesh up to 0.9 of UKC
(measured in the original mesh) will be compressed, UKC being the Under Keel Clearance. The
second parameter is a power law correction coefficient. A low value result in a better compression
below the ship, but will increase the mesh deformation elsewhere.
Default: 0.9 0.2
CIFarField_ Updates the mass fraction at far field boundaries. Advised for free surface
simulation of a body moving up or down with a rigid mesh deformation.
Default: YES
Modified: NO
CIStaticPressure_ Updates the static pressure at far field boundaries. Advised for free surface
simulation of a body moving up or down with a rigid mesh deformation.
Default: YES
Modified: NO
MaxAffectLayer_ Maximum number of viscous layers affected when the correction of the mass
fraction in viscous layer is active.
Default: 1000
If no viscous layers have been inserted, automatic computation will give MaxAffectLayer_ = 1.
MinAROfVL_ Minimum aspect ratio of viscous layer when the correction of the mass fraction in
viscous layer is activated.
Default: 2.0
uwCIcorrection_ Activates the under water correction (not advised in presence of spray and
suggested for bubbles of air, well below the free surface). It corrects the mass fraction according
to the pressure (normal stress) value: if
the mass fraction is supposed to be water. "c" is the under water coefficient described below and
"Zmean" is the mean value for Z computed on the wetted area of the body.
Default: NO
Modified: YES
uwCoefCorrection_ Under water correction coefficient (range [0,1]). A negative value can be
used to prescribe the exact value of pressure threshold. In other words, all cells above this
threshold will be considered as water.
Default: 0.3
Range: [0,1] or any negative value
FullAddedMassMatrixUse_ The added mass matrix is in general a 6x6 full matrix. Some terms
can be null if the body has any symmetry plane. In such case, when an added mass coefficient is
specified for one D.O.F. it is similar to specifying only the diagonal terms of the matrix
corresponding to this D.O.F. All the coefficients can be used to relax the different D.O.F. together
in a coupled way, although testing have shown that considering only the diagonal term can be
sufficient fur such cases.
Default: NO
Modified: YES
AddedMassFactor_ Introduces the multiplicative factor to the computed added mass coefficients
matrix.
Default: 1.0
AddedMassInfo_ Sets whether information is written in the standard output (.std). Information
contains face flag of the body, concerned DOF, convergence data and the added mass component
at the center of gravity expressed in the body primary configuration, or along the axis of the PIN
join if applicable.
Default: NO
Modified: YES
AddedMassMaxNonLinearIters_:Impose the maximum number of non-linear iterations for the
linear system resolution which contains explicit source terms. Can be applied for an Accurate
estimation mode only.
Default: 10
AddedMassMaxNonLinearGain_ Maximum convergence criteria in the non- linear system
resolution while solving the pressure field for the added-mass coefficients calculation.
Default: 0.001
AddedMassUnderRelax_Impose the under relaxation factor while solving the pressure field for
the added-mass coefficients calculation.Can be applied for an Accurate estimation mode only.
Default: 0.7
AddedMassMaxIters_ Maximum number of iterations in the linear system while solving the
pressure field for the added-mass coefficients calculation.
Default: 200
AddedMassMaxGain_ Maximum convergence criteria in the pressure linear system while
solving the pressure field for the added-mass coefficients calculation.
Default: 0.001
Starting from version 6.1 the Multi-fluid smoothing is interfaced in Additional models/Wave
damping.
MultifluidsSmoothingDefX_ X-coordinates of the damping region (XGmin, XSmin, XSmax
and XGmax on the following figure).
Default: -100000.0 -100000.0 100000.0 100000.0
MultifluidsSmoothingDefY_ Y-coordinates of the damping region (YGmin, YSmin, YSmax
and YGmax on the following figure).
Default: -100000.0 -100000.0 100000.0 100000.0
MultifluidsSmoothing_ Activates smoothing to prevent from reflection and to damp possible
instabilities in the far field. The grayed zone corresponds to the smoothing region on the following
figure. In the X-direction, XGmin and XGmax (respectively YGmin and YGmax in the Y-
direction) must be inside the domain or at the boundary condition location so that the smoothing
can be as effective as possible.
Default: NO
Modified: YES
ForcePerFluid_ Allows splitting the output of the forces depending on the local volume fraction
on the solid patches of Fluid 1 and Fluid 2 as defined in the GUI. Force and moment output files
will be created with suffix _fluid_2 for Fluid 2 contributions.
Default: NO
Only two files are created; one with the total forces and moments and one with the contributions of
Fluid 2. The separate contrbutions by Fluid 1 can be calculated by subtracting the values of Fluid 2
from the main eff_* files.
SaveConvEfforts_ The convergence of the efforts can be saved for all the nonlinear iterations in
the eff_* files. The time value takes a negative sign to distinguish the line from the other values.
Default: NO
Modified: YES
SurfaceProbeFormat_ Defines the surface probe format. Possible choice: CGNS_sp (single
precision), CGNS_dp (double precision), STL and Tecplot. It can also be set as CGNS and
stored as single precision then.
Default: CGNS_sp
Modified : STL, TECPLOT, CGNS_ SP, CGNS_ DP and Fine Marine flow solver (native
format)
TravellingShot_ Defines the travelling shot parameters for the 6 degrees of freedom (Tx, Ty, Tz,
Rz, Ry, Rz) of the reference body defined by TravellingShotBody_.
Default: 1 1 1 1 1 1
TravellingShotBody_ Defines the body of reference for the travelling shot options. During the
default reconstruction of the solution, the camera will be adjusted in function of these parameters.
One can either modify these default parameters or change them in the reconstruction menu while
pressing on the CFView icon as described in the chapter "Traveling Shot" (p. 744).
Default: 0
3dOutputSaving_ Allows to control saving of 3D outputs. When the parameter value is set to
NO, no volume data will be saved at the end of the computation. Only surface probes will be
saved, minimizing the disk space usage. Note that it will not be possible to run a restart from a
computation with this parameter set to NO.
Default: YES
Modified: NO
Old method: the fluid type is defined by the position relative to the initial regardless of the value
of the mass fraction.
(1)
(3) when
(4) when
New method: the fluid type is determined by the flow field, equations (3) and (4) are unnecessary.
35.13 PROJECTION
gradEvaluation_ Gradient evaluation methods. The following strings can be entered as well as
the corresponding integer
Default: 1 - "GAUSS METHOD + CORRECTIONS"
Modified:
l 2 - "STANDARD LEAST SQUARE"
l 3 - "LEAST SQUARE + WEIGHTING"
l 4 - "GAUSS METHOD - CORRECTIONS"
l 5 - "LEAST SQUARE + WEIGHTING + GAUSS"
Interpolation schemes
FaceReconstGradScalarLimiter_ Limiter for the scalar gradient for the reconstruction on the
face.
Default: 1D
Modified: 0D, 2D
FaceReconstGradVectorLimiter_ Limiter for the vector gradient for the reconstruction on the
face.
Default: 1D
Modified: 0D, 2D
Multi-fluid corrections
MultifluidsFaceCorrectAngle_Activates the correction angle between the interface and faces for
multi-fluid simulations.
Default: YES
UHatEval_ Evaluation of U_hat. To represent the velocity at the cell center the discretized vector
U_hat is used. It is homogeneous to gravity acceleration, includes part of the diffusion, convection
and source terms. DIRECT MODE will consider the source term containing all explicit remaining
contributions and external force fields except gravity and pressure.
Default: DIRECT MODE
Modified: INDIRECT MODE
addUnsteady_ Add unsteady terms in source term of U_hat if NO, or treat it more explicitly if
YES.
Default: YES
Modified: NO
Diagonal dominance
Discretization schemes
disVelBetam_ Coefficient used in momentum equations for the discretization scheme GDS.
Default: 0.101
Transition
TransitionInfo_ Save the solver output for the laminar to turbulent transition computation into
the .std file.
Default: NO
Modified: YES
InitVelField_ The solver always needs to have information about the initial velocity field in the
farfield to initialize the velocity correctly at the concerned boundaries. There is one specific case
where this initialisation is not defined in the Boundary Condition menu. It is the case for crossing
ships defined with sliding domains: some boundary conditions are not connected to any block.
Hence, this parameter allows to define the velocity on these cells. The parameter is present in the
.sim file only if _SLI_int_bcs_discF = 10. Besides, when _SLI_int_bcs_discF is changed to 10,
InitVelField_ is switched to 0 0 0 automatically.
Default: 1e+20 1e+20 1e+20
Others
reverseRenumbering_ Activates the Cuthil McKey renumbering for the pressure solver.
Interesting to accelerate the computation after an adaptive grid refinement step.
Default: NO
General parameters
l WaveInit_ Initializes the wave field before the first time step for both regular and irregular
waves. Helps to decrease the time of computation run due to the faster waves
development.Regarding the body motion, this parameter is very efficient when the body has
fixed or imposed motions only. Otherwise, one could observe initial high trim and sinkage for
instance which will add some extra time for convergence.
Default: No
l irrSaveSpectrum_ For all spectra other than the User-defined, the wave component data can
l FSDTerms_ Specifies the number of terms used for the Fourier series decomposition for the
FSD wave generation method.
Default:5
Modified:5-30
l FSDSteps_ Specifies the number of steps used for the Fourier series decomposition for the
FSD wave generation method.
Default:1
Modified:2-4
l FSDDebug_ Displays debugging information for the FSD decomposition.
Default:NO
Modified:YES
l irrFreqNo_ Constant number of frequencies in the wave generator. If left the default value,
will generate 991 number of frequencies.
Default: 0
l irrMinMaxFreq_ Minimum and maximum frequency of the wave generator.
RBF_ function_ controls the Radial Basis Function (RBF) interpolation used to handle the
computational domain deformation according to the solid body displacement.
Default: 4
WeightingModalCoeffsModifLaw_ Law of modification of the nodal weighting coefficient for
the mesh deformation for the fluid-structure interaction. When the weighting coefficient is equal to
1, the entire rigid deformation of the solid body is applied to the cell. On the contrary, for a value
of 0, the cell does not move. When using multi-domain with overset and deformable external
boundaries for the domain around the flexible body, where the mesh around it is less extended,
the values (2.0 0.9) enable to have large displacements for a beam-like body clamped at one tip.
Default: 0.8 0.7
Temperature model
tempDebug_ Indicates whether additional outputs about temperature model are written in the .std
file
Default: NO
Modified: YES
tempRes_ Indicates whether temperature residuals are written in the .std file
Default: NO
Modified: YES
diaDomTemp_ Value in percents of diagonal dominance to consider for solving the linear
system
Default: 50.0
Modified: Real
Solutal model
soluteDebug_ Indicates whether additional outputs about solute model are written in the .std file
Default: NO
Modified: YES
raffOversetMaxAspectRatio_ Controls and limits the maximum aspect ratio of the cells
generated using the overset criterion for adaptive grid refinement. The value has to be of type float
and bigger than 1.0. The default value of 4.0 can be decreased to 2.0 to ensure an ideal aspect
ratio for overset interpolation, slightly increasing the number of cells.
Default: 4.0
35.19 ROUGHNESS
This approach will model the roughness or the fouling on the hull as a sand grain. See also the
section "Roughness" in the Theoretical Manual for more detailed information.
SandGrainHeight_: height of the sand grain, [m].
Default: 0.001
WallRoughness_Activates the roughness on solid walls.
Default: NO
Modified: YES
EXTERNAL TOOLS
This chapter describes the external tools available in the Fine Marine package. They are all available in
the Fine Marine installation folder.
Launching on Linux
On LINUX OS, they can be launched directly by typing the following command, thanks to the
NUMECA start script:
tool_name -niversion marine121 -print OR tool_namemarine121 -print
with # being the patch number.
Launching on Windows
On Windows OS, the user should specify the full path of the tool:
NUMECA_INSTALLATION_DIR/bin/isis64/tool_name.exe -print
A -local argument can be added to work with local files. The current working directory will be checked for
the necessary files. Please make sure that the tool can use this functionality by reading the list of available
arguments in this Chapter.
A -relative argument can be added to work with a relative path instead of the full path. Please make sure that
the tool can use this functionality by reading the list of available arguments in this Chapter.
Specifying the -auto option alone will work only when launching the tools from the computation folder
directly. Everything will be treated automatically with no input required. If it is important to launch the tool
from the directory other than the computation folder using the -auto option, the simulation file (.sim) directory
should be specified with the -sim= option.
Rhinoceros® is a powerful CAD software widely used in the Marine industry. The Fine Marine plug-in
is designed to ease the export of geometries from Rhinoceros® to Hexpress using a STL format
(stereo- lithography). It makes your geometry ready for Hexpress and even for the automated setup
prepared by the C-Wizard. As an example, the patch naming process is perfectly adapted for the use of
the Refinement dictionary.
This export process is directly embedded in the Rhinoceros® interface through a new Fine Marine
menu. Three tools are proposed and documented in the following sub-sections:
l Export STL only
l Export and open Hexpress
l Export and launch the C-Wizard
Three applications are available for export:
l Hull
l Open or ducted propeller for open water,
l Hull + propeller for sliding grid
The plug-in is available under license. To upgrade your license, please contact your local software provider or
support office.
The license server version should be at least v11.14 . It is available in the Fine Marine package starting
from v7 or as a standalone in the Customer area.
Important information is written in the Rhinoceros® console, please widen it. Information written by the plug-
in starts with " > ".
Current limitations:
l The plug-in is limited to one single body as an input.
l Hulls with appendages or propeller need to be merged into one single closed poly-surface.
Those limitations do not apply for a ducted propeller.
l Zero thickness surfaces in the geometry definition cannot be managed by the plug-in.
l The Export and launch the C- Wizard mode can only be used with the latest
modifications in the C- Wizard, hence with the last Fine Marine v7 package. It is not
compatible with the hull + propeller (sliding grid) mode.
36.1.1 Installation
The installation process of the plug-in is simple. Just follow the procedure:
l Close Rhinoceros®.
l Double click on the FINEMarine_Plugin.rhi file from the Fine Marine package (located in _
data\Script\), the installation process starts.
l Complete the installation process.
l Start Rhinoceros®, the Fine Marine menu is now available on the top bar of the Rhinoceros®
interface.
The plug-in is available under license. The license server version should be v11.14. It is available in
the Fine Marine package starting from v7 or as a standalone in the Customer area.
To appreciate all the plug-in modes, the last Fine Marine package should be installed.
This mode helps exporting a clean geometry from Rhinoceros® to Hexpress using the STL
format in a few minutes.
The export process performs the following steps:
l Checking the geometry quality;
l Preparing the domain according to the desired application;
l Triangulating the geometry;
l Naming the patches;
l Exporting in a single STL file.
When launching the plug-in, the user will be asked to choose for which application the domain
should be prepared:
l Hull (see "Export for hull" (p. 966))
l Propeller for open water (see "Export for propeller" (p. 970))
l Hull & propeller (see "Export hull and propeller" (p. 973))
This page describes the general process for all applications, more details on each type of export
are given in the next pages.
To exit the plugin during the process press Esc three times.
Current limitations:
l The plug-in is limited to one single body as an input.
l Hulls with appendages or propeller need to be merged into one single closed poly-surface.
l Zero thickness surfaces in the geometry definition cannot be managed by the plug-in.
B. Patch naming
One of the main advantages of the plug-in is to be able to export a colored STL (with names).
Two options are available:
After properly defining the triangulation, the patches need to be named. An initial list of names
following the refinement dictionary standards from the C-Wizard are proposed (see "Refinement
dictionary" (p. 162)).
If two patches are selected at the same time, they will be merged together, which leads to a
few rules to follow:
Custom names can be entered by typing them. They are then recorded in the proposed list for an
easier use.
Do not click on another button in the Rhinoceros® interface during the patch naming. The name of
the command will mistakenly be taken as a patch name.
Once the last patch is entered, the following step will automatically start.
If the export process doesn't start, it means that one or more (tiny) mesh part (s) have not been
entered. They can be found using the Rhinoceros® tools. Be careful if the tiny patches are not
connected.
In this case the names already present in the 3dm file will be used in the export.
Requirements:
l Separate the surfaces of the body in different layers with the names to be used.
l These layers need to be visible.
l The layers can contain surface or mesh instances.
l When the "join" tool is applied on the separate layers a closed poly-surface must be created.
l The Geometry analysis tool cannot be used as it will detect the geometry is not a closed poly-
surface.
It is recommended to use the Polygon mesh “Detailed controls” and adapt the minimum edge length
and maximum distance, edge to surface values to ensure the mesh is fine enough for each surface.
FIGURE 36.4
Import of the STL inside the C-Wizard
To fully use the features of the plug-in, it is important to import the STL using the names already
set in Rhinoceros®: activate the Use existing groups option in the STL import (STL Group
Tool):
FIGURE 36.5
Import procedure in Hexpress keeping the names
D. Input file
When running the plugin the parameters used are stored in an .input file. Template input files for
hull, propeller and hull + propeller can be found in finemarine121/_data/Script.
Using an input file with the plug-in gives access to the following additional features:
l Run the plug-in with minimal manual input from the user.
l Define user-defined domain size
l Define a dedicated list of patch names.
l Define all triangulation settings.
When using the plug-in in interactive mode an input file with the settings used will be saved next
to the geometry.
When launching the plug-in if one or more input files are detected next to the geometry a pop-up
window will be open to propose to use them:
FIGURE 36.6
Input files detected
Select one of the existing input files or choose Create a new setting file to work in interactive
mode.
The following sections are present in all input files:
l FINE/Marine version: if Export and open HEXPRESS TM or Export and launch C-
Wizard are used this is the version of the software that will be launched.
l FINE/Marine project name: if Export and open HEXPRESS TM or Export and launch
C-Wizard are used this will be the name for the project created.
l Application: 0 for hull, 1 for propeller, 21 for hull + propeller sliding grid.
Advanced parameters:
l Mesh settings: minimum edge length, maximum distance edge to surface, maximum angle,
density, maximum aspect ratio, maximum edge length, minimum initial grid quads.
l Personalized patch name list: this list of names will be proposed instead of the default one
when naming the patches.
E. References
[1] https://www.rhino3d.com/
[2] https://wiki.mcneel.com/rhino/booleanfaq
[3] https://wiki.mcneel.com/rhino/meshfaq
This application prepares a hull domain for resistance, seakeeping or planing regime
computations.
Requirements
l The input geometry needs to be oriented from transom to bow along the positive X-axis, thus
the Y-axis is going port-side.
l In case of export in half-body configuration, only the port-side is exported. For instance for
catamarans, the port-side hull should be present.
l The input geometry needs to be centered in Y = 0.
Workflow
Domain creation
The plug-in is applying the Fine Marine guidelines concerning the recommended domain size (see
the Resistance Domain size guidelines) using the answers provided at the following questions:
1. Do you want to perform a Mono-fluid or Multi-fluid computation?
a. If Mono-fluid is chosen: Which fluid would you like to compute? (WATER or AIR)
b. Enter the location of the free surface: z coordinate of the free surface in meters.
The domain will be cut at the free surface location. If the fluid to compute is AIR the domain
will be built from the free surface up; if it is WATER from the free surface down.
This information will then be kept in the name of the created STL file with _hb for half body
configuration and _fb for full body configuration.
If the future computation will be performed on several speeds, taking the highest one allows to be
more conservative.
Boolean operation
In case of Half body configuration, the next operation to perform is the Boolean difference. In
case of Full body configuration, this operation is not performed. As the Boolean operations can be
difficult to perform in Rhinoceros®, two semi automated methods have been implemented and are
tightly coupled with the triangulation step.
l The first method is using the MeshBooleanDifference command, to first mesh the geometry
and then perform the Boolean difference on the mesh.
l The second method is using the BooleanDifference command and then the Mesh command.
This method is used if the first one fails. The drawback of this method is that it can require to
slightly move the geometry (around E-6 m) to make the Boolean operation work [1]. If a
displacement has been performed, the information is reported in the Rhinoceros® console.
With both methods the user is requested to check and adjust the triangulation density if needed.
If none of the methods can achieve the Boolean operation, one should reconsider the input geometry.
The user can control the triangulation density in the following pop-up menu.
The meaning of each parameter is given in the Rhinoceros® meshing FAQ [2]. The most efficient
values to control the meshing are:
l density,
l minimum edge length,
l maximum distance, edge to surface.
The Preview button allows to visualize the mesh without moving to the next step. Press OK only
when the triangulation is satisfactory.
Patch naming
See the "Export STL only" (p. 959) page only for more information.
The following patch names are proposed by default for the hull application: Deck, Transom,
Skeg, Bulb, Shaft, Keel, Rudder, Rail and Hull.
Once the last patch is entered, the following step is automatically starting.
The export process will now begin. At the end, a single file will be created. Depending on the
configuration (half or full body), the file will be named as follow:
l filename_hb.stl
l filename_fb.stl
The created STL file can now be properly imported in Hexpress. While the process is fully
integrated when using the Export and open Hexpress or Export and launch the C-Wizard
mode, it is also possible to use the STL file outside the scope of the plug-in.
Input file
The template input file for hull applications can be found in: 121/_data/Script/rhino_hull.input.
The input file contains the following sections dedicated to hulls:
l Body configuration: 1 for half body, 0 for full body
l Speed definition: maximum speed in m/s.
l Domain size: 0 for automatic, 1 for user defined. If user defined it is a box defined in terms of
number of reference lengths above, before, behind below and to the side of the body.
l Fluid model: 0 for mono-fluid, 1 for multi-fluid. If mono-fluid is chosen the fluid to be solved
should be defined (AIR or WATER) and the free surface Z coordinate in meters.
Advanced parameters:
l Boolean operation method : 1 for Mesh + MeshBooleanDifference or 2 for
BooleanDifference + Mesh as described in the section Boolean operation.
References
[1] https://wiki.mcneel.com/rhino/booleanfaq
[2] https://wiki.mcneel.com/rhino/meshfaq
Requirements
Workflow
Domain creation
The plug-in is applying the Fine Marine guidelines concerning the recommended domain size for
open water computations: the domain is a cylinder with 4 propeller radius upstream of the
propeller center, 12 propeller radius downstream and a radius equal to 6 propeller radius.
The user needs to answer the following questions:
1. Enter coordinates of the propeller center (in meters, format 1.0,0.0,0.0). The default value is
0.0,0.0,0.0
2. Please enter the radius of your propeller (strictly positive, in meters). This information will be
used to define the domain size.
In case of a ducted propeller, the Rhino plugin will pop up the following warning message:
The plug-in will propose a first triangulation of the geometry based on its dimensions and ask if
the triangulation is fine enough.
If the user answers No the following window will pop-up to define the desired triangulation:
The meaning of each parameter is given in the Rhinoceros® meshing FAQ [1]. The most efficient
values to control the meshing are:
l density,
l minimum edge length,
l maximum distance, edge to surface.
The Preview button allows to visualize the mesh without moving to the next step. Press OK only
when the triangulation is satisfactory.
Patch naming
See "Export STL only" (p. 959) page for more information.
The following patch names are proposed by default for the propeller application: Shaft, Cap,
Blade, Pressure_side, Suction_side, Leading_edge, Trailing_edge, Fillet, Tip.
The export process will now begin. At the end, a single file will be created. The file will be
named as follows:
l filename_ow.stl
The created STL file can now be properly imported in Hexpress. While the process is fully
integrated when using the Export and open Hexpress or Export and launch the C-Wizard
mode, it is also possible to use the STL file outside the scope of the plug-in.
Input file
The template input file for propeller open water applications can be found in: 121/_
data/Script/rhino_propeller.input.
The input file contains the following sections dedicated to propellers:
l Center of the propeller: in meters, format 0.0 0.0 0.0
l Propeller radius: in meters.
l Propeller domain size : 0 for automatic, 1 for user- defined. If user- defined the domain
cylinder is defined in number of propeller radius in Upstream, Downstream and Radius.
Format: 4.0 12.0 6.0.
References
[1] https://wiki.mcneel.com/rhino/meshfaq
This application prepares two domains: one for the hull and one for the propeller to run a
computation with sliding grids. The hull domain will have a cylindrical space where the propeller
domain will fit.
This mode of the plug-in works in two parts: SG - Hull and SG - Propeller that need to be
launched sequentially to complete the full process.
l The geometry needs to be closed and include hull, shaft and propeller.
l The input geometry needs to be oriented from transom to bow along the positive X-axis, thus
the Y-axis is going port-side.
l In case of export in half-body configuration, only the port-side is exported. For instance for
catamarans, the port-side hull should be present.
l The input geometry needs to be centered in Y = 0.
Current limitations:
l No ducted propeller and no intersection between sliding domain and boat.
l The shaft needs to be present.
l The sliding grid mode is not compatible with C-Wizard export mode.
l A the end of one export the user is always advised to perform the other mode. The plug-in
does not know if first domain has already been created or not.
l Only one sliding grid can be defined in the ship domain. As a consequence, in full body
configuration there can only be one propeller. To define a two propellers configuration,
half body configuration must be used.
Workflow
Domain creation
Once the Hull + Propeller (SG) option is chosen, the workflow will be as follows.
1. Selection of the object to export (Hull or Propeller),
Both steps will need to be performed sequentially, the order is indifferent. Starting from hull or
from propeller the same inputs will need to be given.
The domain will be cut at the free surface location. If the fluid to compute is AIR the domain will
be built from the free surface up; if it is WATER from the free surface down.
If the propeller is placed in the mirror plane full body computation should be chosen. If the
geometry contains two symmetrical propellers half body computation should be chosen.
6. Highest boat speed of the future computation to compute the domain size.
The triangulation will be performed in the same way as in the hull application.
Boolean operation
Please check the Boolean operation section from "Export for hull" (p. 966) chapter for more
information.
One can check the recommendations from "Export for hull" (p. 966) and "Export for propeller"
(p. 970) for more information. On top of them, it is advised to use the finest triangulation of the 2
domains for both domains. Most of the times, the propeller requires the finest triangulation and
hence, it is advised to start the process with the propeller first. Indeed, since the plugin will
remember the first choice of the triangulation (saved into the input file), the same triangulation will
be applied on the second domain.
Patch naming
See "Export STL only" (p. 959) page for more information.
The following patch names are proposed by default for the sliding grid application.
FIGURE 36.9
Example hull domain in SG application.
l For the propeller domain: Shaft, Cap, Blade, Pressure_side, Suction_side, Leading_edge,
Trailing_edge, Fillet, Tip, SG_inlet, SG_outlet, SG_side.
After all patches have been named the domain will be exported.
Second domain
l If the proposed input file is selected the only inputs requested will be triangulation density and
patch names. This is the recommended option as it will make sure both domains match
perfectly.
l If Create a new settings file is chosen all inputs listed in the previous section will need to be
given again. Be careful to use the same geometrical definitions.
At the end of the process two stl files will have been created:
l filename_SG_hb/fb.stl
l filename_SG_ow.stl
Both files can now be properly imported in Hexpress.
Input file
The template input file for hull + propeller (sliding grid) applications can be found in: 121/_
data/Script/rhino_sg.input.
The input file contains the following sections:
Hull:
Fine Marine and Hexpress needs to be installed on the same machine to use this mode.
If an export has already been performed and the STL file hasn't been moved or renamed, the plug-in
will detect it. It is then proposed to proceed to Hexpress using the existing file or to perform a new
export.
Fine Marine and Hexpress needs to be installed on the same machine to use this mode.
If an export has already been performed and the STL file hasn't been moved or renamed, the plug-in
will detect it. It is then proposed to proceed to the C-Wizard using the existing file or to perform a
new export.
Performing a new export will not overwrite the former file. The former file will be incremented with
an _#.
Versions from 7.2rc of the plugin need to be used with the C-Wizard from Fine Marine 7.2rc
or later. The C-Wizard does not ensure the forward compatibility.
Propeller + hull (sliding grid) is not compatible with the export and launch C-WIzard mode.
This tool allows the user to check if the geometry is ready for the Fine Marine export. If any
problems are detected they will be listed together with possible solutions.
The following checks are performed:
l Layer name: the main layer name cannot start with 'EXPORT_'.
l Block instances: the object is not a block instance, which would not work with the plugin.
l Bad surfaces: the object does not contain bad surfaces.
l Count the number of polysurfaces: the plugin needs a single closed polysurface.
l Naked edges: the object does not contain naked edges meaning that it is closed.
FIGURE 36.12
Example result of Geometry analysis.
36.2.1 Domhydro
The aim of "domhydro" is to provide a tool which can solve the hydrostatic problem of a body
using the domain and boundary conditions files from Hexpress. This tool replaces the 'setup_
info_hydrostatic' and 'draft' tools which were only used after the mesh generation. "Domhydro"
as a specific tool supports two general modes of working (h2p & p2h) and extended function '-
hip', which details and functionality are described in the following Chapter.
from Hexpress Plugins menu Domhydro tool can be started directly, though the '-hip' function will
not be available in this mode
A. Assumptions
l Horizontal positions of center of gravity and the center of buoyancy are equal.
l If the vertical position of the center of gravity is not known by the user, the tool can estimate it.
In such case, the vertical position of the center of gravity is approximated considering that the
mass is equally distributed on the shell (the triangulation of the solid patches) below the free
surface using a uniform distribution of the mass on the wetted surface. The same distribution of
mass is used to estimate the inertia matrix.
For instance, this should be taken into account especially for superstructures where the mass in the air
part can be important.
FIGURE 36.13
Illustration of a problematic case where water is considered inside the body
l For a simple cube in 2D, "domhydro" cannot distinguish a 2D from a 3D configuration. In this
case, one can force the check with the argument -dim=2 or -dim=3.
l For a 3D cube, adding a vertex to each edge of the cube makes it possible for "domhydro" to
recognize the 3D configuration.
domhydro can be launched with a geometry non-aligned with the Cartesian axis as long as this
configuration is in hydrostatic equilibrium. In addition, domhydro can consider these initial angles
as Cardan angles to provide the user with the inertia matrix in that reference frame.
B. Modes Description
Two modes are implemented in this tool: h2p and p2h. Each one has its own objective described
below:
l h2p: in this mode, the body is assumed to be at the hydrostatic position. As a result, the tool
provides extra information on the body's characteristics. They are listed below:
l Wetted surface: total and projected (on the XZ-plane)
l Water plane area
l Total volume
l Immersed volume
l Volume in the air
The equilibrium position corresponds to the hydrostatic position with all the degrees of freedom
free. Indeed, one can decide to freeze one or several degrees of freedom to compute the
hydrostatic position.
In p2h mode, the tool computes the following information, including the rotation and the
translation to apply on the domain in Hexpress if necessary (one can use the 'Move Part'
feature, see Hexpress User Manual to know more about it):
l Rotation axis
l Rotation angle
l Point of rotation (gravity center)
l Vertical translation
l New position of the gravity center
In both modes, the outputs are written in a file called 'domainfilename _domhydro_ mode _b#.out'.
The template is always the same and "domhydro" writes NA in case the parameters were not
computed by the selected mode and "b#" indicates the index of the body.
l Domhydro tool also allows to determine the forces and moments applied to a body for a user-
specified additional modification of orientation (e.g. it calculates the forces and moments
associated with a roll angle of 2 degrees). This can be done by employing the '-hip' function:
"domhydro" is based on the domain and boundary conditions files from Hexpress. Hence, once
the domain is created, cleaned and saved, domhydro can be launched. Manual hints should be
given to the tool: it should know how many bodies are present and their location. For this
purpose, the boundary conditions names should be adapted. For this purpose:
l go to the boundary conditions menu,
l add the suffix _b# behind each solid surface name of each body (where "#" represents the
body's ID),
l save the Hexpress project,
l launch domhydro from the mesh folder typing the command in the shell.
The use of non-standard characters in the project name (other than English letters, Arabic numerals,
and underscore symbol "_") is not recommended.
The tool must be launched from the shell and some inputs are requested. All these information are
required and must be given to the tool. However, default values are automatically chosen for the
specific mass of the fluids and the gravity intensity. They can be overwritten using arguments,
given in the list below. Furthermore, arguments can also be used to run the tool in a script. For
instance,
In Linux:
domhydro -niversion marine121 -print <-arg1=> ... <-arg2=> ...
In Windows OS:
C:\...\finemarine121\bin\isis64\domhydro.exe -print <-arg1=> ... <-arg2=> ...
The units to be used in domhydro are: length in m; angle in deg.; mass in kg; density in kg/m3 ;
gravity in m/s2; force in N; moment in N•m.
The complete list of inputs and their respective arguments are given below. If the arguments are
not given when typing the command, questions will be prompted in the shell.
The output will printed in the shell but also stored into a file with the name of 'projectname_
domhydro_mode_b#.out'. (mode can be h2p, p2h or hip).
General inputs
Project configuration
Points tolerance
This tolerance should have the higher order when the fine domain triangulation has been applied.
Body configuration
-idb= : body index (integer) - the index corresponds to the "#" from all the "_b#" added in the
boundary condition menu
-list_patches= : list of pairs bloc index: patch index separated by comma
-geom= : eb (entire body) or hb (half body)
Mode selection
Additional rotations (for instance, one can add extra rotations in order to calculate the
hydrostatic positions for several roll angles, starting from the same domain file)
-extra_roll=: Roll angle (X2-rotation) (real)
-extra_pitch=: Pitch angle (Y1-rotation) (real)
-extra_yaw= : Yaw angle (Z0-rotation) (real)
External force
It is possible to add an external force (resultant and moment) to compute the hydrostatic position,
taking into consideration a wind effect on a sail for instance. This force can be a follower force
(default) or a non-follower force (add -eff_noFollowerForce). With the non-follower force, the
direction of the force does not change when the body moves: this is the case an extra mass is
attached onto a body. To summarize:
l follower force: the force direction does change according to the body motion
l non-follower force: the direction of the force remains fixed (like gravity)
-eff_F= : Fx,Fy,Fz Resultant (reals), default = (0.000000E+00 0.000000E+00 0.000000E+00) N
-eff_M=: Mx,My,Mz Moment (reals), default = ( 0.000000E+00 0.000000E+00 0.000000E+00)
N.m
- eff_ AP= : Xapp,Yapp,Zapp coordinates of the application point (reals), default =
(0.000000E+00 0.000000E+00 1.000000E-06) m
-eff_ noFollowerForce : if present, forces are NOT follower forces. Only available if -eff_
M=0,0,0 (null moment)
Expert parameters
This function determines the forces and moments to apply to a body to reach a user-defined
additional modification of orientation. For instance, it calculates the forces and moments
associated with a roll angle of 2 degrees.
It requires the following information.
-vfs= : free surface location (real), default = 0.000000E+00 m
-Pref= : Xref,Yref,Zref coordinates of the reference point (reals)
E. Examples
A classic situation is when the geometry is received in its hydrostatic position and all the boat's
characteristics are known except the inertia matrix. The inertia matrix is mandatory when solving
the motion thanks to the Newton's laws (but not required with the quasi-static approach, please
read the Solved Law of Motion section to know the different ways of solving motions in Fine
Marine). In this case, one can use "domhydro" in h2p mode to calculate the inertia matrix.
Sailing boat
In case the boat is not in its primary configuration, values different from 0 should be entered for
the initial Cardan angles.
In case the boat is not in its primary configuration, the corresponding values should be entered
for the initial Cardan angles.
Here is an example of a computation of a hydrostatic position. The case is a cube with the
following characteristics:
l center of gravity coordinates: (0,-1,-3), mass: 2000 kg, dimensions: 2x2x2m, centered on point
(0,0,0).
l gravity: -10 m/s², water density: 1000 kg/m³, air density: 0 kg/m³
l follower force with intensity (0,14142.136,-14142.136) N is applied on the application
point with coordinates (0.,3.,1). The result is illustrated below:
FIGURE 36.14
Follower force
36.2.2 setup_infos
36.2.3 setup_info_hydrostatic
With this tool, it is possible to find numerical parameters (mass, horizontal position of the
buoyancy center,...) and evaluate inertia matrix, which can help for free surface computation with
motion, see theSolved Law of Motion section. This tool provides also other pieces of information,
like wetted surface and water plane area. It should be launched from the computation folder, once
the mesh generation, the computation set-up and the pre-processing have been performed.
This tool is still present for backward compatibility reasons. We strongly recommend to use
"domhydro" tool instead since it only makes use of the domain file of Hexpress.
36.2.4 draft
The "draft" tool computes the numerical draft of the body. For this purpose, the tool will give the
relative position of the free surface according to the body position and its displacement.
This tool is still present for backward compatibility reasons. Please use the "domhydro" tool instead.
36.2.5 setup_for_wave_generation
This Open Office sheet, stored in "_data/isis/Src" of the installation folder, is dedicated to the
setup of a wave generation project. The idea is to give information which are recommended for
the mesh generation (special refinement box around the free surface) and for the computation
settings (time step, wave length or wave period). As extra information, this sheet computes the
wave steepness, the wave celerity and different frequencies.
36.2.6 WaveReg_FSD
WaveReg_FSD is a standalone tool to evaluate the results of the Fourier Series Decomposition
(FSD) for almost any monochromatic and regular waves in finite or deep water conditions. It also
generates ASCII files that can be used for plotting kinematics and wave elevation corresponding
to the decomposition as it will be used in the flow solver. The behavior of the tool is exactly the
same as what happens in the flow solver.
<INSTALLATION FOLDER>/_data/Script
Usage
Arguments
Output example
Generated files
The tool generates three .dat files that can be visualized as a graph:
l wave_x0_y0_t.dat: shows t, u, v, p, eta at fixed (x0,y0) -> function of time
l wave_x_y0_t0.dat: shows x, u, v, p, eta at fixed (t0,y0) -> function of space in axial direction
The file wave_x0_y_t0.dat describes u, v and p as function of space in the vertical direction. Its
interest is limited.
With:
l t: time
l x: axial direction
l y: vertical direction
l u: axial velocity
l v: vertical velocity
l p: pressure
l eta: wave elevation
dom2its
"dom2its" converts the domain file of Hexpress into an triangulated surface file, with the
extension ".its". This tool is run automatically by "hexpress2isis" (see next section below) any
time.
hexpress2isis
"hexpress2isis" allows to convert an Hexpress topology to Fine Marine flow solver mesh files
(nodes & faces). Available arguments can be employed:
-help : to display this help information
-p= : path for working folder
-local : to work in current folder
-relative : to work with relative path
-sim= : to specify the .sim input data file
-mesh= : to specify Hexpress mesh file
-bcs= : to specify Fine Marine flow solver boundary condition file
-auto : for default actions only
-ymirror : for symmetric cases with a Y-mirror plane, the tool checks the mean (noted Ymean) of
the Y-faces coordinates on the Y-mirror plane. It sets Y-mean to 0 if abs(Ymean)<1.0d-4*Dy, Dy
being the domain size in Y-direction. One can use the argument "-ymirror=" to change the default
value "1.0d-4"
Starting from v2.3, - sim= can be omitted for batch scripting, even if it still works with -sim= option
as well. The designed behavior is the following:
1. Use the ".sim" file specified by the -sim= option when this option is given,
2. If the -sim= option is not given, then check the existence of "Current_Folder.sim" file. If this
".sim" file exists, then use it. Otherwise, ask the user to give the ".sim" file interactively.
Fine Marine flow solver is reading a boundary condition file " projectname_
computationname.bcs". For users working in batch, they should create it manually: it can be
copied from the boundary condition file of Hexpress (".bcs") from "_mesh" folder adding the
identifier (see Identifier) at the front of each patch name:
An equivalent tool exists for batch scripting. It performs all the default operations automatically
(which means that no question are prompted to users). Its name is "hxp2isis_ no_ interactive" and
should be launched from the computation folder. However, the project and the computation must
have been saved first. This tool is automatically executed when launching the computation (and so the
pre-processing) through the interface.
fluent2isis
These mesh files cannot be loaded in the Fine Marine interface (Hexpress meshes only).
A tool called "change_face_flag" is provided in the Fine Marine package to list or change the
boundary conditions face flags after the creation of the mesh files ("nodes_ original.cpr" and
"faces_original.cpr" in the "_mesh" folder) for Fine Marine flow solver. This tool offers the
possibility to check or change the boundary conditions without opening and saving the project
again.
The changes will not be taken into account by the interface when the project will be opened again.
3dto2d
The Fine Marine flow solver has the capability to do a computation on a 2D mesh. However,
Hexpress always generates a 3D mesh with one cell in Z-direction. This tool offers the possibility
to transform the "false" 2D mesh from Hexpress into a "true" 2D mesh (no cell in the Z-direction)
by applying a transformation on the nodes and faces files (grid files for Fine Marine flow solver
created by "hexpress2isis"). The computation will be then much faster.
This tool is still present for backward compatibility and does no action by default. If one still wants to
impose the 3D to 2D conversion, the "-FORCE" option should be used. In that case, the 2D mesh files
will be stored in the "_mesh" folder.
Important : if a computation from an old project is launched using the interface, 3D mesh will be
saved in the _ mesh folder, overwriting the previous 2D meshes. Consequently, previous
computational results found in other computation folders for the same project are not coherent
anymore with the mesh files. But those results are still compatible with the flow solver. It is only
necessary to do a restart for few iterations to make the result validated for post-processing.
rotategrid3d
If a different name for the nodes file is used, it has to be changed manually in the ".sim" file before
launching the simulation.
We recommend to use the rotation feature available through the Hexpress interface, otherwise the
changes will not be taken into account by the interface when the project will be opened again, see
Hexpress User Manual for more details.
scalegrid3d
We recommend to use the scaling factor available through the Hexpress interface, otherwise the
changes will not be taken into account by the interface when the project will be opened again, see
Hexpress User Manual for more details.
translategrid3d
This tool has been created to translate a mesh from an initial base point to a target point (nodes_
original.cpr only)
If a different name for the nodes file is used, it has to be changed manually in the ".sim" file before
launching the simulation.
We recommend to use the translation feature available through the Hexpress interface, otherwise the
changes will not be taken into account by the interface when the project will be opened again, see
Hexpress User Manual for more details.
36.6 CONVERSIONS
formatf
cvrfmt
This tool converts other data files (except connectivity file) in the different formats:
l ".for" (text ASCII format)
l ".bin" (binary format)
l ".cpr" (compressed format)
l ".xdr" (xdr format)
The ".cpr" format is strongly recommended (see the tool "formatf" for more information).
gen_gridcc
This tool converts the mesh files into cell centered mesh files.
premetis
This tool partitions sequentially Fine Marine flow solver grid files (nodes & faces) and restart files
(pressure, velocity,...) into the number of required partitions to perform computations in parallel.
Several files and folders are created:
l wall_surface_grid.bin
l input.isismb (contains the name of the ".sim" file)
l graph.dat.part.x ("x" is the total number of partitions)
l current_part_number.dat
l bxxx : sub-directories ("xxx" corresponds to the partition number)
Each "bxxx" sub-folder contains:
The domain decomposition will require 500MB of RAM per million cells.
User interactive setting for data file is no longer necessary starting v2.3-0 release. It can however be
activated again with "-noauto" option.
Starting from v2.3, - sim= can be omitted for batch scripting, even if it still works with -sim= option
as well. The designed behavior is the following:
1. Use the ".sim" file specified by the -sim= option when this option is given,
2. If -sim= option is not given, then check the existence of "Current_Folder.sim" file. If this
".sim" file exists, then use it. Otherwise, ask the user to give the ".sim" file interactively.
This tool reconstructs Fine Marine flow solver partitioned files. This tool is mandatory for
visualization, repartitioning, storage,... Available options for postmetis are:
-help : Display this help information
-local : Work in current folder
-relative : Work with relative path
-sim= : Specify the .sim input data file
-auto : Default actions only
-visu : Post-processing for the last time step computed and mean flow variables if available
-mean : Post-processing for mean flow only
-probe : Post-processing for probe files only
-isis_mesh= : Specify Fine Marine flow solver mesh file (probe only)
-isis_face= : Specify Fine Marine flow solver faces file (probe only)
-isis_fsister= : Specify Fine Marine flow solver face sister pointers file (probe only)
Starting from v2.3, - sim= can be omitted for batch scripting, even if it still works with -sim= option
as well. The designed behavior is the following:
1. Use the ".sim" file specified by the -sim= option when this option is given,
2. If -sim= option is not given, then check the existence of "Current_Folder.sim" file. If this
".sim" file exists, then use it. Otherwise, ask the user to give the ".sim" file interactively.
36.8.1 eff_change_frame.py
This tool projects the forces applied on any body onto the frame of another body. This python
script is provided in the Fine Marine installation folder, in finemarine#/_data/Script/ directory, it
should be copied and executed in the considered computation folder.
How to launch the tool:
l LINUX
finemarine121 -batch -script eff_change_frame.py -print
l WINDOWS
From a terminal or a .bat file:
NUMECA_INSTALLATION\finemarine121\bin64\fine_marinex86_64.exe -batch -script
eff_change_frame.py -print
The following arguments can be specified. If not present, they will be requested interactively:
l -h, --help: display the tool arguments,
l -eff_body_name: name of the body or sub-body whose efforts need to be converted,
l -frame_body_name: name of the frame body to be used as new reference frame,
l -subbody: "yes" to include all the sub-bodies in the selected body in the conversion or "no",
l -save: "all" to include pressure and viscous efforts separately, "sum" to convert the total force
pressure + viscous.
Once executed, a result file, named eff_body_frame.dat, is written is the computation directory.
The frame R0_following_body, automatically proposed by the tool as reference frame for computing
the forces, is a frame composed of the reference point of the body and the Earth axes.
During the simulation, the forces must be output in the Global frame of reference to be able
to use this tool (see "Motion and Force Variables" (p. 653)).
36.8.2 extract_wall_surface_grid
This tool extracts the data from the wall surface grid from the wall_data.bin file. It can be used to
extract the friction force from the solid walls.
36.8.3 forces_by_section
This tool computes forces and moments by section on a body. It is available as a macro in the
CFView interface.
The body marching is assumed to be in the X-direction by default but one can change it using -
cut=y or -cut=z arguments. The body is then divided into N sections, from Xmin to Xmax
(minimum and maximum X-coordinates respectively) along X-direction, separated by a Δ X
computed by the formula:
If the the forces-by-section tool is used with the goal of obtaining the sectional force distribution at
the same intervals as the saved (volume) probes, the wall-forces probe needs to be activated. If only
surface probes are saved, this can be done in the GUI. If only volume probes are saved, this needs to
be done through the Comment field:
**** PROBE WALL FORCES: FREQUENCY*
***
f0
***
where f corresponds to the probe saving frequency.
When reconstructing the probes, the computation folder will contain as many wall_data_n# files as
probes. These files are needed for running forces-by-section, which can be done by using e.g. a simple
bash script containing a loop over these wall_data files:
for src in wall_data_n#*;do
forces_by_section -body=1<< EOF
$src
100 # Number of cuts
EOF
mv moments_by_section.dat ${src}_moments_by_section.dat
mv forces_by_section.dat ${src}_forces_by_section.dat
done
The number of sections available in this tool is limited by the maximum cell size of the target body
or sub-body. Any cell can not be cut by more than one time. As big cells are usually can be placed on
the deck area, creating a sub-body without the deck will allow to increase the number of sections.
The script is used to measure whether the generated wave signal, measured at the first wave
probe, corresponds to the input wave spectrum. The goal is then to determine whether the
computation has run long enough to represent a realistic irregular wave spectrum through a plot
and quantified differences between the theoretical and realised spectra.
Next to a visual comparison of the realised and theoretical spectrum, the script also quantifies the
difference (in %) between realised and theoretical spectral moment (area under the curve) and the
significant wave height. Large deviations in these values indicate that the length of the simulation
should be increased to achieve a representative irregular wave spectrum.
36.8.5 FM_dampingCoefficients.py
This script provides linear, quadratic and cubic damping coefficients for free decay simulations,
assuming a linearised equation of motion (i.e. the damping is independent of the motion
amplitude). The Froude energy method is used (see Igbadumhe, J.F., Sallam, O., Fürth, M. and
Feng, R., 2020. Experimental determination of non-linear roll damping of an FPSO pure roll
coupled with liquid sloshing in two-row tanks. Journal of Marine Science and Engineering, 8(8),
p.582).
l The estimation of the added mass should be set to Accurate in the Body motion menu.
l The user should always verify the quality of the fit and its standard deviation; if the latter exceeds
5% of the coefficient value, the accuracy of the estimate is low and the user is encouraged to
check whether removing peaks from the start or changing the order of the fit (to avoid
overfitting) can reduce the standard deviation. As the linear damping coefficient value is the most
important (the quadratic and cubic coefficients are calculated based on assumptions that the decay
is mainly linear), the aim should be to reduce this standard deviation more than for the other two
coefficients.
This file also reports the standard deviation for each of the calculated decay coefficients (linear,
quadratic, cubic), and prompts a warning when the calculated standard deviation exceeds 5%
of the coefficient value.
36.8.6 isis2cfview
This tool converts Fine Marine flow solver results to Cfview format. Available options for
"isis2cfview" are:
-help : Display this help information
-local : Work in current folder
-relative : Work with relative path
-sim= : Specify the .sim input data file
-mesh= : Specify Hexpress mesh file
-bcs= : Specify Hexpress boundary condition file
-cfv= : Specify Cfview project file
-auto : Default actions only
-mean : Post-processing for mean flow only
-probe : Post-processing for probe files only
-hex_mesh= : Specify Hexpress mesh file (probe only)
-isis_mesh= : Specify Fine Marine flow solver mesh file (probe only)
-isis_face= : Specify Fine Marine flow solver faces file (probe only)
The tool is launched automatically by the interface when Cfview is launched through the interface for
computation without probes.
"isis2cfview" concatenates the results of a parallel computation (it actually calls if necessary
"postmetis" and "isis2hexpress" to ease the post-processing step). For this purpose, "isis2cfview"
is checking the current status of the computation chronology. The status is stored in the file called
status.dat
Starting from v2.2-2, a least squared interpolation based on linear base function is employed to
preserve linearity of the solution. However, as for any high order interpolation scheme, under-shot
and over-shot may happen. When such behavior is observed, "isis2cfview" switches back to
simple average except for the pressure field. Also, when the grid aspect ratio is too high (grid
aspect ratio > 50), simple average is used except for the pressure.
At the wall, the solution is interpolated using the value defined at the wall as well as the value
defined in the cell center position next to the wall. Hence, for low Reynolds number model,
velocity at the wall is not equal to zero.
When using wall function, as the velocity field is discontinuous, interpolated velocity field at the
wall is used.
If there is any strange behavior observed on the pressure field near the solid wall, especially at the
edge of a surface, this may due to the new unbounded interpolation. In this case, use "- average"
argument.
Starting from v2.3, - sim= can be omitted for batch scripting, even if it still works with -sim= option
as well. The designed behavior is the following:
For users working in batch, an equivalent tool exists. It performs all the default operations
automatically (which means that no question are prompted to users). Its name is "isis2cfv_ no_
interactive" and should be launched from the computation folder when the computation is over.
To gain time, "isis2cfview" now is not calling "isis2hexpress" when it is not needed (no mesh
motion/deformation: no motion imposed, no Adaptive grid refinement applied, for instance). For
the reconstruction a .cfv file is created with the relative path to the Hexpress mesh:
"project_folder/_mesh/mesh_name.hex"
Since this, it is recommended to store the mesh always inside the "project_ folder/_ mesh"
directory, otherwise the path should be defined manually.
Use - keep_hex option to skip the "isis2hexpress" mesh conversion with the limitation that the
hexpress mesh needs to be found in the "project_name/_mesh" folder.
36.8.7 isis2cgns
This tool converts Fine Marine flow solver results to unstructured CGNS binary format
containing information about the mesh, surface and volume data. The data are node centered.
isis2cgns concatenates the results of a parallel computation if necessary.
This tool uses the files Hexa_Cell_Topology.bin and faces_4tecplot.cpr generated by hexpress2isis
if the mesh has been generated by Hexpress. For this purpose, the expert parameter called
thirdPartyPostProc_, should be set to YES in the interface.
36.8.8 isis2ensight
This tool provides the post-processing data in Ensight 6 binary format. Please use "postmetis" first
to concatenate the results of parallel computations.
As polyhedron element is not supported by Ensight 6, special face connectivity file ("faces_
4tecplot.cpr" for instance) needs to be generated during the mesh conversion step using the tool
"hexpress2isis". The data file "Hexa_ Cell_ Topology.bin" generated by "hexpress2isis" is
mandatory for "isis2ensight"and it must be located in the current folder. The data are node
centered.
Surface data and 2D data conversions are not available. However, there is a workaround which
consists in writing the solution data in Tecplot ascii data format, then use Ensight Tecplot data reader
to import them in.
This tool uses the files "Hexa_ Cell_ Topology.bin" and "faces_ 4tecplot.cpr" generated by
"hexpress2isis" if the mesh has been generated by Hexpress. For this purpose, the expert parameter
called thirdPartyPostProc_, should be set to "YES" in the interface.
This tool provides the post-processing data in FieldView 11 binary format. Please use "postmetis"
first to concatenate the results of parallel computations.
It is possible to use polyhedron elements. Besides, both volume and surface data are supported.
Surface data are the exact surface data used in the computation except at the solid wall where the
value close to the wall is applied. The data are cell centred for the surfaces and node centred for
the volume.
36.8.10 isis2hexpress
This tool converts Fine Marine flow solver mesh to Hexpress format in case of moving grid.
Available options are:
-help : Display this help information
-local : Work in current folder
-relative: Work with relative path
-sim= : Specify the .sim input data file
-mesh=: Specify Hexpress mesh file
-new_mesh=: Specify the new Hexpress mesh file
-isis_mesh=: Specify Fine Marine flow solver mesh file (probe only)
-isis_face= : Specify Fine Marine flow solver faces file (probe only)
-isis_fsister=: Specify Fine Marine flow solver face sister pointers file (probe only)
-body_ts=: Identifier of the traveling shot body (0 in case there is no body for traveling shot)
-dof_ts=: Activated degrees of freedom for the traveling shot (Tx Ty Tz Rx Ry Rz), 1 means
active, 0 inactive.
This tool is used automatically by "isis2cfview" to reconstruct a ".hex" file in case of adaptive
grid refinement. But it can also be used to reconstruct a ".hex" file based on Fine Marine flow
solver mesh files only. It can be useful for users who want to reconstruct the final ".hex" even if
they have lost their original ".hex" files for instance. Available options are:
-help : Display this help information
-local : Work in current folder
-relative : Work with relative path
-sim= : Specify the .sim input data file
-mesh= : Specify Hexpress mesh file
-new_mesh= : Specify the new Hexpress mesh file
-isis_mesh= : Specify Fine Marine flow solver mesh file (probe only)
-isis_face= : Specify Fine Marine flow solver faces file (probe only)
-isis_fsister= : Specify Fine Marine flow solver face sister pointers file (probe only)
-body_ts= : Identifier of the traveling shot body (0 in case there is no body for traveling shot)
-dof_ts= : Activated degrees of freedom for the traveling shot (Tx Ty Tz Rx Ry Rz), 1 means
active, 0 inactive.
36.8.12 isis2tec
This tool is still present for backward compatibility purpose. Please check "isis2tec360" tool for the
newest version.
This tool provides the post-processing data in Tecplot 7 ASCII format. Please use "postmetis"
first to concatenate the results of parallel computations.
As polyhedron element is not supported by Tecplot 7, successful conversion is not always
ensured. Hence, a special face connectivity file ("faces_ 4tecplot.cpr" for example) has to be
generated during the mesh conversion step using "hexpress2isis".
"isis2tec" searches in the current folder a file called "Hexa_Cell_Topology.bin" generated by
"hexpress2isis". If this file is found, output post- processing data contains only hexahedron
elements. Is this file is not found, non-conform element is splitted into tetrahedron element.
Surface data and 2D data are supported. However, surface data are not exactly the surface data
employed in the computation, but the extrapolated value from inside the domain.
Starting from v2.2-2, a least squared interpolation based on linear base function is employed to
preserve linearity of the solution. However, as for any high order interpolation scheme, under-shot
and over-shot may happen. When such behavior is observed, "isis2tec" switches back to simple
average except for the pressure field. Also, when the grid aspect ratio is too high (grid aspect ratio
> 50), simple average is used except for the pressure.
At the wall, the solution is interpolated using the value defined at the wall as well as the value
defined in the cell center position next to the wall. Hence, for low Reynolds number model,
velocity at the wall is not equal to zero.
When using wall function, as the velocity field is discontinuous, interpolated velocity field at the
wall is used.
At the edge of the mesh, as numerical solution is not defined in the edge, extrapolation is used and the
result may be not correct. Hence, if one performs Pdyn=P+ρgz and visualize Pdyn, there can be some
kinks. This is not an interpolation problem but a boundary condition itself. To visualize the dynamic
pressure (Pdyn), it is better to output this quantity directly from the code.
36.8.13 isis2tec360
This tool provides the latest compatibility with Tecplot360 post-processing software.
This tools uses the Fine Marine flow solver mesh files (nodes and faces generated by
"hexpress2isis" or nodes and faces generated by the flow solver when the refinement is checked).
"isis2tec360" does not use a special connectivity file, as "faces_4tecplot.cpr" for example. And, it
is not necessary to check the expert parameter called thirdPartyPostProc_ in the interface.
The flow quantities in the flow solver are stored at the center of cells. "isis2tec360" used a least
squared interpolation to write the flow quantities at the nodes of the mesh. At the wall, the
solution is interpolated using the value defined at the wall as well as the value defined in the cell
center next to the wall. Hence, for low Reynolds number model, velocity at the wall is not equal
to zero.
"isis2tec360" write the data into Tecplot's binary format if the suffix of the files is ".plt" and in
Tecplot's ASCII format is the suffix of the files is ".dat". The volume and surface files can have a
different suffix.
To post- process the probes for unsteady computations, a script called "probes2tecplot360.py," is
available in the installation folder in "_data/Script/". This script creates a volume and surface Tecplot
files for each probe.
By default, launching "isis2tec360" with the option -auto provides the following outputs:
l velocity,
l pressure,
l Y+
l turbulence quantity variables.
To add other outputs "isis2tec360" should be used without the option -auto.
Wall shear stress is added in the list starting from the Fine Marine v5.1 release.
This tool converts Fine Marine flow solver results in the VTK (Visualization ToolKit) Binary
Appended .vtu Format. VTK supports a wide variety of visualization algorithms including: scalar,
vector, tensor, texture, and volumetric methods; and advanced modeling techniques such as:
implicit modeling, polygon reduction, mesh smoothing, cutting, contouring, and Delaunay
triangulation.
The default XML VTK standard is not compatible with very large meshes. If when opening
the vtu file an error related to "faceoffsets" appears add the argument -vtk_
standard=LEGACY to the command.
36.8.15 post_surface
Post-treatment of the surface probe files (for both serial and parallel computations) is done with
the tool "post_surface". This tool gives global surface files as output, in different possible formats.
Currently available formats are CGNS, Tecplot and STL. This tool is used during the automatic
reconstruction of an unsteady computation with surface probe. It can also be used manually to
reconstruct the "wall_data.cpr "file.
36.8.16 post_node_modal_approach
The goal of this script is to obtain the position history of one node during a computation with the
"Modal approach" (p. 514).
The default outputs from a Modal approach computation are the modes amplitudes. This script
will use the input modal file and the amplitudes to compute the position history of one node. It
will find the closest node to the coordinates given by the user.
The script will write the results in a text file where each line will contain the time value and the
corresponding XYZ coordinates of the node at that time.
Inputs
l X0, Y0, Z0: coordinates of the structure point to process. The script will find the closest node
to these coordinates in the structure.
l Relative_ path_ of_ the_ modal_ file : path to the structure file where the mode shapes are
defined, from the location where the script is launched.
l Relative_Path_of_the_Mvt_file: path to the Mvt* file, from the location where the script is
launched.
l Name_of_the_output_file: name of the file where the resulting coordinate history will be
36.8.17 probes2cfview
probes2cfview is the reconstruction tool available in serial mode starting from v2.3-0 and in
parallel mode starting from v3.1-3. It allows to reconstruct an unsteady solution within Cfview
starting from all intermediately saved probes computed by the Fine Marine flow solver into
readable solution files for Cfview. The tool is automatically launched by GUI with the settings
defined by the user in the post-processing management window (see Post-Processing) but can be
also used in batch.
Starting Fine Marine v8.2, the parallel mode for probes reconstruction is available from the GUI, but
only on the local machine. To distribute the reconstruction on several machines, the batch mode
should be used.
Requirement
Fine Marine should be installed and available through numeca_start script (it corresponds to the
default installation, see Installation Note for more information).
On Windows OS, the user should specify the full path of the tool:
Create a text file containing the command line and save it with extension ".bat". Copy it to the
computation folder where it needs to be used and double click on it to execute it. The "pause"
command can be added to keep the command line window open after execution showing any
error messages that may occur.
l Example content for .bat file to launch isis2cfview:
NUMECA_INSTALLATION_DIR\bin\isis64\isis2cfview.exe -print
pause
l Example of content for '.bat' file to launch probes2cfview:
NUMECA_INSTALLATION_DIR\bin64\fine_marinex86_64.exe -print -batch -script
NUMECA_INSTALLATION_DIR\bin64\probes2cfview.py
pause
The required settings are created by the interface when the button OK is pressed from the post-
processing window management. These settings are recorded in a file called
"reconstruction.input". This reconstruction file is stored in the directory of the corresponding
computation. Here is an example of the "reconstruction.input" file:
# Probe definition file
SIM FILE: /usr/local/project/project_computation_1/project_computation_1.sim (simulation file of
the computation)
HEX FILE: /usr/local/project/_mesh/mesh.hex (.hex file from the _mesh folder)
BCS FILE: /usr/local/project/project_ computation_ 1/project_ computation_ 1.bcs (the boundary
conditions file from the computation folder)
COMPUTATION: computation_1 (name of the computation)
COMPUTATION PATH: /usr/local/project/project_computation_1/ (path of the computation)
PROBE: VELOCITY
PROBE: MASS FRACTION
(the line "PROBE: ..." defines the probe to reconstruct. It should be taken from the following list
for volume probes: VELOCITY, MASS FRACTION, PRESSURE, HYDRODYNAMIC
PRESSURE, PRESSURE GRADIENT, VELOCITY, TURBULENT VISCOSITY,
TURBULENT DISSIPATION, TURBULENT KINETIC ENERGY, TURBULENT
FREQUENCY, CORRELATION R11, CORRELATION R12, CORRELATION R13,
CORRELATION R22, CORRELATION R23, CORRELATION R33, SECOND
INVARIANT, VORTICITY, HELICITY, COURANT NUMBER. For surface probe, the list
is: FREE SURFACE, CUT PLANE #, ISO-SURFACE # (# being the number of the surface),
WALL FORCES, WALL PROBE)
FORMAT: defines the format of the probe output with the given number.
Available formats:
0: CGNS (single precision)
1: CGNS (double precision)
2: STL
3: Tecplot
4: ISIS-CFD (native format of the solver)
SKIP INTERVAL: 1 (allows to skip the reconstruction for some probes in a sequence of interval:
"1" means that all probes are going to be reconstructed, "2" means that 1 probe over 2 will
reconstructed, etc...)
START PROBE: 1 (defines the first probe to be reconstructed)
The script creates a log file, running from GUI or in batch. The default name of this file is
"reconstruction_script.log".
By default the script looks for the "reconstruction.input" file in the current directory. If the file is
found, the user is prompted for confirmation. Alternatively the flag "-auto" can be used for the
two following cases:
l User prompt needs to be avoided, the full path to the reconstruction file needs to be specified
(Windows, see below) or -auto $PWD/reconstruction.input" (Linux).
l Script is not launched from the working directory, the argument – auto
/usr/local/project/project_computation_1/reconstruction.input, can be used to precise it.
In case the specified reconstruction.input file is still not found, the script looks for this file in the
current directory.
If this file is not found in the current directory, the script uses a manual mode to set parameters
and so questions will be prompted to the user to know the inputs described above.
To launch probes reconstruction in parallel the same probes2cfview tool should be used, but from
now on the hosts definition file and the launcher should be defined. Using the parallel option
decreases the time used for the reconstruction and will depend on the OS profile and the hardware
configuration. Please note, that in case of a machine network, performance of the parallel
reconstruction can also dependent on the speed of the connections within the network.
Steps to follow:
1. Create the machines file (for instance, "machines_ reconstruction.txt") in the computation
directory consisting machines host names that will be used for the probes reconstruction. File
should have the same structure as "machines.txt" file for parallel computation management.
Please see Launch Fine Marine flow solver in Parallel using Scripts for more details.
2. Launch the tool specifying machines file and the launcher type, for instance as follows:
probes2cfview -niversion marine# -print -machines machine_reconstruction.txt -launcher
mpi
Using the mpi launcher is generally the best choice when the parallelization is done across
only one machine. (the version provided in the package will be used). As long as OpenSSH is
installed on machine and ssh public/private key authentication is done, openssh launcher can
be used, while nirsh type is selected as a default type since it is already provided with the
installation (.../bin where the .../ is the NUMECA Software installation directory).
3. Information required for the reconstruction will be displayed in the shell and it is the same for
the serial and parallel modes. Input information will be stored into the "reconstruction.input"
file of which the description is given above here.
It is possible to stop the parallel reconstruction before it's finished as for the serial mode by
creating the file "stop_postprocessing.now" inside the computation folder. This file will be
deleted at the end of the procedure automatically.
Currently cluster systems are not supported for the parallel mode of probes reconstruction.
36.8.18 probes2tec360
The default XML VTK standard is not compatible with very large meshes. If when opening
the vtu file an error related to "faceoffsets" appears add the argument -vtk_
standard=LEGACY to the command.
In a shell:
finemarine121 -print -batch -script /path/to/numeca/_data/Script/probes2tecplot360.py
Arguments available:
l -auto: use an input file with a name different than reconstruction.input
finemarine121 -batch -script probes2tecplot360.py -auto ./my_input.txt -print
l -vtk: convert the probes to vtu and vtm file formats wich can be open in Paraview.
l -vtk_standard=LEGACY: convert the probes to legacy VTK format.
l -tecplot_format=BINARY/ASCII (default is BINARY)
36.8.19 Wake_flow_pp
A. Description
This tool is essentially dedicated to be used as post-processing data into Cfview but also for
potential codes for extra computations using the wake flow. It allows to interpolate the
computational result to a propeller inflow plane in the wake.
l When applied to a configuration with half domain, it is assumed that the y-mirror plane is y=0.
l Make sure the disk used for the wake flow analysis does not intersect the geometry. If the disk
intersects the geometry, the interpolation algorithm will be much slower.
See Cfview User Manual for details about Plot3D format import.
Where to find it
The tool can be directly launched from the Cfview interface under the Macros menu. In that case,
you can refer to the Wake Flow Tool.
It can also launched in batch as described here below.
Example
Results obtained with the "wake_flow_pp" tool represented using the CFView GUI with mesh
concentration around one and two points applying different stretching factors
FIGURE 36.18
Arguments 2: -rp1=1 -rp2=10 -h=0.1
l It is possible to output the data in preferred format using the user-defined dynamic libraries.
E.g., the following Fortran code will output an *.AWESOME file:
subroutine output_wake_flow(nr,nt,xo,yo,zo,uo,vo,wo,u_a,u_t,u_r,r_1d,angle_1d,D_
propeller,xd,yd,zd,v_ship)
implicit double precision(a-h,o-z)
dimension xo(nr,nt),yo(nr,nt),zo(nr,nt),&
uo(nr,nt),vo(nr,nt),wo(nr,nt),&
u_a(nr,nt),u_t(nr,nt),u_r(nr,nt)
dimension r_1d(*),angle_1d(*)
iunit=20
open(UNIT=iunit,FILE='wake_flow.AWESOME',STATUS='unknown')
write(iunit,*)'Zone I=',nt,'J=',nr
do i=1,nr
do j = 1,nr
write(iunit,'(9e15.6)')&
xo(i,j),yo(i,j),zo(i,j),&
close(iunit)
All double precision arrays except r_1d and angle_1d are 2D arrays with ( nr,nt) as dimension. All
arguments are of (Int) type.
To use this dynamic library copy the text into a '*.f90' file and modify it to have the desired
output. You will find the step by step procedure on how to compile it in the Procedure section.
Once you have the compiled library "isis_dynamic_lib.so", copy it into the computation directory.
When launching the wake flow tool from a shell or from the CFView GUI the library will be
detected and the user-defined output ('wake_flow.AWESOME' in this example) will be written.
The "Wake_flow_pp" tool imports the necessary data from the '.sim' file:
Propeller diameter and ship speed can be specified by the "- D=xxx " and "- V=xxx " options
respectively.
E.g., to obtain the wake flow without any normalization, the User can launch the "wake_flow_
pp" tool with the "-D=1 -V=1" parameters set. Other data will be imported directly from the
'.sim' file.
2. If no actuator disk is defined in the '.sim' file, the tool will ask for the following input:
l Center of the wake flow plan: X, Y and Z coordinates of the actuator disk center. It will be
the center of the wake flow plane;
l Inner and outer radius of the propeller: inner and outer radius of the wake flow plane;
l Propeller diameter
l Normal vector of the wake flow plan (pointed towards the wake): X, Y and Z components
of the normal vector of the wake flow plane;
l Distance of the wake flow plane to the propeller: distance between the center of the
actuator disk and the wake flow plane;
l Number of points in radial direction
l Number of points in tangential direction
These two parameters (Number of points in radial and tangential directions) define the
cylindrical mesh that will be used to interpolate and represent the results. Their default values
correspond to the minimum mesh size recommended in Hexpress for an actuator disk.
Propeller diameter and the reference velocity are used in this case for normalization only.
"PROPELLER CODE" option can be also specified in the '.sim' file (see the "Propeller code
coupling (ad_propeller_code.f90)" (p. 429) section for details).
For this case, the wake flow will be interpolated in front of the propeller at the distance
prescribed in the '.sim' file. Otherwise, the wake flow is interpolated at the propeller plane.
This tool's description is still present for backward compatibility. Since the post- processing
management has been completely revisited, a new tool has been created, called "probes2cfview".
Introduction
This python script, stored in "_ data/cfview/" folder from the installation directory, allows to
reconstruct an unsteady solution, readable within Cfview starting from all intermediately saved
probes computed by the Fine Marine flow solver into readable solution files for Cfview. The key
Limitations
l All the probes should be saved at the same interval (both iteration and time intervals are
supported),
l "Time Label" in Cfview will give you the index of the probes list and not the actual value of
the time step,
l A restart in a different computation cannot be postprocessed. As a possible workaround, one
can restart in the same computation folder (the duplicate option can also used to keep an
intermediate backup).
Requirements
...
> Specify computation path:
1: Path: /user/local/project/project_computation_1/ (default)