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

Annotation of /trunk/dyn3d/dynredem0.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 178 - (hide annotations)
Fri Mar 11 18:47:26 2016 UTC (8 years, 2 months ago) by guez
Original Path: trunk/Sources/dyn3d/dynredem0.f
File size: 8202 byte(s)
Moved variables date0, deltat, datasz_max, ncvar_ids, point, buff_pos,
buffer, regular from module histcom_var to modules where they are
defined.

Removed procedure ioipslmpp, useless for a sequential program.

Added argument datasz_max to histwrite_real (to avoid circular
dependency with histwrite).

Removed useless variables and computations everywhere.

Changed real litteral constants from default kind to double precision
in lwb, lwu, lwvn, sw1s, swtt, swtt1, swu.

Removed unused arguments: paer of sw, sw1s, sw2s, swclr; pcldsw of
sw1s, sw2s; pdsig, prayl of swr; co2_ppm of clmain, clqh; tsol of
transp_lay; nsrf of screenp; kcrit and kknu of gwstress; pstd of
orosetup.

Added output of relative humidity.

1 guez 18 MODULE dynredem0_m
2 guez 3
3 guez 7 IMPLICIT NONE
4 guez 3
5 guez 157 INTEGER ncid
6    
7 guez 18 CONTAINS
8 guez 3
9 guez 157 SUBROUTINE dynredem0(iday_end, phis)
10 guez 3
11 guez 138 ! From dyn3d/dynredem.F, version 1.2, 2004/06/22 11:45:30
12     ! \'Ecriture du fichier de red\'emarrage au format NetCDF (initialisation)
13 guez 3
14 guez 62 USE comconst, ONLY: cpp, daysec, dtvr, g, kappa, omeg, rad
15     USE dimens_m, ONLY: iim, jjm, llm, nqmx
16 guez 92 USE disvert_m, ONLY: ap, bp, pa, preff, presnivs
17 guez 139 use dynetat0_m, only: day_ref, annee_ref, clat, clon, dzoomx, dzoomy, &
18     grossismx, grossismy, taux, tauy, rlatu, rlatv, rlonu, rlonv, rlatu1, &
19     rlatu2, yprimu1, yprimu2, xprimp025, xprimm025, xprimu, xprimv
20 guez 62 USE ener, ONLY: ang0, etot0, ptot0, stot0, ztot0
21     USE iniadvtrac_m, ONLY: tname, ttext
22 guez 92 USE ju2ymds_m, ONLY: ju2ymds
23     USE netcdf, ONLY: nf90_clobber, nf90_float, nf90_global, nf90_unlimited
24 guez 157 USE netcdf95, ONLY: nf95_create, nf95_def_dim, nf95_def_var, nf95_enddef, &
25 guez 178 nf95_put_att, nf95_put_var
26 guez 62 USE paramet_m, ONLY: iip1, jjp1, llmp1
27 guez 92 use ymds2ju_m, only: ymds2ju
28 guez 5
29 guez 62 INTEGER, INTENT(IN):: iday_end
30     REAL, INTENT(IN):: phis(:, :)
31 guez 5
32 guez 62 ! Local:
33 guez 3
34 guez 139 INTEGER iq
35 guez 22 INTEGER, PARAMETER:: length = 100
36 guez 138 REAL tab_cntrl(length) ! tableau des param\`etres du run
37 guez 5
38 guez 116 ! Pour NetCDF :
39 guez 62 INTEGER idim_index
40     INTEGER idim_rlonu, idim_rlonv, idim_rlatu, idim_rlatv
41     INTEGER idim_s, idim_sig
42 guez 128 INTEGER dimid_temps
43 guez 157 INTEGER varid
44 guez 140 integer varid_controle, varid_rlonu, varid_rlatu, varid_rlonv, varid_rlatv
45     integer varid_xprimu, varid_xprimv, varid_xprimm025, varid_xprimp025
46     integer varid_rlatu1, varid_rlatu2, varid_yprimu1, varid_yprimu2, varid_ap
47     integer varid_bp, varid_presnivs, varid_phisinit
48 guez 3
49 guez 62 REAL zjulian, hours
50     INTEGER yyears0, jjour0, mmois0
51     CHARACTER(len=30) unites
52 guez 3
53 guez 7 !-----------------------------------------------------------------------
54 guez 3
55 guez 18 PRINT *, 'Call sequence information: dynredem0'
56 guez 3
57 guez 23 CALL ymds2ju(annee_ref, 1, iday_end, 0., zjulian)
58 guez 18 CALL ju2ymds(zjulian, yyears0, mmois0, jjour0, hours)
59 guez 5
60 guez 129 tab_cntrl(1) = iim
61     tab_cntrl(2) = jjm
62     tab_cntrl(3) = llm
63     tab_cntrl(4) = day_ref
64     tab_cntrl(5) = annee_ref
65 guez 18 tab_cntrl(6) = rad
66     tab_cntrl(7) = omeg
67     tab_cntrl(8) = g
68     tab_cntrl(9) = cpp
69 guez 7 tab_cntrl(10) = kappa
70     tab_cntrl(11) = daysec
71     tab_cntrl(12) = dtvr
72     tab_cntrl(13) = etot0
73     tab_cntrl(14) = ptot0
74     tab_cntrl(15) = ztot0
75     tab_cntrl(16) = stot0
76     tab_cntrl(17) = ang0
77     tab_cntrl(18) = pa
78     tab_cntrl(19) = preff
79 guez 5
80 guez 138 ! Param\`etres pour le zoom :
81 guez 18 tab_cntrl(20) = clon
82     tab_cntrl(21) = clat
83     tab_cntrl(22) = grossismx
84     tab_cntrl(23) = grossismy
85 guez 113 tab_cntrl(24) = 1.
86     tab_cntrl(25) = dzoomx
87     tab_cntrl(26) = dzoomy
88     tab_cntrl(27) = 0.
89     tab_cntrl(28) = taux
90     tab_cntrl(29) = tauy
91 guez 5
92 guez 129 tab_cntrl(30) = iday_end
93 guez 138 tab_cntrl(31:) = 0.
94 guez 5
95 guez 157 CALL nf95_create("restart.nc", nf90_clobber, ncid)
96 guez 39 CALL nf95_put_att(ncid, nf90_global, 'title', &
97 guez 138 'start file for the dynamics code')
98 guez 5
99 guez 7 ! Definir les dimensions du fichiers:
100 guez 5
101 guez 39 CALL nf95_def_dim(ncid, 'index', length, idim_index)
102     CALL nf95_def_dim(ncid, 'rlonu', iip1, idim_rlonu)
103     CALL nf95_def_dim(ncid, 'rlatu', jjp1, idim_rlatu)
104     CALL nf95_def_dim(ncid, 'rlonv', iip1, idim_rlonv)
105     CALL nf95_def_dim(ncid, 'rlatv', jjm, idim_rlatv)
106     CALL nf95_def_dim(ncid, 'sigs', llm, idim_s)
107     CALL nf95_def_dim(ncid, 'sig', llmp1, idim_sig)
108 guez 128 CALL nf95_def_dim(ncid, 'temps', nf90_unlimited, dimid_temps)
109 guez 5
110 guez 7 ! Definir et enregistrer certains champs invariants:
111 guez 5
112 guez 140 CALL nf95_def_var(ncid, 'controle', nf90_float, idim_index, varid_controle)
113     CALL nf95_put_att(ncid, varid_controle, 'title', 'Parametres de controle')
114 guez 5
115 guez 140 CALL nf95_def_var(ncid, 'rlonu', nf90_float, idim_rlonu, varid_rlonu)
116     CALL nf95_put_att(ncid, varid_rlonu, 'title', 'Longitudes des points U')
117 guez 5
118 guez 140 CALL nf95_def_var(ncid, 'rlatu', nf90_float, idim_rlatu, varid_rlatu)
119     CALL nf95_put_att(ncid, varid_rlatu, 'title', 'Latitudes des points U')
120 guez 5
121 guez 140 CALL nf95_def_var(ncid, 'rlonv', nf90_float, idim_rlonv, varid_rlonv)
122     CALL nf95_put_att(ncid, varid_rlonv, 'title', 'Longitudes des points V')
123 guez 5
124 guez 140 CALL nf95_def_var(ncid, 'rlatv', nf90_float, idim_rlatv, varid_rlatv)
125     CALL nf95_put_att(ncid, varid_rlatv, 'title', 'Latitudes des points V')
126 guez 5
127 guez 140 CALL nf95_def_var(ncid, 'xprimu', nf90_float, idim_rlonu, varid_xprimu)
128     CALL nf95_put_att(ncid, varid_xprimu, 'title', 'dx / dX aux points u')
129 guez 139
130 guez 140 CALL nf95_def_var(ncid, 'xprimv', nf90_float, idim_rlonv, varid_xprimv)
131     CALL nf95_put_att(ncid, varid_xprimv, 'title', 'dx / dX aux points v')
132 guez 139
133 guez 140 CALL nf95_def_var(ncid, 'xprimm025', nf90_float, idim_rlonu, &
134     varid_xprimm025)
135     CALL nf95_def_var(ncid, 'xprimp025', nf90_float, idim_rlonu, &
136     varid_xprimp025)
137 guez 139
138 guez 140 CALL nf95_def_var(ncid, 'rlatu1', nf90_float, idim_rlatv, varid_rlatu1)
139     CALL nf95_def_var(ncid, 'rlatu2', nf90_float, idim_rlatv, varid_rlatu2)
140     CALL nf95_def_var(ncid, 'yprimu1', nf90_float, idim_rlatv, varid_yprimu1)
141     CALL nf95_def_var(ncid, 'yprimu2', nf90_float, idim_rlatv, varid_yprimu2)
142 guez 139
143 guez 140 CALL nf95_def_var(ncid, 'ap', nf90_float, idim_sig, varid_ap)
144     CALL nf95_put_att(ncid, varid_ap, 'title', 'Coefficient A pour hybride')
145 guez 5
146 guez 140 CALL nf95_def_var(ncid, 'bp', nf90_float, idim_sig, varid_bp)
147     CALL nf95_put_att(ncid, varid_bp, 'title', 'Coefficient B pour hybride')
148 guez 5
149 guez 140 CALL nf95_def_var(ncid, 'presnivs', nf90_float, idim_s, varid_presnivs)
150 guez 5
151 guez 7 ! Geopentiel au sol:
152 guez 5
153 guez 62 CALL nf95_def_var(ncid, 'phisinit', nf90_float, &
154 guez 140 (/idim_rlonv, idim_rlatu/), varid_phisinit)
155     CALL nf95_put_att(ncid, varid_phisinit, 'title', 'Geopotentiel au sol')
156 guez 5
157 guez 7 ! Definir les variables pour pouvoir les enregistrer plus tard:
158 guez 3
159 guez 128 CALL nf95_def_var(ncid, 'temps', nf90_float, dimid_temps, varid)
160 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Temps de simulation')
161 guez 128 WRITE(unites, fmt = 200) yyears0, mmois0, jjour0
162 guez 18 200 FORMAT ('days since ', I4, '-', I2.2, '-', I2.2, ' 00:00:00')
163 guez 39 CALL nf95_put_att(ncid, varid, 'units', unites)
164 guez 7
165 guez 62 CALL nf95_def_var(ncid, 'ucov', nf90_float, &
166 guez 128 (/idim_rlonu, idim_rlatu, idim_s, dimid_temps/), varid)
167 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Vitesse U')
168 guez 5
169 guez 62 CALL nf95_def_var(ncid, 'vcov', nf90_float, &
170 guez 128 (/idim_rlonv, idim_rlatv, idim_s, dimid_temps/), varid)
171 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Vitesse V')
172 guez 5
173 guez 62 CALL nf95_def_var(ncid, 'teta', nf90_float, &
174 guez 128 (/idim_rlonv, idim_rlatu, idim_s, dimid_temps/), varid)
175 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Temperature')
176 guez 5
177 guez 18 DO iq = 1, nqmx
178 guez 62 CALL nf95_def_var(ncid, tname(iq), nf90_float, &
179 guez 128 (/idim_rlonv, idim_rlatu, idim_s, dimid_temps/), varid)
180 guez 39 CALL nf95_put_att(ncid, varid, 'title', ttext(iq))
181 guez 18 END DO
182 guez 5
183 guez 62 CALL nf95_def_var(ncid, 'masse', nf90_float, &
184 guez 128 (/idim_rlonv, idim_rlatu, idim_s, dimid_temps/), varid)
185 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'C est quoi ?')
186 guez 5
187 guez 62 CALL nf95_def_var(ncid, 'ps', nf90_float, &
188 guez 128 (/idim_rlonv, idim_rlatu, dimid_temps/), varid)
189 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Pression au sol')
190 guez 5
191 guez 39 CALL nf95_enddef(ncid)
192 guez 3
193 guez 140 CALL nf95_put_var(ncid, varid_controle, tab_cntrl)
194     CALL nf95_put_var(ncid, varid_rlonu, rlonu)
195     CALL nf95_put_var(ncid, varid_rlatu, rlatu)
196     CALL nf95_put_var(ncid, varid_rlonv, rlonv)
197     CALL nf95_put_var(ncid, varid_rlatv, rlatv)
198     CALL nf95_put_var(ncid, varid_xprimu, xprimu)
199     CALL nf95_put_var(ncid, varid_xprimv, xprimv)
200     CALL nf95_put_var(ncid, varid_xprimm025, xprimm025)
201     CALL nf95_put_var(ncid, varid_xprimp025, xprimp025)
202     call NF95_PUT_VAR(ncid, varid_rlatu1, rlatu1)
203     call NF95_PUT_VAR(ncid, varid_rlatu2, rlatu2)
204     CALL nf95_put_var(ncid, varid_yprimu1, yprimu1)
205     CALL nf95_put_var(ncid, varid_yprimu2, yprimu2)
206     CALL nf95_put_var(ncid, varid_ap, ap)
207     CALL nf95_put_var(ncid, varid_bp, bp)
208     CALL nf95_put_var(ncid, varid_presnivs, presnivs)
209     CALL nf95_put_var(ncid, varid_phisinit, phis)
210 guez 3
211 guez 18 PRINT *, 'iim, jjm, llm, iday_end', iim, jjm, llm, iday_end
212     PRINT *, 'rad, omeg, g, cpp, kappa', rad, omeg, g, cpp, kappa
213    
214 guez 7 END SUBROUTINE dynredem0
215    
216 guez 18 END MODULE dynredem0_m

  ViewVC Help
Powered by ViewVC 1.1.21