/*! * \method Galerkin_Method * \brief calculate the element stiffness matrix * \author A. Lonkar */ void CPoissonSolver::Viscous_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config, unsigned short iMesh, unsigned short iRKStep) { unsigned long iElem, Point_0 = 0, Point_1 = 0, Point_2 = 0, Point_3 = 0; su2double *Coord_0 = NULL, *Coord_1= NULL, *Coord_2= NULL, *Coord_3 = NULL; if (nDim == 2 ) { for (iElem = 0; iElem < geometry->GetnElem(); iElem++) { Point_0 = geometry->elem[iElem]->GetNode(0); Point_1 = geometry->elem[iElem]->GetNode(1); Point_2 = geometry->elem[iElem]->GetNode(2); Coord_0 = geometry->node[Point_0]->GetCoord(); Coord_1 = geometry->node[Point_1]->GetCoord(); Coord_2 = geometry->node[Point_2]->GetCoord(); numerics->SetCoord(Coord_0, Coord_1, Coord_2); numerics->ComputeResidual(StiffMatrix_Elem, config); AddStiffMatrix(StiffMatrix_Elem, Point_0, Point_1, Point_2, Point_3); } } if (nDim == 3 ) { for (iElem = 0; iElem < geometry->GetnElem(); iElem++) { Point_0 = geometry->elem[iElem]->GetNode(0); Coord_0 = geometry->node[Point_0]->GetCoord(); Point_1 = geometry->elem[iElem]->GetNode(1); Coord_1 = geometry->node[Point_1]->GetCoord(); Point_2 = geometry->elem[iElem]->GetNode(2); Coord_2 = geometry->node[Point_2]->GetCoord(); Point_3 = geometry->elem[iElem]->GetNode(3); Coord_3 = geometry->node[Point_3]->GetCoord(); numerics->SetCoord(Coord_0, Coord_1, Coord_2, Coord_3); numerics->ComputeResidual(StiffMatrix_Elem, config); AddStiffMatrix(StiffMatrix_Elem, Point_0, Point_1, Point_2, Point_3); } } }
/*! * \method Galerkin_Method * \brief calculate the element stiffness matrix * \author A. Lonkar */ void CElectricSolver::Galerkin_Method(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config, unsigned short iMesh) { unsigned long iElem, Point_0 = 0, Point_1 = 0, Point_2 = 0, Point_3 = 0; double *Coord_0 = NULL, *Coord_1= NULL, *Coord_2= NULL, *Coord_3 = NULL; if (nDim == 2 ) { for (iElem = 0; iElem < geometry->GetnElem(); iElem++) { Point_0 = geometry->elem[iElem]->GetNode(0); Point_1 = geometry->elem[iElem]->GetNode(1); Point_2 = geometry->elem[iElem]->GetNode(2); Coord_0 = geometry->node[Point_0]->GetCoord(); Coord_1 = geometry->node[Point_1]->GetCoord(); Coord_2 = geometry->node[Point_2]->GetCoord(); numerics->SetCoord(Coord_0, Coord_1, Coord_2); numerics->ComputeResidual(StiffMatrix_Elem, config); AddStiffMatrix(StiffMatrix_Elem, Point_0, Point_1, Point_2, Point_3); } for (iElem = 0; iElem < geometry->GetnElem(); iElem++) { if (geometry->elem[iElem]->GetVTK_Type() == RECTANGLE) { Point_0 = geometry->elem[iElem]->GetNode(3); Point_1 = geometry->elem[iElem]->GetNode(0); Point_2 = geometry->elem[iElem]->GetNode(2); Coord_0 = geometry->node[Point_0]->GetCoord(); Coord_1 = geometry->node[Point_1]->GetCoord(); Coord_2 = geometry->node[Point_2]->GetCoord(); numerics->SetCoord(Coord_0, Coord_1, Coord_2); numerics->ComputeResidual(StiffMatrix_Elem, config); AddStiffMatrix(StiffMatrix_Elem,Point_0, Point_1, Point_2, Point_3); } } } if (nDim == 3 ) { for (iElem = 0; iElem < geometry->GetnElem(); iElem++) { if (geometry->elem[iElem]->GetVTK_Type() == TETRAHEDRON) { Point_0 = geometry->elem[iElem]->GetNode(0); Coord_0 = geometry->node[Point_0]->GetCoord(); Point_1 = geometry->elem[iElem]->GetNode(1); Coord_1 = geometry->node[Point_1]->GetCoord(); Point_2 = geometry->elem[iElem]->GetNode(2); Coord_2 = geometry->node[Point_2]->GetCoord(); Point_3 = geometry->elem[iElem]->GetNode(3); Coord_3 = geometry->node[Point_3]->GetCoord(); numerics->SetCoord(Coord_0, Coord_1, Coord_2, Coord_3); numerics->ComputeResidual(StiffMatrix_Elem, config); AddStiffMatrix(StiffMatrix_Elem, Point_0, Point_1, Point_2, Point_3); } if (geometry->elem[iElem]->GetVTK_Type() == HEXAHEDRON) { /* Tetrahedron: 1, nodes: [0,2,3,6] */ Point_0 = geometry->elem[iElem]->GetNode(0); Coord_0 = geometry->node[Point_0]->GetCoord(); Point_1 = geometry->elem[iElem]->GetNode(2); Coord_1 = geometry->node[Point_1]->GetCoord(); Point_2 = geometry->elem[iElem]->GetNode(3); Coord_2 = geometry->node[Point_2]->GetCoord(); Point_3 = geometry->elem[iElem]->GetNode(6); Coord_3 = geometry->node[Point_3]->GetCoord(); numerics->SetCoord(Coord_0, Coord_1, Coord_2, Coord_3); numerics->ComputeResidual(StiffMatrix_Elem, config); AddStiffMatrix(StiffMatrix_Elem, Point_0, Point_1, Point_2, Point_3); /******************/ /* Tetrahedron: 2, nodes: [0,3,7,6] */ Point_0 = geometry->elem[iElem]->GetNode(0); Coord_0 = geometry->node[Point_0]->GetCoord(); Point_1 = geometry->elem[iElem]->GetNode(3); Coord_1 = geometry->node[Point_1]->GetCoord(); Point_2 = geometry->elem[iElem]->GetNode(7); Coord_2 = geometry->node[Point_2]->GetCoord(); Point_3 = geometry->elem[iElem]->GetNode(6); Coord_3 = geometry->node[Point_3]->GetCoord(); numerics->SetCoord(Coord_0, Coord_1, Coord_2, Coord_3); numerics->ComputeResidual(StiffMatrix_Elem, config); AddStiffMatrix(StiffMatrix_Elem, Point_0, Point_1, Point_2, Point_3); /******************/ /* Tetrahedron: 3, nodes: [0,7,4, 6] */ Point_0 = geometry->elem[iElem]->GetNode(0); Coord_0 = geometry->node[Point_0]->GetCoord(); Point_1 = geometry->elem[iElem]->GetNode(7); Coord_1 = geometry->node[Point_1]->GetCoord(); Point_2 = geometry->elem[iElem]->GetNode(4); Coord_2 = geometry->node[Point_2]->GetCoord(); Point_3 = geometry->elem[iElem]->GetNode(6); Coord_3 = geometry->node[Point_3]->GetCoord(); numerics->SetCoord(Coord_0, Coord_1, Coord_2, Coord_3); numerics->ComputeResidual(StiffMatrix_Elem, config); AddStiffMatrix(StiffMatrix_Elem, Point_0, Point_1, Point_2, Point_3); /******************/ /* Tetrahedron: 4, nodes: [0,5,6,4] */ Point_0 = geometry->elem[iElem]->GetNode(0); Coord_0 = geometry->node[Point_0]->GetCoord(); Point_1 = geometry->elem[iElem]->GetNode(5); Coord_1 = geometry->node[Point_1]->GetCoord(); Point_2 = geometry->elem[iElem]->GetNode(6); Coord_2 = geometry->node[Point_2]->GetCoord(); Point_3 = geometry->elem[iElem]->GetNode(4); Coord_3 = geometry->node[Point_3]->GetCoord(); numerics->SetCoord(Coord_0, Coord_1, Coord_2, Coord_3); numerics->ComputeResidual(StiffMatrix_Elem, config); AddStiffMatrix(StiffMatrix_Elem, Point_0, Point_1, Point_2, Point_3); /******************/ /* Tetrahedron: 5, nodes: [1,5,6,0] */ Point_0 = geometry->elem[iElem]->GetNode(1); Coord_0 = geometry->node[Point_0]->GetCoord(); Point_1 = geometry->elem[iElem]->GetNode(5); Coord_1 = geometry->node[Point_1]->GetCoord(); Point_2 = geometry->elem[iElem]->GetNode(6); Coord_2 = geometry->node[Point_2]->GetCoord(); Point_3 = geometry->elem[iElem]->GetNode(0); Coord_3 = geometry->node[Point_3]->GetCoord(); numerics->SetCoord(Coord_0, Coord_1, Coord_2, Coord_3); numerics->ComputeResidual(StiffMatrix_Elem, config); AddStiffMatrix(StiffMatrix_Elem, Point_0, Point_1, Point_2, Point_3); /******************/ /* Tetrahedron: 6, nodes: [1,6,2,0] */ Point_0 = geometry->elem[iElem]->GetNode(1); Coord_0 = geometry->node[Point_0]->GetCoord(); Point_1 = geometry->elem[iElem]->GetNode(6); Coord_1 = geometry->node[Point_1]->GetCoord(); Point_2 = geometry->elem[iElem]->GetNode(2); Coord_2 = geometry->node[Point_2]->GetCoord(); Point_3 = geometry->elem[iElem]->GetNode(0); Coord_3 = geometry->node[Point_3]->GetCoord(); numerics->SetCoord(Coord_0, Coord_1, Coord_2, Coord_3); numerics->ComputeResidual(StiffMatrix_Elem, config); AddStiffMatrix(StiffMatrix_Elem, Point_0, Point_1, Point_2, Point_3); /******************/ } } } }