arpch1
C ARPCH1 SOURCE BP208322 20/02/06 21:15:03 10512 *********************************************************************** * * A R P C H 1 * * FONCTION: * --------- * * PASSAGE D'UN CHPOINT A UN VECTEUR COMPATIBLE AVEC LA * "REVERSE COMMUNICATION" D'ARPACK ET VICE VERSA POUR * UN PROBLEME LINAIRE * * PARAMETRES: (E)=ENTREE (S)=SORTIE * ----------- * * IPRIGI ENTIER (E) POINTEUR D'UN MRIGID (IVECRI) * * IPRIG ENTIER (E) POINTEUR DE LA RIGIDITE * * IPMAUP ENTIER (E/S) POINTEUR DES ELEMENTS ARPACK * * IPCHP ENTIER (E/S) POINTEUR DU CHPOINT * * APOINT ENTIER (E) INDICE DU TABLEAU 'ipntr': * POSITION DE LA 1ERE COMPOSANTE * DANS LE TABLEAU DE TRAVAIL 'workd' * * SENS ENTIER (E) ENTIER POUR TYPE DE LA CONVERSION * -1 CHPOINT PRIMAL -> VECTEUR * -2 CHPOINT DUAL -> VECTEUR * -3 VECTEUR -> CHPOINT PRIMAL * -4 VECTEUR -> CHPOINT DUAL * * SOUS-PROGRAMMES APPELES: * ------------------------ * * TRIANG,LDMT1,VCH1,VCH2,CHV3,CHV2 * * AUTEUR, DATE DE CREATION: * ------------------------- * * * PASCAL BOUDA 28 MAI 2015 * * LANGAGE: * -------- * * FORTRAN 77 & 90 * *********************************************************************** -INC PPARAM -INC CCOPTIO -INC SMVECTD -INC SMRIGID -INC TARWORK INTEGER IPRIGI INTEGER IPRIG INTEGER IPMAUP INTEGER IPCHP INTEGER APOINT INTEGER SENS INTEGER IPVEC INTEGER IPCHO INTEGER INSYM INTEGER START INTEGER ndim INTEGER IPCHB *On recupere le ichole MRIGID=IPRIGI SEGACT MRIGID IPCHO=ICHOLE SEGDES MRIGID *On récupère la position de la 1ere composante et la taille du vecteur MAUP=IPMAUP SEGACT MAUP START=ipntr(APOINT)-1 ndim=resid(/1) SEGDES MAUP INC=ndim *Premier sens: on lit le vecteur arpack (en ayant repere sa position au *prealable) et on le transforme en chpoint dual ou primal IF (SENS .EQ. 3 .OR. SENS .EQ. 4) THEN MAUP=IPMAUP SEGACT MAUP SEGINI MVECTD DO i=1,INC VECTBB(i)=workd(START+i) ENDDO IPVEC=MVECTD SEGDES MVECTD c SEGDES MAUP IF (SENS .EQ. 3) THEN *transofmation en chpoint primal ELSEIF (SENS .EQ. 4) THEN * transformation en chpoint dual ENDIF *Second sens: on ecrit dans le vecteur arpack (en ayant repéré sa *position au préalable) ELSEIF (SENS .EQ. 1 .OR. SENS .EQ. 2) THEN * transformation en vecteur primal IF (SENS .EQ. 1) THEN ELSEIF (SENS .EQ. 2) THEN *transformation en vecteur dual ENDIF MAUP=IPMAUP SEGACT MAUP*MOD MVECTD=IPVEC SEGACT MVECTD DO i=1,INC workd(START+i)=VECTBB(i) ENDDO SEGSUP MVECTD IPMAUP=MAUP c SEGDES MAUP ENDIF END
© Cast3M 2003 - Tous droits réservés.
Mentions légales