ATP45.AbstractReleaseTypeType
AbstractReleaseType <: AbstractCategory

Discriminate between the release type (ex: Air Contaminating Attack, Ground Contaminating Attacks)

source
ATP45.AbstractWeaponType
AbstractWeapon <: AbstractCategory

Discriminate between the type of weapon (Chemical, Biological, Radiological, Nuclear)

source
ATP45.AbstractZoneFeatureType
AbstractZoneFeature{N, T}

An ATP-45 Zone{N, T} with some properties related to it (typically the type of zone, e.g. release or hazard). It implements the GeoInterface.Feature trait.

source
ATP45.ZoneType
Zone{N, T} <: AbstractZone{N, T}

Defines a closed polygon with N vertices for representing a ATP-45 zone. It implements the GeoInterface.Polygon trait.

source
ATP45.ZoneBoundaryType
ZoneBoundary{N, T}

Represents the border for a ATP45 zone. N is the number of vertices defining the zone. It implements the GeoInterface.LinearRing trait.

Examples

# We create a triangle like border (3 vertices):
julia> coords = [
    [6., 49.],
    [5., 50.],
    [4., 49.],
]
julia> ZoneBoundary(coords)
ZoneBoundary{3, Float64}(((6.0, 49.0), (5.0, 50.0), (4.0, 49.0)))
source
ATP45.circle_coordinatesMethod
circle_coordinates(lon::Number, lat::Number, radius::Number, res)

Calculate the coordinates of a circle like zone given the center (lon, lat) and the radius in meters. res is the number of points on the circle.

source
ATP45.descendMethod
descend(node::TreeNode, model_params) :: TreeNode

Discriminate between the children of node according to the parameters in model_params.

Examples

julia> ex = Simplified => [
               ChemicalWeapon => [
                   LowerThan10 => (:_circle_circle, 2_000, 10_000),
                   HigherThan10 => (:_circle_triangle, 2_000, 10_000),
               ],
               BiologicalWeapon => [
                   LowerThan10 => (:_circle_circle, 1_000, 10_000),
                   HigherThan10 => (:_circle_triangle, 1_000, 10_000),
               ],
           ]
julia> model_params = (BiologicalWeapon(),)
julia> descend(TreeNode(ex), model_params)
BiologicalWeapon()
├─ LowerThan10()
│  └─ (:_circle_circle, 1000, 10000)
└─ HigherThan10()
   └─ (:_circle_triangle, 1000, 10000)
source
ATP45.descendallMethod
descendall(node::TreeNode, model_params) :: TreeNode{<:Tuple}

Browse the tree starting at node, choosing the path following what is specified in model_params.

Examples

julia> ex = Simplified => [
               ChemicalWeapon => [
                   LowerThan10 => (:_circle_circle, 2_000, 10_000),
                   HigherThan10 => (:_circle_triangle, 2_000, 10_000),
               ],
               BiologicalWeapon => [
                   LowerThan10 => (:_circle_circle, 1_000, 10_000),
                   HigherThan10 => (:_circle_triangle, 1_000, 10_000),
               ],
           ]
julia> model_params = (BiologicalWeapon(), WindAzimuth(45, 2))
julia> descendall(TreeNode(ex), model_params)
(:_circle_triangle, 1000, 10000)
source
ATP45.get_zonesMethod
get_zones(result::Atp45Result, type::String)

Get the zones in the ATP45Result result from reading the type propertie of the zones. See [ATP45.Atp45Result]

source
ATP45.horizontal_walkMethod
horizontal_walk(lon::AbstractFloat, lat::AbstractFloat, distance::AbstractFloat, azimuth::AbstractFloat)

Compute the end location given a starting location lon and lat in degrees, a distance distance in meters and an azimuth azimuth in degrees (the reference direction is North)

source
ATP45.map_idsMethod
map_ids()

Dictionnary mapping the existing id's to the ATP45.jl categories.

Examples:

julia> ATP45.map_ids()
Dict{String, Any} with 29 entries:
  "MPL"             => MissilesPayload()
  "MSL"             => Missile()
  "chem"            => ChemicalWeapon()
  "typeC"           => ReleaseTypeC()
  "MNE"             => Mine()
  ⋮                 => ⋮
source
ATP45.propertiesMethod
properties(iid::String)
properties(obj)

Give the properties defined on the ATP45 object, given the object itsels obj or its id iid.

Examples

julia> ATP45.properties(ChemicalWeapon())
4-element Vector{Pair{Symbol, String}}:
           :id => "chem"
     :longname => "Chemical"
    :paramtype => "category"
 :internalname => "ChemicalWeapon"
source
ATP45.run_atpMethod
run_atp(args...)

High level function to run the ATP-45 procedure. The arguments args can be pretty flexible. They can be expressed as :

  • categories and input types from ATP45.jl
locations = ReleaseLocationss([4., 50.])
wind = WindAzimuth(2.5, 45.)
run_atp(Simplified(), ChemicalWeapon(), locations, wind)
  • string corresponding to the categories' id's. See map_ids to know the id's of the existing categories:
run_atp("simplified", "chem", locations, wind)
  • a combination of both:
run_atp(Simplified(), "chem", locations, wind)
source
ATP45.triangle_coordinatesMethod
triangle_coordinates(lon, lat, azimuth, dhd, back_distance)

Calculate the coordinates of the triangle like zone given the release location, the wind direction azimuth, the downwind hazard distance dhd in meters.

source