SURFEX v8.1
General documentation of Surfex
extend_grid_on_halo_cartesian.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  SUBROUTINE extend_grid_on_halo_cartesian(HPROGRAM,KDIM_FULL,KSIZE_FULL,KGRID_PAR,PGRID_PAR)
7 ! ###########################################################
8 !!
9 !! PURPOSE
10 !! -------
11 !! This program extends a splitted PGD grid on the SURFEX halo
12 !!
13 !! METHOD
14 !! ------
15 !!
16 !! EXTERNAL
17 !! --------
18 !!
19 !!
20 !! IMPLICIT ARGUMENTS
21 !! ------------------
22 !!
23 !!
24 !! REFERENCE
25 !! ---------
26 !!
27 !! AUTHOR
28 !! ------
29 !!
30 !! M.Moge CNRS - LA
31 !!
32 !! MODIFICATION
33 !! ------------
34 !!
35 !! Original 01/03/2015
36 !----------------------------------------------------------------------------
37 !
38 !* 0. DECLARATION
39 ! -----------
40 !
43 !
44 !
45 USE yomhook ,ONLY : lhook, dr_hook
46 USE parkind1 ,ONLY : jprb
47 !
48 !
49 IMPLICIT NONE
50 !
51 !* 0.1 Declaration of dummy arguments
52 ! ------------------------------
53 !
54  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! host program
55 INTEGER, INTENT(IN) :: KDIM_FULL ! total number of points
56 INTEGER, INTENT(OUT) :: KSIZE_FULL! number of points on this processor
57 INTEGER, INTENT(INOUT) :: KGRID_PAR ! size of PGRID_PAR pointer
58 REAL, DIMENSION(:), POINTER :: PGRID_PAR ! parameters defining this grid
59 !
60 !
61 !* 0.2 Declaration of local variables
62 ! ------------------------------
63 !
64 REAL(KIND=JPRB) :: ZHOOK_HANDLE
65 !
66 !* original grid
67 REAL :: ZLAT0, ZLON0
68 INTEGER :: IIMAX, IJMAX
69 REAL, DIMENSION(KDIM_FULL) :: ZX, ZY, ZDX, ZDY
70 !
71 !* extended grid
72 INTEGER :: IIMAX_EXTENDED, IJMAX_EXTENDED
73 REAL, DIMENSION(:), ALLOCATABLE :: ZX_EXTENDED, ZY_EXTENDED, ZDX_EXTENDED, ZDY_EXTENDED
74 !
75 !------------------------------------------------------------------------------
76 IF (lhook) CALL dr_hook('EXTEND_GRID_CARTESIAN',0,zhook_handle)
77 !
78 !* 1. Gets Parameters of the Grid
79 !
80  CALL get_gridtype_cartesian(pgrid_par,zlat0,zlon0, &
81  iimax,ijmax, &
82  zx,zy,zdx,zdy )
83 !
84 !
85 !* 2. Splits the (pertinent) parameters of the grid
86 !
87  CALL extend_grid_parametern0(hprogram,'CARTESIAN ','IMAX ',iimax,iimax_extended)
88  CALL extend_grid_parametern0(hprogram,'CARTESIAN ','JMAX ',ijmax,ijmax_extended)
89 !
90 ksize_full = iimax_extended * ijmax_extended
91 !
92 ALLOCATE(zx_extended(ksize_full))
93 ALLOCATE(zy_extended(ksize_full))
94 ALLOCATE(zdx_extended(ksize_full))
95 ALLOCATE(zdy_extended(ksize_full))
96  CALL extend_grid_parameterx1(hprogram,'CARTESIAN ','XX ',SIZE(zx),ksize_full,iimax,ijmax,zx,zx_extended)
97  CALL extend_grid_parameterx1(hprogram,'CARTESIAN ','YY ',SIZE(zy),ksize_full,iimax,ijmax,zy,zy_extended)
98  CALL extend_grid_parameterx1(hprogram,'CARTESIAN ','DX ',SIZE(zdx),ksize_full,iimax,ijmax,zdx,zdx_extended)
99  CALL extend_grid_parameterx1(hprogram,'CARTESIAN ','DY ',SIZE(zdy),ksize_full,iimax,ijmax,zdy,zdy_extended)
100 !
101 !
102 !* 3. Stores Parameters of the Grid in grid pointer
103 !
104 NULLIFY(pgrid_par)
105  CALL put_gridtype_cartesian(pgrid_par,zlat0,zlon0, &
106  iimax_extended,ijmax_extended, &
107  zx_extended,zy_extended,zdx_extended,zdy_extended )
108  !
109 !
110 kgrid_par = SIZE(pgrid_par)
111 !
112 DEALLOCATE(zx_extended )
113 DEALLOCATE(zy_extended )
114 DEALLOCATE(zdx_extended)
115 DEALLOCATE(zdy_extended)
116 !
117 IF (lhook) CALL dr_hook('EXTEND_GRID_CARTESIAN',1,zhook_handle)
118 !_______________________________________________________________________________
119 !
120 END SUBROUTINE extend_grid_on_halo_cartesian
subroutine extend_grid_parametern0(HPROGRAM, HGRID, HREC, KFIELD, KFIELD_EXTEND)
subroutine put_gridtype_cartesian(PGRID_PAR, PLAT0, PLON0, KIMAX, KJMAX, PX, PY, PDX, PDY
subroutine extend_grid_parameterx1(HPROGRAM, HGRID, HREC, KDIM, KSIZE, KIMAX_ll, KJMAX_ll, PFIELD, PFIELD_EXTEND)
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
subroutine extend_grid_on_halo_cartesian(HPROGRAM, KDIM_FULL, KSIZE_
subroutine get_gridtype_cartesian(PGRID_PAR, PLAT0, PLON0,