3
|
1 |
#======================================================================
|
|
2 |
# L I B G H P . P L
|
|
3 |
# doc: Fri Sep 7 09:56:08 2012
|
47
|
4 |
# dlm: Wed Aug 11 13:12:52 2021
|
3
|
5 |
# (c) 2012 A.M. Thurnherr
|
47
|
6 |
# uE-Info: 38 0 NIL 0 0 70 2 2 4 NIL ofnI
|
3
|
7 |
#======================================================================
|
|
8 |
|
|
9 |
# HISTORY:
|
|
10 |
# Sep 7, 2012: - created
|
|
11 |
# Oct 22, 2012: - cosmetics
|
46
|
12 |
# Jul 14, 2021: - BUG: adapted to new libGM name
|
47
|
13 |
# Aug 11, 2021: - modified j() to handle N<f
|
3
|
14 |
|
|
15 |
require "$ANTS/libfuns.pl"; # arccosh
|
46
|
16 |
require "$ANTS/libGM76.pl"; # GM_N0
|
3
|
17 |
|
|
18 |
#----------------------------------------------------------------------------
|
|
19 |
# h(R_omega) correction factor for different shear/strain (R_omega) ratios
|
|
20 |
# - this version from Kunze et al. (2006)
|
|
21 |
# - R_omega:
|
|
22 |
# = (N^2-omega^2)/N^2 (omega^2+f^2)/(omega^2-f^2) Polzin et al. 1995
|
|
23 |
# = (omega^2+f^2)/(omega^2-f^2) Kunze et al. 2006
|
|
24 |
# - the Kunze et al formulation is presumably an approximation valid for
|
|
25 |
# omega<<N
|
|
26 |
#----------------------------------------------------------------------------
|
|
27 |
|
|
28 |
sub h1($)
|
|
29 |
{
|
|
30 |
my($R_omega) = @_;
|
|
31 |
return 3*($R_omega+1) / (2*sqrt(2)*$R_omega*sqrt($R_omega-1));
|
|
32 |
}
|
|
33 |
|
47
|
34 |
sub h2($)
|
|
35 |
{
|
|
36 |
my($R_omega) = @_;
|
|
37 |
return 1/(6*sqrt(2)) * $R_omega*($R_omega+1) / sqrt($R_omega-1);
|
|
38 |
}
|
|
39 |
|
3
|
40 |
#----------------------------------------------------------------------------
|
|
41 |
# j(f,N) correction factor for latitude
|
|
42 |
# - this version from Kunze et al. (2006)
|
47
|
43 |
# - if N<f, N/f = 1 assumed
|
3
|
44 |
#----------------------------------------------------------------------------
|
|
45 |
|
|
46 |
sub j(@)
|
|
47 |
{
|
|
48 |
my($f,$N) = @_;
|
47
|
49 |
|
|
50 |
$f = abs($f);
|
|
51 |
return 0 if ($f < 1e-6);
|
|
52 |
|
|
53 |
my($f30) = &f(30);
|
|
54 |
|
3
|
55 |
$N = $GM_N0 unless defined($N);
|
47
|
56 |
$N = $f unless ($N > $f);
|
|
57 |
|
3
|
58 |
return $f*acosh($N/$f) / ($f30*acosh($GM_N0/$f30));
|
|
59 |
}
|
|
60 |
|
|
61 |
1;
|