00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 subroutine psmile_init_enddef_msg_extra (msg_extra)
00028 use psmile_common, only : enddef_msg_extra, &
00029 psmile_undef
00030
00031 implicit none
00032
00033 type (enddef_msg_extra), intent (out) :: msg_extra
00034
00035 msg_extra%reqest_type = psmile_undef
00036 msg_extra%datatype = psmile_undef
00037 msg_extra%len_int_data = psmile_undef
00038 msg_extra%len_coord_data = psmile_undef
00039 msg_extra%global_comp_id = psmile_undef
00040 msg_extra%transi_out_id = psmile_undef
00041 msg_extra%num_volumes = psmile_undef
00042 msg_extra%num_int_per_vol = psmile_undef
00043 msg_extra%num_items_per_coord = psmile_undef
00044 msg_extra%partition_avail = .false.
00045 msg_extra%partition(:) = 0
00046 msg_extra%num_neigh = psmile_undef
00047 msg_extra%local_grid_id = psmile_undef
00048 msg_extra%idx_req = psmile_undef
00049
00050 end subroutine psmile_init_enddef_msg_extra
00051
00052 subroutine psmile_pack_msg_extra (msg_extra, buffer)
00053 use psmile_common, only : enddef_msg_extra, msg_extra_size
00054
00055 implicit none
00056
00057 type (enddef_msg_extra), intent (in) :: msg_extra
00058 integer, intent (out) :: buffer(msg_extra_size)
00059
00060 buffer (1) = msg_extra%reqest_type
00061 buffer (2) = msg_extra%datatype
00062 buffer (3) = msg_extra%len_int_data
00063 buffer (4) = msg_extra%len_coord_data
00064 buffer (5) = msg_extra%global_comp_id
00065 buffer (6) = msg_extra%transi_out_id
00066 buffer (7) = msg_extra%num_volumes
00067 buffer (8) = msg_extra%num_int_per_vol
00068 buffer (9) = msg_extra%num_items_per_coord
00069 if (msg_extra%partition_avail) then
00070 buffer (10) = 1
00071 else
00072 buffer (10) = 0
00073 endif
00074 buffer (11:13) = msg_extra%partition(:)
00075 buffer (14) = msg_extra%num_neigh
00076 buffer (15) = msg_extra%local_grid_id
00077 buffer (16) = msg_extra%idx_req
00078 #ifdef DEBUGX
00079 PRINT *, ' pack reqest_type ', buffer (1)
00080 PRINT *, ' pack datatype ', buffer (2)
00081 PRINT *, ' pack len_int_data ', buffer (3)
00082 PRINT *, ' pack len_coord_data ', buffer (4)
00083 PRINT *, ' pack global_comp_id ', buffer (5)
00084 PRINT *, ' pack transi_out_id ', buffer (6)
00085 PRINT *, ' pack num_volumes ', buffer (7)
00086 PRINT *, ' pack num_int_per_vol ', buffer (8)
00087 PRINT *, ' pack num_items_per_coord ', buffer (9)
00088 PRINT *, ' pack partition_avail ', buffer (10) /= 0
00089 PRINT *, ' pack partition(:) ', buffer (11:13)
00090 PRINT *, ' pack num_neigh ', buffer (14)
00091 PRINT *, ' pack local_grid_id ', buffer (15)
00092 PRINT *, ' pack idx_req ', buffer (16)
00093 #endif
00094
00095 end subroutine psmile_pack_msg_extra
00096
00097 subroutine psmile_unpack_msg_extra (msg_extra, buffer)
00098 use psmile_common, only : enddef_msg_extra, msg_extra_size
00099
00100 implicit none
00101
00102 type (enddef_msg_extra), intent (out) :: msg_extra
00103 integer, intent (in) :: buffer(msg_extra_size)
00104
00105 msg_extra%reqest_type = buffer (1)
00106 msg_extra%datatype = buffer (2)
00107 msg_extra%len_int_data = buffer (3)
00108 msg_extra%len_coord_data = buffer (4)
00109 msg_extra%global_comp_id = buffer (5)
00110 msg_extra%transi_out_id = buffer (6)
00111 msg_extra%num_volumes = buffer (7)
00112 msg_extra%num_int_per_vol = buffer (8)
00113 msg_extra%num_items_per_coord = buffer (9)
00114 msg_extra%partition_avail = buffer (10) /= 0
00115 msg_extra%partition(:) = buffer (11:13)
00116 msg_extra%num_neigh = buffer (14)
00117 msg_extra%local_grid_id = buffer (15)
00118 msg_extra%idx_req = buffer (16)
00119
00120 #ifdef DEBUGX
00121 PRINT *, ' unpack reqest_type ', buffer (1)
00122 PRINT *, ' unpack datatype ', buffer (2)
00123 PRINT *, ' unpack len_int_data ', buffer (3)
00124 PRINT *, ' unpack len_coord_data ', buffer (4)
00125 PRINT *, ' unpack global_comp_id ', buffer (5)
00126 PRINT *, ' unpack transi_out_id ', buffer (6)
00127 PRINT *, ' unpack num_volumes ', buffer (7)
00128 PRINT *, ' unpack num_int_per_vol ', buffer (8)
00129 PRINT *, ' unpack num_items_per_coord ', buffer (9)
00130 PRINT *, ' unpack partition_avail ', buffer (10) /= 0
00131 PRINT *, ' unpack partition(:) ', buffer (11:13)
00132 PRINT *, ' unpack num_neigh ', buffer (14)
00133 PRINT *, ' unpack local_grid_id ', buffer (15)
00134 PRINT *, ' unpack idx_req ', buffer (16)
00135 #endif
00136
00137 end subroutine psmile_unpack_msg_extra