3. Content of OJB#

3.1. Purpose. REFA#

. REFA S V K24 dim=20

. REFA (1) = name of the underlying sd_mesh.

. REFA (2) = name of the sd_nume_ddl.


. REFA (3) = “”/”ELIMF”/”ELIML”

“”: There are no kinematic loads.

“ELIMF”: There are kinematic loads.

A part of the. VALMa was copied in. CCVA

. VALMa has been partially replaced by a unit matrix (on the ddls eliminated)

“ELIML”: There are kinematic loads.

. CCVA was not created yet

. VALM has not yet been copied into. CCVA

see mtmchc.f for details


. REFA (4) = name of the calculation OPTION (or the string: “& MELANGE “).

. REFA (5) = “”

. REFA (6) = “”

. REFA (7) = “”/nomsolv

nomsolv: name of the solver to use (by default) during resolutions.

. REFA (8) = “”/”ASSE”/”DECT”/”DECP”

“” or “ASSE”: matrix in its initial state (not factored)

“DECT”: fully factored matrix

“DEPT”: partially factored matrix (only possible if LDLT)

. REFA (9) = “MS”/”MR”

“MS”: symmetric matrix

“MR”: non-symmetric matrix

. REFA (10) =/”NOEU”: the ddls in the matrix are carried by nodes

/”GENE”: the ddls in the matrix are generalized ddls.

. REFA (11) = “MPI_COMPLET”/”MPI_INCOMPLET”/”MATR_DISTR”

“MPI_COMPLET”: The objects. VALM (and. CCVA) are « complete »

“MPI_INCOMPLET”: The objects. VALM (and. CCVA) are « incomplete » due to a distributed MPI calculation. Each processor only assembles the finite elements that are assigned to it.

“MATR_DISTR”: If MATR_DISTRIBUEE =” OUI “

This option sizes the assembled matrix as accurately as possible according to the number of unknowns present on the current processor.

Note:

if “ MPI_INCOMPLET “, the objects. VALM and. CCVA are allocated to their normal size, but they are partially filled with « 0 » . if “ MATR_DISTR “* , the object. VALM is this time smaller than in the case “MPI_INCOMPLET “.

. REFA (17) = “”/”XFEM_PRECOND”

“”: No XFEM pre-conditioner has been applied to the matrix. The resolution continues without any particular treatment, relating to pre-conditioning XFEM.

“XFEM_PRECOND”: The matrix has been modified using the XFEM pre-conditioner. This modification must be taken into account in the rest of the calculation.

Note:

If the matrix is modified by pre-conditioner XFEM, this implies that there is at least one pre-conditioner object stored in memory. This object is useful for the rest of the calculation (for the modification of the second member and the solution) .

. REFA (18) = “”/”& XFEM_PC_1 “

“”: No XFEM pre-conditioner is stored.

“& XFEM_PC_1 “: The XFEM pre-conditioner is stored in a fixed « JEVEU » location.

Regarding the storage format of the « JEVEU » object, the pre-conditioning matrix is stored in a new sd_matr_asse. A new is generated. VALM (non-symmetric) and a new NUME_DDL respecting the numbering of the equations in the initial matrix. The management of the pre-conditioner object XFEM is carried out like a classic « sd_matr_asse », described in this document.

Note:

Even if the preconditioner address is stored in the . REFA of the original matrix, there is no « sd_matr_asse » address chaining. In fact, the address of the preconditioner is fixed and there is no need to know the address of the matrix to test the existence of a preconditioner, which simplifies the memory management of these two interdependent objects.

Moreover, as preconditioner XFEM is only effective in sequential calculation, the reciprocal application of the address of a preconditioner to the original matrix is not built for the moment.

. REFA (19) = matred/””

Name of the « reduced » matrix obtained by removing the Lagrange equations (functionality SOLVEUR/ELIM_LAGR =” OUI “) .We also speak of a « daughter » matrix

. REFA (20) = matter/””

Name of the « mother » matrix of the matrix if it was obtained by removing the Lagrange equations from matmere (feature SOLVEUR/ELIM_LAGR =” OUI “).

DOCU (”. REFA “) =/” ASSE “initial matrix,

/”DECT” fully factored matrix,

/”DECP” partially factored matrix.


3.2. Purpose. VALM#

. VALM XDV R/C NUM ()

This object contains the values of the non-zero terms in the matrix (in Morse format). There are 1 (or 2) element (s) in this collection (2 if the matrix is not symmetric).

The 1st element of the collection contains the upper part of the matrix,

The 2nd contains the lower part.

Remarks:

**For non-symmetric matrices, the diagonal is therefore stored 2 times;*

It is appropriate to use only the diagonal stored at the top (VALM (1));

**The arrangement of matrix terms in blocks is explained in the documentation*

of sd_storage [D4.06.07];

**Even if the matrix is not symmetric, its profile (mapping of non-zero terms) remains symmetric. A single profile is therefore applied to its two upper and lower parts.*

3.3. Purpose. CONL#

. CONL S V R dim=neq

neq is the number of equations in the system

This optional object is only present if there is at least one ddl of type “LAGR”:

V (ieq) = csi ieq corresponds to a DDL named “LAGR”,

  1. otherwise.

c is the conditioning coefficient of Lagrange ddls.

3.4. Purpose. DIGS#

. DIGS S V R/C dim=2*neq

neq is the number of equations in the system

This object is only present if the matrix has been factorized by “LDLT” or “MULT_FRONT”

DIGS (1:neq): values of the diagonal of the initial matrix

DIGS (neq+ 1:2 *neq): values of the diagonal of the factored matrix

3.5. Purpose. PERM#

. PERM S V I dim=neq

neq is the number of equations in the system

This object is only present if the matrix is the result of pre-conditioning by “GCPC” + “LDLT_INC” of another matrix. It is used to establish the correspondence between the numbering of the equations in the initial matrix and its pre-conditioning matrix. Indeed, the pre-conditioning matrix was renumbered with the “RCMK” algorithm (Reverse CUTHILL - Mc KEE)

That is: B= FACTORISER (MATR_ASSE =A, METHODE =” GCPC “, PRE_COND =” LDLT_INC”)

PERM (ieq_A): IEQ_b

where IEQ_A and IEQ_B are the equation numbers in matrices A and B.

This object has the same content as the.M2LC object in sd_storage.

3.6. Items. UALF,. VALF,. WALF#

These collections contain the terms of the factored matrix.

. UALF contains the matrix factored with LDLT:

symmetric: collection of size*nblocks*

non-symmetric: collection of size*2*nblocks*

. VALF contains the matrix factored with MULT_FRONT at the top

. WALF contains the matrix factored with MULT_FRONT at the bottom

Remarks:

**The arrangement of matrix terms in blocks is explained in the documentation*

of sd_storage [D4.06.07];

**For LDLT storage (. UALF *), the number of blocks is doubled in case of a non-symmetric matrix. The n*first blocks correspond to the values associated with the upper part of the matrix while the lasts* nblocks correspond to the lower part of the matrix.

**Even if the matrix is not symmetric, its profile (mapping of non-zero terms) remains symmetric. A single profile is therefore applied to its two upper and lower parts.*