# Assign interface labels based on adjacent triangle regions

**URL:** <https://community.freefem.org/t/assign-interface-labels-based-on-adjacent-triangle-regions/2924>\
**Category:** General Discussion\
**Created:** [February 2, 2024, 2:11pm UTC](https://community.freefem.org/t/assign-interface-labels-based-on-adjacent-triangle-regions/2924 "2024-02-02T14:11:22Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![mhg](https://avatars.discourse-cdn.com/v4/letter/m/d07c76/32.png) [@mhg](https://community.freefem.org/u/mhg)\
**Post date:** [February 2, 2024, 2:11pm UTC](https://community.freefem.org/t/assign-interface-labels-based-on-adjacent-triangle-regions/2924/1 "2024-02-02T14:11:22Z")

</div>

Maybe this is helpful for anyone:

```auto
int nn=6;
border C01(t=0, 1){x=t; y=0; label=4;}
border C02(t=0, 1){x=1; y=t; label=1;}
border C03(t=0, 1){x=1-t; y=1; label=1;}
border C04(t=0, 1){x=0; y=1-t; label=1;}
border C05(t=0, 1){x=1-t; y=0.5; label=1;}
border C06(t=0, 0.5){x=0.5; y=0.5+t; label=1;}
mesh Th=buildmesh(C01(nn)+C02(nn)+C03(nn)+C04(nn)+C05(nn)+C06(nn));
int[int,int] interfaceLabels = [[0,1,1],[0,3,2],[1,3,3]];
func int Mylab(int k, int nTri, int lab){
  if (nTri == 2)
  { // assign the label to the interface edges
	  int Edge = Th.be(k).whoinElement;           
	  int kk = int(Th.be(k).Element);       
	  int Adjacent = Th[kk].adj(Edge);
	  // cout << Th[kk].region << " " << Th[Adjacent].region << endl;
	  for (int j=0;j<interfaceLabels.n;j++)
	  {
	  if ( (Th[kk].region == interfaceLabels(j,0) && Th[Adjacent].region == interfaceLabels(j,1) ) ||
	       (Th[kk].region == interfaceLabels(j,1) && Th[Adjacent].region == interfaceLabels(j,0) ) )
	       {   
	  	return interfaceLabels(j,2);
	  	break;
	  	}
	  }
	  return 0;
  }
  else // leave the boundary labels unchanged
  return lab;
}

int jj=0; 
Th = change(Th, flabel=Mylab(jj++,nTonEdge,label));

```
