SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
ol_write_coord.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 SUBROUTINE ol_write_coord (DGU, &
6  hfile, kfile_id, kddim, hatt_title, hname_dim, &
7  hunit1, hunit2, kdim1, hdate, px, py)
8 !
9 !
10 !
12 !
13 USE modd_ol_fileid, ONLY : xid, xout
14 USE modn_io_offline, ONLY : lwrite_coord
15 !
16 USE modi_def_var_netcdf
17 !
18 USE yomhook ,ONLY : lhook, dr_hook
19 USE parkind1 ,ONLY : jprb
20 !
21 IMPLICIT NONE
22 include 'netcdf.inc'
23 !
24 !
25 TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
26 !
27  CHARACTER(LEN=50), INTENT(IN) :: hfile
28 INTEGER, INTENT(IN) :: kfile_id
29 INTEGER, DIMENSION(:), INTENT(IN) :: kddim
30  CHARACTER(LEN=100), DIMENSION(:), INTENT(IN) :: hatt_title
31  CHARACTER(LEN=100), DIMENSION(:), INTENT(IN) :: hname_dim
32  CHARACTER(LEN=13) , DIMENSION(:), INTENT(IN) :: hunit1, hunit2
33 INTEGER, INTENT(IN) :: kdim1
34  CHARACTER(LEN=40),DIMENSION(:), INTENT(IN) :: hdate
35 REAL,DIMENSION(:), INTENT(IN) :: px, py
36 !
37 INTEGER, DIMENSION(:), ALLOCATABLE :: itemp
38 INTEGER :: ivar_id, jret
39 INTEGER :: indims
40 REAL(KIND=JPRB) :: zhook_handle
41 !
42 IF (lhook) CALL dr_hook('OL_WRITE_COORD',0,zhook_handle)
43 !
44 IF ( lwrite_coord ) THEN
45  CALL def_var_netcdf(dgu, &
46  kfile_id,'xx','abscissas',kddim(1:1),hatt_title,(/''/))
47  CALL def_var_netcdf(dgu, &
48  kfile_id,'yy','ordinates',kddim(1:1),hatt_title,(/''/))
49 ELSEIF (kdim1.NE.0) THEN
50  CALL def_var_netcdf(dgu, &
51  kfile_id,trim(hname_dim(1)),'',kddim(1:1),hatt_title,hunit1)
52  CALL def_var_netcdf(dgu, &
53  kfile_id,trim(hname_dim(2)),'',kddim(2:2),hatt_title,hunit2)
54 ENDIF
55 indims = SIZE(kddim)
56  CALL def_var_netcdf(dgu, &
57  kfile_id,'time','',kddim(indims:indims),hatt_title,hdate)
58 !
59 jret=nf_enddef(kfile_id)
60 !
61 jret=nf_open(hfile, nf_write,kfile_id)
62 IF (kdim1.NE.0) THEN
63  jret = nf_inq_varid(kfile_id, hname_dim(1), ivar_id)
64  jret = nf_put_var_double(kfile_id, ivar_id, px)
65  jret = nf_inq_varid(kfile_id, hname_dim(2), ivar_id)
66  jret = nf_put_var_double(kfile_id, ivar_id, py)
67 ELSEIF (lwrite_coord) THEN
68  jret = nf_inq_varid(kfile_id, 'xx', ivar_id)
69  jret = nf_put_var_double(kfile_id, ivar_id, px)
70  jret = nf_inq_varid(kfile_id, 'yy', ivar_id)
71  jret = nf_put_var_double(kfile_id, ivar_id, py)
72 ENDIF
73 !
74 ALLOCATE(itemp(xout))
75 itemp(SIZE(xid)+1:xout) = kfile_id
76 IF (SIZE(xid).GT.0) itemp(1:SIZE(xid))=xid
77 DEALLOCATE(xid)
78 ALLOCATE(xid(xout))
79 xid=itemp
80 DEALLOCATE(itemp)
81 !
82 IF (lhook) CALL dr_hook('OL_WRITE_COORD',1,zhook_handle)
83 !
84 END SUBROUTINE ol_write_coord
subroutine ol_write_coord(DGU, HFILE, KFILE_ID, KDDIM, HATT_TITLE, HNAME_DIM, HUNIT1, HUNIT2, KDIM1, HDATE, PX, PY)
subroutine def_var_netcdf(DGU, KFILE_ID, HNAME, HLONG_NAME, KDIM_ID, HATT_TITLE, HATT_TEXT, KVAR_ID, KTYPE, KLEN)