invchp
C INVCHP SOURCE CB215821 20/11/25 13:30:24 10792 C INVCHPO SOURCE DEGAY 97/03/19 21:15:03 2601 ************************************************************************ * NOM : INVCHP * DESCRIPTION : Inverse un CHPOINT (appelé par l'opérateur INVE) ************************************************************************ * HISTORIQUE : 18/03/1997 : DEGAY : création de la routine INVCHPO * branchement sur l'opérateur INVE * HISTORIQUE : 4/04/1997 : PYROS1 : INVCHPO renommé en INVCHP * HISTORIQUE : 29/10/2010 : JCARDO : détection des NaN pour un message * d'erreur plus clair (n°1012) * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS DE COMPLÉTER LES COMMENTAIRES * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * SYNTAXE * * CALL INVCHP(ICHP,ICHP2) * * - ENTRÉE : ICHP : pointeur sur le CHPOINT à inverser * - SORTIE : ICHP2 : pointeur sur le CHPOINT après inversion * ************************************************************************ IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCREEL -INC SMCHPOI -INC SMELEME C C * GMAXI = 1.d-50 MCHPOI = ICHP SEGACT MCHPOI SEGINI,MCHPO1=MCHPOI SEGDES MCHPOI NSOUPO = MCHPO1.IPCHP(/1) DO 300 I=1,NSOUPO MSOUPO = MCHPO1.IPCHP(I) SEGACT MSOUPO SEGINI,MSOUP1=MSOUPO SEGDES MSOUPO MCHPO1.IPCHP(I)=MSOUP1 MPOVAL = MSOUP1.IPOVAL SEGACT MPOVAL N=VPOCHA(/1) NC=VPOCHA(/2) SEGINI MPOVA1 MSOUP1.IPOVAL = MPOVA1 DO 200 J=1,NC DO 100 K=1,N * IF (ABS(VPOCHA(K,J)).GT.(XPETIT*GMAXI)) THEN IF (ABS(VPOCHA(K,J)).GT.(XPETIT*1.d10)) THEN MPOVA1.VPOCHA(K,J)=1.D0/VPOCHA(K,J) * GMAXI = MAX(GMAXI,ABS(VPOCHA(K,J))) ELSE AA = VPOCHA(K,J) SEGDES MPOVAL,MSOUPO SEGSUP MPOVA1 SEGSUP MCHPO1 IF ((AA .LT. 0.) .EQV. (AA .GE. 0.)) THEN * Opération interrompue: valeur NaN détectée dans l'objet CHPOINT MOTERR(1:8)='CHPOINT ' ELSE * Opération impossible: division par zéro ENDIF RETURN ENDIF 100 CONTINUE 200 CONTINUE SEGDES MPOVAL SEGDES MPOVA1 SEGDES MSOUP1 300 CONTINUE SEGDES MCHPO1 ICHP2=MCHPO1 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales