Copies information from an ocean_grid_type into a dynamic (shared) horizontal grid type.
185 type(dyn_horgrid_type),
intent(inout) :: dg
187 integer :: isd, ied, jsd, jed
188 integer :: isdb, iedb, jsdb, jedb
189 integer :: ido, jdo, ido2, jdo2
190 integer :: igst, jgst
197 ido = og%idG_offset - dg%idG_offset
198 jdo = og%jdG_offset - dg%jdG_offset
200 isd = max(dg%isd, og%isd+ido) ; jsd = max(dg%jsd, og%jsd+jdo)
201 ied = min(dg%ied, og%ied+ido) ; jed = min(dg%jed, og%jed+jdo)
202 isdb = max(dg%IsdB, og%IsdB+ido) ; jsdb = max(dg%JsdB, og%JsdB+jdo)
203 iedb = min(dg%IedB, og%IedB+ido) ; jedb = min(dg%JedB, og%JedB+jdo)
206 if ((isd > dg%isc) .or. (ied < dg%ied) .or. (jsd > dg%jsc) .or. (jed > dg%jed)) &
207 call mom_error(fatal,
"copy_dyngrid_to_MOM_grid called with incompatible grids.")
209 do i=isd,ied ;
do j=jsd,jed
210 dg%geoLonT(i,j) = og%geoLonT(i+ido,j+jdo)
211 dg%geoLatT(i,j) = og%geoLatT(i+ido,j+jdo)
212 dg%dxT(i,j) = og%dxT(i+ido,j+jdo)
213 dg%dyT(i,j) = og%dyT(i+ido,j+jdo)
214 dg%areaT(i,j) = og%areaT(i+ido,j+jdo)
215 dg%bathyT(i,j) = og%bathyT(i+ido,j+jdo)
217 dg%dF_dx(i,j) = og%dF_dx(i+ido,j+jdo)
218 dg%dF_dy(i,j) = og%dF_dy(i+ido,j+jdo)
219 dg%sin_rot(i,j) = og%sin_rot(i+ido,j+jdo)
220 dg%cos_rot(i,j) = og%cos_rot(i+ido,j+jdo)
221 dg%mask2dT(i,j) = og%mask2dT(i+ido,j+jdo)
224 do i=isdb,iedb ;
do j=jsd,jed
225 dg%geoLonCu(i,j) = og%geoLonCu(i+ido,j+jdo)
226 dg%geoLatCu(i,j) = og%geoLatCu(i+ido,j+jdo)
227 dg%dxCu(i,j) = og%dxCu(i+ido,j+jdo)
228 dg%dyCu(i,j) = og%dyCu(i+ido,j+jdo)
229 dg%dy_Cu(i,j) = og%dy_Cu(i+ido,j+jdo)
230 dg%dy_Cu_obc(i,j) = og%dy_Cu_obc(i+ido,j+jdo)
232 dg%mask2dCu(i,j) = og%mask2dCu(i+ido,j+jdo)
233 dg%areaCu(i,j) = og%areaCu(i+ido,j+jdo)
234 dg%IareaCu(i,j) = og%IareaCu(i+ido,j+jdo)
237 do i=isd,ied ;
do j=jsdb,jedb
238 dg%geoLonCv(i,j) = og%geoLonCv(i+ido,j+jdo)
239 dg%geoLatCv(i,j) = og%geoLatCv(i+ido,j+jdo)
240 dg%dxCv(i,j) = og%dxCv(i+ido,j+jdo)
241 dg%dyCv(i,j) = og%dyCv(i+ido,j+jdo)
242 dg%dx_Cv(i,j) = og%dx_Cv(i+ido,j+jdo)
243 dg%dx_Cv_obc(i,j) = og%dx_Cv_obc(i+ido,j+jdo)
245 dg%mask2dCv(i,j) = og%mask2dCv(i+ido,j+jdo)
246 dg%areaCv(i,j) = og%areaCv(i+ido,j+jdo)
247 dg%IareaCv(i,j) = og%IareaCv(i+ido,j+jdo)
250 do i=isdb,iedb ;
do j=jsdb,jedb
251 dg%geoLonBu(i,j) = og%geoLonBu(i+ido,j+jdo)
252 dg%geoLatBu(i,j) = og%geoLatBu(i+ido,j+jdo)
253 dg%dxBu(i,j) = og%dxBu(i+ido,j+jdo)
254 dg%dyBu(i,j) = og%dyBu(i+ido,j+jdo)
255 dg%areaBu(i,j) = og%areaBu(i+ido,j+jdo)
256 dg%CoriolisBu(i,j) = og%CoriolisBu(i+ido,j+jdo)
257 dg%mask2dBu(i,j) = og%mask2dBu(i+ido,j+jdo)
260 dg%bathymetry_at_vel = og%bathymetry_at_vel
261 if (dg%bathymetry_at_vel)
then 262 do i=isdb,iedb ;
do j=jsd,jed
263 dg%Dblock_u(i,j) = og%Dblock_u(i+ido,j+jdo)
264 dg%Dopen_u(i,j) = og%Dopen_u(i+ido,j+jdo)
266 do i=isd,ied ;
do j=jsdb,jedb
267 dg%Dblock_v(i,j) = og%Dblock_v(i+ido,j+jdo)
268 dg%Dopen_v(i,j) = og%Dopen_v(i+ido,j+jdo)
272 dg%gridLonT(dg%isg:dg%ieg) = og%gridLonT(og%isg:og%ieg)
273 dg%gridLatT(dg%jsg:dg%jeg) = og%gridLatT(og%jsg:og%jeg)
279 ido2 = og%IegB-dg%IegB ; igst = max(dg%isg-1, og%IsgB-ido2)
280 jdo2 = og%JegB-dg%JegB ; jgst = max(dg%jsg-1, og%JsgB-jdo2)
281 do i=igst,dg%IegB ; dg%gridLonB(i) = og%gridLonB(i+ido2) ;
enddo 282 do j=jgst,dg%JegB ; dg%gridLatB(j) = og%gridLatB(j+jdo2) ;
enddo 285 dg%x_axis_units = og%x_axis_units ; dg%y_axis_units = og%y_axis_units
286 dg%areaT_global = og%areaT_global ; dg%IareaT_global = og%IareaT_global
287 dg%south_lat = og%south_lat ; dg%west_lon = og%west_lon
288 dg%len_lat = og%len_lat ; dg%len_lon = og%len_lon
289 dg%Rad_Earth = og%Rad_Earth ; dg%max_depth = og%max_depth
292 call pass_var(dg%areaT, dg%Domain)
293 call pass_var(dg%bathyT, dg%Domain)
294 call pass_var(dg%geoLonT, dg%Domain)
295 call pass_var(dg%geoLatT, dg%Domain)
296 call pass_vector(dg%dxT, dg%dyT, dg%Domain, to_all+scalar_pair, agrid)
297 call pass_vector(dg%dF_dx, dg%dF_dy, dg%Domain, to_all, agrid)
298 call pass_vector(dg%cos_rot, dg%sin_rot, dg%Domain, to_all, agrid)
299 call pass_var(dg%mask2dT, dg%Domain)
301 call pass_vector(dg%areaCu, dg%areaCv, dg%Domain, to_all+scalar_pair, cgrid_ne)
302 call pass_vector(dg%dyCu, dg%dxCv, dg%Domain, to_all+scalar_pair, cgrid_ne)
303 call pass_vector(dg%dxCu, dg%dyCv, dg%Domain, to_all+scalar_pair, cgrid_ne)
304 call pass_vector(dg%dy_Cu, dg%dx_Cv, dg%Domain, to_all+scalar_pair, cgrid_ne)
305 call pass_vector(dg%dy_Cu_obc, dg%dx_Cv_obc, dg%Domain, to_all+scalar_pair, cgrid_ne)
306 call pass_vector(dg%mask2dCu, dg%mask2dCv, dg%Domain, to_all+scalar_pair, cgrid_ne)
307 call pass_vector(dg%IareaCu, dg%IareaCv, dg%Domain, to_all+scalar_pair, cgrid_ne)
308 call pass_vector(dg%IareaCu, dg%IareaCv, dg%Domain, to_all+scalar_pair, cgrid_ne)
309 call pass_vector(dg%geoLatCu, dg%geoLatCv, dg%Domain, to_all+scalar_pair, cgrid_ne)
311 call pass_var(dg%areaBu, dg%Domain, position=corner)
312 call pass_var(dg%geoLonBu, dg%Domain, position=corner)
313 call pass_var(dg%geoLatBu, dg%Domain, position=corner)
314 call pass_vector(dg%dxBu, dg%dyBu, dg%Domain, to_all+scalar_pair, bgrid_ne)
315 call pass_var(dg%CoriolisBu, dg%Domain, position=corner)
316 call pass_var(dg%mask2dBu, dg%Domain, position=corner)
318 if (dg%bathymetry_at_vel)
then 319 call pass_vector(dg%Dblock_u, dg%Dblock_v, dg%Domain, to_all+scalar_pair, cgrid_ne)
320 call pass_vector(dg%Dopen_u, dg%Dopen_v, dg%Domain, to_all+scalar_pair, cgrid_ne)
323 call set_derived_dyn_horgrid(dg)
Ocean grid type. See mom_grid for details.