jpmag1
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 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 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 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 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
© Cast3M 2003 - Tous droits réservés.
Mentions légales