15void VE_Mumps_ana_h(
int TOTEL ,
bool COMPUTE_PERM ,
int N , int64_t IWLEN , int64_t * PE ,
16 int64_t * PFREE ,
int * LEN ,
int * IW ,
int * NV ,
int * ELEN ,
17 int * LAST ,
int * NCMPA ,
int * DEGREE ,
int * HEAD ,
int * NEXT ,
18 int * W ,
int * PARENT )
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_ana_h_");
76 fprintf( stdout ,
"%s @ %d failed : can't find symbol MUMPS_ANA_H\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__ );
102 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_IN , 0 , &TOTEL ,
sizeof(
int ) );
104 perror(
"vhcall_args_set_pointer");
105 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
110 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_IN , 1 , &COMPUTE_PERM ,
sizeof(
bool ) );
112 perror(
"vhcall_args_set_pointer");
113 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
118 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_IN , 2 , &
N ,
sizeof(
int ) );
120 perror(
"vhcall_args_set_pointer");
121 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
126 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_IN , 3 , &IWLEN ,
sizeof( int64_t ) );
128 perror(
"vhcall_args_set_pointer");
129 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
134 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_INOUT , 4 , PE ,
N *
sizeof( int64_t ) );
136 perror(
"vhcall_args_set_pointer");
137 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
142 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_INOUT , 5 , PFREE ,
sizeof( int64_t ) );
144 perror(
"vhcall_args_set_pointer");
145 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
150 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_INOUT , 6 , LEN ,
N *
sizeof(
int ) );
152 perror(
"vhcall_args_set_pointer");
153 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
158 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_INOUT , 7 , IW , IWLEN *
sizeof(
int ) );
160 perror(
"vhcall_args_set_pointer");
161 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
166 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_INOUT , 8 , NV ,
N *
sizeof(
int ) );
168 perror(
"vhcall_args_set_pointer");
169 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
174 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_OUT , 9 , ELEN ,
N *
sizeof(
int ) );
176 perror(
"vhcall_args_set_pointer");
177 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
182 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_OUT ,10 , LAST ,
N *
sizeof(
int ) );
184 perror(
"vhcall_args_set_pointer");
185 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
190 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_OUT ,11 , NCMPA ,
sizeof(
int ) );
192 perror(
"vhcall_args_set_pointer");
193 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
198 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_INOUT ,12 , DEGREE ,
N *
sizeof(
int ) );
200 perror(
"vhcall_args_set_pointer");
201 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
206 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_INOUT ,13 , HEAD , TOTEL *
sizeof(
int ) );
208 perror(
"vhcall_args_set_pointer");
209 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
214 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_INOUT ,14 , NEXT ,
N *
sizeof(
int ) );
216 perror(
"vhcall_args_set_pointer");
217 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
222 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_INOUT ,15 , W ,
N *
sizeof(
int ) );
224 perror(
"vhcall_args_set_pointer");
225 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
230 ret = vhcall_args_set_pointer( ca , VHCALL_INTENT_OUT ,16 , PARENT ,
N *
sizeof(
int ) );
232 perror(
"vhcall_args_set_pointer");
233 fprintf( stdout ,
"%s @ %d failed : unable to set argument.\n" , basename(__FILE__) , __LINE__ );
244 ret = vhcall_invoke_with_args( symid , ca , &retval );
246 perror(
"vhcall_invoke_with_args");
247 fprintf( stdout ,
"%s @ %d failed : unable to invoke the symbol from library\n" , basename(__FILE__) , __LINE__ );
258 vhcall_args_free( ca );
266 if ( vhcall_uninstall(
handle ) ) {
267 perror(
"vhcall_uninstall");
268 fprintf( stdout ,
"cvhmetis_nodend failed : unable to uninstall the library\n" , basename(__FILE__) , __LINE__ );