Skip to content

Recovering physical-scale hydrodynamic forces on rigid bodies — advice needed #378

@ismael-pacheco

Description

@ismael-pacheco

To achieve neutral buoyancy of a rigid body in a fluid — whether the body is initialized already submerged or falls into the fluid from above — I need to set the rigid body density to a value significantly higher than the density of the fluid (e.g 7x, 10x). The required density depends on the particle radius used in the simulation.

I have reproduced this behavior with all three available boundaryHandlingMethod options (0: Akinci et al. 2012, 1: Koschier & Bender 2017, 2: Bender et al. 2019).

I am using the NRP fork: https://bitbucket.org/hbpneurorobotics/splishsplash/src/master/

My end goal is to capture hydrodynamic forces and moments (drag, added mass, buoyancy) to compare them against a simplified analytical model of an air/water transition, so it is of interest to me to capture the correct physical scale of those magnitudes.

Scene file

{
	"Configuration": 
	{
		"cameraPosition": [0,6,5],
		"cameraLookat": [0,2,0],
		"particleRadius": 0.05,
		"numberOfStepsPerRenderUpdate": 4,
		"density0": 1000, 
		"simulationMethod": 4,
		"gravitation": [0,-9.81,0], 
		"cflMethod": 1, 
		"cflFactor": 1,
		"cflMaxTimeStepSize": 0.005,
		"maxIterations": 100,
		"maxError": 0.05,
		"maxIterationsV": 100,
		"maxErrorV": 0.1,		
		"stiffness": 50000,
		"exponent": 7,
		"velocityUpdateMethod": 0,
		"enableDivergenceSolver": true,
		"boundaryHandlingMethod": 2
	},
	"Materials": [
		{
			"id": "Fluid",
			"viscosity": 0.01,
			"viscosityMethod": 1,
			"colorMapType": 1,
    "XSPH": {
      "xsph": 1.0,
      "xsphBoundary": 0.0
    }
		}
    
	],
		"RigidBodies": [
		{
			"geometryFile": "../models/UnitBox.obj",
			"translation": [0,3.0,0],
			"rotationAxis": [1, 0, 0],
			"rotationAngle": 0,
			"scale": [2, 6.2, 2],
			"color": [0.1, 0.4, 0.6, 1.0], 
			"isDynamic": false,
			"isWall": true,
			"mapInvert": true, 
			"mapThickness": 0.0,
			"mapResolution": [25,25,25]
		},
{
	  "density": 20000,
	  "geometryFile": "../models/Missile.obj",
	  "translation": [0, 4.5, 0],
	  "rotationAxis": [1, 0, 0],
	  "rotationAngle": -1.57079632679,
	  "scale": [1.0, 1.0, 1.0],
	  "color": [0.8, 0.2, 0.2, 1.0],
	  "isDynamic": true,
	  "isWall": false,
	  "mapInvert": false,
	  "mapThickness": 0.0,
	  "mapResolution": [150,150,150]
	}
	],
	"FluidBlocks": [
		{
			"denseMode": 0,
			"start": [-1, -0.2, -1],
			"end": [1, 4.0, 1]
		}
	]
}


  • Fork / commit: NRP fork, version 2.9.1
  • Pressure solver: DFSPH
  • Particle radius tested:0.25, 0.5
  • Boundary handling methods tested: 0, 1, 2
  • OS / compiler: Ubuntu 20.04
  1. Is there a known correction or recommended procedure to recover physically scaled buoyancy/hydrodynamic forces?
  2. Is the discrepancy attributable to the volume sampling of the rigid body (e.g. boundary particle volume vs. actual mesh volume), and if so, is there a recommended sampling resolution or correction factor?
  3. Are the force/torque outputs reported by the rigid-fluid coupling expected to be in physical units, or do they inherit the same scaling as density0?
  4. Would switching to a different pressure solver (DFSPH vs. IISPH vs. PBF) be expected to change this, or is the effect solver-independent?

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions