Example #1
0
        private float PhillipsSpectrum(PhillipsParameter parameter)
        {
            var kNormalized = Math.Sqrt(parameter.K.Kx * parameter.K.Kx + parameter.K.Ky * parameter.K.Ky);
            var L           = parameter.WindSpeed * parameter.WindSpeed / parameter.G;

            var kx = parameter.K.Kx / kNormalized;
            var ky = parameter.K.Ky / kNormalized;

            var windkdot = kx * parameter.WindDirection.X + ky * parameter.WindDirection.Y;

            return((float)(parameter.A / (kNormalized * kNormalized * kNormalized * kNormalized) *
                           Math.Exp(-1.0 / (kNormalized * kNormalized * L * L)) * windkdot * windkdot));
        }
Example #2
0
        public Complex[][] Create()
        {
            var result        = new float[Size][];
            var complexResult = new Complex[Size][];

            float max = 0;

            for (var i = 0; i < Size; i++)
            {
                result[i]        = new float[Size];
                complexResult[i] = new Complex[Size];

                for (var j = 0; j < Size; j++)
                {
                    var parameter = new PhillipsParameter
                    {
                        K = new K
                        {
                            Kx = (float)(2.0 * Math.PI / Size) * (-Size / 2 + i),
                            Ky = (float)(2.0 * Math.PI / Size) * (-Size / 2 + j)
                        },
                        WindDirection = new WindDirection
                        {
                            X = 1,
                            Y = 0.7f
                        },

                        WindSpeed = 10000,
                        G         = (float)9.81,
                        A         = 100
                    };

                    complexResult[i][j]  = CalculateH0(PhillipsSpectrum(parameter));
                    complexResult[i][j] += Complex.Conjugate(complexResult[i][j]);
                }
            }


            return(complexResult);
        }