libALEC.pl
author Andreas Thurnherr <ant@ldeo.columbia.edu>
Mon, 27 Nov 2017 11:22:41 -0500
changeset 33 f891ea33a728
parent 32 4c6434bb5124
child 35 d3f6ca34c4ea
permissions -rw-r--r--
after Hamburg visit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     1
#======================================================================
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     2
#                    . . / L I B / L I B A L E C . P L 
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     3
#                    doc: Wed Jun  1 20:38:19 2011
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     4
#                    dlm: Thu Nov 16 09:20:00 2017
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     5
#                    (c) 2011 A.M. Thurnherr
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     6
#                    uE-Info: 36 30 NIL 0 0 70 2 2 4 NIL ofnI
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
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    11
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    12
require "$ANTS/libvec.pl";
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    13
require "$ANTS/libfuns.pl";
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    14
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
# User Routines
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    17
#----------------------------------------------------------------------
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    18
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    19
sub ALEC_u($$$$$$$)
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
    my($vx,$vy,$alpha,$compA,$compB,$beta,$magdec) =
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    22
		&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
    23
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    24
	my($c) = ALEC_vel_speed($vx,$vy,$alpha);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    25
	my($d) = ALEC_vel_dir($compA,$compB,$beta,$vx,$vy);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    26
	return vel_u($c,$d-$magdec);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    27
}
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    28
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    29
sub ALEC_v($$$$$$$)
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
    my($vx,$vy,$alpha,$compA,$compB,$beta,$magdec) =
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    32
		&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
    33
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    34
	my($c) = ALEC_vel_speed($vx,$vy,$alpha);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    35
	my($d) = ALEC_vel_dir($compA,$compB,$beta,$vx,$vy);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    36
	return vel_v($c,$d-$magdec);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    37
}
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    38
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    39
#------------------------------------------------------------------------------
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    40
# Routines mostly as per ALEC manual
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    41
#		- weird atan corrections cause data discontinuities
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    42
#			=> removed
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    43
#		- routines verified with first PITTA time series
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    44
# 	ALEC_vel_speed(vx,vy,alpha)
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    45
#	ALEC_heading(compA,compB,beta)
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    46
# 	ALEC_vel_instrument_dir(vx,vy)
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    47
# 	ALEC_vel_dir(compA,compB,beta,vx,vy)
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    48
#------------------------------------------------------------------------------
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    49
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    50
sub ALEC_vel_speed(@)
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
    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
    53
	my($ssq) = ($vx**2 + $vy**2);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    54
	return inf unless ($ssq > 1e-6);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    55
	return (1 + $alpha*(4*$vx**2*$vy**2)/($ssq**2)) * sqrt($ssq);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    56
}
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    57
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    58
sub ALEC_heading(@)
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
    my($compA,$compB,$beta) =
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    61
        &antsFunUsage(3,'fff','<compass output A> <compass output B> <beta>',@_);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    62
    return angle_pos(deg(atan2($compA,$compB)) + $beta);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    63
}
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    64
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    65
sub ALEC_vel_instrument_dir($$)
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
    my($vx,$vy) = &antsFunUsage(2,'ff','<vx[cm/s]> <vy[cm/s]>',@_);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    68
	return deg(atan2($vx,$vy));
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
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    71
sub ALEC_vel_dir($$$$$)
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
    my($compA,$compB,$beta,$vx,$vy) =
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    74
        &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
    75
    return ALEC_heading($compA,$compB,$beta) + ALEC_vel_instrument_dir($vx,$vy);
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    76
}
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    77
4c6434bb5124 before Hamburg
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    78
1;