source: trunk/LMDZ.TITAN/Tools/dx_dp.F @ 819

Last change on this file since 819 was 816, checked in by slebonnois, 12 years ago

SL: tools for postprocessing (Veznus and Titan); see DOC/documentation/vt-tools.pdf

File size: 2.1 KB
Line 
1      SUBROUTINE dx_dp(jjp1,llm,indefini,pniv,x,dxdp)
2c=======================================================================
3c
4c
5c   Subject:
6c   ------
7c   Calcul de la derivee /p d'1 moyenne zonale
8c   EXTRAPOLEE EN COORDONNEE DE PRESSION
9c
10c=======================================================================
11      IMPLICIT NONE
12c-----------------------------------------------------------------------
13c   Declararations:
14c   ---------------
15
16c   Arguments:
17c   ----------
18
19      integer jjp1,llm
20      real indefini
21      REAL pniv(llm)
22      REAL x(jjp1,llm)
23      REAL dxdp(jjp1,llm)
24
25c   Local:
26c   ------
27
28      INTEGER i,j,l , k
29
30c-----------------------------------------------------------------------
31      do j=1,jjp1
32         if ((x(j,1).lt.indefini).and.(x(j,2).lt.indefini)) then 
33           dxdp(j,1) = (x(j,2)-x(j,1))/(pniv(2) - pniv(1))
34         else
35           dxdp(j,1) = indefini
36         end if
37       
38         do l=2,llm-1
39           if ((x(j,l-1).lt.indefini).and.(x(j,l+1).lt.indefini))then
40             dxdp(j,l)= (x(j,l+1)-x(j,l-1))/(pniv(l+1) - pniv(l-1))
41         else if((x(j,l+1).lt.indefini).and.(x(j,l).lt.indefini))then
42             dxdp(j,l)= (x(j,l+1)-x(j,l))  /(pniv(l+1) - pniv(l))
43         else if((x(j,l-1).lt.indefini).and.(x(j,l).lt.indefini))then
44             dxdp(j,l)= (x(j,l)-x(j,l-1))  /(pniv(l)   - pniv(l-1))
45           else
46             dxdp(j,l)= indefini
47           end if
48         end do
49         if ((x(j,llm).lt.indefini).and.(x(j,llm-1).lt.indefini)) then
50         dxdp(j,llm)= (x(j,llm)-x(j,llm-1))/(pniv(llm)-pniv(llm-1))
51         else
52           dxdp(j,llm)= indefini
53         end if
54      end do
55
56c     Test
57     
58      do j=1,jjp1
59         do l = 1, llm
60           if ( (abs(dxdp(j,l)).gt.(indefini/100.)).and.
61     .          (dxdp(j,l).ne.indefini)) then
62              write(*,*) '----> j= ', j , ' l= ' ,  l
63              write(*,*) 'dxdp(j,l) ' , dxdp(j,l)
64              write(*,*) 'x' , (x(j,k),k=1,llm)
65              write(*,*) 'pniv' , pniv
66              write(*,*)
67           end if
68         end do
69      end do
70
71
72
73      RETURN
74      END
Note: See TracBrowser for help on using the repository browser.