Download invchp.eso

Back to the list

   1 : C INVCHP    SOURCE    JC220346  10/11/08    21:15:07     6789           
   2 : C INVCHPO   SOURCE    DEGAY     97/03/19    21:15:03     2601
   3 :       SUBROUTINE INVCHP(ICHP,ICHP2)
   4 : ************************************************************************
   5 : * NOM         : INVCHP
   6 : * DESCRIPTION : Inverse un CHPOINT (appelé par l'opérateur INVE)
   7 : ************************************************************************
   8 : * HISTORIQUE : 18/03/1997 : DEGAY : création de la routine INVCHPO
   9 : *                                   branchement sur l'opérateur INVE
  10 : * HISTORIQUE :  4/04/1997 : PYROS1 : INVCHPO renommé en INVCHP
  11 : * HISTORIQUE : 29/10/2010 : JCARDO : détection des NaN pour un message
  12 : *                                    d'erreur plus clair (n°1012)
  13 : * HISTORIQUE :
  14 : * HISTORIQUE :
  15 : ************************************************************************
  16 : * Prière de PRENDRE LE TEMPS DE COMPLÉTER LES COMMENTAIRES
  17 : * en cas de modification de ce sous-programme afin de faciliter
  18 : * la maintenance !
  19 : ************************************************************************
  20 : * SYNTAXE
  21 : *
  21 : *       CALL INVCHP(ICHP,ICHP2)
  22 : *
  23 : *        - ENTRÉE : ICHP  : pointeur sur le CHPOINT à inverser
  24 : *        - SORTIE : ICHP2 : pointeur sur le CHPOINT après inversion
  25 : *
  26 : ************************************************************************
  27 : 
  28 :       IMPLICIT INTEGER(I-N)
  29 :       IMPLICIT REAL*8(A-H,O-Z)
  30 : -INC CCOPTIO
  31 : -INC CCREEL
  32 : -INC SMCHPOI
  33 : -INC SMELEME
  34 : C
  35 : C
  36 : *      GMAXI = 1.d-50
  37 :       MCHPOI = ICHP
  38 :       SEGACT MCHPOI
  39 :       SEGINI,MCHPO1=MCHPOI
  40 :       SEGDES MCHPOI
  41 :       NSOUPO = MCHPO1.IPCHP(/1)
  42 :       DO 300 I=1,NSOUPO
  43 :         MSOUPO = MCHPO1.IPCHP(I)
  44 :         SEGACT MSOUPO
  45 :         SEGINI,MSOUP1=MSOUPO
  46 :         SEGDES MSOUPO
  47 :         MCHPO1.IPCHP(I)=MSOUP1
  48 :         MPOVAL = MSOUP1.IPOVAL
  49 :         SEGACT MPOVAL
  50 :         N=VPOCHA(/1)
  51 :         NC=VPOCHA(/2)
  52 :         SEGINI MPOVA1
  53 :         MSOUP1.IPOVAL = MPOVA1
  54 :         DO 200  J=1,NC
  55 :           DO 100 K=1,N
  56 : 
  57 : *            IF (ABS(VPOCHA(K,J)).GT.(XPETIT*GMAXI)) THEN
  58 :             IF (ABS(VPOCHA(K,J)).GT.(XPETIT*1.d10)) THEN
  59 :               MPOVA1.VPOCHA(K,J)=1.D0/VPOCHA(K,J)
  60 : *              GMAXI = MAX(GMAXI,ABS(VPOCHA(K,J)))
  61 : 
  62 :             ELSE
  63 : 
  64 :               AA = VPOCHA(K,J)
  65 : 
  66 :               SEGDES MPOVAL,MSOUPO
  67 :               SEGSUP MPOVA1
  68 :               SEGSUP MCHPO1
  69 : 
  70 :               IF ((AA .LT. 0.) .EQV. (AA .GE. 0.)) THEN
  71 : *               Opération interrompue: valeur NaN détectée dans l'objet CHPOINT
  72 :                 MOTERR(1:8)='CHPOINT '
  72 :                 CALL ERREUR(1012)
  73 :               ELSE
  74 : *               Opération impossible: division par zéro
  74 :                 CALL ERREUR(835)
  75 :               ENDIF
  76 : 
  77 :               RETURN
  78 : 
  79 :             ENDIF
  80 : 
  81 :  100      CONTINUE
  82 :  200    CONTINUE
  83 :         SEGDES MPOVAL
  84 :         SEGDES MPOVA1
  85 :         SEGDES MSOUP1
  86 :  300  CONTINUE
  87 :       SEGDES MCHPO1
  88 :       ICHP2=MCHPO1
  89 :       RETURN
  90 :       END
  91 : 
  92 : 
  93 : 
  94 : 
  95 : 
  96 : 
  97 : 
  98 :  

© Cast3M 2003 - All rights reserved.
Disclaimer