Sound speed profile handling with interpolation, derivatives, and environment management
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public, | parameter | :: | MaxSSP | = | 100001 | |
integer, | public | :: | iSegr | = | 1 | ||
integer, | public | :: | iSegx | = | 1 | ||
integer, | public | :: | iSegy | = | 1 | ||
integer, | public | :: | iSegz | = | 1 | ||
real(kind=8), | public | :: | zTemp | ||||
real(kind=8), | public | :: | betaPowerLaw | = | 1 | ||
real(kind=8), | public | :: | fT | = | 1D20 | ||
real(kind=8), | public | :: | alphaR | = | 1500 | ||
real(kind=8), | public | :: | betaR | = | 0 | ||
real(kind=8), | public | :: | alphaI | = | 0 | ||
real(kind=8), | public | :: | betaI | = | 0 | ||
real(kind=8), | public | :: | rhoR | = | 1 | ||
type(SSPStructure), | public | :: | SSP | ||||
type(BdryType), | public | :: | Bdry |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=8), | public, | ALLOCATABLE | :: | r(:) | |||
real(kind=8), | public, | ALLOCATABLE | :: | x(:) | |||
real(kind=8), | public, | ALLOCATABLE | :: | y(:) | |||
real(kind=8), | public, | ALLOCATABLE | :: | z(:) |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | NPts | ||||
integer, | public | :: | Nr | ||||
integer, | public | :: | Nx | ||||
integer, | public | :: | Ny | ||||
integer, | public | :: | Nz | ||||
real(kind=8), | public | :: | z(MaxSSP) | ||||
real(kind=8), | public | :: | rho(MaxSSP) | ||||
complex(kind=8), | public | :: | c(MaxSSP) | ||||
complex(kind=8), | public | :: | cz(MaxSSP) | ||||
complex(kind=8), | public | :: | n2(MaxSSP) | ||||
complex(kind=8), | public | :: | n2z(MaxSSP) | ||||
complex(kind=8), | public | :: | cSpline(4,MaxSSP) | ||||
complex(kind=8), | public | :: | cCoef(4,MaxSSP) | ||||
complex(kind=8), | public | :: | CSWork(4,MaxSSP) | ||||
real(kind=8), | public, | ALLOCATABLE | :: | cMat(:,:) | |||
real(kind=8), | public, | ALLOCATABLE | :: | czMat(:,:) | |||
real(kind=8), | public, | ALLOCATABLE | :: | cMat3(:,:,:) | |||
real(kind=8), | public, | ALLOCATABLE | :: | czMat3(:,:,:) | |||
type(rxyz_vector), | public | :: | Seg | ||||
character(len=1), | public | :: | Type | ||||
character(len=2), | public | :: | AttenUnit |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=8), | public | :: | alphaR | ||||
real(kind=8), | public | :: | alphaI | ||||
real(kind=8), | public | :: | betaR | ||||
real(kind=8), | public | :: | betaI | ||||
complex(kind=8), | public | :: | cP | ||||
complex(kind=8), | public | :: | cS | ||||
real(kind=8), | public | :: | rho | ||||
real(kind=8), | public | :: | Depth | ||||
character(len=1), | public | :: | BC | ||||
character(len=6), | public | :: | Opt |
Evaluates sound speed profile at given location
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | x(2) | |||
real(kind=8), | intent(in) | :: | t(2) | |||
real(kind=8), | intent(out) | :: | c | |||
real(kind=8), | intent(out) | :: | cimag | |||
real(kind=8), | intent(out) | :: | gradc(2) | |||
real(kind=8), | intent(out) | :: | crr | |||
real(kind=8), | intent(out) | :: | crz | |||
real(kind=8), | intent(out) | :: | czz | |||
real(kind=8), | intent(out) | :: | rho | |||
real(kind=8), | intent(in) | :: | freq | |||
character(len=3), | intent(in) | :: | Task |
Converts cartesian gradients to polar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | x2D(2) | |||
real(kind=8), | intent(in) | :: | t2D(2) | |||
real(kind=8), | intent(out) | :: | c | |||
real(kind=8), | intent(out) | :: | cimag | |||
real(kind=8), | intent(out) | :: | gradc(2) | |||
real(kind=8), | intent(out) | :: | crr | |||
real(kind=8), | intent(out) | :: | crz | |||
real(kind=8), | intent(out) | :: | czz | |||
real(kind=8), | intent(out) | :: | rho | |||
real(kind=8), | intent(in) | :: | xs(3) | |||
real(kind=8), | intent(in) | :: | tradial(2) | |||
real(kind=8), | intent(in) | :: | freq |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | x(3) | |||
real(kind=8), | intent(in) | :: | t(3) | |||
real(kind=8), | intent(out) | :: | c | |||
real(kind=8), | intent(out) | :: | cimag | |||
real(kind=8), | intent(out) | :: | gradc(3) | |||
real(kind=8), | intent(out) | :: | cxx | |||
real(kind=8), | intent(out) | :: | cyy | |||
real(kind=8), | intent(out) | :: | czz | |||
real(kind=8), | intent(out) | :: | cxy | |||
real(kind=8), | intent(out) | :: | cxz | |||
real(kind=8), | intent(out) | :: | cyz | |||
real(kind=8), | intent(out) | :: | rho | |||
real(kind=8), | intent(in) | :: | freq | |||
character(len=3), | intent(in) | :: | Task |
Linear interpolation for squared buoyancy frequency
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | x(2) | |||
real(kind=8), | intent(in) | :: | t(2) | |||
real(kind=8), | intent(out) | :: | c | |||
real(kind=8), | intent(out) | :: | cimag | |||
real(kind=8), | intent(out) | :: | gradc(2) | |||
real(kind=8), | intent(out) | :: | crr | |||
real(kind=8), | intent(out) | :: | crz | |||
real(kind=8), | intent(out) | :: | czz | |||
real(kind=8), | intent(out) | :: | rho | |||
real(kind=8), | intent(in) | :: | freq | |||
character(len=3), | intent(in) | :: | Task |
c-linear interpolation of SSP data
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | x(2) | |||
real(kind=8), | intent(in) | :: | t(2) | |||
real(kind=8), | intent(out) | :: | c | |||
real(kind=8), | intent(out) | :: | cimag | |||
real(kind=8), | intent(out) | :: | gradc(2) | |||
real(kind=8), | intent(out) | :: | crr | |||
real(kind=8), | intent(out) | :: | crz | |||
real(kind=8), | intent(out) | :: | czz | |||
real(kind=8), | intent(out) | :: | rho | |||
real(kind=8), | intent(in) | :: | freq | |||
character(len=3), | intent(in) | :: | Task |
PCHIP for interpolation of sound speed
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | x(2) | |||
real(kind=8), | intent(in) | :: | t(2) | |||
real(kind=8), | intent(out) | :: | c | |||
real(kind=8), | intent(out) | :: | cimag | |||
real(kind=8), | intent(out) | :: | gradc(2) | |||
real(kind=8), | intent(out) | :: | crr | |||
real(kind=8), | intent(out) | :: | crz | |||
real(kind=8), | intent(out) | :: | czz | |||
real(kind=8), | intent(out) | :: | rho | |||
real(kind=8), | intent(in) | :: | freq | |||
character(len=3), | intent(in) | :: | Task |
Cubic spline interpolation for sound speed
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | x(2) | |||
real(kind=8), | intent(in) | :: | t(2) | |||
real(kind=8), | intent(out) | :: | c | |||
real(kind=8), | intent(out) | :: | cimag | |||
real(kind=8), | intent(out) | :: | gradc(2) | |||
real(kind=8), | intent(out) | :: | crr | |||
real(kind=8), | intent(out) | :: | crz | |||
real(kind=8), | intent(out) | :: | czz | |||
real(kind=8), | intent(out) | :: | rho | |||
real(kind=8), | intent(in) | :: | freq | |||
character(len=3), | intent(in) | :: | Task |
Quadrilateral interpolation for sound speed profiles
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | x(2) | |||
real(kind=8), | intent(in) | :: | t(2) | |||
real(kind=8), | intent(out) | :: | c | |||
real(kind=8), | intent(out) | :: | cimag | |||
real(kind=8), | intent(out) | :: | gradc(2) | |||
real(kind=8), | intent(out) | :: | crr | |||
real(kind=8), | intent(out) | :: | crz | |||
real(kind=8), | intent(out) | :: | czz | |||
real(kind=8), | intent(out) | :: | rho | |||
real(kind=8), | intent(in) | :: | freq | |||
character(len=3), | intent(in) | :: | Task |
Trilinear hexahedral interpolation of SSP data
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | x(3) | |||
real(kind=8), | intent(in) | :: | t(3) | |||
real(kind=8), | intent(out) | :: | c | |||
real(kind=8), | intent(out) | :: | cimag | |||
real(kind=8), | intent(out) | :: | gradc(3) | |||
real(kind=8), | intent(out) | :: | cxx | |||
real(kind=8), | intent(out) | :: | cyy | |||
real(kind=8), | intent(out) | :: | czz | |||
real(kind=8), | intent(out) | :: | cxy | |||
real(kind=8), | intent(out) | :: | cxz | |||
real(kind=8), | intent(out) | :: | cyz | |||
real(kind=8), | intent(out) | :: | rho | |||
real(kind=8), | intent(in) | :: | freq | |||
character(len=3), | intent(in) | :: | Task |
$ IF ( x( 2 ) < 5000.0 ) THEN $ ELSE $ ! Homogeneous half-space $ xt = 2.0 * ( 5000.0 - 1300.0 ) / 1300.0 $ c = C0 * ( 1.0 + 0.00737 * ( xt - 1.0 + EXP( -xt ) ) ) $ cimag = 0.0 $ cz = 0.0 $ czz = 0.0 $ END IF
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | x(2) | |||
real(kind=8), | intent(in) | :: | t(2) | |||
real(kind=8), | intent(out) | :: | c | |||
real(kind=8), | intent(out) | :: | cimag | |||
real(kind=8), | intent(out) | :: | gradc(2) | |||
real(kind=8), | intent(out) | :: | crr | |||
real(kind=8), | intent(out) | :: | crz | |||
real(kind=8), | intent(out) | :: | czz | |||
real(kind=8), | intent(out) | :: | rho |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | x(2) | |||
real(kind=8), | intent(in) | :: | t(2) | |||
real(kind=8), | intent(out) | :: | c | |||
real(kind=8), | intent(out) | :: | cimag | |||
real(kind=8), | intent(out) | :: | gradc(2) | |||
real(kind=8), | intent(out) | :: | crr | |||
real(kind=8), | intent(out) | :: | crz | |||
real(kind=8), | intent(out) | :: | czz | |||
real(kind=8), | intent(out) | :: | rho |
$ IF ( x( 3 ) .LT. 5000.0 ) THEN $ ELSE ! HOMOGENEOUS HALF-SPACE $ W = 2.0 * ( 5000.0 - 1300.0 ) / 1300.0 $ c = c0*( 1.0 + 0.00737 * ( W - 1.0 + EXP( -W ) ) ) $ gradc( 2 ) = 0.0 $ gradc( 3 ) = 0.0 $ czz = 0.0 $ cyz = 0.0 $ END IF
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | x(3) | |||
real(kind=8), | intent(in) | :: | t(3) | |||
real(kind=8), | intent(out) | :: | c | |||
real(kind=8), | intent(out) | :: | cimag | |||
real(kind=8), | intent(out) | :: | gradc(3) | |||
real(kind=8), | intent(out) | :: | cxx | |||
real(kind=8), | intent(out) | :: | cyy | |||
real(kind=8), | intent(out) | :: | czz | |||
real(kind=8), | intent(out) | :: | cxy | |||
real(kind=8), | intent(out) | :: | cxz | |||
real(kind=8), | intent(out) | :: | cyz | |||
real(kind=8), | intent(inout) | :: | rho |
Reads SSP data from the environmental file and convert to Nepers/m
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | Depth | |||
real(kind=8), | intent(in) | :: | freq |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | x(2) | |||
real(kind=8), | intent(in) | :: | t(2) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | x(2) | |||
real(kind=8), | intent(in) | :: | t(2) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | x(3) | |||
real(kind=8), | intent(in) | :: | t(3) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | x(3) | |||
real(kind=8), | intent(in) | :: | t(3) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8), | intent(in) | :: | x(3) | |||
real(kind=8), | intent(in) | :: | t(3) |