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

Diff of /trunk/dyn3d/gcm.f

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

trunk/dyn3d/gcm.f90 revision 79 by guez, Fri Feb 28 17:52:47 2014 UTC trunk/dyn3d/gcm.f revision 129 by guez, Fri Feb 13 18:22:38 2015 UTC
# Line 8  PROGRAM gcm Line 8  PROGRAM gcm
8    ! "divgrad2", "nxgraro2"). Possibilité de choisir le schéma pour    ! "divgrad2", "nxgraro2"). Possibilité de choisir le schéma pour
9    ! l'advection de "q", en modifiant "iadv" dans "traceur.def".    ! l'advection de "q", en modifiant "iadv" dans "traceur.def".
10    
   USE calendar, only: ioconf_calendar  
11    use comconst, only: daysec, dtvr, iniconst    use comconst, only: daysec, dtvr, iniconst
12    use comgeom, only: rlatu, aire_2d, cu_2d, cv_2d, rlonv, inigeom    use comgeom, only: rlatu, aire_2d, cu_2d, cv_2d, rlonv, inigeom
13    use comgeomphy, only: airephy, cuphy, cvphy, rlatd, rlond    use comgeomphy, only: airephy, cuphy, cvphy, rlatd, rlond
14    use conf_gcm_m, only: day_step, iperiod, anneeref, dayref, iecri, iphysiq, &    use conf_gcm_m, only: day_step, iperiod, iecri, iphysiq, nday, periodav, &
15         nday, raz_date, periodav, conf_gcm, iflag_phys         conf_gcm, iflag_phys
16      use conf_guide_m, only: conf_guide
17    use dimens_m, only: iim, jjm, llm, nqmx    use dimens_m, only: iim, jjm, llm, nqmx
18    use dimphy, only: klon    use dimphy, only: klon
19    USE disvert_m, ONLY : disvert    USE disvert_m, ONLY : disvert
# Line 27  PROGRAM gcm Line 27  PROGRAM gcm
27    use initdynav_m, only: initdynav    use initdynav_m, only: initdynav
28    use inithist_m, only: inithist    use inithist_m, only: inithist
29    use init_dynzon_m, only: init_dynzon    use init_dynzon_m, only: init_dynzon
30      USE ioconf_calendar_m, only: ioconf_calendar
31    use jumble, only: new_unit    use jumble, only: new_unit
32    use leapfrog_m, only: leapfrog    use leapfrog_m, only: leapfrog
33      use netcdf95, only: nf95_close
34    use suphec_m, only: suphec    use suphec_m, only: suphec
   use temps, only: day_ref, annee_ref, day_end, itau_dyn  
35    use tracstoke, only: istdyn, istphy    use tracstoke, only: istdyn, istphy
36    use unit_nml_m, only: unit_nml    use unit_nml_m, only: unit_nml
37    use yoethf_m, only: yoethf    use yoethf_m, only: yoethf
38      use createnewfield_m, only: NbField, Ncid
39    
40    IMPLICIT NONE    IMPLICIT NONE
41    
# Line 45  PROGRAM gcm Line 47  PROGRAM gcm
47    REAL masse(iim + 1, jjm + 1, llm) ! masse d'air    REAL masse(iim + 1, jjm + 1, llm) ! masse d'air
48    REAL phis(iim + 1, jjm + 1) ! géopotentiel au sol    REAL phis(iim + 1, jjm + 1) ! géopotentiel au sol
49    
   ! Variables pour le fichier histoire :  
   REAL time_0 ! time in day, as a fraction of day, in [0, 1[  
   
50    ! Calendrier :    ! Calendrier :
51    LOGICAL:: true_calendar = .false. ! default value    LOGICAL:: true_calendar = .false. ! default value
52    
# Line 55  PROGRAM gcm Line 54  PROGRAM gcm
54    ! (mask for points in the "v" grid, first index is for longitude,    ! (mask for points in the "v" grid, first index is for longitude,
55    ! second index is for latitude)    ! second index is for latitude)
56    
57      integer i
58    
59    namelist /main_nml/true_calendar    namelist /main_nml/true_calendar
60    
61    !------------------------------------------------------------    !------------------------------------------------------------
# Line 75  PROGRAM gcm Line 76  PROGRAM gcm
76       call ioconf_calendar('360d')       call ioconf_calendar('360d')
77    endif    endif
78    
   ! Initialisation des traceurs  
   ! Choix du schéma pour l'advection dans le fichier "traceur.def" ou via INCA  
79    call iniadvtrac    call iniadvtrac
   
80    CALL iniconst    CALL iniconst
81      CALL dynetat0(vcov, ucov, teta, q, masse, ps, phis)
   ! Lecture du fichier "start.nc" :  
   CALL dynetat0(vcov, ucov, teta, q, masse, ps, phis, time_0)  
   
   ! On remet le calendrier à zero si demandé :  
   if (annee_ref /= anneeref .or. day_ref /= dayref) then  
      print *, 'Attention : les dates initiales lues dans le fichier ' // &  
           '"start" ne correspondent pas à celles lues dans "gcm.def".'  
      if (raz_date) then  
         print *, 'On réinitialise à la date lue dans "gcm.def".'  
         annee_ref = anneeref  
         day_ref = dayref  
         day_ini = dayref  
         itau_dyn = 0  
         time_0 = 0.  
      else  
         print *, 'On garde les dates du fichier "start".'  
      endif  
   ELSE  
      raz_date = .false.  
   endif  
   
82    CALL disvert    CALL disvert
83    CALL inigeom ! initialisation de la géometrie    CALL inigeom ! initialisation de la géometrie
84    CALL inifilr ! initialisation du filtre    CALL inifilr ! initialisation du filtre
# Line 135  PROGRAM gcm Line 112  PROGRAM gcm
112    ENDIF    ENDIF
113    
114    ! Initialisation des entrées-sorties :    ! Initialisation des entrées-sorties :
115    day_end = day_ini + nday    CALL dynredem0("restart.nc", day_ini + nday, phis)
116    print *, "day_ini = ", day_ini    CALL inithist(dtvr, nqmx, t_ops = iecri * daysec, t_wrt = iecri * daysec)
117    print *, "day_end = ", day_end    CALL initdynav(dtvr, nqmx, t_ops = iperiod * dtvr, t_wrt = periodav * daysec)
   
   CALL dynredem0("restart.nc", day_end, phis)  
   CALL inithist(day_ref, annee_ref, dtvr, nqmx, t_ops = iecri * daysec, &  
        t_wrt = iecri * daysec)  
   CALL initdynav(day_ref, annee_ref, dtvr, nqmx, t_ops = iperiod * dtvr, &  
        t_wrt = periodav * daysec)  
118    call init_dynzon(dt_app = dtvr * iperiod)    call init_dynzon(dt_app = dtvr * iperiod)
119    
120    ! Choix des fréquences de stockage pour le hors-ligne :    ! Choix des fréquences de stockage pour le hors-ligne :
121    istdyn = day_step / 4 ! stockage toutes les 6 h = 1 jour / 4    istdyn = day_step / 4 ! stockage toutes les 6 h = 1 jour / 4
122    istphy = istdyn / iphysiq        istphy = istdyn / iphysiq    
123    
124    ! Intégration temporelle du modèle :    CALL conf_guide
125    CALL leapfrog(ucov, vcov, teta, ps, masse, phis, q, time_0)    CALL leapfrog(ucov, vcov, teta, ps, masse, phis, q)
126    
127    close(unit_nml)    close(unit_nml)
128    call histclo    call histclo
129    
130      do i = 1, nbfield
131         call nf95_close(Ncid(i))
132      end do
133    
134    print *, 'Simulation finished'    print *, 'Simulation finished'
135    print *, 'Everything is cool'    print *, 'Everything is cool'
136    

Legend:
Removed from v.79  
changed lines
  Added in v.129

  ViewVC Help
Powered by ViewVC 1.1.21