3. Basic object content#
3.1. Case LDLT or MULT_FRONT#
SLVK:
SLVK (1): resolution method (“LDLT” or “MULT_FRONT”),
SLVK (2): unused,
SLVK (3): unused,
SLVK (4): renumbering method (keyword RENUM). Possible values are:
“RCMK” or “SANS” (if LDLT)
“MD” or “MDA” or “METIS” (if MULT_FRONT),
SLVK (5) to SLVK (12): unused.
SLVK (13): elimination of the Lagrange equations (ELIM_LAGR =” OUI “/” NON “).
SVLK (14): activation of the XFEM pre-conditioner (“OUI”/”NON”). The value by default is” NON “. This location interacts with the MODI_MODELE_XFEM command; if PRETRAITEMENT =” SANS “, then the location takes the value” NON “; if PRETRAITEMENT =” AUTO”, then the location can take the value “OUI”.
SLVR:
SLVR (1): unused,
SLVR (2): unused,
SLVR (3): block size (if LDLT)
It is the size of the object’s blocks. UALF from an online sky storage,
SLVR (4): unused.
SLVI:
SLVI (1): value of NPREC,
SLVI (2): unused,
SLVI (3): istop
Desired behavior in case of a singularity during factorization
0: error <F>in case of singularity or near singularity
1: error <F>in case of singularity
Alarm <A>in case of a near singularity
2: No message in case of singularity or near singularity
SLVI (4) to SLVI (8): unused.
3.2. Case GCPC#
SLVK:
SLVK (1): resolution method “GCPC”,
SLVK (2): preconditioning the work matrix
(PRECOND =” LDLT_INC “,” LDLT_SP “, or” SANS “),
SLVK (3): name of the Mumps solver SD in case PRECOND =” LDLT_SP “,
SLVK (4): value of RENUM (“RCMK” or “SANS”),
SLVK (5) to SLVK (12): unused.
SLVK (13): elimination of the Lagrange equations (ELIM_LAGR =” OUI “/” NON “).
SLVK (14): unused.
SLVR:
SLVR (1): value of RESI_RELA (copy for NEWTON_KRYLOV),
SLVR (2): value of RESI_RELA,
SLVR (3) to SLVR (4): unused.
SLVI:
SLVI (1): unused,
SLVI (2): value of NMAX_ITER,
SLVI (3): unused,
SLVI (4): value of NIVE_REMPLISSAGE,
SLVI (5): number of iterations to reach convergence in the case PRECOND =” LDLT_SP “,
SLVI (6): value of REAC_PRECOND in the case PRECOND =” LDLT_SP “,
SLVI (7): value of PCENT_PIVOT in the case PRECOND =” LDLT_SP “,
SLVI (8): istop
Desired behavior in case of error during iterative linear resolution
0: error <F>in case of failure
2: no message in case of failure, return code not zero
3.3. Case PETSc#
SLVK:
SLVK (1): resolution method “PETSC”,
SLVK (2): preconditioning the work matrix
(PRECOND =” LDLT_INC “,” LDLT_SP “,” JACOBI “,” “,” “,” SOR “,” ML “,” BOOMER “,” GAMG “,” SANS “),
SLVK (3): name of the Mumps solver SD in case PRECOND =” LDLT_SP “,
SLVK (4): value of RENUM (“RCMK” or “SANS”),
SLVK (5): unused,
SLVK (6): name of the iterative method used
(“CG”, “CR”, “GMRES”, “GCR”),
SLVK (7) to SLVK (9): unused.
SLVK (10): unused
SLVK (11) to SLVK (12): unused.
SLVK (13): elimination of the Lagrange equations (ELIM_LAGR =” OUI “/” NON “).
SLVK (14): unused.
SLVR:
SLVR (1): value of RESI_RELA (copy for NEWTON_KRYLOV),
SLVR (2): value of RESI_RELA,
SLVR (3): value of REMPLISSAGE,
SLVR (4): value of RESI_RELA_PC (hidden keyword).
SLVI:
SLVI (1): unused,
SLVI (2): value of NMAX_ITER,
SLVI (3): unused,
SLVI (4): value of NIVE_REMPLISSAGE,
SLVI (5): number of iterations to reach convergence in the case PRECOND =” LDLT_SP “,
SLVI (6): value of REAC_PRECOND in the case PRECOND =” LDLT_SP “,
SLVI (7): value of PCENT_PIVOT in the case PRECOND =” LDLT_SP “,
SLVI (8): istop
Desired behavior in case of error during iterative linear resolution
0: error <F>in case of failure
2: no message in case of failure, return code not zero
SLVI (9): useful length of the SLVO vector
SLVO:
Vector SLVO contains the options to be passed to the PETSc library using the OPTION_PETSC keyword. It is a free-length character string (it is still limited to 2500 characters in the code). It is divided into SLVI (9) blocks of 80 characters, each stored in entries SLVO (1), SLVO (2), etc.
SLVO (1): first 80 characters of the OPTION_PETSC string
SLVO (2): Next 80 characters from the OPTION_PETSC string
etc.
3.4. Case MUMPS#
SLVK:
SLVK (1): resolution method (“MUMPS”),
SLVK (2): pretreatments (PRETRAITEMENTS =” AUTO “or” SANS “),
SLVK (3): desired resolution algorithm (TYPE_RESOL =)
“NONSYM”: non-symmetric matrix (LU factorization)
“SYMGEN”: « general » symmetric matrix
“SYMDEF”: symmetric « positive definite » matrix
“AUTO”: automatic choice made based on the characteristics of the matrix
SLVK (4): desired renumber (RENUM =” AUTO “,” “,” AMD “,” “,” “,” AMF “,” QAMD “,” PORD “,” PTSCOTCH “/ SCOTCH “, or” PARMETIS “/” “), METIS
SLVK (5): type of acceleration activated (ACCELERATION =” AUTO “,” FR “,” FR+ “,” LR “or” FR+ “),
SLVK (6): « virtual » elimination of the 2nd Lagrange family when transmitting the matrix
Aster at MUMPS (ELIM_LAGR =” LAGR2 “),
SLVK (7): mixed precision (MIXER_PRECISION =” OUI “/” NON “),
SLVK (8): use as a simple precision preconditioner for GCPC (“OUI”/”NON”),
SLVK (9): managing the memory allocated by MUMPS
(GESTION_MEMOIRE =” IN_CORE “/” OUT_OF_CORE “/” “/” AUTO “/” EVAL “),
SLVK (10): unused
SVLK (11): post-processing management (POSTTRAITEMENTS =” SANS “,” AUTO “,” FORCE “),
SVLK (12): version number of MUMPS (for example: “5.1.0”). This is a legal version number, i.e. tested and approved by the version of Code_Aster in question. Otherwise we stop at ERREUR_F before filling in this field. Value filled just after initializing the MUMPS occurrence only*via* amump*/mumpu.f routines.
SLVK (13): elimination of the Lagrange equations (ELIM_LAGR =” OUI “/” NON “/” LAGR2 “unless modal calculation, then ELIM_LAGR =” NON”/”LAGR2”).
SVLK (14): activation of the XFEM pre-conditioner (“OUI”/”NON”). The value by default is” NON “. This location interacts with the MODI_MODELE_XFEM command; if PRETRAITEMENT =” SANS “, then the location takes the value” NON “; if PRETRAITEMENT =” AUTO”, then the location can take the value “OUI”.
SLVR:
SLVR (1): value of FILTRAGE_MATRICE,
SLVR (2): value of RESI_RELA (calculation and control of the quality of the solution,
triggering post-treatments according to the value of POSTTRAITEMENTS),
SLVR (3) :unused.
SLVR (4): “low-rank” compression ratio (keyword LOW_RANK_SEUIL).
SLVI:
SLVI (1): value of NPREC (like LDLT and MULT_FRONT),
SLVI (2): percentage of additional memory required for pivots
late (value of PCENT_PIVOT)
SLVI (3): value of ISTOP (like LDLT and MULT_FRONT),
SLVI (4): indicator to tell MUMPS not to step up to store factorized SA terms (interesting if, for example, we just need an overall result such as a determinant calculation or Sturm criterion). If it is 1, we do not store this factored one (big memory gain), otherwise we keep it according to the standard mode.
This feature is only activated from MUMPS 4.10.0 (for lower versions we do nothing and we emit a UTMESS_I message (if INF0 =2). Temporary value (if necessary, its initial value is returned after use) filled in the vpstur.f and apchar.f routines.
SLVI (5): indicator to tell MUMPS to additionally calculate the determinant of the matrix. If it is 1, it is calculated and stored in the temporary object “& AMUMP. DETERMINANT “(cf. amumpu.f), otherwise we don’t calculate it.
This feature is only activated from MUMPS 4.10.0 (for lower versions we stop at ERREUR_F. Temporary value (if necessary, its initial value is returned after use) filled in the vpstur.f and apchar.f routines.
SLVI (6): indicator to tell MUMPS how many factorized matrices we are going to build at the same time. This parameter is only taken into account for options GESTION_MEMOIRE =” AUTO “and” EVAL “. It is initialized to 1 by default. Just after reading it there is a stop in ASSERT if this number is illicit (<1 ou >nmxins).
It is the responsibility of the programmer to modify this figure when he knows that he will have several factorized ones to manage simultaneously. If this is not done, memory management will be suboptimal and the calculation slows down (“AUTO”) or the numbers displayed will be reduced (“EVAL”).
For example, this scenario was taken into account in STAT_NON_LINE + “CRIT_STAB”.
RQ: We assume that the simultaneous factorized ones require the same space and we do not manage the precedents (on 2 matrices, at the first we devote half of the available space, at the second, we do the same, when we could give it everything).
SLVI (7): value of the REDUCTION_MPI keyword; that is to say the factor for reducing the number of processes MPI which will only apply in MUMPS. This will then increase the number of OpenMP threads by the same proportion. Only valid on a parallel version MPI and activated, only if > 1 and with MUMPS in direct solver use.
SLVI (8): value of the NB_RHS keyword; that is to say the number of second members (“Right Hand Side” in the jargon) that is given to MUMPS for a simultaneous descent and ascent. Only activated with MUMPS in direct solver use. If negative, RHS are considered to be very hollow instead of the standard dense format (positive value).