-
Notifications
You must be signed in to change notification settings - Fork 49
Description
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
}
======================================================
