message: Unroll loops with pragma
  Big speedup, but can we do this in a portable way?
diff: @@ -359,14 +359,20 @@ void Assemble3DBatchedLOR(Mesh &mesh_lor,
  {
  grad_B[i] = 0.0;
  }
  +
  +#pragma unroll 2
  for (int iqx=0; iqx<2; ++iqx)
  {
  +#pragma unroll 2
  for (int jz=0; jz<2; ++jz)
  {
  +#pragma unroll 2
  for (int iz=jz; iz<2; ++iz)
  {
  +#pragma unroll 2
  for (int iqy=0; iqy<2; ++iqy)
  {
  +#pragma unroll 2
  for (int iqz=0; iqz<2; ++iqz)
  {
  int iq = iqz + 2*iqy + 4*iqx;
  @@ -396,8 +402,10 @@ void Assemble3DBatchedLOR(Mesh &mesh_lor,
  grad_A(1,2,iqy,iz,jz,iqx) += J23*biz*gjz;
  grad_A(2,2,iqy,iz,jz,iqx) += J33*giz*gjz;
  }
  +#pragma unroll 2
  for (int jy=0; jy<2; ++jy)
  {
  +#pragma unroll 2
  for (int iy=0; iy<2; ++iy)
  {
  const double biy = (iy == iqy) ? 1.0 : 0.0;
  @@ -418,12 +426,16 @@ void Assemble3DBatchedLOR(Mesh &mesh_lor,
  }
  }
  }
  +#pragma unroll 2
  for (int jy=0; jy<2; ++jy)
  {
  +#pragma unroll 2
  for (int jx=0; jx<2; ++jx)
  {
  +#pragma unroll 2
  for (int iy=0; iy<2; ++iy)
  {
  +#pragma unroll 2
  for (int ix=0; ix<2; ++ix)
  {
  const double bix = (ix == iqx) ? 1.0 : 0.0;
  