arpini
C ARPINI SOURCE BP208322 20/02/06 21:15:06 10512 *********************************************************************** * * A R P I N I * * FONCTION: * --------- * * SPECIFICATION DES PARAMETRES D'ENTREE + CREATION DES VARIABLES DE * TRAVAIL D'ARPACK EN FONCTION DU TYPE DE PROBLEME ETUDIE * * * PARAMETRES: (E)=ENTREE (S)=SORTIE * ----------- * * NVAL ENTIER (E) NOMBRE DE MODES PROPRES CALCULES * * NK ENTIER (E) DIMENSION DU PROBLEME * * SYM LOGIQUE (E) PROBLEME SYMETRIQUE OU NON * * CHOLE LOGIQUE (E) CHOLESKY NON ALTERNATIVE POSSIBLE * * INVER LOGIQUE (E) .TRUE. -> PRODUIT SCALAIRE X'KX * .FALSE. -> PRODUIT SCALAIRE X'MX * * SIGMA COMPLEX DP (E) VALEUR PROPRE DE SHIFT * * CHOIX CHAINE*2 (E) VALEURS PROPRES VOULUES * LM - VP DE MODULE MAX * SM - VP DE MODULE MIN * LR - VP DE PARTIE R MAX * SR - VP DE PARTIE R MIN * LI - VP DE PARTIE I MAX * SI - VP DE PARTIE I MIN * LA - VP MAX * SA - VP MAX * BE - VP DE CHAQUE COTE * * IPMAUP ENTIER (E/S) POINTEUR OBJETS ARPACK * * MAXITE ENTIER (E) NOMBRE MAXIMAL D'ITERATIONS AUTORISE * * * SOUS-PROGRAMMES APPELES: * ------------------------ * * NEANT * * AUTEUR, DATE DE CREATION: * ------------------------- * * PASCAL BOUDA 29 JUIN 2015 * * LANGAGE: * -------- * * FORTRAN 77 & 90 * *********************************************************************** -INC PPARAM -INC CCOPTIO -INC TARWORK INTEGER NVAL INTEGER NK LOGICAL SYM LOGICAL CHOLE LOGICAL INVER LOGICAL PIRE CHARACTER*2 CHOIX INTEGER IPMAUP INTEGER MAXITE ndim=NK *Attention: ncv ne doit pas dépasser le nombre d'inconnues vraies ncv=min(2*NVAL+8,NK) lnev=NVAL+1 *taille de l'espace de travail qui differe du type de probleme IF (SYM) THEN lworkl=ncv**2+8*ncv lipntr=11 ELSE lworkl=3*ncv**2+6*ncv lipntr=14 ENDIF SEGINI MAUP ido=0 info=1 which=CHOIX iparam(1)=1 iparam(3)=MAXITE iparam(4)=1 iparam(7)=3 * Si Chole ou inver le problème n'est pas genéralise (matrice identite *dans le second membre) + differentiation du probleme avec shift ou non IF (PIRE) THEN bmat='I' ELSE bmat='G' ENDIF ELSE bmat='I' ELSE bmat='G' ENDIF ENDIF * -petit message informatif IF (IIMPI.GE.1) THEN IF (bmat .EQ. 'G') then WRITE(IOIMP,*)'----------- Shift-and-Invert mode -----------' WRITE(IOIMP,*)'Resolution de : K*x = lambda*M*x' WRITE(IOIMP,*)'Avec modes K-orthgonaux (K semi-def pos)' ELSE WRITE(IOIMP,*)'Avec modes M-orthgonaux (M semi-def pos)' ENDIF WRITE(IOIMP,*)'OP = (inv[K - sigma*M])*M and B = M' ELSE WRITE(IOIMP,*)'----------- Shift-and-Invert mode -----------' WRITE(IOIMP,*)'Resolution de : K*x = lambda*M*x' WRITE(IOIMP,*)'OP = inv[K]*M and B = I' ENDIF ENDIF ELSE c * -petit message informatif c IF (IIMPI.GE.1) THEN c WRITE(IOIMP,*)'--------------- Buckling mode ---------------' c WRITE(IOIMP,*)'Resolution de : K*x = lambda*KG*x' c WRITE(IOIMP,*)'K symetrique semi-defini positif, KGsymetrique' c WRITE(IOIMP,*)'OP = (inv[K - sigma*KG])*K and B = K' c ENDIF c iparam(7)=4 bmat='G' ENDIF eigvec=.TRUE. nev=NVAL howmny='A' ldv=NK IPMAUP=MAUP c SEGDES MAUP END
© Cast3M 2003 - Tous droits réservés.
Mentions légales