Integration on a part of the boundary

Suppose I have constructed a circular geometric domain by joining n subarcs, which are labeled from 1 to 10. Now, I need to compute a boundary integral, but only on the arcs from 1 to 9.

Can I create a vector of labels and pass it to int1d?

n = 10;
int[int] labsext(n-1);
for(int i=0; i<n-1; ++i)
    labsext[i] = i+1;
varf NeumannRHS(u,eta) = int1d(Th,labsext)( (dxGj*N.x + dyGj*N.y)*eta );

Another way may be:

n = 10;
varf NeumannRHS(u,eta) = int1d(Th)((label>=1 && label<n)*( (dxGj*N.x + dyGj*N.y)*eta ));

The results of these two constructions should be the same, right? Some of the constructions above compile correctly, but may return incorrect results?

Yes both ways to take into account the labels are correct. However the integrand should be linear with respect to the test function eta.

Okay! Thanks for the clarification.