
# **********************************************************************
# This file has been auto-generated by a code generation tool.
# Version:   4.2.0
# Date/time: 22 Nov 2024 12:56:21
# Template:  templates/pythonpws/enums.razor.
# **********************************************************************

# ================================================================================
# Python PWS enums.
# ================================================================================

from enum import IntEnum, unique

@unique
class AtmosphericStabilityClass(IntEnum):
    """
    The Pasquill atmospheric stability classes, a common method for categorizing the amount of atmospheric turbulence present.

    Attributes
    ----------
        STABILITY_A : int
            (1) A - very unstable - sunny, light winds.
        STABILITY_AB : int
            (2) A/B - unstable - as with A only less sunny or more windy.
        STABILITY_B : int
            (3) B - unstable as with A/B only less sunny or more windy.
        STABILITY_BC : int
            (4) B/C - moderately unstable - moderate sun and moderate wind.
        STABILITY_C : int
            (5) C - moderately unstable - very windy/sunny or overcast/light wind.
        STABILITY_CD : int
            (6) C/D - moderately unstable - moderate sun and high wind.
        STABILITY_D : int
            (7) D - neutral - little sun and high wind or overcast/windy night.
        STABILITY_E : int
            (8) E - moderately stable - less overcast and less windy night than D.
        STABILITY_F : int
            (9) F - stable - night with moderate clouds and light/moderate wind.
        STABILITY_G : int
            (10) G - very stable - possibly fog.
    """

    STABILITY_A = 1
    STABILITY_AB = 2
    STABILITY_B = 3
    STABILITY_BC = 4
    STABILITY_C = 5
    STABILITY_CD = 6
    STABILITY_D = 7
    STABILITY_E = 8
    STABILITY_F = 9
    STABILITY_G = 10

@unique
class CaseType(IntEnum):
    """
    Type of case being run.

    Attributes
    ----------
        LINE_RUPTURE : int
            (4) A storage scenario which models a release of material due to rupture of a short length of pipework attached to a vessel or any kind of pressure reservoir.
        RELIEF_VALVE : int
            (3) A storage scenario which models a release of material from the vapour side of a vessel due to the lifting of a relief valve.
        TANK_FIRE : int
            (2) A tank roof fire, represented by a pool fire elevated at the height of the tank.
        UNSET : int
            (-1) Case type has not been set.
        VESSEL_CATASTROPHIC_RUPTURE : int
            (1) An instanaeous release of the entire inventory of an associated vessel, intended to model an incident in which the vessel is destroyed by an impact, a crack, or some other failure which propagates very quickly.
        VESSEL_LEAK : int
            (0) A release of material through a hole in a vessel or pipe.
    """

    LINE_RUPTURE = 4
    RELIEF_VALVE = 3
    TANK_FIRE = 2
    UNSET = -1
    VESSEL_CATASTROPHIC_RUPTURE = 1
    VESSEL_LEAK = 0

@unique
class ContourType(IntEnum):
    """
    Type of contour plot or grid.

    Attributes
    ----------
        CROSSWIND : int
            (5) Crosswind (YZ plane).
        FLAME_CROSSWIND : int
            (8) Flame shape crosswind (YZ plane).
        FLAME_FOOTPRINT : int
            (6) Flame shape footprint (XY plane).
        FLAME_SIDEVIEW : int
            (7) Flame shape sideview (XZ plane).
        FOOTPRINT : int
            (1) Footprint (XY plane).
        FOOTPRINT_AT_TIME : int
            (2) Footprint (XY plane) at a given time.
        FOOTPRINT_ELLIPSE : int
            (3) Footprint ellipse (XY plane).
        SIDEVIEW : int
            (4) Sideview (XZ plane).
    """

    CROSSWIND = 5
    FLAME_CROSSWIND = 8
    FLAME_FOOTPRINT = 6
    FLAME_SIDEVIEW = 7
    FOOTPRINT = 1
    FOOTPRINT_AT_TIME = 2
    FOOTPRINT_ELLIPSE = 3
    SIDEVIEW = 4

@unique
class DayNight(IntEnum):
    """
    Whether day or night.

    Attributes
    ----------
        DAY : int
            (1) Day.
        NIGHT : int
            (2) Night.
        UNSET : int
            (0) Day/night flag not set.
    """

    DAY = 1
    NIGHT = 2
    UNSET = 0

@unique
class DynamicType(IntEnum):
    """
    Whether the release or cloud is instantaneous, continuous or time-varying.

    Attributes
    ----------
        CONTINUOUS : int
            (2) A release of mass at a rate which does not vary with time.
        INSTANTANEOUS : int
            (1) A release of the entire mass instantaneously.
        TIME_VARYING : int
            (3) A release of mass at a rate which varies with time.
        UNSET : int
            (0) Unset.
    """

    CONTINUOUS = 2
    INSTANTANEOUS = 1
    TIME_VARYING = 3
    UNSET = 0

@unique
class FireType(IntEnum):
    """
    The type of fire that occurs or is modelled.

    Attributes
    ----------
        APIJET : int
            (3) A high-velocity burning jet, modelled using the API model, which treats the flame as a banana-shaped plume.
        CONE_JET : int
            (4) A high-velocity burning jet, modelled using the Cone model, which treats the flame as a tilted cone frustum.
        FIREBALL : int
            (1) A large, intense ball of fire that rises and expands before dissipating.
        MULTI_POINT_SOURCE_JET : int
            (10) A high-velocity burning jet, modelled using the Miller model, which treats the flame as two straight-line segments, with the first segment projected in the direction of the release and the second segment angled according to the effects of buoyancy and wind.
        NO_FIRE : int
            (0) No fire occurs or modelled.
        POOL : int
            (2) An ignited pool of flammable liquid that has accumulated on a surface.
    """

    APIJET = 3
    CONE_JET = 4
    FIREBALL = 1
    MULTI_POINT_SOURCE_JET = 10
    NO_FIRE = 0
    POOL = 2

@unique
class FlammableToxic(IntEnum):
    """
    Whether a material is flammable, toxic, both or inert.

    Attributes
    ----------
        BOTH : int
            (0) Both.
        FLAMMABLE : int
            (1) Flammable.
        INERT : int
            (-2) Inert.
        TOXIC : int
            (-1) Toxic.
        UNSET : int
            (-99) Option when this field is unset.
    """

    BOTH = 0
    FLAMMABLE = 1
    INERT = -2
    TOXIC = -1
    UNSET = -99

@unique
class FlashAtOrifice(IntEnum):
    """
    Method to describe how phase changes between storage and orifice conditions will be modelled.

    Attributes
    ----------
        DISALLOW_LIQUID_FLASH : int
            (2) No flashing of liquid (metastable liquid) upstream of the orifice.
        FLASH_ALLOWED : int
            (1) Flashing allowed upstream of the orifice.
        NO_FLASH_AT_ORIFICE : int
            (0) No phase change upstream of the orifice.
    """

    DISALLOW_LIQUID_FLASH = 2
    FLASH_ALLOWED = 1
    NO_FLASH_AT_ORIFICE = 0

@unique
class FluidSpec(IntEnum):
    """
    Fluid state specification.

    Attributes
    ----------
        PBUB : int
            (3) Specify bubble point at fixed pressure.
        PDEW : int
            (5) Specify dew point at fixed pressure.
        PLF : int
            (6) Specify pressure and liquid fraction.
        PTLF : int
            (0) Specify pressure, temperature and liquid fraction.
        TBUB : int
            (2) Specify bubble point at fixed temperature.
        TDEW : int
            (4) Specify dew point at fixed temperature.
        TLF : int
            (7) Specify temperature and liquid fraction.
        TP : int
            (1) Specify temperature and pressure.
    """

    PBUB = 3
    PDEW = 5
    PLF = 6
    PTLF = 0
    TBUB = 2
    TDEW = 4
    TLF = 7
    TP = 1

@unique
class LuminousSmokyFlame(IntEnum):
    """
    The type of flame produced when a material burns.

    Attributes
    ----------
        GENERAL : int
            (2) Used or compounds with unknown experimental profile for surface emissive power.
        LUMINOUS : int
            (0) Whether a material would produce luminous flames when burnt.
        NON_FLAMMABLE : int
            (-1) Non flammable material, so no flames produced.
        SMOKY : int
            (1) Whether a material would produce smoky flames when burnt.
    """

    GENERAL = 2
    LUMINOUS = 0
    NON_FLAMMABLE = -1
    SMOKY = 1

@unique
class MEConfinedMethod(IntEnum):
    """
    The multi energy confined method for modelling the effects of explosions.

    Attributes
    ----------
        UNIFORM_CONFINED : int
            (3) A method where the explosion calculations model a single confined source that contains the entire mass of the cloud, with a strength of confinement defined by the ExplosionUniformStrength in the ExplosionParameters.
        USER_DEFINED : int
            (1) A method where the explosions calculations are based on user-defined confined sources, their explosion strengths and their volumes.
    """

    UNIFORM_CONFINED = 3
    USER_DEFINED = 1

@unique
class MixtureModelling(IntEnum):
    """
    Method for modelling a mixture.

    Attributes
    ----------
        MC__MULTIPLE_AEROSOL : int
            (3) Multi-component multiple aerosol.
        MC__SINGLE_AEROSOL : int
            (1) Multi-component single aerosol.
        PC : int
            (0) Pseudo-component: representing the mixture as a single, averaged component.
    """

    MC__MULTIPLE_AEROSOL = 3
    MC__SINGLE_AEROSOL = 1
    PC = 0

@unique
class Phase(IntEnum):
    """
    Fluid phase (vapour, liquid or two-phase).

    Attributes
    ----------
        LIQUID : int
            (3) Liquid.
        TWO_PHASE : int
            (2) Two-phase.
        UNSET : int
            (0) Unset.
        VAPOUR : int
            (1) Vapour.
    """

    LIQUID = 3
    TWO_PHASE = 2
    UNSET = 0
    VAPOUR = 1

@unique
class PoolFireType(IntEnum):
    """
    Type of pool fire.

    Attributes
    ----------
        EARLY : int
            (1) A type of pool fire assumed to take place at the time when the spill rate into the pool is equal to the burn rate of the pool fire.
        IMMEDIATE : int
            (0) Immediate pool fire.
        LATE : int
            (2) A type of pool fire assumed to occur as a result of delayed ignition, at a time when the pool has reached its maximum radius.
    """

    EARLY = 1
    IMMEDIATE = 0
    LATE = 2

@unique
class PoolSurfaceType(IntEnum):
    """
    Surface onto which the liquid which rains out will spread.

    Attributes
    ----------
        CONCRETE : int
            (3) Concrete.
        DEEP_OPEN_WATER : int
            (5) Deep open water.
        DEEP_RIVER : int
            (7) Deep river.
        DRY_SOIL : int
            (2) Dry soil.
        INSULATED_CONCRETE : int
            (4) Insulated concrete.
        SHALLOW_OPEN_WATER : int
            (6) Shallow open water.
        SHALLOW_RIVER : int
            (8) Shallow river.
        WET_SOIL : int
            (1) Wet soil.
    """

    CONCRETE = 3
    DEEP_OPEN_WATER = 5
    DEEP_RIVER = 7
    DRY_SOIL = 2
    INSULATED_CONCRETE = 4
    SHALLOW_OPEN_WATER = 6
    SHALLOW_RIVER = 8
    WET_SOIL = 1

@unique
class PropertyTemplate(IntEnum):
    """
    The template to be used for the selection of calculation methods for material properties.

    Attributes
    ----------
        ACID_ASSOCIATION : int
            (102) Acid association template for modelling reactive Hydrogen Fluoride.
        PENG_ROBINSON : int
            (104) Template using the Peng-Robinson cubic equation of state.
        PHAST64 : int
            (101) Old default Phast property template.
        PHAST_MC : int
            (100) The PhastMC is the default Phast template.
        PRIDEAL_FUGACITY : int
            (106) The Peng-Robinson template but with ideal fugacities for improved robustness.
        SOAVE_REDLICK_KWONG : int
            (103) Template using the Soave-Redlich-Kwong cubic equation of state.
        SRKIDEAL_FUGACITY : int
            (107) The Soave-Redlich-Kwong template but with ideal fugacities for improved robustness.
    """

    ACID_ASSOCIATION = 102
    PENG_ROBINSON = 104
    PHAST64 = 101
    PHAST_MC = 100
    PRIDEAL_FUGACITY = 106
    SOAVE_REDLICK_KWONG = 103
    SRKIDEAL_FUGACITY = 107

@unique
class RadiationType(IntEnum):
    """
    The type of radiation result of interest.

    Attributes
    ----------
        DOSE : int
            (1) The cumulative thermal energy produced from a flame and absorbed by a person or object, measured in W/m2.s.
        INTENSITY : int
            (5) The intensity of the heat produced from a flame, measured in W/m2.
        LETHALITY : int
            (3) The lethality of the heat produced from a flame, measured as percentage fatality.
        PROBIT : int
            (2) The Probit produced from a flame, a statistical value which correlates dose with the likelihood of fatality on a probabilistic scale.
        UNSET : int
            (0) Radiation type not set.
        VIEW_FACTOR : int
            (4) The calculated view factor.
    """

    DOSE = 1
    INTENSITY = 5
    LETHALITY = 3
    PROBIT = 2
    UNSET = 0
    VIEW_FACTOR = 4

@unique
class RainoutThermoFlag(IntEnum):
    """
    Sets the model for droplet evaporation calculations.

    Attributes
    ----------
        NO_RAINOUT_EQUILIBRIUM : int
            (-1) Suppress rainout and force the liquid droplets to stay inside the cloud, which can have a significant effect on the properties of the cloud.
        RAINOUT_EQUILIBRIUM : int
            (1) The liquid drops have the same temperature as the vapour cloud.
        RAINOUT_NON_EQUILIBRIUM : int
            (2) Liquid drops have a different temperature from the vapour cloud, which surpresses their evaporation and produces a higher amount of rainout than other options.
    """

    NO_RAINOUT_EQUILIBRIUM = -1
    RAINOUT_EQUILIBRIUM = 1
    RAINOUT_NON_EQUILIBRIUM = 2

@unique
class ReleaseDirection(IntEnum):
    """
    The initial direction of the discharge from its source.

    Attributes
    ----------
        HORIZONTAL : int
            (0) Horizontal.
        VERTICAL : int
            (1) Vertical.
    """

    HORIZONTAL = 0
    VERTICAL = 1

@unique
class Resolution(IntEnum):
    """
    Output resolution (and performance) controlling the spacing in the x, y, z and time dimensions.

    Attributes
    ----------
        EXTREME : int
            (5) Extremely high.
        HIGH : int
            (1) High.
        LOW : int
            (3) Low.
        MEDIUM : int
            (2) Medium.
        VERY_HIGH : int
            (4) Very high.
    """

    EXTREME = 5
    HIGH = 1
    LOW = 3
    MEDIUM = 2
    VERY_HIGH = 4

class ResultCode(IntEnum):
    """
    Result codes returned from calls to the MDE.

    Attributes
    ----------
        CLIENT_ID_NOT_SPECIFIED_ERROR : int
            (21110) .
        DATA_STORAGE_ERROR : int
            (21113) .
        DISCHARGE_CALCULATION_INITIALIZATION_ERROR : int
            (21107) .
        DISPERSION_CALCULATION_INITIALIZATION_ERROR : int
            (21108) .
        ERROR_READING_INPUT_FILE_ERROR : int
            (21011) .
        FAIL__EXECUTION : int
            (1) Execution fail.
        FAIL__VALIDATION : int
            (-1) Validation fail.
        FAILED_TO_INITIALISE_MDE_ERROR_REPORTING_ERROR : int
            (21012) .
        FAILED_TO_INITIALISE_PROPERTY_SYSTEM_ERROR : int
            (21013) .
        HTTP_AMBIGUOUS_ERROR : int
            (30300) .
        HTTP_BAD_GATEWAY_ERROR : int
            (30502) .
        HTTP_BAD_REQUEST_ERROR : int
            (30400) .
        HTTP_CONFLICT_ERROR : int
            (30409) .
        HTTP_EXPECTATION_FAILED_ERROR : int
            (30417) .
        HTTP_FORBIDDEN_ERROR : int
            (30403) .
        HTTP_FOUND_ERROR : int
            (30302) .
        HTTP_GATEWAY_TIMEOUT_ERROR : int
            (30504) .
        HTTP_GONE_ERROR : int
            (30410) .
        HTTP_HTTP_VERSION_NOT_SUPPORTED_ERROR : int
            (30505) .
        HTTP_INTERNAL_SERVER_ERROR_ERROR : int
            (30500) .
        HTTP_LENGTH_REQUIRED_ERROR : int
            (30411) .
        HTTP_METHOD_NOT_ALLOWED_ERROR : int
            (30405) .
        HTTP_MOVED_ERROR : int
            (30301) .
        HTTP_MOVED_PERMANENTLY_ERROR : int
            (30301) .
        HTTP_MULTIPLE_CHOICES_ERROR : int
            (30300) .
        HTTP_NOT_ACCEPTABLE_ERROR : int
            (30406) .
        HTTP_NOT_FOUND_ERROR : int
            (30404) .
        HTTP_NOT_IMPLEMENTED_ERROR : int
            (30501) .
        HTTP_NOT_MODIFIED_ERROR : int
            (30304) .
        HTTP_PAYMENT_REQUIRED_ERROR : int
            (30402) .
        HTTP_PRECONDITION_FAILED_ERROR : int
            (30412) .
        HTTP_PROXY_AUTHENTICATION_REQUIRED_ERROR : int
            (30407) .
        HTTP_REDIRECT_ERROR : int
            (30302) .
        HTTP_REDIRECT_KEEP_VERB_ERROR : int
            (30307) .
        HTTP_REDIRECT_METHOD_ERROR : int
            (30303) .
        HTTP_REQUESTED_RANGE_NOT_SATISFIABLE_ERROR : int
            (30416) .
        HTTP_REQUEST_ENTITY_TOO_LARGE_ERROR : int
            (30413) .
        HTTP_REQUEST_TIMEOUT_ERROR : int
            (30408) .
        HTTP_REQUEST_URI_TOO_LONG_ERROR : int
            (30414) .
        HTTP_SEE_OTHER_ERROR : int
            (30303) .
        HTTP_SERVICE_UNAVAILABLE_ERROR : int
            (30503) .
        HTTP_TEMPORARY_REDIRECT_ERROR : int
            (30307) .
        HTTP_UNAUTHORIZED_ERROR : int
            (30401) .
        HTTP_UNSUPPORTED_MEDIA_TYPE_ERROR : int
            (30415) .
        HTTP_UNUSED_ERROR : int
            (30306) .
        HTTP_UPGRADE_REQUIRED_ERROR : int
            (30426) .
        HTTP_USE_PROXY_ERROR : int
            (30305) .
        INDEX_OUT_OF_RANGE_ERROR : int
            (21112) .
        INPUT_FILE_NOT_FOUND_ERROR : int
            (21009) .
        INPUT_FILE_NOT_SPECIFIED_ERROR : int
            (21008) .
        INVALID_ACCESS_TOKEN_ERROR : int
            (21014) .
        INVALID_APP_ROOT_DIRECTORY_ERROR : int
            (21004) No or invalid application root directory specified.
        INVALID_MDE_MODELS_DIRECTORY_ERROR : int
            (21005) No or invalid MDE models directory specified.
        INVALID_PROPERTY_SYSTEM_DIRECTORY_ERROR : int
            (21007) No or invalid physical properties directory specified.
        INVALID_WORKING_DIRECTORY_ERROR : int
            (21003) No or invalid working directory specified.
        JSON_READER_ERROR : int
            (21111) .
        MDEERROR_REPORTING_INITIALIZATION_ERROR : int
            (21105) .
        MDEINITIALIZATION_ERROR : int
            (21104) .
        MDE_MODEL_DIRECTORY_NOT_FOUND_ERROR : int
            (21006) MDE directory was correctly specified but the directory does not exist.
        MISSING_PARAMETERS_ERROR : int
            (21002) Missing parameters.
        NO_DISCHARGE_RECORDS_ERROR : int
            (21100) .
        NO_DISCHARGE_RECORDS_GENERATED_WARNING : int
            (63001) .
        NO_DISPERSION_RECORDS_ERROR : int
            (21102) .
        NO_DISPERSION_RECORDS_GENERATED_WARNING : int
            (63002) .
        NO_FLAME_RECORDS_ERROR : int
            (21103) .
        OUTPUT_FILE_NOT_SPECIFIED_ERROR : int
            (21010) .
        PHYSICAL_PROPERTY_SYSTEM_INITIALIZATION_ERROR : int
            (21106) .
        SUCCESS : int
            (0) Success.
        UNABLE_TO_READ_DATA_ERROR : int
            (21109) .
        UNEXPECTED_APPLICATION_ERROR : int
            (21001) Unexpected application error encountered.
    """

    CLIENT_ID_NOT_SPECIFIED_ERROR = 21110
    DATA_STORAGE_ERROR = 21113
    DISCHARGE_CALCULATION_INITIALIZATION_ERROR = 21107
    DISPERSION_CALCULATION_INITIALIZATION_ERROR = 21108
    ERROR_READING_INPUT_FILE_ERROR = 21011
    FAIL__EXECUTION = 1
    FAIL__VALIDATION = -1
    FAILED_TO_INITIALISE_MDE_ERROR_REPORTING_ERROR = 21012
    FAILED_TO_INITIALISE_PROPERTY_SYSTEM_ERROR = 21013
    HTTP_AMBIGUOUS_ERROR = 30300
    HTTP_BAD_GATEWAY_ERROR = 30502
    HTTP_BAD_REQUEST_ERROR = 30400
    HTTP_CONFLICT_ERROR = 30409
    HTTP_EXPECTATION_FAILED_ERROR = 30417
    HTTP_FORBIDDEN_ERROR = 30403
    HTTP_FOUND_ERROR = 30302
    HTTP_GATEWAY_TIMEOUT_ERROR = 30504
    HTTP_GONE_ERROR = 30410
    HTTP_HTTP_VERSION_NOT_SUPPORTED_ERROR = 30505
    HTTP_INTERNAL_SERVER_ERROR_ERROR = 30500
    HTTP_LENGTH_REQUIRED_ERROR = 30411
    HTTP_METHOD_NOT_ALLOWED_ERROR = 30405
    HTTP_MOVED_ERROR = 30301
    HTTP_MOVED_PERMANENTLY_ERROR = 30301
    HTTP_MULTIPLE_CHOICES_ERROR = 30300
    HTTP_NOT_ACCEPTABLE_ERROR = 30406
    HTTP_NOT_FOUND_ERROR = 30404
    HTTP_NOT_IMPLEMENTED_ERROR = 30501
    HTTP_NOT_MODIFIED_ERROR = 30304
    HTTP_PAYMENT_REQUIRED_ERROR = 30402
    HTTP_PRECONDITION_FAILED_ERROR = 30412
    HTTP_PROXY_AUTHENTICATION_REQUIRED_ERROR = 30407
    HTTP_REDIRECT_ERROR = 30302
    HTTP_REDIRECT_KEEP_VERB_ERROR = 30307
    HTTP_REDIRECT_METHOD_ERROR = 30303
    HTTP_REQUESTED_RANGE_NOT_SATISFIABLE_ERROR = 30416
    HTTP_REQUEST_ENTITY_TOO_LARGE_ERROR = 30413
    HTTP_REQUEST_TIMEOUT_ERROR = 30408
    HTTP_REQUEST_URI_TOO_LONG_ERROR = 30414
    HTTP_SEE_OTHER_ERROR = 30303
    HTTP_SERVICE_UNAVAILABLE_ERROR = 30503
    HTTP_TEMPORARY_REDIRECT_ERROR = 30307
    HTTP_UNAUTHORIZED_ERROR = 30401
    HTTP_UNSUPPORTED_MEDIA_TYPE_ERROR = 30415
    HTTP_UNUSED_ERROR = 30306
    HTTP_UPGRADE_REQUIRED_ERROR = 30426
    HTTP_USE_PROXY_ERROR = 30305
    INDEX_OUT_OF_RANGE_ERROR = 21112
    INPUT_FILE_NOT_FOUND_ERROR = 21009
    INPUT_FILE_NOT_SPECIFIED_ERROR = 21008
    INVALID_ACCESS_TOKEN_ERROR = 21014
    INVALID_APP_ROOT_DIRECTORY_ERROR = 21004
    INVALID_MDE_MODELS_DIRECTORY_ERROR = 21005
    INVALID_PROPERTY_SYSTEM_DIRECTORY_ERROR = 21007
    INVALID_WORKING_DIRECTORY_ERROR = 21003
    JSON_READER_ERROR = 21111
    MDEERROR_REPORTING_INITIALIZATION_ERROR = 21105
    MDEINITIALIZATION_ERROR = 21104
    MDE_MODEL_DIRECTORY_NOT_FOUND_ERROR = 21006
    MISSING_PARAMETERS_ERROR = 21002
    NO_DISCHARGE_RECORDS_ERROR = 21100
    NO_DISCHARGE_RECORDS_GENERATED_WARNING = 63001
    NO_DISPERSION_RECORDS_ERROR = 21102
    NO_DISPERSION_RECORDS_GENERATED_WARNING = 63002
    NO_FLAME_RECORDS_ERROR = 21103
    OUTPUT_FILE_NOT_SPECIFIED_ERROR = 21010
    PHYSICAL_PROPERTY_SYSTEM_INITIALIZATION_ERROR = 21106
    SUCCESS = 0
    UNABLE_TO_READ_DATA_ERROR = 21109
    UNEXPECTED_APPLICATION_ERROR = 21001

@unique
class SolidModelling(IntEnum):
    """
    Flag for whether we want to deploy or disable solid modelling. In addition to this flag, each component has its own allowSolids flag.

    Attributes
    ----------
        DEPLOY_SOLID_MODELLING : int
            (1) Solid modelling will be deployed if it is supported by the component in question.
        DISABLE_SOLID_MODELLING : int
            (0) Solid modelling will not be used, even if it is allowed by the component in question.
    """

    DEPLOY_SOLID_MODELLING = 1
    DISABLE_SOLID_MODELLING = 0

@unique
class SpecialConcentration(IntEnum):
    """
    The method used to determine the concentration of interest when post processing dispersion calculations.

    Attributes
    ----------
        LFL : int
            (2) The concentration of interest will be the LFL of the material.
        LFL_FRACTION : int
            (1) The concentration of interest will be the LFL fraction specified in the DispersionOutputConfig.
        MIN : int
            (4) The minimum concentration specified in the ScalarUDMOutputs.
        NOT_DEFINED : int
            (0) A method which allows you to use a specific concentration fraction for the concentration of interest.
        UFL : int
            (3) The concentration of interest will be the UFL of the material.
    """

    LFL = 2
    LFL_FRACTION = 1
    MIN = 4
    NOT_DEFINED = 0
    UFL = 3

@unique
class SurfaceType(IntEnum):
    """
    Surface over which the dispersion occurs.

    Attributes
    ----------
        LAND : int
            (1) Dispersion over land.
        WATER : int
            (2) Dispersion over water.
    """

    LAND = 1
    WATER = 2

@unique
class TimeVaryingOption(IntEnum):
    """
    Whether the release is a time-varying release or a steady state release using the initial rate.

    Attributes
    ----------
        INITIAL_RATE : int
            (1) Use initial rate modelling.
        TIME_VARYING_RATE : int
            (2) Use time-varying rate modelling.
    """

    INITIAL_RATE = 1
    TIME_VARYING_RATE = 2

@unique
class ToxicResultType(IntEnum):
    """
    The type of toxic result.

    Attributes
    ----------
        TOXIC_DOSE : int
            (3) Toxic dose.
        TOXIC_LETHALITY : int
            (1) Probability of death.
        TOXIC_PROBIT : int
            (2) Toxic probit number.
        UNSET : int
            (0) Toxic result type not set.
    """

    TOXIC_DOSE = 3
    TOXIC_LETHALITY = 1
    TOXIC_PROBIT = 2
    UNSET = 0

@unique
class VesselConditions(IntEnum):
    """
    The conditions of the material in a vessel.

    Attributes
    ----------
        ATMOSPHERIC_LIQUID_VESSEL : int
            (5) Liquid stored at atmospheric pressure.
        HOMOGENEOUS_VESSEL_TYPE : int
            (2) Homogenesously mixed two phase.
        PRESSURIZED_LIQUID_VESSEL : int
            (4) Pressurised liquid vessel.
        PURE_GAS : int
            (1) Pressurised gas vessel.
        STRATIFIED_TWO_PHASE_VESSEL : int
            (3) Two phase vessel.
        UNSET : int
            (0) Unset.
    """

    ATMOSPHERIC_LIQUID_VESSEL = 5
    HOMOGENEOUS_VESSEL_TYPE = 2
    PRESSURIZED_LIQUID_VESSEL = 4
    PURE_GAS = 1
    STRATIFIED_TWO_PHASE_VESSEL = 3
    UNSET = 0

@unique
class VesselShape(IntEnum):
    """
    The shape of a vessel.

    Attributes
    ----------
        HORIZONTAL_CYLINDER : int
            (2) Horizontal cylinder shape for a vessel.
        VERTICAL_CYLINDER : int
            (1) Vertical cylinder shape for a vessel.
        VESSEL_CUBOID : int
            (4) Cuboid shape for a vessel.
        VESSEL_SPHERE : int
            (3) Sphere shape for a vessel.
    """

    HORIZONTAL_CYLINDER = 2
    VERTICAL_CYLINDER = 1
    VESSEL_CUBOID = 4
    VESSEL_SPHERE = 3