
      SUBROUTINE INIT( PSI, PSIDOT, RANDOM, NCOLOR)  
C     ---------------------------------------------

      INTEGER VSIZE, NCOLOR
      COMMON /VECLEN/ VSIZE

      INTEGER SEED, INNODE 
      DOUBLE PRECISION N2
      LOGICAL  STORED   
      COMMON / RANDOM / N2, SEED, INNODE, STORED

      DOUBLE PRECISION  PSI(VSIZE), PSIDOT(VSIZE), RANDOM(VSIZE)

C  @@@@  Communication Structure  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
C  @                                                                  @
      CALL INITND
      IF( INNODE .EQ. 0) PRINT *, 'initnode finished'
C  @                                                                  @
C  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

      CALL INITSH

      IF (NCOLOR .EQ. 3) THEN
        CALL INISU3 
      ELSE
        PRINT *, ' ERROR ! invalid value of ncolor -', NCOLOR,
     *           ' - in subroutine init'
        STOP
      ENDIF

C  @@@@  Communication Structure  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
C  @                                                                  @
      IF( INNODE .EQ. 0) PRINT *, 'initsu finished'
C  @                                                                  @
C  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

      CALL INITPD( PSI, PSIDOT, RANDOM)
      CALL INIPSI( PSI, PSIDOT)

      END

