1 : C NHARMO SOURCE CHAT 05/01/13 01:57:05 5004 2 : SUBROUTINE NHARMO(IPOI1,IPOI2,NHAR,NUMHAR,NMIN,IHARNUM) 3 : *------------------------------------------------------------------------ 4 : * cette routine sert à determiner le nombre d'harmonique distinctes 5 : * dans deux champ par points 6 : * elle sert à la multiplication de deux champ par points 7 : * 8 : * les deux champ par points en entrée sont actifs 9 : * 10 : *------------------------------------------------------------------------ 11 : IMPLICIT INTEGER(I-N) 12 : IMPLICIT REAL*8(A-H,O-Z) 13 : -INC SMCHPOI 14 : * ce segment contient les numéro des différents harmoniques trouvées 15 : * et l'inversion du tableau 16 : SEGMENT NUMHAR(NHAR) 17 : SEGMENT IHARNUM(NVARH) 18 : * ce tableau contient les pointeurs des deux champ point 19 : DIMENSION ICHP(2) 20 : * 21 : * 22 : * 23 : MCHPO1 = IPOI1 24 : ICHP(1)= IPOI1 25 : MCHPO2 = IPOI2 26 : ICHP(2)= IPOI2 27 : NHAR = 1 28 : NMAX = -100000 29 : NMIN = +100000 30 : SEGINI NUMHAR 31 : * boucle sur les deux champ points 32 : DO 300 K=1,2 33 : MCHPO1 = ICHP(K) 34 : * boucle sur les sous zones 35 : DO 200 I=1,MCHPO1.IPCHP(/1) 36 : NSUM = 0 37 : MSOUPO = MCHPO1.IPCHP(I) 38 : SEGACT MSOUPO 39 : * boucle sur les composantes de la sous zone 40 : DO 100 J=1,NOHARM(/1) 41 : IF (NOHARM(J) .NE. 0) THEN 42 : DO 50 L=1,NHAR 43 : IF (NOHARM(J) .EQ. NUMHAR(L)) THEN 44 : GOTO 100 45 : ENDIF 46 : 50 CONTINUE 47 : NUMHAR(**) = NOHARM(J) 48 : NMAX = MAX(NMAX,NOHARM(J)) 49 : NMIN = MIN(NMIN,NOHARM(J)) 50 : ENDIF 51 : 100 CONTINUE 52 : 200 CONTINUE 53 : 300 CONTINUE 54 : * 55 : NHAR = NUMHAR(/1) 56 : NVARH=NMAX-NMIN+1 57 : * on inverse numhar 58 : * 59 : SEGINI IHARNUM 60 : DO 400 I=1,NHAR 61 : IHARNUM(NOHARM(I)-NMIN+1)=I 62 : 400 CONTINUE 63 : c 64 : RETURN 65 : END 66 : 67 : 68 :
© Cast3M 2003 - All rights reserved.
Disclaimer