294 MUMPS_INT *irhs_sparse, *irhs_ptr, *isol_loc, *irhs_loc;
295 MUMPS_INT irn_avail, jcn_avail, a_avail, rhs_avail, redrhs_avail;
300 MUMPS_INT irn_loc_avail, jcn_loc_avail, a_loc_avail;
301 MUMPS_INT eltptr_avail, eltvar_avail, a_elt_avail;
304 MUMPS_INT irhs_ptr_avail, rhs_sparse_avail, sol_loc_avail, rhs_loc_avail;
305 MUMPS_INT irhs_sparse_avail, isol_loc_avail, irhs_loc_avail;
335 if ( mumps_par->job == -1 )
337 mumps_par->irn=0; mumps_par->jcn=0; mumps_par->a=0; mumps_par->rhs=0; mumps_par->wk_user=0;
339 mumps_par->eltptr=0; mumps_par->eltvar=0; mumps_par->a_elt=0; mumps_par->blkptr=0; mumps_par->blkvar=0; mumps_par->perm_in=0; mumps_par->sym_perm=0; mumps_par->uns_perm=0; mumps_par->irn_loc=0;mumps_par->jcn_loc=0;mumps_par->a_loc=0; mumps_par->listvar_schur=0;mumps_par->schur=0;mumps_par->mapping=0;mumps_par->pivnul_list=0;mumps_par->colsca=0;mumps_par->colsca_from_mumps=0;mumps_par->rowsca=0;mumps_par->rowsca_from_mumps=0; mumps_par->rhs_sparse=0; mumps_par->irhs_sparse=0; mumps_par->sol_loc=0; mumps_par->rhs_loc=0; mumps_par->irhs_ptr=0; mumps_par->isol_loc=0; mumps_par->irhs_loc=0;
340 strcpy(mumps_par->ooc_tmpdir,
"NAME_NOT_INITIALIZED");
341 strcpy(mumps_par->ooc_prefix,
"NAME_NOT_INITIALIZED");
342 strcpy(mumps_par->write_problem,
"NAME_NOT_INITIALIZED");
343 strcpy(mumps_par->save_dir,
"NAME_NOT_INITIALIZED");
344 strcpy(mumps_par->save_prefix,
"NAME_NOT_INITIALIZED");
350 mumps_par->n=0; mumps_par->nblk=0; mumps_par->nz=0; mumps_par->nnz=0; mumps_par->nz_loc=0; mumps_par->nnz_loc=0; mumps_par->nelt=0;mumps_par->instance_number=0;mumps_par->deficiency=0;mumps_par->lwk_user=0;mumps_par->size_schur=0;mumps_par->lrhs=0; mumps_par->lredrhs=0; mumps_par->nrhs=0; mumps_par->nz_rhs=0; mumps_par->lsol_loc=0; mumps_par->nloc_rhs=0; mumps_par->lrhs_loc=0;
351 mumps_par->schur_mloc=0; mumps_par->schur_nloc=0; mumps_par->schur_lld=0; mumps_par->mblock=0; mumps_par->nblock=0; mumps_par->nprow=0; mumps_par->npcol=0;
353 ooc_tmpdirlen=(int)strlen(mumps_par->ooc_tmpdir);
354 ooc_prefixlen=(int)strlen(mumps_par->ooc_prefix);
355 write_problemlen=(int)strlen(mumps_par->write_problem);
356 save_dirlen =(int)strlen(mumps_par->save_dir);
357 save_prefixlen=(int)strlen(mumps_par->save_prefix);
363 if(ooc_tmpdirlen > 255){
366 if(ooc_prefixlen > 63){
369 if(write_problemlen > 255){
370 write_problemlen=255;
372 if(save_dirlen > 255){
375 if(save_prefixlen > 255){
382#define EXTRACT_POINTERS(component,dummypointer) \
383 if ( mumps_par-> component == 0) \
384 { component = dummypointer; \
385 component ## _avail = no; } \
387 { component = mumps_par-> component; \
388 component ## _avail = yes; }
413 if ( mumps_par->rowsca != 0 && mumps_par->rowsca_from_mumps == 0 )
416 rowsca = mumps_par-> rowsca;
429 if ( mumps_par->colsca != 0 && mumps_par->colsca_from_mumps == 0 )
432 colsca = mumps_par-> colsca;
459 icntl = mumps_par->icntl;
460 cntl = mumps_par->cntl;
461 keep = mumps_par->keep;
462 dkeep = mumps_par->dkeep;
463 keep8 = mumps_par->keep8;
464 info = mumps_par->info;
465 infog = mumps_par->infog;
466 rinfo = mumps_par->rinfo;
467 rinfog = mumps_par->rinfog;
468 for(i=0;i<ooc_tmpdirlen;i++){
469 ooc_tmpdir[i]=(int)mumps_par->ooc_tmpdir[i];
471 for(i=0;i<ooc_prefixlen;i++){
472 ooc_prefix[i]=(int)mumps_par->ooc_prefix[i];
474 for(i=0;i<write_problemlen;i++){
475 write_problem[i]=(int)mumps_par->write_problem[i];
477 for(i=0;i<save_dirlen;i++){
478 save_dir[i]=(int)mumps_par->save_dir[i];
480 for(i=0;i<save_prefixlen;i++){
481 save_prefix[i]=(int)mumps_par->save_prefix[i];
483 metis_options = mumps_par->metis_options;
485 MUMPS_F77(&(mumps_par->job), &(mumps_par->sym), &(mumps_par->par), &(mumps_par->comm_fortran),
486 &(mumps_par->n), &(mumps_par->nblk), icntl, cntl, keep, dkeep, keep8,
487 &(mumps_par->nz), &(mumps_par->nnz), irn, &irn_avail, jcn, &jcn_avail, a, &a_avail,
488 &(mumps_par->nz_loc), &(mumps_par->nnz_loc), irn_loc, &irn_loc_avail, jcn_loc, &jcn_loc_avail,
490 &(mumps_par->nelt), eltptr, &eltptr_avail, eltvar, &eltvar_avail, a_elt, &a_elt_avail, blkptr, &blkptr_avail, blkvar, &blkvar_avail,
491 perm_in, &perm_in_avail,
492 rhs, &rhs_avail, redrhs, &redrhs_avail, info, rinfo, infog, rinfog,
493 &(mumps_par->deficiency), &(mumps_par->lwk_user), &(mumps_par->size_schur), listvar_schur, &listvar_schur_avail, schur,
494 &schur_avail, wk_user, &wk_user_avail, colsca, &colsca_avail, rowsca, &rowsca_avail,
495 &(mumps_par->instance_number), &(mumps_par->nrhs), &(mumps_par->lrhs),
496 &(mumps_par->lredrhs),
497 rhs_sparse, &rhs_sparse_avail, sol_loc, &sol_loc_avail, rhs_loc, &rhs_loc_avail, irhs_sparse,
498 &irhs_sparse_avail, irhs_ptr, &irhs_ptr_avail, isol_loc,
499 &isol_loc_avail, irhs_loc, &irhs_loc_avail, &(mumps_par->nz_rhs), &(mumps_par->lsol_loc), &(mumps_par->lrhs_loc), &(mumps_par->nloc_rhs)
500 , &(mumps_par->schur_mloc)
501 , &(mumps_par->schur_nloc)
502 , &(mumps_par->schur_lld)
503 , &(mumps_par->mblock)
504 , &(mumps_par->nblock)
505 , &(mumps_par->nprow)
506 , &(mumps_par->npcol)
522 if ( mumps_par->job == -1 )
524 mumps_par->keep[499]=1;
545 if (rowsca_avail == no) {
549 mumps_par->rowsca_from_mumps=1;
552 if (colsca_avail == no) {
556 mumps_par->colsca_from_mumps=1;
562 for(i=0;i<ooc_tmpdirlen;i++){
563 mumps_par->ooc_tmpdir[i]=(char)ooc_tmpdir[i];
565 mumps_par->ooc_tmpdir[ooc_tmpdirlen]=
'\0';
566 for(i=0;i<ooc_prefixlen;i++){
567 mumps_par->ooc_prefix[i]=(char)ooc_prefix[i];
569 mumps_par->ooc_prefix[ooc_prefixlen]=
'\0';