SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
write_file_map.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 !-----------------------------------------------------------------
6 ! ##########################
7  SUBROUTINE write_file_map(PVAR,HVAR)
8 ! ##########################
9 !
10 !!
11 !! PURPOSE
12 !! -------
13 !
14 !
15 !!** METHOD
16 !! ------
17 !
18 !! EXTERNAL
19 !! --------
20 !!
21 !! none
22 !!
23 !! IMPLICIT ARGUMENTS
24 !! ------------------
25 !!
26 !! REFERENCE
27 !! ---------
28 !!
29 !! AUTHOR
30 !! ------
31 !!
32 !! K. Chancibault * Meteo-France *
33 !!
34 !! MODIFICATIONS
35 !! -------------
36 !!
37 !! Original 25/01/2005
38 !-------------------------------------------------------------------------------
39 !
40 !* 0. DECLARATIONS
41 ! ------------
42 !
43 USE modd_topd_par, ONLY : nunit
44 USE modd_topodyn, ONLY : ccat, nncat, nnyc, nnxc, xx0, xy0, xdxt, nline, &
45  xtopd, xnul
46 !
47 USE modd_surf_par, ONLY : xundef
48 !
49 USE modi_get_luout
50 USE modi_open_file
51 USE modi_close_file
52 !
53 USE yomhook ,ONLY : lhook, dr_hook
54 USE parkind1 ,ONLY : jprb
55 !
56 IMPLICIT NONE
57 !
58 !* 0.1 declarations of arguments
59 !
60 REAL, DIMENSION(:,:), INTENT(IN) :: pvar ! variable to write in the file
61  CHARACTER(LEN=30), INTENT(IN) :: hvar ! end name of the file
62 !
63 !* 0.2 declarations of local variables
64  CHARACTER(LEN=50),DIMENSION(NNCAT) :: cname
65  CHARACTER(LEN=40) :: cfmt
66  CHARACTER(*),PARAMETER :: ypfmt1="('(',I4,'(F10.3,')"
67 INTEGER :: jwrk1,jj,ji,jcat
68 INTEGER :: iindex ! reference number of the pixel
69 INTEGER :: iluout
70 REAL :: zout ! pixel not included in the catchment
71 REAL :: zmin,zmax
72 REAL :: zx1, zy1, zx2, zy2 ! left top and right bottom pixels coordinates
73 REAL(KIND=JPRB) :: zhook_handle
74 !-------------------------------------------------------------------------------
75 IF (lhook) CALL dr_hook('WRITE_FILE_MAP',0,zhook_handle)
76 !
77 !* 0. Initialization:
78 ! ---------------
79 !
80  CALL get_luout('OFFLIN',iluout)
81 
82 zout = xundef
83 !
84 DO jcat=1,nncat
85  !
86  cname(jcat) = trim(ccat(jcat))//trim(hvar)
87  !
88  WRITE(iluout,*) cname(jcat)
89  !
90  CALL open_file('ASCII ',nunit,hfile=cname(jcat),hform='FORMATTED')
91  !
92  !* 1.0 writing header map file
93  ! --------------------------------------
94  !
95  iindex = (nnyc(jcat)-1) * nnxc(jcat) + 1
96  !
97  zx1 = xx0(jcat)
98  zy1 = xy0(jcat) + ( (nnyc(jcat)-1) * xdxt(jcat) )
99  !
100  zmin = minval(pvar(jcat,:))
101  zmax = maxval(pvar(jcat,:),mask=pvar(jcat,:)/=xundef)
102  !
103  DO jj=1,5
104  WRITE(nunit,*)
105  ENDDO
106  !
107  WRITE(nunit,*) xx0(jcat)
108  WRITE(nunit,*) xy0(jcat)
109  WRITE(nunit,*) nnxc(jcat)
110  WRITE(nunit,*) nnyc(jcat)
111  WRITE(nunit,*) zout
112  WRITE(nunit,*) xdxt(jcat)
113  WRITE(nunit,*) zmin
114  WRITE(nunit,*) zmax
115  !
116  DO jj=1,nnyc(jcat)
117  !
118  DO ji=1,nnxc(jcat)
119  !
120  iindex = (jj - 1) * nnxc(jcat) + ji
121  zx1 = xx0(jcat) + ((ji-1) * xdxt(jcat))
122  zy1 = xy0(jcat) + ((jj-1) * xdxt(jcat))
123  !
124  IF ( xtopd(jcat,iindex).EQ.xnul(jcat) ) THEN
125  !
126  WRITE(nunit,*) zout
127  !
128  ELSEIF (nline(jcat,iindex)/=0) THEN
129  !
130  WRITE(nunit,*) pvar(jcat,nline(jcat,iindex))
131  !
132  ELSE
133  !
134  WRITE(nunit,*) zout
135  !
136  ENDIF
137  !
138  ENDDO
139  !
140  ENDDO
141  !
142  CALL close_file('ASCII ',nunit)
143  !
144 ENDDO
145 !
146 IF (lhook) CALL dr_hook('WRITE_FILE_MAP',1,zhook_handle)
147 !
148 END SUBROUTINE write_file_map
subroutine close_file(HPROGRAM, KUNIT)
Definition: close_file.F90:6
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:6
subroutine write_file_map(PVAR, HVAR)
subroutine open_file(HPROGRAM, KUNIT, HFILE, HFORM, HACTION, HACCESS, KRECL)
Definition: open_file.F90:6