Skip to content

Exploring the relation between the status codes (2,3.10) and fate status(1,2,10) from PYGNOME(1.1.16)+ADIOSDB module #190

@sjpgithub

Description

@sjpgithub

Hi all,

I have executed (using class "skimmer" at particular location" from "gnome.weatherer.cleanup") the simulation incorporating both weathering processes and skimmers deployed at a specific location with a boom line.
The output was generated in NetCDF format, and a snapshot of the header is shown below. Additionally, I have extracted the status and fate_status variables into a .csv file, which I have shared along with a screenshot

filtered_particles_status_fate.csv

Based on my current understanding:

Status Codes: 2: In water 3: On land 10: Evaporated

Fate Status Codes: 1: Unweathered / Undergoing weathering 2: Dispersed, evaporated, or skimmed 10: Skimmed or burned

Using these, I have inferred a logical relationship while filtering the .csv data:

If a particle has status = 2 (in water), its fate_status can be:

1: Still undergoing weathering

2: Weathered (dispersed/evaporated/skimmed)

10: Skimmed

If a particle has status = 3 (on land), then its fate_status appears to be only 1 (unweathered), as it hasn't undergone in-water weathering processes.

However, I would like to know the precise definitions and interpretation of both status and fate_status codes as derived from the .nc output files, so I can apply the correct filters and accurately interpret the simulation results.

is it good to remove the particle (id), if its mass ==0, irrespective of the status_code or fate status ?

Kindly suggest

Thanks

SJ Prasad

netcdf simulation_output {
dimensions:
time = UNLIMITED ; // (265 currently)
data = UNLIMITED ; // (265000 currently)
two = 2 ;
three = 3 ;
weathering = 12 ;
variables:
double time(time) ;
time:long_name = "time since the beginning of the simulation" ;
time:standard_name = "time" ;
time:calendar = "gregorian" ;
time:comment = "unspecified time zone" ;
time:units = "seconds since 2022-06-22T06:00:00" ;
int particle_count(time) ;
particle_count:units = "1" ;
particle_count:long_name = "number of particles in a given timestep" ;
particle_count:ragged_row_count = "particle count at nth timestep" ;
ushort spill_num(data) ;
spill_num:long_name = "spill to which the particle belongs" ;
spill_num:spills_map = "0: Point-Line Spill, " ;
double frac_evap(data) ;
frac_evap:long_name = "fraction of total mass that is evaporated after each time step" ;
double mass(data) ;
mass:long_name = "mass of particle" ;
mass:units = "kilograms" ;
int windage_persist(data) ;
short status_codes(data) ;
status_codes:long_name = "particle status code" ;
status_codes:flag_values = 0LL, 2LL, 3LL, 7LL, 10LL, 12LL, 32LL ;
status_codes:flag_meanings = "0:not_released 2:in_water 3:on_land 7:off_maps 10:evaporated 12:to_be_removed 32:on_tideflat" ;
double release_rate(data) ;
double viscosity(data) ;
viscosity:long_name = "emulsion viscosity at end of timestep" ;
viscosity:units = "m^2/sec" ;
double last_water_positions(data, three) ;
int age(data) ;
age:long_name = "age of particle from time of release" ;
age:units = "seconds" ;
double max_area_le(data) ;
double bulk_init_volume(data) ;
double frac_coverage(data) ;
double frac_lost(data) ;
frac_lost:long_name = "fraction of total mass that is lost after each time step" ;
double windages(data) ;
ubyte fate_status(data) ;
uint id(data) ;
id:long_name = "particle ID" ;
double oil_viscosity(data) ;
oil_viscosity:long_name = "oil viscosity at end of timestep" ;
oil_viscosity:units = "m^2/sec" ;
double vol_frac_le_st(data) ;
double area(data) ;
double droplet_avg_size(data) ;
double frac_water(data) ;
frac_water:long_name = "water fraction after each time step" ;
double surface_concentration(data) ;
surface_concentration:long_name = "surface concentration of oil" ;
surface_concentration:units = "g m-2" ;
double init_mass(data) ;
init_mass:long_name = "initial mass" ;
init_mass:units = "kilograms" ;
double interfacial_area(data) ;
double density(data) ;
density:long_name = "emulsion density at end of timestep" ;
density:units = "kg/m^3" ;
double mass_components(data, weathering) ;
double oil_density(data) ;
oil_density:long_name = "oil density at end of timestep" ;
oil_density:units = "kg/m^3" ;
double bulltime(data) ;
double evap_decay_constant(data, weathering) ;
double latitude(data) ;
latitude:long_name = "latitude of the particle" ;
latitude:standard_name = "latitude" ;
latitude:units = "degrees_north" ;
double longitude(data) ;
longitude:long_name = "longitude of the particle" ;
longitude:standard_name = "longitude" ;
longitude:units = "degrees_east" ;
double windage_range(data, two) ;
double depth(data) ;
depth:long_name = "particle depth below sea surface" ;
depth:standard_name = "depth" ;
depth:units = "meters" ;
depth:axis = "z positive down" ;
double fay_area(data) ;
double next_positions(data, three) ;

// global attributes:
:comment = "Particle output from the NOAA PyGnome model" ;
:source = "PyGnome version 1.1.16" ;
:references = "TBD" ;
:feature_type = "particle_trajectory" ;
:institution = "NOAA Emergency Response Division" ;
:conventions = "CF-1.6" ;
:creation_date = "2025-07-10T12:37:04" ;

group: mass_balance {
dimensions:
time = UNLIMITED ; // (265 currently)
variables:
double standard_density(time) ;
double beached(time) ;
beached:long_name = "total mass on the shoreline after each time step" ;
beached:units = "kilograms" ;
double off_maps(time) ;
off_maps:long_name = "total mass that has left the map since the beginning of model run" ;
off_maps:units = "kilograms" ;
double avg_density(time) ;
avg_density:long_name = "average density at end of timestep" ;
avg_density:units = "kg/m^3" ;
double floating(time) ;
floating:long_name = "total mass floating in water after each time step" ;
floating:units = "kilograms" ;
double amount_released(time) ;
amount_released:long_name = "total mass of oil released thus far" ;
amount_released:units = "kg" ;
double non_weathering(time) ;
non_weathering:long_name = "total mass of oil that does not weather after each time step" ;
non_weathering:units = "kg" ;
double avg_viscosity(time) ;
avg_viscosity:long_name = "average viscosity at end of timestep" ;
avg_viscosity:units = "m^2/sec" ;
double skimmed(time) ;
skimmed:long_name = "total mass skimmed since beginning of model run" ;
skimmed:units = "kilograms" ;
double evaporated(time) ;
evaporated:long_name = "total mass evaporated since beginning of model run" ;
evaporated:units = "kilograms" ;
double natural_dispersion(time) ;
natural_dispersion:long_name = "total mass dispersed since beginning of model run" ;
natural_dispersion:units = "kilograms" ;
double sedimentation(time) ;
sedimentation:long_name = "total mass lost due to sedimentation since beginning of model run" ;
sedimentation:units = "kilograms" ;
double water_content(time) ;
water_content:long_name = "fraction of total mass that is water after each time step" ;
} // group mass_balance
}

======================================================

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions