Merge remote-tracking branch 'origin/release-v4.5.2'
[WRF.git] / var / da / da_par_util / da_copy_dims.inc
blob1693f0b3b187ecd5ab5b87a64688c881d3e11370
1 subroutine da_copy_dims(grid)
3    !---------------------------------------------------------------------------
4    ! Purpose: Copy dimensioning information from grid structure.
5    !---------------------------------------------------------------------------
7    implicit none
9    type(domain), intent(inout)         :: grid
11    if (trace_use_dull) call da_trace_entry("da_copy_dims")
13    ! De-reference dimension information stored in the grid data structure.
15    ids = grid%sd31 
16    ide = grid%ed31 - 1
17    jds = grid%sd32 
18    jde = grid%ed32 - 1
19    kds = grid%sd33 
20    kde = grid%ed33 - 1
22    ims = grid%sm31 
23    ime = grid%em31 
24    jms = grid%sm32 
25    jme = grid%em32 
26    kms = grid%sm33 
27    kme = grid%em33 
29    ips = grid%sp31 
30    ipe = grid%ep31 
31    jps = grid%sp32 
32    jpe = grid%ep32 
33    kps = grid%sp33 
34    kpe = grid%ep33 
36    ! Indices for yz decomposition
38    grid%xp%idsx = grid%sd31
39    grid%xp%idex = grid%ed31 - 1
40    grid%xp%jdsx = grid%sd32
41    grid%xp%jdex = grid%ed32 - 1
42    grid%xp%kdsx = grid%sd33
43    grid%xp%kdex = grid%ed33 - 1
45    grid%xp%imsx = grid%sm31x
46    grid%xp%imex = grid%em31x
47    grid%xp%jmsx = grid%sm32x
48    grid%xp%jmex = grid%em32x
49    grid%xp%kmsx = grid%sm33x
50    grid%xp%kmex = grid%em33x
52    grid%xp%itsx = grid%sp31x
53    grid%xp%itex = grid%ep31x
54    grid%xp%jtsx = grid%sp32x
55    grid%xp%jtex = grid%ep32x
56    grid%xp%ktsx = grid%sp33x
57    grid%xp%ktex = grid%ep33x
59    grid%xp%ipsx = grid%sp31x
60    grid%xp%ipex = grid%ep31x
61    grid%xp%jpsx = grid%sp32x
62    grid%xp%jpex = grid%ep32x
63    grid%xp%kpsx = grid%sp33x
64    grid%xp%kpex = grid%ep33x
66    ! Indices for xz decomposition
68    grid%xp%idsy = grid%sd31
69    grid%xp%idey = grid%ed31 - 1
70    grid%xp%jdsy = grid%sd32
71    grid%xp%jdey = grid%ed32 - 1
72    grid%xp%kdsy = grid%sd33
73    grid%xp%kdey = grid%ed33 - 1
75    grid%xp%imsy = grid%sm31y
76    grid%xp%imey = grid%em31y
77    grid%xp%jmsy = grid%sm32y
78    grid%xp%jmey = grid%em32y
79    grid%xp%kmsy = grid%sm33y
80    grid%xp%kmey = grid%em33y
82    grid%xp%itsy = grid%sp31y
83    grid%xp%itey = grid%ep31y
84    grid%xp%jtsy = grid%sp32y
85    grid%xp%jtey = grid%ep32y
86    grid%xp%ktsy = grid%sp33y
87    grid%xp%ktey = grid%ep33y
89    grid%xp%ipsy = grid%sp31y
90    grid%xp%ipey = grid%ep31y
91    grid%xp%jpsy = grid%sp32y
92    grid%xp%jpey = grid%ep32y
93    grid%xp%kpsy = grid%sp33y
94    grid%xp%kpey = grid%ep33y
96    if (ipe > ide) ipe = ide
97    if (jpe > jde) jpe = jde
98    if (kpe > kde) kpe = kde
100    ! Indices for yz decomposition
102    if (grid%xp%itex > ide) grid%xp%itex = ide
103    if (grid%xp%jtex > jde) grid%xp%jtex = jde
104    if (grid%xp%ktex > kde) grid%xp%ktex = kde
106    if (grid%xp%ipex > ide) grid%xp%ipex = ide
107    if (grid%xp%jpex > jde) grid%xp%jpex = jde
108    if (grid%xp%kpex > kde) grid%xp%kpex = kde
110    ! Indices for xz decomposition
112    if (grid%xp%itey > ide) grid%xp%itey = ide
113    if (grid%xp%jtey > jde) grid%xp%jtey = jde
114    if (grid%xp%ktey > kde) grid%xp%ktey = kde
116    if (grid%xp%ipey > ide) grid%xp%ipey = ide
117    if (grid%xp%jpey > jde) grid%xp%jpey = jde
118    if (grid%xp%kpey > kde) grid%xp%kpey = kde
120    ! Copy grid%xpose dimensions from grid structure to grid%xp structure.
122    ! Indices for xy decomposition
124    grid%xp%ids = ids
125    grid%xp%ide = ide
126    grid%xp%jds = jds
127    grid%xp%jde = jde
128    grid%xp%kds = kds
129    grid%xp%kde = kde
131    grid%xp%ims = ims
132    grid%xp%ime = ime
133    grid%xp%jms = jms
134    grid%xp%jme = jme
135    grid%xp%kms = kms
136    grid%xp%kme = kme
138    grid%xp%ips = ips
139    grid%xp%ipe = ipe
140    grid%xp%jps = jps
141    grid%xp%jpe = jpe
142    grid%xp%kps = kps
143    grid%xp%kpe = kpe
145    if (print_detail_parallel) then
146       write(unit=stdout, fmt='(2(a, i4, 5x))') &
147            'grid%xp%ids =', grid%xp%ids , 'grid%xp%ide =', grid%xp%ide , &
148            'grid%xp%jds =', grid%xp%jds , 'grid%xp%jde =', grid%xp%jde , &
149            'grid%xp%kds =', grid%xp%kds , 'grid%xp%kde =', grid%xp%kde
150       write(unit=stdout, fmt='(//)')
152       write(unit=stdout, fmt='(2(a, i4, 5x))') &
153            'grid%xp%ims =', grid%xp%ims , 'grid%xp%ime =', grid%xp%ime , &
154            'grid%xp%jms =', grid%xp%jms , 'grid%xp%jme =', grid%xp%jme , &
155            'grid%xp%kms =', grid%xp%kms , 'grid%xp%kme =', grid%xp%kme
156       write(unit=stdout, fmt='(//)')
158       write(unit=stdout, fmt='(2(a, i4, 5x))') &
159            'grid%xp%ips =', grid%xp%ips , 'grid%xp%ipe =', grid%xp%ipe , &
160            'grid%xp%jps =', grid%xp%jps , 'grid%xp%jpe =', grid%xp%jpe , &
161            'grid%xp%kps =', grid%xp%kps , 'grid%xp%kpe =', grid%xp%kpe
162       write(unit=stdout, fmt='(//)')
164       write(unit=stdout, fmt='(2(a, i4, 5x))') &
165            'grid%xp%imsx =', grid%xp%imsx, 'grid%xp%imex=', grid%xp%imex, &
166            'grid%xp%jmsx =', grid%xp%jmsx, 'grid%xp%jmex=', grid%xp%jmex, &
167            'grid%xp%kmsx =', grid%xp%kmsx, 'grid%xp%kmex=', grid%xp%kmex
168       write(unit=stdout, fmt='(//)')
170       write(unit=stdout, fmt='(2(a, i4, 5x))') &
171            'grid%xp%ipsx =', grid%xp%ipsx, 'grid%xp%ipex=', grid%xp%ipex, &
172            'grid%xp%jpsx =', grid%xp%jpsx, 'grid%xp%jpex=', grid%xp%jpex, &
173            'grid%xp%kpsx =', grid%xp%kpsx, 'grid%xp%kpex=', grid%xp%kpex
174       write(unit=stdout, fmt='(//)')
176       write(unit=stdout, fmt='(2(a, i4, 5x))') &
177            'grid%xp%imsy =', grid%xp%imsy, 'grid%xp%imey=', grid%xp%imey, &
178            'grid%xp%jmsy =', grid%xp%jmsy, 'grid%xp%jmey=', grid%xp%jmey, &
179            'grid%xp%kmsy =', grid%xp%kmsy, 'grid%xp%kmey=', grid%xp%kmey
180       write(unit=stdout, fmt='(//)')
182       write(unit=stdout, fmt='(2(a, i4, 5x))') &
183            'grid%xp%ipsy =', grid%xp%ipsy, 'grid%xp%ipey=', grid%xp%ipey, &
184            'grid%xp%jpsy =', grid%xp%jpsy, 'grid%xp%jpey=', grid%xp%jpey, &
185            'grid%xp%kpsy =', grid%xp%kpsy, 'grid%xp%kpey=', grid%xp%kpey
186    end if
188    if (trace_use_dull) call da_trace_exit("da_copy_dims")
190 end subroutine da_copy_dims