|
EpetraExt Development
|
00001 /* 00002 //@HEADER 00003 // *********************************************************************** 00004 // 00005 // EpetraExt: Epetra Extended - Linear Algebra Services Package 00006 // Copyright (2011) Sandia Corporation 00007 // 00008 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, 00009 // the U.S. Government retains certain rights in this software. 00010 // 00011 // Redistribution and use in source and binary forms, with or without 00012 // modification, are permitted provided that the following conditions are 00013 // met: 00014 // 00015 // 1. Redistributions of source code must retain the above copyright 00016 // notice, this list of conditions and the following disclaimer. 00017 // 00018 // 2. Redistributions in binary form must reproduce the above copyright 00019 // notice, this list of conditions and the following disclaimer in the 00020 // documentation and/or other materials provided with the distribution. 00021 // 00022 // 3. Neither the name of the Corporation nor the names of the 00023 // contributors may be used to endorse or promote products derived from 00024 // this software without specific prior written permission. 00025 // 00026 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY 00027 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00028 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00029 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE 00030 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00031 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00032 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00033 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00034 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00035 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00036 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00037 // 00038 // Questions? Contact Michael A. Heroux (maherou@sandia.gov) 00039 // 00040 // *********************************************************************** 00041 //@HEADER 00042 */ 00043 00044 //------------------------------------------------------------------------- 00045 // Filename : $Zoltan_QueryFunctions.h$ 00046 // 00047 // Purpose : Static methods which are directly registered with 00048 // Zoltan. They us the static container to access 00049 // the dynamic object methods. 00050 // 00051 // Special Notes : 00052 // 00053 // Creator : Robert J. Hoekstra, Parallel Computational Sciences 00054 // 00055 // Creation Date : 08/04/2000 00056 // 00057 // Revision Information: 00058 // --------------------- 00059 // 00060 // Revision Number: $Revision$ 00061 // 00062 // Revision Date : $Date$ 00063 // 00064 // Current Owner : $Author$ 00065 //------------------------------------------------------------------------- 00066 00067 #ifndef ZOLTAN_QUERYFUNCTIONS_H_ 00068 #define ZOLTAN_QUERYFUNCTIONS_H_ 00069 00070 #include "EpetraExt_ConfigDefs.h" 00071 00072 #include <zoltan.h> 00073 00074 namespace Zoltan { 00075 00076 class EPETRAEXT_DEPRECATED QueryFunctions 00077 { 00078 00079 public: 00080 00081 //General Functions 00082 static int Number_Objects ( void * data, 00083 int * ierr ); 00084 00085 static void Object_List ( void * data, 00086 int num_gid_entries, 00087 int num_lid_entries, 00088 ZOLTAN_ID_PTR global_ids, 00089 ZOLTAN_ID_PTR local_ids, 00090 int weight_dim, 00091 float * object_weights, 00092 int * ierr ); 00093 00094 static int First_Object ( void * data, 00095 int num_gid_entries, 00096 int num_lid_entries, 00097 ZOLTAN_ID_PTR first_global_id, 00098 ZOLTAN_ID_PTR first_local_id, 00099 int weight_dim, 00100 float * first_weight, 00101 int * ierr ); 00102 00103 static int Next_Object ( void * data, 00104 int num_gid_entries, 00105 int num_lid_entries, 00106 ZOLTAN_ID_PTR global_id, 00107 ZOLTAN_ID_PTR local_id, 00108 ZOLTAN_ID_PTR next_global_id, 00109 ZOLTAN_ID_PTR next_local_id, 00110 int weight_dim, 00111 float * next_weight, 00112 int * ierr ); 00113 00114 static int Number_Border_Objects ( void * data, 00115 int number_neighbor_procs, 00116 int * ierr ); 00117 00118 static void Border_Object_List ( void * data, 00119 int num_gid_entries, 00120 int num_lid_entries, 00121 int number_neighbor_procs, 00122 ZOLTAN_ID_PTR global_ids, 00123 ZOLTAN_ID_PTR local_ids, 00124 int weight_dim, 00125 float * object_weights, 00126 int * ierr ); 00127 00128 static int First_Border_Object ( void * data, 00129 int num_gid_entries, 00130 int num_lid_entries, 00131 int number_neighbor_procs, 00132 ZOLTAN_ID_PTR first_global_id, 00133 ZOLTAN_ID_PTR first_local_id, 00134 int weight_dim, 00135 float * first_weight, 00136 int * ierr ); 00137 00138 static int Next_Border_Object ( void * data, 00139 int num_gid_entries, 00140 int num_lid_entries, 00141 ZOLTAN_ID_PTR global_id, 00142 ZOLTAN_ID_PTR local_id, 00143 int number_neighbor_procs, 00144 ZOLTAN_ID_PTR next_global_id, 00145 ZOLTAN_ID_PTR next_local_id, 00146 int weight_dim, 00147 float * next_weight, 00148 int * ierr ); 00149 00150 //Geometry Based Functions 00151 static int Number_Geometry_Objects ( void * data, 00152 int * ierr ); 00153 00154 static void Geometry_Values ( void * data, 00155 int num_gid_entries, 00156 int num_lid_entries, 00157 ZOLTAN_ID_PTR global_id, 00158 ZOLTAN_ID_PTR local_id, 00159 double * geometry_vector, 00160 int * ierr ); 00161 00162 //Graph Based Functions 00163 static int Number_Edges ( void * data, 00164 int num_gid_entries, 00165 int num_lid_entries, 00166 ZOLTAN_ID_PTR global_id, 00167 ZOLTAN_ID_PTR local_id, 00168 int * ierr ); 00169 00170 static void Edge_List ( void * data, 00171 int num_gid_entries, 00172 int num_lid_entries, 00173 ZOLTAN_ID_PTR global_id, 00174 ZOLTAN_ID_PTR local_id, 00175 ZOLTAN_ID_PTR neighbor_global_ids, 00176 int * neighbor_procs, 00177 int weight_dim, 00178 float * edge_weights, 00179 int * ierr ); 00180 00181 //Tree Based Functions 00182 static int Number_Coarse_Objects ( void * data, 00183 int * ierr ); 00184 00185 static void Coarse_Object_List ( void * data, 00186 int num_gid_entries, 00187 int num_lid_entries, 00188 ZOLTAN_ID_PTR global_ids, 00189 ZOLTAN_ID_PTR local_ids, 00190 int * assigned, 00191 int * number_vertices, 00192 ZOLTAN_ID_PTR vertices, 00193 int * in_order, 00194 ZOLTAN_ID_PTR in_vertex, 00195 ZOLTAN_ID_PTR out_vertex, 00196 int * ierr ); 00197 00198 static int First_Coarse_Object ( void * data, 00199 int num_gid_entries, 00200 int num_lid_entries, 00201 ZOLTAN_ID_PTR first_global_id, 00202 ZOLTAN_ID_PTR first_local_id, 00203 int * assigned, 00204 int * number_vertices, 00205 ZOLTAN_ID_PTR vertices, 00206 int * in_order, 00207 ZOLTAN_ID_PTR in_vertex, 00208 ZOLTAN_ID_PTR out_vertex, 00209 int * ierr ); 00210 00211 static int Next_Coarse_Object ( void * data, 00212 int num_gid_entries, 00213 int num_lid_entries, 00214 ZOLTAN_ID_PTR global_id, 00215 ZOLTAN_ID_PTR local_id, 00216 ZOLTAN_ID_PTR next_global_id, 00217 ZOLTAN_ID_PTR next_local_id, 00218 int * assigned, 00219 int * number_vertices, 00220 ZOLTAN_ID_PTR vertices, 00221 ZOLTAN_ID_PTR in_vertex, 00222 ZOLTAN_ID_PTR out_vertex, 00223 int * ierr ); 00224 00225 static int Number_Children ( void * data, 00226 int num_gid_entries, 00227 int num_lid_entries, 00228 ZOLTAN_ID_PTR global_id, 00229 ZOLTAN_ID_PTR local_id, 00230 int * ierr); 00231 00232 static void Child_List ( void * data, 00233 int num_gid_entries, 00234 int num_lid_entries, 00235 ZOLTAN_ID_PTR parent_global_id, 00236 ZOLTAN_ID_PTR parent_local_id, 00237 ZOLTAN_ID_PTR child_global_ids, 00238 ZOLTAN_ID_PTR child_local_ids, 00239 int * assigned, 00240 int * number_vertices, 00241 ZOLTAN_ID_PTR vertices, 00242 ZOLTAN_REF_TYPE * reference_type, 00243 ZOLTAN_ID_PTR in_vertex, 00244 ZOLTAN_ID_PTR out_vertex, 00245 int * ierr ); 00246 00247 static void Child_Weight ( void * data, 00248 int num_gid_entries, 00249 int num_lid_entries, 00250 ZOLTAN_ID_PTR global_id, 00251 ZOLTAN_ID_PTR local_id, 00252 int weight_dim, 00253 float * object_weight, 00254 int * ierr ); 00255 00256 }; 00257 00258 } //namespace Zoltan 00259 00260 #endif
1.7.4