C JPMAG1    SOURCE    CB215821  24/04/12    21:16:27     11897          
      SUBROUTINE JPMAG1(ILREE,ICHAMJ,ICHAMA,IMOD5,MINTE1,NBELEM)

* ---------------------------------------------------------------------
* 
*                               ROUTINE JPMAG1
* 
* ---------------------------------------------------------------------
* Auteur : Nikola JERANCE
* 
* Historique : 
* 
*       20/09/2022 - Première écriture (N. Jerance)
*     
* 
* Descriptif :
* 
*  Le potentiel magnétique vecteur est calculé à partir de J(x,y)
*  et la matrice obtenue par MPMAGV. Le potentiel est en 3D.
* 
*  
*  
* Arguments :
* 
*       (E)     ILREE = Pointeur sur la liste de réels (résultat)
*       (E)     ICHAMJ = J(x,y) en tant que MCHAML
*       (S)     ICHAMA = A(x,y) au milieu de l'épaisseur, MCHAML
*       (E)     IMOD5 = pointeur sur le modèle
*       (E)     MINTE1 = pointeur sur MINTE
*       (E)     NBELEM = nb d'éléments
* 
* ---------------------------------------------------------------------

* ----------------------------------------------------------------------
* 
*                         0 - DECLARATIONS ET IMPORTS
* 
* ----------------------------------------------------------------------

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

-INC PPARAM
-INC CCOPTIO
-INC CCGEOME
-INC CCREEL
-INC SMCOORD
-INC SMELEME
-INC SMLREEL
-INC SMCHAML
-INC SMMODEL
-INC SMINTE


     
      INTEGER NBEL1,NBEL2
      POINTEUR IA.MCHELM
      POINTEUR ILREE1.MLREEL
      POINTEUR IJ.MCHELM
      POINTEUR IJX.MELVAL
      POINTEUR IJY.MELVAL
      POINTEUR IAX.MELVAL
      POINTEUR IAY.MELVAL
      POINTEUR IMOD1.IMODEL
      POINTEUR IA1.MCHAML
      POINTEUR IJ1.MCHAML
        
C      WRITE(IOIMP,*) '    ***  CALCUL DE A  *** '
      
      IJ = ICHAMJ
      SEGACT,IJ
      
      NB1 = IJ.ICHAML(/1)
      
      IJ1 = IJ.ICHAML(1)
      SEGACT,IJ1
      
      IMOD1 = IMOD5
             

 
        L1 = 13
        N1 = 1
        N3 = 6
         
        SEGINI,IA
        IA.TITCHE = 'POT MAG VEC'
        IA.CONCHE(1) = IMOD1.CONMOD
        IA.IMACHE(1) = IMOD1.IMAMOD
        IA.IFOCHE = IFOUR
        IA.INFCHE(1,1) = 0
        IA.INFCHE(1,2) = 0
        IA.INFCHE(1,3) = 0
        IA.INFCHE(1,4) = MINTE1
        IA.INFCHE(1,5) = 0
        IA.INFCHE(1,6) = 2

        N2 = 2

        SEGINI,IA1
        IA.ICHAML(1) = IA1
        IA1.NOMCHE(1) = 'AX'
        IA1.TYPCHE(1) = 'REAL*8'
        IA1.NOMCHE(2) = 'AY'
        IA1.TYPCHE(2) = 'REAL*8'

      ILREE1 = ILREE
      SEGACT,ILREE1
     

      NCOMPO = IJ1.IELVAL(/1)

      DO ICOMPO = 1,NCOMPO
        IF (IJ1.NOMCHE(ICOMPO).EQ.'JX') THEN
         IA1.NOMCHE(ICOMPO) ='AX'
         IJX = IJ1.IELVAL(ICOMPO)
         SEGACT,IJX
          N1PTEL =1
          N1EL = NBELEM
          N2PTEL = 0
          N2EL = 0
          SEGINI,IAX
          IA1.IELVAL(ICOMPO)=IAX
         SEGACT,IAX*MOD
         K=0
          NBEL1 = IJX.VELCHE(/2)
          NBEL2 = IJX.VELCHE(/1)
         IF (NBEL1.EQ.1) THEN
          


          DO I = 1, NBELEM
         
           AX = 0.0
           DO J1=1,NBELEM
             K = K + 1
             DO I1 = 1,N1PTEL
                AX = AX + ILREE1.PROG(K)*(IJX.VELCHE(I1,1))/N1PTEL
             END DO
           END DO
           NAX1 = IAX.VELCHE(/1)
           NAX2 = IAX.VELCHE(/2)
           DO J1=1,NAX1
            IAX.VELCHE(J1,I) = AX
           END DO
          END DO
        
         
         ELSE
        
          DO I = 1, NBELEM
         
           AX = 0.0

           DO J=1,NBELEM
             K = K + 1
             DO I1 = 1,NBEL2
                AX = AX + ILREE1.PROG(K)*(IJX.VELCHE(I1,J))/NBEL2
             END DO
           END DO
           NAX1 = IAX.VELCHE(/1)
           NAX2 = IAX.VELCHE(/2)

           DO J1=1,NAX1
            IAX.VELCHE(J1,I) = AX
           END DO
          END DO
         END IF
        END IF
        

        IF (IJ1.NOMCHE(ICOMPO).EQ.'JY') THEN
         IA1.NOMCHE(ICOMPO) ='AY'
         IJY = IJ1.IELVAL(ICOMPO)
         SEGACT,IJY
         
          N1PTEL =1
          N1EL = NBELEM
          N2PTEL = 0
          N2EL = 0
          SEGINI,IAY
          IA1.IELVAL(ICOMPO)=IAY
         SEGACT,IAY*MOD


         K=0
         NBEL1 = IJY.VELCHE(/2)
         NBEL2 = IJY.VELCHE(/1)
         IF (NBEL1.EQ.1) THEN
          



          DO I = 1, NBELEM
         
           AY = 0.0
           DO J=1,NBELEM
             K = K + 1
             DO I1 = 1,NBEL2
                AY = AY + ILREE1.PROG(K)*(IJY.VELCHE(I1,1))/NBEL2
             END DO
           END DO
           NAY1 = IAY.VELCHE(/1)
           NAY2 = IAY.VELCHE(/2)
           DO J1=1,NAY1
            IAY.VELCHE(J1,I) = AY
           END DO
          END DO
        
         
         ELSE
        
          DO I = 1, NBELEM
         
           AY = 0.0
           DO J=1,NBELEM
             K = K + 1
             DO I1 = 1,NBEL2
                AY = AY + ILREE1.PROG(K)*(IJY.VELCHE(I1,J))/NBEL2
             END DO
           END DO
           NAY1 = IAY.VELCHE(/1)
           NAY2 = IAY.VELCHE(/2)
           DO J1=1,NAY1
            IAY.VELCHE(J1,I) = AY
           END DO
          END DO
         END IF
        END IF






      END DO


      ICHAMA = IA

      SEGDES,ILREE1
      SEGDES,IJ
      SEGDES,IA
      SEGDES,IAX
      SEGDES,IAY
      SEGDES,IJX
      SEGDES,IJY



      RETURN
      END 
 
