GoldFeniks / Ample

MIT License
6 stars 0 forks source link

Need some helpful Samples("hydrology" and "bathymetry") #5

Open xuliang5115 opened 3 days ago

xuliang5115 commented 3 days ago

AMPLE is very excellent, especially in computing the 3D sound field. I want to use it as ground-model of my model.

However, I have some confuse about the input of the speed of sound and terrain. If i want to use Munk-ssp as the hydrology sound speed profile, how could i do? Same to bathymetry, how could i input a complex bathymetry rather a stright line.

Looking forward to your reply, Many thanks.

GoldFeniks commented 3 days ago

Hello! You can specify a more complex bathymetry using a matrix stored, for example, in a text file. Say you have an area that stretches from 0 to 1000 meters over x direction and -1000 to 1000 meters over y direction with step size of 1 meter for both, then you can specify bathymetry as follows

{
        "type": "bathymetry",
        "dimensions": [
            {
                "n": 1001,
                "bounds": {
                    "a":  0,
                    "b":  1000
                }
            },
            {
                "n": 2001,
                "bounds": {
                    "a": -1000,
                    "b":  1000
                }
            }
        ],
        "values": "bathymetry.txt"
}

where bathymetry.txt is the text file with bottom depths. It must have 1001 lines (one for each x coordinate) and 2001 columns (one for each y coordinate). For hydrology you're able to provide sounds speeds in x,z plane only, i.e. several columns at different x coordinates. Similar to hydrology you can say

{
        "type": "hydrology",
        "dimensions": [
            {
                "n": 201,
                "bounds": {
                    "a":  0,
                    "b":  200
                }
            },
            {
                "n": 3,
                "bounds": {
                    "a": 0,
                    "b": 1000
                }
            }
        ],
        "values": "hydrology.txt"
}

3 water columns at x = 0, 500, 1000 each 200 meters deep. Please note that this time z coordinate is provided first. The file hydrology.txt has a similar format to bathymetry. There must be 201 rows (one for each z) and 3 columns (one for each x). You can think of it as 3 water sound speed profiles at different x. Additionally if the value is unknown (for example if some profiles are shorted or on a different grid) -1 can be put instead of the missing value. Please let me know if you have any other questions.

xuliang5115 commented 1 day ago

Many thanks for your reply. And i have another question about bathymetry.

For the Pekeris samples { "type": "bathymetry", "dimensions": [ 2, 2 ], "values": [ [200, 200], [200, 200] ] }, It works well. And I try to change the depth of bathymetry to deeper, because i have some SSP measure data between depth [0, 500]m. But there is a break without error description. { "type": "bathymetry", "dimensions": [ 2, 2 ], "values": [ [500, 500], [500, 500] ] }, I think there may be some limit in mode calculation step, so i change 500m to 400m, it works. I would like to ask if there is any setting that would allow me to calculate a waveguide with depth=500m.

Looking forward to your reply, Many thanks.

GoldFeniks commented 1 day ago

Yes, there's a specification for bottom layers (see here). By default bottom_layers is an array with a single element: 500 meters, it means that there's a single bottom layer that ends at 500 meters. Naturally, it has to be more than the deepest part of the bathymetry. Additionally you can set additive_depth parameter to true, so bottom_layers are instead treated as layer thickness instead of the absolute depth. For the default value of 500, the single bottom layer at every point ends at whatever the bathymetry depth is plus an extra 500 meters.