Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Next: 1.4 DS BDCL Up: 1 Description of DS by type Prev: 1.2 DS ATRI Index Contents


1.3 DS B

 

1.3.1 Contents

This DS stores a coefficient array in the form of a vector (right-hand-side (RHS) of a system, solution, etc.).

In practice, matrix B has the form B(NDSM,NTDL) where NDSM designates, for example, the number of load cases of RHS and NTDL is the number of degrees of freedom.

DS B consists of five arrays of predefined order.

Array B0:
General information.

This integer array contains 32 variables, consisting of a general description of the job (title, date, name), of DS B (type, level, ...), and indicates the presence or absence of array B1.

1:20 TITRE

the job title in 20 words of 4 characters,

21:22 DATE

the data of creation in 2 words of 4 characters,

23:28 NOMCRE

the creator's name in 6 words of 4 characters,

29 'B'

the DS type,

30 NIVEAU

the DS level,

31 ETAT

a reserved parameter,

32 NTACM

the number of supplementary arrays associated with the DS (they are described in array B1).

Array B1:
Description of any supplementary arrays.

This integer array exists if NTACM (see B0) is non-zero. It contains, for each array to be described, 22 variables. In general, there are no associated arrays, except for certain applications where it is necessary to store values in the DS which do not enter its standard definition.

If array B1 exists, it contains sequentially:

Array B2:
General description of the coefficient array.

This integer array contains 11 values.

1 NTYP

the type of array B4,

2 NIND

the number of indices (fixed to 2),

3 M1

the maximum value of its first index (for example, NDSM, the number of load cases),

4 M2

the maximum value of its second index (for example, NTDL if B4 only has one page),

5 NCOD

the code for splitting array B4 into blocks, with:

  • NCOD = 1 if all the blocks have the same size (except the last),
  • NCOD = if not,

6 NBLOC

the number of blocks,

7 NOE

the number of nodes,

8 NBBLOC

the number of B4 arrays when the DS is on file,

9 ND

the number of degrees of freedom per node if it is constant, or 0,

10 NTDL

the number of degrees of freedom or the maximum value of the second index of array B4 when the NBLOC blocks are considered,

11 NCODSB

the storage code for array B4 with:

  • NCODSB = -1 for a storage by degrees of freedom.

Array B3:
Pointer to the blocks.

This integer array contains NBLOC+1 variables indicating the segmentation of array B4.

Array B4:
the array coefficients.

This NTYP type array contains the NDSM*M2 values of each page.

B4(1,l+1) to B4(NDSM,l+1) then
B4(1,l+2) to B4(NDSM,l+2) then
....
B4(1,l') to B4(NDSM,l')

where
l = NDL(B3(i)+1), l' = NDL(B3(i+1)+1) and NDL is the number of degrees of freedom per node.

1.3.2 Corresponding tools

Reading and writing a DS B

A DS residing in M.M. is written to S.M. on a sequential or direct access file.

This is a category 2 DS where only the first 4 arrays and any associated arrays (described in array B1)are read (module SDLECT) or written (module SDECRI):

Printing a DS B

The contents (total or partial) of a DS B can be printed by using the following modules;

IMB:
The entire DS when the number of degrees of freedom per node is constant (as a function of the print parameter IMPRE, all or part of array B4 will be printed).

      SUBROUTINE IMB(M,NFB,NIB,IMPRE)
C AIM : PRINT THE ARRAYS OF DS B, INCREASING WITH IMPRE
C ---   FILE NFB (OR MC IF 0), LEVEL NIB

IMBND0:
The entire DS when the number of degrees of freedom per node is not constant; in this case DS MAIL is necessary.

      SUBROUTINE IMBND0(M,XM,DM,NFMAIL,NIMAIL,NFB,NIB,IMPR)
C AIM : PRINT THE CONTENTS OF A DS B (CASE ND = 0)
C ---   (SEE IMB IF ND NOT 0) (NDSM = 1 !!!)

INFOBB:
Print a particular value contained in the DS.

      SUBROUTINE INFOBB(M,IOPT,TYPESD,NIVEAU,TAB2,TAB3,TAB4,DTAB4,
     +                  NUMREC)
C AIM : OUTPUT INFORMATION ON A DS B

Processors IMAGXX and INFOXX calls IMB, IMBND0 and INFOBB, respectively, in a conversational manner.

PRINTB
is the module used to obtain the type of each value:

 
      SUBROUTINE PRINTB(M,NFB,NIB,NFTYNO,NITYNO,TSIFO,IND1,ITAB,IND2,
     +              NFNDL1,NINDL1,IMPR)
C AIM : PRINTS DS B WITH A DESCRIPTION OF THE NODE TYPES

This module uses DS TYNO, which can be created using module COTYNO (see DS TYNO).

Creation and manipulation modules for DS B

DS B is generally the result of computation performed by a specific module (assembly of the RHS, solution of the system, ...); it can also, in certain cases, be constructed manually (for example, to input the initial solution of a time-dependent problem).

Manual creation:

COSDB:
Creation by inputing one (or two) vector(s) explicitly.

      SUBROUTINE COSDB(M,NVEC,U,V,LUV,ND,NFB,NIB,NTAB)
C AIM : CREATE A DS B FROM ONE OR TWO VECTORS

COSNOB:
Creation in terms of the nodal coordinates of the mesh; DS NOPO is therefore used.

      SUBROUTINE COSNOB(M,XM,NFNOPO,NINOPO,NVEC,U0,U1,DU0,DU1,ND,
     +                  NFB,NIB,NTAB,FONINT,VALCLR,VALCLD)
C AIM : CREATE A DS B FROM  A DS NOPO AND A FUNCTION
C ---   (SAME AIM AS COSDB)
C U(I) ( V(I) ) = FUNCTION(X(I),Y(I),Z(I)) AT POINT I OF DS NOPO

COSMCB:
Creation in terms of the nodal coordinates for the case when the number of degrees of freedom per node is arbitrary; DS MAIL and DS COOR are used.

      SUBROUTINE COSMCB (M,XM,DM,NFMAIL,NIMAIL,NFCOOR,NICOOR,NVEC,
     +   NFBS,NIBS,NTAB,FONINT,VALCLR,VALCLD,U0,U1,DU0,DU1)
C AIM : SEE COSNOB, HERE ND = 0 IS POSSIBLE

Preprocessor COSDXX is employed to perform a conversational call of these modules.

Assembly of the element arrays:

ASEMBV:
Assembly, in main memory or on sequential file, by using DS TAE containing the element RHS vectors of a system.

      SUBROUTINE ASEMBV(M,NOT,NDSM,NCODSB,NFTAE,NITAE,NFNDL1,NINDL1,
     +                  NFB,NIB,NTB)
C AIM : ASSEMBLY OF THE RHS
C ---   REAL  SINGLE OR DOUBLE PRECISION COMPLEX SINGLE PRECISION
C       ALL THE ARRAYS RESIDE SIMULTANEOUSLY IN M.M.

ASMBMS:
Assembly, in main memory or on direct access file, by using DS TAE containing the element RHS of a system.

      SUBROUTINE ASMBMS(M,NOT,NDSM,NCODBB,NFTAE,NITAE,NFNDL1,
     +                  NINDL1,NFB,NIB,NTB)
C AIM : ASSEMBLY OF THE RHS
C ---               REAL  SINGLE OR  DOUBLE PRECISION
C                   COMPLEX SINGLE PRECISION
C       THE ODS B RESIDES IN S.M. WITH DIRECT ACCESS

Preprocessor ASSEXX is employed to call these modules in a conversational manner. Furthermore, the solution preprocessors (for example CHOLXX) includes the assembly phase, consequently, the user only performs this operation him- or herself in some special cases (for example, to plot the matrix structure, or to compute the eigenvalues and eigenvectors of a problem).

Manipulation utilities for a DS B

There are numerous utilities to manipulate the contents of a DS B.

BDISEQ:
Change the type of the file storing a DS B, i.e. pass from a sequential support to a direct access support, or the inverse.

      SUBROUTINE  BDISEQ(M,INOUT,NFBDI,NIBDI,NFBSEQ,NIBSEQ)
C AIM : TRANSFORM A FILE DS B DIRECT INTO SEQUENTIAL OR INVERSE

MAXDLB:
Print the extremal values (maxima, minima, ...) contained in a DS.

      SUBROUTINE MAXDLB(M,XM,DM,NFB,NIB,MAXI,NIMPR)
C AIM : PRINT THE NIMPR NODES OF OPTIMUM RESULT PER LOCAL D.O.F. 
C ---   ACCORDING TO MAXI

NORME:
Calculate the error norms between the calculated and exact solution calculated via a function (SOLEX or DSOLEX depending on the type).

      SUBROUTINE NORME (M,XM,DM,NFMAIL,NIMAIL,NFCOOR,NICOOR,NFB,NIB,
     +   NFBS,NIBS,INDICB,NSM,FONINT,SOLEX,DSOLEX)
C AIM : IPRINT THE EXACT SOLUTION, CALCULATED SOLUTION,
C ---   THE ABSOLUTE AND RELATVE DIFFERENCES BETWEEN THEM,
C       THE L1, L2 AND MAX ERRORS

ERREUR:
Calculate the error between the calculated solution and the residuals.

      SUBROUTINE ERREUR(M,NFTAE,NITAE,NFB,NIB,NFNDL1,NINDL1,NFBER,
     +                  NIBER,NTBER,NOT1,NOT2)
C AIM : CALCULATE THE ERROR VECTOR

SYMBEL:
Calculate the DS B symmetric to a given DS B with respect to a line or a plane of known equation. This operation is useful in post-processing.

      SUBROUTINE SYMBEL(M,DM,NF1,NI1,NF2,NI2,NDIM,AA,BB,CC,DD)
C AIM :  SYMMETRY TRIDIM W.R.T. A PLANE OF A DS B
C ---    SYMMETRY BIDIM W.R.T. A LINE OF A DS B
C LIMITS :   ELASTIC PROBLEM
C -------    THE D.O.F. ARE DISPLACED

INTERQ:
Interpolation between the solutions obtained when solving a parabolic problem by a Gear or Runga-Kutta method (with time-step a priori unknown).

      SUBROUTINE INTERQ(M,XM,NQ,NFB,NIB,PAS,NPAS,T0,TSAV,NFBS,NIBS)
C AIM  : INTERPOLATE THE SOLUTIONS OBTAINED FROM EVO*GE(RK) USING AN ORDER NQ

UNIONB:
Post-processing of a DS resulting from the solution of a parabolic problem.

      SUBROUTINE UNIONB(M,XM,NFB1,NIB1,NFB2,NIB2,JOPTIO,NFBS,NIBS)
C AIM  : GLUE TOGETHER 2 IDS B TO FORM A SINGLE ODS B

SDB2MC:
Combining two DS B, residing in main memory or on on sequential files, linearly.

       SUBROUTINE SDB2MC(M,ALFA1D,NDSM1,NFB1,NIB1,
     +                     ALFA2D,NDSM2,NFB2,NIB2,NDSMS,NFBS,NIBS)
C AIM : CREATE ODS BS BY LINEARLY COMBINING THE TWO IDS, B1 AND B2
C ---   BS(J) <= SUM ALFA1D(I,J) * B1(I) + SUM ALFA2D(I,J) * B2(I)
C                I=1,...,NDSM1              I=1,...,NDSM2
C       FOR J=1,...,NDSMS

SDB2MS:
Combine the two DS B, residing on direct access files, linearly.

       SUBROUTINE SDB2MS(M,ALFA1D,NDSM1,NFB1,NIB1,
     +                     ALFA2D,NDSM2,NFB2,NIB2,NDSMS,NFBS,NIBS)
C AIM : CREATE ODS BS BY LINEARLY COMBINING THE TWO  IDS, B1 AND B2
C ---   BS(J) <= SUM ALFA1D(I,J) * B1(I) + SUM ALFA2D(I,J) * B2(I)
C                I=1,...,NDSM1              I=1,...,NDSM2
C       FOR J=1,...,NDSMS
C       B1 AND B2 RESIDE ON DIRECT ACCESS FILES => BS ALSO


Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Next: 1.4 DS BDCL Up: 1 Description of DS by type Prev: 1.2 DS ATRI Index Contents