    

 ## On this page

  

 

 # Class HydroDynamicAPI

 Last update: 16.07.2025 

Namespace: [VM.API.Pre.Links](VM.API.Pre.Links.md)  
Assembly: VM.API.Pre.Links.dll

This class implements APIs for hydro dynamic.

```csharp
public static class HydroDynamicAPI

```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) ← [HydroDynamicAPI](VM.API.Pre.Links.HydroDynamicAPI.md)

#### Extension Methods

[LinkPropertyItemCache.GetLinkProperties(object, LinkPropertyType)](VM.Models.Pre.Cache.LinkPropertyItemCache.md#VM_Models_Pre_Cache_LinkPropertyItemCache_GetLinkProperties_System_Object_VM_Models_Pre_LinkPropertyType_), [LinkPropertyItemCache.GetLinkPropertiesAndValues(object, LinkPropertyType)](VM.Models.Pre.Cache.LinkPropertyItemCache.md#VM_Models_Pre_Cache_LinkPropertyItemCache_GetLinkPropertiesAndValues_System_Object_VM_Models_Pre_LinkPropertyType_), [LinkPropertyItemCache.GetLinkedObjects&lt;T&gt;(object, LinkPropertyType)](VM.Models.Pre.Cache.LinkPropertyItemCache.md#VM_Models_Pre_Cache_LinkPropertyItemCache_GetLinkedObjects__1_System_Object_VM_Models_Pre_LinkPropertyType_)

## Methods

### CreateHydroForce(SubSystemDocument, Obj, Obj, IEnumerable&lt;Obj&gt;, string)

```csharp
[NotNullObj(new string[] { "baseWater", "hullBody" })]
[MatchTypeObj(new object[] { "baseWater", typeof(IWater), "hullBody", typeof(IConnectable) })]
public static Obj CreateHydroForce(this SubSystemDocument document, Obj baseWater, Obj hullBody, IEnumerable<Obj> actionEntities = null, string name = "")

```

#### Parameters

`document` SubSystemDocument

`baseWater` Obj

`hullBody` Obj

`actionEntities` [IEnumerable](https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)&lt;Obj&gt;

`name` [string](https://learn.microsoft.com/dotnet/api/system.string)

#### Returns

Obj

### CreateMasslessTrackLink(SubSystemDocument, Obj, Obj, IEnumerable&lt;PathData&gt;, ExpressionValueVariable?, ExpressionValueVariable?, string)

Create .

```csharp
[NotNullObj(new string[] { "baseEntity", "hullMarker" })]
[MatchTypeObj(new object[] { "baseEntity", typeof(IContactableRigid3D), "hullMarker", typeof(IMarker) })]
[NotNull(new string[] { "paths" })]
public static Obj CreateMasslessTrackLink(this SubSystemDocument document, Obj baseEntity, Obj hullMarker, IEnumerable<PathData> paths, ExpressionValueVariable? thickness = null, ExpressionValueVariable? width = null, string name = "")

```

#### Parameters

`document` SubSystemDocument

The document to create the massless track link.

`baseEntity` Obj

The base entity.

`hullMarker` Obj

The hull marker.

`paths` [IEnumerable](https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)&lt;[PathData](VM.API.Pre.Links.PathData.md)&gt;

The path information.

`thickness` ExpressionValueVariable?

The thickness.

`width` ExpressionValueVariable?

The width.

`name` [string](https://learn.microsoft.com/dotnet/api/system.string)

The name of the . If empty, default name starts with 'MTL\_' will be generated and used.

#### Returns

Obj

The new  object that is created by this API.

#### Exceptions

[ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception)

Will be thrown if 'document', 'baseEntity', 'hullMarker' are null.

[ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception)

Will be thrown if 'paths' is null.

[ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception)

Will be thrown if type of 'baseEntity' is not .

[ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception)

Will be thrown if type of 'hullMarker' is not .

[ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception)

Will be thrown if 'thickness', 'width' value equal to or less than 0.

[ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception)

Will be thrown if type of 'Marker' of paths is not .

[ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception)

Will be thrown if type of 'WindingRadius' of paths value equal to or less than 0.

### CreateMultiMasslessTrackLink(SubSystemDocument, IEnumerable&lt;Obj&gt;, Obj, IEnumerable&lt;PathData&gt;, ExpressionValueVariable?, ExpressionValueVariable?, string)

Create .

```csharp
[NotNullObj(new string[] { "hullMarker" })]
[NotNull(new string[] { "baseEntities", "paths" })]
[MatchTypeObj(new object[] { "hullMarker", typeof(IMarker), "hullMarker", typeof(IMarker) })]
public static void CreateMultiMasslessTrackLink(this SubSystemDocument document, IEnumerable<Obj> baseEntities, Obj hullMarker, IEnumerable<PathData> paths, ExpressionValueVariable? thickness = null, ExpressionValueVariable? width = null, string name = "")

```

#### Parameters

`document` SubSystemDocument

The document to create the massless track link.

`baseEntities` [IEnumerable](https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)&lt;Obj&gt;

The base entities.

`hullMarker` Obj

The hull marker.

`paths` [IEnumerable](https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)&lt;[PathData](VM.API.Pre.Links.PathData.md)&gt;

The path information.

`thickness` ExpressionValueVariable?

The thickness.

`width` ExpressionValueVariable?

The width.

`name` [string](https://learn.microsoft.com/dotnet/api/system.string)

The name of the . If empty, default name starts with 'MTL\_' will be generated and used.

#### Exceptions

[ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception)

Will be thrown if 'document', 'baseEntities', 'hullMarker' are null.

[ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception)

Will be thrown if 'paths' is null.

[ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception)

Will be thrown if type of Obj of 'baseEntities' is not .

[ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception)

Will be thrown if type of 'hullMarker' is not .

[ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception)

Will be thrown if 'thickness', 'width' value equal to or less than 0.

[ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception)

Will be thrown if type of 'Marker' of paths is not .

[ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception)

Will be thrown if type of 'WindingRadius' of paths value equal to or less than 0.

### CreateSoilInteraction(SubSystemDocument, Obj, IEnumerable&lt;Obj&gt;, string)

Create .

```csharp
[NotNullObj(new string[] { "baseEntity" })]
[MatchTypeObj(new object[] { "baseEntity", typeof(IContactableRigid3D) })]
public static Obj CreateSoilInteraction(this SubSystemDocument document, Obj baseEntity, IEnumerable<Obj> actionEntities, string name = "")

```

#### Parameters

`document` SubSystemDocument

The document to create the soil interaction.

`baseEntity` Obj

The base entity.

`actionEntities` [IEnumerable](https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)&lt;Obj&gt;

The action entities.

`name` [string](https://learn.microsoft.com/dotnet/api/system.string)

The name of the . If empty, default name starts with 'SoilInteraction\_' will be generated and used.

#### Returns

Obj

The new  object that is created by this API.

#### Exceptions

[ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception)

Will be thrown if 'document', 'baseEntity' are null.

[ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception)

Will be thrown if type of 'baseEntity' is not .

[ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception)

Will be thrown if item type of 'actionEntities' is not .

### CreateThrustForce(SubSystemDocument, Obj, Obj, Vector, Vector, string)

```csharp
[NotNullObj(new string[] { "baseWater", "body" })]
[MatchTypeObj(new object[] { "baseWater", typeof(IWater), "body", typeof(IConnectable) })]
[NotZeroMagnitude(new string[] { "thrustingAxis" })]
public static Obj CreateThrustForce(this SubSystemDocument document, Obj baseWater, Obj body, Vector position, Vector thrustingAxis, string name = "")

```

#### Parameters

`document` SubSystemDocument

`baseWater` Obj

`body` Obj

`position` Vector

`thrustingAxis` Vector

`name` [string](https://learn.microsoft.com/dotnet/api/system.string)

#### Returns

Obj

### CreateWater(SubSystemDocument, Obj, Vector, Vector, Vector, ExpressionValueVariable?, ExpressionValueVariable?, ExpressionValueVariable?, string)

Create .

```csharp
[NotNullObj(new string[] { "body" })]
[MatchTypeObj(new object[] { "body", typeof(IConnectable) })]
[NotZeroMagnitude(new string[] { "axisZ", "axisX" })]
public static Obj CreateWater(this SubSystemDocument document, Obj body, Vector position, Vector axisZ, Vector axisX, ExpressionValueVariable? lengthInXAxis = null, ExpressionValueVariable? widthInYAxis = null, ExpressionValueVariable? depthOfDeepWater = null, string name = "")

```

#### Parameters

`document` SubSystemDocument

The document to create the water.

`body` Obj

The body.

`position` Vector

The position.

`axisZ` Vector

The z axis.

`axisX` Vector

The x axis.

`lengthInXAxis` ExpressionValueVariable?

The length in x axis.

`widthInYAxis` ExpressionValueVariable?

The width in y axis.

`depthOfDeepWater` ExpressionValueVariable?

The depth of deep water.

`name` [string](https://learn.microsoft.com/dotnet/api/system.string)

The name of the . If empty, default name starts with 'Water\_' will be generated and used.

#### Returns

Obj

The new  object that is created by this API.

#### Exceptions

[ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception)

Will be thrown if 'document', 'baseEntity' are null.

[ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception)

Will be thrown if type of 'baseEntity' is not .

[ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception)

Will be thrown if type of 'actionEntities' is not .

[ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception)

Will be thrown if the magnitude of 'axisZ'.

[ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception)

Will be thrown if the magnitude of 'axisX'.

[ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception)

Will be thrown if 'axisZ' is equal to 'axisX'.