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

Contents of /trunk/dyn3d/gcm.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 168 - (show annotations)
Wed Sep 9 10:41:47 2015 UTC (8 years, 8 months ago) by guez
Original Path: trunk/Sources/dyn3d/gcm.f
File size: 3423 byte(s)
In order to be able to choose finer resolutions, set large memory
model in compiler options and use dynamic libraries.

Variables rlatd, rlond, cuphy and cvphy of module comgeomphy were
never used. (In LMDZ, they are used only for Orchid.)

There is a bug in PGI Fortran 13.10 that does not accept the
combination of forall, pack and spread in regr_pr_av and
regr_pr_int. In order to circumvent this bug, created the function
gr_dyn_phy.

In program test_inifilr, use a single latitude coordinate for north
and south.

1 PROGRAM gcm
2
3 ! Authors: P. Le Van, L. Fairhead, F. Hourdin
4 ! From "gcm.F", version 1.4, 2006/04/04 15:05:16
5
6 ! General circulation model of LMD. Avec coordonn\'ee verticale
7 ! hybride, avec nouveaux op\'erateurs de dissipation "*" ("gradiv2",
8 ! "divgrad2", "nxgraro2"). Possibilit\'e de choisir le sch\'ema pour
9 ! l'advection de "q", en modifiant "iadv" dans "traceur.def".
10
11 use comconst, only: daysec, dtvr, iniconst
12 use comgeom, only: aire_2d, inigeom
13 use comgeomphy, only: airephy
14 use conf_gcm_m, only: day_step, iperiod, iecri, iphysiq, nday, periodav, &
15 conf_gcm, iflag_phys
16 use conf_guide_m, only: conf_guide
17 use dimens_m, only: iim, jjm, llm, nqmx
18 use dimphy, only: klon
19 USE disvert_m, ONLY : disvert
20 use dynetat0_m, only: dynetat0, day_ini
21 use dynredem0_m, only: dynredem0
22 use grid_change, only: dyn_phy, init_dyn_phy
23 use histclo_m, only: histclo
24 use iniadvtrac_m, only: iniadvtrac
25 use inidissip_m, only: inidissip
26 use inifilr_m, only: inifilr
27 use initdynav_m, only: initdynav
28 use inithist_m, only: inithist
29 use init_dynzon_m, only: init_dynzon
30 USE ioconf_calendar_m, only: ioconf_calendar
31 use jumble, only: new_unit
32 use leapfrog_m, only: leapfrog
33 use netcdf95, only: nf95_close
34 use suphec_m, only: suphec
35 use tracstoke, only: istdyn, istphy
36 use unit_nml_m, only: unit_nml
37 use yoethf_m, only: yoethf
38 use createnewfield_m, only: NbField, Ncid
39
40 IMPLICIT NONE
41
42 ! Variables dynamiques :
43 REAL ucov(iim + 1, jjm + 1, llm), vcov(iim + 1, jjm, llm) ! vent covariant
44 REAL teta(iim + 1, jjm + 1, llm) ! temp\'erature potentielle
45 REAL q(iim + 1, jjm + 1, llm, nqmx) ! champs advect\'es
46 REAL ps(iim + 1, jjm + 1) ! pression au sol (Pa)
47 REAL masse(iim + 1, jjm + 1, llm) ! masse d'air
48 REAL phis(iim + 1, jjm + 1) ! g\'eopotentiel au sol
49
50 LOGICAL:: true_calendar = .false. ! default value
51 integer i
52
53 namelist /main_nml/true_calendar
54
55 !------------------------------------------------------------
56
57 call new_unit(unit_nml)
58 open(unit_nml, file="used_namelists.txt", status="replace", action="write")
59
60 CALL conf_gcm
61
62 print *, "Enter namelist 'main_nml'."
63 read (unit=*, nml=main_nml)
64 write(unit_nml, nml=main_nml)
65
66 ! Choix du calendrier :
67 if (true_calendar) then
68 call ioconf_calendar('gregorian')
69 else
70 call ioconf_calendar('360d')
71 endif
72
73 call iniadvtrac
74 CALL iniconst
75 CALL dynetat0(vcov, ucov, teta, q, masse, ps, phis)
76 CALL disvert
77 CALL inigeom ! initialisation de la g\'eometrie
78 CALL inifilr ! initialisation du filtre
79 CALL inidissip
80 call init_dyn_phy
81
82 ! Initialisation de la physique :
83 IF (iflag_phys == 1) THEN
84 airephy = pack(aire_2d, dyn_phy)
85 CALL suphec
86 call yoethf
87 ENDIF
88
89 ! Initialisation des entr\'ees-sorties :
90 CALL dynredem0(day_ini + nday, phis)
91 CALL inithist(dtvr, nqmx, t_ops = iecri * daysec, t_wrt = iecri * daysec)
92 CALL initdynav(dtvr, nqmx, t_ops = iperiod * dtvr, t_wrt = periodav * daysec)
93 call init_dynzon(dt_app = dtvr * iperiod)
94
95 ! Choix des fr\'equences de stockage pour le hors-ligne :
96 istdyn = day_step / 4 ! stockage toutes les 6 h = 1 jour / 4
97 istphy = istdyn / iphysiq
98
99 CALL conf_guide
100 CALL leapfrog(ucov, vcov, teta, ps, masse, phis, q)
101
102 close(unit_nml)
103 call histclo
104
105 do i = 1, nbfield
106 call nf95_close(Ncid(i))
107 end do
108
109 print *, 'Simulation finished'
110 print *, 'Everything is cool'
111
112 END PROGRAM gcm

  ViewVC Help
Powered by ViewVC 1.1.21