#ifndef SPHERESTRUCT_H #define SPHERESTRUCT_H #include #include #include #include #include "fieldslice.h" #include "dataTypes.h" #include struct sphere { //sphere position bsPoint p; //sphere radius ptype a; //sphere material index unsigned int iMaterial; //GPU pointer to the scattered field produced by a plane wave // this is a function of cos(theta) and |r| (distance from sphere center) fieldslice Usp; fieldslice Uip; ptype d_min; ptype d_max; //sphere order int Nl; //refractive index for the current lambda bsComplex n; //external scattering coefficients std::vector B; //internal scattering coefficients std::vector A; sphere(ptype x = 0.0f, ptype y = 0.0f, ptype z = 0.0f, ptype a = 0.0f, int m = 0, int ang = 128) { this->p = bsPoint(x, y, z); this->a = a; this->iMaterial = m; //surface = fieldslice(ang, ang/2); } //assignment operator sphere & operator=(const sphere &rhs); //copy constructor sphere(const sphere &rhs); std::string toStr() { std::stringstream ss; ss< nfPlane, unsigned int R); void scalarUsp(bsComplex* h, int rR, int thetaR); void scalarUip(bsComplex* j, int aR, int thetaR); }; #endif