grokkingstuff Home Blog Projects Wiki Calculators About

DPM Troubleshooting -- Common Errors, Convergence Failures, and Diagnostic Procedures

#+CATEGORY: cfd

#+TAGS: DPM troubleshooting convergence errors diagnosis particle-lost incomplete stuck

#+MATURITY: growing

DPM Troubleshooting :: Common Errors, Convergence, and Diagnostics

This page collects the most frequently encountered DPM problems, their symptoms, root causes, and fixes. Organized by category: particle tracking failures, convergence issues, visualization problems, and UDF compilation errors.

Particle Tracking Failures

"Particle stuck" or "Particle path aborted"

Symptom: DPM Summary shows a large number of "incomplete" or "aborted" particles.

Root causes and fixes:

CauseDiagnosticFix
------------------------
Max Steps too lowCheck DPM Summary: "incomplete" count is highIncrease Max Steps from 500 to 5000+
Particle timestep too largeParticles skip cells; Fluent reports "particle lost"Reduce Lagrangian time step factor (0.1--0.5 of cell transit time)
Reversed flow at pressure outletParticles re-enter domain through outletEnable "Prevent Reversed Flow" or add a buffer zone
Very low velocity in regionParticles stall and never leave a cellAdd small seeding velocity or check continuous-phase convergence
Singular mesh (zero-volume cell)Particle velocity calculation failsFix mesh quality (check orthogonal quality > 0.1)
Injection inside solid regionAll particles immediately abortCheck injection coordinates against domain geometry

Fix: Increase max steps via TUI

  solve/set/dpm-iterations 10000
  define/models/discrete-phase/max-steps 5000

"Particle lost" error

Symptom: Fluent prints Warning: particle path lost for injection-X, particle Y and terminates DPM.

Root causes: 1. Large cell-size jump (particle moved from a small cell to a very large cell) 2. Negative cell volume in mesh 3. Particle velocity is NaN (usually from a UDF bug)

Fixes:

Convergence Issues

DPM source terms oscillate

Symptom: After enabling two-way coupling, residuals of the continuous phase do not decrease; they oscillate or diverge.

Root causes and fixes:

CauseFix
------------
Source term too large for under-relaxationReduce DPM under-relaxation factor from 1.0 to 0.5 or 0.3
Insufficient DPM iterations per coupling loopIncrease DPM iterations per coupling step
Coupling frequency too aggressiveCouple every 20 iterations instead of every 1
Mass loading ratio > 1Consider using coupled (strong) coupling iteration

TUI commands for under-relaxation

  solve/set/dpm-under-relaxation 0.5
  solve/set/dpm-iterations 500
  solve/set/discrete-phase/coupling-interval 20

Continuous phase diverges after DPM coupling

Symptom: Continuous phase converges well without DPM; after enabling coupling, residuals spike.

Fixes (in order): 1. Reduce DPM under-relaxation to 0.3 2. Check that DPM mass source is small relative to throughflow 3. Ensure continuous phase is well-converged BEFORE starting DPM coupling 4. Start with one-way coupling, confirm DPM converges, then enable two-way coupling gradually

Number of DPM iterations needed

ScenarioRecommended iterations
--------------------------------
One-way, simple trajectories100--500
One-way, stochastic tracking (DRW)500--2000
Two-way, dilute500--2000 per coupling step
Two-way, moderate loading1000--5000 per coupling step
Coupled (strong) iteration5--10 strong iterations

Visualization Problems

Particle tracks all go in a straight line

Cause: DRW not enabled; particles follow deterministic mean flow only.

Fix: Models > Discrete Phase > Physical Models > Enable Stochastic Tracking with Number of Tries = 10--20.

DPM Concentration contour is zero everywhere

Possible causes:

CheckCommandWhat to look for
-----------------------------------
DPM SummaryReport > DPM SummaryAre particles reaching the domain?
Injection activeGraphics > Particle TracksDo tracks exist?
Cell volumeReport > Cell VolumeAre cells near-zero?
Concentration scalingContours > DPM Concentration > OptionsAuto-range might miss small values; set manual range

Concentration seems unrealistic (too high or too low)

Diagnostic: Compute expected concentration analytically.

For a surface injection of mass flow rate \dot{m}_p into a cross-section A with velocity U:

If the simulation gives c that differs by more than a factor of 2, check: 1. Injection flow rate units (kg/s vs. kg/m^2/s) 2. Particle density (wrong density = wrong parcel mass = wrong concentration) 3. Number of parcels (too few = statistical noise)

DPM Summary Diagnostic Table

After running DPM (Report > Discrete Phase > Summary), check:

StatusWhat it meansAction needed?
--------------------------------------
Escaped at outletCorrect for exhaust particlesNo
Trapped at wallsParticle deposited on surfaceNo (unless you expected reflection)
IncompleteExceeded max stepsYes: increase steps or check mesh
EvaporatedDroplet fully evaporatedNo (for droplet type)
AbortedForce or position singularYes: check UDF, mesh, injection

Typical healthy DPM Summary:

If "Incomplete" exceeds 1--2%, track down the cause before trusting results.

UDF Compilation Errors

ErrorCauseFix
-------------------
error C2065: 'P_DIAM' undeclaredMissing #include "dpm.h"Add both udf.h and dpm.h
error C2143: syntax error missing ';'Typo or missing statement terminatorCheck line above error
LNK2019: unresolved externalFunction name mismatchDEFINE_DPM_BODY_FORCE(name, ...): check name matches hook
warning C4715: not all paths return valueConditional without returnEnsure every branch returns a real value
Runtime crash: SIGSEGV at C_T(c,t)Particle not in valid cellAdd guard: if (NULLP(t)) return 0.0;
UDF loads but has no effectHook not connected to injectionModels > DPM > Interaction: select UDF for each relevant field

Performance Issues

DPM run is extremely slow

CauseFix
------------
Too many parcelsReduce parcel count; use more parcels-per-injection but fewer injections
DRW with 100 triesReduce tries to 10--20; use residual convergence to find minimum
Max Steps = 50000 (over-cautious)Set to 5000; only increase if "incomplete" count is high
Small cells in meshUse mesh adaptation or min cell length > 0.1 * particle diameter
Single-processor runEnable parallel DPM (distributed memory)

Memory overflow during DPM

SymptomFix
--------------
Segmentation fault after many DPM iterationsIncrease RAM or reduce parcel count
"Memory allocation failed"Reduce number of DPM iterations per coupling loop
Swap thrashingClose other applications; reduce mesh size

Common Mistakes Checklist

Before trusting DPM results, verify:

See Also