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); }
public SurfaceIntegrationPoint(ParametricPoint parametricPosition, ParametricPoint quadraturePointValue, ISurfaceShape surfaceShape) { this.ParametricPosition = parametricPosition; this.QuadratureValue = quadraturePointValue; this.RealPosition = this.calculateRealPosition(surfaceShape); this.Jacobian = this.calculateJacobian(surfaceShape); }
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)); }
// 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)); }