- Prepare the Basic Run Setup (if not already done)
- Open the main Setup Run window.
- Set Total run time (hrs): e.g., 12 or 25 (tutorial uses 25 h for noticeable deposition).
- Set Direction: Fwd (forward).
- Add meteorology: Click Add Meteorology Files and select your file (e.g., oct1618.BIN).
- Click Setup starting locations → define 1 source (e.g., lat 40.0, lon -90.0, height 50 m, emission rate suitable for test).
- Set Pollutant & Deposition (Gas Dry Deposition)
- In main setup → click Pollutant, Concentration Grid, and Deposition setup.
- Under Pollutant: Num=1, select Specie 1.
- Under Deposition: Num=1, select Specie 1 → this opens the Deposition Definition window.
- In Deposition window:
- Particle or Gas: Gas.
- Dry Deposition: Yes.
- Wet Deposition: No.
- Preconfigure: Select I131g (built-in gaseous I-131 example; auto-loads realistic parameters like Vd ~0.006 m/s, molecular weight, Henry's law constants).
- Or manually: Set Vel(m/s) to 0.01 (1 cm/s, tutorial value for strong test).
- Leave other fields default/zero unless needed.
- Click green Save → close window.
- Add Ground Deposition Level to Concentration Grid
- In the same Pollutant, Concentration Grid, and Deposition setup window:
- Under Grids: Num=1 → click radio for Grid 1 (or double-click/label) → opens Definition of Concentration Grid 1.
- In Grid Definition window:
- Num of vertical levels: Change from 1 to 2.
- Height of levels(M Agl): Change to 0 100 (space-separated; 0 first for deposition accumulation, 100 for air concentration layer).
- Optional: Update Center of Lat and Lon to match your source (e.g., 40.0 -90.0).
- Keep spacing/span reasonable (e.g., 0.05 deg, 30 deg span).
- Output grid file name: Keep cdump or change.
- Click green Save → close.
- Run the Model
- Back in main Concentration Setup window → Save.
- Click Run Model (or equivalent button to execute HYSPLIT).
- Wait for completion → open the MESSAGE file in your working directory (text file named MESSAGE):
- Note the final total mass (near end, often in a NOTICE or summary line).
- Compare to initial emitted mass (early in file or from your emission setup: rate × duration).
- Look for vertical mass distribution tables (e.g., %Mass by height layer) — reduced low-level % indicates dry removal to ground.
- Compute % mass lost = (initial - final) / initial × 100. Tutorial expects ~10-14% for Vd=0.01 m/s over longer runs; shorter runs or lower Vd (like 0.006) show less.
- This confirms dry deposition occurred (mass removed from atmosphere).
- Display the Results (Air Concentration + Deposition Footprint)
- Go to Display → Concentration Contours (opens your Concentration Display window).
- Key settings:
- Input File: cdump (or your output name).
- Select Pollutant: All or your species (e.g., I131 / II131).
- Vertical Display: Show Each Level.
- From Bottom Level: 0 (deposition/surface).
- Through Top Level: 100 (air layer).
- Deposition Multiplier: Select Total (shows cumulative/total deposited mass over entire run; critical for seeing the full footprint instead of incremental amounts).
- Keep numeric field 1.0 (unless scaling units).
- Concentration Multiplier: 1.0.
- Uncheck Exposure if checked.
- Contour drawing options: Dyn-Exp (dynamic exponential; best for plumes).
- Label Source Rings: On (shows distance rings around source; set Number=4, Dist=100 km, Center to your source lat/lon).
- Output File: e.g., dry_depo_plot (unique name).
- View On: Checked.
- Click green Execute Display.
- What you'll see (sequence through frames):
- Air concentration frames (at 100 m level): Reduced plume due to deposition loss.
- Final/cumulative frame (level 0 with Total): Colored deposition footprint on ground (accumulated mass deposited as plume passed).
- If blank: Confirm level 0 in grid, Vd > 0, re-run if needed.
Wednesday, March 18, 2026
Hysplit: To test Dry Deposition of Gases in HYSPLIT using a built-in example
Tuesday, February 3, 2026
Matlab: Hysplit Toolkit
- MATLAB Runs the Hysplit model
- Mapping
- Hysplit runs multiple datasets
- Extract the layers from the ARL files
- Construct Fishnet with Raster
- RunHysplit.grids/isentropic
- Bulit-in Function to Extract the Values from NAMS datasets
- Conversion from ERA5 to ARL. 2nd
- Conversion from ERA5-Land GRIB to TIF
- ERA5-Isentropic
Monday, September 29, 2025
Hysplit: CONC.CFG
Breakdown of Parameters in CONC.CFG
The CONC.CFG file is a crucial configuration file that controls advanced settings for the HYSPLIT concentration (dispersion) model. It defines how calculations are performed and what output is generated, complementing the CONTROL file used in your MATLAB script.
Here's a breakdown of the CONC.CFG file structure and parameters:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | &SETUP tratio = 0.75, delt = 0.0, initd = 0, kpuff = 0, khmax = 9999, khinp = 0, numpar = 2500, maxpar = 10000, nbptyp = 1, qcycle = 0.0, efile = '', k10m = 1, kdef = 0, krand = 2, kzmix = 0, kbls = 1, kblt = 0, isot = -99, idsp = 1, wvert = .TRUE., plrise = 1, area = 0, vscale = 200.0, vscales = 5.0, vscaleu = 200.0, hscale = 10800.0, capemin = -1.0, tkemin = 0.001, uratio = 5.873300076, tvmix = 1.00, tkerd = 0.18, tkern = 0.18, kmix0 = 150, kmixd = 0, ninit = 1, ndump = 0, ncycl = 0, pinbc = 'PARINBC', pinpf = 'PARINIT', poutf = 'PARDUMP', messg = 'MESSAGE', vdist = 'VMSDIST', mgmin = 10, conage = 24, gemage = 48, kmsl = 0, kwet = 1, ichem = 0, cpack = 1, cmass = 0, kspl = 1, krnd = 6, frhmax = 3.00, splitf = 1.00, frhs = 1.00, frvs = 0.01, frts = 0.10, dxf = 1.00, dyf = 1.00, dzf = 0.01, / |
Parameter Explanations
Core Simulation Parameters
- tratio = 0.75 - Time step ratio (stability factor). HYSPLIT adjusts its internal time step so a particle/puff doesn't travel more than 75% of a grid cell in one step. Potential values: 0.0 to 1.0 (typically 0.5–0.9). Affects how your pollutant (e.g., SO2) disperses in the atmosphere.
- delt = 0.0 - Fixed time step (minutes). 0.0 means HYSPLIT uses a variable time step controlled by tratio. Potential values: 0.0 (auto) or positive values (e.g., 1.0). Ensures efficient computation for your 48-hour simulation.
- initd = 0 - Particle/puff initialization method. 0 = 3D particle mode (pure Lagrangian, tracks individual particles), 1 = Gaussian horizontal puff, vertical particle, 2 = Top-hat horizontal puff, vertical particle, 3 = Gaussian puff (3D), 4 = Top-hat puff (3D). Suitable for detailed dispersion tracking in your SO2 simulation.
- kpuff = 0 - Horizontal puff growth option. 0 = Linear growth with time, 1 = Growth proportional to square root of time. Ignored since initd = 0. Not applicable in your current setup.
- khmax = 9999 - Maximum duration (hours) for a particle/puff. 9999 means "no limit". Potential values: Positive integers. Matches your 48-hour forward run (param.runTime).
- khinp = 0 - Input flag for puff splitting. 0 = No special input. Typically unused unless puff-splitting files are used. Not relevant unless customizing puff behavior.
Particle and Emission Parameters
- numpar = 2500 - Number of particles or puffs released per emission cycle. Potential values: Positive integers (e.g., 1000–10000). Controls how finely your SO2 emission (param.emissionRate = 1000 kg/hr) is resolved.
- maxpar = 10000 - Maximum total number of particles/puffs allowed. Potential values: Positive integers (e.g., 1000–100000). Ensures your simulation doesn’t crash due to too many particles.
- nbptyp = 1 - Number of bytes per particle in the output file (affects PARDUMP file size). Potential values: 1, 2, or 4. Affects the PARDUMP file if used (not in your script’s output).
- qcycle = 0.0 - Emission cycle time (hours). 0.0 = Continuous emission during emissionHours. Potential values: 0.0 or positive values (e.g., 1.0 for hourly pulses). Matches your 1-hour emission event (param.emissionHours = 1).
- efile = '' - Path to an emission input file for complex source configurations. Potential values: Empty string ('') or a file path. Not needed since your script specifies param.emissionRate.
Turbulence and Boundary Layer Parameters
- k10m = 1 - Use 10m wind data for turbulence calculations. Potential values: 0 (no), 1 (yes). Enhances accuracy near your 10m emission altitude (alt = 10).
- kdef = 0 - Horizontal turbulence deformation method. 0 = Based on velocity variances, 1 = Based on deformation field. Suitable for your general-purpose SO2 dispersion.
- krand = 2 - Random number generator for turbulence. Potential values: 1, 2, or 3. 2 is robust for your run.
- kzmix = 0 - Vertical mixing method. 0 = Use meteorology data, 1 = Scale by boundary layer depth. Matches your use of GDAS1 files in metPath.
- kbls = 1 - Boundary layer stability method. 0 = Use input meteorology, 1 = Compute from heat and momentum fluxes. Enhances realism for your SO2 dispersion.
- kblt = 0 - Boundary layer turbulence parameterization. 0 = Beljaars-Holtslag for stable, Kanthar-Clayson for unstable, 1 = Shortwave radiation-based. Good default for your simulation.
- isot = -99 - Isotropic turbulence flag. -99 = Disabled. Ignored in your run, safe to leave as is.
- idsp = 1 - Dispersion method. 0 = No dispersion (advection only), 1 = Dispersion with mixing. Essential for modeling SO2 spread in your script.
- wvert = .TRUE. - Enable vertical velocity in dispersion calculations. Potential values: .TRUE., .FALSE. Enhances vertical dispersion in your simulation.
- plrise = 1 - Plume rise calculation method. 0 = No plume rise, 1 = Briggs plume rise. Suitable if your SO2 source is a point source like a factory.
- area = 0 - Area source size (m²). 0 = Point source. Potential values: 0 or positive value. Matches your single-point emission (lat = 37.5, lon = -120.0, alt = 10).
- vscale, vscales, vscaleu = 200.0, 5.0, 200.0 - Turbulence velocity scales (m/s) for general, stable, and unstable conditions. Potential values: Positive values (e.g., 5.0–500.0). Affects how widely your SO2 disperses vertically.
- hscale = 10800.0 - Horizontal turbulence scale (seconds). Potential values: Positive values (e.g., 1000–10800). Influences horizontal spread of pollutants in your simulation.
- capemin = -1.0 - Minimum convective available potential energy (J/kg) for plume rise. -1.0 = Disabled. Simplifies your run, relying on plrise.
- tkemin = 0.001 - Minimum turbulent kinetic energy (m²/s²). Potential values: Small positive values (e.g., 0.001–0.1). Ensures turbulence in calm conditions.
- uratio = 5.873300076 - Ratio of wind speed to turbulence velocity. Potential values: Positive values (default ~5.87). Affects turbulence; default is fine.
- tvmix = 1.00 - Vertical mixing coefficient. Potential values: 0.0–1.0. Ensures realistic vertical dispersion.
- tkerd, tkern = 0.18, 0.18 - Daytime and nighttime turbulence ratios. Potential values: 0.1–0.5. Suitable for your run.
- kmix0 = 150 - Minimum mixing depth (m). Potential values: Positive integers (e.g., 50–500). Reasonable for near-surface emissions.
Initialization and Output Control
- kmixd = 0 - Mixing depth source. 0 = Use met data, 1 = Compute internally. Matches your reliance on GDAS1 files.
- ninit = 1 - Initialization of particles from PARINIT file. 0 = None, 1 = Read PARINIT if exists. Not used unless you specify pinpf.
- ndump = 0 - Interval (hours) for writing PARDUMP file. 0 = None. Potential values: Positive integers. Reduces output file size in your run.
- ncycl = 0 - Particle release cycle interval (hours). 0 = Continuous. Consistent with your 1-hour emission.
- pinbc = 'PARINBC' - Filename for boundary condition input. Potential values: File names or empty. Not used in your script.
- pinpf = 'PARINIT' - Filename for particle initialization. Potential values: File names or empty. Not used in your script.
- poutf = 'PARDUMP' - Filename for particle dump output. Potential values: File names or empty. Not used in your script.
- messg = 'MESSAGE' - Names the detailed log file generated by HYSPLIT. Potential values: File name or empty. Default is fine.
- vdist = 'VMSDIST' - Vertical distribution method. Potential values: String (default 'VMSDIST'). Controls vertical particle distribution; default is standard.
- mgmin = 10 - Minimum number of particles per grid cell for concentration output. Potential values: Positive integers. Ensures statistical reliability in your grid.
- conage = 24 - Maximum age (hours) for concentration calculations. Potential values: Positive integers. Fits your 48-hour run, limiting older contributions.
- gemage = 48 - Maximum age (hours) for particle transport. Potential values: Positive integers. Matches your runTime, ensuring particles don’t persist beyond your simulation.
- kmsl = 0 - Altitude input type. 0 = Meters above ground level (AGL), 1 = Meters above sea level (ASL). Matches your MATLAB input (alt = 10).
Deposition and Chemistry
- kwet = 1 - Enable wet deposition. 0 = Off, 1 = On. Ignored unless you modify HYSPLIT_writeControlConc.m to include deposition parameters.
- ichem = 0 - Chemistry module. 0 = None. Potential values: Other integers (see HYSPLIT docs). Suitable for your simple SO2 simulation.
Output File Parameters
- cpack = 1 - Concentration output packing. 0 = No packing, 1 = Packed binary output. Matches your cdump_test output.
- cmass = 0 - Concentration output type. 0 = Concentration (e.g., kg/m³), 1 = Mass loading (e.g., kg). Appropriate for analyzing SO2 concentrations.
- kspl = 1 - Particle/puff splitting interval (hours). 0 = No splitting. Enhances accuracy in your simulation.
- krnd = 6 - Random number seed control. Potential values: Positive integers. Ensures reproducible results.
- frhmax = 3.00 - Maximum horizontal puff growth factor. Potential values: Positive values (e.g., 1.0–5.0). Ignored since initd = 0.
- splitf, frhs, frvs, frts = 1.00, 1.00, 0.01, 0.10 - Splitting factors for puffs (horizontal, vertical, time). Potential values: Positive values. Ignored since initd = 0.
- dxf, dyf, dzf = 1.00, 1.00, 0.01 - Scaling factors for horizontal and vertical components of concentration output. Potential values: Positive values. Matches your grid settings (gridSpacing = 0.1).
Note: This configuration is set up for a standard concentration simulation with 2500 particles, continuous emission for 1 hour, and output in a packed binary cdump file. It uses 3D particle mode (initd = 0) for precise dispersion tracking, suitable for your SO2 simulation in MATLAB.
Monday, September 8, 2025
Hysplit: TRAJ.CFG
Understanding the HYSPLIT TRAJ.CFG Configuration File
The TRAJ.CFG file is a crucial configuration file that controls advanced settings for the HYSPLIT trajectory model. It defines how calculations are performed and what output is generated.
Here's a breakdown of the TRAJ.CFG file structure and parameters:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | &SETUP tratio = 0.75, delt = 0.0, mgmin = 10, khmax = 9999, kmixd = 0, kmsl = 0, kagl = 1, k10m = 1, nstr = 0, mhrs = 9999, nver = 0, tout = 60, tm_pres = 1, tm_tpot = 0, tm_tamb = 0, tm_rain = 0, tm_mixd = 0, tm_relh = 0, tm_sphu = 0, tm_mixr = 0, tm_dswf = 0, tm_terr = 0, tm_uwnd = 0, tm_vwnd = 0, dxf = 1.00, dyf = 1.00, dzf = 0.01, messg = 'MESSAGE', / |
Parameter Explanations
Core Simulation Parameters
- tratio = 0.75 - Time step ratio (stability factor). HYSPLIT adjusts its internal time step so an air parcel doesn't travel more than 75% of a grid cell in one step.
- delt = 0.0 - Fixed time step (minutes). 0.0 means HYSPLIT uses variable time step controlled by tratio.
- mgmin = 10 - Minimum number of grid cells for met data. Sanity check to prevent errors with bad met files.
- khmax = 9999 - Maximum duration (hours) for a trajectory. 9999 means "no limit".
Vertical Motion & Starting Height
- kmixd = 0 - Boundary Layer option. 0 = Ignore mixing depth.
- kmsl = 0 - Input starting height reference. 0 = meters above ground level (AGL).
- kagl = 1 - Output height reference. 1 = meters above ground level (AGL).
- k10m = 1 - Use 10m meteorological data for surface-based trajectories.
Output Control
- nstr = 0 - Number of special starting locations. 0 means not used.
- mhrs = 9999 - Maximum duration for meteorological data. 9999 means "no limit".
- nver = 0 - Vertical motion output flag. 0 = Do not include vertical velocity.
- tout = 60 - Output frequency. 60 = Save trajectory position every 60 minutes.
Meteorological Output Variables (tm_ flags)
These control what additional meteorological data is written to the output file:
- tm_pres = 1 - Pressure (hPa or mb) - INCLUDED
- tm_tpot = 0 - Potential Temperature (K) - Excluded
- tm_tamb = 0 - Ambient Temperature (K) - Excluded
- tm_rain = 0 - Rainfall/Precipitation - Excluded
- tm_mixd = 0 - Mixing Depth (m) - Excluded
- tm_relh = 0 - Relative Humidity (%) - Excluded
- tm_sphu = 0 - Specific Humidity (g/kg) - Excluded
- tm_mixr = 0 - Water Mixing Ratio (g/kg) - Excluded
- tm_dswf = 0 - Downward ShortWave Radiation Flux (W/m²) - Excluded
- tm_terr = 0 - Terrain Height (m) - Excluded
- tm_uwnd = 0 - U-Wind Component (m/s) - Excluded
- tm_vwnd = 0 - V-Wind Component (m/s) - Excluded
Output File Scaling Factors
- dxf = 1.00, dyf = 1.00 - Scaling factors for horizontal components of trajectory dispersion.
- dzf = 0.01 - Scaling factor for vertical component of trajectory dispersion.
Log File Control
- messg = 'MESSAGE' - Names the detailed log file generated by HYSPLIT.
Note: This configuration is set up for a standard, single, backward trajectory with output in meters AGL, saved every 60 minutes, with pressure as the only additional meteorological variable.
Thursday, May 29, 2025
HYSPLIT Learning Resources
- HYSPLIT后向轨迹制作. 2020-01-05
- HYSPLIT聚类后向模拟及浓度扩散模拟. 2021-01-19
- Internet-Based Hysplit Tool
- NESDIS STAR, here.





































