121 std::vector<double> &evenFieldSampling) {
122 std::vector<double> fourierCoefficients(2 * accuracy - 1);
127 RealValues[ii] = evenFieldSampling[i];
128 RealValues[iii] = evenFieldSampling[i];
131 gsl_fft_real_wavetable *
real = gsl_fft_real_wavetable_alloc(2 *
num_gridpz_m);
132 gsl_fft_real_workspace *work = gsl_fft_real_workspace_alloc(2 *
num_gridpz_m);
136 gsl_fft_real_workspace_free(work);
137 gsl_fft_real_wavetable_free(
real);
140 fourierCoefficients[0] = RealValues[0] / (2 *
num_gridpz_m);
141 for(
int i = 1; i < 2 * accuracy - 1; i++) {
145 return fourierCoefficients;
149 double interiorDerivative, base;
150 double coskzl, sinkzl, z = 0.0;
152 std::vector<double> higherDerivatives[3];
161 for(
int l = 1; l < accuracy; ++l) {
162 int coefIndex = 2 * l - 1;
164 interiorDerivative = base;
165 coskzl = std::cos(kz * l);
166 sinkzl = std::sin(kz * l);
168 higherDerivatives[0][i] += interiorDerivative * (-fourierComponents[coefIndex] * sinkzl
169 - fourierComponents[coefIndex + 1] * coskzl);
170 interiorDerivative *= base;
171 higherDerivatives[1][i] += interiorDerivative * (-fourierComponents[coefIndex] * coskzl
172 + fourierComponents[coefIndex + 1] * sinkzl);
173 interiorDerivative *= base;
174 higherDerivatives[2][i] += interiorDerivative * (fourierComponents[coefIndex] * sinkzl
175 + fourierComponents[coefIndex + 1] * coskzl);
179 for(
int i = 1; i < 4; ++i) {
FLieGenerator< T, N > real(const FLieGenerator< std::complex< T >, N > &)
Take real part of a complex generator.