-
Notifications
You must be signed in to change notification settings - Fork 53
Description
Description:
I am using the cfdem-pfm version of CFDEMcoupling. I noticed that when using the virtualMassForce model, the calculated force and acceleration are consistently zero in the probe logs, even though the Cadd (via Felderhof correction) is computed correctly.
Evidence (Probe Log):
index time || vectorData: virtualMassForce acceleration || scalarData: Cadd ...
23261 115.02 || 0 0 0 0 0 0 || 0.646347 ...
23793 115.02 || 0 0 0 0 0 0 || 0.640254 ...
23799 115.02 || 0 0 0 0 0 0 || 0.640118 ...
Identified Issues in virtualMassForce.C:
Variable Mismatch (Cadd vs Cadd_):
When useFelderhof is set to true, a local variable 'scalar Cadd' is calculated. However, the final force calculation formula incorrectly uses the class member variable 'Cadd_' (the constant value from the dictionary).
Location: Around line 272
Current code:
virtualMassForce = Cadd_ * rho * Vs * DDtUrel;
Suggested fix:
virtualMassForce = Cadd * rho * Vs * DDtUrel;
Local Scoping/Assignment Issue (ddtUrel vs DDtUrel):
When both splitUrelCalculation and useUs are false, the relative acceleration is calculated as a local variable 'ddtUrel'. This value is never assigned back to the 'DDtUrel' variable, which was initialized to zero and is used for the final force calculation.
Location: Around line 229
Problem: The calculated 'ddtUrel' is lost because it is not passed to the variable 'DDtUrel' used in the force equation.
Suggested Fix for Point 2:
Modify the block as follows:
if(haveUrelOld_)
{
ddtUrel = (Urel-UrelOld)/dt;
DDtUrel = ddtUrel; // Crucial: assign local result to the force-calculation variable
}