Internal constants¶
Internal constants¶
Constants and defaults for aubellhop.
This file contains various dataclasses and wrapper classes for storing:
List of all external file types and their extensions
String constants used throughout the codebase for autocomplete and error-checking
Mappngs between Bellhop character “flags” and their user-level option name
Default settings for various Bellhop classes
- class aubellhop.constants.FileExt[source]¶
Strings to define file extensions.
Using this class avoids typos in the source. It is also used to loop through files to delete them when needed before/after Bellhop execution.
- arr = '.arr'¶
- ati = '.ati'¶
- bty = '.bty'¶
- log = '.log'¶
- sbp = '.sbp'¶
- shd = '.shd'¶
- prt = '.prt'¶
- ray = '.ray'¶
- env = '.env'¶
- ssp = '.ssp'¶
- brc = '.brc'¶
- trc = '.trc'¶
- class aubellhop.constants.BHStrings(*values)[source]¶
String definitions to avoid hard-coding magic strings in the source code
This helps prevent typos and permits autocomplete (if your editor is smart enough).
- default = 'default'¶
- none = 'none'¶
- two_d = '2D'¶
- two_half_d = '2.5D'¶
- three_d = '3D'¶
- linear = 'linear'¶
- spline = 'spline'¶
- pchip = 'pchip'¶
- nlinear = 'nlinear'¶
- quadrilateral = 'quadrilateral'¶
- hexahedral = 'hexahedral'¶
- curvilinear = 'curvilinear'¶
- vacuum = 'vacuum'¶
- acousto_elastic = 'acousto-elastic'¶
- rigid = 'rigid'¶
- grain = 'grain'¶
- from_file = 'from-file'¶
- flat = 'flat'¶
- line = 'line'¶
- point = 'point'¶
- cartesian = 'cartesian'¶
- ray = 'ray'¶
- hat_cartesian = 'hat-cartesian'¶
- hat_ray = 'hat-ray'¶
- gaussian_simple = 'gaussian-simple'¶
- gaussian_cartesian = 'gaussian-cartesian'¶
- gaussian_ray = 'gaussian-ray'¶
- omnidirectional = 'omnidirectional'¶
- single_beam = 'single beam'¶
- rectilinear = 'rectilinear'¶
- irregular = 'irregular'¶
- thorp = 'thorp'¶
- francois_garrison = 'francois-garrison'¶
- biological = 'biological'¶
- nepers_per_meter = 'nepers per meter'¶
- frequency_dependent = 'frequency dependent'¶
- db_per_meter = 'dB per meter'¶
- db_per_wavelength = 'dB per wavelength'¶
- quality_factor = 'quality factor'¶
- loss_parameter = 'loss parameter'¶
- rays = 'rays'¶
- eigenrays = 'eigenrays'¶
- arrivals = 'arrivals'¶
- arrivals_b = 'arrivals-binary'¶
- coherent = 'coherent'¶
- incoherent = 'incoherent'¶
- semicoherent = 'semicoherent'¶
- class aubellhop.constants.FlagMaps[source]¶
Mappings from Bellhop single-char input file options to readable Python options
These are also defined with reverse mappings in the form:
>>> FlagMaps.soundspeed_interp["S"] "spline"
>>> FlagMaps.soundspeed_interp_rev["spline"] "S"
- soundspeed_interp = {' ': BHStrings.default, 'C': BHStrings.linear, 'H': BHStrings.hexahedral, 'N': BHStrings.nlinear, 'P': BHStrings.pchip, 'Q': BHStrings.quadrilateral, 'S': BHStrings.spline}¶
- bottom_interp = {'C': BHStrings.curvilinear, 'L': BHStrings.linear}¶
- surface_interp = {'C': BHStrings.curvilinear, 'L': BHStrings.linear}¶
- bottom_boundary_condition = {' ': BHStrings.default, 'A': BHStrings.acousto_elastic, 'F': BHStrings.from_file, 'G': BHStrings.grain, 'R': BHStrings.rigid, 'V': BHStrings.vacuum}¶
- surface_boundary_condition = {' ': BHStrings.default, 'A': BHStrings.acousto_elastic, 'F': BHStrings.from_file, 'R': BHStrings.rigid, 'V': BHStrings.vacuum}¶
- attenuation_units = {' ': BHStrings.default, 'F': BHStrings.frequency_dependent, 'L': BHStrings.loss_parameter, 'M': BHStrings.db_per_meter, 'N': BHStrings.nepers_per_meter, 'Q': BHStrings.quality_factor, 'W': BHStrings.db_per_wavelength}¶
- volume_attenuation = {' ': BHStrings.none, 'B': BHStrings.biological, 'F': BHStrings.francois_garrison, 'T': BHStrings.thorp}¶
- _bathymetry = {' ': BHStrings.default, '*': BHStrings.from_file, '_': BHStrings.flat, '~': BHStrings.from_file}¶
- _altimetry = {' ': BHStrings.default, '*': BHStrings.from_file, '_': BHStrings.flat, '~': BHStrings.from_file}¶
- source_type = {' ': BHStrings.default, 'R': BHStrings.point, 'X': BHStrings.line}¶
- _sbp_file = {' ': BHStrings.default, '*': BHStrings.from_file, 'O': BHStrings.omnidirectional}¶
- grid_type = {' ': BHStrings.default, 'I': BHStrings.irregular, 'R': BHStrings.rectilinear}¶
- beam_type = {' ': BHStrings.default, 'B': BHStrings.gaussian_cartesian, 'C': BHStrings.cartesian, 'G': BHStrings.hat_cartesian, 'R': BHStrings.ray, 'S': BHStrings.gaussian_simple, '^': BHStrings.hat_cartesian, 'b': BHStrings.gaussian_ray, 'g': BHStrings.hat_ray}¶
- dimension = {' ': BHStrings.two_d, '2': BHStrings.two_half_d, '3': BHStrings.three_d}¶
- _single_beam = {' ': BHStrings.default, 'I': BHStrings.single_beam}¶
- task = {'A': BHStrings.arrivals, 'C': BHStrings.coherent, 'E': BHStrings.eigenrays, 'I': BHStrings.incoherent, 'R': BHStrings.rays, 'S': BHStrings.semicoherent, 'a': BHStrings.arrivals_b}¶
- mode = {'C': BHStrings.coherent, 'I': BHStrings.incoherent, 'S': BHStrings.semicoherent}¶
- soundspeed_interp_rev = {BHStrings.default: ' ', BHStrings.hexahedral: 'H', BHStrings.linear: 'C', BHStrings.nlinear: 'N', BHStrings.pchip: 'P', BHStrings.quadrilateral: 'Q', BHStrings.spline: 'S'}¶
- bottom_interp_rev = {BHStrings.curvilinear: 'C', BHStrings.linear: 'L'}¶
- surface_interp_rev = {BHStrings.curvilinear: 'C', BHStrings.linear: 'L'}¶
- bottom_boundary_condition_rev = {BHStrings.acousto_elastic: 'A', BHStrings.default: ' ', BHStrings.from_file: 'F', BHStrings.grain: 'G', BHStrings.rigid: 'R', BHStrings.vacuum: 'V'}¶
- surface_boundary_condition_rev = {BHStrings.acousto_elastic: 'A', BHStrings.default: ' ', BHStrings.from_file: 'F', BHStrings.rigid: 'R', BHStrings.vacuum: 'V'}¶
- attenuation_units_rev = {BHStrings.db_per_meter: 'M', BHStrings.db_per_wavelength: 'W', BHStrings.default: ' ', BHStrings.frequency_dependent: 'F', BHStrings.loss_parameter: 'L', BHStrings.nepers_per_meter: 'N', BHStrings.quality_factor: 'Q'}¶
- volume_attenuation_rev = {BHStrings.biological: 'B', BHStrings.francois_garrison: 'F', BHStrings.none: ' ', BHStrings.thorp: 'T'}¶
- _bathymetry_rev = {BHStrings.default: ' ', BHStrings.flat: '_', BHStrings.from_file: '*'}¶
- _altimetry_rev = {BHStrings.default: ' ', BHStrings.flat: '_', BHStrings.from_file: '*'}¶
- source_type_rev = {BHStrings.default: ' ', BHStrings.line: 'X', BHStrings.point: 'R'}¶
- grid_type_rev = {BHStrings.default: ' ', BHStrings.irregular: 'I', BHStrings.rectilinear: 'R'}¶
- beam_type_rev = {BHStrings.cartesian: 'C', BHStrings.default: ' ', BHStrings.gaussian_cartesian: 'B', BHStrings.gaussian_ray: 'b', BHStrings.gaussian_simple: 'S', BHStrings.hat_cartesian: '^', BHStrings.hat_ray: 'g', BHStrings.ray: 'R'}¶
- _single_beam_rev = {BHStrings.default: ' ', BHStrings.single_beam: 'I'}¶
- task_rev = {BHStrings.arrivals: 'A', BHStrings.arrivals_b: 'a', BHStrings.coherent: 'C', BHStrings.eigenrays: 'E', BHStrings.incoherent: 'I', BHStrings.rays: 'R', BHStrings.semicoherent: 'S'}¶
- mode_rev = {BHStrings.coherent: 'C', BHStrings.incoherent: 'I', BHStrings.semicoherent: 'S'}¶
- dimension_rev = {BHStrings.two_half_d: '2', BHStrings.two_d: ' ', BHStrings.three_d: '3'}¶
- class aubellhop.constants.ModelDefaults(name_2d: str = 'bellhop', name_3d: str = 'bellhop3d', exe_2d: str = 'bellhop.exe', exe_3d: str = 'bellhop3d.exe', dim_2d: int = 2, dim_3d: int = 3)[source]¶
Defaults within the Bellhop model class.
- name_2d: str = 'bellhop'¶
- name_3d: str = 'bellhop3d'¶
- exe_2d: str = 'bellhop.exe'¶
- exe_3d: str = 'bellhop3d.exe'¶
- dim_2d: int = 2¶
- dim_3d: int = 3¶
- class aubellhop.constants.MiscDefaults(beam_angle_halfspace: float = 90.0, beam_angle_fullspace: float = 180.0, beam_bearing_halfspace: float = 90.0, beam_bearing_fullspace: float = 180.0, density: float = 1000.0, sound_speed: float = 1500.0)[source]¶
Defaults for parameters within setup code.
- beam_angle_halfspace: float = 90.0¶
- beam_angle_fullspace: float = 180.0¶
- beam_bearing_halfspace: float = 90.0¶
- beam_bearing_fullspace: float = 180.0¶
- density: float = 1000.0¶
- sound_speed: float = 1500.0¶
- class aubellhop.constants.EnvDefaults(attenuation_units: str = BHStrings.frequency_dependent, bottom_attenuation: float = 0.1, bottom_boundary_condition: str = BHStrings.acousto_elastic, bottom_interp: str = BHStrings.linear, comment_pad: int = 50, dimension: str = BHStrings.two_d, _dimension: int = 2, frequency: float = 25000.0, interference_mode: str = BHStrings.coherent, simulation_depth_scale: float = 1.01, simulation_range_scale: float = 1.1, simulation_cross_range_scale: float = 2.0, simulation_cross_range_min: float = 10.0, soundspeed_interp: str = BHStrings.linear, surface_depth: float = 0.0, surface_interp: str = BHStrings.linear, volume_attenuation: str = BHStrings.none)[source]¶
Defaults for the Environment class.
- attenuation_units: str = 'frequency dependent'¶
- bottom_attenuation: float = 0.1¶
- bottom_boundary_condition: str = 'acousto-elastic'¶
- bottom_interp: str = 'linear'¶
- comment_pad: int = 50¶
- dimension: str = '2D'¶
- _dimension: int = 2¶
- frequency: float = 25000.0¶
- interference_mode: str = 'coherent'¶
- simulation_depth_scale: float = 1.01¶
- simulation_range_scale: float = 1.1¶
- simulation_cross_range_scale: float = 2.0¶
- simulation_cross_range_min: float = 10.0¶
- soundspeed_interp: str = 'linear'¶
- surface_depth: float = 0.0¶
- surface_interp: str = 'linear'¶
- volume_attenuation: str = 'none'¶