Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public DoubleArray SmoothFourierReflectiveBC(double width)
- {
- Complex[] bed = new Complex[Length*2];
- //double norm = 1.0 / Math.Sqrt(2 * Math.PI * width * width);
- for (int i=0;i<Length;i++)
- {
- bed[i] = this[i];
- bed[Length*2-1-i] = this[i];
- }
- MathNet.Numerics.IntegralTransforms.Fourier.Forward(bed);
- for (int i = 0; i < Length * 2; i++)
- {
- double k = i;
- if (k>Length) k = Length*2 - i;
- k = k / (2*Length);
- double a2 = 2 * width * width * Math.PI * Math.PI * k * k;
- bed[i] *= Math.Exp(-a2);
- }
- MathNet.Numerics.IntegralTransforms.Fourier.Inverse(bed);
- DoubleArray da = new DoubleArray(Length);
- for (int i = 0; i < Length; i++)
- {
- da[i] = bed[i].Real;
- }
- return da;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement