First, I tried with KNOLG, I copy/paste the example from the pdf to test if my function use all boundary nodes(only water) :
DO IPTFR=1,NPTFR
PRINT *,KNOGL(KNOLG(IPTFR))
ENDDO
and I got this error:
PRINT *,KNOGL(KNOLG(IPTFR))
1
Error: Array index at (1) must be of INTEGER type, found DERIVED
So I tried with only
PRINT *,KNOLG(IPTFR), and I still have an error:
PRINT *,KNOLG(IPTFR)
1
Error: Data transfer element at (1) cannot have POINTER components
I absolutely have no idea where is the problem(I added the following lines at beginning:
USE BIEF
USE DECLARATIONS_TOMAWAC ,ONLY : KNOGL
IMPLICIT NONE
TYPE(BIEF_OBJ), POINTER :: KNOLG
For the
second help, from Hervouet, I tried your solution, and like for the first I wanted to write all the boundary numbers, but I don't have all of them (1 to 777), although I do not take into account solid boundary. And it changed with the number of parallel processors.
I mean, for example, I choose 4 processors, then I write the index, with the following source code:
DO IPTFR=1,NPTFR
PRINT *,'BOUNDARY_COLOUR=',(BOUNDARY_COLOUR%I(IPTFR))
ENDDO
And I have something like
BOUNDARY_COLOUR=400
BOUNDARY_COLOUR=401
BOUNDARY_COLOUR=402
[...]
BOUNDARY_COLOUR=571
BOUNDARY_COLOUR=740
BOUNDARY_COLOUR=741
[...]
BOUNDARY_COLOUR=760
So, here some numbers are missing (1 to 399, 572 to 749 and 761 to 777).
The most weird thing is that when I choose 5 processors, those numbers change, I have something like
BOUNDARY_COLOUR=387
BOUNDARY_COLOUR=388
[...]
BOUNDARY_COLOUR=517
BOUNDARY_COLOUR=729
[...]
BOUNDARY_COLOUR=744