Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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];
- }
Add Comment
Please, Sign In to add comment