source: LMDZ5/trunk/libf/dyn3dmem/diverg_gam_loc.F @ 1660

Last change on this file since 1660 was 1632, checked in by Laurent Fairhead, 12 years ago

Import initial du répertoire dyn3dmem

Attention! ceci n'est qu'une version préliminaire du code "basse mémoire":
le code contenu dans ce répertoire est basé sur la r1320 et a donc besoin
d'être mis à jour par rapport à la dynamique parallèle d'aujourd'hui.
Ce code est toutefois mis à disposition pour circonvenir à des problèmes
de mémoire que certaines configurations du modèle pourraient rencontrer.
Dans l'état, il compile et tourne sur vargas et au CCRT


Initial import of dyn3dmem

Warning! this is just a preliminary version of the memory light code:
it is based on r1320 of the code and thus needs to be updated before
it can replace the present dyn3dpar code. It is nevertheless put at your
disposal to circumvent some memory problems some LMDZ configurations may
encounter. In its present state, it will compile and run on vargas and CCRT

File size: 2.8 KB
RevLine 
[1632]1      SUBROUTINE diverg_gam_loc(klevel,cuvscvgam,cvuscugam,unsairegam,
2     *                       unsapolnga,unsapolsga,  x, y,  div )
3c
4c     P. Le Van
5c
6c  *********************************************************************
7c  ... calcule la divergence a tous les niveaux d'1 vecteur de compos.
8c     x et y...
9c              x et y  etant des composantes covariantes   ...
10c  *********************************************************************
11      USE parallel
12      IMPLICIT NONE
13c
14c      x  et  y  sont des arguments  d'entree pour le s-prog
15c        div      est  un argument  de sortie pour le s-prog
16c
17c
18c   ---------------------------------------------------------------------
19c
20c    ATTENTION : pendant ce s-pg , ne pas toucher au COMMON/scratch/  .
21c
22c   ---------------------------------------------------------------------
23#include "dimensions.h"
24#include "paramet.h"
25#include "comgeom.h"
26c
27c    ..........          variables en arguments    ...................
28c
29      INTEGER klevel
30      REAL x( ijb_u:ije_u,klevel ),y( ijb_v:ije_v,klevel )
31      REAL div( ijb_u:ije_u,klevel )
32      REAL cuvscvgam(ip1jm),cvuscugam(ip1jmp1),unsairegam(ip1jmp1)
33      REAL unsapolnga,unsapolsga
34c
35c    ...............     variables  locales   .........................
36
37      REAL aiy1( iip1 ) , aiy2( iip1 )
38      REAL sumypn,sumyps
39      INTEGER   l,ij
40c    ...................................................................
41c
42      EXTERNAL  SSUM
43      REAL      SSUM
44      INTEGER :: ijb,ije,jjb,jje
45c
46c
47      ijb=ij_begin
48      ije=ij_end
49      if (pole_nord) ijb=ij_begin+iip1
50      if(pole_sud)  ije=ij_end-iip1
51
52c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
53      DO 10 l = 1,klevel
54c
55        DO  ij = ijb, ije - 1
56         div( ij + 1, l )     = ( 
57     *  cvuscugam( ij+1 ) * x( ij+1,l ) - cvuscugam( ij ) * x( ij , l) +
58     *  cuvscvgam(ij-iim) * y(ij-iim,l) - cuvscvgam(ij+1) * y(ij+1,l) )*
59     *         unsairegam( ij+1 )
60        ENDDO
61c
62c     ....  correction pour  div( 1,j,l)  ......
63c     ....   div(1,j,l)= div(iip1,j,l) ....
64c
65CDIR$ IVDEP
66        DO  ij = ijb,ije,iip1
67         div( ij,l ) = div( ij + iim,l )
68        ENDDO
69c
70c     ....  calcul  aux poles  .....
71c
72       if (pole_nord) then
73          DO  ij  = 1,iim
74           aiy1(ij) =    cuvscvgam(    ij       ) * y(     ij     , l )
75          ENDDO
76          sumypn = SSUM ( iim,aiy1,1 ) * unsapolnga
77
78          DO  ij = 1,iip1
79           div(     ij    , l ) = - sumypn
80          ENDDO
81       endif
82       
83        if (pole_sud) then
84          DO  ij  = 1,iim
85           aiy2(ij) =    cuvscvgam( ij+ ip1jmi1 ) * y( ij+ ip1jmi1, l )
86          ENDDO
87          sumyps = SSUM ( iim,aiy2,1 ) * unsapolsga
88
89          DO  ij = 1,iip1
90           div( ij + ip1jm, l ) =   sumyps
91          ENDDO
92       endif
93  10  CONTINUE
94c$OMP END DO NOWAIT
95c
96
97       RETURN
98       END
Note: See TracBrowser for help on using the repository browser.