16 int * SizeOfBlocks ,
int KEEP60 ,
int * LISTVAR_SCHUR ,
int SIZE_SCHUR ,
int * COLCOUNT ,
17 int * PARENT ,
int * PORDER ,
int * IWTMP1 ,
int * IWTMP2 ,
int * IWTMP3 ,
18 int * IWTMP4 ,
int * IWTMP5 ,
int * INFO )
26 char * env_metis_lib_name;
35 if ( env_metis_lib_name = getenv(
"VH_MUMPS_LIBRARY" ) ) {
36 size_t lenv = strlen( env_metis_lib_name );
38 fprintf( stdout ,
"%s @ %d failed : metis library name too long (%s)\n" , basename(__FILE__) , __LINE__ , env_metis_lib_name );
43 memcpy( (
void * ) metis_lib_name , (
void * ) env_metis_lib_name , lenv *
sizeof(
char) );
44 metis_lib_name[ lenv ] =
'\0';
45 fprintf( stdout ,
"%s @ %d input library %s\n" , basename(__FILE__) , __LINE__ , metis_lib_name );
50 strcpy( metis_lib_name ,
"libvh.so" );
59 handle = vhcall_install( metis_lib_name );
60 if (
handle == (vhcall_handle)-1) {
61 perror(
"vhcall_install");
62 fprintf( stdout ,
"%s @ %d failed : can't install library %s\n" , basename(__FILE__) , __LINE__ , metis_lib_name );
63 fprintf( stdout ,
"Please check your LD_LIBRARY_PATH variable\n");
74 symid = vhcall_find(
handle,
"mumps_wrap_ginp94_");
76 fprintf( stdout ,
"%s @ %d failed : can't find symbol MUMPS_WRAP_GINP94\n" , basename(__FILE__) , __LINE__ );
77 perror(
"vhcall_find");
88 ca = vhcall_args_alloc();
90 perror(
"vhcall_args_alloc");
91 fprintf( stdout ,
"%s @ %d failed : unable to allocate function's argument list\n" , basename(__FILE__) , __LINE__ );
103 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_IN , iarg++ , &
N ,
sizeof(
int ) );
105 perror(
"vhcall_args_set_pointer");
106 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
111 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_IN , iarg++ , IPE , (
N + 1 ) *
sizeof( int64_t ) );
113 perror(
"vhcall_args_set_pointer");
114 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
119 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_IN , iarg++ , IW , LIW8 *
sizeof(
int ) );
121 perror(
"vhcall_args_set_pointer");
122 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
127 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_IN , iarg++ , &LIW8 ,
sizeof( int64_t ) );
129 perror(
"vhcall_args_set_pointer");
130 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
135 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_INOUT , iarg++ ,
PERM ,
N *
sizeof(
int ) );
137 perror(
"vhcall_args_set_pointer");
138 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
143 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_IN , iarg++ , SizeOfBlocks ,
N *
sizeof(
int ) );
145 perror(
"vhcall_args_set_pointer");
146 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
151 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_IN , iarg++ , &KEEP60 ,
sizeof(
int ) );
153 perror(
"vhcall_args_set_pointer");
154 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
159 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_IN , iarg++ , LISTVAR_SCHUR , SIZE_SCHUR *
sizeof(
int ) );
161 perror(
"vhcall_args_set_pointer");
162 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
167 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_IN , iarg++ , &SIZE_SCHUR ,
sizeof(
int ) );
169 perror(
"vhcall_args_set_pointer");
170 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
175 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_OUT , iarg++ , COLCOUNT ,
N *
sizeof(
int ) );
177 perror(
"vhcall_args_set_pointer");
178 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
183 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_OUT , iarg++ , PARENT ,
N *
sizeof(
int ) );
185 perror(
"vhcall_args_set_pointer");
186 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
191 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_OUT , iarg++ , PORDER ,
N *
sizeof(
int ) );
193 perror(
"vhcall_args_set_pointer");
194 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
199 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_OUT , iarg++ , IWTMP1 ,
N *
sizeof(
int ) );
201 perror(
"vhcall_args_set_pointer");
202 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
207 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_OUT , iarg++ , IWTMP2 ,
N *
sizeof(
int ) );
209 perror(
"vhcall_args_set_pointer");
210 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
215 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_OUT , iarg++ , IWTMP3 ,
N *
sizeof(
int ) );
217 perror(
"vhcall_args_set_pointer");
218 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
223 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_OUT , iarg++ , IWTMP4 ,
N *
sizeof(
int ) );
225 perror(
"vhcall_args_set_pointer");
226 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
231 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_OUT , iarg++ , IWTMP5 ,
N *
sizeof(
int ) );
233 perror(
"vhcall_args_set_pointer");
234 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
239 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_INOUT , iarg++ , INFO , 2 *
sizeof(
int ) );
241 perror(
"vhcall_args_set_pointer");
242 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
253 ret = vhcall_invoke_with_args( symid , ca , &retval );
255 perror(
"vhcall_invoke_with_args");
256 fprintf( stdout ,
"%s @ %d failed : unable to invoke the symbol from library\n" , basename(__FILE__) , __LINE__ );
267 vhcall_args_free( ca );
275 if ( vhcall_uninstall(
handle ) ) {
276 perror(
"vhcall_uninstall");
277 fprintf( stdout ,
"cvhmetis_nodend failed : unable to uninstall the library\n" , basename(__FILE__) , __LINE__ );