Lines Matching refs:id

418 static inline MPI_Datatype MPIU_MUMPSREAL(const XMUMPS_STRUC_C *id)  in MPIU_MUMPSREAL()  argument
420 return id->precision == PETSC_PRECISION_DOUBLE ? MPI_DOUBLE : MPI_FLOAT; in MPIU_MUMPSREAL()
538 PetscCall(PetscCallMumps_Private(&mumps->id)); \
549 …PetscCallMPI(MPI_Bcast(mumps->id.infog, PETSC_STATIC_ARRAY_LENGTH(tmp.infog), MPIU_MUMPSINT, 0, mu…
550 …PetscCallMPI(MPI_Bcast(mumps->id.info, PETSC_STATIC_ARRAY_LENGTH(tmp.info), MPIU_MUMPSINT, 0, mump…
551 …PetscCallMPI(MPI_Bcast(mumps->id.rinfog, PETSC_STATIC_ARRAY_LENGTH(tmp.rinfog), MPIU_MUMPSREAL(&mu…
552 …PetscCallMPI(MPI_Bcast(mumps->id.rinfo, PETSC_STATIC_ARRAY_LENGTH(tmp.rinfo), MPIU_MUMPSREAL(&mump…
555 PetscCall(PetscCallMumps_Private(&mumps->id)); \
563 PetscCall(PetscCallMumps_Private(&mumps->id)); \
570 XMUMPS_STRUC_C id; member
653 PetscCall(PetscFree(mumps->id.listvar_schur)); in MatMumpsResetSchur_Private()
656 mumps->id.size_schur = 0; in MatMumpsResetSchur_Private()
657 mumps->id.schur_lld = 0; in MatMumpsResetSchur_Private()
658 if (mumps->id.internal_id) mumps->id.ICNTL(19) = 0; // sometimes, the inner id is yet built in MatMumpsResetSchur_Private()
674 …PetscCall(MatMumpsCastMumpsScalarArray(mumps->sizeredrhs, mumps->id.precision, mumps->id.redrhs, m… in MatMumpsSolveSchur_Private()
676 …PetscCall(MatCreateSeqDense(PETSC_COMM_SELF, mumps->id.size_schur, mumps->id.nrhs, mumps->redrhs, … in MatMumpsSolveSchur_Private()
683 …PetscCall(MatCreateSeqDense(PETSC_COMM_SELF, mumps->id.size_schur, mumps->id.nrhs, mumps->redrhs, … in MatMumpsSolveSchur_Private()
688 if (!mumps->id.ICNTL(9)) { /* transpose solve */ in MatMumpsSolveSchur_Private()
695 sizesol = mumps->id.nrhs * mumps->id.size_schur; in MatMumpsSolveSchur_Private()
701 …PetscCall(MatCreateSeqDense(PETSC_COMM_SELF, mumps->id.size_schur, mumps->id.nrhs, mumps->schur_so… in MatMumpsSolveSchur_Private()
707 if (!mumps->id.ICNTL(9)) { /* transpose solve */ in MatMumpsSolveSchur_Private()
723 …PetscCall(MatMumpsCastPetscScalarArray(mumps->sizeredrhs, xarray, mumps->id.precision, mumps->id.r… in MatMumpsSolveSchur_Private()
736 if (!mumps->id.ICNTL(19)) { /* do nothing when Schur complement has not been computed */ in MatMumpsHandleSchur_Private()
740 PetscInt sizeredrhs = mumps->id.nrhs * mumps->id.size_schur; in MatMumpsHandleSchur_Private()
742 if (!mumps->id.redrhs || sizeredrhs > mumps->sizeredrhs) { in MatMumpsHandleSchur_Private()
743 mumps->id.lredrhs = mumps->id.size_schur; in MatMumpsHandleSchur_Private()
744 mumps->sizeredrhs = mumps->id.nrhs * mumps->id.lredrhs; in MatMumpsHandleSchur_Private()
745 if (mumps->id.redrhs_len) PetscCall(PetscFree(mumps->id.redrhs)); in MatMumpsHandleSchur_Private()
748 …ETSC_FALSE, mumps->sizeredrhs, mumps->redrhs, mumps->id.precision, &mumps->id.redrhs_len, &mumps-> in MatMumpsHandleSchur_Private()
752 mumps->id.ICNTL(26) = 2; /* expansion phase */ in MatMumpsHandleSchur_Private()
754 …mps->id.INFOG(1) >= 0, PETSC_COMM_SELF, PETSC_ERR_LIB, "MUMPS error in solve: INFOG(1)=%d, INFO(2)… in MatMumpsHandleSchur_Private()
756 mumps->id.ICNTL(26) = -1; in MatMumpsHandleSchur_Private()
758 if (mumps->id.nrhs > 1) { in MatMumpsHandleSchur_Private()
759 if (mumps->id.redrhs_len) PetscCall(PetscFree(mumps->id.redrhs)); in MatMumpsHandleSchur_Private()
761 mumps->id.redrhs_len = 0; in MatMumpsHandleSchur_Private()
762 mumps->id.lredrhs = 0; in MatMumpsHandleSchur_Private()
1689 if (mumps->id.ICNTL(15) == 1) { in MatConvertToTriples_nest_xaij()
1698 PetscCall(PetscMUMPSIntCast(Mbs, &mumps->id.nblk)); in MatConvertToTriples_nest_xaij()
1699 PetscCall(PetscFree(mumps->id.blkptr)); in MatConvertToTriples_nest_xaij()
1700 PetscCall(PetscMalloc1(Mbs + 1, &mumps->id.blkptr)); in MatConvertToTriples_nest_xaij()
1701 mumps->id.blkptr[0] = 1; in MatConvertToTriples_nest_xaij()
1711 … = 0, start = mumps->id.blkptr[shift] + bs; j < ranges[i + 1] - ranges[i]; j += bs) PetscCall(Pets… in MatConvertToTriples_nest_xaij()
1716 } else mumps->id.ICNTL(15) = 0; in MatConvertToTriples_nest_xaij()
1765 PetscCall(PetscFree(mumps->id.isol_loc)); in MatDestroy_MUMPS()
1770 PetscCall(PetscFree(mumps->id.perm_in)); in MatDestroy_MUMPS()
1771 PetscCall(PetscFree(mumps->id.blkvar)); in MatDestroy_MUMPS()
1772 PetscCall(PetscFree(mumps->id.blkptr)); in MatDestroy_MUMPS()
1779 …if (mumps->id.job != JOB_NULL) { /* cannot call PetscMUMPS_c() if JOB_INIT has never been called f… in MatDestroy_MUMPS()
1780 mumps->id.job = JOB_END; in MatDestroy_MUMPS()
1782 …PetscCheck(mumps->id.INFOG(1) >= 0, PETSC_COMM_SELF, PETSC_ERR_LIB, "MUMPS error in termination: I… in MatDestroy_MUMPS()
1788 PetscCall(MatMumpsFreeInternalID(&mumps->id)); in MatDestroy_MUMPS()
1842 …umpsScalarArray(PETSC_TRUE, m * nrhs, array, mumps->id.precision, &mumps->id.rhs_loc_len, &mumps-> in MatMumpsSetUpDistRHSInfo()
1911 …RUE, mumps->nloc_rhs * nrhs, mumps->rhs_loc, mumps->id.precision, &mumps->id.rhs_loc_len, &mumps-> in MatMumpsSetUpDistRHSInfo()
1915 mumps->id.nrhs = (PetscMUMPSInt)nrhs; in MatMumpsSetUpDistRHSInfo()
1916 mumps->id.nloc_rhs = (PetscMUMPSInt)mumps->nloc_rhs; in MatMumpsSetUpDistRHSInfo()
1917 mumps->id.lrhs_loc = mumps->nloc_rhs; in MatMumpsSetUpDistRHSInfo()
1918 mumps->id.irhs_loc = mumps->irhs_loc; in MatMumpsSetUpDistRHSInfo()
1942 …d with singular matrix factor, INFOG(1)=%d, INFO(2)=%d\n", mumps->id.INFOG(1), mumps->id.INFO(2))); in MatSolve_MUMPS()
1946 mumps->id.nrhs = 1; in MatSolve_MUMPS()
1949 mumps->id.ICNTL(20) = 10; /* dense distributed RHS, need to set rhs_loc[], irhs_loc[] */ in MatSolve_MUMPS()
1953 mumps->id.ICNTL(20) = 0; /* dense centralized RHS; Scatter b into a sequential b_seq vector*/ in MatSolve_MUMPS()
1958 …Array(PETSC_TRUE, mumps->b_seq->map->n, array, mumps->id.precision, &mumps->id.rhs_len, &mumps->id in MatSolve_MUMPS()
1962 mumps->id.ICNTL(20) = 0; in MatSolve_MUMPS()
1965 …MumpsScalarArray(PETSC_TRUE, x->map->n, array, mumps->id.precision, &mumps->id.rhs_len, &mumps->id in MatSolve_MUMPS()
1975 if (mumps->id.size_schur > 0) { in MatSolve_MUMPS()
1977 if (mumps->id.ICNTL(26) < 0 || mumps->id.ICNTL(26) > 2) { in MatSolve_MUMPS()
1980 mumps->id.ICNTL(26) = 1; /* condensation phase */ in MatSolve_MUMPS()
1981 } else if (mumps->id.ICNTL(26) == 1) PetscCall(MatMumpsHandleSchur_Private(A, PETSC_FALSE)); in MatSolve_MUMPS()
1984 mumps->id.job = JOB_SOLVE; in MatSolve_MUMPS()
1986 …mps->id.INFOG(1) >= 0, PETSC_COMM_SELF, PETSC_ERR_LIB, "MUMPS error in solve: INFOG(1)=%d, INFO(2)… in MatSolve_MUMPS()
1990 else if (mumps->id.ICNTL(26) == 1) { // condense the right hand side in MatSolve_MUMPS()
1992 …for (i = 0; i < mumps->id.size_schur; ++i) array[mumps->id.listvar_schur[i] - 1] = ID_FIELD_GET(mu… in MatSolve_MUMPS()
1996 if (mumps->scat_sol && mumps->ICNTL9_pre != mumps->id.ICNTL(9)) { in MatSolve_MUMPS()
2002 PetscCall(ISCreateStride(PETSC_COMM_SELF, mumps->id.lsol_loc, 0, 1, &is_iden)); /* from */ in MatSolve_MUMPS()
2003 PetscCall(PetscMalloc1(mumps->id.lsol_loc, &isol2_loc)); in MatSolve_MUMPS()
2004 …for (i = 0; i < mumps->id.lsol_loc; i++) isol2_loc[i] = mumps->id.isol_loc[i] - 1; … in MatSolve_MUMPS()
2005 …PetscCall(ISCreateGeneral(PETSC_COMM_SELF, mumps->id.lsol_loc, isol2_loc, PETSC_OWN_POINTER, &is_p… in MatSolve_MUMPS()
2009 mumps->ICNTL9_pre = mumps->id.ICNTL(9); /* save current value of id.ICNTL(9) */ in MatSolve_MUMPS()
2014 …PetscCall(MatMumpsCastMumpsScalarArray(mumps->id.lsol_loc, mumps->id.precision, mumps->id.sol_loc,… in MatSolve_MUMPS()
2026 PetscCall(MatMumpsCastMumpsScalarArray(x->map->n, mumps->id.precision, mumps->id.rhs, array)); in MatSolve_MUMPS()
2030 …cCall(PetscLogFlops(2.0 * PetscMax(0, (mumps->id.INFO(28) >= 0 ? mumps->id.INFO(28) : -1000000 * m… in MatSolve_MUMPS()
2037 const PetscMUMPSInt value = mumps->id.ICNTL(9); in MatSolveTranspose_MUMPS()
2040 mumps->id.ICNTL(9) = 0; in MatSolveTranspose_MUMPS()
2042 mumps->id.ICNTL(9) = value; in MatSolveTranspose_MUMPS()
2078 mumps->id.ICNTL(20) = 0; /* dense RHS */ in MatMatSolve_MUMPS()
2087 mumps->id.ICNTL(20) = 1; /* sparse RHS */ in MatMatSolve_MUMPS()
2092 mumps->id.nrhs = (PetscMUMPSInt)nrhs; in MatMatSolve_MUMPS()
2093 mumps->id.lrhs = (PetscMUMPSInt)M; in MatMatSolve_MUMPS()
2110 …ll(PetscMUMPSIntCSRCast(mumps, spnr, ia, ja, &mumps->id.irhs_ptr, &mumps->id.irhs_sparse, &mumps-> in MatMatSolve_MUMPS()
2111 …MakeMumpsScalarArray(PETSC_TRUE, mumps->id.nz_rhs, aa, mumps->id.precision, &mumps->id.rhs_sparse_… in MatMatSolve_MUMPS()
2113 …umpsMakeMumpsScalarArray(denseB, nrhsM, array, mumps->id.precision, &mumps->id.rhs_len, &mumps->id in MatMatSolve_MUMPS()
2116 if (mumps->id.size_schur > 0) { in MatMatSolve_MUMPS()
2117 if (mumps->id.ICNTL(26) < 0 || mumps->id.ICNTL(26) > 2) { in MatMatSolve_MUMPS()
2120 …mumps->id.ICNTL(26) = 1; /* condensation phase, i.e, to solve id.re… in MatMatSolve_MUMPS()
2121 } else if (mumps->id.ICNTL(26) == 1) PetscCall(MatMumpsHandleSchur_Private(A, PETSC_FALSE)); in MatMatSolve_MUMPS()
2124 mumps->id.job = JOB_SOLVE; in MatMatSolve_MUMPS()
2126 …mps->id.INFOG(1) >= 0, PETSC_COMM_SELF, PETSC_ERR_LIB, "MUMPS error in solve: INFOG(1)=%d, INFO(2)… in MatMatSolve_MUMPS()
2130 else if (mumps->id.ICNTL(26) == 1) { // condense the right hand side in MatMatSolve_MUMPS()
2133 …i = 0; i < mumps->id.size_schur; ++i) array[mumps->id.listvar_schur[i] - 1 + j * M] = ID_FIELD_GET… in MatMatSolve_MUMPS()
2143 PetscCall(MatMumpsCastMumpsScalarArray(nrhsM, mumps->id.precision, mumps->id.rhs, array)); in MatMatSolve_MUMPS()
2149 …PetscCheck(!mumps->id.ICNTL(19), PetscObjectComm((PetscObject)A), PETSC_ERR_SUP, "Parallel Schur c… in MatMatSolve_MUMPS()
2152 …isol_loc_save = mumps->id.isol_loc; /* save these, as we want to reuse them in MatSolve() … in MatMatSolve_MUMPS()
2153 sol_loc_save = mumps->id.sol_loc; in MatMatSolve_MUMPS()
2154 sol_loc_len_save = mumps->id.sol_loc_len; in MatMatSolve_MUMPS()
2155 mumps->id.isol_loc = NULL; // an init state in MatMatSolve_MUMPS()
2156 mumps->id.sol_loc = NULL; in MatMatSolve_MUMPS()
2157 mumps->id.sol_loc_len = 0; in MatMatSolve_MUMPS()
2159 lsol_loc = mumps->id.lsol_loc; in MatMatSolve_MUMPS()
2162 …ScalarArray(PETSC_FALSE, nlsol_loc, sol_loc, mumps->id.precision, &mumps->id.sol_loc_len, &mumps-> in MatMatSolve_MUMPS()
2163 mumps->id.isol_loc = isol_loc; in MatMatSolve_MUMPS()
2169 mumps->id.ICNTL(20) = 10; /* dense distributed RHS */ in MatMatSolve_MUMPS()
2176 mumps->id.ICNTL(20) = 0; /* dense centralized RHS */ in MatMatSolve_MUMPS()
2218 …akeMumpsScalarArray(PETSC_TRUE, nrhsM, barray, mumps->id.precision, &mumps->id.rhs_len, &mumps->id in MatMatSolve_MUMPS()
2235 …ll(PetscMUMPSIntCSRCast(mumps, spnr, ia, ja, &mumps->id.irhs_ptr, &mumps->id.irhs_sparse, &mumps-> in MatMatSolve_MUMPS()
2236 …C_TRUE, ((Mat_SeqAIJ *)b->A->data)->nz, aa, mumps->id.precision, &mumps->id.rhs_sparse_len, &mumps… in MatMatSolve_MUMPS()
2238 mumps->id.irhs_ptr = NULL; in MatMatSolve_MUMPS()
2239 mumps->id.irhs_sparse = NULL; in MatMatSolve_MUMPS()
2240 mumps->id.nz_rhs = 0; in MatMatSolve_MUMPS()
2241 if (mumps->id.rhs_sparse_len) { in MatMatSolve_MUMPS()
2242 PetscCall(PetscFree(mumps->id.rhs_sparse)); in MatMatSolve_MUMPS()
2243 mumps->id.rhs_sparse_len = 0; in MatMatSolve_MUMPS()
2249 mumps->id.job = JOB_SOLVE; in MatMatSolve_MUMPS()
2251 …PetscCheck(mumps->id.INFOG(1) >= 0, PETSC_COMM_SELF, PETSC_ERR_LIB, "MUMPS error in solve: INFOG(1… in MatMatSolve_MUMPS()
2279 …PetscCall(MatMumpsCastMumpsScalarArray(nlsol_loc, mumps->id.precision, mumps->id.sol_loc, sol_loc)… in MatMatSolve_MUMPS()
2287 if (mumps->id.sol_loc_len) { // in case we allocated intermediate buffers in MatMatSolve_MUMPS()
2288 mumps->id.sol_loc_len = 0; in MatMatSolve_MUMPS()
2289 PetscCall(PetscFree(mumps->id.sol_loc)); in MatMatSolve_MUMPS()
2293 mumps->id.sol_loc = sol_loc_save; in MatMatSolve_MUMPS()
2294 mumps->id.sol_loc_len = sol_loc_len_save; in MatMatSolve_MUMPS()
2295 mumps->id.isol_loc = isol_loc_save; in MatMatSolve_MUMPS()
2315 …etscLogFlops(nrhs * PetscMax(0, 2.0 * (mumps->id.INFO(28) >= 0 ? mumps->id.INFO(28) : -1000000 * m… in MatMatSolve_MUMPS()
2322 const PetscMUMPSInt value = mumps->id.ICNTL(9); in MatMatSolveTranspose_MUMPS()
2325 mumps->id.ICNTL(9) = 0; in MatMatSolveTranspose_MUMPS()
2327 mumps->id.ICNTL(9) = value; in MatMatSolveTranspose_MUMPS()
2365id.ICNTL(13) == 1, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONG, "ICNTL(13)=%d. -mat_mumps_icntl_13 must b… in MatGetInertia_SBAIJMUMPS()
2367 if (nneg) *nneg = mumps->id.INFOG(12); in MatGetInertia_SBAIJMUMPS()
2369 …PetscCheck(mumps->id.ICNTL(24) == 1, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONG, "-mat_mumps_icntl_24 mu… in MatGetInertia_SBAIJMUMPS()
2370 if (nzero) *nzero = mumps->id.INFOG(28); in MatGetInertia_SBAIJMUMPS()
2371 if (npos) *npos = F->rmap->N - (mumps->id.INFOG(12) + mumps->id.INFOG(28)); in MatGetInertia_SBAIJMUMPS()
2502 if (mumps->id.INFOG(1) < 0 && !(mumps->id.INFOG(1) == -16 && mumps->id.INFOG(1) == 0)) { in MatFactorNumeric_MUMPS()
2503id.INFOG(1) == -6) PetscCall(PetscInfo(A, "MatFactorNumeric is called with singular matrix structu… in MatFactorNumeric_MUMPS()
2504 …ed after analysis phase fails, INFOG(1)=%d, INFO(2)=%d\n", mumps->id.INFOG(1), mumps->id.INFO(2))); in MatFactorNumeric_MUMPS()
2512 mumps->id.job = JOB_FACTNUMERIC; in MatFactorNumeric_MUMPS()
2513 if (!mumps->id.ICNTL(18)) { /* A is centralized */ in MatFactorNumeric_MUMPS()
2514 …ScalarArray(PETSC_TRUE, mumps->nnz, mumps->val, mumps->id.precision, &mumps->id.a_len, &mumps->id.… in MatFactorNumeric_MUMPS()
2516 …alarArray(PETSC_TRUE, mumps->nnz, mumps->val, mumps->id.precision, &mumps->id.a_loc_len, &mumps->i… in MatFactorNumeric_MUMPS()
2521 MUMPS_INT size = mumps->id.size_schur; in MatFactorNumeric_MUMPS()
2523 …sScalarArray(PETSC_FALSE, size * size, array, mumps->id.precision, &mumps->id.schur_len, &mumps->i… in MatFactorNumeric_MUMPS()
2527 …if (mumps->id.ICNTL(22)) PetscCall(PetscStrncpy(mumps->id.ooc_prefix, ((PetscObject)F)->prefix, si… in MatFactorNumeric_MUMPS()
2530 if (mumps->id.INFOG(1) < 0) { in MatFactorNumeric_MUMPS()
2531 …cal factorization: INFOG(1)=%d, INFO(2)=%d " MUMPS_MANUALS, mumps->id.INFOG(1), mumps->id.INFO(2)); in MatFactorNumeric_MUMPS()
2532 if (mumps->id.INFOG(1) == -10) { in MatFactorNumeric_MUMPS()
2533 …atrix is numerically singular, INFOG(1)=%d, INFO(2)=%d\n", mumps->id.INFOG(1), mumps->id.INFO(2))); in MatFactorNumeric_MUMPS()
2535 } else if (mumps->id.INFOG(1) == -13) { in MatFactorNumeric_MUMPS()
2536 …OG(1)=%d, cannot allocate required memory %d megabytes\n", mumps->id.INFOG(1), mumps->id.INFO(2))); in MatFactorNumeric_MUMPS()
2538 …} else if (mumps->id.INFOG(1) == -8 || mumps->id.INFOG(1) == -9 || (-16 < mumps->id.INFOG(1) && mu… in MatFactorNumeric_MUMPS()
2539 …tion: INFOG(1)=%d, INFO(2)=%d, problem with work array\n", mumps->id.INFOG(1), mumps->id.INFO(2))); in MatFactorNumeric_MUMPS()
2542 …or in numerical factorization: INFOG(1)=%d, INFO(2)=%d\n", mumps->id.INFOG(1), mumps->id.INFO(2))); in MatFactorNumeric_MUMPS()
2546 … || mumps->id.ICNTL(16) <= 0, PETSC_COMM_SELF, PETSC_ERR_LIB, "MUMPS error in numerical factorizat… in MatFactorNumeric_MUMPS()
2556 …cCall(MatMumpsCastMumpsScalarArray(mumps->id.size_schur * mumps->id.size_schur, mumps->id.precisio… in MatFactorNumeric_MUMPS()
2558 if (mumps->id.ICNTL(19) == 1) { /* stored by rows */ in MatFactorNumeric_MUMPS()
2559 mumps->id.ICNTL(19) = 2; in MatFactorNumeric_MUMPS()
2566 if (!mumps->sym && mumps->id.ICNTL(19) && mumps->id.ICNTL(19) != 1) mumps->id.ICNTL(19) = 3; in MatFactorNumeric_MUMPS()
2568 if (!mumps->is_omp_master) mumps->id.INFO(23) = 0; in MatFactorNumeric_MUMPS()
2583 PetscCall(PetscFree(mumps->id.isol_loc)); in MatFactorNumeric_MUMPS()
2586 lsol_loc = mumps->id.INFO(23); /* length of sol_loc */ in MatFactorNumeric_MUMPS()
2587 PetscCall(PetscMalloc1(lsol_loc, &mumps->id.isol_loc)); in MatFactorNumeric_MUMPS()
2590 …mpsScalarArray(PETSC_FALSE, lsol_loc, array, mumps->id.precision, &mumps->id.sol_loc_len, &mumps-> in MatFactorNumeric_MUMPS()
2592 mumps->id.lsol_loc = (PetscMUMPSInt)lsol_loc; in MatFactorNumeric_MUMPS()
2594 PetscCall(PetscLogFlops((double)ID_RINFO_GET(mumps->id, 2))); in MatFactorNumeric_MUMPS()
2606 …PetscBool schur = mumps->id.icntl ? (PetscBool)(mumps->id.ICNTL(26) == -1) : (PetscBool)(mumps… in MatSetFromOptions_MUMPS()
2611 if (mumps->id.job == JOB_NULL) { /* MatSetFromOptions_MUMPS() has never been called before */ in MatSetFromOptions_MUMPS()
2653 mumps->id.comm_fortran = MPI_Comm_c2f(mumps->mumps_comm); in MatSetFromOptions_MUMPS()
2654 mumps->id.job = JOB_INIT; in MatSetFromOptions_MUMPS()
2655 mumps->id.par = 1; /* host participates factorizaton and solve */ in MatSetFromOptions_MUMPS()
2656 mumps->id.sym = mumps->sym; in MatSetFromOptions_MUMPS()
2658 size = mumps->id.size_schur; in MatSetFromOptions_MUMPS()
2659 arr = mumps->id.schur; in MatSetFromOptions_MUMPS()
2660 listvar_schur = mumps->id.listvar_schur; in MatSetFromOptions_MUMPS()
2661 nblk = mumps->id.nblk; in MatSetFromOptions_MUMPS()
2662 blkvar = mumps->id.blkvar; in MatSetFromOptions_MUMPS()
2663 blkptr = mumps->id.blkptr; in MatSetFromOptions_MUMPS()
2673 PetscCall(MatMumpsAllocateInternalID(&mumps->id, precision)); in MatSetFromOptions_MUMPS()
2676 …PetscCheck(mumps->id.INFOG(1) >= 0, PETSC_COMM_SELF, PETSC_ERR_LIB, "MUMPS error: INFOG(1)=%d " MU… in MatSetFromOptions_MUMPS()
2679 mumps->id.ICNTL(3) = 0; in MatSetFromOptions_MUMPS()
2680 mumps->id.ICNTL(4) = 0; in MatSetFromOptions_MUMPS()
2682 mumps->id.ICNTL(18) = 0; /* centralized assembled matrix input */ in MatSetFromOptions_MUMPS()
2683 mumps->id.ICNTL(7) = 7; /* automatic choice of ordering done by the package */ in MatSetFromOptions_MUMPS()
2685 mumps->id.ICNTL(18) = 3; /* distributed assembled matrix input */ in MatSetFromOptions_MUMPS()
2686 mumps->id.ICNTL(21) = 1; /* distributed solution */ in MatSetFromOptions_MUMPS()
2689 mumps->id.ICNTL(15) = 1; in MatSetFromOptions_MUMPS()
2690 mumps->id.nblk = nblk; in MatSetFromOptions_MUMPS()
2691 mumps->id.blkvar = blkvar; in MatSetFromOptions_MUMPS()
2692 mumps->id.blkptr = blkptr; in MatSetFromOptions_MUMPS()
2693 } else mumps->id.ICNTL(15) = 0; in MatSetFromOptions_MUMPS()
2696 …for (icntl = 0; icntl < nICNTL_pre; ++icntl) mumps->id.ICNTL(mumps->ICNTL_pre[1 + 2 * icntl]) = mu… in MatSetFromOptions_MUMPS()
2697 …for (icntl = 0; icntl < nCNTL_pre; ++icntl) ID_CNTL_SET(mumps->id, (PetscInt)mumps->CNTL_pre[1 + 2… in MatSetFromOptions_MUMPS()
2703 mumps->id.size_schur = size; in MatSetFromOptions_MUMPS()
2704 mumps->id.schur_lld = size; in MatSetFromOptions_MUMPS()
2705 mumps->id.schur = arr; in MatSetFromOptions_MUMPS()
2706 mumps->id.listvar_schur = listvar_schur; in MatSetFromOptions_MUMPS()
2710 …mumps->id.ICNTL(19) = 1; … in MatSetFromOptions_MUMPS()
2711 …gs = mumps->myid ? (mumps->id.size_schur ? PETSC_FALSE : PETSC_TRUE) : PETSC_TRUE… in MatSetFromOptions_MUMPS()
2716 mumps->id.ICNTL(19) = 3; /* MUMPS returns full matrix */ in MatSetFromOptions_MUMPS()
2718 mumps->id.ICNTL(19) = 2; /* MUMPS returns lower triangular part */ in MatSetFromOptions_MUMPS()
2721 mumps->id.ICNTL(26) = -1; in MatSetFromOptions_MUMPS()
2727 PetscCallMPI(MPI_Bcast(mumps->id.icntl, 40, MPI_INT, 0, mumps->omp_comm)); in MatSetFromOptions_MUMPS()
2728 PetscCallMPI(MPI_Bcast(mumps->id.cntl, 15, MPIU_MUMPSREAL(&mumps->id), 0, mumps->omp_comm)); in MatSetFromOptions_MUMPS()
2733 …mps_icntl_1", "ICNTL(1): output stream for error messages", "None", mumps->id.ICNTL(1), &icntl, &f… in MatSetFromOptions_MUMPS()
2734 if (flg) mumps->id.ICNTL(1) = icntl; in MatSetFromOptions_MUMPS()
2735 …t stream for diagnostic printing, statistics, and warning", "None", mumps->id.ICNTL(2), &icntl, &f… in MatSetFromOptions_MUMPS()
2736 if (flg) mumps->id.ICNTL(2) = icntl; in MatSetFromOptions_MUMPS()
2737 …tput stream for global information, collected on the host", "None", mumps->id.ICNTL(3), &icntl, &f… in MatSetFromOptions_MUMPS()
2738 if (flg) mumps->id.ICNTL(3) = icntl; in MatSetFromOptions_MUMPS()
2740 …mat_mumps_icntl_4", "ICNTL(4): level of printing (0 to 4)", "None", mumps->id.ICNTL(4), &icntl, &f… in MatSetFromOptions_MUMPS()
2741 if (flg) mumps->id.ICNTL(4) = icntl; in MatSetFromOptions_MUMPS()
2742 …if (mumps->id.ICNTL(4) || PetscLogPrintInfo) mumps->id.ICNTL(3) = 6; /* resume MUMPS default id.IC… in MatSetFromOptions_MUMPS()
2744 … to a zero-free diagonal and/or scale the matrix (0 to 7)", "None", mumps->id.ICNTL(6), &icntl, &f… in MatSetFromOptions_MUMPS()
2745 if (flg) mumps->id.ICNTL(6) = icntl; in MatSetFromOptions_MUMPS()
2747 …F, 3=Scotch, 4=PORD, 5=Metis, 6=QAMD, and 7=auto(default)", "None", mumps->id.ICNTL(7), &icntl, &f… in MatSetFromOptions_MUMPS()
2750 mumps->id.ICNTL(7) = icntl; in MatSetFromOptions_MUMPS()
2753 …8", "ICNTL(8): scaling strategy (-2 to 8 or 77)", "None", mumps->id.ICNTL(8), &mumps->id.ICNTL(8),… in MatSetFromOptions_MUMPS()
2755 …_icntl_10", "ICNTL(10): max num of refinements", "None", mumps->id.ICNTL(10), &mumps->id.ICNTL(10)… in MatSetFromOptions_MUMPS()
2756 …s related to an error analysis (via -ksp_view)", "None", mumps->id.ICNTL(11), &mumps->id.ICNTL(11)… in MatSetFromOptions_MUMPS()
2757 …ering strategy for symmetric matrices (0 to 3)", "None", mumps->id.ICNTL(12), &mumps->id.ICNTL(12)… in MatSetFromOptions_MUMPS()
2758 …root node (enable ScaLAPACK) and its splitting", "None", mumps->id.ICNTL(13), &mumps->id.ICNTL(13)… in MatSetFromOptions_MUMPS()
2759 …entage increase in the estimated working space", "None", mumps->id.ICNTL(14), &mumps->id.ICNTL(14)… in MatSetFromOptions_MUMPS()
2761 if (rbs == cbs && rbs > 1) mumps->id.ICNTL(15) = (PetscMUMPSInt)-rbs; in MatSetFromOptions_MUMPS()
2762 …the input matrix resulting from a block format", "None", mumps->id.ICNTL(15), &mumps->id.ICNTL(15)… in MatSetFromOptions_MUMPS()
2764 …if (mumps->id.ICNTL(15) < 0) PetscCheck((-mumps->id.ICNTL(15) % cbs == 0) && (-mumps->id.ICNTL(15)… in MatSetFromOptions_MUMPS()
2765 else if (mumps->id.ICNTL(15) > 0) { in MatSetFromOptions_MUMPS()
2798 …19", "ICNTL(19): computes the Schur complement", "None", mumps->id.ICNTL(19), &mumps->id.ICNTL(19)… in MatSetFromOptions_MUMPS()
2799 if (mumps->id.ICNTL(19) <= 0 || mumps->id.ICNTL(19) > 3) { /* reset any Schur data (if any) */ in MatSetFromOptions_MUMPS()
2822 …e/out-of-core factorization and solve (0 or 1)", "None", mumps->id.ICNTL(22), &mumps->id.ICNTL(22)… in MatSetFromOptions_MUMPS()
2823 …if (flg && mumps->id.ICNTL(22) != 1) mumps->id.ICNTL(22) = 0; // MUMPS treats values other than 1 … in MatSetFromOptions_MUMPS()
2824 if (mumps->id.ICNTL(22)) { in MatSetFromOptions_MUMPS()
2827 …-mat_mumps_ooc_tmpdir", "Out of core directory", "None", mumps->id.ooc_tmpdir, mumps->id.ooc_tmpdi… in MatSetFromOptions_MUMPS()
2829 …ng memory (MB) that can allocate per processor", "None", mumps->id.ICNTL(23), &mumps->id.ICNTL(23)… in MatSetFromOptions_MUMPS()
2830 …NTL(24): detection of null pivot rows (0 or 1)", "None", mumps->id.ICNTL(24), &mumps->id.ICNTL(24)… in MatSetFromOptions_MUMPS()
2831 …if (mumps->id.ICNTL(24)) mumps->id.ICNTL(13) = 1; /* turn-off ScaLAPACK to help with the correct d… in MatSetFromOptions_MUMPS()
2833 …n of a deficient matrix and a null space basis", "None", mumps->id.ICNTL(25), &mumps->id.ICNTL(25)… in MatSetFromOptions_MUMPS()
2834 …he solution phase if a Schur complement matrix", "None", mumps->id.ICNTL(26), &mumps->id.ICNTL(26)… in MatSetFromOptions_MUMPS()
2835 …he blocking size for multiple right-hand sides", "None", mumps->id.ICNTL(27), &mumps->id.ICNTL(27)… in MatSetFromOptions_MUMPS()
2836 …2 for parallel analysis and ICNTL(29) ordering", "None", mumps->id.ICNTL(28), &mumps->id.ICNTL(28)… in MatSetFromOptions_MUMPS()
2837 …: parallel ordering 1 = ptscotch, 2 = parmetis", "None", mumps->id.ICNTL(29), &mumps->id.ICNTL(29)… in MatSetFromOptions_MUMPS()
2839 … factors may be discarded during factorization", "None", mumps->id.ICNTL(31), &mumps->id.ICNTL(31)… in MatSetFromOptions_MUMPS()
2841 …mps_icntl_33", "ICNTL(33): compute determinant", "None", mumps->id.ICNTL(33), &mumps->id.ICNTL(33)… in MatSetFromOptions_MUMPS()
2842 …vates Block Low Rank (BLR) based factorization", "None", mumps->id.ICNTL(35), &mumps->id.ICNTL(35)… in MatSetFromOptions_MUMPS()
2843 …ICNTL(36): choice of BLR factorization variant", "None", mumps->id.ICNTL(36), &mumps->id.ICNTL(36)… in MatSetFromOptions_MUMPS()
2844 …): compression of the contribution blocks (CB)", "None", mumps->id.ICNTL(37), &mumps->id.ICNTL(37)… in MatSetFromOptions_MUMPS()
2845 …imated compression rate of LU factors with BLR", "None", mumps->id.ICNTL(38), &mumps->id.ICNTL(38)… in MatSetFromOptions_MUMPS()
2846 …CNTL(48): multithreading with tree parallelism", "None", mumps->id.ICNTL(48), &mumps->id.ICNTL(48)… in MatSetFromOptions_MUMPS()
2847 …ct workarray at the end of factorization phase", "None", mumps->id.ICNTL(49), &mumps->id.ICNTL(49)… in MatSetFromOptions_MUMPS()
2848 …): postponing and rank-revealing factorization", "None", mumps->id.ICNTL(56), &mumps->id.ICNTL(56)… in MatSetFromOptions_MUMPS()
2849 …8): defines options for symbolic factorization", "None", mumps->id.ICNTL(58), &mumps->id.ICNTL(58)… in MatSetFromOptions_MUMPS()
2851 …CNTL(1): relative pivoting threshold", "None", (PetscReal)ID_CNTL_GET(mumps->id, 1), &cntl, &flg)); in MatSetFromOptions_MUMPS()
2852 if (flg) ID_CNTL_SET(mumps->id, 1, cntl); in MatSetFromOptions_MUMPS()
2853 …2): stopping criterion of refinement", "None", (PetscReal)ID_CNTL_GET(mumps->id, 2), &cntl, &flg)); in MatSetFromOptions_MUMPS()
2854 if (flg) ID_CNTL_SET(mumps->id, 2, cntl); in MatSetFromOptions_MUMPS()
2855 …CNTL(3): absolute pivoting threshold", "None", (PetscReal)ID_CNTL_GET(mumps->id, 3), &cntl, &flg)); in MatSetFromOptions_MUMPS()
2856 if (flg) ID_CNTL_SET(mumps->id, 3, cntl); in MatSetFromOptions_MUMPS()
2857 … "CNTL(4): value for static pivoting", "None", (PetscReal)ID_CNTL_GET(mumps->id, 4), &cntl, &flg)); in MatSetFromOptions_MUMPS()
2858 if (flg) ID_CNTL_SET(mumps->id, 4, cntl); in MatSetFromOptions_MUMPS()
2859 …, "CNTL(5): fixation for null pivots", "None", (PetscReal)ID_CNTL_GET(mumps->id, 5), &cntl, &flg)); in MatSetFromOptions_MUMPS()
2860 if (flg) ID_CNTL_SET(mumps->id, 5, cntl); in MatSetFromOptions_MUMPS()
2861 …: dropping parameter used during BLR", "None", (PetscReal)ID_CNTL_GET(mumps->id, 7), &cntl, &flg)); in MatSetFromOptions_MUMPS()
2862 if (flg) ID_CNTL_SET(mumps->id, 7, cntl); in MatSetFromOptions_MUMPS()
2881 if (mumps->id.INFOG(1) < 0) { in MatFactorSymbolic_MUMPS_ReportIfError()
2882 …MM_SELF, PETSC_ERR_LIB, "MUMPS error in analysis: INFOG(1)=%d " MUMPS_MANUALS, mumps->id.INFOG(1)); in MatFactorSymbolic_MUMPS_ReportIfError()
2883 if (mumps->id.INFOG(1) == -6) { in MatFactorSymbolic_MUMPS_ReportIfError()
2884 … analysis: matrix is singular, INFOG(1)=%d, INFO(2)=%d\n", mumps->id.INFOG(1), mumps->id.INFO(2))); in MatFactorSymbolic_MUMPS_ReportIfError()
2886 } else if (mumps->id.INFOG(1) == -5 || mumps->id.INFOG(1) == -7) { in MatFactorSymbolic_MUMPS_ReportIfError()
2887 …ysis: problem with work array, INFOG(1)=%d, INFO(2)=%d\n", mumps->id.INFOG(1), mumps->id.INFO(2))); in MatFactorSymbolic_MUMPS_ReportIfError()
2890 …in analysis: INFOG(1)=%d, INFO(2)=%d " MUMPS_MANUALS "\n", mumps->id.INFOG(1), mumps->id.INFO(2))); in MatFactorSymbolic_MUMPS_ReportIfError()
2894 if (!mumps->id.n) F->factorerrortype = MAT_FACTOR_NOERROR; in MatFactorSymbolic_MUMPS_ReportIfError()
2917 mumps->id.job = JOB_FACTSYMBOLIC; in MatLUFactorSymbolic_AIJMUMPS()
2918 PetscCall(PetscMUMPSIntCast(M, &mumps->id.n)); in MatLUFactorSymbolic_AIJMUMPS()
2919 switch (mumps->id.ICNTL(18)) { in MatLUFactorSymbolic_AIJMUMPS()
2922 mumps->id.nnz = mumps->nnz; in MatLUFactorSymbolic_AIJMUMPS()
2923 mumps->id.irn = mumps->irn; in MatLUFactorSymbolic_AIJMUMPS()
2924 mumps->id.jcn = mumps->jcn; in MatLUFactorSymbolic_AIJMUMPS()
2925id.ICNTL(6) && mumps->id.ICNTL(6) < 7) PetscCall(MatMumpsMakeMumpsScalarArray(PETSC_TRUE, mumps->n… in MatLUFactorSymbolic_AIJMUMPS()
2926 if (r && mumps->id.ICNTL(7) == 7) { in MatLUFactorSymbolic_AIJMUMPS()
2927 mumps->id.ICNTL(7) = 1; in MatLUFactorSymbolic_AIJMUMPS()
2932 PetscCall(PetscMalloc1(M, &mumps->id.perm_in)); in MatLUFactorSymbolic_AIJMUMPS()
2934 …for (i = 0; i < M; i++) PetscCall(PetscMUMPSIntCast(idx[i] + 1, &mumps->id.perm_in[i])); /* perm_i… in MatLUFactorSymbolic_AIJMUMPS()
2941 mumps->id.nnz_loc = mumps->nnz; in MatLUFactorSymbolic_AIJMUMPS()
2942 mumps->id.irn_loc = mumps->irn; in MatLUFactorSymbolic_AIJMUMPS()
2943 mumps->id.jcn_loc = mumps->jcn; in MatLUFactorSymbolic_AIJMUMPS()
2944id.ICNTL(6) && mumps->id.ICNTL(6) < 7) PetscCall(MatMumpsMakeMumpsScalarArray(PETSC_TRUE, mumps->n… in MatLUFactorSymbolic_AIJMUMPS()
2986 mumps->id.job = JOB_FACTSYMBOLIC; in MatLUFactorSymbolic_BAIJMUMPS()
2987 PetscCall(PetscMUMPSIntCast(M, &mumps->id.n)); in MatLUFactorSymbolic_BAIJMUMPS()
2988 switch (mumps->id.ICNTL(18)) { in MatLUFactorSymbolic_BAIJMUMPS()
2991 mumps->id.nnz = mumps->nnz; in MatLUFactorSymbolic_BAIJMUMPS()
2992 mumps->id.irn = mumps->irn; in MatLUFactorSymbolic_BAIJMUMPS()
2993 mumps->id.jcn = mumps->jcn; in MatLUFactorSymbolic_BAIJMUMPS()
2994id.ICNTL(6) && mumps->id.ICNTL(6) < 7) PetscCall(MatMumpsMakeMumpsScalarArray(PETSC_TRUE, mumps->n… in MatLUFactorSymbolic_BAIJMUMPS()
2998 mumps->id.nnz_loc = mumps->nnz; in MatLUFactorSymbolic_BAIJMUMPS()
2999 mumps->id.irn_loc = mumps->irn; in MatLUFactorSymbolic_BAIJMUMPS()
3000 mumps->id.jcn_loc = mumps->jcn; in MatLUFactorSymbolic_BAIJMUMPS()
3001id.ICNTL(6) && mumps->id.ICNTL(6) < 7) PetscCall(MatMumpsMakeMumpsScalarArray(PETSC_TRUE, mumps->n… in MatLUFactorSymbolic_BAIJMUMPS()
3041 mumps->id.job = JOB_FACTSYMBOLIC; in MatCholeskyFactorSymbolic_MUMPS()
3042 PetscCall(PetscMUMPSIntCast(M, &mumps->id.n)); in MatCholeskyFactorSymbolic_MUMPS()
3043 switch (mumps->id.ICNTL(18)) { in MatCholeskyFactorSymbolic_MUMPS()
3046 mumps->id.nnz = mumps->nnz; in MatCholeskyFactorSymbolic_MUMPS()
3047 mumps->id.irn = mumps->irn; in MatCholeskyFactorSymbolic_MUMPS()
3048 mumps->id.jcn = mumps->jcn; in MatCholeskyFactorSymbolic_MUMPS()
3049id.ICNTL(6) && mumps->id.ICNTL(6) < 7) PetscCall(MatMumpsMakeMumpsScalarArray(PETSC_TRUE, mumps->n… in MatCholeskyFactorSymbolic_MUMPS()
3053 mumps->id.nnz_loc = mumps->nnz; in MatCholeskyFactorSymbolic_MUMPS()
3054 mumps->id.irn_loc = mumps->irn; in MatCholeskyFactorSymbolic_MUMPS()
3055 mumps->id.jcn_loc = mumps->jcn; in MatCholeskyFactorSymbolic_MUMPS()
3056id.ICNTL(6) && mumps->id.ICNTL(6) < 7) PetscCall(MatMumpsMakeMumpsScalarArray(PETSC_TRUE, mumps->n… in MatCholeskyFactorSymbolic_MUMPS()
3099 …Call(PetscViewerASCIIPrintf(viewer, " SYM (matrix type): %d\n", mumps->id.sym)); in MatView_MUMPS()
3100 …Call(PetscViewerASCIIPrintf(viewer, " PAR (host participation): %d\n", mumps->id.par)); in MatView_MUMPS()
3101 …PetscViewerASCIIPrintf(viewer, " ICNTL(1) (output for error): %d\n", mumps->id.ICNTL(1))); in MatView_MUMPS()
3102 …PetscViewerASCIIPrintf(viewer, " ICNTL(2) (output of diagnostic msg): %d\n", mumps->id.ICNTL(2))); in MatView_MUMPS()
3103 …PetscViewerASCIIPrintf(viewer, " ICNTL(3) (output for global info): %d\n", mumps->id.ICNTL(3))); in MatView_MUMPS()
3104 …PetscViewerASCIIPrintf(viewer, " ICNTL(4) (level of printing): %d\n", mumps->id.ICNTL(4))); in MatView_MUMPS()
3105 …PetscViewerASCIIPrintf(viewer, " ICNTL(5) (input mat struct): %d\n", mumps->id.ICNTL(5))); in MatView_MUMPS()
3106 …PetscViewerASCIIPrintf(viewer, " ICNTL(6) (matrix prescaling): %d\n", mumps->id.ICNTL(6))); in MatView_MUMPS()
3107 …etscViewerASCIIPrintf(viewer, " ICNTL(7) (sequential matrix ordering):%d\n", mumps->id.ICNTL(7))); in MatView_MUMPS()
3108 …PetscViewerASCIIPrintf(viewer, " ICNTL(8) (scaling strategy): %d\n", mumps->id.ICNTL(8))); in MatView_MUMPS()
3109 …etscViewerASCIIPrintf(viewer, " ICNTL(10) (max num of refinements): %d\n", mumps->id.ICNTL(10))); in MatView_MUMPS()
3110 …etscViewerASCIIPrintf(viewer, " ICNTL(11) (error analysis): %d\n", mumps->id.ICNTL(11))); in MatView_MUMPS()
3111 if (mumps->id.ICNTL(11) > 0) { in MatView_MUMPS()
3112 …iewer, " RINFOG(4) (inf norm of input mat): %g\n", (double)ID_RINFOG_GET(mumps->id, 4))); in MatView_MUMPS()
3113 …iewer, " RINFOG(5) (inf norm of solution): %g\n", (double)ID_RINFOG_GET(mumps->id, 5))); in MatView_MUMPS()
3114 …iewer, " RINFOG(6) (inf norm of residual): %g\n", (double)ID_RINFOG_GET(mumps->id, 6))); in MatView_MUMPS()
3115 …ward error est): %g, %g\n", (double)ID_RINFOG_GET(mumps->id, 7), (double)ID_RINFOG_GET(mumps->id, … in MatView_MUMPS()
3116 …iewer, " RINFOG(9) (error estimate): %g\n", (double)ID_RINFOG_GET(mumps->id, 9))); in MatView_MUMPS()
3117 …ition numbers): %g, %g\n", (double)ID_RINFOG_GET(mumps->id, 10), (double)ID_RINFOG_GET(mumps->id, … in MatView_MUMPS()
3119 …tf(viewer, " ICNTL(12) (efficiency control): %d\n", mumps->id.ICNTL(12))); in MatView_MUMPS()
3120 …tf(viewer, " ICNTL(13) (sequential factorization of the root node): %d\n", mumps->id.ICNTL(13))); in MatView_MUMPS()
3121 …tf(viewer, " ICNTL(14) (percentage of estimated workspace increase): %d\n", mumps->id.ICNTL(14))); in MatView_MUMPS()
3122 …tf(viewer, " ICNTL(15) (compression of the input matrix): %d\n", mumps->id.ICNTL(15))); in MatView_MUMPS()
3124 …tf(viewer, " ICNTL(18) (input mat struct): %d\n", mumps->id.ICNTL(18))); in MatView_MUMPS()
3125 …tf(viewer, " ICNTL(19) (Schur complement info): %d\n", mumps->id.ICNTL(19))); in MatView_MUMPS()
3126 …tf(viewer, " ICNTL(20) (RHS sparse pattern): %d\n", mumps->id.ICNTL(20))); in MatView_MUMPS()
3127 …tf(viewer, " ICNTL(21) (solution struct): %d\n", mumps->id.ICNTL(21))); in MatView_MUMPS()
3128 …tf(viewer, " ICNTL(22) (in-core/out-of-core facility): %d\n", mumps->id.ICNTL(22))); in MatView_MUMPS()
3129 …tf(viewer, " ICNTL(23) (max size of memory can be allocated locally):%d\n", mumps->id.ICNTL(23))); in MatView_MUMPS()
3131 …tf(viewer, " ICNTL(24) (detection of null pivot rows): %d\n", mumps->id.ICNTL(24))); in MatView_MUMPS()
3132 …tf(viewer, " ICNTL(25) (computation of a null space basis): %d\n", mumps->id.ICNTL(25))); in MatView_MUMPS()
3133 …tf(viewer, " ICNTL(26) (Schur options for RHS or solution): %d\n", mumps->id.ICNTL(26))); in MatView_MUMPS()
3134 …tf(viewer, " ICNTL(27) (blocking size for multiple RHS): %d\n", mumps->id.ICNTL(27))); in MatView_MUMPS()
3135 …tf(viewer, " ICNTL(28) (use parallel or sequential ordering): %d\n", mumps->id.ICNTL(28))); in MatView_MUMPS()
3136 …tf(viewer, " ICNTL(29) (parallel ordering): %d\n", mumps->id.ICNTL(29))); in MatView_MUMPS()
3138 …tf(viewer, " ICNTL(30) (user-specified set of entries in inv(A)): %d\n", mumps->id.ICNTL(30))); in MatView_MUMPS()
3139 …tf(viewer, " ICNTL(31) (factors is discarded in the solve phase): %d\n", mumps->id.ICNTL(31))); in MatView_MUMPS()
3140 …tf(viewer, " ICNTL(33) (compute determinant): %d\n", mumps->id.ICNTL(33))); in MatView_MUMPS()
3141 …tf(viewer, " ICNTL(35) (activate BLR based factorization): %d\n", mumps->id.ICNTL(35))); in MatView_MUMPS()
3142 …tf(viewer, " ICNTL(36) (choice of BLR factorization variant): %d\n", mumps->id.ICNTL(36))); in MatView_MUMPS()
3143 …tf(viewer, " ICNTL(37) (compression of the contribution blocks): %d\n", mumps->id.ICNTL(37))); in MatView_MUMPS()
3144 …tf(viewer, " ICNTL(38) (estimated compression rate of LU factors): %d\n", mumps->id.ICNTL(38))); in MatView_MUMPS()
3145 …tf(viewer, " ICNTL(48) (multithreading with tree parallelism): %d\n", mumps->id.ICNTL(48))); in MatView_MUMPS()
3146 …r, " ICNTL(49) (compact workarray at the end of factorization phase):%d\n", mumps->id.ICNTL(49))); in MatView_MUMPS()
3147 …tf(viewer, " ICNTL(56) (postponing and rank-revealing factorization):%d\n", mumps->id.ICNTL(56))); in MatView_MUMPS()
3148 …tf(viewer, " ICNTL(58) (options for symbolic factorization): %d\n", mumps->id.ICNTL(58))); in MatView_MUMPS()
3150 …(viewer, " CNTL(1) (relative pivoting threshold): %g\n", (double)ID_CNTL_GET(mumps->id, 1))); in MatView_MUMPS()
3151 …(viewer, " CNTL(2) (stopping criterion of refinement): %g\n", (double)ID_CNTL_GET(mumps->id, 2))); in MatView_MUMPS()
3152 …(viewer, " CNTL(3) (absolute pivoting threshold): %g\n", (double)ID_CNTL_GET(mumps->id, 3))); in MatView_MUMPS()
3153 …(viewer, " CNTL(4) (value of static pivoting): %g\n", (double)ID_CNTL_GET(mumps->id, 4))); in MatView_MUMPS()
3154 …(viewer, " CNTL(5) (fixation for null pivots): %g\n", (double)ID_CNTL_GET(mumps->id, 5))); in MatView_MUMPS()
3155 …(viewer, " CNTL(7) (dropping parameter for BLR): %g\n", (double)ID_CNTL_GET(mumps->id, 7))); in MatView_MUMPS()
3160 …ASCIISynchronizedPrintf(viewer, " [%d] %g\n", mumps->myid, (double)ID_RINFO_GET(mumps->id, 1))); in MatView_MUMPS()
3163 …ASCIISynchronizedPrintf(viewer, " [%d] %g\n", mumps->myid, (double)ID_RINFO_GET(mumps->id, 2))); in MatView_MUMPS()
3166 …ASCIISynchronizedPrintf(viewer, " [%d] %g\n", mumps->myid, (double)ID_RINFO_GET(mumps->id, 3))); in MatView_MUMPS()
3170 …Call(PetscViewerASCIISynchronizedPrintf(viewer, " [%d] %d\n", mumps->myid, mumps->id.INFO(15))); in MatView_MUMPS()
3174 …Call(PetscViewerASCIISynchronizedPrintf(viewer, " [%d] %d\n", mumps->myid, mumps->id.INFO(16))); in MatView_MUMPS()
3178 …Call(PetscViewerASCIISynchronizedPrintf(viewer, " [%d] %d\n", mumps->myid, mumps->id.INFO(23))); in MatView_MUMPS()
3185 …ViewerASCIISynchronizedPrintf(viewer, " [%d] %d\n", mumps->myid, mumps->id.INFO(mumps->info[i])… in MatView_MUMPS()
3193 … estimated flops for the elimination after analysis): %g\n", (double)ID_RINFOG_GET(mumps->id, 1))); in MatView_MUMPS()
3194 …stimated flops for the assembly after factorization): %g\n", (double)ID_RINFOG_GET(mumps->id, 2))); in MatView_MUMPS()
3195 …mated flops for the elimination after factorization): %g\n", (double)ID_RINFOG_GET(mumps->id, 3))); in MatView_MUMPS()
3196 …(%g,%g)*(2^%d)\n", (double)ID_RINFOG_GET(mumps->id, 12), (double)ID_RINFOG_GET(mumps->id, 13), mum… in MatView_MUMPS()
3198 …stimated real workspace for factors on all processors after analysis): %d\n", mumps->id.INFOG(3))); in MatView_MUMPS()
3199 …mated integer workspace for factors on all processors after analysis): %d\n", mumps->id.INFOG(4))); in MatView_MUMPS()
3200 …ewer, " INFOG(5) (estimated maximum front size in the complete tree): %d\n", mumps->id.INFOG(5))); in MatView_MUMPS()
3201 …SCIIPrintf(viewer, " INFOG(6) (number of nodes in the complete tree): %d\n", mumps->id.INFOG(6))); in MatView_MUMPS()
3202 …viewer, " INFOG(7) (ordering option effectively used after analysis): %d\n", mumps->id.INFOG(7))); in MatView_MUMPS()
3203 …structural symmetry in percent of the permuted matrix after analysis): %d\n", mumps->id.INFOG(8))); in MatView_MUMPS()
3204 …al/complex workspace to store the matrix factors after factorization): %d\n", mumps->id.INFOG(9))); in MatView_MUMPS()
3205 …) (total integer space store the matrix factors after factorization): %d\n", mumps->id.INFOG(10))); in MatView_MUMPS()
3206 …, " INFOG(11) (order of largest frontal matrix after factorization): %d\n", mumps->id.INFOG(11))); in MatView_MUMPS()
3207 …ewerASCIIPrintf(viewer, " INFOG(12) (number of off-diagonal pivots): %d\n", mumps->id.INFOG(12))); in MatView_MUMPS()
3208 …(viewer, " INFOG(13) (number of delayed pivots after factorization): %d\n", mumps->id.INFOG(13))); in MatView_MUMPS()
3209 …viewer, " INFOG(14) (number of memory compress after factorization): %d\n", mumps->id.INFOG(14))); in MatView_MUMPS()
3210 … INFOG(15) (number of steps of iterative refinement after solution): %d\n", mumps->id.INFOG(15))); in MatView_MUMPS()
3211 …zation after analysis: value on the most memory consuming processor): %d\n", mumps->id.INFOG(16))); in MatView_MUMPS()
3212 …rnal data for factorization after analysis: sum over all processors): %d\n", mumps->id.INFOG(17))); in MatView_MUMPS()
3213 … during factorization: value on the most memory consuming processor): %d\n", mumps->id.INFOG(18))); in MatView_MUMPS()
3214 …ternal data allocated during factorization: sum over all processors): %d\n", mumps->id.INFOG(19))); in MatView_MUMPS()
3215 …tf(viewer, " INFOG(20) (estimated number of entries in the factors): %d\n", mumps->id.INFOG(20))); in MatView_MUMPS()
3216 …during factorization - value on the most memory consuming processor): %d\n", mumps->id.INFOG(21))); in MatView_MUMPS()
3217 …ory effectively used during factorization - sum over all processors): %d\n", mumps->id.INFOG(22))); in MatView_MUMPS()
3218 …r, " INFOG(23) (after analysis: value of ICNTL(6) effectively used): %d\n", mumps->id.INFOG(23))); in MatView_MUMPS()
3219 …, " INFOG(24) (after analysis: value of ICNTL(12) effectively used): %d\n", mumps->id.INFOG(24))); in MatView_MUMPS()
3220 … (after factorization: number of pivots modified by static pivoting): %d\n", mumps->id.INFOG(25))); in MatView_MUMPS()
3221 … INFOG(28) (after factorization: number of null pivots encountered): %d\n", mumps->id.INFOG(28))); in MatView_MUMPS()
3222 …ffective number of entries in the factors (sum over all processors)): %d\n", mumps->id.INFOG(29))); in MatView_MUMPS()
3223 … Mbytes of memory used during solution phase): %d, %d\n", mumps->id.INFOG(30), mumps->id.INFOG(31)… in MatView_MUMPS()
3224 …IPrintf(viewer, " INFOG(32) (after analysis: type of analysis done): %d\n", mumps->id.INFOG(32))); in MatView_MUMPS()
3225 …etscViewerASCIIPrintf(viewer, " INFOG(33) (value used for ICNTL(8)): %d\n", mumps->id.INFOG(33))); in MatView_MUMPS()
3226 … INFOG(34) (exponent of the determinant if determinant is requested): %d\n", mumps->id.INFOG(34))); in MatView_MUMPS()
3227 …aking into account BLR factor compression - sum over all processors): %d\n", mumps->id.INFOG(35))); in MatView_MUMPS()
3228 … running BLR in-core - value on the most memory consuming processor): %d\n", mumps->id.INFOG(36))); in MatView_MUMPS()
3229 …MPS internal data for running BLR in-core - sum over all processors): %d\n", mumps->id.INFOG(37))); in MatView_MUMPS()
3230 …ning BLR out-of-core - value on the most memory consuming processor): %d\n", mumps->id.INFOG(38))); in MatView_MUMPS()
3231 …internal data for running BLR out-of-core - sum over all processors): %d\n", mumps->id.INFOG(39))); in MatView_MUMPS()
3244 …info->nz_allocated = mumps->id.INFOG(20) >= 0 ? mumps->id.INFOG(20) : -1000000 * mumps->id.IN… in MatGetInfo_MUMPS()
3245 …info->nz_used = mumps->id.INFOG(20) >= 0 ? mumps->id.INFOG(20) : -1000000 * mumps->id.IN… in MatGetInfo_MUMPS()
3268 PetscCall(PetscMUMPSIntCast(size, &mumps->id.size_schur)); in MatFactorSetSchurIS_MUMPS()
3269 PetscCall(PetscMUMPSIntCast(size, &mumps->id.schur_lld)); in MatFactorSetSchurIS_MUMPS()
3273 PetscCall(PetscFree(mumps->id.listvar_schur)); in MatFactorSetSchurIS_MUMPS()
3274 PetscCall(PetscMalloc1(size, &mumps->id.listvar_schur)); in MatFactorSetSchurIS_MUMPS()
3276 for (i = 0; i < size; i++) PetscCall(PetscMUMPSIntCast(idxs[i] + 1, &mumps->id.listvar_schur[i])); in MatFactorSetSchurIS_MUMPS()
3279 if (mumps->id.icntl) mumps->id.ICNTL(26) = -1; in MatFactorSetSchurIS_MUMPS()
3289 PetscInt i, j, N = mumps->id.size_schur; in MatFactorCreateSchurComplement_MUMPS()
3292 …PetscCheck(mumps->id.ICNTL(19), PetscObjectComm((PetscObject)F), PETSC_ERR_ORDER, "Schur complemen… in MatFactorCreateSchurComplement_MUMPS()
3294 …PetscCall(MatSetSizes(St, PETSC_DECIDE, PETSC_DECIDE, mumps->id.size_schur, mumps->id.size_schur)); in MatFactorCreateSchurComplement_MUMPS()
3299 if (mumps->id.ICNTL(19) == 1) { /* stored by rows */ in MatFactorCreateSchurComplement_MUMPS()
3301 for (j = 0; j < N; j++) array[j * N + i] = ID_FIELD_GET(mumps->id, schur, i * N + j); in MatFactorCreateSchurComplement_MUMPS()
3304 PetscCall(MatMumpsCastMumpsScalarArray(N * N, mumps->id.precision, mumps->id.schur, array)); in MatFactorCreateSchurComplement_MUMPS()
3307 if (mumps->id.ICNTL(19) == 2) { /* lower triangular stored by columns */ in MatFactorCreateSchurComplement_MUMPS()
3309 …for (j = i; j < N; j++) array[i * N + j] = array[j * N + i] = ID_FIELD_GET(mumps->id, schur, i * N… in MatFactorCreateSchurComplement_MUMPS()
3311 } else if (mumps->id.ICNTL(19) == 3) { /* full matrix */ in MatFactorCreateSchurComplement_MUMPS()
3312 PetscCall(MatMumpsCastMumpsScalarArray(N * N, mumps->id.precision, mumps->id.schur, array)); in MatFactorCreateSchurComplement_MUMPS()
3315 …for (j = 0; j < i + 1; j++) array[i * N + j] = array[j * N + i] = ID_FIELD_GET(mumps->id, schur, i… in MatFactorCreateSchurComplement_MUMPS()
3329 …if (mumps->id.job == JOB_NULL) { /* need to cache icntl… in MatMumpsSetIcntl_MUMPS()
3340 } else PetscCall(PetscMUMPSIntCast(ival, &mumps->id.ICNTL(icntl))); in MatMumpsSetIcntl_MUMPS()
3349 if (mumps->id.job == JOB_NULL) { in MatMumpsGetIcntl_MUMPS()
3355 } else *ival = mumps->id.ICNTL(icntl); in MatMumpsGetIcntl_MUMPS()
3424 if (mumps->id.job == JOB_NULL) { in MatMumpsSetCntl_MUMPS()
3435 } else ID_CNTL_SET(mumps->id, icntl, val); in MatMumpsSetCntl_MUMPS()
3444 if (mumps->id.job == JOB_NULL) { in MatMumpsGetCntl_MUMPS()
3450 } else *val = ID_CNTL_GET(mumps->id, icntl); in MatMumpsGetCntl_MUMPS()
3478 …PetscCall(PetscStrncpy(mumps->id.ooc_tmpdir, tmpdir, sizeof(((MUMPS_STRUC_C *)NULL)->ooc_tmpdir))); in MatMumpsSetOocTmpDir()
3507 if (tmpdir) *tmpdir = mumps->id.ooc_tmpdir; in MatMumpsGetOocTmpDir()
3576 *info = mumps->id.INFO(icntl); in MatMumpsGetInfo_MUMPS()
3585 *infog = mumps->id.INFOG(icntl); in MatMumpsGetInfog_MUMPS()
3594 *rinfo = ID_RINFO_GET(mumps->id, icntl); in MatMumpsGetRinfo_MUMPS()
3603 *rinfog = ID_RINFOG_GET(mumps->id, icntl); in MatMumpsGetRinfog_MUMPS()
3612 …PetscCheck(mumps->id.ICNTL(24) == 1, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONG, "-mat_mumps_icntl_24 mu… in MatMumpsGetNullPivots_MUMPS()
3616 *size = mumps->id.INFOG(28); in MatMumpsGetNullPivots_MUMPS()
3618 for (int i = 0; i < *size; i++) (*array)[i] = mumps->id.pivnul_list[i] - 1; in MatMumpsGetNullPivots_MUMPS()
3648 mumps->id.nrhs = (PetscMUMPSInt)nrhs; in MatMumpsGetInverse_MUMPS()
3649 PetscCall(PetscMUMPSIntCast(M, &mumps->id.lrhs)); in MatMumpsGetInverse_MUMPS()
3650 mumps->id.rhs = NULL; in MatMumpsGetInverse_MUMPS()
3656 …ll(PetscMUMPSIntCSRCast(mumps, spnr, ia, ja, &mumps->id.irhs_ptr, &mumps->id.irhs_sparse, &mumps-> in MatMumpsGetInverse_MUMPS()
3657 …_TRUE, ((Mat_SeqAIJ *)Btseq->data)->nz, aa, mumps->id.precision, &mumps->id.rhs_sparse_len, &mumps… in MatMumpsGetInverse_MUMPS()
3659 mumps->id.irhs_ptr = NULL; in MatMumpsGetInverse_MUMPS()
3660 mumps->id.irhs_sparse = NULL; in MatMumpsGetInverse_MUMPS()
3661 mumps->id.nz_rhs = 0; in MatMumpsGetInverse_MUMPS()
3662 if (mumps->id.rhs_sparse_len) { in MatMumpsGetInverse_MUMPS()
3663 PetscCall(PetscFree(mumps->id.rhs_sparse)); in MatMumpsGetInverse_MUMPS()
3664 mumps->id.rhs_sparse_len = 0; in MatMumpsGetInverse_MUMPS()
3667 mumps->id.ICNTL(20) = 1; /* rhs is sparse */ in MatMumpsGetInverse_MUMPS()
3668 mumps->id.ICNTL(21) = 0; /* solution is in assembled centralized format */ in MatMumpsGetInverse_MUMPS()
3671 mumps->id.job = JOB_SOLVE; in MatMumpsGetInverse_MUMPS()
3673 …mps->id.INFOG(1) >= 0, PETSC_COMM_SELF, PETSC_ERR_LIB, "MUMPS error in solve: INFOG(1)=%d INFO(2)=… in MatMumpsGetInverse_MUMPS()
3753 PetscCall(PetscMUMPSIntCast(nblk, &mumps->id.nblk)); in MatMumpsSetBlk_MUMPS()
3754 PetscCall(PetscFree(mumps->id.blkptr)); in MatMumpsSetBlk_MUMPS()
3755 PetscCall(PetscMalloc1(nblk + 1, &mumps->id.blkptr)); in MatMumpsSetBlk_MUMPS()
3756 …for (PetscInt i = 0; i < nblk + 1; ++i) PetscCall(PetscMUMPSIntCast(blkptr[i], mumps->id.blkptr + … in MatMumpsSetBlk_MUMPS()
3761 PetscCall(PetscFree(mumps->id.blkvar)); in MatMumpsSetBlk_MUMPS()
3762 PetscCall(PetscMalloc1(F->rmap->N, &mumps->id.blkvar)); in MatMumpsSetBlk_MUMPS()
3763 …for (PetscInt i = 0; i < F->rmap->N; ++i) PetscCall(PetscMUMPSIntCast(blkvar[i], mumps->id.blkvar … in MatMumpsSetBlk_MUMPS()
3766 PetscCall(PetscFree(mumps->id.blkptr)); in MatMumpsSetBlk_MUMPS()
3767 PetscCall(PetscFree(mumps->id.blkvar)); in MatMumpsSetBlk_MUMPS()
3769 mumps->id.nblk = 0; in MatMumpsSetBlk_MUMPS()
4140 mumps->id.job = JOB_NULL; in MatGetFactor_aij_mumps()
4212 mumps->id.job = JOB_NULL; in MatGetFactor_sbaij_mumps()
4274 mumps->id.job = JOB_NULL; in MatGetFactor_baij_mumps()
4335 mumps->id.job = JOB_NULL; in MatGetFactor_sell_mumps()
4474 mumps->id.job = JOB_NULL; in MatGetFactor_nest_mumps()