libGM76.pl
author Andreas Thurnherr <ant@ldeo.columbia.edu>
Mon, 13 Apr 2020 11:06:22 -0400
changeset 40 c1803ae2540f
parent 39 56bdfe65a697
permissions -rw-r--r--
.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     1
#======================================================================
38
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
     2
#                    L I B G M 7 6 . P L 
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     3
#                    doc: Sun Feb 20 14:43:47 2011
39
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
     4
#                    dlm: Sat Apr  6 19:33:05 2019
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     5
#                    (c) 2011 A.M. Thurnherr
39
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
     6
#                    uE-Info: 34 48 NIL 0 0 70 2 2 4 NIL ofnI
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     7
#======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     8
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     9
# HISTORY:
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    10
#	Feb 20, 2011: - created
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    11
#	Feb 28, 2011: - cosmetics
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    12
#	Mar 28, 2012: - BUG: N had been ignored (but only affects vertical
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    13
#						 wavelengths > 1000m in any was significantly
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    14
#				  - changed from Munk eqn 9.23b to 9.23a, which also
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    15
#					affects only long wavelengths
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    16
#				  - return nan for omega outside internal-wave band
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    17
#	Mar 29, 2012: - re-wrote using definition of B(omega) from Munk (1981)
3
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    18
#	Aug 23, 2012: - cosmetics?
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    19
#	Sep  7, 2012: - made N0, E0, b, jstar global
4
ff72b00b4342 after adding $pi and some other stuff
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 3
diff changeset
    20
#	Dec 28, 2012: - added allowance for small roundoff error to Sw()
7
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
    21
#	Oct  6, 2014: - made omega optional in Sw()
10
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 7
diff changeset
    22
#	Nov 18, 2014: - made b & jstar mandatory for Sw()
38
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
    23
#	Feb  2, 2019: - renamed from libGM.pl to libGM76.pl
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
    24
#				  - replaced beta with m
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
    25
#				  - replaced old code based on Gregg + Kunze formalism with
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
    26
#					expressions from Thurnherr et al. (GRL 2015)
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
    27
#				  - added GM_strain
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
    28
#				  - BUG: Sw usage message had wrong parameter order
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
    29
#				  - renamed Sw => GM_VKE; Su_z => GM_shear
39
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
    30
#	Mar 31, 2019: - updated doc for shear and strain spectra
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
    31
#	Apr  1, 2019: - added GM_vdiv
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
    32
#	Apr  5, 2019: - BUG: GM_VKE was erroneous (argument shifting was wrong)
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
    33
#				  - adapted to improved antsFunUsage()
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
    34
#	Apr  6, 2019: - fiddled during debugging of fs_finestructure issue
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    35
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    36
require "$ANTS/libEOS83.pl";
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    37
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    38
my($pi) = 3.14159265358979;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    39
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    40
#======================================================================
3
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    41
# Global Constants
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    42
#======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    43
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    44
$GM_N0 = 5.24e-3;   # rad/s			# reference stratification (from Gregg + Kunze, 1991)
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    45
$GM_E0 = 6.3e-5;	# dimensionless # spectral level (Munk 1981)
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    46
$GM_b  = 1300;		# m				# pycnocline e-folding scale
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    47
$GM_jstar = 3;		# dimless		# peak mode number
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    48
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    49
#======================================================================
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    50
# Vertical velocity spectral density
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    51
#
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    52
# Units: K.E. per frequency per wavenumber [m^2/s^2*1/s*1/m = m^3/s]
38
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
    53
# Version: GM76
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    54
#
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    55
# E. Kunze (email, Feb 2011): The GM vertical velocity w spectrum is described by
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    56
#
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    57
# S[w](omega, k_z) = PI*E_0*b*{f*sqrt(omega^2-f^2)/omega}*{j*/(k_z + k_z*)^2}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    58
#
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    59
# where E_0 = 6.3 x 10^-5 is the dimensionless spectral level, b = 1300 m is
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    60
# the pycnocline lengthscale, j* = 3 the peak mode number and k_z* the
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    61
# corresponding vertical wavenumber.  The flat log-log spectrum implies w is
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    62
# dominated by near-N frequencies (where we know very little though Yves
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    63
# Desaubies wrote some papers back in the late 70's/early 80's about the
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    64
# near-N peak) and low modes.  The rms w = 0.6 cm/s, right near your noise
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    65
# level.  Interestingly, the only N dependence is in m and m*.  As far
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    66
# as I know, little is known about its intermittency compared to horizontal
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    67
# velocity.  Since w WKB-scales inversely with N, the largest signals should
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    68
# be in the abyss where you therefore likely have the best chance of
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    69
# measuring it.
7
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
    70
#
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
    71
# E. Kunze (email, Sep 19, 2013):
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
    72
#
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
    73
# S[w](omega, m) = PI*E0*b*[f*sqrt(omega^2-f^2)/omega]*[jstar/(m+mstar)^2] with
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
    74
#
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
    75
# S[w](m) = PI*E0*b*N*f*[jstar/(m+mstar)^2]
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
    76
#
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
    77
# where the nondimensional spectral energy level E0 = 6.3e-5, stratification
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
    78
# lengthscale b = 1500 m, jstar = 3, mstar = jstar*PI*N/b/N0, and N0 =
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
    79
# 5.3e-3 rad/s.
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
    80
#
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
    81
# NOTES:
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
    82
#	- b=1500m is a likely typo, as Gregg & Kunze (1991) have b=1300m
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
    83
#	- k_z == m
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
    84
#    
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    85
#======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    86
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    87
sub m($$)	# vertical wavenumber as a function of mode number & stratification params
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    88
{
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    89
	my($j,$N,$omega) = @_;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    90
4
ff72b00b4342 after adding $pi and some other stuff
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 3
diff changeset
    91
	return defined($omega) && ($omega <= $GM_N0)
3
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    92
		   ? $pi / $GM_b * sqrt(($N**2 - $omega**2) / ($GM_N0**2 - $omega**2)) * $j
7
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
    93
		   : $pi * $j * $N / ($GM_b * $GM_N0);		# valid, except in vicinity of buoyancy turning frequency (Munk 1981, p.285)
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    94
}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    95
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    96
sub B($)											# structure function (omega dependence)
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    97
{													# NB: f must be defined
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    98
	my($omega) = @_;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    99
	croak("coriolis parameter not defined\n")
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   100
		unless defined($f);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   101
	return 2 / $pi * $f / $omega / sqrt($omega**2 - $f**2);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   102
}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   103
38
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   104
sub GM_VKE(@)
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   105
{
10
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 7
diff changeset
   106
	my($omega,$m,$lat,$b,$jstar,$N) =
39
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   107
		&antsFunUsage(-5,'fffff','GM_VKE([frequency[1/s]] <vertical wavenumber[rad/m]> <lat[deg]> <b[m]> <j*> <N[rad/s]>)',@_);
3
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   108
7
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
   109
	if (defined($N)) {									# Sw(omega,m)
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
   110
		local($f) = abs(&f($lat));
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
   111
		$omega += $PRACTICALLY_ZERO if ($omega < $f);
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
   112
		$omega -= $PRACTICALLY_ZERO if ($omega > $N);
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
   113
		return nan if ($omega < $f || $omega > $N);
10
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 7
diff changeset
   114
		my($mstar) = &m($jstar,$N,$omega);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 7
diff changeset
   115
		return $GM_E0 * $b * 2 * $f**2/$omega**2/B($omega) * $jstar / ($m+$mstar)**2;
38
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   116
	} else {											# Sw(m), i.e. integrated over all omega; as in Thurnherr et al., GRL 2015
39
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   117
		$N = $jstar;  $jstar = $b;						# shift arguments to account for missing omega
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   118
		$b = $lat; $lat = $m;
7
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
   119
		local($f) = abs(&f($lat));
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
   120
		$m = $omega;
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
   121
		undef($omega);
10
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 7
diff changeset
   122
		my($mstar) = &m($jstar,$N);
3dfa16523886 whoosher version
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 7
diff changeset
   123
		return $pi * $GM_E0 * $b * $N * $f * $jstar / ($m+$mstar)**2;
7
f7b4692ad805 just before adding simplified layout/param definition
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 4
diff changeset
   124
	}
3
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   125
}
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   126
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   127
#----------------------------------------------------------------------
39
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   128
# Vertical Divergence (normalized by N)
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   129
#	- implemented to investigate shear-to-vertical divergence ratio
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   130
#	- S[w_z/N] = S[w_z] / N^2 = S[w] * m^2 / N^2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   131
#	- GM shear-to-vd variance ratio = 3N/2f
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   132
#	- GM strain-to-vd variance ratio = N/2f
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   133
#----------------------------------------------------------------------
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   134
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   135
sub GM_vdiv(@)
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   136
{
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   137
	my($m,$lat,$b,$jstar,$N) =
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   138
		&antsFunUsage(5,'fffff','GM_vdiv(<vertical wavenumber[rad/m]> <lat[deg]> <b[m]> <j*> <N[rad/s]>)',@_);
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   139
	return GM_VKE($m,$lat,$b,$jstar,$N) * $m**2 / $N**2;
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   140
}
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   141
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   142
#----------------------------------------------------------------------
38
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   143
# Shear and Strain m-spectra (i.e. integrated over f)
39
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   144
#	- shear is buoyancy-frequency normalized
38
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   145
#	- spectral density
39
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   146
#	- from Thurnherr et al. (GRL 2015), which is from email info
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   147
#	  Eric Kunze, 04/22/2015: First, the standard GHP parameterization that I
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   148
#	  implement uses either the N-normalized shear or strain spectra. The GM
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   149
#	  versions of these are
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   150
#		S[V_z/N](m) = (3*PI/2)*E0*b*jstar*m^2/(m+mstar)^2 and
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   151
#		S[Z_z](m) = (PI/2)*E0*b*jstar*m^2/(m+mstar)^2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   152
#	  though in practice mstar is not particularly important because the
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   153
#	  variance of both these quantities is dominated by high m.
3
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   154
#----------------------------------------------------------------------
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   155
38
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   156
sub GM_shear(@)
3
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   157
{
38
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   158
	my($m,$lat,$b,$jstar,$N) =
39
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   159
		&antsFunUsage(5,'fffff','GM_shear(<vertical wavenumber[rad/m]> <lat[deg]> <b[m]> <j*> <N[rad/s]>)',@_);
38
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   160
	local($f) = abs(&f($lat));
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   161
	my($mstar) = &m($jstar,$N);
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   162
	return 3 * $pi/2 * $GM_E0 * $b * $jstar * $m**2 / ($m+$mstar)**2;
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   163
}
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   164
38
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   165
sub GM_strain(@)
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   166
{
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   167
	my($m,$lat,$b,$jstar,$N) =
39
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 38
diff changeset
   168
		&antsFunUsage(5,'fffff','GM_strain(<vertical wavenumber[rad/m]> <lat[deg]> <b[m]> <j*> <N[rad/s]>)',@_);
38
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   169
	local($f) = abs(&f($lat));
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   170
	my($mstar) = &m($jstar,$N);
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   171
	return $pi/2 * $GM_E0 * $b * $jstar * $m**2 / ($m+$mstar)**2;
3
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   172
}
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   173
38
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   174
##----------------------------------------------------------------------
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   175
## GM76, as per Gregg and Kunze (JGR 1991)
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   176
##	- beta is vertical wavenumber
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   177
##----------------------------------------------------------------------
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   178
#
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   179
#sub Su($$)
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   180
#{
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   181
#	my($beta,$N) = @_;
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   182
#
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   183
#	my($beta_star) = &m($GM_jstar,$N);				# A3
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   184
#	return 3*$GM_E0*$GM_b**3*$GM_N0**2 / (2*$GM_jstar*$pi) / (1+$beta/$beta_star)**2;	# A2
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   185
#}
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   186
#
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   187
#sub Su_z($$)
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   188
#{
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   189
#	my($beta,$N) = &antsFunUsage(2,'ff','<vertical wavenumber[rad/m]> <N[rad/s]>',@_);
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   190
#	return $beta**2 * &Su($beta,$N);
15c603bc4f70 after UK cruise
Andreas Thurnherr <ant@ldeo.columbia.edu>
parents: 15
diff changeset
   191
#}
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   192
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
   193
1;