arpale
C ARPALE SOURCE PV090527 24/06/09 21:15:02 11936 *********************************************************************** * * A R P A L E * * FONCTION: * --------- * * INITIALISATION DU VECTEUR RESIDUEL D'ARPACK * (Cinematiquement Admissible a 0) * * * PARAMETRES: (E)=ENTREE (S)=SORTIE * ----------- * * * IPRTRA ENTIER (E) POINTEUR DES OPERATEURS DE TRAVAIL * * IPMAUP ENTIER (E/S) POINTEUR DES ELEMENTS ARPACK * * * SOUS-PROGRAMMES APPELES: * ------------------------ * * TDRAND,ARCORC,MUCPRI,RESOU1,LDMT,CHV3,ALEAT1 * * AUTEUR, DATE DE CREATION: * ------------------------- * * PASCAL BOUDA 29 JUIN 2015 * * LANGAGE: * -------- * * FORTRAN 77 & 90 * ************************************************************************ IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMCHPOI -INC SMRIGID -INC SMVECTD -INC TARWORK -INC CCREEL SEGMENT idemen(0) INTEGER IPRTRA INTEGER IPMAUP LOGICAL QUAD INTEGER IPRIGI, IPMASS, IPKSIM REAL*8 VA INTEGER IPCHO INTEGER IPCHP1,IPCHP2 INTEGER NOID,NOEN xspetl = xspeti SEGINI IDEMEN IDEMEN(**)=0 NOID=0 NOEN=1 MAUP=IPMAUP SEGACT MAUP*MOD ************************************************************************ * CAS QUADRATIQUE ************************************************************************ *pas de conditions particulières pour le vecteur initial *(pour l'instant ?) IF (QUAD) THEN DO i=1,resid(/1) resid(i)=VA ENDDO GOTO 999 ENDIF ************************************************************************ * CAS LINEAIRE ************************************************************************ MRITRA=IPRTRA SEGACT MRITRA SEGACT MRIGID IPCHO=ICHOLE SEGDES MRIGID **************************************** *Creation d'un vecteur aleatoire primal* **************************************** ************************************************************ *Calcul du nombre d'inconnues vraies (ddl's sans relations)* ************************************************************ NDDL = 0 NDLX = 0 MCHPOI = IPCHP1 SEGACT MCHPOI NSOUS = IPCHP(/1) DO ISOUS = 1, NSOUS MSOUPO = IPCHP(ISOUS) SEGACT MSOUPO MPOVAL = IPOVAL SEGACT MPOVAL NN = VPOCHA(/1) NC1 = VPOCHA(/2) NDDL = NDDL + NN*NC1 DO INC = 1,NC1 IF (NOCOMP(INC) .EQ. 'LX ') NDLX = NDLX + NN ENDDO SEGDES MSOUPO, MPOVAL ENDDO SEGDES MCHPOI NDDL = NDDL - NDLX - (NDLX/2) IF (IIMPI.GE.1) THEN WRITE(IOIMP,*) NDDL, 'INCONNUES SONT SANS RELATIONS' ENDIF *Ajustement de la taille des segments si necessaire (modification du *de la dimension de la base d'Arnoldi IF (v(/2) .GT. NDDL) THEN ndim=resid(/1) ncv=NDDL lipntr=ipntr(/1) lworkl=workl(/1) lnev=dr(/1) SEGADJ MAUP ENDIF ***************************** *Creation du residu initial * ***************************** MAUP=IPMAUP SEGACT MAUP*MOD *en fonction du type de probleme, on realise une iteration d'Arnoldi; *voir documentation de ARPITL.ESO et ARPTIQ.ESO pour plus de details IF (iparam(7) .EQ. 3) THEN *Mise a zero des inconnues en FPI : certainement inutile ? ELSEIF (iparam(7) .EQ. 4) THEN *Mise a sero des inconnues en FLX *Mise a zero des inconnues en FPI : certainement inutile ? ENDIF IDEMEN(1)=IPCHP2 IF (bmat .EQ. 'G') THEN IF (SYME(4) .EQ. 0) THEN CALL RESOU1 (IPKSIM,IDEMEN,NOID,NOEN,xspetl,0,1) ELSEIF (SYME(4) .EQ. 1) THEN ENDIF IF (IERR.NE.0) RETURN ELSEIF (bmat .EQ. 'I') THEN IF (SYME(1) .EQ. 0) THEN CALL RESOU1 (IPRIGI,IDEMEN,NOID,NOEN,xspetl,0,1) ELSEIF (SYME(1) .EQ. 1) THEN ENDIF IF (IERR.NE.0) RETURN ENDIF C RESOU desactive IDEMEN on le reactive SEGACT,IDEMEN IPCHP1=IDEMEN(1) *transformation en vecteur primal MVECTD=IPVEC SEGACT MVECTD *Stockage du vecteur residu DO i=1,resid(/1) resid(i)=VECTBB(i) ENDDO SEGSUP MVECTD SEGDES MRITRA 999 CONTINUE IPMAUP=MAUP c SEGDES MAUP END
© Cast3M 2003 - Tous droits réservés.
Mentions légales