/[lmdze]/trunk/dyn3d/Read_reanalyse/reanalyse2nat.f90
ViewVC logotype

Contents of /trunk/dyn3d/Read_reanalyse/reanalyse2nat.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 76 - (show annotations)
Fri Nov 15 18:45:49 2013 UTC (10 years, 6 months ago) by guez
File size: 3581 byte(s)
Moved everything out of libf.
1 subroutine reanalyse2nat(nlevnc,psi &
2 ,unc,vnc,tnc,qnc,psnc,pl,u,v,t,q &
3 ,ps,masse,pk)
4
5 ! Inversion Nord/sud de la grille + interpollation sur les niveaux
6 ! verticaux du modele.
7 ! -----------------------------------------------------------------
8
9 use dimens_m
10 use paramet_m
11 use comconst
12 use disvert_m
13 use comgeom
14 use exner_hyb_m, only: exner_hyb
15 use conf_guide_m
16 use massdair_m, only: massdair
17
18 implicit none
19
20
21 integer nlevnc
22 real psi(iip1,jjp1)
23 real u(iip1,jjp1,llm),v(iip1,jjm,llm)
24 real t(iip1,jjp1,llm),ps(iip1,jjp1),q(iip1,jjp1,llm)
25
26 real pl(nlevnc)
27 real unc(iip1,jjp1,nlevnc),vnc(iip1,jjm,nlevnc)
28 real tnc(iip1,jjp1,nlevnc),psnc(iip1,jjp1)
29 real qnc(iip1,jjp1,nlevnc)
30
31 real zu(iip1,jjp1,llm),zv(iip1,jjm,llm)
32 real zt(iip1,jjp1,llm),zq(iip1,jjp1,llm)
33
34 real pext(iip1,jjp1,llm)
35 real pbarx(iip1,jjp1,llm),pbary(iip1,jjm,llm)
36 real plunc(iip1,jjp1,llm),plvnc(iip1,jjm,llm)
37 real plsnc(iip1,jjp1,llm)
38
39 real p(iip1,jjp1,llmp1),pk(iip1,jjp1,llm),pks(iip1,jjp1)
40 real pkf(iip1,jjp1,llm)
41 real masse(iip1,jjp1,llm),pls(iip1,jjp1,llm)
42 real prefkap,unskap
43
44
45 integer i,j,l
46
47
48 ! -----------------------------------------------------------------
49 ! calcul de la pression au milieu des couches.
50 ! -----------------------------------------------------------------
51
52 forall (l = 1: llm + 1) p(:, :, l) = ap(l) + bp(l) * psi
53 call massdair(p,masse)
54 CALL exner_hyb(psi,p,pks,pk,pkf)
55
56 ! .... Calcul de pls , pression au milieu des couches ,en Pascals
57 unskap=1./kappa
58 prefkap = preff ** kappa
59 ! PRINT *,' Pref kappa unskap ',preff,kappa,unskap
60 DO l = 1, llm
61 DO j=1,jjp1
62 DO i =1, iip1
63 pls(i,j,l) = preff * ( pk(i,j,l)/cpp) ** unskap
64 ENDDO
65 ENDDO
66 ENDDO
67
68
69 ! -----------------------------------------------------------------
70 ! calcul des pressions pour les grilles u et v
71 ! -----------------------------------------------------------------
72
73 do l=1,llm
74 do j=1,jjp1
75 do i=1,iip1
76 pext(i,j,l)=pls(i,j,l)*aire_2d(i,j)
77 enddo
78 enddo
79 enddo
80 call massbar(pext, pbarx, pbary )
81 do l=1,llm
82 do j=1,jjp1
83 do i=1,iip1
84 plunc(i,jjp1+1-j,l)=pbarx(i,j,l)/aireu_2d(i,j)
85 plsnc(i,jjp1+1-j,l)=pls(i,j,l)
86 enddo
87 enddo
88 enddo
89 do l=1,llm
90 do j=1,jjm
91 do i=1,iip1
92 plvnc(i,jjm+1-j,l)=pbary(i,j,l)/airev_2d(i,j)
93 enddo
94 enddo
95 enddo
96
97 ! -----------------------------------------------------------------
98
99 if (guide_P) then
100 do j=1,jjp1
101 do i=1,iim
102 ps(i,j)=psnc(i,jjp1+1-j)
103 enddo
104 ps(iip1,j)=ps(1,j)
105 enddo
106 endif
107
108
109 ! -----------------------------------------------------------------
110 call pres2lev(unc,zu,nlevnc,llm,pl,plunc,iip1,jjp1)
111 call pres2lev(vnc,zv,nlevnc,llm,pl,plvnc,iip1,jjm )
112 call pres2lev(tnc,zt,nlevnc,llm,pl,plsnc,iip1,jjp1)
113 call pres2lev(qnc,zq,nlevnc,llm,pl,plsnc,iip1,jjp1)
114
115 ! call dump2d(iip1,jjp1,ps,'PS ')
116 ! call dump2d(iip1,jjp1,psu,'PS ')
117 ! call dump2d(iip1,jjm,psv,'PS ')
118 ! Inversion Nord/Sud
119 do l=1,llm
120 do j=1,jjp1
121 do i=1,iim
122 u(i,j,l)=zu(i,jjp1+1-j,l)
123 t(i,j,l)=zt(i,jjp1+1-j,l)
124 q(i,j,l)=zq(i,jjp1+1-j,l)
125 enddo
126 u(iip1,j,l)=u(1,j,l)
127 t(iip1,j,l)=t(1,j,l)
128 q(iip1,j,l)=q(1,j,l)
129 enddo
130 enddo
131
132 do l=1,llm
133 do j=1,jjm
134 do i=1,iim
135 v(i,j,l)=zv(i,jjm+1-j,l)
136 enddo
137 v(iip1,j,l)=v(1,j,l)
138 enddo
139 enddo
140
141 end subroutine reanalyse2nat

  ViewVC Help
Powered by ViewVC 1.1.21