Created
June 12, 2018 18:00
-
-
Save kaushikcfd/0d0db23d3dd48b3388e8a0c7d508a36f to your computer and use it in GitHub Desktop.
This file contains hidden or 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
| #include <math.h> | |
| #include <petsc.h> | |
| static double const form_t0[3 * 3] = { 0.6666666666666669, 0.16666666666666663, 0.16666666666666666, 0.16666666666666674, 0.16666666666666663, 0.6666666666666665, 0.16666666666666669, 0.6666666666666666, 0.16666666666666663 }; | |
| static double const form_t4[3] = { 0.16666666666666666, 0.16666666666666666, 0.16666666666666666 }; | |
| void wrap_form00_cell_integral_otherwise(int const start, int const end, Mat const mat0, double const *__restrict__ dat0, double const *__restrict__ glob0, int const *__restrict__ map0) | |
| { | |
| double form_t1; | |
| double form_t2; | |
| double form_t3; | |
| double form_t5; | |
| double form_t6[3]; | |
| double t2[3 * 3] __attribute__ ((aligned (64))); | |
| double t2_pack[3 * 3] __attribute__ ((aligned (64))); | |
| double t3[3 * 2] __attribute__ ((aligned (64))); | |
| double t3_pack[6] __attribute__ ((aligned (64))); | |
| for (int n = start; n <= -1 + end; ++n) | |
| { | |
| for (int i13 = 0; i13 <= 2; ++i13) | |
| for (int i14 = 0; i14 <= 1; ++i14) | |
| t3[2 * i13 + i14] = dat0[2 * map0[3 * n + i13] + i14]; | |
| for (int i1 = 0; i1 <= 2; ++i1) | |
| for (int i4 = 0; i4 <= 2; ++i4) | |
| t2[3 * i1 + i4] = 0.0; | |
| for (int i7_pack_0 = 0; i7_pack_0 <= 2; ++i7_pack_0) | |
| for (int i10_pack = 0; i10_pack <= 2; ++i10_pack) | |
| t2_pack[3 * i7_pack_0 + i10_pack] = t2[3 * i7_pack_0 + i10_pack]; | |
| for (int i7_pack = 0; i7_pack <= 2; ++i7_pack) | |
| for (int i17_pack = 0; i17_pack <= 1; ++i17_pack) | |
| t3_pack[2 * i7_pack + i17_pack] = t3[2 * i7_pack + i17_pack]; | |
| form_t1 = -1.0 * t3_pack[0]; | |
| form_t2 = -1.0 * t3_pack[1]; | |
| form_t3 = fabs((form_t1 + t3_pack[2]) * (form_t2 + t3_pack[5]) + -1.0 * (form_t1 + t3_pack[4]) * (form_t2 + t3_pack[3])); | |
| for (int form_ip = 0; form_ip <= 2; ++form_ip) | |
| { | |
| form_t5 = glob0[0] * form_t4[form_ip] * form_t3; | |
| for (int form_k = 0; form_k <= 2; ++form_k) | |
| form_t6[form_k] = form_t0[3 * form_ip + form_k] * form_t5; | |
| for (int form_k_0 = 0; form_k_0 <= 2; ++form_k_0) | |
| for (int form_j = 0; form_j <= 2; ++form_j) | |
| t2_pack[3 * form_j + form_k_0] = t2_pack[3 * form_j + form_k_0] + form_t0[3 * form_ip + form_j] * form_t6[form_k_0]; | |
| } | |
| for (int i7_unpack_0 = 0; i7_unpack_0 <= 2; ++i7_unpack_0) | |
| for (int i10_unpack = 0; i10_unpack <= 2; ++i10_unpack) | |
| t2[3 * i7_unpack_0 + i10_unpack] = t2_pack[3 * i7_unpack_0 + i10_unpack]; | |
| for (int i7_unpack = 0; i7_unpack <= 2; ++i7_unpack) | |
| for (int i17_unpack = 0; i17_unpack <= 1; ++i17_unpack) | |
| t3[2 * i7_unpack + i17_unpack] = t3_pack[2 * i7_unpack + i17_unpack]; | |
| MatSetValuesBlockedLocal(mat0, 3, &(map0[3 * n]), 3, &(map0[3 * n]), &(t2[0]), ADD_VALUES); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment