30 #ifndef GRALE_MULTIPLESQUARELENS_H
32 #define GRALE_MULTIPLESQUARELENS_H
34 #include "graleconfig.h"
55 const std::list<SquareLensInfo> &
getLensInfo()
const {
return m_lensInfo; }
58 bool write(serut::SerializationInterface &si)
const;
59 bool read(serut::SerializationInterface &si);
61 std::list<SquareLensInfo> m_lensInfo;
72 bool getProjectedPotential(
double D_s,
double D_ds,
Vector2D<double> theta,
double *pPotentialValue)
const;
73 bool getAlphaVectorDerivatives(
Vector2D<double> theta,
double &axx,
double &ayy,
double &axy)
const;
75 bool getSuggestedScales(
double *pDeflectionScale,
double *pPotentialScale)
const;
76 bool getCLParameterCounts(
int *pNumIntParams,
int *pNumFloatParams)
const;
77 bool getCLParameters(
double deflectionScale,
double potentialScale,
int *pIntParams,
float *pFloatParams)
const;
78 std::string getCLProgram(std::string &subRoutineName)
const;
79 int getCLSubLenses()
const {
return numlenses; }
83 static double deflectionFunction1(
double x,
double y) {
return (0.5*y*LN(x*x+y*y)+x*ATAN(y/x)); }
84 static double deflectionFunction2(
double x,
double y) {
return (0.5*x*LN(x*x+y*y)+y*ATAN(x/y)); }
85 static double deriv11(
double x,
double y) {
return ATAN(y/x); }
86 static double deriv22(
double x,
double y) {
return ATAN(x/y); }
87 static double deriv12(
double x,
double y) {
return 0.5*LN(x*x+y*y); }
88 static double potential(
double x,
double y) {
return 0.5*(x*x*ATAN(y/x)+y*y*ATAN(x/y)+x*y*(LN(x*x+y*y))); }
98 #endif // GRALE_MULTIPLESQUARELENS_H