#ifndef TSCREEN_H
#define TSCREEN_H
/**
@author Richard J. Mathar
@since 2007-02-08
Richard J. Mathar homepage.
*/
#include
#include
#include
#include
#include "KarhLoe.h"
#include
/** An anonymous collection of eigenvalues and eigenvectors.
* @author Richard J. Mathar
* @since 2007-03-12
*/
class Eigen {
public:
double eval ;
vector< std::complex > evect ;
protected:
private:
} ;
bool operator< (const Eigen & left, const Eigen & right) ;
/** Taylor screens at constant velocity.
* A set of Taylor screens (movies of screens based on KqBasis)
* @author Richard J. Mathar
* @since 2006-11-29
*/
class TScreen : public KqBasis {
public:
/** pupil/dish diameter [m]
*/
double D ;
/** Taylor screen velocity [m/s]
*/
double v ;
/** Fried parameter [m]
*/
double r0 ;
/** the collection of eigenvectors and associated eigenvalues.
* The component eval stores only the imaginary part since all
* the eigenvalues are purely imaginary here. The corresponding KL
* eigenmodes and in consequence the Taylor eigenmodes have not yet
* been multiplied by the (D/r0)^5/6 factor.
*/
vector eV ;
TScreen(const double diam, const double vel, const double fried, const int see, const int qmax, const int N, const int ord) ;
~TScreen() ;
void eScreen(const int evNo, bool reNotIm) ;
void out(bool mapletype, char *fits, const bool eigNotfilm = true) ;
void film(const double tstep, const int frames) ;
protected:
private:
/** The dynamic matrix. We keep this in simple pointer arithmetic because this allows straight
* interfacing with the LAPACK library.
*/
double *dmat ;
/** The edge length of the dynamic matrix.
*/
int dmatN ;
/** the vector of the screens that are eigenfunctions of the
* dynamic matrix.
*/
vector tScreen ;
#if 0
int azOverl(r,c) ;
#endif
void makeFroz(const std::complex * xibeta) ;
double * dynMat() ;
vector dynMatDia() ;
} ;
#endif /* TSCREEN_H */