source: LMDZ5/trunk/libf/phylmd/phys_cal_mod.F90 @ 2352

Last change on this file since 2352 was 2344, checked in by Ehouarn Millour, 9 years ago

Physics/dynamics separation: get rid of all the 'include "temps.h"' in the physics; variables in module time_phylmdz_mod must be used instead. Also added JD_cur, JH_cur and JD_ref in module phys_cal_mod, in preparation for having physics handle its calendar internally.
EM

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
File size: 2.2 KB
Line 
1! $Id:$
2MODULE phys_cal_mod
3! This module contains information on the calendar at the current time step
4
5  INTEGER,SAVE :: year_cur      ! current year
6!$OMP THREADPRIVATE(year_cur)
7  INTEGER,SAVE :: mth_cur       ! current month
8!$OMP THREADPRIVATE(mth_cur)
9  INTEGER,SAVE :: day_cur       ! current day
10!$OMP THREADPRIVATE(day_cur)
11  INTEGER,SAVE :: days_elapsed  ! number of whole days since start of the simulation
12!$OMP THREADPRIVATE(days_elapsed)
13  INTEGER,SAVE :: mth_len       ! number of days in the current month
14!$OMP THREADPRIVATE(mth_len)
15  INTEGER,SAVE :: year_len      ! number of days in the current year
16!$OMP THREADPRIVATE(year_len)
17  REAL,SAVE    :: hour
18!$OMP THREADPRIVATE(hour)
19  REAL,SAVE    :: jD_1jan
20!$OMP THREADPRIVATE(jD_1jan)
21  REAL,SAVE    :: jH_1jan
22!$OMP THREADPRIVATE(jH_1jan)
23  REAL,SAVE    :: xjour
24!$OMP THREADPRIVATE(xjour)
25  REAL,SAVE    :: jD_cur  ! jour courant a l'appel de la physique (jour julien)
26!$OMP THREADPRIVATE(jD_cur)
27  REAL,SAVE    :: jH_cur  ! heure courante a l'appel de la physique (jour julien)
28!$OMP THREADPRIVATE(jH_cur)
29  REAL,SAVE    :: jD_ref  ! jour du demarage de la simulation (jour julien)
30!$OMP THREADPRIVATE(jD_ref)
31
32
33CONTAINS
34 
35  SUBROUTINE phys_cal_init(annee_ref,day_ref)
36  USE IOIPSL, ONLY:  ymds2ju
37  IMPLICIT NONE
38    INTEGER,INTENT(IN) :: annee_ref
39    INTEGER,INTENT(IN) :: day_ref
40
41    CALL ymds2ju(annee_ref, 1, day_ref, 0., jD_ref)
42    jD_ref=INT(jD_ref)
43 
44  END SUBROUTINE  phys_cal_init
45
46  SUBROUTINE phys_cal_update(jD_cur, jH_cur)
47    ! This subroutine updates the module saved variables.
48
49    USE IOIPSL, only: ju2ymds, ymds2ju, ioget_mon_len, ioget_year_len
50   
51    REAL, INTENT(IN) :: jD_cur ! jour courant a l'appel de la physique (jour julien)
52    REAL, INTENT(IN) :: jH_cur ! heure courante a l'appel de la physique (jour julien)
53   
54    CALL ju2ymds(jD_cur+jH_cur, year_cur, mth_cur, day_cur, hour)
55    CALL ymds2ju(year_cur, 1, 1, 0., jD_1jan)
56   
57    jH_1jan = jD_1jan - int (jD_1jan)
58    jD_1jan = int (jD_1jan)
59    xjour = jD_cur - jD_1jan
60    days_elapsed = jD_cur - jD_1jan
61
62    ! Get lenght of acutual month
63    mth_len = ioget_mon_len(year_cur,mth_cur)
64
65    year_len = ioget_year_len(year_cur)
66
67  END SUBROUTINE phys_cal_update
68
69END MODULE phys_cal_mod
Note: See TracBrowser for help on using the repository browser.