#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 */