Guest User

Untitled

a guest
Jun 18th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.34 KB | None | 0 0
  1. void tabulate_tensor_A(
  2. double* restrict A,
  3. const double* const* w,
  4. const double* restrict coordinate_dofs,
  5. int cell_orientation)
  6. {
  7. // Precomputed values of basis functions and precomputations
  8. // FE* dimensions: [entities][points][dofs]
  9. // PI* dimensions: [entities][dofs][dofs] or [entities][dofs]
  10. // PM* dimensions: [entities][dofs][dofs]
  11. alignas(32) static const double FE9_C0_D001_Q4[1][1][2] = { { { -1.0, 1.0 } } };
  12. // Unstructured piecewise computations
  13. const double J_c4 = coordinate_dofs[1] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[7] * FE9_C0_D001_Q4[0][0][1];
  14. const double J_c8 = coordinate_dofs[2] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[11] * FE9_C0_D001_Q4[0][0][1];
  15. const double J_c5 = coordinate_dofs[1] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[10] * FE9_C0_D001_Q4[0][0][1];
  16. const double J_c7 = coordinate_dofs[2] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[8] * FE9_C0_D001_Q4[0][0][1];
  17. const double J_c0 = coordinate_dofs[0] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[3] * FE9_C0_D001_Q4[0][0][1];
  18. const double J_c1 = coordinate_dofs[0] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[6] * FE9_C0_D001_Q4[0][0][1];
  19. const double J_c6 = coordinate_dofs[2] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[5] * FE9_C0_D001_Q4[0][0][1];
  20. const double J_c3 = coordinate_dofs[1] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[4] * FE9_C0_D001_Q4[0][0][1];
  21. const double J_c2 = coordinate_dofs[0] * FE9_C0_D001_Q4[0][0][0] + coordinate_dofs[9] * FE9_C0_D001_Q4[0][0][1];
  22. alignas(32) double sp[80];
  23. sp[0] = J_c4 * J_c8;
  24. sp[1] = J_c5 * J_c7;
  25. sp[2] = sp[0] + -1 * sp[1];
  26. sp[3] = J_c0 * sp[2];
  27. sp[4] = J_c5 * J_c6;
  28. sp[5] = J_c3 * J_c8;
  29. sp[6] = sp[4] + -1 * sp[5];
  30. sp[7] = J_c1 * sp[6];
  31. sp[8] = sp[3] + sp[7];
  32. sp[9] = J_c3 * J_c7;
  33. sp[10] = J_c4 * J_c6;
  34. sp[11] = sp[9] + -1 * sp[10];
  35. sp[12] = J_c2 * sp[11];
  36. sp[13] = sp[8] + sp[12];
  37. sp[14] = sp[2] / sp[13];
  38. sp[15] = J_c3 * (-1 * J_c8);
  39. sp[16] = sp[4] + sp[15];
  40. sp[17] = sp[16] / sp[13];
  41. sp[18] = sp[11] / sp[13];
  42. sp[19] = sp[14] * sp[14];
  43. sp[20] = sp[14] * sp[17];
  44. sp[21] = sp[18] * sp[14];
  45. sp[22] = sp[17] * sp[17];
  46. sp[23] = sp[18] * sp[17];
  47. sp[24] = sp[18] * sp[18];
  48. sp[25] = J_c2 * J_c7;
  49. sp[26] = J_c8 * (-1 * J_c1);
  50. sp[27] = sp[25] + sp[26];
  51. sp[28] = sp[27] / sp[13];
  52. sp[29] = J_c0 * J_c8;
  53. sp[30] = J_c6 * (-1 * J_c2);
  54. sp[31] = sp[29] + sp[30];
  55. sp[32] = sp[31] / sp[13];
  56. sp[33] = J_c1 * J_c6;
  57. sp[34] = J_c0 * J_c7;
  58. sp[35] = sp[33] + -1 * sp[34];
  59. sp[36] = sp[35] / sp[13];
  60. sp[37] = sp[28] * sp[28];
  61. sp[38] = sp[28] * sp[32];
  62. sp[39] = sp[28] * sp[36];
  63. sp[40] = sp[32] * sp[32];
  64. sp[41] = sp[32] * sp[36];
  65. sp[42] = sp[36] * sp[36];
  66. sp[43] = sp[37] + sp[19];
  67. sp[44] = sp[38] + sp[20];
  68. sp[45] = sp[39] + sp[21];
  69. sp[46] = sp[40] + sp[22];
  70. sp[47] = sp[41] + sp[23];
  71. sp[48] = sp[24] + sp[42];
  72. sp[49] = J_c1 * J_c5;
  73. sp[50] = J_c2 * J_c4;
  74. sp[51] = sp[49] + -1 * sp[50];
  75. sp[52] = sp[51] / sp[13];
  76. sp[53] = J_c2 * J_c3;
  77. sp[54] = J_c0 * J_c5;
  78. sp[55] = sp[53] + -1 * sp[54];
  79. sp[56] = sp[55] / sp[13];
  80. sp[57] = J_c0 * J_c4;
  81. sp[58] = J_c1 * J_c3;
  82. sp[59] = sp[57] + -1 * sp[58];
  83. sp[60] = sp[59] / sp[13];
  84. sp[61] = sp[52] * sp[52];
  85. sp[62] = sp[52] * sp[56];
  86. sp[63] = sp[60] * sp[52];
  87. sp[64] = sp[56] * sp[56];
  88. sp[65] = sp[60] * sp[56];
  89. sp[66] = sp[60] * sp[60];
  90. sp[67] = sp[43] + sp[61];
  91. sp[68] = sp[44] + sp[62];
  92. sp[69] = sp[45] + sp[63];
  93. sp[70] = sp[46] + sp[64];
  94. sp[71] = sp[47] + sp[65];
  95. sp[72] = sp[48] + sp[66];
  96. sp[73] = fabs(sp[13]);
  97. sp[74] = sp[67] * sp[73];
  98. sp[75] = sp[68] * sp[73];
  99. sp[76] = sp[69] * sp[73];
  100. sp[77] = sp[70] * sp[73];
  101. sp[78] = sp[71] * sp[73];
  102. sp[79] = sp[72] * sp[73];
  103. 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];
  104. A[1] = 0.03333333333333325 * sp[74] + 0.03333333333333331 * sp[75] + 0.0333333333333333 * sp[76];
  105. A[2] = 0.03333333333333339 * sp[75] + 0.03333333333333336 * sp[77] + 0.03333333333333338 * sp[78];
  106. A[3] = 0.03333333333333338 * sp[76] + 0.03333333333333338 * sp[78] + 0.03333333333333335 * sp[79];
  107. 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];
  108. 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];
  109. 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];
  110. 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];
  111. 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];
  112. 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];
  113. A[10] = 0.03333333333333325 * sp[74] + 0.03333333333333331 * sp[75] + 0.0333333333333333 * sp[76];
  114. A[11] = 0.09999999999999999 * sp[74];
  115. A[12] = -0.03333333333333337 * sp[75];
  116. A[13] = -0.03333333333333335 * sp[76];
  117. A[14] = -0.03333333333333321 * sp[75] + -0.03333333333333317 * sp[76];
  118. A[15] = -0.03333333333333322 * sp[74] + 0.1000000000000002 * sp[76];
  119. A[16] = -0.03333333333333324 * sp[74] + 0.1000000000000002 * sp[75];
  120. A[17] = 0.0333333333333332 * sp[74] + 0.0333333333333332 * sp[75];
  121. A[18] = 0.03333333333333325 * sp[74] + 0.03333333333333321 * sp[76];
  122. A[19] = -0.1333333333333336 * sp[74] + -0.1000000000000001 * sp[75] + -0.1000000000000002 * sp[76];
  123. A[20] = 0.03333333333333339 * sp[75] + 0.03333333333333336 * sp[77] + 0.03333333333333338 * sp[78];
  124. A[21] = -0.03333333333333337 * sp[75];
  125. A[22] = 0.09999999999999991 * sp[77];
  126. A[23] = -0.03333333333333333 * sp[78];
  127. A[24] = -0.03333333333333342 * sp[77] + 0.09999999999999998 * sp[78];
  128. A[25] = -0.03333333333333344 * sp[75] + -0.03333333333333351 * sp[78];
  129. A[26] = 0.09999999999999989 * sp[75] + -0.03333333333333333 * sp[77];
  130. A[27] = 0.03333333333333342 * sp[75] + 0.03333333333333342 * sp[77];
  131. A[28] = -0.09999999999999992 * sp[75] + -0.1333333333333336 * sp[77] + -0.09999999999999988 * sp[78];
  132. A[29] = 0.03333333333333344 * sp[77] + 0.03333333333333351 * sp[78];
  133. A[30] = 0.03333333333333338 * sp[76] + 0.03333333333333338 * sp[78] + 0.03333333333333335 * sp[79];
  134. A[31] = -0.03333333333333335 * sp[76];
  135. A[32] = -0.03333333333333333 * sp[78];
  136. A[33] = 0.1000000000000002 * sp[79];
  137. A[34] = 0.09999999999999985 * sp[78] + -0.03333333333333392 * sp[79];
  138. A[35] = 0.09999999999999991 * sp[76] + -0.0333333333333336 * sp[79];
  139. A[36] = -0.03333333333333373 * sp[76] + -0.03333333333333385 * sp[78];
  140. A[37] = -0.09999999999999985 * sp[76] + -0.09999999999999985 * sp[78] + -0.1333333333333338 * sp[79];
  141. A[38] = 0.03333333333333374 * sp[76] + 0.03333333333333374 * sp[79];
  142. A[39] = 0.03333333333333369 * sp[78] + 0.0333333333333336 * sp[79];
  143. 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];
  144. A[41] = -0.03333333333333321 * sp[75] + -0.03333333333333317 * sp[76];
  145. A[42] = -0.03333333333333342 * sp[77] + 0.09999999999999998 * sp[78];
  146. A[43] = 0.09999999999999985 * sp[78] + -0.03333333333333392 * sp[79];
  147. A[44] = 0.2666666666666679 * sp[77] + 0.1333333333333341 * sp[78] + 0.1333333333333341 * sp[78] + 0.266666666666668 * sp[79];
  148. A[45] = 0.2666666666666679 * sp[75] + 0.1333333333333353 * sp[78] + 0.1333333333333341 * sp[76] + 0.1333333333333352 * sp[79];
  149. A[46] = 0.1333333333333342 * sp[75] + 0.1333333333333348 * sp[77] + 0.2666666666666678 * sp[76] + 0.1333333333333352 * sp[78];
  150. A[47] = -0.2666666666666678 * sp[75] + -0.2666666666666678 * sp[77] + -0.1333333333333344 * sp[78] + -0.133333333333334 * sp[76] + -0.133333333333334 * sp[78];
  151. A[48] = -0.1333333333333343 * sp[75] + -0.1333333333333341 * sp[78] + -0.2666666666666679 * sp[76] + -0.1333333333333345 * sp[78] + -0.2666666666666678 * sp[79];
  152. A[49] = -0.1333333333333342 * sp[77] + -0.1333333333333343 * sp[78] + -0.1333333333333343 * sp[78] + -0.1333333333333342 * sp[79];
  153. 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];
  154. A[51] = -0.03333333333333322 * sp[74] + 0.1000000000000002 * sp[76];
  155. A[52] = -0.03333333333333344 * sp[75] + -0.03333333333333351 * sp[78];
  156. A[53] = 0.09999999999999991 * sp[76] + -0.0333333333333336 * sp[79];
  157. A[54] = 0.2666666666666679 * sp[75] + 0.1333333333333341 * sp[76] + 0.1333333333333353 * sp[78] + 0.1333333333333352 * sp[79];
  158. A[55] = 0.2666666666666679 * sp[74] + 0.1333333333333353 * sp[76] + 0.1333333333333353 * sp[76] + 0.2666666666666696 * sp[79];
  159. A[56] = 0.1333333333333342 * sp[74] + 0.1333333333333348 * sp[75] + 0.1333333333333351 * sp[76] + 0.2666666666666695 * sp[78];
  160. A[57] = -0.2666666666666678 * sp[74] + -0.2666666666666678 * sp[75] + -0.1333333333333345 * sp[76] + -0.1333333333333352 * sp[76] + -0.1333333333333352 * sp[78];
  161. A[58] = -0.1333333333333342 * sp[74] + -0.1333333333333341 * sp[76] + -0.1333333333333352 * sp[76] + -0.133333333333335 * sp[79];
  162. A[59] = -0.1333333333333342 * sp[75] + -0.1333333333333342 * sp[76] + -0.1333333333333344 * sp[76] + -0.2666666666666685 * sp[78] + -0.2666666666666686 * sp[79];
  163. 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];
  164. A[61] = -0.03333333333333324 * sp[74] + 0.1000000000000002 * sp[75];
  165. A[62] = 0.09999999999999989 * sp[75] + -0.03333333333333333 * sp[77];
  166. A[63] = -0.03333333333333373 * sp[76] + -0.03333333333333385 * sp[78];
  167. A[64] = 0.1333333333333342 * sp[75] + 0.2666666666666678 * sp[76] + 0.1333333333333348 * sp[77] + 0.1333333333333352 * sp[78];
  168. A[65] = 0.1333333333333342 * sp[74] + 0.1333333333333351 * sp[76] + 0.1333333333333348 * sp[75] + 0.2666666666666695 * sp[78];
  169. A[66] = 0.2666666666666677 * sp[74] + 0.1333333333333351 * sp[75] + 0.1333333333333351 * sp[75] + 0.2666666666666693 * sp[77];
  170. A[67] = -0.1333333333333341 * sp[74] + -0.1333333333333342 * sp[75] + -0.1333333333333347 * sp[75] + -0.1333333333333348 * sp[77];
  171. A[68] = -0.2666666666666678 * sp[74] + -0.1333333333333344 * sp[75] + -0.2666666666666676 * sp[76] + -0.1333333333333352 * sp[75] + -0.133333333333335 * sp[78];
  172. A[69] = -0.1333333333333342 * sp[75] + -0.1333333333333341 * sp[76] + -0.1333333333333344 * sp[75] + -0.2666666666666683 * sp[77] + -0.2666666666666683 * sp[78];
  173. 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];
  174. A[71] = 0.0333333333333332 * sp[74] + 0.0333333333333332 * sp[75];
  175. A[72] = 0.03333333333333342 * sp[75] + 0.03333333333333342 * sp[77];
  176. A[73] = -0.09999999999999985 * sp[76] + -0.09999999999999985 * sp[78] + -0.1333333333333338 * sp[79];
  177. A[74] = -0.2666666666666678 * sp[75] + -0.133333333333334 * sp[76] + -0.2666666666666678 * sp[77] + -0.133333333333334 * sp[78] + -0.1333333333333344 * sp[78];
  178. A[75] = -0.2666666666666678 * sp[74] + -0.1333333333333352 * sp[76] + -0.2666666666666678 * sp[75] + -0.1333333333333352 * sp[78] + -0.1333333333333345 * sp[76];
  179. A[76] = -0.1333333333333341 * sp[74] + -0.1333333333333347 * sp[75] + -0.1333333333333342 * sp[75] + -0.1333333333333348 * sp[77];
  180. 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];
  181. A[78] = 0.1333333333333342 * sp[74] + 0.133333333333334 * sp[76] + 0.1333333333333342 * sp[75] + 0.1333333333333341 * sp[78] + 0.1333333333333322 * sp[78];
  182. A[79] = 0.1333333333333341 * sp[75] + 0.1333333333333342 * sp[76] + 0.1333333333333341 * sp[77] + 0.1333333333333342 * sp[78] + 0.1333333333333322 * sp[76];
  183. 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];
  184. A[81] = 0.03333333333333325 * sp[74] + 0.03333333333333321 * sp[76];
  185. A[82] = -0.09999999999999992 * sp[75] + -0.1333333333333336 * sp[77] + -0.09999999999999988 * sp[78];
  186. A[83] = 0.03333333333333374 * sp[76] + 0.03333333333333374 * sp[79];
  187. A[84] = -0.1333333333333343 * sp[75] + -0.2666666666666679 * sp[76] + -0.1333333333333345 * sp[78] + -0.1333333333333341 * sp[78] + -0.2666666666666678 * sp[79];
  188. A[85] = -0.1333333333333342 * sp[74] + -0.1333333333333352 * sp[76] + -0.1333333333333341 * sp[76] + -0.133333333333335 * sp[79];
  189. A[86] = -0.2666666666666678 * sp[74] + -0.1333333333333352 * sp[75] + -0.1333333333333344 * sp[75] + -0.2666666666666676 * sp[76] + -0.133333333333335 * sp[78];
  190. A[87] = 0.1333333333333342 * sp[74] + 0.1333333333333342 * sp[75] + 0.1333333333333322 * sp[78] + 0.133333333333334 * sp[76] + 0.1333333333333341 * sp[78];
  191. 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];
  192. A[89] = 0.1333333333333342 * sp[75] + 0.1333333333333341 * sp[76] + 0.1333333333333322 * sp[75] + 0.1333333333333341 * sp[78] + 0.133333333333334 * sp[79];
  193. 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];
  194. A[91] = -0.1333333333333336 * sp[74] + -0.1000000000000001 * sp[75] + -0.1000000000000002 * sp[76];
  195. A[92] = 0.03333333333333344 * sp[77] + 0.03333333333333351 * sp[78];
  196. A[93] = 0.03333333333333369 * sp[78] + 0.0333333333333336 * sp[79];
  197. A[94] = -0.1333333333333342 * sp[77] + -0.1333333333333343 * sp[78] + -0.1333333333333343 * sp[78] + -0.1333333333333342 * sp[79];
  198. A[95] = -0.1333333333333344 * sp[76] + -0.1333333333333342 * sp[75] + -0.2666666666666685 * sp[78] + -0.1333333333333342 * sp[76] + -0.2666666666666686 * sp[79];
  199. A[96] = -0.1333333333333344 * sp[75] + -0.1333333333333342 * sp[75] + -0.2666666666666683 * sp[77] + -0.1333333333333341 * sp[76] + -0.2666666666666683 * sp[78];
  200. A[97] = 0.1333333333333322 * sp[76] + 0.1333333333333341 * sp[75] + 0.1333333333333341 * sp[77] + 0.1333333333333342 * sp[76] + 0.1333333333333342 * sp[78];
  201. A[98] = 0.1333333333333322 * sp[75] + 0.1333333333333342 * sp[75] + 0.1333333333333341 * sp[78] + 0.1333333333333341 * sp[76] + 0.133333333333334 * sp[79];
  202. 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];
  203. }
Add Comment
Please, Sign In to add comment