MOM6
mom_domains::create_group_pass Interface Reference

Detailed Description

Definition at line 89 of file MOM_domains.F90.

Private functions

subroutine create_var_group_pass_2d (group, array, MOM_dom, sideflag, position, halo)
 
subroutine create_var_group_pass_3d (group, array, MOM_dom, sideflag, position, halo)
 
subroutine create_vector_group_pass_2d (group, u_cmpt, v_cmpt, MOM_dom, direction, stagger, halo)
 
subroutine create_vector_group_pass_3d (group, u_cmpt, v_cmpt, MOM_dom, direction, stagger, halo)
 

Functions and subroutines

◆ create_var_group_pass_2d()

subroutine mom_domains::create_group_pass::create_var_group_pass_2d ( type(group_pass_type), intent(inout)  group,
real, dimension(:,:), intent(inout)  array,
type(mom_domain_type), intent(inout)  MOM_dom,
integer, intent(in), optional  sideflag,
integer, intent(in), optional  position,
integer, intent(in), optional  halo 
)
private
Parameters
[in,out]groupThe data type that store information for group update. This data will be used in do_group_pass.
[in,out]arrayThe array which is having its halos points exchanged.
[in,out]mom_domThe MOM_domain_type containing the mpp_domain needed to determine where data should be sent.
[in]sideflagAn optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted.
[in]positionAn optional argument indicating the position. This is usally CORNER, but is CENTER by default.
[in]haloThe size of the halo to update - the full halo by default.

Definition at line 956 of file MOM_domains.F90.

956  type(group_pass_type), intent(inout) :: group !< The data type that store information for
957  !! group update. This data will be used in
958  !! do_group_pass.
959  real, dimension(:,:), intent(inout) :: array !< The array which is having its halos points
960  !! exchanged.
961  type(mom_domain_type), intent(inout) :: mom_dom !< The MOM_domain_type containing the mpp_domain
962  !! needed to determine where data should be
963  !! sent.
964  integer, optional, intent(in) :: sideflag !< An optional integer indicating which
965  !! directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST,
966  !! TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east,
967  !! so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted.
968  integer, optional, intent(in) :: position !< An optional argument indicating the position.
969  !! This is usally CORNER, but is CENTER
970  !! by default.
971  integer, optional, intent(in) :: halo !< The size of the halo to update - the full
972  !! halo by default.
973 ! Arguments:
974 ! (inout) group - The data type that store information for group update.
975 ! This data will be used in do_group_pass.
976 ! (inout) array - The array which is having its halos points exchanged.
977 ! (in) MOM_dom - The MOM_domain_type containing the mpp_domain needed to
978 ! determine where data should be sent.
979 ! (in,opt) sideflag - An optional integer indicating which directions the
980 ! data should be sent. It is TO_ALL or the sum of any of
981 ! TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH. For example,
982 ! TO_EAST sends the data to the processor to the east, so
983 ! the halos on the western side are filled. TO_ALL is
984 ! the default if sideflag is omitted.
985 ! (in,opt) position - An optional argument indicating the position. This is
986 ! may be CORNER, but is CENTER by default.
987 ! (in,opt) halo - The size of the halo to update - the full halo by default.
988  integer :: dirflag
989 
990  dirflag = to_all ! 60
991  if (present(sideflag)) then ; if (sideflag > 0) dirflag = sideflag ; endif
992 
993  if (mpp_group_update_initialized(group)) then
994  call mpp_reset_group_update_field(group,array)
995  elseif (present(halo) .and. mom_dom%thin_halo_updates) then
996  call mpp_create_group_update(group, array, mom_dom%mpp_domain, flags=dirflag, &
997  position=position, whalo=halo, ehalo=halo, &
998  shalo=halo, nhalo=halo)
999  else
1000  call mpp_create_group_update(group, array, mom_dom%mpp_domain, flags=dirflag, &
1001  position=position)
1002  endif
1003 

◆ create_var_group_pass_3d()

subroutine mom_domains::create_group_pass::create_var_group_pass_3d ( type(group_pass_type), intent(inout)  group,
real, dimension(:,:,:), intent(inout)  array,
type(mom_domain_type), intent(inout)  MOM_dom,
integer, intent(in), optional  sideflag,
integer, intent(in), optional  position,
integer, intent(in), optional  halo 
)
private
Parameters
[in,out]groupThe data type that store information for group update. This data will be used in do_group_pass.
[in,out]arrayThe array which is having its halos points exchanged.
[in,out]mom_domThe MOM_domain_type containing the mpp_domain needed to determine where data should be sent.
[in]sideflagAn optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted.
[in]positionAn optional argument indicating the position. This is usally CORNER, but is CENTER by default.
[in]haloThe size of the halo to update - the full halo by default.

Definition at line 1008 of file MOM_domains.F90.

1008  type(group_pass_type), intent(inout) :: group !< The data type that store information for
1009  !! group update. This data will be used in
1010  !! do_group_pass.
1011  real, dimension(:,:,:), intent(inout) :: array !< The array which is having its halos points
1012  !! exchanged.
1013  type(mom_domain_type), intent(inout) :: mom_dom !< The MOM_domain_type containing the mpp_domain
1014  !! needed to determine where data should be
1015  !! sent.
1016  integer, optional, intent(in) :: sideflag !< An optional integer indicating which
1017  !! directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST,
1018  !! TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east,
1019  !! so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted.
1020  integer, optional, intent(in) :: position !< An optional argument indicating the position.
1021  !! This is usally CORNER, but is CENTER
1022  !! by default.
1023  integer, optional, intent(in) :: halo !< The size of the halo to update - the full
1024  !! halo by default.
1025 ! Arguments:
1026 ! (inout) group - The data type that store information for group update.
1027 ! This data will be used in do_group_pass.
1028 ! (inout) array - The array which is having its halos points exchanged.
1029 ! (in) MOM_dom - The MOM_domain_type containing the mpp_domain needed to
1030 ! determine where data should be sent.
1031 ! (in,opt) sideflag - An optional integer indicating which directions the
1032 ! data should be sent. It is TO_ALL or the sum of any of
1033 ! TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH. For example,
1034 ! TO_EAST sends the data to the processor to the east, so
1035 ! the halos on the western side are filled. TO_ALL is
1036 ! the default if sideflag is omitted.
1037 ! (in,opt) position - An optional argument indicating the position. This is
1038 ! may be CORNER, but is CENTER by default.
1039 ! (in,opt) halo - The size of the halo to update - the full halo by default.
1040  integer :: dirflag
1041 
1042  dirflag = to_all ! 60
1043  if (present(sideflag)) then ; if (sideflag > 0) dirflag = sideflag ; endif
1044 
1045  if (mpp_group_update_initialized(group)) then
1046  call mpp_reset_group_update_field(group,array)
1047  elseif (present(halo) .and. mom_dom%thin_halo_updates) then
1048  call mpp_create_group_update(group, array, mom_dom%mpp_domain, flags=dirflag, &
1049  position=position, whalo=halo, ehalo=halo, &
1050  shalo=halo, nhalo=halo)
1051  else
1052  call mpp_create_group_update(group, array, mom_dom%mpp_domain, flags=dirflag, &
1053  position=position)
1054  endif
1055 

◆ create_vector_group_pass_2d()

subroutine mom_domains::create_group_pass::create_vector_group_pass_2d ( type(group_pass_type), intent(inout)  group,
real, dimension(:,:), intent(inout)  u_cmpt,
real, dimension(:,:), intent(inout)  v_cmpt,
type(mom_domain_type), intent(inout)  MOM_dom,
integer, intent(in), optional  direction,
integer, intent(in), optional  stagger,
integer, intent(in), optional  halo 
)
private
Parameters
[in,out]groupThe data type that store information for group update. This data will be used in do_group_pass.
[in,out]u_cmptThe nominal zonal (u) component of the vector pair which is having its halos points exchanged.
[in,out]v_cmptThe nominal meridional (v) component of the vector pair which is having its halos points exchanged.
[in,out]mom_domThe MOM_domain_type containing the mpp_domain needed to determine where data should be sent
[in]directionAn optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH, possibly plus SCALAR_PAIR if these are paired non-directional scalars discretized at the typical vector component locations. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if omitted.
[in]staggerAn optional flag, which may be one of A_GRID, BGRID_NE, or CGRID_NE, indicating where the two components of the vector are discretized. Omitting stagger is the same as setting it to CGRID_NE.
[in]haloThe size of the halo to update - the full halo by default.

Definition at line 1060 of file MOM_domains.F90.

1060  type(group_pass_type), intent(inout) :: group !< The data type that store information for
1061  !! group update. This data will be used in
1062  !! do_group_pass.
1063  real, dimension(:,:), intent(inout) :: u_cmpt !< The nominal zonal (u) component of the vector
1064  !! pair which is having its halos points
1065  !! exchanged.
1066  real, dimension(:,:), intent(inout) :: v_cmpt !< The nominal meridional (v) component of the
1067  !! vector pair which is having its halos points
1068  !! exchanged.
1069 
1070  type(mom_domain_type), intent(inout) :: mom_dom !< The MOM_domain_type containing the mpp_domain
1071  !! needed to determine where data should be
1072  !! sent
1073  integer, optional, intent(in) :: direction !< An optional integer indicating which
1074  !! directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST,
1075  !! TO_NORTH, and TO_SOUTH, possibly plus SCALAR_PAIR if these are paired non-directional
1076  !! scalars discretized at the typical vector component locations. For example, TO_EAST sends
1077  !! the data to the processor to the east, so the halos on the western side are filled. TO_ALL
1078  !! is the default if omitted.
1079  integer, optional, intent(in) :: stagger !< An optional flag, which may be one of A_GRID,
1080  !! BGRID_NE, or CGRID_NE, indicating where the two components of the vector are
1081  !! discretized. Omitting stagger is the same as setting it to CGRID_NE.
1082  integer, optional, intent(in) :: halo !< The size of the halo to update - the full
1083  !! halo by default.
1084 ! Arguments:
1085 ! (inout) group - The data type that store information for group update.
1086 ! This data will be used in do_group_pass.
1087 ! (inout) u_cmpt - The nominal zonal (u) component of the vector pair which
1088 ! is having its halos points exchanged.
1089 ! (inout) v_cmpt - The nominal meridional (v) component of the vector pair
1090 ! which is having its halos points exchanged.
1091 ! (in) MOM_dom - The MOM_domain_type containing the mpp_domain needed to
1092 ! determine where data should be sent.
1093 ! (in) direction - An optional integer indicating which directions the
1094 ! data should be sent. It is TO_ALL or the sum of any of
1095 ! TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH, possibly
1096 ! plus SCALAR_PAIR if these are paired non-directional
1097 ! scalars discretized at the typical vector component
1098 ! locations. For example, TO_EAST sends the data to the
1099 ! processor to the east, so the halos on the western
1100 ! side are filled. TO_ALL is the default if omitted.
1101 ! (in) stagger - An optional flag, which may be one of A_GRID, BGRID_NE,
1102 ! or CGRID_NE, indicating where the two components of the
1103 ! vector are discretized. Omitting stagger is the same as
1104 ! setting it to CGRID_NE.
1105 ! (in,opt) halo - The size of the halo to update - the full halo by default.
1106  integer :: stagger_local
1107  integer :: dirflag
1108 
1109  stagger_local = cgrid_ne ! Default value for type of grid
1110  if (present(stagger)) stagger_local = stagger
1111 
1112  dirflag = to_all ! 60
1113  if (present(direction)) then ; if (direction > 0) dirflag = direction ; endif
1114 
1115  if (mpp_group_update_initialized(group)) then
1116  call mpp_reset_group_update_field(group,u_cmpt, v_cmpt)
1117  elseif (present(halo) .and. mom_dom%thin_halo_updates) then
1118  call mpp_create_group_update(group, u_cmpt, v_cmpt, mom_dom%mpp_domain, &
1119  flags=dirflag, gridtype=stagger_local, whalo=halo, ehalo=halo, &
1120  shalo=halo, nhalo=halo)
1121  else
1122  call mpp_create_group_update(group, u_cmpt, v_cmpt, mom_dom%mpp_domain, &
1123  flags=dirflag, gridtype=stagger_local)
1124  endif
1125 

◆ create_vector_group_pass_3d()

subroutine mom_domains::create_group_pass::create_vector_group_pass_3d ( type(group_pass_type), intent(inout)  group,
real, dimension(:,:,:), intent(inout)  u_cmpt,
real, dimension(:,:,:), intent(inout)  v_cmpt,
type(mom_domain_type), intent(inout)  MOM_dom,
integer, intent(in), optional  direction,
integer, intent(in), optional  stagger,
integer, intent(in), optional  halo 
)
private
Parameters
[in,out]groupThe data type that store information for group update. This data will be used in do_group_pass.
[in,out]u_cmptThe nominal zonal (u) component of the vector pair which is having its halos points exchanged.
[in,out]v_cmptThe nominal meridional (v) component of the vector pair which is having its halos points exchanged.
[in,out]mom_domThe MOM_domain_type containing the mpp_domain needed to determine where data should be sent.
[in]directionAn optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH, possibly plus SCALAR_PAIR if these are paired non-directional scalars discretized at the typical vector component locations. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if omitted.
[in]staggerAn optional flag, which may be one of A_GRID, BGRID_NE, or CGRID_NE, indicating where the two components of the vector are discretized. Omitting stagger is the same as setting it to CGRID_NE.
[in]haloThe size of the halo to update - the full halo by default.

Definition at line 1130 of file MOM_domains.F90.

1130  type(group_pass_type), intent(inout) :: group !< The data type that store information for
1131  !! group update. This data will be used in
1132  !! do_group_pass.
1133  real, dimension(:,:,:), intent(inout) :: u_cmpt !< The nominal zonal (u) component of the vector
1134  !! pair which is having its halos points
1135  !! exchanged.
1136  real, dimension(:,:,:), intent(inout) :: v_cmpt !< The nominal meridional (v) component of the
1137  !! vector pair which is having its halos points
1138  !! exchanged.
1139 
1140  type(mom_domain_type), intent(inout) :: mom_dom !< The MOM_domain_type containing the mpp_domain
1141  !! needed to determine where data should be
1142  !! sent.
1143  integer, optional, intent(in) :: direction !< An optional integer indicating which
1144  !! directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST,
1145  !! TO_NORTH, and TO_SOUTH, possibly plus SCALAR_PAIR if these are paired non-directional
1146  !! scalars discretized at the typical vector component locations. For example, TO_EAST sends
1147  !! the data to the processor to the east, so the halos on the western side are filled. TO_ALL
1148  !! is the default if omitted.
1149  integer, optional, intent(in) :: stagger !< An optional flag, which may be one of A_GRID,
1150  !! BGRID_NE, or CGRID_NE, indicating where the two components of the vector are
1151  !! discretized. Omitting stagger is the same as setting it to CGRID_NE.
1152  integer, optional, intent(in) :: halo !< The size of the halo to update - the full
1153  !! halo by default.
1154 ! Arguments:
1155 ! (inout) group - The data type that store information for group update.
1156 ! This data will be used in do_group_pass.
1157 ! (inout) u_cmpt - The nominal zonal (u) component of the vector pair which
1158 ! is having its halos points exchanged.
1159 ! (inout) v_cmpt - The nominal meridional (v) component of the vector pair
1160 ! which is having its halos points exchanged.
1161 ! (in) MOM_dom - The MOM_domain_type containing the mpp_domain needed to
1162 ! determine where data should be sent.
1163 ! (in) direction - An optional integer indicating which directions the
1164 ! data should be sent. It is TO_ALL or the sum of any of
1165 ! TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH, possibly
1166 ! plus SCALAR_PAIR if these are paired non-directional
1167 ! scalars discretized at the typical vector component
1168 ! locations. For example, TO_EAST sends the data to the
1169 ! processor to the east, so the halos on the western
1170 ! side are filled. TO_ALL is the default if omitted.
1171 ! (in) stagger - An optional flag, which may be one of A_GRID, BGRID_NE,
1172 ! or CGRID_NE, indicating where the two components of the
1173 ! vector are discretized. Omitting stagger is the same as
1174 ! setting it to CGRID_NE.
1175 ! (in,opt) halo - The size of the halo to update - the full halo by default.
1176 
1177  integer :: stagger_local
1178  integer :: dirflag
1179 
1180  stagger_local = cgrid_ne ! Default value for type of grid
1181  if (present(stagger)) stagger_local = stagger
1182 
1183  dirflag = to_all ! 60
1184  if (present(direction)) then ; if (direction > 0) dirflag = direction ; endif
1185 
1186  if (mpp_group_update_initialized(group)) then
1187  call mpp_reset_group_update_field(group,u_cmpt, v_cmpt)
1188  elseif (present(halo) .and. mom_dom%thin_halo_updates) then
1189  call mpp_create_group_update(group, u_cmpt, v_cmpt, mom_dom%mpp_domain, &
1190  flags=dirflag, gridtype=stagger_local, whalo=halo, ehalo=halo, &
1191  shalo=halo, nhalo=halo)
1192  else
1193  call mpp_create_group_update(group, u_cmpt, v_cmpt, mom_dom%mpp_domain, &
1194  flags=dirflag, gridtype=stagger_local)
1195  endif
1196 

The documentation for this interface was generated from the following file: