!-------------------------------------- LICENCE BEGIN ------------------------------------ !Environment Canada - Atmospheric Science and Technology License/Disclaimer, ! version 3; Last Modified: May 7, 2008. !This is free but copyrighted software; you can use/redistribute/modify it under the terms !of the Environment Canada - Atmospheric Science and Technology License/Disclaimer !version 3 or (at your option) any later version that should be found at: !http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html ! !This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; !without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. !See the above mentioned License/Disclaimer for more details. !You should have received a copy of the License/Disclaimer along with this software; !if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec), !CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca !-------------------------------------- LICENCE END -------------------------------------- !SUBROUTINE DD1 (PROSCA,N,M,DEPL,JMIN,JMAX,PRECON,ALPHA,YBAR, 1 / SBAR,IZS,RZS,DZS) C---- C C CALCULE LE PRODUIT H G OU C . H EST UNE MATRICE CONSTRUITE PAR LA FORMULE DE BFGS INVERSE C A M MEMOIRES A PARTIR DE PRECON FOIS LA MATRICE UNITE DANS C UN ESPACE HILBERTIEN DONT LE PRODUIT SCALAIRE EST DONNE PAR C PROSCA C (CF. J. NOCEDAL, MATH. OF COMP. 35/151 (1980) 773-782) C . G EST UN VECTEUR DE DIMENSION N (EN GENERAL LE GRADIENT) C C LE FACTEUR PRECON APPARAIT DONC COMME UN PRECONDITIONNEUR C SCALAIRE. C C DEPL = G (EN ENTREE), = H G (EN SORTIE) C C LA MATRICE H EST MEMORISEE PAR LES VECTEURS DES TABLEAUX C YBAR, SBAR ET LES POINTEURS JMIN, JMAX. C C ALPHA(M) EST UNE ZONE DE TRAVAIL. C C IZS(1),RZS(1),DZS(1) SONT DES ZONES DE TRAVAIL POUR PROSCA C C---- C C ARGUMENTS C INTEGER N,M,JMIN,JMAX,IZS(1) REAL*8 DEPL(N),PRECON,ALPHA(M),YBAR(N,M),SBAR(N,M),RZS(1) DOUBLE PRECISION DZS(1) EXTERNAL PROSCA C C VARIABLES LOCALES C INTEGER JFIN,I,J,JP REAL*8 R DOUBLE PRECISION PS C JFIN=JMAX IF (JFIN.LT.JMIN) JFIN=JMAX+M C C PHASE DE DESCENTE C DO 100 J=JFIN,JMIN,-1 JP=J IF (JP.GT.M) JP=JP-M CALL PROSCA (N,DEPL,SBAR(1,JP),PS,IZS,RZS,DZS) R=PS ALPHA(JP)=R DO 20 I=1,N DEPL(I)=DEPL(I)-R*YBAR(I,JP) 20 CONTINUE 100 CONTINUE C C PRECONDITIONNEMENT C DO 150 I=1,N DEPL(I)=DEPL(I)*PRECON 150 CONTINUE C C REMONTEE C DO 200 J=JMIN,JFIN JP=J IF (JP.GT.M) JP=JP-M CALL PROSCA (N,DEPL,YBAR(1,JP),PS,IZS,RZS,DZS) R=ALPHA(JP)-PS DO 120 I=1,N DEPL(I)=DEPL(I)+R*SBAR(I,JP) 120 CONTINUE 200 CONTINUE RETURN END