/[lmdze]/trunk/dyn3d/fxy.f90
ViewVC logotype

Diff of /trunk/dyn3d/fxy.f90

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

revision 39 by guez, Tue Jan 25 15:11:05 2011 UTC revision 57 by guez, Mon Jan 30 12:54:02 2012 UTC
# Line 1  Line 1 
1  SUBROUTINE fxy(rlatu, yprimu, rlatv, yprimv, rlatu1, yprimu1, rlatu2, &  module fxy_m
      yprimu2, rlonu, xprimu, rlonv, xprimv, rlonm025, xprimm025, rlonp025, &  
      xprimp025)  
   
   ! From dyn3d/fxy.F, v 1.1.1.1 2004/05/19 12:53:06  
   ! Auteur : P. Le Van  
   ! Calcul des longitudes et des latitudes pour une fonction f(x, y)  
   ! à tangente sinusoïdale et éventuellement avec zoom.  
   
   USE dimens_m, ONLY : iim, jjm  
2    
3    IMPLICIT NONE    IMPLICIT NONE
4    
5    REAL, INTENT (OUT) :: rlatu(jjm + 1), yprimu(jjm + 1), rlatv(jjm)    private
6    REAL, INTENT (OUT) :: yprimv(jjm)    public fxy
7    REAL, INTENT (OUT) :: rlatu1(jjm)  
8    REAL, INTENT (OUT) :: yprimu1(jjm), rlatu2(jjm), yprimu2(jjm)  contains
9    REAL, INTENT (OUT) :: rlonu(iim + 1), xprimu(iim + 1), rlonv(iim + 1)  
10    REAL, INTENT (OUT) :: xprimv(iim + 1)    SUBROUTINE fxy(rlatu, yprimu, rlatv, yprimv, rlatu1, yprimu1, rlatu2, &
11    REAL, INTENT (OUT) :: rlonm025(iim + 1), xprimm025(iim + 1)         yprimu2, rlonu, xprimu, rlonv, xprimv, rlonm025, xprimm025, rlonp025, &
12    REAL, INTENT (OUT) :: rlonp025(iim + 1)         xprimp025)
13    REAL, INTENT (OUT) :: xprimp025(iim + 1)  
14        ! From dyn3d/fxy.F, v 1.1.1.1 2004/05/19 12:53:06
15    ! Variables local to the procedure:      ! Auteur : P. Le Van
16        ! Calcul des longitudes et des latitudes pour une fonction f(x, y)
17    INTEGER i, j      ! à tangente sinusoïdale et éventuellement avec zoom.
18    
19    !------------------------------------------------------------      USE dimens_m, ONLY : iim, jjm
20    
21    ! Calcul des latitudes et de y'      REAL, INTENT (OUT) :: rlatu(jjm + 1), yprimu(jjm + 1), rlatv(jjm)
22        REAL, INTENT (OUT) :: yprimv(jjm)
23    DO j = 1, jjm + 1      REAL, INTENT (OUT) :: rlatu1(jjm)
24       rlatu(j) = fy(real(j))      REAL, INTENT (OUT) :: yprimu1(jjm), rlatu2(jjm), yprimu2(jjm)
25       yprimu(j) = fyprim(real(j))      REAL, INTENT (OUT) :: rlonu(iim + 1), xprimu(iim + 1), rlonv(iim + 1)
26    END DO      REAL, INTENT (OUT) :: xprimv(iim + 1)
27        REAL, INTENT (OUT) :: rlonm025(iim + 1), xprimm025(iim + 1)
28    DO j = 1, jjm      REAL, INTENT (OUT) :: rlonp025(iim + 1)
29       rlatv(j) = fy(real(j) + 0.5)      REAL, INTENT (OUT) :: xprimp025(iim + 1)
30       rlatu1(j) = fy(real(j) + 0.25)  
31       rlatu2(j) = fy(real(j) + 0.75)      ! Variables local to the procedure:
32    
33       yprimv(j) = fyprim(real(j) + 0.5)      INTEGER i, j
34       yprimu1(j) = fyprim(real(j) + 0.25)  
35       yprimu2(j) = fyprim(real(j) + 0.75)      !------------------------------------------------------------
36    END DO  
37        ! Calcul des latitudes et de y'
38    ! Calcul des longitudes et de x'  
39        DO j = 1, jjm + 1
40    DO i = 1, iim + 1         rlatu(j) = fy(real(j))
41       rlonv(i) = fx(real(i))         yprimu(j) = fyprim(real(j))
42       rlonu(i) = fx(real(i) + 0.5)      END DO
43       rlonm025(i) = fx(real(i) - 0.25)  
44       rlonp025(i) = fx(real(i) + 0.25)      DO j = 1, jjm
45           rlatv(j) = fy(real(j) + 0.5)
46       xprimv(i) = fxprim(real(i))         rlatu1(j) = fy(real(j) + 0.25)
47       xprimu(i) = fxprim(real(i) + 0.5)         rlatu2(j) = fy(real(j) + 0.75)
48       xprimm025(i) = fxprim(real(i) - 0.25)  
49       xprimp025(i) = fxprim(real(i) + 0.25)         yprimv(j) = fyprim(real(j) + 0.5)
50    END DO         yprimu1(j) = fyprim(real(j) + 0.25)
51           yprimu2(j) = fyprim(real(j) + 0.75)
52        END DO
53    
54        ! Calcul des longitudes et de x'
55    
56        DO i = 1, iim + 1
57           rlonv(i) = fx(real(i))
58           rlonu(i) = fx(real(i) + 0.5)
59           rlonm025(i) = fx(real(i) - 0.25)
60           rlonp025(i) = fx(real(i) + 0.25)
61    
62           xprimv(i) = fxprim(real(i))
63           xprimu(i) = fxprim(real(i) + 0.5)
64           xprimm025(i) = fxprim(real(i) - 0.25)
65           xprimp025(i) = fxprim(real(i) + 0.25)
66        END DO
67    
68  CONTAINS    END SUBROUTINE fxy
69    
70      !******************************************************
71    
72    ! From grid/fxy_new.h, v 1.1.1.1 2004/05/19 12:53:05    ! From grid/fxy_new.h, v 1.1.1.1 2004/05/19 12:53:05
73    
74    REAL FUNCTION ripx(ri)    REAL FUNCTION ripx(ri)
75    
76      ! stretching in x      ! stretching in x
77    
78      USE nr_util, ONLY : pi      USE nr_util, ONLY : pi
79        USE dimens_m, ONLY : iim
80    
81      REAL, INTENT (IN) :: ri      REAL, INTENT (IN) :: ri
82    
83      ripx = (ri - 1.) * 2 * pi / REAL(iim)      ripx = (ri - 1.) * 2 * pi / REAL(iim)
84    
85    end function ripx    end function ripx
86    
87    !******************************************************    !******************************************************
# Line 84  CONTAINS Line 98  CONTAINS
98    !******************************************************    !******************************************************
99    
100    REAL FUNCTION fxprim(ri)    REAL FUNCTION fxprim(ri)
101    
102      ! stretching in x      ! stretching in x
103    
104      USE nr_util, ONLY : pi      USE nr_util, ONLY : pi
105      USE serre, ONLY : alphax, pxo, transx      USE serre, ONLY : alphax, pxo, transx
106        USE dimens_m, ONLY : iim
107    
108      REAL, INTENT (IN) :: ri      REAL, INTENT (IN) :: ri
109    
110      fxprim = 2 * pi / REAL(iim) * (1. + alphax * COS(ripx(ri) + transx - pxo))      fxprim = 2 * pi / REAL(iim) * (1. + alphax * COS(ripx(ri) + transx - pxo))
111    
112    end function fxprim    end function fxprim
113    
114    !******************************************************    !******************************************************
# Line 97  CONTAINS Line 116  CONTAINS
116    REAL FUNCTION bigy(rj)    REAL FUNCTION bigy(rj)
117      ! stretching in y      ! stretching in y
118      USE nr_util, ONLY : pi      USE nr_util, ONLY : pi
119        USE dimens_m, ONLY : jjm
120      REAL, INTENT (IN) :: rj      REAL, INTENT (IN) :: rj
121    
122      bigy = 2 * (REAL(jjm + 1) - rj) * pi / jjm      bigy = 2 * (REAL(jjm + 1) - rj) * pi / jjm
# Line 117  CONTAINS Line 137  CONTAINS
137    !******************************************************    !******************************************************
138    
139    REAL FUNCTION fyprim(rj)    REAL FUNCTION fyprim(rj)
140    
141      ! stretching in y      ! stretching in y
142    
143      USE nr_util, ONLY : pi      USE nr_util, ONLY : pi
144      USE serre, ONLY : alphay, pyo, transy      USE serre, ONLY : alphay, pyo, transy
145        USE dimens_m, ONLY : jjm
146    
147      REAL, INTENT (IN) :: rj      REAL, INTENT (IN) :: rj
148    
149      fyprim = (pi / jjm) * (1. + alphay * COS(bigy(rj) + transy - pyo))      fyprim = (pi / jjm) * (1. + alphay * COS(bigy(rj) + transy - pyo))
150    
151    end function fyprim    end function fyprim
152    
153  END SUBROUTINE fxy  end module fxy_m

Legend:
Removed from v.39  
changed lines
  Added in v.57

  ViewVC Help
Powered by ViewVC 1.1.21