Skip to content

Instantly share code, notes, and snippets.

@kaushikcfd
Created June 12, 2018 18:00
Show Gist options
  • Save kaushikcfd/0d0db23d3dd48b3388e8a0c7d508a36f to your computer and use it in GitHub Desktop.
Save kaushikcfd/0d0db23d3dd48b3388e8a0c7d508a36f to your computer and use it in GitHub Desktop.
#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