/* * private Matrix GetVariableMatrixOnElement(FiniteElement element, double ksi, double eta) * { * Matrix VariableMatrix = new Matrix(4, 4); * Vector du = previousRes.DU(ksi, eta, element); * double d1u1 = du[0]; * double d3u3 = du[1]; * double d3u1 = du[2]; * double d1u3 = du[3]; * * VariableMatrix[0, 0] = 1.5 * M1 * d1u1 + 0.5 * M2 * d3u3; * VariableMatrix[0, 1] = M2 * d3u3 + M2 * d1u1; * VariableMatrix[0, 2] = M2 * d3u1 + G13 * (2 * d3u1 + d1u3); * VariableMatrix[0, 3] = M1 * d1u3 + G13 * d1u1; * * VariableMatrix[1, 1] = 1.5 * M3 * d3u3 + 0.5 * M2 * d1u1; * VariableMatrix[1, 2] = M3 * d3u1 + G13 * d1u3; * VariableMatrix[1, 3] = M2 * d1u3 + G13 * (2 * d1u3 + d3u1); * * VariableMatrix[2, 2] = 0.5 * M3 * d3u3 + (0.5 * M2 + G13)*d1u1; * VariableMatrix[2, 3] = G13 * (d3u3 + d1u1); * * VariableMatrix[3, 3] = 0.5 * M1 * d1u1 + (0.5 * M2 + G13) * d3u3; * * return VariableMatrix; * }*/ private Matrix GetLocalDerivativeMatrix(FiniteElement element, double ksi, double eta) { Matrix LocalDerivativeMatrix = new Matrix(8, 4); Matrix gradNksieta = new Matrix(2, 4); gradNksieta[0, 0] = (eta - 1) * 0.25; gradNksieta[1, 0] = (ksi - 1) * 0.25; gradNksieta[0, 1] = (1 - eta) * 0.25; gradNksieta[1, 1] = (-ksi - 1) * 0.25; gradNksieta[0, 2] = (eta + 1) * 0.25; gradNksieta[1, 2] = (ksi + 1) * 0.25; gradNksieta[0, 3] = (-eta - 1) * 0.25; gradNksieta[1, 3] = (1 - ksi) * 0.25; Jacobian J = new Jacobian(); J.Element = element; Matrix gradN = J.GetInverseJacobian(ksi, eta) * gradNksieta; LocalDerivativeMatrix[0, 0] = LocalDerivativeMatrix[1, 3] = gradN[0, 0]; LocalDerivativeMatrix[2, 0] = LocalDerivativeMatrix[3, 3] = gradN[0, 1]; LocalDerivativeMatrix[4, 0] = LocalDerivativeMatrix[5, 3] = gradN[0, 2]; LocalDerivativeMatrix[6, 0] = LocalDerivativeMatrix[7, 3] = gradN[0, 3]; LocalDerivativeMatrix[1, 1] = LocalDerivativeMatrix[0, 2] = gradN[1, 0]; LocalDerivativeMatrix[3, 1] = LocalDerivativeMatrix[2, 2] = gradN[1, 1]; LocalDerivativeMatrix[5, 1] = LocalDerivativeMatrix[4, 2] = gradN[1, 2]; LocalDerivativeMatrix[7, 1] = LocalDerivativeMatrix[6, 2] = gradN[1, 3]; return(LocalDerivativeMatrix); }
private Matrix LocalStiffnessMatrixFunction(double ksi, double eta) { Matrix derivativeMatrix = GetLocalDerivativeMatrix(elementCurrent, ksi, eta); Jacobian J = new Jacobian(); J.Element = elementCurrent; //Matrix VariableMatrixOnElement = GetVariableMatrixOnElement(elementCurrent, ksi, eta); return(derivativeMatrix * ConstMatrix * Matrix.Transpose(derivativeMatrix) * J.GetJacobianDeterminant(ksi, eta)); }
private Matrix LocalVectorFunction(double ksi, double eta) { Matrix derivativeMatrix = GetLocalDerivativeMatrix(elementCurrent, ksi, eta); Jacobian J = new Jacobian(); J.Element = elementCurrent; Matrix VariableVectorOnElement = GetVariableVectorOnElement(elementCurrent, ksi, eta); return(derivativeMatrix * VariableVectorOnElement * J.GetJacobianDeterminant(ksi, eta)); }