ExtrapolatePulsarSpins.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2005, 2006 Reinhard Prix
00003  *
00004  *  This program is free software; you can redistribute it and/or modify
00005  *  it under the terms of the GNU General Public License as published by
00006  *  the Free Software Foundation; either version 2 of the License, or
00007  *  (at your option) any later version.
00008  *
00009  *  This program is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *  GNU General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU General Public License
00015  *  along with with program; see the file COPYING. If not, write to the
00016  *  Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
00017  *  MA  02111-1307  USA
00018  */
00019 
00020 /** \defgroup ExtrapolatePulsarSpins Extrapolate Pulsar Spins and Phase
00021  *  \ingroup pulsarCommon
00022  *  \author Reinhard Prix
00023  *  \date $Date: 2008/04/08 09:42:33 $
00024  *  \brief  Extrapolate the Pulsar spin-paramters
00025  *  \f$\{f^{(k)}\}\equiv\{f, \stackrel{.}{f},\ddot{f},...\}\f$, and "spin-ranges"
00026  * \f$\{ f^{(k)}, \Delta f^{(k)} \}\f$ from one SSB epoch to another.
00027  *
00028  * The central function of this module is LALExtrapolatePulsarSpinRange(), which extrapolates
00029  * a complete "spin range" (defined as LALPulsarSpinRange) from one epoch to another.
00030  * A "spin-range" contains an epoch, and \em two vectors, \f$f^{(k)}\f$ and \f$\Delta f^{(k)}\f$
00031  * (where "canonical" ordering refers to \f$\Delta f^{(k)} >= 0\f$ for all k.
00032  *
00033  *
00034  * The extrapolation is defined by the pulsar spindown-model:
00035  * \f[ f(\tau_1) = f(\tau_0) + {\stackrel{.}{f}(\tau_0) \over 1!} \,\Delta\tau
00036  *     + {\ddot{f}(\tau_0) \over 2!} \,\Delta\tau^2 + ...
00037  *  = \sum_{k=0}^s {f^{(k)}(\tau_0) \over k!}\, \Delta\tau^k\,,
00038  * \f]
00039  * where \f[\Delta\tau \equiv \tau_1 - \tau_0\f\,,\f]
00040  * and therefore generally
00041  *
00042  * \f[
00043  * f^{(l)}(\tau_1) = \sum_{k=0}^{s - l} { f^{(k+l)}(\tau_0) \over k! }\, \Delta\tau^k\,.
00044  * \f]
00045  *
00046  * This expression is used to extrapolate a whole "spin-range", namely at each spindown-order \f$(l)\f$
00047  * the extrapolated range is given by
00048  * \f[
00049  * \min\left[ f^{(l)}(\tau_1) \right] = \sum_{k=0}^{s - l} {1\over k!} \min\left[ f^{(k+l)}(\tau_0) \, \Delta\tau^k \right]\,.
00050  * \f]
00051  *
00052  * \f[
00053  * \max\left[ f^{(l)}(\tau_1) \right] = \sum_{k=0}^{s - l} {1\over k!} \max\left[ f^{(k+l)}(\tau_0) \, \Delta\tau^k \right]\,.
00054  * \f]
00055  *
00056  * This ensures that the range will be correctly extrapolated even if \f$\tau_1 < \tau_0\f$, i.e. \f$\Delta\tau < 0\f$.
00057  *
00058  */
00059 
00060 /** \file
00061  * \ingroup ExtrapolatePulsarSpins
00062  * \author Reinhard Prix
00063  * \date $Date: 2008/04/08 09:42:33 $
00064  * \brief Contains prototype for XLALExtrapolatePulsarSpins().
00065  */
00066 
00067 #ifndef _EXTRAPOLATEPULSARSPINS_H  /* Double-include protection. */
00068 #define _EXTRAPOLATEPULSARSPINS_H
00069 
00070 #include <lal/PulsarDataTypes.h>
00071 #include <lal/AVFactories.h>
00072 
00073 #ifdef  __cplusplus   /* C++ protection. */
00074 extern "C" {
00075 #endif
00076 
00077 NRCSID( EXTRAPOLATEPULSARSPINSH, "$Id: ExtrapolatePulsarSpins.h,v 1.11 2008/04/08 09:42:33 reinhard Exp $");
00078 
00079 /*---------- exported INCLUDES ----------*/
00080 
00081 /*---------- exported DEFINES ----------*/
00082 
00083 /*----- Error-codes -----*/
00084 
00085 #define EXTRAPOLATEPULSARSPINS_ENULL            1
00086 #define EXTRAPOLATEPULSARSPINS_ENONULL          2
00087 #define EXTRAPOLATEPULSARSPINS_EMEM             3
00088 #define EXTRAPOLATEPULSARSPINS_EINPUT           4
00089 #define EXTRAPOLATEPULSARSPINS_ELIST            5
00090 #define EXTRAPOLATEPULSARSPINS_EXLAL            6
00091 #define EXTRAPOLATEPULSARSPINS_ENUMSPINS        7
00092 
00093 #define EXTRAPOLATEPULSARSPINS_MSGENULL         "Arguments contained an unexpected null pointer"
00094 #define EXTRAPOLATEPULSARSPINS_MSGENONULL       "Output pointer is not NULL"
00095 #define EXTRAPOLATEPULSARSPINS_MSGEMEM          "Out of memory"
00096 #define EXTRAPOLATEPULSARSPINS_MSGEINPUT        "Invald input parameter"
00097 #define EXTRAPOLATEPULSARSPINS_MSGELIST         "Error occurred in list-handling ..."
00098 #define EXTRAPOLATEPULSARSPINS_MSGEXLAL         "(X)LAL sub-routine failed"
00099 #define EXTRAPOLATEPULSARSPINS_MSGENUMSPINS     "Inconsistent number of spins"
00100 
00101 /*---------- exported TYPES ----------*/
00102 
00103 /*---------- exported Global variables ----------*/
00104 
00105 /*---------- exported prototypes [API] ----------*/
00106 void LALExtrapolatePulsarSpinRange( LALStatus *, PulsarSpinRange *range1, LIGOTimeGPS epoch1,  const PulsarSpinRange *range0 );
00107 
00108 void LALExtrapolatePulsarSpins (LALStatus *, PulsarSpins fkdot1, LIGOTimeGPS epoch1, const PulsarSpins fkdot0, LIGOTimeGPS epoch0 );
00109 
00110 void LALExtrapolatePulsarPhase (LALStatus *, REAL8 *phi1, PulsarSpins fkdot1, LIGOTimeGPS epoch1, REAL8 phi0, LIGOTimeGPS epoch0 );
00111 
00112 int XLALExtrapolatePulsarSpins ( PulsarSpins fkdotOut, const PulsarSpins fkdotIn, REAL8 DeltaTau );
00113 
00114 #ifdef  __cplusplus
00115 }
00116 #endif  /* C++ protection. */
00117 
00118 #endif  /* Double-include protection. */

Generated on Sun Sep 7 03:06:36 2008 for LAL by  doxygen 1.5.2