public double CalculateJacobian(ParametricPoint parametricPosition)
        {
            double d1w      = 0.0;
            double d2w      = 0.0;
            double d3w      = 0.0;
            double d1v      = 0.0;
            double d2v      = 0.0;
            double d3v      = 0.0;
            double Jacobian = 0.0;

            for (int direction1 = 0; direction1 < this.SurfaceDegree; direction1++)
            {
                for (int direction2 = 0; direction2 < this.SurfaceDegree; direction2++)
                {
                    d1w += this.V[direction1, direction2].x * BaseFunction(parametricPosition.v, direction1) * BaseFunctionDerivative(parametricPosition.w, direction2);
                    d2w += this.V[direction1, direction2].y * BaseFunction(parametricPosition.v, direction1) * BaseFunctionDerivative(parametricPosition.w, direction2);

                    d1v += this.V[direction1, direction2].x * BaseFunctionDerivative(parametricPosition.v, direction1) * BaseFunction(parametricPosition.w, direction2);
                    d2v += this.V[direction1, direction2].y * BaseFunctionDerivative(parametricPosition.v, direction1) * BaseFunction(parametricPosition.w, direction2);
                }
            }
            double A = d2w * d3v - d2v * d3w;
            double B = d3w * d1v - d3v * d1w;
            double C = d1w * d2v - d1v * d2w;

            Jacobian = (double)Math.Sqrt(A * A + B * B + C * C);

            return(Jacobian);
        }
Пример #2
0
 public SurfaceIntegrationPoint(ParametricPoint parametricPosition, ParametricPoint quadraturePointValue, ISurfaceShape surfaceShape)
 {
     this.ParametricPosition = parametricPosition;
     this.QuadratureValue    = quadraturePointValue;
     this.RealPosition       = this.calculateRealPosition(surfaceShape);
     this.Jacobian           = this.calculateJacobian(surfaceShape);
 }
Пример #3
0
        private ParametricPoint calculateParametricPosition(ParametricPoint quadraturePointPosition, double quadratureRangeBegining, double quadratureRangeEnd)
        {
            double v = (double)0.5 * (quadraturePointPosition.v + 1);
            double w = (double)0.5 * (quadraturePointPosition.w + 1);

            return(new ParametricPoint(v, w));
        }
Пример #4
0
        // public double diffusionCoefficientTimeValue { get; set; }

        public SurfaceIntegrationPoint(int[] index, ParametricPoint quadraturePointPosition, double quadratureRangeBegining, double quadratureRangeEnd, ParametricPoint quadraturePointValue, double temperatureValue, ISurfaceShape surfaceShape)
        {
            this.Index = index;
            this.QuadraturePointPosition = quadraturePointPosition;
            this.ParametricPosition      = this.calculateParametricPosition(quadraturePointPosition, quadratureRangeBegining, quadratureRangeEnd);
            this.QuadratureValue         = quadraturePointValue;
            this.RealPosition            = this.calculateRealPosition(surfaceShape);
            this.Jacobian                       = this.calculateJacobian(surfaceShape);
            this.TemperatureValue               = temperatureValue;
            this.FunctionqConstantValue         = new List <double>();
            this.FunctionTConstantValue         = new List <double>();
            this.InitialConditionConstantValues = new List <double>();
        }
        public RealPoint CalculateRealPosition(ParametricPoint parametricPosition)
        {
            double x = 0.0;
            double y = 0.0;

            for (int direction1 = 0; direction1 < this.SurfaceDegree; direction1++)
            {
                for (int direction2 = 0; direction2 < this.SurfaceDegree; direction2++)
                {
                    x += this.V[direction1, direction2].x * BaseFunction(parametricPosition.v, direction1) * BaseFunction(parametricPosition.w, direction2);
                    y += this.V[direction1, direction2].y * BaseFunction(parametricPosition.v, direction1) * BaseFunction(parametricPosition.w, direction2);
                }
            }

            return(new RealPoint(x, y));
        }