*IF DEF,C96_1A,OR,DEF,C96_1B GPB3F403.293
*IF DEF,MPP GPB3F403.294
C *****************************COPYRIGHT****************************** DECMPO1A.3
C (c) CROWN COPYRIGHT 1996, METEOROLOGICAL OFFICE, All Rights Reserved. DECMPO1A.4
C DECMPO1A.5
C Use, duplication or disclosure of this code is subject to the DECMPO1A.6
C restrictions as set forth in the contract. DECMPO1A.7
C DECMPO1A.8
C Meteorological Office DECMPO1A.9
C London Road DECMPO1A.10
C BRACKNELL DECMPO1A.11
C Berkshire UK DECMPO1A.12
C RG12 2SZ DECMPO1A.13
C DECMPO1A.14
C If no contract has been raised with this copy of the code, the use, DECMPO1A.15
C duplication or disclosure of it is strictly prohibited. Permission DECMPO1A.16
C to do so must first be obtained in writing from the Head of Numerical DECMPO1A.17
C Modelling at the above address. DECMPO1A.18
C ******************************COPYRIGHT****************************** DECMPO1A.19
!+ Parallel UM: Perform data decomposition for ocean model DECMPO1A.20
! DECMPO1A.21
! Subroutine Interface: DECMPO1A.22
SUBROUTINE DECOMPOSE_OCEAN(global_row_len,global_n_rows, 1,1DECMPO1A.23
& tot_levels, DECMPO1A.24
& nproc_EW, nproc_NS, DECMPO1A.25
& local_row_len,local_n_rows, GPB2F403.1
& l_ocyclic) GPB2F403.2
IMPLICIT NONE DECMPO1A.27
! DECMPO1A.28
! Desciption: DECMPO1A.29
! This routine currently performs a 1D North-South decomposition on the DECMPO1A.30
! ocean model. nproc_EW is currently ignored. DECMPO1A.31
! The decomposition strategy is much the same as the atmosphere's - DECMPO1A.32
! First try and divide the rows equally between processors, and then DECMPO1A.33
! distribute any left over rows to the processors, starting from the DECMPO1A.34
! top. DECMPO1A.35
! DECMPO1A.36
! Method: DECMPO1A.37
! The local data sizes are calculated and sotred in the COMMON block DECMPO1A.38
! DECOMPDB. The boundary conditions are set (cyclic in East/West DECMPO1A.39
! direction if *DEF,GLOBAL DECMPO1A.40
! DECMPO1A.41
! Current Code Owner : Paul Burton DECMPO1A.42
! DECMPO1A.43
! History: DECMPO1A.44
! Model Date Modification history from model version 4.2 DECMPO1A.45
! version DECMPO1A.46
! 4.2 21/8/96 New deck created for MPP ocean model. P.Burton DECMPO1A.47
! 4.3 17/02/97 Added initialisation of new ocean decompositon GPB2F403.3
! decomp_nowrap_ocean - which does not include GPB2F403.4
! the wrap around points on the ends of rows. GPB2F403.5
! This requires passing in the l_ocyclic variable GPB2F403.6
! to indicate if these points are present. GPB2F403.7
! P.Burton GPB2F403.8
! DECMPO1A.48
! Subroutine arguments: DECMPO1A.49
DECMPO1A.50
INTEGER DECMPO1A.51
DECMPO1A.52
& global_row_len ! IN : number of E-W points of entire model DECMPO1A.53
&, global_n_rows ! IN : number of N-S points of entire model DECMPO1A.54
&, tot_levels ! IN : total number of levels DECMPO1A.55
&, nproc_EW ! IN : number of processors to decompose E-W DECMPO1A.56
&, nproc_NS ! IN : number of processors to decompose N-S DECMPO1A.57
&, local_row_len ! OUT : local number of E-W points DECMPO1A.58
&, local_n_rows ! OUT : local number of N-S points DECMPO1A.59
! ! local_row_len and local_n_rows include DECMPO1A.60
! ! any halos DECMPO1A.61
GPB2F403.9
LOGICAL GPB2F403.10
GPB2F403.11
& l_ocyclic ! IN : true if extra wrap points are present GPB2F403.12
! ! at the start/ends of rows GPB2F403.13
DECMPO1A.62
! Parameters and Common blocks DECMPO1A.63
DECMPO1A.64
*CALL PARVARS
DECMPO1A.65
*CALL GCCOM
DECMPO1A.66
*CALL DECOMPTP
DECMPO1A.67
*CALL DECOMPDB
DECMPO1A.68
DECMPO1A.69
! Local variables DECMPO1A.70
INTEGER iproc,irest,jrest,info,in_ocn_decomp,idim GPB2F403.14
DECMPO1A.72
! ------------------------------------------------------------------ DECMPO1A.73
DECMPO1A.74
! Halo Sizes DECMPO1A.75
DECMPO1A.76
decomp_db_halosize(1,decomp_standard_ocean) = 0 DECMPO1A.77
decomp_db_halosize(2,decomp_standard_ocean) = 1 DECMPO1A.78
decomp_db_halosize(3,decomp_standard_ocean) = 0 DECMPO1A.79
DECMPO1A.80
! Size of global data DECMPO1A.81
DECMPO1A.82
decomp_db_glsize(1,decomp_standard_ocean) = global_row_len DECMPO1A.83
decomp_db_glsize(2,decomp_standard_ocean) = global_n_rows DECMPO1A.84
decomp_db_glsize(3,decomp_standard_ocean) = tot_levels DECMPO1A.85
DECMPO1A.86
! Make sure there's actually enough work for all the processors to do DECMPO1A.87
DECMPO1A.88
IF (nproc_NS .GT. global_n_rows) THEN DECMPO1A.89
IF (mype .EQ. 0) THEN DECMPO1A.90
WRITE(6,*) 'Warning : Ocean model has more processors than ', DECMPO1A.91
& 'rows. Reducing nproc_y to ',global_n_rows DECMPO1A.92
ENDIF DECMPO1A.93
nproc_NS=global_n_rows DECMPO1A.94
ENDIF DECMPO1A.95
DECMPO1A.96
decomp_db_nproc(decomp_standard_ocean)=nproc_NS DECMPO1A.97
decomp_db_first_comp_pe(decomp_standard_ocean) = 0 DECMPO1A.98
decomp_db_last_comp_pe(decomp_standard_ocean) = DECMPO1A.99
& decomp_db_nproc(decomp_standard_ocean)-1 DECMPO1A.100
DECMPO1A.101
! Set the size of the Logical Processor Grid (LPG) DECMPO1A.102
DECMPO1A.103
decomp_db_gridsize(1,decomp_standard_ocean) = nproc_EW ! =1 DECMPO1A.104
decomp_db_gridsize(2,decomp_standard_ocean) = nproc_NS DECMPO1A.105
decomp_db_gridsize(3,decomp_standard_ocean) = 1 DECMPO1A.106
DECMPO1A.107
! Calculate processor specific information. DECMPO1A.108
DECMPO1A.109
DO iproc=decomp_db_first_comp_pe(decomp_standard_ocean), DECMPO1A.110
& decomp_db_last_comp_pe(decomp_standard_ocean) DECMPO1A.111
! ! Loop over all processors in this decomposition DECMPO1A.112
DECMPO1A.113
! NB : Although the decomposition is currently only N-S, all DECMPO1A.114
! the code is included to allow an E-W decomposition too. DECMPO1A.115
! All that is required is to supply nproc_NS > 1. DECMPO1A.116
DECMPO1A.117
! Calculate the position in the LPG: DECMPO1A.118
decomp_db_g_gridpos(3,iproc,decomp_standard_ocean) = 0 DECMPO1A.119
decomp_db_g_gridpos(2,iproc,decomp_standard_ocean) = DECMPO1A.120
& iproc / decomp_db_gridsize(1,decomp_standard_ocean) DECMPO1A.121
decomp_db_g_gridpos(1,iproc,decomp_standard_ocean) = DECMPO1A.122
& iproc - decomp_db_g_gridpos(2,iproc,decomp_standard_ocean)* DECMPO1A.123
& decomp_db_gridsize(1,decomp_standard_ocean) DECMPO1A.124
DECMPO1A.125
! Calculate the local data sizes for processor iproc DECMPO1A.126
DECMPO1A.127
! East-West decomposition DECMPO1A.128
DECMPO1A.129
decomp_db_g_blsizep(1,iproc,decomp_standard_ocean) = DECMPO1A.130
& decomp_db_glsize(1,decomp_standard_ocean) / DECMPO1A.131
& decomp_db_gridsize(1,decomp_standard_ocean) DECMPO1A.132
irest = decomp_db_glsize(1,decomp_standard_ocean)- DECMPO1A.133
& decomp_db_g_blsizep(1,iproc,decomp_standard_ocean)* DECMPO1A.134
& decomp_db_gridsize(1,decomp_standard_ocean) DECMPO1A.135
decomp_db_g_datastart(1,iproc,decomp_standard_ocean) = DECMPO1A.136
& decomp_db_g_gridpos(1,iproc,decomp_standard_ocean)* DECMPO1A.137
& decomp_db_g_blsizep(1,iproc,decomp_standard_ocean) + 1 DECMPO1A.138
DECMPO1A.139
IF (decomp_db_g_gridpos(1,iproc,decomp_standard_ocean) .LT. DECMPO1A.140
& irest) THEN DECMPO1A.141
decomp_db_g_blsizep(1,iproc,decomp_standard_ocean) = DECMPO1A.142
& decomp_db_g_blsizep(1,iproc,decomp_standard_ocean)+1 DECMPO1A.143
decomp_db_g_datastart(1,iproc,decomp_standard_ocean) = DECMPO1A.144
& decomp_db_g_datastart(1,iproc,decomp_standard_ocean) + DECMPO1A.145
& decomp_db_g_gridpos(1,iproc,decomp_standard_ocean) DECMPO1A.146
ELSE DECMPO1A.147
decomp_db_g_datastart(1,iproc,decomp_standard_ocean) = DECMPO1A.148
& decomp_db_g_datastart(1,iproc,decomp_standard_ocean) + DECMPO1A.149
& irest DECMPO1A.150
ENDIF DECMPO1A.151
DECMPO1A.152
decomp_db_g_lasize(1,iproc,decomp_standard_ocean)= DECMPO1A.153
& decomp_db_g_blsizep(1,iproc,decomp_standard_ocean) + DECMPO1A.154
& 2*decomp_db_halosize(1,decomp_standard_ocean) DECMPO1A.155
DECMPO1A.156
! North-South decomposition DECMPO1A.157
DECMPO1A.158
decomp_db_g_blsizep(2,iproc,decomp_standard_ocean) = DECMPO1A.159
& decomp_db_glsize(2,decomp_standard_ocean) / DECMPO1A.160
& decomp_db_gridsize(2,decomp_standard_ocean) DECMPO1A.161
jrest = decomp_db_glsize(2,decomp_standard_ocean)- DECMPO1A.162
& decomp_db_g_blsizep(2,iproc,decomp_standard_ocean)* DECMPO1A.163
& decomp_db_gridsize(2,decomp_standard_ocean) DECMPO1A.164
decomp_db_g_datastart(2,iproc,decomp_standard_ocean) = DECMPO1A.165
& decomp_db_g_gridpos(2,iproc,decomp_standard_ocean)* DECMPO1A.166
& decomp_db_g_blsizep(2,iproc,decomp_standard_ocean) + 1 DECMPO1A.167
DECMPO1A.168
IF (decomp_db_g_gridpos(2,iproc,decomp_standard_ocean) .LT. DECMPO1A.169
& jrest) THEN DECMPO1A.170
decomp_db_g_blsizep(2,iproc,decomp_standard_ocean) = DECMPO1A.171
& decomp_db_g_blsizep(2,iproc,decomp_standard_ocean)+1 DECMPO1A.172
decomp_db_g_datastart(2,iproc,decomp_standard_ocean) = DECMPO1A.173
& decomp_db_g_datastart(2,iproc,decomp_standard_ocean) + DECMPO1A.174
& decomp_db_g_gridpos(2,iproc,decomp_standard_ocean) DECMPO1A.175
ELSE DECMPO1A.176
decomp_db_g_datastart(2,iproc,decomp_standard_ocean) = DECMPO1A.177
& decomp_db_g_datastart(2,iproc,decomp_standard_ocean) + DECMPO1A.178
& jrest DECMPO1A.179
ENDIF DECMPO1A.180
DECMPO1A.181
decomp_db_g_lasize(2,iproc,decomp_standard_ocean)= DECMPO1A.182
& decomp_db_g_blsizep(2,iproc,decomp_standard_ocean) + DECMPO1A.183
& 2*decomp_db_halosize(2,decomp_standard_ocean) DECMPO1A.184
DECMPO1A.185
! No decomposition in the vertical DECMPO1A.186
DECMPO1A.187
decomp_db_g_datastart(3,iproc,decomp_standard_ocean) = 1 DECMPO1A.188
decomp_db_g_blsizep(3,iproc,decomp_standard_ocean) = DECMPO1A.189
& tot_levels DECMPO1A.190
decomp_db_g_lasize(3,iproc,decomp_standard_ocean) = DECMPO1A.191
& tot_levels DECMPO1A.192
DECMPO1A.193
! One less U row at bottom DECMPO1A.194
DECMPO1A.195
decomp_db_g_blsizeu(1,iproc,decomp_standard_ocean) = DECMPO1A.196
& decomp_db_g_blsizep(1,iproc,decomp_standard_ocean) DECMPO1A.197
IF ( decomp_db_g_gridpos(2,iproc,decomp_standard_ocean) DECMPO1A.198
& .EQ. (decomp_db_gridsize(2,decomp_standard_ocean)-1)) DECMPO1A.199
& THEN DECMPO1A.200
decomp_db_g_blsizeu(2,iproc,decomp_standard_ocean) = DECMPO1A.201
& decomp_db_g_blsizep(2,iproc,decomp_standard_ocean) - 1 DECMPO1A.202
ELSE DECMPO1A.203
decomp_db_g_blsizeu(2,iproc,decomp_standard_ocean) = DECMPO1A.204
& decomp_db_g_blsizep(2,iproc,decomp_standard_ocean) DECMPO1A.205
ENDIF DECMPO1A.206
decomp_db_g_blsizeu(3,iproc,decomp_standard_ocean) = DECMPO1A.207
& decomp_db_g_blsizep(3,iproc,decomp_standard_ocean) DECMPO1A.208
DECMPO1A.209
ENDDO ! loop over processors DECMPO1A.210
DECMPO1A.211
! Set up the boundary types DECMPO1A.212
DECMPO1A.213
*IF DEF,GLOBAL DECMPO1A.214
decomp_db_bound(1,decomp_standard_ocean) = BC_CYCLIC DECMPO1A.215
! ! Cyclic East-West boundaries DECMPO1A.216
*ELSE DECMPO1A.217
decomp_db_bound(1,decomp_standard_ocean) = BC_STATIC DECMPO1A.218
! ! No East-West wrap around DECMPO1A.219
*ENDIF DECMPO1A.220
decomp_db_bound(2,decomp_standard_ocean) = BC_STATIC DECMPO1A.221
! ! No North-South wrap around DECMPO1A.222
decomp_db_bound(3,decomp_standard_ocean) = BC_STATIC DECMPO1A.223
! ! No vertical wrap around DECMPO1A.224
DECMPO1A.225
! And set up the neighbour array DECMPO1A.226
DECMPO1A.227
CALL SET_NEIGHBOUR
( DECMPO1A.228
& decomp_standard_ocean) DECMPO1A.229
DECMPO1A.230
! Set up the GCOM groups DECMPO1A.231
DECMPO1A.232
! 1) Group of all processors on my row DECMPO1A.233
DECMPO1A.234
IF ( decomp_db_gridsize(2,decomp_standard_ocean) .EQ. 1) DECMPO1A.235
& THEN DECMPO1A.236
decomp_db_gc_proc_row_group(decomp_standard_ocean)=GCG_ALL DECMPO1A.237
ELSE DECMPO1A.238
CALL GCG_SPLIT(
mype,nproc_max, DECMPO1A.239
& decomp_db_g_gridpos(2,mype,decomp_standard_ocean), DECMPO1A.240
& info, DECMPO1A.241
& decomp_db_gc_proc_row_group(decomp_standard_ocean)) DECMPO1A.242
ENDIF DECMPO1A.243
DECMPO1A.244
! 2) Group of all processors on my column DECMPO1A.245
DECMPO1A.246
IF ( decomp_db_gridsize(1,decomp_standard_ocean) .EQ. 1) DECMPO1A.247
& THEN DECMPO1A.248
decomp_db_gc_proc_col_group(decomp_standard_ocean)=GCG_ALL DECMPO1A.249
ELSE DECMPO1A.250
CALL GCG_SPLIT(
mype,nproc_max, DECMPO1A.251
& decomp_db_g_gridpos(1,mype,decomp_standard_ocean), DECMPO1A.252
& info, DECMPO1A.253
& decomp_db_gc_proc_col_group(decomp_standard_ocean)) DECMPO1A.254
ENDIF DECMPO1A.255
DECMPO1A.256
! 3) Group of all processors in the atmosphere model DECMPO1A.257
IF (decomp_db_nproc(decomp_standard_ocean) .EQ. nproc_max) DECMPO1A.258
& THEN DECMPO1A.259
decomp_db_gc_all_proc_group(decomp_standard_ocean)=GCG_ALL DECMPO1A.260
ELSE DECMPO1A.261
IF ((mype .GE. decomp_db_first_comp_pe(decomp_standard_ocean)) DECMPO1A.262
& .AND. DECMPO1A.263
& (mype .LE. decomp_db_last_comp_pe(decomp_standard_ocean) )) DECMPO1A.264
& THEN DECMPO1A.265
in_ocn_decomp=1 DECMPO1A.266
ELSE DECMPO1A.267
in_ocn_decomp=0 DECMPO1A.268
ENDIF DECMPO1A.269
DECMPO1A.270
CALL GCG_SPLIT(
mype,nproc_max,in_ocn_decomp,info, DECMPO1A.271
& decomp_db_gc_all_proc_group(decomp_standard_ocean)) DECMPO1A.272
ENDIF DECMPO1A.273
DECMPO1A.274
! Set logical indicating this decomposition has been initialised DECMPO1A.275
! and is now ready for use DECMPO1A.276
DECMPO1A.277
decomp_db_set(decomp_standard_ocean)=.TRUE. DECMPO1A.278
DECMPO1A.279
! Initialise decomp_nowrap_ocean which doesn't contain extra wrap GPB2F403.15
! points at start and end of each row GPB2F403.16
! Mostly it is a straight copy of the original ocean decomposition GPB2F403.17
GPB2F403.18
DO idim=1,Ndim_max GPB2F403.19
decomp_db_bound(idim,decomp_nowrap_ocean)= GPB2F403.20
& decomp_db_bound(idim,decomp_standard_ocean) GPB2F403.21
decomp_db_glsize(idim,decomp_nowrap_ocean)= GPB2F403.22
& decomp_db_glsize(idim,decomp_standard_ocean) GPB2F403.23
decomp_db_gridsize(idim,decomp_nowrap_ocean)= GPB2F403.24
& decomp_db_gridsize(idim,decomp_standard_ocean) GPB2F403.25
decomp_db_halosize(idim,decomp_nowrap_ocean)= GPB2F403.26
& decomp_db_halosize(idim,decomp_standard_ocean) GPB2F403.27
ENDDO GPB2F403.28
GPB2F403.29
DO iproc=decomp_db_first_comp_pe(decomp_standard_ocean), GPB2F403.30
& decomp_db_last_comp_pe(decomp_standard_ocean) GPB2F403.31
DO idim=1,Ndim_max GPB2F403.32
decomp_db_g_lasize(idim,iproc,decomp_nowrap_ocean)= GPB2F403.33
& decomp_db_g_lasize(idim,iproc,decomp_standard_ocean) GPB2F403.34
decomp_db_g_blsizep(idim,iproc,decomp_nowrap_ocean)= GPB2F403.35
& decomp_db_g_blsizep(idim,iproc,decomp_standard_ocean) GPB2F403.36
decomp_db_g_blsizeu(idim,iproc,decomp_nowrap_ocean)= GPB2F403.37
& decomp_db_g_blsizeu(idim,iproc,decomp_standard_ocean) GPB2F403.38
decomp_db_g_datastart(idim,iproc,decomp_nowrap_ocean)= GPB2F403.39
& decomp_db_g_datastart(idim,iproc,decomp_standard_ocean) GPB2F403.40
decomp_db_g_gridpos(idim,iproc,decomp_nowrap_ocean)= GPB2F403.41
& decomp_db_g_gridpos(idim,iproc,decomp_standard_ocean) GPB2F403.42
ENDDO GPB2F403.43
ENDDO GPB2F403.44
GPB2F403.45
DO idim=1,4 GPB2F403.46
decomp_db_neighbour(idim,decomp_nowrap_ocean)= GPB2F403.47
& decomp_db_neighbour(idim,decomp_standard_ocean) GPB2F403.48
ENDDO GPB2F403.49
GPB2F403.50
decomp_db_first_comp_pe(decomp_nowrap_ocean)= GPB2F403.51
& decomp_db_first_comp_pe(decomp_standard_ocean) GPB2F403.52
decomp_db_last_comp_pe(decomp_nowrap_ocean)= GPB2F403.53
& decomp_db_last_comp_pe(decomp_standard_ocean) GPB2F403.54
decomp_db_nproc(decomp_nowrap_ocean)= GPB2F403.55
& decomp_db_nproc(decomp_standard_ocean) GPB2F403.56
decomp_db_gc_proc_row_group(decomp_nowrap_ocean)= GPB2F403.57
& decomp_db_gc_proc_row_group(decomp_standard_ocean) GPB2F403.58
decomp_db_gc_proc_col_group(decomp_nowrap_ocean)= GPB2F403.59
& decomp_db_gc_proc_col_group(decomp_standard_ocean) GPB2F403.60
decomp_db_gc_all_proc_group(decomp_nowrap_ocean)= GPB2F403.61
& decomp_db_gc_all_proc_group(decomp_standard_ocean) GPB2F403.62
GPB2F403.63
IF (l_ocyclic) THEN GPB2F403.64
! Make modifications to the decompositions to remove the point at GPB2F403.65
! the beginning and end of each row GPB2F403.66
decomp_db_glsize(1,decomp_nowrap_ocean)= GPB2F403.67
& decomp_db_glsize(1,decomp_nowrap_ocean)-2 GPB2F403.68
GPB2F403.69
DO iproc=decomp_db_first_comp_pe(decomp_standard_ocean), GPB2F403.70
& decomp_db_last_comp_pe(decomp_standard_ocean) GPB2F403.71
GPB2F403.72
IF (decomp_db_g_gridpos(1,iproc,decomp_nowrap_ocean) GPB2F403.73
& .EQ. 0) THEN ! this processor at left of LPG GPB2F403.74
GPB2F403.75
decomp_db_g_lasize(1,iproc,decomp_nowrap_ocean)= GPB2F403.76
& decomp_db_g_lasize(1,iproc,decomp_nowrap_ocean)-1 GPB2F403.77
decomp_db_g_blsizep(1,iproc,decomp_nowrap_ocean)= GPB2F403.78
& decomp_db_g_blsizep(1,iproc,decomp_nowrap_ocean)-1 GPB2F403.79
decomp_db_g_blsizeu(1,iproc,decomp_nowrap_ocean)= GPB2F403.80
& decomp_db_g_blsizeu(1,iproc,decomp_nowrap_ocean)-1 GPB2F403.81
GPB2F403.82
ELSE ! processor not at left of LPG GPB2F403.83
GPB2F403.84
decomp_db_g_datastart(1,iproc,decomp_nowrap_ocean)= GPB2F403.85
& decomp_db_g_datastart(1,iproc,decomp_nowrap_ocean)-1 GPB2F403.86
GPB2F403.87
ENDIF GPB2F403.88
GPB2F403.89
IF (decomp_db_g_gridpos(1,iproc,decomp_nowrap_ocean) GPB2F403.90
& .EQ. (decomp_db_gridsize(1,decomp_nowrap_ocean)-1) ) GPB2F403.91
& THEN ! this processor at right of LPG GPB2F403.92
GPB2F403.93
decomp_db_g_lasize(1,iproc,decomp_nowrap_ocean)= GPB2F403.94
& decomp_db_g_lasize(1,iproc,decomp_nowrap_ocean)-1 GPB2F403.95
decomp_db_g_blsizep(1,iproc,decomp_nowrap_ocean)= GPB2F403.96
& decomp_db_g_blsizep(1,iproc,decomp_nowrap_ocean)-1 GPB2F403.97
decomp_db_g_blsizeu(1,iproc,decomp_nowrap_ocean)= GPB2F403.98
& decomp_db_g_blsizeu(1,iproc,decomp_nowrap_ocean)-1 GPB2F403.99
GPB2F403.100
ENDIF GPB2F403.101
GPB2F403.102
ENDDO GPB2F403.103
GPB2F403.104
ENDIF GPB2F403.105
GPB2F403.106
! Finally, indicate this decomposition has been initialised GPB2F403.107
GPB2F403.108
decomp_db_set(decomp_nowrap_ocean)=.TRUE. GPB2F403.109
! And return the new horizontal dimensions DECMPO1A.280
DECMPO1A.281
local_row_len=decomp_db_g_lasize(1,mype,decomp_standard_ocean) DECMPO1A.282
local_n_rows=decomp_db_g_lasize(2,mype,decomp_standard_ocean) DECMPO1A.283
DECMPO1A.284
RETURN DECMPO1A.285
END DECMPO1A.286
DECMPO1A.287
*ENDIF DECMPO1A.288
*ENDIF GPB3F403.295