grokkingstuff Home Blog Projects Wiki Calculators About

DPM Transient (Unsteady) Tracking -- Setup, Time Stepping, Puff Injection, and Pulsatile Flows

#+CATEGORY: cfd

#+TAGS: DPM transient unsteady tracking puff pulsatile time-stepping particle-history

#+MATURITY: growing

DPM Transient Tracking :: Setup, Time Stepping, and Pulsatile Flows

The shisha simulation currently runs steady-state DPM, but a future transient simulation will capture puff dynamics (inhalation/exhalation cycles) and time-dependent concentration fields. This page documents the complete transient DPM workflow for Fluent 2024 R1: activation, time-step selection, injection scheduling, and diagnostic tools.

Steady vs. Transient DPM: What Changes

FeatureSteady TrackingTransient Tracking
--------------------------------------------
Flow fieldFixed (already converged)Evolving each time step
Particle releaseContinuous (all at once)Scheduled (at specified times)
Injection typesSurface, point, file+ Puff, periodic
Time integrationPseudo-time (max steps)Real time (dt per step)
CouplingEvery N iterationsEvery time step
Output = historyFinal position onlyPosition at every dt
Computational costLow10--100x higher

Key distinction

In steady DPM, the time variable is a pseudo-time used for convergence -- it does not correspond to physical time. In transient DPM, each time step is a real physical interval, and particle positions are recorded at each step.

Activating Transient DPM

Step-by-step (Fluent 2024 R1)

1. Continuous phase: switch solver to Transient

2. DPM: enable transient tracking

3. Coupling: for two-way coupling in transient

4. Injections: set release schedule

TUI confirmation

  define/models/discrete-phase/unsteady-tracking yes
  solve/set/time-step 0.001
  solve/dual-time-iterate 50 20     (50 sub-iterations, 20 time steps)

Time Step Selection

The time step must satisfy three constraints:

Constraint 1: Resolve the flow physics

For shisha: =L = 0.1= m, =U = 0.3= m/s, so \Delta t < 0.33 s.

Constraint 2: Resolve the particle response time

For 2.5 um particle, =\rho_p = 1200= kg/m^3, =\mu = 1.8 \times 10^{-5}= Pa s:

=tau_p = 1200 \times (2.5 \times 10^{-6})^2 / (18 \times 1.8 \times 10^{-5}) = 2.3 \times 10^{-4} s=

So \Delta t < 0.23 ms for the particle dynamics to be resolved.

Constraint 3: CFL for particle transport

For =\Delta x_{min} = 0.001= m and =U_p = 1= m/s: \Delta t < 0.001 s.

Recommendation for shisha transient

\Delta tUse case
--------------------
0.001 s (1 ms)Good balance: resolves puff, particle dynamics, and CFL
0.0005 s (0.5 ms)High accuracy for fine particles (< 0.5 um)
0.01 s (10 ms)Acceptable only if particle response time is not critical

Sub-iterations per time step

For implicit solver: 5--20 sub-iterations per time step ensure the nonlinear equations converge within each dt.

  solve/set/discretization-scheme ...  (verify 2nd order)
  solve/dual-time-iterate 20 100       (20 sub-its, 100 time steps)

Injection Scheduling

Steady injection (continuous release)

Release particles at every time step from the start:

Puff injection (finite-duration release)

Release particles for a defined duration, then stop:

Periodic injection (breathing cycle)

For a shisha puff cycle (inhale + exhale):

File injection (prescribed time history)

For arbitrary time-varying injection: 1. Create a DPM sample file at the injection face (from a preliminary run) 2. Use File Injection type with the sample file 3. Set Start Time and Stop Time to define when the file injection is active

Shisha puff schedule example

PhaseDurationInjection
----------------------------
Inhale0--2 sNo injection (clean air drawn through bowl)
Smoke generation2--3 sSurface injection at bowl outlet (mass flow rate = 3 mg/min)
Exhale3--5 sNo injection; smoke disperses and exits through hose
Rest5--7 sNo injection; residual smoke clears
Repeat7--12 sCycle repeats

Particle History Tracking

In transient DPM, Fluent can record the full trajectory of each parcel at every time step.

Enabling history output

  define/models/discrete-phase/sample/trajectory
  solve/set/dpm-trajectory-frequency 1  (record every time step)

Output format

The trajectory file contains one line per parcel per time step:

Analysis

Post-process the trajectory file with Python (NumPy/Pandas) or MATLAB:

Transient Post-Processing

Time-series concentration at a monitor point

1. Create a point surface at the breathing zone 2. Report Definitions > Volume Monitor > DPM Concentration at that point 3. The monitor writes concentration vs. time to a file 4. Plot in Excel, Python, or Fluent's built-in plotter

Animation

1. Graphics > Animation > Playback 2. Object: Contours of DPM Concentration 3. Set frame interval = 10 time steps 4. Play or export as video

Time-averaged concentration

After completing the transient run, use the time-averaging feature:

  solve/set/time-averaging yes

Fluent accumulates time-averaged fields (including DPM concentration) starting from the current time step. Useful for comparing against steady-state predictions.

Coupling Strategy for Transient DPM

Weak coupling (segregated)

At each time step: 1. Solve continuous phase (1 step) 2. Track all particles (1 DPM iteration) 3. Deposit DPM source terms into continuous phase 4. Repeat

Strong coupling (coupled iteration)

At each time step: 1. Solve continuous phase + DPM together in an inner iteration loop 2. Repeat until coupled residuals converge (or max inner iterations reached) 3. Advance to next time step

Strong coupling is necessary when:

For shisha transient

One-way coupling (current steady-state setting) is appropriate. If you add Brownian UDF or thermophoretic force, the DPM sources remain small compared to the flow. Switch to two-way only for validation or if you observe the flow field changing significantly due to particle momentum.

Performance Considerations

FactorImpactMitigation
----------------------------
Small dt (0.001 s)1000x more steps than steadyRun on cluster; parallelize
Stochastic tracking (DRW)10--50 tries per parcelReduce tries to 10 if statistics permit
Two-way coupling every stepContinuous phase must re-solve each stepCouple every 2--5 steps if acceptable
Trajectory recordingLarge disk I/ORecord every 10 steps instead of every step
Many parcels (100,000+)Memory + CPUReduce to 10,000 per injection; use adaptive injection

Parallel DPM (transient)

DPM tracking is embarrassingly parallel once the flow field is known. Fluent distributes parcels across MPI ranks.

  parallel/set/dpm  (set load-balancing method)
  solve/set/dpm-parallel yes

Validation: Transient vs. Steady Comparison

After running the transient case, compare the time-averaged concentration field to the steady-state prediction. If they match within 10--20%, the steady-state approximation is valid for your purposes and you can avoid the 100x cost of transient tracking.

See Also