Created
June 17, 2018 13:18
-
-
Save w1th0utnam3/749d7fdad0a3c82213a1fc48f7be06f9 to your computer and use it in GitHub Desktop.
tabulate_tensor function generated by FFC with default parameters for Laplace with P2(Tetrahedron) elements
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void tabulate_tensor_A( | |
double* restrict A, | |
const double* const* w, | |
const double* restrict coordinate_dofs, | |
int cell_orientation) | |
{ | |
// Precomputed values of basis functions and precomputations | |
// FE* dimensions: [entities][points][dofs] | |
// PI* dimensions: [entities][dofs][dofs] or [entities][dofs] | |
// PM* dimensions: [entities][dofs][dofs] | |
alignas(32) static const double FE9_C0_D001_Q4[1][1][2] = { { { -1.0, 1.0 } } }; | |
// Unstructured piecewise computations | |
const double J_c4 = coordinate_dofs[1] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[7] * FE9_C0_D001_Q4[0][0][1]; | |
const double J_c8 = coordinate_dofs[2] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[11] * FE9_C0_D001_Q4[0][0][1]; | |
const double J_c5 = coordinate_dofs[1] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[10] * FE9_C0_D001_Q4[0][0][1]; | |
const double J_c7 = coordinate_dofs[2] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[8] * FE9_C0_D001_Q4[0][0][1]; | |
const double J_c0 = coordinate_dofs[0] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[3] * FE9_C0_D001_Q4[0][0][1]; | |
const double J_c1 = coordinate_dofs[0] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[6] * FE9_C0_D001_Q4[0][0][1]; | |
const double J_c6 = coordinate_dofs[2] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[5] * FE9_C0_D001_Q4[0][0][1]; | |
const double J_c3 = coordinate_dofs[1] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[4] * FE9_C0_D001_Q4[0][0][1]; | |
const double J_c2 = coordinate_dofs[0] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[9] * FE9_C0_D001_Q4[0][0][1]; | |
alignas(32) double sp[80]; | |
sp[0] = J_c4 * J_c8; | |
sp[1] = J_c5 * J_c7; | |
sp[2] = sp[0] + -1 * sp[1]; | |
sp[3] = J_c0 * sp[2]; | |
sp[4] = J_c5 * J_c6; | |
sp[5] = J_c3 * J_c8; | |
sp[6] = sp[4] + -1 * sp[5]; | |
sp[7] = J_c1 * sp[6]; | |
sp[8] = sp[3] + sp[7]; | |
sp[9] = J_c3 * J_c7; | |
sp[10] = J_c4 * J_c6; | |
sp[11] = sp[9] + -1 * sp[10]; | |
sp[12] = J_c2 * sp[11]; | |
sp[13] = sp[8] + sp[12]; | |
sp[14] = sp[2] / sp[13]; | |
sp[15] = J_c3 * (-1 * J_c8); | |
sp[16] = sp[4] + sp[15]; | |
sp[17] = sp[16] / sp[13]; | |
sp[18] = sp[11] / sp[13]; | |
sp[19] = sp[14] * sp[14]; | |
sp[20] = sp[14] * sp[17]; | |
sp[21] = sp[18] * sp[14]; | |
sp[22] = sp[17] * sp[17]; | |
sp[23] = sp[18] * sp[17]; | |
sp[24] = sp[18] * sp[18]; | |
sp[25] = J_c2 * J_c7; | |
sp[26] = J_c8 * (-1 * J_c1); | |
sp[27] = sp[25] + sp[26]; | |
sp[28] = sp[27] / sp[13]; | |
sp[29] = J_c0 * J_c8; | |
sp[30] = J_c6 * (-1 * J_c2); | |
sp[31] = sp[29] + sp[30]; | |
sp[32] = sp[31] / sp[13]; | |
sp[33] = J_c1 * J_c6; | |
sp[34] = J_c0 * J_c7; | |
sp[35] = sp[33] + -1 * sp[34]; | |
sp[36] = sp[35] / sp[13]; | |
sp[37] = sp[28] * sp[28]; | |
sp[38] = sp[28] * sp[32]; | |
sp[39] = sp[28] * sp[36]; | |
sp[40] = sp[32] * sp[32]; | |
sp[41] = sp[32] * sp[36]; | |
sp[42] = sp[36] * sp[36]; | |
sp[43] = sp[37] + sp[19]; | |
sp[44] = sp[38] + sp[20]; | |
sp[45] = sp[39] + sp[21]; | |
sp[46] = sp[40] + sp[22]; | |
sp[47] = sp[41] + sp[23]; | |
sp[48] = sp[24] + sp[42]; | |
sp[49] = J_c1 * J_c5; | |
sp[50] = J_c2 * J_c4; | |
sp[51] = sp[49] + -1 * sp[50]; | |
sp[52] = sp[51] / sp[13]; | |
sp[53] = J_c2 * J_c3; | |
sp[54] = J_c0 * J_c5; | |
sp[55] = sp[53] + -1 * sp[54]; | |
sp[56] = sp[55] / sp[13]; | |
sp[57] = J_c0 * J_c4; | |
sp[58] = J_c1 * J_c3; | |
sp[59] = sp[57] + -1 * sp[58]; | |
sp[60] = sp[59] / sp[13]; | |
sp[61] = sp[52] * sp[52]; | |
sp[62] = sp[52] * sp[56]; | |
sp[63] = sp[60] * sp[52]; | |
sp[64] = sp[56] * sp[56]; | |
sp[65] = sp[60] * sp[56]; | |
sp[66] = sp[60] * sp[60]; | |
sp[67] = sp[43] + sp[61]; | |
sp[68] = sp[44] + sp[62]; | |
sp[69] = sp[45] + sp[63]; | |
sp[70] = sp[46] + sp[64]; | |
sp[71] = sp[47] + sp[65]; | |
sp[72] = sp[48] + sp[66]; | |
sp[73] = fabs(sp[13]); | |
sp[74] = sp[67] * sp[73]; | |
sp[75] = sp[68] * sp[73]; | |
sp[76] = sp[69] * sp[73]; | |
sp[77] = sp[70] * sp[73]; | |
sp[78] = sp[71] * sp[73]; | |
sp[79] = sp[72] * sp[73]; | |
A[0] = 0.1 * sp[74] + 0.1000000000000001 * sp[75] + 0.1 * sp[76] + 0.1000000000000001 * sp[75] + 0.1000000000000001 * sp[77] + 0.1000000000000001 * sp[78] + 0.1 * sp[76] + 0.1000000000000001 * sp[78] + 0.1000000000000001 * sp[79]; | |
A[1] = 0.03333333333333325 * sp[74] + 0.03333333333333331 * sp[75] + 0.0333333333333333 * sp[76]; | |
A[2] = 0.03333333333333339 * sp[75] + 0.03333333333333336 * sp[77] + 0.03333333333333338 * sp[78]; | |
A[3] = 0.03333333333333338 * sp[76] + 0.03333333333333338 * sp[78] + 0.03333333333333335 * sp[79]; | |
A[4] = 0.03333333333333456 * sp[75] + 0.03333333333333452 * sp[76] + 0.03333333333333455 * sp[77] + 0.03333333333333449 * sp[78] + 0.03333333333333448 * sp[78] + 0.03333333333333443 * sp[79]; | |
A[5] = 0.03333333333333458 * sp[74] + 0.03333333333333457 * sp[76] + 0.03333333333333457 * sp[75] + 0.03333333333333462 * sp[78] + 0.03333333333333448 * sp[76] + 0.03333333333333455 * sp[79]; | |
A[6] = 0.03333333333333456 * sp[74] + 0.0333333333333345 * sp[75] + 0.03333333333333453 * sp[75] + 0.03333333333333455 * sp[77] + 0.03333333333333448 * sp[76] + 0.03333333333333447 * sp[78]; | |
A[7] = -0.03333333333333456 * sp[74] + -0.03333333333333456 * sp[75] + -0.1333333333333331 * sp[76] + -0.03333333333333455 * sp[75] + -0.03333333333333456 * sp[77] + -0.1333333333333331 * sp[78] + -0.03333333333333446 * sp[76] + -0.03333333333333448 * sp[78] + -0.1333333333333331 * sp[79]; | |
A[8] = -0.03333333333333457 * sp[74] + -0.1333333333333331 * sp[75] + -0.03333333333333455 * sp[76] + -0.03333333333333455 * sp[75] + -0.1333333333333331 * sp[77] + -0.03333333333333451 * sp[78] + -0.0333333333333345 * sp[76] + -0.1333333333333331 * sp[78] + -0.03333333333333447 * sp[79]; | |
A[9] = -0.133333333333333 * sp[74] + -0.03333333333333444 * sp[75] + -0.03333333333333448 * sp[76] + -0.1333333333333331 * sp[75] + -0.03333333333333451 * sp[77] + -0.03333333333333454 * sp[78] + -0.1333333333333331 * sp[76] + -0.03333333333333442 * sp[78] + -0.03333333333333445 * sp[79]; | |
A[10] = 0.03333333333333325 * sp[74] + 0.03333333333333331 * sp[75] + 0.0333333333333333 * sp[76]; | |
A[11] = 0.09999999999999999 * sp[74]; | |
A[12] = -0.03333333333333337 * sp[75]; | |
A[13] = -0.03333333333333335 * sp[76]; | |
A[14] = -0.03333333333333321 * sp[75] + -0.03333333333333317 * sp[76]; | |
A[15] = -0.03333333333333322 * sp[74] + 0.1000000000000002 * sp[76]; | |
A[16] = -0.03333333333333324 * sp[74] + 0.1000000000000002 * sp[75]; | |
A[17] = 0.0333333333333332 * sp[74] + 0.0333333333333332 * sp[75]; | |
A[18] = 0.03333333333333325 * sp[74] + 0.03333333333333321 * sp[76]; | |
A[19] = -0.1333333333333336 * sp[74] + -0.1000000000000001 * sp[75] + -0.1000000000000002 * sp[76]; | |
A[20] = 0.03333333333333339 * sp[75] + 0.03333333333333336 * sp[77] + 0.03333333333333338 * sp[78]; | |
A[21] = -0.03333333333333337 * sp[75]; | |
A[22] = 0.09999999999999991 * sp[77]; | |
A[23] = -0.03333333333333333 * sp[78]; | |
A[24] = -0.03333333333333342 * sp[77] + 0.09999999999999998 * sp[78]; | |
A[25] = -0.03333333333333344 * sp[75] + -0.03333333333333351 * sp[78]; | |
A[26] = 0.09999999999999989 * sp[75] + -0.03333333333333333 * sp[77]; | |
A[27] = 0.03333333333333342 * sp[75] + 0.03333333333333342 * sp[77]; | |
A[28] = -0.09999999999999992 * sp[75] + -0.1333333333333336 * sp[77] + -0.09999999999999988 * sp[78]; | |
A[29] = 0.03333333333333344 * sp[77] + 0.03333333333333351 * sp[78]; | |
A[30] = 0.03333333333333338 * sp[76] + 0.03333333333333338 * sp[78] + 0.03333333333333335 * sp[79]; | |
A[31] = -0.03333333333333335 * sp[76]; | |
A[32] = -0.03333333333333333 * sp[78]; | |
A[33] = 0.1000000000000002 * sp[79]; | |
A[34] = 0.09999999999999985 * sp[78] + -0.03333333333333392 * sp[79]; | |
A[35] = 0.09999999999999991 * sp[76] + -0.0333333333333336 * sp[79]; | |
A[36] = -0.03333333333333373 * sp[76] + -0.03333333333333385 * sp[78]; | |
A[37] = -0.09999999999999985 * sp[76] + -0.09999999999999985 * sp[78] + -0.1333333333333338 * sp[79]; | |
A[38] = 0.03333333333333374 * sp[76] + 0.03333333333333374 * sp[79]; | |
A[39] = 0.03333333333333369 * sp[78] + 0.0333333333333336 * sp[79]; | |
A[40] = 0.03333333333333456 * sp[75] + 0.03333333333333455 * sp[77] + 0.03333333333333448 * sp[78] + 0.03333333333333452 * sp[76] + 0.03333333333333449 * sp[78] + 0.03333333333333443 * sp[79]; | |
A[41] = -0.03333333333333321 * sp[75] + -0.03333333333333317 * sp[76]; | |
A[42] = -0.03333333333333342 * sp[77] + 0.09999999999999998 * sp[78]; | |
A[43] = 0.09999999999999985 * sp[78] + -0.03333333333333392 * sp[79]; | |
A[44] = 0.2666666666666679 * sp[77] + 0.1333333333333341 * sp[78] + 0.1333333333333341 * sp[78] + 0.266666666666668 * sp[79]; | |
A[45] = 0.2666666666666679 * sp[75] + 0.1333333333333353 * sp[78] + 0.1333333333333341 * sp[76] + 0.1333333333333352 * sp[79]; | |
A[46] = 0.1333333333333342 * sp[75] + 0.1333333333333348 * sp[77] + 0.2666666666666678 * sp[76] + 0.1333333333333352 * sp[78]; | |
A[47] = -0.2666666666666678 * sp[75] + -0.2666666666666678 * sp[77] + -0.1333333333333344 * sp[78] + -0.133333333333334 * sp[76] + -0.133333333333334 * sp[78]; | |
A[48] = -0.1333333333333343 * sp[75] + -0.1333333333333341 * sp[78] + -0.2666666666666679 * sp[76] + -0.1333333333333345 * sp[78] + -0.2666666666666678 * sp[79]; | |
A[49] = -0.1333333333333342 * sp[77] + -0.1333333333333343 * sp[78] + -0.1333333333333343 * sp[78] + -0.1333333333333342 * sp[79]; | |
A[50] = 0.03333333333333458 * sp[74] + 0.03333333333333457 * sp[75] + 0.03333333333333448 * sp[76] + 0.03333333333333457 * sp[76] + 0.03333333333333462 * sp[78] + 0.03333333333333455 * sp[79]; | |
A[51] = -0.03333333333333322 * sp[74] + 0.1000000000000002 * sp[76]; | |
A[52] = -0.03333333333333344 * sp[75] + -0.03333333333333351 * sp[78]; | |
A[53] = 0.09999999999999991 * sp[76] + -0.0333333333333336 * sp[79]; | |
A[54] = 0.2666666666666679 * sp[75] + 0.1333333333333341 * sp[76] + 0.1333333333333353 * sp[78] + 0.1333333333333352 * sp[79]; | |
A[55] = 0.2666666666666679 * sp[74] + 0.1333333333333353 * sp[76] + 0.1333333333333353 * sp[76] + 0.2666666666666696 * sp[79]; | |
A[56] = 0.1333333333333342 * sp[74] + 0.1333333333333348 * sp[75] + 0.1333333333333351 * sp[76] + 0.2666666666666695 * sp[78]; | |
A[57] = -0.2666666666666678 * sp[74] + -0.2666666666666678 * sp[75] + -0.1333333333333345 * sp[76] + -0.1333333333333352 * sp[76] + -0.1333333333333352 * sp[78]; | |
A[58] = -0.1333333333333342 * sp[74] + -0.1333333333333341 * sp[76] + -0.1333333333333352 * sp[76] + -0.133333333333335 * sp[79]; | |
A[59] = -0.1333333333333342 * sp[75] + -0.1333333333333342 * sp[76] + -0.1333333333333344 * sp[76] + -0.2666666666666685 * sp[78] + -0.2666666666666686 * sp[79]; | |
A[60] = 0.03333333333333456 * sp[74] + 0.03333333333333453 * sp[75] + 0.03333333333333448 * sp[76] + 0.0333333333333345 * sp[75] + 0.03333333333333455 * sp[77] + 0.03333333333333447 * sp[78]; | |
A[61] = -0.03333333333333324 * sp[74] + 0.1000000000000002 * sp[75]; | |
A[62] = 0.09999999999999989 * sp[75] + -0.03333333333333333 * sp[77]; | |
A[63] = -0.03333333333333373 * sp[76] + -0.03333333333333385 * sp[78]; | |
A[64] = 0.1333333333333342 * sp[75] + 0.2666666666666678 * sp[76] + 0.1333333333333348 * sp[77] + 0.1333333333333352 * sp[78]; | |
A[65] = 0.1333333333333342 * sp[74] + 0.1333333333333351 * sp[76] + 0.1333333333333348 * sp[75] + 0.2666666666666695 * sp[78]; | |
A[66] = 0.2666666666666677 * sp[74] + 0.1333333333333351 * sp[75] + 0.1333333333333351 * sp[75] + 0.2666666666666693 * sp[77]; | |
A[67] = -0.1333333333333341 * sp[74] + -0.1333333333333342 * sp[75] + -0.1333333333333347 * sp[75] + -0.1333333333333348 * sp[77]; | |
A[68] = -0.2666666666666678 * sp[74] + -0.1333333333333344 * sp[75] + -0.2666666666666676 * sp[76] + -0.1333333333333352 * sp[75] + -0.133333333333335 * sp[78]; | |
A[69] = -0.1333333333333342 * sp[75] + -0.1333333333333341 * sp[76] + -0.1333333333333344 * sp[75] + -0.2666666666666683 * sp[77] + -0.2666666666666683 * sp[78]; | |
A[70] = -0.03333333333333456 * sp[74] + -0.03333333333333455 * sp[75] + -0.03333333333333446 * sp[76] + -0.03333333333333456 * sp[75] + -0.03333333333333456 * sp[77] + -0.03333333333333448 * sp[78] + -0.1333333333333331 * sp[76] + -0.1333333333333331 * sp[78] + -0.1333333333333331 * sp[79]; | |
A[71] = 0.0333333333333332 * sp[74] + 0.0333333333333332 * sp[75]; | |
A[72] = 0.03333333333333342 * sp[75] + 0.03333333333333342 * sp[77]; | |
A[73] = -0.09999999999999985 * sp[76] + -0.09999999999999985 * sp[78] + -0.1333333333333338 * sp[79]; | |
A[74] = -0.2666666666666678 * sp[75] + -0.133333333333334 * sp[76] + -0.2666666666666678 * sp[77] + -0.133333333333334 * sp[78] + -0.1333333333333344 * sp[78]; | |
A[75] = -0.2666666666666678 * sp[74] + -0.1333333333333352 * sp[76] + -0.2666666666666678 * sp[75] + -0.1333333333333352 * sp[78] + -0.1333333333333345 * sp[76]; | |
A[76] = -0.1333333333333341 * sp[74] + -0.1333333333333347 * sp[75] + -0.1333333333333342 * sp[75] + -0.1333333333333348 * sp[77]; | |
A[77] = 0.2666666666666677 * sp[74] + 0.2666666666666677 * sp[75] + 0.1333333333333344 * sp[76] + 0.2666666666666677 * sp[75] + 0.2666666666666677 * sp[77] + 0.1333333333333344 * sp[78] + 0.1333333333333344 * sp[76] + 0.1333333333333344 * sp[78] + 0.2666666666666668 * sp[79]; | |
A[78] = 0.1333333333333342 * sp[74] + 0.133333333333334 * sp[76] + 0.1333333333333342 * sp[75] + 0.1333333333333341 * sp[78] + 0.1333333333333322 * sp[78]; | |
A[79] = 0.1333333333333341 * sp[75] + 0.1333333333333342 * sp[76] + 0.1333333333333341 * sp[77] + 0.1333333333333342 * sp[78] + 0.1333333333333322 * sp[76]; | |
A[80] = -0.03333333333333457 * sp[74] + -0.03333333333333455 * sp[75] + -0.0333333333333345 * sp[76] + -0.1333333333333331 * sp[75] + -0.1333333333333331 * sp[77] + -0.1333333333333331 * sp[78] + -0.03333333333333455 * sp[76] + -0.03333333333333451 * sp[78] + -0.03333333333333447 * sp[79]; | |
A[81] = 0.03333333333333325 * sp[74] + 0.03333333333333321 * sp[76]; | |
A[82] = -0.09999999999999992 * sp[75] + -0.1333333333333336 * sp[77] + -0.09999999999999988 * sp[78]; | |
A[83] = 0.03333333333333374 * sp[76] + 0.03333333333333374 * sp[79]; | |
A[84] = -0.1333333333333343 * sp[75] + -0.2666666666666679 * sp[76] + -0.1333333333333345 * sp[78] + -0.1333333333333341 * sp[78] + -0.2666666666666678 * sp[79]; | |
A[85] = -0.1333333333333342 * sp[74] + -0.1333333333333352 * sp[76] + -0.1333333333333341 * sp[76] + -0.133333333333335 * sp[79]; | |
A[86] = -0.2666666666666678 * sp[74] + -0.1333333333333352 * sp[75] + -0.1333333333333344 * sp[75] + -0.2666666666666676 * sp[76] + -0.133333333333335 * sp[78]; | |
A[87] = 0.1333333333333342 * sp[74] + 0.1333333333333342 * sp[75] + 0.1333333333333322 * sp[78] + 0.133333333333334 * sp[76] + 0.1333333333333341 * sp[78]; | |
A[88] = 0.2666666666666679 * sp[74] + 0.1333333333333345 * sp[75] + 0.2666666666666677 * sp[76] + 0.1333333333333345 * sp[75] + 0.2666666666666669 * sp[77] + 0.1333333333333344 * sp[78] + 0.2666666666666677 * sp[76] + 0.1333333333333344 * sp[78] + 0.2666666666666675 * sp[79]; | |
A[89] = 0.1333333333333342 * sp[75] + 0.1333333333333341 * sp[76] + 0.1333333333333322 * sp[75] + 0.1333333333333341 * sp[78] + 0.133333333333334 * sp[79]; | |
A[90] = -0.133333333333333 * sp[74] + -0.1333333333333331 * sp[75] + -0.1333333333333331 * sp[76] + -0.03333333333333444 * sp[75] + -0.03333333333333451 * sp[77] + -0.03333333333333442 * sp[78] + -0.03333333333333448 * sp[76] + -0.03333333333333454 * sp[78] + -0.03333333333333445 * sp[79]; | |
A[91] = -0.1333333333333336 * sp[74] + -0.1000000000000001 * sp[75] + -0.1000000000000002 * sp[76]; | |
A[92] = 0.03333333333333344 * sp[77] + 0.03333333333333351 * sp[78]; | |
A[93] = 0.03333333333333369 * sp[78] + 0.0333333333333336 * sp[79]; | |
A[94] = -0.1333333333333342 * sp[77] + -0.1333333333333343 * sp[78] + -0.1333333333333343 * sp[78] + -0.1333333333333342 * sp[79]; | |
A[95] = -0.1333333333333344 * sp[76] + -0.1333333333333342 * sp[75] + -0.2666666666666685 * sp[78] + -0.1333333333333342 * sp[76] + -0.2666666666666686 * sp[79]; | |
A[96] = -0.1333333333333344 * sp[75] + -0.1333333333333342 * sp[75] + -0.2666666666666683 * sp[77] + -0.1333333333333341 * sp[76] + -0.2666666666666683 * sp[78]; | |
A[97] = 0.1333333333333322 * sp[76] + 0.1333333333333341 * sp[75] + 0.1333333333333341 * sp[77] + 0.1333333333333342 * sp[76] + 0.1333333333333342 * sp[78]; | |
A[98] = 0.1333333333333322 * sp[75] + 0.1333333333333342 * sp[75] + 0.1333333333333341 * sp[78] + 0.1333333333333341 * sp[76] + 0.133333333333334 * sp[79]; | |
A[99] = 0.2666666666666666 * sp[74] + 0.1333333333333342 * sp[75] + 0.1333333333333342 * sp[76] + 0.1333333333333342 * sp[75] + 0.2666666666666674 * sp[77] + 0.2666666666666674 * sp[78] + 0.1333333333333342 * sp[76] + 0.2666666666666674 * sp[78] + 0.2666666666666674 * sp[79]; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment