SURFEX v8.1
General documentation of Surfex
mode_split_grid_parameter.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 !##################
7 !##################
8 !
9 CONTAINS
10 !
11 ! #############################################################
12  SUBROUTINE split_grid_parameterx1(HPROGRAM,HGRID,HREC,KDIM,KSIZE,PFIELD,PFIELD_SPLIT,KIMAX_ll,KJMAX_ll,KHALO)
13 ! #############################################################
14 !
15 !!**** * - routine to split a real array on the splitted grid
16 !
17 USE yomhook ,ONLY : lhook, dr_hook
18 USE parkind1 ,ONLY : jprb
19 !
20 #ifdef SFX_OL
22 #endif
23 #ifdef SFX_MNH
24 USE modi_split_grid_parameterx1_mnh
25 #endif
26 !
27 IMPLICIT NONE
28 !
29 !* 0.1 Declarations of arguments
30 !
31  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! calling program
32  CHARACTER(LEN=10), INTENT(IN) :: HGRID ! grid type
33  CHARACTER(LEN=6), INTENT(IN) :: HREC ! name of the parameter
34 INTEGER, INTENT(IN) :: KDIM ! size of PFIELD
35 INTEGER, INTENT(IN) :: KSIZE ! size of PFIELD_SPLIT
36 REAL, DIMENSION(KDIM ), INTENT(IN) :: PFIELD ! real field for complete grid
37 REAL, DIMENSION(KSIZE), INTENT(OUT):: PFIELD_SPLIT! real field for splitted grid
38 !
39 INTEGER, OPTIONAL, INTENT(IN) :: KIMAX_ll !(global) dimension of the domain - X direction
40 INTEGER, OPTIONAL, INTENT(IN) :: KJMAX_ll !(global) dimension of the domain - Y direction
41 INTEGER, OPTIONAL, INTENT(IN) :: KHALO ! size of the Halo
42 !
43 !* 0.2 Declarations of local variables
44 !
45 REAL(KIND=JPRB) :: ZHOOK_HANDLE
46 !-------------------------------------------------------------------------------
47 IF (lhook) CALL dr_hook('MODE_SPLIT_GRID_PARAMETER:SPLIT_GRID_PARAMETERX1',0,zhook_handle)
48 !
49 IF (hprogram=='MESONH') THEN
50  IF (PRESENT(kimax_ll).AND.PRESENT(kjmax_ll).AND.PRESENT(khalo)) THEN
51 #ifdef MNH_PARALLEL
52  CALL split_grid_parameterx1_mnh(hgrid,hrec,kdim,ksize,kimax_ll,kjmax_ll,khalo,pfield,pfield_split)
53 #endif
54  ELSE
55 #ifndef MNH_PARALLEL
56 #ifdef SFX_MNH
57  CALL split_grid_parameterx1_mnh(hgrid,hrec,kdim,ksize,pfield,pfield_split)
58 #endif
59 #endif
60  ENDIF
61 ENDIF
62 !
63 !
64 IF (hprogram=='OFFLIN') THEN
65 #ifdef SFX_OL
66  CALL split_grid_parameterx1_ol(hprogram,hgrid,hrec,kdim,ksize,pfield,pfield_split)
67 #endif
68 ENDIF
69 !
70 IF (lhook) CALL dr_hook('MODE_SPLIT_GRID_PARAMETER:SPLIT_GRID_PARAMETERX1',1,zhook_handle)
71 !
72 !-------------------------------------------------------------------------------
73 END SUBROUTINE split_grid_parameterx1
74 !
75 !
76 ! #############################################################
77  SUBROUTINE split_grid_parametern0(HPROGRAM,HGRID,HREC,KFIELD,KFIELD_SPLIT,KHALO)
78 ! #############################################################
79 !
80 !!**** * - routine to define an integer related to splitted grid
81 !
82 USE yomhook ,ONLY : lhook, dr_hook
83 USE parkind1 ,ONLY : jprb
84 !
85 #ifdef SFX_OL
87 #endif
88 #ifdef SFX_MNH
89 USE modi_split_grid_parametern0_mnh
90 #endif
91 !
92 IMPLICIT NONE
93 !
94 !* 0.1 Declarations of arguments
95 !
96  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! calling program
97  CHARACTER(LEN=10), INTENT(IN) :: HGRID ! grid type
98  CHARACTER(LEN=6), INTENT(IN) :: HREC ! name of the parameter
99 INTEGER, INTENT(IN) :: KFIELD ! integer scalar for complete grid
100 INTEGER, INTENT(OUT):: KFIELD_SPLIT ! integer scalar for splitted grid
101 !
102 INTEGER, OPTIONAL, INTENT(IN) :: KHALO ! size of the Halo
103 
104 !
105 !* 0.2 Declarations of local variables
106 !
107 REAL(KIND=JPRB) :: ZHOOK_HANDLE
108 !-------------------------------------------------------------------------------
109 IF (lhook) CALL dr_hook('MODE_SPLIT_GRID_PARAMETER:SPLIT_GRID_PARAMETERN0',0,zhook_handle)
110 !
111 !-------------------------------------------------------------------------------
112 !
113 IF (hprogram=='MESONH') THEN
114  IF (PRESENT(khalo)) THEN
115 #ifdef MNH_PARALLEL
116  CALL split_grid_parametern0_mnh(hgrid,hrec,khalo,kfield,kfield_split)
117 #endif
118  ELSE
119 #ifndef MNH_PARALLEL
120 #ifdef SFX_MNH
121  CALL split_grid_parametern0_mnh(hgrid,hrec,kfield,kfield_split)
122 #endif
123 #endif
124  ENDIF
125 ENDIF
126 !
127 IF (hprogram=='OFFLIN') THEN
128 #ifdef SFX_OL
129  CALL split_grid_parametern0_ol(hprogram,hgrid,hrec,kfield,kfield_split)
130 #endif
131 ENDIF
132 !
133 IF (lhook) CALL dr_hook('MODE_SPLIT_GRID_PARAMETER:SPLIT_GRID_PARAMETERN0',1,zhook_handle)
134 !
135 !-------------------------------------------------------------------------------
136 END SUBROUTINE split_grid_parametern0
137 !
138 END MODULE mode_split_grid_parameter
integer, parameter jprb
Definition: parkind1.F90:32
subroutine split_grid_parameterx1_ol(HPROGRAM, HGRID, HREC, KDIM, KSIZE, PFIELD, PFIELD_SPLIT)
logical lhook
Definition: yomhook.F90:15
subroutine split_grid_parametern0(HPROGRAM, HGRID, HREC, KFIELD, KFIELD_SPLIT, KHALO)
subroutine split_grid_parametern0_ol(HPROGRAM, HGRID, HREC, KFIELD, KFIELD_SPLIT)
subroutine split_grid_parameterx1(HPROGRAM, HGRID, HREC, KDIM, KSIZE, PFIELD, PFIELD_SPLIT, KIMAX_ll, KJMAX_ll, KHALO)