C ARPERR SOURCE BP208322 20/02/06 21:15:05 10512 SUBROUTINE ARPERR (IPMAUP,SYM,OUT) *********************************************************************** * * A R P E R R * * FONCTION: * --------- * * GESTION DES MESSAGES D'ERREUR EN EN SORTIE DES * SUBROUTINES ARPACK * * * * PARAMETRES: (E)=ENTREE (S)=SORTIE * ----------- * * IPMAUP ENTIER (E) POINTEUR VARIABLES ARPACK * * SYM LOGIQUE (E) PROBLEME SYMETRIQUE OU NON * * OUT LOGIQUE (S) FLAG DE CONVERGENCE * * * SOUS-PROGRAMMES APPELES: * ------------------------ * * NEANT * * AUTEUR,DATE DE CREATION: * ------------------------- * * PASCAL BOUDA 16 SEPTEMBRE 2015 * * LANGAGE: * -------- * * FORTRAN 77 & 90 * *********************************************************************** IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC SMRIGID -INC TARWORK c -INC TARTRAK INTEGER IPMAUP LOGICAL SYM LOGICAL OUT MAUP=IPMAUP c SEGACT MAUP * si ido=99, le processus doit s'arreter IF (ido .EQ. 99) THEN NOPX =ITRAK(1) NBX =ITRAK(2) NRORTH=ITRAK(3) NITREF=ITRAK(4) NRSTRT=ITRAK(5) *Information sur les etapes de la factorisations IF (IIMPI .GE. 200) THEN WRITE(IOIMP,*)'Nb de mises a jour de l espace solution', nopx WRITE(IOIMP,*)'Nb de produits A*X', nopx WRITE(IOIMP,*)'Nb de produits B*X',nbx WRITE(IOIMP,*)'Nb de re-orthogonalisations',nrorth WRITE(IOIMP,*)'Nb de redemarrages implicites',nrstrt ENDIF IF (nrstrt .GT. 0) THEN WRITE(*,*) nrstrt , 'redemarrage(s) a (ont) été effectue(s)' ENDIF OUT=.TRUE. * pour quelle raison doit-on sortir ? * si info=0, tout c'est bien passe, sinon un probleme IF (info .NE. 0) THEN IF (info .EQ. 1) THEN WRITE(IOIMP,*) 'Nombre maximal d iterations atteint' WRITE(IOIMP,*) 'Toutes les valeurs propres sont trouvees' WRITE(IOIMP,*) 'mais toutes n ont pas converge' ELSEIF (info .EQ. 3) THEN WRITE(IOIMP,*) 'Impossible d appliquer les shifts lors' WRITE(IOIMP,*) 'du redemarrage implicite. Diminuer' WRITE(IOIMP,*) 'le nombre de valeurs propres demandees' ELSEIF (info .EQ. -1) THEN WRITE(IOIMP,*) 'La dimension du probleme doit etre' WRITE(IOIMP,*) 'strictement positive' ELSEIF (info .EQ. -2) THEN WRITE(IOIMP,*) 'Le nombre de valeurs propres souhaitées' WRITE(IOIMP,*) 'doit etre strictement positif' ELSEIF (info .EQ. -3) THEN WRITE(IOIMP,*) 'Dimension du probleme : N', v(/1) WRITE(IOIMP,*) 'Nb de vecteurs d Arnoldi a calculer : NA=' & ,v(/2) WRITE(IOIMP,*) 'Nb de valeurs propres a calculer : NV',nev IF (SYM) THEN WRITE(IOIMP,*) 'Verifier que NV < NA <= N' ELSE WRITE(IOIMP,*) 'Verifier que 2 <= NA - NV <= N' ENDIF ELSEIF (info .EQ. -5) THEN WRITE(IOIMP,*) 'Option de tri selectionnee : ', which WRITE(IOIMP,*) 'Choisir parmi les options suivantes :' IF (SYM) THEN WRITE(IOIMP,*) 'LM, SM, LA, SA, BE' ELSE WRITE(IOIMP,*) 'LM, SM, LR, SR, LI , SI' ENDIF ELSEIF (info .EQ. -8) THEN WRITE(IOIMP,*) 'Erreur lors du calcul des valeurs propres' ELSEIF (info .EQ. -9) THEN WRITE(IOIMP,*) 'Le vecteur initial est nul ou erreur' WRITE(IOIMP,*) 'lors du calcul des vecteurs propres' ELSEIF (info .EQ. -9999) THEN WRITE(IOIMP,*) 'Echec du calcul des vecteurs d Arnoldi' ENDIF CALL ERREUR(223) ENDIF ENDIF c SEGDES MAUP END