Download pert.eso

Back to the list

   1 : C PERT      SOURCE    CHAT      05/01/13    02:13:04     5004           
   2 :       SUBROUTINE PERT
   3 :       IMPLICIT INTEGER(I-N)
   4 :       IMPLICIT  REAL*8(A-H,O-Z)
   5 : C
   6 : C=======================================================================
   7 : C  =  PERTURBATION DANS UNE SUITE DE NOMBRE                           =
   8 : C  =                                                                  =
   9 : C  =  SYNTAXE :                                                       =
  10 : C  =                                                                  =
  11 : C  =    LIST1  = PERT LIST2 ( 'SIGN'      )                           =
  12 : C  =                        ( 'AMPL' XAMP )                           =
  13 : C  =                        ( 'INIT' IINT ) ;                         =
  14 : C  =                                                                  =
  15 : C  =                                                                  =
  16 : C  =    LIST2   : OBJET DE TYPE LISTREEL CONTENANT LE SIGNAL A TRAITER=
  17 : C  =    LIST1   : OBJET DE TYPE LISTREEL CONTENANT LE SIGNAL REPONSE  =
  18 : C  =                                                                  =
  19 : C  =    XAMP    : AMPLITUDE MOYENNE DE LA PERTURMATION (RAD)          =
  20 : C  =    IINT    : INITIALISATION DU GENERATEUR ALEATOIRE              =
  21 : C  =                                                                  =
  22 : C  =                                                                  =
  23 : C  =  CREATION    : 90/08/08                                          =
  24 : C  =  PROGRAMMEUR : PEG                                               =
  25 : C=======================================================================
  26 : C
  27 : -INC CCOPTIO
  28 : -INC SMEVOLL
  29 : -INC SMLREEL
  30 : -INC CCREEL
  31 : C
  32 :       POINTEUR IPSIG.MLREEL,IPRES.MLREEL
  33 : C
  34 :       PARAMETER (NMOCLE=3)
  35 :       CHARACTER*4 MOTCLE(NMOCLE)
  36 :       DATA MOTCLE/'SIGN','AMPL','INIT'/
  37 : C
  38 :       LSIGN=0
  39 :       LAMPL=0
  40 :       IINT=0
  41 : C
  42 : C     LECTURE DE L'OBJET LISTREEL CONTENANT LE SIGNAL
  43 : C
  43 :       CALL LIROBJ('LISTREEL',IPSIG,1,IRET1)
  44 :       IF(IRET1.EQ.0) RETURN
  45 : C
  46 : C     LECTURE DES MOTS-CLEF (OPTIONEL)
  47 : C
  47 :  1    CALL LIRMOT(MOTCLE,NMOCLE,IVAL,0)
  48 : C
  49 :       IF(IVAL.EQ.0)GOTO 9
  50 :       GOTO(101,102,103),IVAL
  51 : C     ---> "SIGN"
  52 :  101  LSIGN=1
  53 :       GOTO 1
  54 : C     ---> "AMPL"
  55 :  102  LAMPL=1
  55 :       CALL LIRREE(XAMP,1,IRET1)
  56 :       IF(IRET1.EQ.0) RETURN
  57 :       GOTO 1
  58 : C     ---> "INIT"
  58 :  103  CALL LIRENT(IINT,1,IRET1)
  59 :       IF(IRET1.NE.0)THEN
  60 :         IINT=-ABS(IINT)
  61 :       ELSE
  62 :          RETURN
  63 :       ENDIF
  64 : C
  65 :  9    IF(IERR.NE.0) RETURN
  66 : C
  67 :       IF(LSIGN+LAMPL.EQ.0) LSIGN=1
  68 : C
  69 : C     DIMENSION DES TABLEAUX
  70 : C
  71 :       SEGACT IPSIG
  72 :       JG=IPSIG.PROG(/1)
  73 : C
  74 : C     CREATION DE L'OBJET RESULTAT
  75 : C
  76 :       SEGINI IPRES
  77 : C
  78 : C     TRAVAIL EN AMPLITUDE
  79 : C
  80 :       IF(LAMPL.EQ.0)THEN
  81 :         DO 10 IE1=1,JG
  82 :           IPRES.PROG(IE1)=IPSIG.PROG(IE1)
  83 :  10     CONTINUE
  84 :       ELSE
  85 : C 
  86 : C     AMPL.1) ZERO
  87 : C
  88 :         DO 15 IE1=1,JG
  89 :           IPRES.PROG(IE1)=0.D0
  90 :  15     CONTINUE
  91 : C 
  92 : C     AMPL.2) TRANSFERT "ALEATOIRE" DE PUISSANCE
  93 : C
  94 :         DO 16 IE1=1,JG
  95 :           XX=IPSIG.PROG(IE1)**2
  96 :           PHASE=TDRAN1(IINT)*XAMP*XPI/180
  97 :           CCOS2=COS(PHASE)**2
  98 :           SSIN2=1-CCOS2
  99 :           IPRES.PROG(IE1)=IPRES.PROG(IE1)+XX*CCOS2
 100 :           IF(IE1.EQ.1)THEN
 101 :             IPRES.PROG(IE1+1)=IPRES.PROG(IE1+1)+XX*SSIN2 
 102 :           ELSEIF(IE1.EQ.JG)THEN
 103 :             IPRES.PROG(IE1-1)=IPRES.PROG(IE1-1)+XX*SSIN2
 104 :           ELSE
 105 :             IPRES.PROG(IE1+1)=IPRES.PROG(IE1+1)+XX*SSIN2/2
 106 :             IPRES.PROG(IE1-1)=IPRES.PROG(IE1-1)+XX*SSIN2/2
 107 :           ENDIF
 108 :  16     CONTINUE
 109 : C 
 110 : C     AMPL.3) RESTITUTION DES MODULES SIGNES
 111 : C
 112 :         DO 17 IE1=1,JG
 113 :           IPRES.PROG(IE1)=SQRT(IPRES.PROG(IE1))
 114 :      >                   *SIGN(1.D0,IPSIG.PROG(IE1))
 115 :  17     CONTINUE
 116 :       ENDIF
 117 : 
 118 : C
 119 : C     TRAVAIL EN SIGNE
 120 : C
 121 :       IF(LSIGN.NE.0)THEN
 122 :         DO 20 IE1=1,JG
 123 :           IPRES.PROG(IE1)=IPRES.PROG(IE1)
 124 :      >                   *SIGN(1.D0,TDRAN1(IINT)-.5D0)
 125 :  20     CONTINUE
 126 :       ENDIF
 127 : C
 128 :       SEGDES IPSIG
 129 :       SEGDES IPRES
 130 : C
 130 :       CALL ECROBJ('LISTREEL',IPRES)
 131 :       RETURN
 132 :       END
 133 :  
 134 :  
 135 :  
 136 :  
 137 :  
 138 :  

© Cast3M 2003 - All rights reserved.
Disclaimer