/[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.f revision 110 by guez, Wed Sep 17 11:55:05 2014 UTC trunk/Sources/dyn3d/gcm.f revision 157 by guez, Mon Jul 20 16:01:49 2015 UTC
# Line 3  PROGRAM gcm Line 3  PROGRAM gcm
3    ! Authors: P. Le Van, L. Fairhead, F. Hourdin    ! Authors: P. Le Van, L. Fairhead, F. Hourdin
4    ! From "gcm.F", version 1.4, 2006/04/04 15:05:16    ! From "gcm.F", version 1.4, 2006/04/04 15:05:16
5    
6    ! General circulation model of LMD. Avec coordonnée verticale    ! General circulation model of LMD. Avec coordonn\'ee verticale
7    ! hybride, avec nouveaux opérateurs de dissipation "*" ("gradiv2",    ! hybride, avec nouveaux op\'erateurs de dissipation "*" ("gradiv2",
8    ! "divgrad2", "nxgraro2"). Possibilité de choisir le schéma pour    ! "divgrad2", "nxgraro2"). Possibilit\'e de choisir le sch\'ema pour
9    ! l'advection de "q", en modifiant "iadv" dans "traceur.def".    ! l'advection de "q", en modifiant "iadv" dans "traceur.def".
10    
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:  aire_2d, cu_2d, cv_2d, 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
20    use dynetat0_m, only: dynetat0, day_ini    use dynetat0_m, only: rlatu, rlonv, dynetat0, day_ini
21    use dynredem0_m, only: dynredem0    use dynredem0_m, only: dynredem0
22    use grid_change, only: dyn_phy, init_dyn_phy    use grid_change, only: dyn_phy, init_dyn_phy
23    use histclo_m, only: histclo    use histclo_m, only: histclo
# Line 31  PROGRAM gcm Line 32  PROGRAM gcm
32    use leapfrog_m, only: leapfrog    use leapfrog_m, only: leapfrog
33    use netcdf95, only: nf95_close    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
# Line 41  PROGRAM gcm Line 41  PROGRAM gcm
41    
42    ! Variables dynamiques :    ! Variables dynamiques :
43    REAL ucov(iim + 1, jjm + 1, llm), vcov(iim + 1, jjm, llm)  ! vent covariant    REAL ucov(iim + 1, jjm + 1, llm), vcov(iim + 1, jjm, llm)  ! vent covariant
44    REAL teta(iim + 1, jjm + 1, llm) ! température potentielle    REAL teta(iim + 1, jjm + 1, llm) ! temp\'erature potentielle
45    REAL q(iim + 1, jjm + 1, llm, nqmx) ! champs advectés    REAL q(iim + 1, jjm + 1, llm, nqmx) ! champs advect\'es
46    REAL ps(iim + 1, jjm + 1) ! pression au sol (Pa)    REAL ps(iim + 1, jjm + 1) ! pression au sol (Pa)
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\'eopotentiel au sol
   
   ! Variables pour le fichier histoire :  
   REAL time_0 ! time in day, as a fraction of day, in [0, 1[  
49    
50    ! Calendrier :    ! Calendrier :
51    LOGICAL:: true_calendar = .false. ! default value    LOGICAL:: true_calendar = .false. ! default value
# Line 79  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 à zéro si demandé :  
   if (raz_date) then  
      print *, 'On réinitialise à la date lue dans la namelist.'  
      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  
   
82    CALL disvert    CALL disvert
83    CALL inigeom ! initialisation de la géometrie    CALL inigeom ! initialisation de la g\'eometrie
84    CALL inifilr ! initialisation du filtre    CALL inifilr ! initialisation du filtre
85    CALL inidissip    CALL inidissip
86    call init_dyn_phy    call init_dyn_phy
# Line 132  PROGRAM gcm Line 111  PROGRAM gcm
111       call yoethf       call yoethf
112    ENDIF    ENDIF
113    
114    ! Initialisation des entrées-sorties :    ! Initialisation des entr\'ees-sorties :
115    day_end = day_ini + nday    CALL dynredem0(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\'equences 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

Legend:
Removed from v.110  
changed lines
  Added in v.157

  ViewVC Help
Powered by ViewVC 1.1.21