9#include "test_macros.inc"
13 use,
INTRINSIC :: iso_c_binding
22 SUBROUTINE write_dummy_scrip_grid_file_c ( &
23 grid_name, grid_filename, mask_filename, &
24 with_corner, num_lon, num_lat, lon_range, lat_range ) &
25 bind( c, name=
'write_dummy_scrip_grid_file' )
26 use,
INTRINSIC :: iso_c_binding, only : c_char, c_int, c_size_t, c_double
27 CHARACTER(KIND=c_char),
DIMENSION(*) :: grid_name
28 CHARACTER(KIND=c_char),
DIMENSION(*) :: grid_filename
29 CHARACTER(KIND=c_char),
DIMENSION(*) :: mask_filename
30 INTEGER(KIND=c_int),
value :: with_corner
31 INTEGER(KIND=c_size_t),
value :: num_lon
32 INTEGER(KIND=c_size_t),
value :: num_lat
33 REAL(KIND=c_double),
DIMENSION(*) :: lat_range
34 REAL(KIND=c_double),
DIMENSION(*) :: lon_range
35 END SUBROUTINE write_dummy_scrip_grid_file_c
39 SUBROUTINE c_unlink ( path ) bind ( c, name='unlink' )
40 use,
INTRINSIC :: iso_c_binding, only : c_char
41 CHARACTER(KIND=c_char),
DIMENSION(*) :: path
42 END SUBROUTINE c_unlink
45 INTEGER :: comm_size, comm_rank
48 CHARACTER(KIND=c_char,LEN=*),
PARAMETER :: src_grid_name = &
49 "source_grid" // c_null_char
50 CHARACTER(KIND=c_char,LEN=*),
PARAMETER :: src_grid_filename = &
51 "test_duplicate_stencils_parallel_src_grids.nc" // c_null_char
52 CHARACTER(KIND=c_char,LEN=*),
PARAMETER :: src_mask_filename = &
53 "test_duplicate_stencils_parallel_src_masks.nc" // c_null_char
54 CHARACTER(KIND=c_char,LEN=*),
PARAMETER :: tgt_grid_name = &
55 "target_grid" // c_null_char
56 CHARACTER(KIND=c_char,LEN=*),
PARAMETER :: tgt_grid_filename = &
57 "test_duplicate_stencils_parallel_tgt_grids.nc" // c_null_char
58 CHARACTER(KIND=c_char,LEN=*),
PARAMETER :: tgt_mask_filename = &
59 "test_duplicate_stencils_parallel_tgt_masks.nc" // c_null_char
61 INTEGER(KIND=C_INT),
PARAMETER :: with_corner = 1_c_int
62 INTEGER(KIND=C_INT),
PARAMETER :: valid_mask_value = 0_c_int
63 INTEGER(KIND=C_INT),
PARAMETER :: use_ll_edges = 0_c_int
65 INTEGER(KIND=C_SIZE_T) :: src_cell_coord_idx
66 TYPE(C_PTR) :: src_duplicated_cell_idx
67 TYPE(C_PTR) :: src_orig_cell_global_id
68 INTEGER(KIND=C_SIZE_T) :: src_nbr_duplicated_cells
70 INTEGER(KIND=C_SIZE_T) :: tgt_cell_coord_idx
71 TYPE(C_PTR) :: tgt_duplicated_cell_idx
72 TYPE(C_PTR) :: tgt_orig_cell_global_id
73 INTEGER(KIND=C_SIZE_T) :: tgt_nbr_duplicated_cells
75 TYPE(c_ptr) :: src_grid, tgt_grid
76 TYPE(c_ptr) :: dist_grid_pair
77 TYPE(c_ptr) :: interp_grid
78 TYPE(c_ptr) :: interp_stack_config
79 TYPE(c_ptr) :: interp_method_stack
80 TYPE(c_ptr) :: interp_weights
89 CALL mpi_comm_size(mpi_comm_world, comm_size, ierror)
90 CALL mpi_comm_rank(mpi_comm_world, comm_rank, ierror)
92 CALL test(comm_size == 3)
95 IF (comm_rank == 0)
THEN
96 CALL write_dummy_scrip_grid_file_c( &
97 src_grid_name, src_grid_filename, src_mask_filename, with_corner, &
98 360_c_size_t, 180_c_size_t, (/0.0_c_double, 360.0_c_double/), &
99 (/-90.0_c_double, 90.0_c_double/))
100 CALL write_dummy_scrip_grid_file_c( &
101 tgt_grid_name, tgt_grid_filename, tgt_mask_filename, with_corner, &
102 380_c_size_t, 180_c_size_t, (/0.0_c_double, 380.0_c_double/), &
103 (/-90.0_c_double, 90.0_c_double/))
105 CALL mpi_barrier(mpi_comm_world, ierror)
110 src_grid_filename, src_mask_filename, mpi_comm_world, src_grid_name, &
111 valid_mask_value, src_grid_name, use_ll_edges, src_cell_coord_idx, &
112 src_duplicated_cell_idx, src_orig_cell_global_id, &
113 src_nbr_duplicated_cells)
116 tgt_grid_filename, tgt_mask_filename, mpi_comm_world, tgt_grid_name, &
117 valid_mask_value, tgt_grid_name, use_ll_edges, tgt_cell_coord_idx, &
118 tgt_duplicated_cell_idx, tgt_orig_cell_global_id, &
119 tgt_nbr_duplicated_cells)
128 dist_grid_pair, trim(src_grid_name) // c_null_char, &
129 trim(tgt_grid_name) // c_null_char, int(1, c_size_t), &
130 (/int(
yac_loc_cell, c_int)/), (/src_cell_coord_idx/), (/-1_c_size_t/), &
131 int(
yac_loc_cell, c_int), tgt_cell_coord_idx, -1_c_size_t)
139 interp_method_stack = &
152 interp_weights, tgt_grid, tgt_orig_cell_global_id, &
153 tgt_duplicated_cell_idx, tgt_nbr_duplicated_cells,
yac_loc_cell)
170 CALL mpi_barrier(mpi_comm_world, ierror)
171 IF (comm_rank == 0)
THEN
172 CALL c_unlink(src_grid_filename)
173 CALL c_unlink(src_mask_filename)
174 CALL c_unlink(tgt_grid_filename)
175 CALL c_unlink(tgt_mask_filename)
subroutine, public start_test(name)
subroutine, public stop_test()
subroutine, public exit_tests()
@ yac_interp_conserv_destarea