## 1. Download SimFlow

SimFlow is a general purpose CFD Software

To follow this tutorial, you will need SimFlow free version, you may download it via the following link:

Download SimFlow

## 2. Create Case

Open SimFlow and create a new case named `Boat`

Go to

**New**panelProvide name

*Boat*Click

**Create Case**

## 3. Import Geometry - Boat

Firstly we need to Download GeometryBoat. The geometry will be imported in the same units as it was exported to the STEP format.

Click

**Import Geometry**Select geometry file

`Boat.step`

Click

**Open**

## 4. Preview Geometry - Boat

After importing geometry, it will appear in the 3D window.

Click

**Fit View**to zoom in on the geometry.

## 5. Rotate Geometry - Boat (I)

We will rotate the model about X axis at 90 deg to orient the Z axis vertically.

Expand the

**Options**list for`Boat`

Select

**Rotate**

## 6. Rotate Geometry - Boat (II)

Set the following parameters accordingly

*Axis \({\sf [-]}\)**1**0**0*

*Angle \({\sf [deg]}\)**90*Click

**Rotate**

## 7. Create Geometry - Water

Additionally, to the hull geometry, we will create a box that will be used to indicate the initial water location.

Select

**Create Box**Change geometry name from

`box_1`

to*water*

double click to edit name and press Enter to confirmSet the origin and box dimensions:

*Origin \({\sf [m]}\)**-11**-6**-3*

*Dimensions \({\sf [m]}\)**22**12**2.85*

## 8. Create Geometry - Refinement

We need to refine the mesh near the water surface to increase the accuracy of the results. For this purpose, we will create also a refinement box.

Select

**Create Box**Change geometry name from

`box_1`

to*refinement*Set the origin and box dimensions

*Origin \({\sf [m]}\)**-11**-6**-0.35*

*Dimensions \({\sf [m]}\)**22**12**0.4*

## 9. Meshing Parameters - Boat

In order to create the mesh, we need to specify geometries options for the meshing process.

Go to

`Hex Meshing`

panelSelect

`Boat`

geometryEnable

**Mesh Geometry**Enable

**Create Boundary Layer Mesh**Set

`Refinement`

to`Min 4`

`Max 4`

Set

`No. of Layers`

to*4*

## 10. Meshing Parameters - Refinement

Click on the

`refinement`

geometryEnable

**Refine Geometry**Set the refinement

`Level`

to*2*

## 11. Base Mesh - Domain

Now, we will define the base mesh. The box geometry determines the background mesh domain. The model is symmetrical with respect to the XZ plane and we can take advantage of this fact. Using box dimensions we will choose only half of the required domain.

Go to

`Base`

tabSet the size of the base mesh:

*Min \({\sf [m]}\)**-10**0**-2*

*Max \({\sf [m]}\)**10**5**1*Define the number of divisions

*Division**55**14**13*

## 12. Base Mesh - Boundaries

We need to assign individual names to each side of the base mesh. This will allow us to apply different conditions to each side.

Define boundary names and types accordingly

`X-`

`inlet`

`patch`

`X+`

`outlet`

`patch`

`Y-`

`symmetry`

`symmetry`

`Y+`

`symmetry`

`symmetry`

`Z-`

`bottom`

`wall`

`Z+`

`top`

`patch`

## 13. Material Point

Material Point tells the meshing algorithm on which side of the geometry the mesh is to be retained. Since we are considering fluid outside the boat, we need to place the material point outside the geometry.

Go to

`Point`

tabSpecify location inside base mesh, but outside boat geometry

*Material Point**0**2**0*

You can specify the point location from the 3D view. Hold the Ctrl key and drag the arrows to the destination. |

## 14. Meshing Settings

We can define the count of the buffer cells between refinement levels.

This parameter determines the width of the transition zone between refined and background mesh. Lowering this parameter will reduce the overall cells count.

Go to

`Mesh`

tabGo to

`Settings`

Set

`Cells Between Levels`

to*3*

## 15. Start Meshing

In this step we will initiate the meshing process.

In the meshing panel you may indicate how many CPUs would you like to use for this process. Please note that if you are using SimFlow free version you may only use serial meshing, and you may not create meshes larger than 200'000 nodes.

If you would like to test full version Request 30-day Trial

Go to

`CPU`

tabPress the

**Mesh**button to start meshing process

## 16. Mesh

After the meshing process is finished, the mesh will appear in the graphics window.

## 17. Select Solver - Inter

To analyze water behaviour we will use Inter (interFoam) solver. This solver is designed to model two-phase flow with interface capturing capabilities.

Go to

`SETUP`

panelSelect

**Transient**filterSelect

`Multiphase`

model filterPick

`Inter`

(interFoam) solver from the list**Select**solver

## 18. Dynamic Mesh (I)

The dynamic mesh can be used for a simulation where the shape of the domain is changing. In our case, we will use dynamic mesh capabilities paired with six degrees of freedom (6 DOF) solver.

The 6DOF solver will predict the trajectory of a moving body using the aero or hydrodynamic forces and inertial properties assigned to a given boundary. During the analysis, the mesh will adjust to the new position of the body by moving nodes in the deformation region defined by the distance from the body.

Go to

`Dynamic Mesh`

panelChoose

`Dynamic Mesh Type`

**6 DoF**Select the

`Boat`

geometrySet the

`Inner Distance [m]`

to*0.2*for the deformation regionSet the boat mass properties

*Mass \({\sf [kg]}\)**120*

*Center of Mass \({\sf [m]}\)**-1.1**0**-0.1385*

*Mom. Of Inertia \({\sf [kg m2]}\)**100**500**100*Set the

`Relaxation`

to*1*

We use only half of the mass because of model symmetry |

## 19. Dynamic Mesh (II)

It is possible to constrain boundary motion. We will allow the boat to move only in the Z-axis direction and rotate about Y-axis. We will also enable damping to improve the stability of the calculation.

2 Set the constraints accordingly

`Translation Constraint`

`Line`

`Rotation Constraint`

`Axis`

*Axis \({\sf [-]}\)**0**1**0*3 Set the restraints accordingly

`Linear Restraint`

`Damper`

*Damping \({\sf [Ns/m]}\)**30*

`Angular Restraint`

`Damper`

*Damping \({\sf [Nms/m]}\)**30*

## 20. Turbulence

For the purpose of this tutorial, we will model the turbulence phenomenon using the k-ω SST model.

Go to

`Turbulence`

panelSelect

`RANS`

turbulence formulationSelect

*\(k {-} \omega \; SST\)*model

## 21. Transport Properties - Water

In order to define water and air, we need to go to the transport properties panel, and use predefined fluids properties from the material database.

Go to

`Transport Properties`

panelChange phase name from

`phase1`

to*water*Open

**Material Database**Pick up

`water`

from the listClick

**Apply**

## 22. Transport Properties - Air

Repeat previous step for phase2 using air properties.

To assign material to the domain, the phase fraction parameter \(\alpha_{phase}\) is used. The parameter determines the proportion of each fluid in the domain.

The value of phase fraction varies in range from 0 to 1 where \(\alpha_{phase 1}=1\) means that the whole domain is filled only with the phase1, while \(\alpha_{phase 1}=0\) means that the domain is filled with the second phase.

We will assign \(\alpha_{phase}\) parameter in the later steps.

Change phase name from

`phase2`

to*air*Open

**Material Database**Pick up

`air`

from the listClick

**Apply**

## 23. Solution - PIMPLE

For the purpose of the simulation we will change PIMPLE algorithm parameters to increase stability:

Go to

`Solution`

panelSwitch to the

`PIMPLE`

tabIncrease

`Outer Correctors`

to*3*Increase

`Non-Orthogonal Correctors`

to*2*Uncheck

`Momentum Predictor`

for stability

## 24. Simulation Parameters

The velocity magnitude will be used in multiple simulation settings. It is handy to parameterize velocity value to be easily accessible in the future.

Go to

`Parameters`

panelDefine new parameter

*Name**U*

*Formula**2*Press

`Enter`or**Create Parameter**buttonThe newly created parameter will be shown in the parameters list

## 25. Boundary Conditions - Bottom

In our simulation, the frame of reference will be associated with the boat and therefore we will simulate a fluid flow around the stationary boat. In order to properly represent ground in the boat frame of reference, we will enforce velocity at the bottom mesh boundary.

Go to

`Boundary Conditions`

panelSelect the

`bottom`

boundaryChange the

`Type`

of velocity to the`Fixed Value`

Set the

*Value \({\sf [m/s]}\)**U**0**0*

## 26. Boundary Conditions - Inlet (Flow)

To model the inlet to the domain, we will assign the Inlet Velocity character and use the value of the "U" parameter as the inlet velocity value.

Select the

`inlet`

boundarySet the

**Velocity Inlet**characterSet the velocity

`Reference Value [m/s]`

to*U*

## 27. Boundary Conditions - Inlet (Phases)

In addition to setting the flow conditions, selecting the inlet phase is also necessary.

Initially, we will specify pure air as the inlet phase. The water phase at the inlet will be patched later on by the water box geometry. Patching operation will modify the value parameter in a certain region, and effectively we will get an inlet of two phases from a single boundary.

Switch tab to

`Phases`

Set the type to

`Fixed Value`

## 28. Boundary Conditions - Outlet (Flow)

For the outflow boundary we will use Outlet Phase Mean Velocity condition. This boundary condition adjusts the velocity for the given phase to achieve the specified mean velocity.

Select the

`oulet`

boundarySet the

`Outflow`

characterSwitch tab to

`Flow`

Set the velocity type and mean value accordingly

`U`

`Type`

`Outlet Phase Mean Velocity`

`U`

*Umean \({\sf [m/s]}\)**U*

After you change flow boundary condition, the character will switch form Outflow to Custom. Do not change it back to Outflow afterwards. |

## 29. Boundary Conditions - Outlet (Phases)

Switch tab to

`Phases`

3 Set the \(\alpha_{water}\) parameters accordingly

*\(\alpha_{water}\)*`Type`

`Variable Height`

*\(\alpha_{water}\)**Upper Bound \({\sf [-]}\)**1*

## 30. Initial Conditions - Basic

Before we start simulation, we need to define the initial state.

We will use parameter U to initiate constant velocity in the domain. The domain will initially be filled entirely with air, as indicated by a phase fraction \(\alpha_{air}=0\).

Go to

`Initial Conditions`

panelSet the velocity to

*U**0**0*

## 31. Initial Conditions - Patch

Using the `water`

geometry, we will overwrite the phase fraction value inside it. We will set the \(\alpha_{water}\) to `1`

to fill the patched geometry with the water.

Switch to

`Patch`

tabEnable initialization on

`water`

geometryExpand

**Fields**listSelect

*\(\alpha_{water}\)*fraction for initializationSet initial value of \(\alpha_{water}\) to

*1*Apply patch for

`Both`

cells and faces. This will override values at boundaries as well.

## 32. Monitors - Sampling

During calculation, we can observe intermediate results on a section plane.

To add sampling data on a plane we need to define plane properties and also select fields that will be sampled. Note that runtime post-processing can only be defined before starting calculations and can not be changed after the simulation has started.

Go to

`Monitors`

panelSwitch to

`Sampling`

tabSelect

**Create Slice**Set the slice normal vector align y-axis

*Normal \({\sf [-]}\)**0**1**0*Expand

**Fields**listCheck the velocity

`U`

Check the water phase

*\(\alpha_{water}\)*

## 33. Monitors - Forces

Additionally, we will observe forces acting on the boat boundary.

Switch to

`Forces`

tabExpand

`Monitored Boundaries`

list and check`Boat`

## 34. Run - Time Control

For any simulation, it is very convenient to let the solver automatically determine the proper time step value. To use this option we need to define time step constraints by providing the initial time step(adjusted by the solver during computations) and maximal time step value. Rest of the parameters we can leave the default.

Go to

`RUN`

panelSet the

`Simulation Time [s]`

to*10*Change

`Time Stepping`

to`Automatic`

Set initial and maximum timesteps (solver will start computation with the initial value and adjust it in the next iterations not exceeding the maximum value)

*Initial \(\Delta t\) \({\sf [s]}\)**1e-04*

*Max \(\Delta t\) \({\sf [s]}\)**1e-02*

## 35. Run - Output

We can control how often results should be saved on the hard drive. Only this data will be available for postprocessing.

Switch to

`Output`

tabSet the

`Write Control`

`Interval [s]`

to*0.05*

## 36. Run - CPU

The calculation of this simulation is very time-consuming, due to the dynamic mesh and 2 phase model. To speed up the calculation process we recommend using at least 8 cores for this tutorial.

If you are using SimFlow free version (which allows only for 2 CPUs) you can use the contact form to Request 30-day Trial

Estimated computation time for 2 CPUs is over 5 hours.

Switch to

`CPU`

tabUse

`parallel`

modeIncrease the

`Number of processors`

Click

**Run Simulation**button

## 37. Postprocessing - ParaView

Once the computations have been completed, we can perform advanced visualization of the results using ParaView.

Go to

`POSTPROCESSING`

panelClick on

**Run ParaView**

## 38. ParaView - Load Results

Load the results into the program.

Turn on

**Toggle advanced properties**Uncheck option

`Decompose polyhedra`

Click

**Apply**to load results into ParaView

## 39. ParaView - Dynamic mesh

We will look at the dynamic mesh displacement.

As we can see, the boat can move along Z-axis and rotate around Y-axis. The mesh at a distance of 0.2 m from the boat is rigid and moves together with a boat. The mesh at the distance from 0.2 m to 1 m from the boat is able to move. Further than 1 m from the boat, the mesh is non-deformable.

Select

`Surface with Edges`

from the representation toolbar listSelect

`pointDisplacement`

from the variable listClick

**Rescale to Data Range**Play with an animation buttons to track the results of analysis

## 40. ParaView - Reflect the results (I)

During the simulation, only one half of the fluid domain was used. However, during the post-processing stage, we can replicate the second half of the domain.

To produce a visualization that is symmetrical, we will reflect the results across the plane of symmetry.

Select the case

`Boat.foam`

Extend the list of

`Filters`

from the top menuGo to

`Alphabetical`

Select

`Reflect`

from the list

## 41. ParaView - Reflect the results (II)

Choose the plane of the reflection

`Y min`

Click

**Apply**

## 42. ParaView - Water Surface

We will focus on the water-air interface behaviour and observe the velocity map.

Select

**Clip**from top menuChange the clip type to

`Scalar`

Select

`alpha.water`

from the scalar listClick

**Refresh**Make sure

`Invert`

option is uncheckedClick

**Apply**Select the velocity

`U`

from the listClick on

**Rescale to Custom Data Range**Set the range from

*0*to*3*Confirm by clicking

**Rescale**

## 43. ParaView - Boat Geometry (I)

To display the boat geometry, we will read the result file once again and load only the boat boundary.

Select

**Open**from top menuChoose the

`Boat.foam`

file from case folderPress

**OK**

## 44. ParaView - Boat Geometry (II)

Uncheck

`internalMesh`

from the`Mesh Regions`

Check the

`Boat`

Press

**Apply**

## 45. ParaView - Boat Geometry (III)

Similarly as before, we will reflect the boat geometry.

Select the new case name

`Boat.foam`

, go to`Filters`

, extend`Alphabetical`

and select`Reflect`

from the listChoose the plane of reflection

`Y min`

Click

**Apply**Select the

`Solid Color`

from the list

## 46. ParaView - Results

Play with animation buttons to investigate the time history of the flow.