!-------------------------------------- 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 VTAPST2(PY,PR,PCON,KLEV,KILG,VMA,VMB,VMC) 1 C *S/P VTAP: C CALCULE Y A PARTIR DE R PAR SOLUTION DE L'EQUATION R*CON=S**E*D(Y) C AVEC UN SCHEME DU 4EME ORDRE DU A J. COTE. ON DOIT FOURNIR LA COND C A LA LIMITE INF. Y(N). LA MATRICE MATAP A ETE CALCULEE DANS LA C SUBR. MATAPAT. C NOTE: CET ALGORITHME EST EXACTEMENT REVERSIBLE (VOIR VPAT). C C AUTHOR: MICHEL BELAND - AVRIL 1984 - ADAPTE AU MODELE SEF, AVRIL 1984. C C REVISION: LUC FILLION - AUG 94 - MODIFIED FOR VARIATIONAL ANALYSIS. C Simon Pellerin : Extension to 2D GZ C ARGUMENTS: C PY : PRIMITIVE C PR : INTEGRAND C PCON : CONSTANTE C KLEV : NOMBRE DE NIVEAUX SIGMA DU MODELE. C KILG : NOMBRE DE LONGITUDES SUR LA GRILLE DE CALCUL. C C#endif IMPLICIT NONE INTEGER KILG, KLEV REAL*8 PY(KILG,KLEV), PR(KILG,KLEV), PCON real*8 vma(kilg,klev),vmb(kilg,klev),vmc(kilg,klev) C INTEGER JLON, IKLEVM2, JK, IK REAL*8 ZAK, ZBK, ZCK * ** DO 10 JLON = 1, KILG ZAK = -2.0*PCON*VMA(jlon,KLEV) ZBK = -2.0*PCON*VMB(jlon,KLEV) ZCK = -2.0*PCON*VMC(jlon,KLEV) PY(JLON,KLEV-1) = ZAK * PR(JLON,KLEV-1) + ZBK * PR(JLON,KLEV) + + ZCK * PR(JLON,KLEV-2) + PY(JLON,KLEV) 10 CONTINUE IKLEVM2 = KLEV-2 DO 30 JK = 1, IKLEVM2 IK = KLEV-1-JK DO 20 JLON = 1, KILG ZAK = -2.0*PCON*VMA(jlon,IK+1) ZBK = -2.0*PCON*VMB(jlon,IK+1) ZCK = -2.0*PCON*VMC(jlon,IK+1) PY(JLON,IK) = ZAK * PR(JLON,IK) + ZBK * PR(JLON,IK+1) + + ZCK * PR(JLON,IK+2) + PY(JLON,IK+2) 20 CONTINUE 30 CONTINUE C C RETURN END