/[lmdze]/trunk/phylmd/orbite.f
ViewVC logotype

Diff of /trunk/phylmd/orbite.f

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

revision 124 by guez, Thu Dec 18 17:30:24 2014 UTC revision 125 by guez, Fri Feb 6 15:00:28 2015 UTC
# Line 1  Line 1 
1  MODULE orbite_m  MODULE orbite_m
2    
   ! From phylmd/orbite.F, version 1.1.1.1 2004/05/19 12:53:08  
   
3    IMPLICIT NONE    IMPLICIT NONE
4    
5  CONTAINS  CONTAINS
6    
7    SUBROUTINE orbite(xjour, longi, dist)    SUBROUTINE orbite(xjour, longi, dist)
8    
9      use nr_util, only: pi      ! From phylmd/orbite.F, version 1.1.1.1 2004/05/19 12:53:08
     USE yomcst, ONLY : r_ecc, r_peri  
10    
11      ! Auteur(s): Z.X. Li (LMD/CNRS)      ! Author: Z.X. Li (LMD/CNRS)
12      ! Date: 1993/08/18      ! Date: 1993/08/18
13    
14      ! Pour un jour donné, calcule la longitude vraie de la Terre (par      ! Pour un jour donné, calcule la longitude vraie de la Terre et la
15      ! rapport au point vernal, 21 mars) dans son orbite      ! distance Terre-Soleil, c'est-à-dire l'unité astronomique.
16      ! solaire. Calcule aussi la distance Terre-Soleil, c'est-à-dire  
17      ! l'unité astronomique.      use nr_util, only: pi
18        USE yomcst, ONLY: r_ecc, r_peri
19    
20      REAL, INTENT (IN):: xjour ! jour de l'année à compter du premier janvier      REAL, INTENT (IN):: xjour ! jour de l'année à compter du premier janvier
21    
22      REAL, INTENT (OUT):: longi      REAL, INTENT (OUT):: longi
23      ! longitude vraie de la Terre dans son orbite solaire, par      ! longitude vraie de la Terre dans son orbite solaire, par rapport
24      ! rapport au point vernal (21 mars), en degrés      ! au point vernal (21 mars), en degrés
25    
26      REAL, INTENT (OUT), OPTIONAL:: dist      REAL, INTENT (OUT), OPTIONAL:: dist
27      ! distance terre-soleil (par rapport a la moyenne)      ! distance terre-soleil (par rapport à la moyenne)
28    
29      ! Variables locales      ! Local:
30      REAL pir, xl, xllp, xee, xse, xlam, anm, ranm, ranv      REAL pir, xl, xllp, xee, xse, ranm
31    
32      !----------------------------------------------------------------------      !----------------------------------------------------------------------
33    
34      pir = pi / 180.      pir = pi / 180.
35      xl = r_peri + 180.      xl = r_peri + 180.
36      xllp = xl * pir      xllp = xl * pir
37      xee = r_ecc * r_ecc      xee = r_ecc**2
38      xse = sqrt(1. - xee)      xse = sqrt(1. - xee)
39      xlam = (r_ecc / 2 + r_ecc * xee / 8.) * (1. + xse) * sin(xllp) &      ranm = 2. * ((r_ecc / 2 + r_ecc * xee / 8.) * (1. + xse) * sin(xllp) &
40           - xee / 4. * (0.5 + xse) * sin(2.*xllp) &           - xee / 4. * (0.5 + xse) * sin(2.*xllp) + r_ecc * xee / 8. &
41           + r_ecc * xee / 8. * (1. / 3. + xse) * sin(3.*xllp)           * (1. / 3. + xse) * sin(3. * xllp)) + (xjour - 81.) * pir - xllp
     xlam = 2. * xlam / pir  
     anm = xlam + (xjour - 81.) - xl  
     ranm = anm * pir  
42      xee = xee * r_ecc      xee = xee * r_ecc
43      ranv = ranm + (2. * r_ecc - xee / 4.) * sin(ranm) + &      longi = (ranm + (2. * r_ecc - xee / 4.) * sin(ranm) + 5. / 4. * r_ecc**2 &
44           5. / 4. * r_ecc * r_ecc * sin(2 * ranm) &           * sin(2 * ranm) + 13. / 12. * xee * sin(3. * ranm)) / pir + xl
          + 13. / 12. * xee * sin(3.*ranm)  
   
     longi = ranv / pir + xl  
45    
46      IF (present(dist)) then      IF (present(dist)) then
47         dist = (1 - r_ecc*r_ecc) &         dist = (1 - r_ecc * r_ecc) &
48              / (1 + r_ecc*cos(pir*(longi - (r_peri + 180.))))              / (1 + r_ecc * cos(pir * (longi - (r_peri + 180.))))
49      end IF      end IF
50    
51    END SUBROUTINE orbite    END SUBROUTINE orbite

Legend:
Removed from v.124  
changed lines
  Added in v.125

  ViewVC Help
Powered by ViewVC 1.1.21