Hello,
I looked at your Fortran file. It seems that the array FRICOEF is hardcoded with boundary point numbers of the original MESH (moreover it is an automatic array of size NPTFR2). This is probably a (or the) cause of error. Think that all numbers are changed in // and that a sub-domain may even have 0 boundary points. To give the values to the local boundary points, use the array BOUNDARY_COLOUR%I(K) which is the original number of boundary point K. So to set the value of point 247, do the loop:
DO K=1,NPTFR2
IF(BOUNDARY_COLOUR%I(K).EQ.247) FRICOEF(K)= value of original point 247
... idem for other points
ENDDO
I hope that helps,
JMH