/[lmdze]/trunk/dyn3d/fxysinus.f
ViewVC logotype

Diff of /trunk/dyn3d/fxysinus.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/libf/dyn3d/fxysinus.f revision 3 by guez, Wed Feb 27 13:16:39 2008 UTC trunk/dyn3d/fxysinus.f revision 82 by guez, Wed Mar 5 14:57:53 2014 UTC
# Line 1  Line 1 
1  !  
2  ! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/fxysinus.F,v 1.1.1.1 2004/05/19 12:53:06 lmdzadmin Exp $  ! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/fxysinus.F,v 1.1.1.1 2004/05/19
3  !  ! 12:53:06 lmdzadmin Exp $
4        SUBROUTINE fxysinus (rlatu,yprimu,rlatv,yprimv,rlatu1,yprimu1,  
5       ,                    rlatu2,yprimu2,  SUBROUTINE fxysinus(rlatu, yprimu, rlatv, yprimv, rlatu1, yprimu1, rlatu2, &
6       ,  rlonu,xprimu,rlonv,xprimv,rlonm025,xprimm025,rlonp025,xprimp025)      yprimu2, rlonu, xprimu, rlonv, xprimv, rlonm025, xprimm025, rlonp025, &
7        xprimp025)
8    
9        use dimens_m  
10        use paramet_m    USE dimens_m
11        use comconst    USE paramet_m
12        IMPLICIT NONE    USE comconst
13  c    USE nr_util, ONLY: pi
14  c     Calcul  des longitudes et des latitudes  pour une fonction f(x,y)    IMPLICIT NONE
15  c            avec y = Asin( j )  .  
16  c    ! Calcul  des longitudes et des latitudes  pour une fonction f(x,y)
17  c     Auteur  :  P. Le Van    ! avec y = Asin( j )  .
18  c  
19  c    ! Auteur  :  P. Le Van
20    
21         INTEGER i,j  
22    
23         REAL rlatu(jjp1), yprimu(jjp1),rlatv(jjm), yprimv(jjm),    INTEGER i, j
24       , rlatu1(jjm), yprimu1(jjm), rlatu2(jjm), yprimu2(jjm)  
25         REAL rlonu(iip1),xprimu(iip1),rlonv(iip1),xprimv(iip1),    REAL rlatu(jjp1), yprimu(jjp1), rlatv(jjm), yprimv(jjm), rlatu1(jjm), &
26       , rlonm025(iip1),xprimm025(iip1), rlonp025(iip1),xprimp025(iip1)      yprimu1(jjm), rlatu2(jjm), yprimu2(jjm)
27      REAL rlonu(iip1), xprimu(iip1), rlonv(iip1), xprimv(iip1), rlonm025(iip1), &
28         include "fxy_sin.h"      xprimm025(iip1), rlonp025(iip1), xprimp025(iip1)
29    
30    
31  c    ......  calcul  des  latitudes  et de y'   .....    ! $Header: /home/cvsroot/LMDZ4/libf/grid/fxy_sin.h,v 1.1.1.1 2004/05/19
32  c    ! 12:53:05 lmdzadmin Exp $
33         DO j = 1, jjm + 1  
34            rlatu(j) = fy    ( FLOAT( j )        )    ! -----------------------------------------------------------------------
35           yprimu(j) = fyprim( FLOAT( j )        )  
36         ENDDO    ! ................................................................
37      ! ................  Fonctions in line  ...........................
38      ! ................................................................
39         DO j = 1, jjm  
40      REAL fy, fx, fxprim, fyprim
41           rlatv(j)  = fy    ( FLOAT( j ) + 0.5  )    REAL ri, rj
42           rlatu1(j) = fy    ( FLOAT( j ) + 0.25 )  
43           rlatu2(j) = fy    ( FLOAT( j ) + 0.75 )  
44      fy(rj) = asin(1.+2.*((1.-rj)/float(jjm)))
45          yprimv(j)  = fyprim( FLOAT( j ) + 0.5  )    fyprim(rj) = 1./sqrt((rj-1.)*(jjm+1.-rj))
46          yprimu1(j) = fyprim( FLOAT( j ) + 0.25 )  
47          yprimu2(j) = fyprim( FLOAT( j ) + 0.75 )    fx(ri) = 2.*pi/float(iim)*(ri-0.5*float(iim)-1.)
48      ! fx    ( ri ) = 2.*pi/FLOAT(iim) * ( ri - 0.5* ( FLOAT(iim) + 1.) )
49         ENDDO    fxprim(ri) = 2.*pi/float(iim)
50    
51  c  
52  c     .....  calcul   des  longitudes et de  x'   .....    ! La valeur de pi est passee par le common/const/ou /const2/ .
53  c    ! Sinon, il faut la calculer avant d'appeler ces fonctions .
54         DO i = 1, iim + 1  
55             rlonv(i)     = fx    (   FLOAT( i )          )    ! ----------------------------------------------------------------
56             rlonu(i)     = fx    (   FLOAT( i ) + 0.5    )    ! Fonctions a changer eventuellement, selon x(x) et y(y) choisis .
57          rlonm025(i)     = fx    (   FLOAT( i ) - 0.25  )    ! -----------------------------------------------------------------
58          rlonp025(i)     = fx    (   FLOAT( i ) + 0.25  )  
59      ! .....  ici, on a l'application particuliere suivante   ........
60           xprimv  (i)    = fxprim (  FLOAT( i )          )  
61           xprimu  (i)    = fxprim (  FLOAT( i ) + 0.5    )    ! **************************************
62          xprimm025(i)    = fxprim (  FLOAT( i ) - 0.25   )    ! **     x = 2. * pi/iim *  X         **
63          xprimp025(i)    = fxprim (  FLOAT( i ) + 0.25   )    ! **     y =      pi/jjm *  Y         **
64         ENDDO    ! **************************************
65    
66  c    ! ..................................................................
67         RETURN    ! ..................................................................
68         END  
69    
70    
71      ! -----------------------------------------------------------------------
72    
73      ! ......  calcul  des  latitudes  et de y'   .....
74    
75      DO j = 1, jjm + 1
76        rlatu(j) = fy(float(j))
77        yprimu(j) = fyprim(float(j))
78      END DO
79    
80    
81      DO j = 1, jjm
82    
83        rlatv(j) = fy(float(j)+0.5)
84        rlatu1(j) = fy(float(j)+0.25)
85        rlatu2(j) = fy(float(j)+0.75)
86    
87        yprimv(j) = fyprim(float(j)+0.5)
88        yprimu1(j) = fyprim(float(j)+0.25)
89        yprimu2(j) = fyprim(float(j)+0.75)
90    
91      END DO
92    
93    
94      ! .....  calcul   des  longitudes et de  x'   .....
95    
96      DO i = 1, iim + 1
97        rlonv(i) = fx(float(i))
98        rlonu(i) = fx(float(i)+0.5)
99        rlonm025(i) = fx(float(i)-0.25)
100        rlonp025(i) = fx(float(i)+0.25)
101    
102        xprimv(i) = fxprim(float(i))
103        xprimu(i) = fxprim(float(i)+0.5)
104        xprimm025(i) = fxprim(float(i)-0.25)
105        xprimp025(i) = fxprim(float(i)+0.25)
106      END DO
107    
108    
109      RETURN
110    END SUBROUTINE fxysinus
111    

Legend:
Removed from v.3  
changed lines
  Added in v.82

  ViewVC Help
Powered by ViewVC 1.1.21