3 import "goby/protobuf/option_extensions.proto";
5 package netsim.bellhop.protobuf;
10 // PARAMETERS THAT BECOME THE BELLHOP ENV FILE
13 optional string title = 1 [
14 (goby.field).description =
15 "Title of this environmental file for your use",
16 default = "Environmental File"
18 optional uint32 freq = 2
19 [(goby.field).description = "Hertz", default = 25000];
20 optional Output output = 3
21 [(goby.field).description =
22 "Parameters governing the output of BELLHOP"];
23 optional Surface surface = 4
24 [(goby.field).description = "Parameters that model the sea surface"];
25 repeated WaterColumn water_column = 5
26 [(goby.field).description = "Parameters that model the water column"];
27 optional Bottom bottom = 6
28 [(goby.field).description = "Parameters that model the sea floor"];
29 optional Sources sources = 7 [(goby.field).description =
30 "Parameters that determine acoustic "
31 "\"source(s)\" in the ray trace"];
32 optional Receivers receivers = 8
33 [(goby.field).description =
34 "Parameters that determine the acoustic \"receiver(s)\" in the "
36 optional Beams beams = 9
37 [(goby.field).description =
38 "Parameters that govern the beams used in the ray trace"];
47 COHERENT_PRESSURE = 4;
48 INCOHERENT_PRESSURE = 5;
49 SEMICOHERENT_PRESSURE = 6;
51 optional OutputType type = 1 [
52 (goby.field).description =
53 "Type of ray trace to perform and file to output(ARR, RAY, or "
55 default = INCOHERENT_PRESSURE
66 REFLECTION_COEFFICIENT = 4;
68 optional MediumType type = 1
69 [(goby.field).description = "The type of the medium"];
70 optional Attenuation attenuation = 2
71 [(goby.field).description =
72 "Attenuation parameters of the medium; only used for type == "
74 optional double cp = 3 [(goby.field).description =
75 "The compressional speed (m/s) of the "
76 "medium; only used for type == HALF_SPACE"];
77 optional double cs = 4 [(goby.field).description =
78 "The shear speed (m/s) of the medium; only "
79 "used for type == HALF_SPACE"];
80 optional double density = 5
81 [(goby.field).description =
82 "Density in g/cm^3; only used for type == HALF_SPACE"];
83 optional double depth = 6
84 [(goby.field).description =
85 "The depth of this medium interface (0 = surface)"];
86 repeated RCSample rc_sample = 7
87 [(goby.field).description = "rc table vs angle"];
91 optional double angle = 1
92 [(goby.field).description = "Grazing angle"];
93 optional double rc = 2
94 [(goby.field).description = "Reflection Coefficient in dB"];
95 optional double phase = 3
96 [(goby.field).description = "Phase angle in degrees"];
108 DB_PER_WAVELENGTH = 6;
110 optional Units units = 1
111 [(goby.field).description =
112 "Must use same units for surface and bottom attenuation"];
113 optional double value = 2;
119 optional Medium medium = 1;
124 enum SSPInterpolation
130 optional SSPInterpolation interpolation_type = 1 [
131 (goby.field).description =
132 "The method used to interpolate the discrete sound speed "
133 "profile (SSP) points",
134 default = CUBIC_SPLINE
136 repeated double eof_coef = 2
137 [(goby.field).description = "EOF coefficient"];
138 optional bool use_attenuation = 3 [
139 (goby.field).description = "Enable Thorpe volume attenuation",
142 repeated SSPSample sample = 4;
145 optional double depth = 1
146 [(goby.field).description =
147 "The depth of this sample (positive, measured from the "
149 optional double cp = 2
150 [(goby.field).description =
151 "The compressional speed at this point"];
152 repeated double eof = 3
153 [(goby.field).description = "EOF at this depth"];
155 optional double range = 5 [
156 (goby.field).description = "Range of range dependent SVP",
159 optional double bathymetry = 6 [
160 (goby.field).description = "Bathymetry for range dependent SVP",
167 optional Medium medium = 1;
172 optional uint32 number_in_depth = 1
173 [(goby.field).description =
174 "The number of sources vertically; sources are all assumed to "
176 optional SourcePosition first = 2
177 [(goby.field).description =
178 "The position of the shallowest source"];
179 optional SourcePosition last = 3
180 [(goby.field).description = "The position of the deepest source"];
182 message SourcePosition
184 optional double depth = 1;
190 optional uint32 number_in_depth = 1
191 [(goby.field).description = "The number of receivers vertically"];
192 optional uint32 number_in_range = 2
193 [(goby.field).description = "The number of receivers horizontally"];
195 optional ReceiverPosition first = 3
196 [(goby.field).description =
197 "The position of the shallowest source at the closest range"];
198 optional ReceiverPosition last = 4
199 [(goby.field).description =
200 "The position of the deepest source at the furthest range"];
201 message ReceiverPosition
203 optional double depth = 1;
204 optional double range = 2;
210 enum ApproximationType
217 optional ApproximationType approximation_type = 1
218 [(goby.field).description =
219 "The method used to approximate the finite element shape used "
221 optional int32 theta_min = 2 [
222 (goby.field).description =
223 "The smallest ray angle used in the ray trace. theta=0 is "
227 optional int32 theta_max = 3 [
228 (goby.field).description =
229 "The largest ray angle. theta=0 is horizontal",
232 optional uint32 number = 4
233 [(goby.field).description = "The number of rays used", default = 0];
237 // PARAMETERS THAT GOVERN CREATION OF THE BELLHOP ENV FILE (in iBellhop)
240 optional AdaptiveInfo adaptive_info = 100
241 [(goby.field).description =
242 "Not used in the BELLHOP ENV file, but used by iBellhop to "
243 "adaptively populate certain fields of this message"];
247 optional string contact = 1
248 [(goby.field).description =
249 "The name of a contact (NAME= field in NODE_REPORT) used to "
250 "find the `source` position in the ray trace."];
251 optional string ownship = 2
252 [(goby.field).description =
253 "The name of our vehicle (NAME= field in NODE_REPORT). If "
254 "omitted, the Community name is used. This is used to find "
255 "the `receiver` position(s) in the ray trace"];
257 optional bool read_shd = 3 [
258 (goby.field).description =
259 "Read the generated SHD file (if applicable) and parse it into "
260 "a list of TL values. Currently used for the BHV_AcommsDepth",
264 optional bool full_shd_matrix = 10 [
265 (goby.field).description =
266 "Add entire matrix of SHD file output as serialized_tl_matrix "
271 optional bool auto_receiver_ranges = 4 [
272 (goby.field).description =
273 "If true, the `receiver.first.range` and `receiver.last.range` "
274 "will be set automatically based on the current trajectory of "
275 "the `ownship` and `contact` based on the lastest NODE_REPORT. "
276 "The calculated window will be the predicted position from now "
277 "until `look_ahead_seconds` in the future.",
281 optional int32 auto_receiver_ranges_delta = 7 [
282 (goby.field).description =
283 "Delta in meters between receivers when using "
284 "auto_receiver_ranges==true",
288 optional uint32 look_ahead_seconds = 5 [
289 (goby.field).description =
290 "The number of seconds to look ahead for when calculated "
291 "receiver ranges using `auto_receiver_ranges`",
295 optional bool auto_source_depth = 6 [
296 (goby.field).description =
297 "If true, set `source.first.depth` based on the position of "