Skip to content

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

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions