SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
read_file_isbamap.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 read_file_isbamap (UG, &
8  kunit,pvar,ki)
9 ! ##########################
10 !
11 !!
12 !! PURPOSE
13 !! -------
14 !
15 !
16 !!** METHOD
17 !! ------
18 !
19 !! EXTERNAL
20 !! --------
21 !!
22 !! none
23 !!
24 !! IMPLICIT ARGUMENTS
25 !! ------------------
26 !!
27 !! REFERENCE
28 !! ---------
29 !!
30 !! AUTHOR
31 !! ------
32 !!
33 !! K. Chancibault * Meteo-France *
34 !!
35 !! MODIFICATIONS
36 !! -------------
37 !!
38 !! Original 25/01/2005
39 !! 03/2014 (E. Artinian) manages the option CGRID='IGN'
40 !! 07/2015 (E. Artinian) get the real ZDXI and ZDYI values
41 !-------------------------------------------------------------------------------
42 !
43 !* 0. DECLARATIONS
44 ! ------------
45 !
46 !
47 !
49 !
50 USE modd_topodyn
51 USE modd_surf_par, ONLY : xundef
52 !
56 !!
57 USE modi_abor1_sfx
58 !
59 USE yomhook ,ONLY : lhook, dr_hook
60 USE parkind1 ,ONLY : jprb
61 !
62 IMPLICIT NONE
63 !
64 !* 0.1 declarations of arguments
65 !
66 !
67 TYPE(surf_atm_grid_t), INTENT(INOUT) :: ug
68 !
69 INTEGER, INTENT(IN) :: kunit ! file unit
70 REAL, DIMENSION(:), INTENT(OUT) :: pvar ! variable to write in the file
71 INTEGER, INTENT(IN) :: ki ! Grid dimensions
72 !
73 !
74 !* 0.2 declarations of local variables
75 INTEGER :: jj,ji,il
76 INTEGER :: ini,ilambert
77 INTEGER :: jindex ! reference number of the pixel
78 REAL :: zout
79 REAL :: zmax,zmin
80 REAL, DIMENSION(KI) :: zxi, zyi ! natural coordinates of ISBA grid (conformal projection)
81 REAL, DIMENSION(KI) :: zxn, zyn ! isba nodes coordinates in the Lambert II coordinates - Eram rajout
82 REAL, DIMENSION(KI) :: zdxi, zdyi ! Isba grid resolution in the conformal projection
83 INTEGER :: iimax,ijmax
84 REAL :: zlonmin,zlonmax,zlatmin,zlatmax
85 REAL(KIND=JPRB) :: zhook_handle
86 !-------------------------------------------------------------------------------
87 IF (lhook) CALL dr_hook('READ_FILE_ISBAMAP',0,zhook_handle)
88 !
89 !* 0. Initialization:
90 ! ---------------
91 !
92 IF(ug%CGRID.EQ.'CONF PROJ') THEN
93  CALL get_gridtype_conf_proj(ug%XGRID_PAR,px=zxi,py=zyi,kimax=iimax,kjmax=ijmax,pdx=zdxi)
94 ELSE IF(ug%CGRID.EQ.'LONLAT REG') THEN
95  CALL get_gridtype_lonlat_reg(ug%XGRID_PAR,plonmin=zlonmin,plonmax=zlonmax, &
96  platmin=zlatmin,platmax=zlatmax,klon=iimax,klat=ijmax, &
97  kl=il,plon=zxi,plat=zyi)
98  !
99  zdxi(:)=(zlonmax-zlonmin)/(iimax-1)
100  zdyi(:)=(zlatmax-zlatmin)/(ijmax-1)
101 ELSE IF (ug%CGRID=='IGN') THEN
102  CALL get_gridtype_ign(ug%XGRID_PAR,klambert=ilambert,kl=ini,px=zxn,py=zyn,pdx=zdxi,pdy=zdyi)
103  ini=ki
104 ELSE
105  CALL abor1_sfx("READ_FILE_ISBAMAP: TYPE DE GRILLE NON GERE PAR LE CODE")
106 ENDIF
107 !
108 zout = xundef
109 !
110 DO jj=1,5
111  READ(kunit,*)
112 ENDDO
113 !
114 IF(ug%CGRID.EQ.'IGN') THEN
115  !
116  READ(kunit,*) zxn(1)
117  READ(kunit,*) zyn(1)
118  READ(kunit,*) ini
119  READ(kunit,*) zout
120  READ(kunit,*) zdxi(1)
121  READ(kunit,*) zmin
122  READ(kunit,*) zmax
123  !
124  DO jj=1,ini
125  READ(kunit,*) pvar(jj)
126  ENDDO
127 ELSE
128  READ(kunit,*) zxi(1)
129  READ(kunit,*) zyi(1)
130  READ(kunit,*) iimax
131  READ(kunit,*) ijmax
132  READ(kunit,*) zout
133  READ(kunit,*) zdxi(1)
134  READ(kunit,*) zmin
135  READ(kunit,*) zmax
136 !
137  DO jj=1,ijmax
138  DO ji=1,iimax
139  jindex=(jj - 1) * iimax + ji
140  READ(kunit,*) pvar(jindex)
141  ENDDO
142  ENDDO
143 ENDIF
144 !
145 IF (lhook) CALL dr_hook('READ_FILE_ISBAMAP',1,zhook_handle)
146 !
147 END SUBROUTINE read_file_isbamap
subroutine read_file_isbamap(UG, KUNIT, PVAR, KI)
subroutine get_gridtype_ign(PGRID_PAR, KLAMBERT, KL, PX, PY, PDX, PDY, KDIMX, KDIMY, PXALL, PYALL)
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6
subroutine get_gridtype_conf_proj(PGRID_PAR, PLAT0, PLON0, PRPK, PBETA, PLATOR, PLONOR, KIMAX, KJMAX, PX, PY, PDX, PDY, KL)
subroutine get_gridtype_lonlat_reg(PGRID_PAR, PLONMIN, PLONMAX, PLATMIN, PLATMAX, KLON, KLAT, KL, PLON, PLAT)