DPM Concentration Fields — Mass and Number Quantities in ANSYS Fluent
#+CATEGORY: cfd
#+TAGS: DPM concentration number-density exposure quantification
#+MATURITY: growing
DPM Concentration Fields :: Mass Concentration, Number Density, and Quantification
This page covers the detailed computation, visualization, and interpretation of DPM concentration fields in ANSYS Fluent 2024 R1. It focuses on the difference between mass concentration and number density, conversion between them, breathing-zone analysis, and health-guideline comparison. Target application: shisha PM2.5 simulation.
The Two Concentration Variables
Fluent computes two particle concentration fields from DPM results:
| Variable | Symbol | Units | Definition |
|---|---|---|---|
| DPM Concentration | $C_m$ | kg/m^3 | Mass of particles per unit volume |
| DPM Number Density | $C_n$ | 1/m^3 | Number of particles per unit volume |
How Fluent computes $C_m$: For each cell $i$ with volume $V_i$: $$C_{m,i} = \frac{1}{V_i} \sum_{j \in \text{cell } i} \dot{m}_j \cdot \tau_j$$ where $\dot{m}_j$ is the mass flow rate of parcel $j$ and $\tau_j$ is the time parcel $j$ spends in cell $i$.
For steady tracking, $\tau_j = \Delta s_j / |u_j|$ where $\Delta s_j$ is the path length in the cell and $u_j$ is the parcel velocity.
How Fluent computes $C_n$: $$C_{n,i} = \frac{1}{V_i} \sum_{j \in \text{cell } i} \dot{N}_j \cdot \tau_j$$ where $\dot{N}_j$ is the number flow rate of parcel $j$ (parcels per second).
Conversion between mass and number: For monodisperse particles of diameter $d_p$ and density $\rho_p$: $$C_n = \frac{C_m}{\rho_p \cdot \frac{\pi}{6} d_p^3}$$
For polydisperse (size distribution), the conversion requires the full size distribution: $$C_n = \int \frac{C_m(d)}{\rho_p \cdot \frac{\pi}{6} d^3} \, d(d)$$
Fluent handles this internally when you switch between the two display variables. The conversion is approximate if the parcel size distribution in a cell differs significantly from the injection distribution.
Contour Visualization
Mass concentration contours: 1. Graphics and Animations > Contours > Settings... 2. Contours of: DPM > DPM Concentration 3. Surfaces: select the surface (plane, wall, or iso-surface) 4. Filled: ON 5. Levels: 20 6. Click Display
Number density contours: 1. Same procedure, but select DPM > DPM Number Density
Log-scale contours: Concentration fields often span orders of magnitude (high near injection source, low far away). Use logarithmic scaling to reveal structure: 1. In the Contours dialog, click Options... 2. Under Contour Options, set Range to /Auto (Log)= 3. Alternatively, create a custom expression: ``` ; Using TUI to define log-concentration define/expressions "log-conc" "log10(DPM Concentration)" ```
Clipping extreme values: If a single cell has very high concentration (e.g., near injection point), it compresses the color scale for the rest of the domain. Use Clip to Range: 1. Set Min and Max manually (e.g., 0 to 1e-4 kg/m^3) 2. Values outside the range are clipped to the min/max color
Breathing-Zone Analysis
The breathing zone is a defined region near a person's mouth and nose where inhaled air is sampled. For shisha PM2.5 analysis, this is the critical region for health exposure assessment.
Define breathing-zone surfaces: 1. Create a horizontal plane at mouth height ($z \approx 0.15$ m above the bowl rim for a seated user) 2. Create a second plane at nose height ($z \approx 0.20$ m) 3. Optionally, create a cylindrical surface at a radial distance of 0.3 m (representing the user's face position)
Extract concentration at breathing zone: Method 1 — Surface integral: 1. Reports > Surface Integrals... 2. Report Type: Area-Weighted Average 3. Field Variable: DPM > DPM Concentration 4. Surfaces: select the breathing-zone plane 5. Click Compute 6. Result: average mass concentration over the plane (kg/m^3)
TUI: ``` report/surface-integrals area-weighted-avg plane-mouth dpm-concentration ```
Method 2 — Volume average: 1. Create a small volume (box or cylinder) around the breathing zone 2. Reports > Volume Integrals... 3. Report Type: Volume Average 4. Field Variable: DPM > DPM Concentration 5. Cell Zones: select the zone containing the breathing volume 6. Result: average concentration in the volume
Method 3 — Point probe: 1. Create a point surface at the mouth location 2. Reports > Surface Integrals... 3. Report Type: Vertex Average 4. Surfaces: select the point surface 5. Result: concentration at that exact point
Health guideline comparison:
| Guideline | PM2.5 Limit | Source |
|---|---|---|
| 24-hour average | 15 $\mu$g/m^3 | WHO 2021 |
| Annual average | 5 $\mu$g/m^3 | WHO 2021 |
| US EPA 24-hour | 35 $\mu$g/m^3 | EPA NAAQS |
| US EPA annual | 9 $\mu$g/m^3 | EPA NAAQS |
| EU 24-hour | 25 $\mu$g/m^3 | EU Directive |
Convert Fluent's $C_m$ (kg/m^3) to $\mu$g/m^3: $$C_{\mu g/m^3} = C_m \times 10^9$$
Number Concentration — When It Matters
Mass concentration is the standard metric for PM2.5 regulations. However, number concentration is more relevant for:
- Ultrafine particle health effects (number drives alveolar deposition)
- Particle counter comparison (CPC, SMPS measure number)
- Multi-component mixtures where one component has small particles but low mass
Computing number concentration from DPM: 1. Display DPM Number Density contours 2. Convert to $\text{particles/cm}^3$ for comparison with instruments: $$C_{n,\text{cm}^{-3}} = C_{n} \times 10^{-6}$$
Size-resolved number concentration: For comparison with SMPS (Scanning Mobility Particle Sizer) data, bin particles by diameter into mobility channels: 1. Sample particle data on a surface (see DPM Sample Files) 2. In Python or MATLAB, bin by diameter: ```python import numpy as np
data = np.loadtxt('sample-outlet.dat') d = data[:, 6] # diameter column (meters) mass_flow = data[:, 9] # mass flow rate (kg/s)
d_particle = 1e-6 # assume representative diameter, or use per-parcel rho_particle = 1200 # kg/m^3 m_single = rho_particle * np.pi/6 * d_particle**3 number_flow = mass_flow / m_single
d_bins = np.logspace(np.log10(0.01e-6), np.log10(10e-6), 30) d_center = np.sqrt(d_bins[:-1] * d_bins[1:]) dN_dlogd, _ = np.histogram(d, bins=d_bins, weights=number_flow)
dlogd = np.log10(d_bins[1:]) - np.log10(d_bins[:-1]) dN_dlogd = dN_dlogd / dlogd
```
Spatial Resolution — Cell Size vs. Parcel Count
DPM concentration fields are cell-averaged quantities. The statistical accuracy depends on the number of parcels crossing each cell.
Rule of thumb: Each cell should have at least 50-100 parcel crossings for a statistically meaningful concentration. Fewer crossings results in noisy, patchy contours.
Diagnosing under-resolved concentration:
- Patchy contours with large cell-to-cell jumps
- Zero-concentration cells in regions where particles should exist
- Large uncertainty in surface-integrated quantities
Increasing statistical convergence: 1. Increase the number of parcels in the injection (10 000 --> 50 000 --> 100 000) 2. Increase the number of tries in stochastic tracking (for turbulent dispersion) 3. For steady tracking: run multiple DPM iterations and check if concentration field stabilizes
Convergence check: 1. Run DPM with 10 000 parcels; save concentration field 2. Run DPM with 50 000 parcels; compare concentration field 3. If the difference is less than 10%, the concentration is converged
Averaging for Steady vs. Transient
| Tracking Mode | Concentration Meaning | Averaging |
|---|---|---|
| Steady | Time-averaged over injection duration | Already time-averaged; no further averaging needed |
| Transient | Instantaneous at each time step | Time-average over multiple time steps for mean field |
For transient DPM: To obtain the time-averaged concentration: 1. Enable Time-Averaged DPM Concentration in the DPM model settings 2. Fluent accumulates concentration at each time step 3. After $N$ time steps: $\langle C_m \rangle = \frac{1}{N} \sum_{n=1}^{N} C_m(t_n)$ 4. Report the time-averaged field via contour or surface integral
TUI: ``` ; Enable time-averaging define/models/dpm/time-averaging on
; Number of time-step samples define/models/dpm/time-averaging interval 5 ```
See Also
- DPM Post-Processing Guide
- DPM Sample Files — Cutting Planes and Iso-Surfaces
- DPM Statistics — Histograms and Residence Time
- DPM Theory -- Governing Equations
- Shisha PM2.5 DPM Case Study