/[lmdze]/trunk/libf/dyn3d/dynredem1.f90
ViewVC logotype

Contents of /trunk/libf/dyn3d/dynredem1.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 20 - (show annotations)
Wed Oct 15 16:19:57 2008 UTC (15 years, 7 months ago) by guez
File size: 2299 byte(s)
Deleted argument "presnivs" of "physiq", "ini_histhf", "ini_histhf3d",
"ini_histday", "ini_histins", "ini_histrac", "phytrac". Access it from
"comvert" instead.

Replaced calls to NetCDF Fortran 77 interface by calls to Fortran 90
interface or to NetCDF95.

Procedure "gr_phy_write_3d" now works with a variable of arbitrary
size in the second dimension.

Annotated use statements with "only" clause.

Replaced calls to NetCDF interface version 2 by calls to Fortran 90
interface in "guide.f90" and "read_reanalyse.f".

In "write_histrac", replaced calls to "gr_fi_ecrit" by calls to
"gr_phy_write_2d" and "gr_phy_write_3d".

1 SUBROUTINE dynredem1(fichnom, time, vcov, ucov, teta, q, masse, ps)
2
3 ! From dyn3d/dynredem.F, v 1.2 2004/06/22 11:45:30
4
5 ! Ecriture du fichier de redémarrage au format NetCDF
6
7 USE dimens_m, ONLY : iim, jjm, llm, nqmx
8 USE temps, ONLY : itaufin, itau_dyn
9 USE iniadvtrac_m, ONLY : tname
10 use netcdf, only: nf90_open, nf90_write, nf90_noerr, nf90_put_var, &
11 nf90_get_var, nf90_close
12 use netcdf95, only: nf95_inq_varid
13
14 IMPLICIT NONE
15
16 REAL, INTENT (IN) :: vcov(iim + 1, jjm, llm), ucov(iim+1, jjm+1, llm)
17 REAL, INTENT (IN) :: teta(iim+1, jjm+1, llm)
18 REAL, INTENT (IN) :: ps(iim+1, jjm+1), masse(iim+1, jjm+1, llm)
19 REAL, INTENT (IN) :: q(iim+1, jjm+1, llm, nqmx)
20 CHARACTER(len=*), INTENT (IN) :: fichnom
21
22 REAL :: time
23 INTEGER :: nid, nvarid
24 INTEGER :: ierr
25 INTEGER :: iq
26 INTEGER :: length
27 PARAMETER (length=100)
28 REAL :: tab_cntrl(length) ! tableau des parametres du run
29 INTEGER :: nb = 0
30
31 !---------------------------------------------------------
32
33 PRINT *, 'Call sequence information: dynredem1'
34
35 ierr = nf90_open(fichnom, nf90_write, nid)
36 IF (ierr/=nf90_noerr) THEN
37 PRINT *, 'Pb. d ouverture ' // fichnom
38 STOP 1
39 END IF
40
41 ! Ecriture/extension de la coordonnee temps
42
43 nb = nb + 1
44 call nf95_inq_varid(nid, 'temps', nvarid)
45 ierr = nf90_put_var(nid, nvarid, time, (/nb/))
46 PRINT *, 'Enregistrement pour ', nb, time
47
48
49 ! Re-ecriture du tableau de controle, itaufin n'est plus defini quand
50 ! on passe dans dynredem0
51 call nf95_inq_varid(nid, 'controle', nvarid)
52 ierr = nf90_get_var(nid, nvarid, tab_cntrl)
53 tab_cntrl(31) = real(itau_dyn+itaufin)
54 ierr = nf90_put_var(nid, nvarid, tab_cntrl)
55
56 ! Ecriture des champs
57
58 call nf95_inq_varid(nid, 'ucov', nvarid)
59 ierr = nf90_put_var(nid, nvarid, ucov)
60
61 call nf95_inq_varid(nid, 'vcov', nvarid)
62 ierr = nf90_put_var(nid, nvarid, vcov)
63
64 call nf95_inq_varid(nid, 'teta', nvarid)
65 ierr = nf90_put_var(nid, nvarid, teta)
66
67 DO iq = 1, nqmx
68 call nf95_inq_varid(nid, tname(iq), nvarid)
69 ierr = nf90_put_var(nid, nvarid, q(:, :, :, iq))
70 END DO
71
72 call nf95_inq_varid(nid, 'masse', nvarid)
73 ierr = nf90_put_var(nid, nvarid, masse)
74
75 call nf95_inq_varid(nid, 'ps', nvarid)
76 ierr = nf90_put_var(nid, nvarid, ps)
77
78 ierr = nf90_close(nid)
79
80 END SUBROUTINE dynredem1

  ViewVC Help
Powered by ViewVC 1.1.21