C RESCGS SOURCE CHAT 05/01/13 02:51:23 5004 SUBROUTINE RESCGS(IZB,MTABP,IZP) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C RESOLUTION DE L'EQUATION K*P = B PAR LA METHODE DU GRADIENT C C CONJUGUE PRECONDITIONNE. LA MATRICE EST STOCKEE. C C C C MTABP EST UNE TABLE QUI CONTIENT LES INFOS NECESSAIRES POUR LE C C CALCUL. C C C C IZP ET IZB SONT LA SOLUTION ET LE SECOND MEMBRE DE L'EQUATION C C C C ON DECODE LA TABLE MTABP.METHODE ET ON APPELLE LE SP C C DE LA BIBLIOTHEQUE : C C C C CGRES (SANS PRECONDITIONNEMENT) C C CGRESD (PRECONDITIONNEMENT DIAGONAL) C C CGRESI (PRECONDITIONNEMENT CHOLESKI) C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC SMLREEL POINTEUR IZB.MLREEL POINTEUR IZP.MLREEL CHARACTER*8 TYPE TYPE=' ' CALL ACMO(MTABP,'MATRIS',TYPE,MTAB2) TYPE=' ' CALL ACMO(MTABP,'METHODE',TYPE,MTAB3) CALL ECME(MTAB3,'ICOLD',0) CALL ACME(MTAB3,'IPAT',IPAT) CALL ECMO(MTAB3,'IZP','LISTREEL',IZP) IF(IPAT.LE.3) THEN IPOU=1 VPOU=100.D0 CALL ECME(MTAB3,'IPOU',IPOU) CALL ECMF(MTAB3,'VPOU',VPOU) ELSE CALL ECME(MTAB3,'IPOU',0) ENDIF C C Il faut renseigner KSTO,NL,ILG,IMAT,IPRC,IA,JA,KA, C **** ** *** **** **** ** ** ** C IZB,IZP,ICOLD,NPT,NPITE,EPI,IPOU,VPOU C *** *** ***** *** ***** *** **** **** C NIMPR et IPAT !!! C ***** **** C CALL ACME(MTAB3,'KSTOCK',KSTO) CALL ACME(MTAB3,'KTYPI',KTYPI) CALL ACME(MTAB2,'NL',NL) CALL ACME(MTAB2,'ILG',ILG) TYPE=' ' CALL ACMO(MTAB2,'IMAT',TYPE,IMAT) TYPE=' ' CALL ACMO(MTAB3,'IPRC',TYPE,IPRC) TYPE=' ' CALL ACMO(MTAB2,'IA',TYPE,IA) TYPE=' ' CALL ACMO(MTAB2,'JA',TYPE,JA) TYPE=' ' CALL ACMO(MTAB2,'KA',TYPE,KA) TYPE=' ' CALL ACMO(MTAB3,'IZP',TYPE,IZP) CALL ACME(MTAB3,'ICOLD',ICOLD) CALL ACME(MTAB3,'NITMAX',NPT) CALL ACME(MTAB3,'NPITE',NPITE) CALL ACMF(MTAB3,'EPSI',EPSI) CALL ACME(MTAB3,'IPOU',IPOU) CALL ACMF(MTAB3,'VPOU',VPOU) CALL ACME(MTAB3,'NFIMPR',NIMPR) CALL ACME(MTAB3,'IPAT',IPAT) C C Il faut renseigner KSTO,NL,ILG,IMAT,(IPRC),IA,JA,KA, C **** ** *** **** **** ** ** ** C IZB,IZP,ICOLD,NPT,NPITE,NEFF,EPI,IPOU,VPOU C *** *** ***** *** ***** 0000 *** **** **** C NIMPR et IPAT !!! C ***** **** C IF(KTYPI.EQ.2) THEN CALL CGRES( KSTO, 1 NL,ILG, 2 IMAT,IA,JA,KA, 3 IZB,IZP,ICOLD, 4 NPT,NPITE,NEFF,ICONV,EPSI,IPOU,VPOU, 5 NIMPR,IPAT) ELSEIF(KTYPI.EQ.3) THEN CALL CGRESD( KSTO, 1 NL,ILG, 2 IMAT,IPRC,IA,JA,KA, 3 IZB,IZP,ICOLD, 4 NPT,NPITE,NEFF,ICONV,EPSI,IPOU,VPOU, 5 NIMPR,IPAT) ELSEIF(KTYPI.EQ.4) THEN CALL CGRESI( KSTO, 1 NL,ILG, 2 IMAT,IPRC,IA,JA,KA, 3 IZB,IZP,ICOLD, 4 NPT,NPITE,NEFF,ICONV,EPSI,IPOU,VPOU, 5 NIMPR,IPAT) ELSE WRITE(6,*) 'RESGCS : KTYPI = ',KTYPI,' INVALIDE' ENDIF C SEGACT IZB,IZP C JG=IZB.PROG(/1) C CALL RSETD(IZB.PROG,IZP.PROG,JG) C SEGDES IZB,IZP C C Reglage a posteriori de la frequence des tests si on a converge C au premier test. C IF(ICONV.EQ.1) THEN IF(NEFF.EQ.NPITE) THEN NPITE=MAX(NPITE/2,3) ELSE NPITE=MAX(NEFF/10,10) ENDIF ENDIF CALL ECME(MTAB3,'NPITE',NPITE) CALL ECMO(MTAB3,'IZP','LISTREEL',IZP) IPAT=IPAT+1 RETURN END