Skip to content

weakly-scattering prolate spheroid #29

@jmjech

Description

@jmjech

In reviewing code to calculate the scattering by a weakly-scattering prolate spheroid found in:
https://github.com/CRIMAC-WP4-Machine-learning/Prol_Spheroid,
I compared their results to those in echoSMs and to the benchmark.

The results and parameters are in the attached file, WkProlateSpheroid.ods.

The Prol_Spheroid results matched the benchmark quite well, with some errors at the nulls. Their code bombed when I got to 258 kHz (for a prolate spheroid with a=0.07 m and b=0.01 m), which is why there are no values beyond this frequency.

However, the echoSMS PSMS model did not fare as well. I ran this on a google cloud workstation, linux-base e2-standard-8.

Here is my code:

from echosms import PSMSModel, BenchmarkData, ReferenceModels
from sys import exit
import numpy as np

rm = ReferenceModels()
# help(rm)
# dir(rm)
rm_type = 'weakly scattering prolate spheroid'
print('Reference model selected: {0}'.format(rm_type))
# select the model
model = PSMSModel()
# the reference model target type information
rm_spec = rm.specification(rm_type)
# get the parameters for that reference model target type
rm_par = rm.parameters(rm_type)

bmd = BenchmarkData()
bmd_pd = bmd.freq_dataset  # this is a Pandas DataFrame
# benchmark data column names
bmd_colnames = bmd_pd.columns
# map the reference model to the benchmark data column
rmbmd_map = {}
for i in range(len(bmd_colnames)-1):
    rmbmd_map[rm.names()[i]] = bmd_colnames[i+1]

# benchmark target selection
# match the benchmark data to the reference model
if (rm_type not in rmbmd_map.keys()):
    print('Reference Model:  {0} does not have benchmark data. Exiting'.format(rm_type))
    exit()
bmd_type = rmbmd_map[rm_type]

# use the same frequencies as the benchmark, convert to Hz
rm_par['f'] = bmd_pd['frequency (kHz)']*1e3
rm_par['theta'] = 90

TS = model.calculate_ts(rm_par)

# comparison to the benchmark data
jech_index = np.mean(np.abs(TS - bmd_pd[bmd_type]))

WkProlateSpheroid.ods

I did find the echoSMs PSMS model calculated for the full range of f and was considerably faster (but I didn't do any time trials).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions