da_par_util.f90

References to this file elsewhere.
1 module da_par_util
2 
3    !---------------------------------------------------------------------------
4    ! Purpose: Routines for local-to-global and global-to-local grid operations.
5    !
6    ! METHOD:  RSL/MPI.
7    !---------------------------------------------------------------------------
8 
9    use module_domain, only : domain, xpose_type
10 
11 #ifdef DM_PARALLEL
12    use module_dm, only : local_communicator_x, &
13       local_communicator_y, ntasks_x, ntasks_y, data_order_xyz
14    use da_par_util1, only : true_mpi_real, true_mpi_complex
15    use mpi, only : mpi_2double_precision, mpi_status_size, &
16       mpi_integer, mpi_maxloc, mpi_status_size, &
17       mpi_minloc, mpi_sum
18 #else
19    use da_reporting, only : message
20 #endif
21 
22    use da_define_structures, only : be_subtype, &
23       x_type, vp_type, residual_synop_type, residual_sound_type, iv_type, &
24       y_type, count_obs_number_type, maxmin_field_type
25 
26    use da_control, only : trace_use,num_ob_indexes, myproc, root, comm, ierr, &
27       rootproc, num_procs, stdout, print_detail_parallel, its,ite, jts, jte, &
28       kts,kte,ids,ide,jds,jde,kds,kde,ims,ime,jms,jme,kms,kme,ips,ipe,jps,jpe, &
29       kps, kpe, grid_stagger, grid_ordering, trace_use_dull, &
30       sound, synop, pilot, satem, geoamv, polaramv, airep, gpspw, gpsref, &
31       metar, ships, ssmi_rv, ssmi_tb, ssmt1, ssmt2, qscat, profiler, buoy, bogus, &
32       pseudo, radar, radiance, airsr, sonde_sfc, trace_use_frequent
33    use da_reporting, only : da_error
34    use da_tracing, only : da_trace_entry, da_trace_exit
35    use da_wrf_interfaces, only : &
36       wrf_dm_xpose_z2x,wrf_dm_xpose_x2y, wrf_dm_xpose_y2x, wrf_dm_xpose_x2z, &
37       wrf_dm_xpose_z2y, wrf_dm_xpose_y2z, wrf_patch_to_global_real, wrf_debug
38 
39    implicit none
40 
41 #include "da_generic_typedefs.inc"
42 
43    interface da_patch_to_global
44       module procedure da_patch_to_global_2d
45       module procedure da_patch_to_global_3d
46    end interface
47 
48    contains
49 
50 #include "da_cv_to_vv.inc"
51 #include "da_vv_to_cv.inc"
52 #include "da_alloc_and_copy_be_arrays.inc"
53 #include "da_copy_dims.inc"
54 #include "da_copy_tile_dims.inc"
55 #include "da_pack_count_obs.inc"
56 #include "da_unpack_count_obs.inc"
57 #include "da_transpose_x2y.inc"
58 #include "da_transpose_y2x.inc"
59 #include "da_transpose_z2x.inc"
60 #include "da_transpose_x2z.inc"
61 #include "da_transpose_y2z.inc"
62 #include "da_transpose_z2y.inc"
63 #include "da_transpose_x2y_v2.inc"
64 #include "da_transpose_y2x_v2.inc"
65 
66 #include "da_cv_to_global.inc"
67 #include "da_patch_to_global_2d.inc"
68 #include "da_patch_to_global_3d.inc"
69 #include "da_generic_methods.inc"
70 #include "da_deallocate_global_sonde_sfc.inc"
71 #include "da_deallocate_global_sound.inc"
72 #include "da_deallocate_global_synop.inc"
73 #include "da_generic_boilerplate.inc"
74 #include "da_y_facade_to_global.inc"
75 #include "da_system.inc"
76 
77 #ifdef DM_PARALLEL
78 #include "da_proc_stats_combine.inc"
79 #include "da_proc_maxmin_combine.inc"
80 #else
81 #include "da_wrf_dm_interface.inc"
82 #endif
83 
84 end module da_par_util
85