C OPTAB0    SOURCE    CB215821  20/11/25    13:35:29     10792          
C OPTAB0
      SUBROUTINE OPTAB0(ith,IPOINT)
C     Cette subroutine est l''interface entre OPTABi et OPTABj
C     Elle peut etre appelee directement ou en parallele
C
C     Elle extrait des SEGMENTS des OBJETS les tableaux FORTRAN puis fait
C     appel a OPTABj qui realise les operations en FORTRAN pur

C Creation 23/02/2018
C Createur CB215821
C Historique des Corrections apportees :
C      -
C      -
C      -

      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)

-INC SMCHPOI
-INC SMCHAML
-INC SMLREEL
-INC SMLENTI
-INC TMVALUE
-INC CCASSIS

C     Debut des INSTRUCTIONS
      SPARAL = IPOINT
      NBTHR  = SPARAL.NBTHRD
      SVALUE = SPARAL.IVALUE
      IOPERA = SPARAL.IOPE
      IARGU  = SPARAL.IARG
      I1     = SPARAL.I1I
      X1     = SPARAL.X1I

      DO 99 IA=1,SVALUE.NPUTIL
        NTABEN = 1
        ITYP = SVALUE.ITYPOI (IA  )
        ITAIL1=SVALUE.IPOI0  (IA,2)
        ITAIL2=SVALUE.IPOI1  (IA,2)
        ITAIL3=SVALUE.IPOI2  (IA,2)

C       Traitement direct du bon type d''OBJET de Cast3M
        GOTO ( 1, 2, 3, 4),ITYP
        PRINT *,'OPTAB0: OBJET NON COMPATIBLE',ith,IPOIN,SVALUE,ITYP
        SPARAL.IERROR(ith) = 5
        RETURN

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C                             MPOVAL.VPOCHA
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
 1      CONTINUE
        MPOVA1=SVALUE.IPOI0  (IA,1)
        MPOVA2=SVALUE.IPOI1  (IA,1)
        MPOVAL=SVALUE.IPOI2  (IA,1)
        
        IF (MPOVA2 .GT. 0) THEN
          NTABEN = 2
          CALL OPTABj(NBTHR ,ith,IOPERA,NTABEN,
     &                MPOVA1.VPOCHA,MPOVA2.VPOCHA,MPOVAL.VPOCHA,
     &                ITAIL1,ITAIL2,ITAIL3,IARGU ,I1  ,X1 ,IRETOU )
        ELSE
          CALL OPTABj(NBTHR ,ith,IOPERA,NTABEN,
     &                MPOVA1.VPOCHA,MPOVA1.VPOCHA,MPOVAL.VPOCHA,
     &                ITAIL1,ITAIL2,ITAIL3,IARGU ,I1  ,X1 ,IRETOU )
        ENDIF
        GOTO 99

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C                             MELVAL.VELCHE
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
 2      CONTINUE
        MELVA1=SVALUE.IPOI0  (IA,1)
        MELVA2=SVALUE.IPOI1  (IA,1)
        MELVAL=SVALUE.IPOI2  (IA,1)
        
        IF (MELVA2 .GT. 0) THEN
          NTABEN = 2
          CALL OPTABj(NBTHR ,ith,IOPERA,NTABEN,
     &                MELVA1.VELCHE,MELVA2.VELCHE,MELVAL.VELCHE,
     &                ITAIL1,ITAIL2,ITAIL3,IARGU ,I1  ,X1 ,IRETOU )
        ELSE
          CALL OPTABj(NBTHR ,ith,IOPERA,NTABEN,
     &                MELVA1.VELCHE,MELVA1.VELCHE,MELVAL.VELCHE,
     &                ITAIL1,ITAIL2,ITAIL3,IARGU ,I1  ,X1 ,IRETOU )
        ENDIF
        GOTO 99

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C                              MLREEL.PROG
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
 3      CONTINUE
        MLREE1=SVALUE.IPOI0  (IA,1)
        MLREE2=SVALUE.IPOI1  (IA,1)
        MLREEL=SVALUE.IPOI2  (IA,1)
        IF (MLREE2 .GT. 0) THEN
          NTABEN = 2
          CALL OPTABj(NBTHR ,ith,IOPERA,NTABEN,
     &                MLREE1.PROG,MLREE2.PROG,MLREEL.PROG,
     &                ITAIL1,ITAIL2,ITAIL3,IARGU ,I1  ,X1 ,IRETOU )
        ELSE
          CALL OPTABj(NBTHR ,ith,IOPERA,NTABEN,
     &                MLREE1.PROG,MLREE1.PROG,MLREEL.PROG,
     &                ITAIL1,ITAIL2,ITAIL3,IARGU ,I1  ,X1 ,IRETOU )
        ENDIF
        GOTO 99

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C                              MLENTI.LECT
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
 4      CONTINUE
        MLENT1=SVALUE.IPOI0  (IA,1)
        MLENT2=SVALUE.IPOI1  (IA,1)
        MLENTI=SVALUE.IPOI2  (IA,1)
        
C       CB215821 : Operation non prevue encore sur les LISTENTI !!!
        SPARAL.IERROR = 21
        RETURN
        
C       IF (MLENT2 .GT. 0) THEN
C         NTABEN = 2
C         CALL OPTABj(NBTHR ,ith,IOPERA,NTABEN,
C     &               MLENT1.LECT,MLENT2.LECT,MLENTI.LECT,
C     &               ITAIL1,ITAIL2,ITAIL3,IARGU ,I1  ,X1 ,IRETOU )
C       ELSE
C         CALL OPTABj(NBTHR ,ith,IOPERA,NTABEN,
C     &               MLENT1.LECT,MLENT1.LECT,MLENTI.LECT,
C     &               ITAIL1,ITAIL2,ITAIL3,IARGU ,I1  ,X1 ,IRETOU )
C       ENDIF
C       GOTO 99

 99   CONTINUE

C     Enregistrement de l'erreur eventuelle
      SPARAL.IERROR(ith) = IRETOU

      RETURN
      END

 
 
