libALEC.pl
author Andreas Thurnherr <ant@ldeo.columbia.edu>
Mon, 13 Apr 2020 11:06:22 -0400
changeset 40 c1803ae2540f
parent 35 d3f6ca34c4ea
permissions -rw-r--r--
.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     1
#======================================================================
35
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 32
diff changeset
     2
#                    L I B A L E C . P L 
32
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     3
#                    doc: Wed Jun  1 20:38:19 2011
35
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 32
diff changeset
     4
#                    dlm: Mon Dec 18 10:29:08 2017
32
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     5
#                    (c) 2011 A.M. Thurnherr
35
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 32
diff changeset
     6
#                    uE-Info: 71 31 NIL 0 0 70 2 2 4 NIL ofnI
32
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     7
#======================================================================
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     8
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     9
# HISTORY:
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    10
#	Nov 15, 2017: - created
35
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 32
diff changeset
    11
#	Dec 18, 2017: - turned vel output into m/s
32
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    12
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    13
require "$ANTS/libvec.pl";
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    14
require "$ANTS/libfuns.pl";
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    15
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    16
#----------------------------------------------------------------------
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    17
# User Routines
35
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 32
diff changeset
    18
#	- from manual
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 32
diff changeset
    19
#	- also transform velocities to m/s
32
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    20
#----------------------------------------------------------------------
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    21
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    22
sub ALEC_u($$$$$$$)
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    23
{
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    24
    my($vx,$vy,$alpha,$compA,$compB,$beta,$magdec) =
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    25
		&antsFunUsage(7,'fffffff','<vx[cm/s]> <vy[cm/s]> <alpha> <compA> <compB> <beta>',@_);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    26
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    27
	my($c) = ALEC_vel_speed($vx,$vy,$alpha);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    28
	my($d) = ALEC_vel_dir($compA,$compB,$beta,$vx,$vy);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    29
	return vel_u($c,$d-$magdec);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    30
}
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    31
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    32
sub ALEC_v($$$$$$$)
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    33
{
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    34
    my($vx,$vy,$alpha,$compA,$compB,$beta,$magdec) =
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    35
		&antsFunUsage(7,'fffffff','<vx[cm/s]> <vy[cm/s]> <alpha> <compA> <compB> <beta>',@_);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    36
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    37
	my($c) = ALEC_vel_speed($vx,$vy,$alpha);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    38
	my($d) = ALEC_vel_dir($compA,$compB,$beta,$vx,$vy);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    39
	return vel_v($c,$d-$magdec);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    40
}
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    41
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    42
#------------------------------------------------------------------------------
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    43
# Routines mostly as per ALEC manual
35
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 32
diff changeset
    44
#		- weird atan corrections in manual cause data discontinuities
32
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    45
#			=> removed
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    46
#		- routines verified with first PITTA time series
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    47
# 	ALEC_vel_speed(vx,vy,alpha)
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    48
#	ALEC_heading(compA,compB,beta)
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    49
# 	ALEC_vel_instrument_dir(vx,vy)
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    50
# 	ALEC_vel_dir(compA,compB,beta,vx,vy)
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    51
#------------------------------------------------------------------------------
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    52
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    53
sub ALEC_vel_speed(@)
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    54
{
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    55
    my($vx,$vy,$alpha) = &antsFunUsage(3,'fff','<vx[cm/s]> <vy[cm/s]> <alpha>',@_);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    56
	my($ssq) = ($vx**2 + $vy**2);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    57
	return inf unless ($ssq > 1e-6);
35
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 32
diff changeset
    58
	return (1 + $alpha*(4*$vx**2*$vy**2)/($ssq**2)) * sqrt($ssq) / 100;
32
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    59
}
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    60
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    61
sub ALEC_heading(@)
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    62
{
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    63
    my($compA,$compB,$beta) =
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    64
        &antsFunUsage(3,'fff','<compass output A> <compass output B> <beta>',@_);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    65
    return angle_pos(deg(atan2($compA,$compB)) + $beta);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    66
}
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    67
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    68
sub ALEC_vel_instrument_dir($$)
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    69
{
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    70
    my($vx,$vy) = &antsFunUsage(2,'ff','<vx[cm/s]> <vy[cm/s]>',@_);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    71
	return deg(atan2($vx,$vy));
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    72
}
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    73
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    74
sub ALEC_vel_dir($$$$$)
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    75
{
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    76
    my($compA,$compB,$beta,$vx,$vy) =
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    77
        &antsFunUsage(5,'fffff','<compass output A> <compass output B> <beta> <vx[cm/s]> <vy[cm/s]>',@_);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    78
    return ALEC_heading($compA,$compB,$beta) + ALEC_vel_instrument_dir($vx,$vy);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    79
}
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    80
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    81
1;