source: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/config/ppsrc/dyn/moyzon_mod.f90 @ 224

Last change on this file since 224 was 224, checked in by ymipsl, 10 years ago
File size: 4.0 KB
Line 
1      MODULE moyzon_mod
2! Moyennes zonales pour transmission a la physique
3!======================================================================
4! Specifique a Titan
5!
6!======================================================================
7! Declaration des variables
8
9      REAL,ALLOCATABLE,SAVE :: zplevbar_mpi(:,:),zplaybar_mpi(:,:)
10      REAL,ALLOCATABLE,SAVE :: ztfibar_mpi(:,:),zqfibar_mpi(:,:,:)
11      REAL,ALLOCATABLE,SAVE :: zphibar_mpi(:,:),zphisbar_mpi(:)
12      REAL,ALLOCATABLE,SAVE :: zpkbar_mpi(:,:),ztetabar_mpi(:,:)
13
14      REAL,ALLOCATABLE,SAVE :: zplevbar(:,:),zplaybar(:,:)
15      REAL,ALLOCATABLE,SAVE :: ztfibar(:,:),zqfibar(:,:,:)
16      REAL,ALLOCATABLE,SAVE :: zphibar(:,:),zphisbar(:)
17      REAL,ALLOCATABLE,SAVE :: zzlevbar(:,:),zzlaybar(:,:)
18!$OMP THREADPRIVATE(zplevbar,zplaybar,ztfibar,zqfibar)
19!$OMP THREADPRIVATE(zphibar,zphisbar,zzlevbar,zzlaybar)
20
21! pmoy: global averaged pressure...
22! tmoy: global averaged temperature...
23! put here to be transfered to Titan routines...
24! to be changed...
25      REAL,ALLOCATABLE,SAVE :: plevmoy(:),playmoy(:)
26      REAL,ALLOCATABLE,SAVE :: zlevmoy(:),zlaymoy(:),phimoy(:)
27      REAL,ALLOCATABLE,SAVE :: tmoy(:),tetamoy(:),pkmoy(:)
28      INTEGER,ALLOCATABLE,SAVE :: klat(:)
29
30CONTAINS
31
32!======================================================================
33SUBROUTINE moyzon_init(klon,llm,nqtot)
34
35!! This routine needs physics
36IMPLICIT NONE
37       INTEGER :: klon,llm,nqtot
38
39      ALLOCATE(zplevbar_mpi(klon,llm+1),zplaybar_mpi(klon,llm))
40      ALLOCATE(zphibar_mpi(klon,llm),zphisbar_mpi(klon))
41      ALLOCATE(ztfibar_mpi(klon,llm),zqfibar_mpi(klon,llm,nqtot))
42      ALLOCATE(zpkbar_mpi(klon,llm),ztetabar_mpi(klon,llm))
43
44END SUBROUTINE moyzon_init
45
46!======================================================================
47SUBROUTINE moyzon_init_omp(nlon,llm,nqtot)
48
49IMPLICIT NONE
50
51      INTEGER :: nlon,llm,nqtot
52
53      ALLOCATE(zplevbar(nlon,llm+1),zplaybar(nlon,llm))
54      ALLOCATE(zphibar(nlon,llm),zphisbar(nlon))
55      ALLOCATE(ztfibar(nlon,llm),zqfibar(nlon,llm,nqtot))
56      ALLOCATE(zzlevbar(nlon,llm+1),zzlaybar(nlon,llm))
57
58END SUBROUTINE moyzon_init_omp
59
60!======================================================================
61SUBROUTINE moyzon(nlev,var,varbar)
62
63IMPLICIT NONE
64!-----------------------------------------------------------------------
65!   INCLUDE 'dimensions.h'
66!
67!   dimensions.h contient les dimensions du modele
68!   ndm est tel que iim=2**ndm
69!-----------------------------------------------------------------------
70
71      INTEGER iim,jjm,llm,ndm
72
73      PARAMETER (iim= 128,jjm=96,llm=64,ndm=1)
74
75!-----------------------------------------------------------------------
76!
77! $Header$
78!
79!
80!  ATTENTION!!!!: ce fichier include est compatible format fixe/format libre
81!                 veillez  n'utiliser que des ! pour les commentaires
82!                 et  bien positionner les & des lignes de continuation
83!                 (les placer en colonne 6 et en colonne 73)
84!
85!
86!-----------------------------------------------------------------------
87!   INCLUDE 'paramet.h'
88
89      INTEGER  iip1,iip2,iip3,jjp1,llmp1,llmp2,llmm1
90      INTEGER  kftd,ip1jm,ip1jmp1,ip1jmi1,ijp1llm
91      INTEGER  ijmllm,mvar
92      INTEGER jcfil,jcfllm
93
94      PARAMETER( iip1= iim+1,iip2=iim+2,iip3=iim+3                       &
95     &    ,jjp1=jjm+1-1/jjm)
96      PARAMETER( llmp1 = llm+1,  llmp2 = llm+2, llmm1 = llm-1 )
97      PARAMETER( kftd  = iim/2 -ndm )
98      PARAMETER( ip1jm  = iip1*jjm,  ip1jmp1= iip1*jjp1 )
99      PARAMETER( ip1jmi1= ip1jm - iip1 )
100      PARAMETER( ijp1llm= ip1jmp1 * llm, ijmllm= ip1jm * llm )
101      PARAMETER( mvar= ip1jmp1*( 2*llm+1) + ijmllm )
102      PARAMETER( jcfil=jjm/2+5, jcfllm=jcfil*llm )
103
104!-----------------------------------------------------------------------
105
106      INTEGER :: nlev
107      REAL,dimension(iip1,nlev) :: var
108      REAL,dimension(nlev)      :: varbar
109
110      INTEGER :: i
111
112      varbar(:) = 0.
113      do i=1,iim
114        varbar(:)=varbar(:)+var(i,:)/iim
115      enddo
116
117      return
118END SUBROUTINE moyzon
119
120!======================================================================
121      END MODULE moyzon_mod
Note: See TracBrowser for help on using the repository browser.