Suiv.: 1.4 La SD BDCL
Sup.: 1 Description des SD par type
Préc.: 1.2 La SD ATRI
Index
Table des matières
Cette SD est l'organisation choisie pour stocker un tableau de coefficients ayant la structure d'un vecteur (second membre d'un système, solution, etc.).
En pratique, le tableau, noté B, est de la forme B(NDSM,NTDL) où NDSM désigne par exemple le nombre de cas de charge ou de seconds membres et NTDL le nombre de degrés de liberté.
La SD B est composée de cinq tableaux dont l'organisation est prédéfinie.
Tableau B0 : Informations générales.
De type entier, ce tableau possède 32 variables. Il contient une description générale du travail (titre, date, nom), de la SD B (type, niveau, ...) et indique la présence ou non du tableau B1.
le titre du travail en 20 mots de 4 caractères,
la date de création en 2 mots de 4 caractères,
le nom du créateur en 6 mots de 4 caractères,
le type de la SD,
le paramètre de niveau de la SD,
un paramètre réservé,
le nombre de tableaux supplémentaires associés à la SD
(ils seront décrits dans le tableau B1).
Tableau B1 : Descripteur des éventuels tableaux supplémentaires.
Ce tableau de type entier existe si NTACM (cf. B0) est non nul. Il contient, pour chaque tableau à décrire, 22 variables. En règle générale, il n'y a pas de tableaux associés sauf pour certaines applications où l'on a besoin de conserver dans la SD des valeurs n'entrant pas dans le cadre de sa définition standard.
Si le tableau B1 existe, il contient séquentiellement :
Boucle i de 1 à NTACM
Tableau B2 : Description générale du tableau de coefficients.
Ce tableau de type entier contient 11 valeurs.
le type du tableau B4,
le nombre de ses indices (fixé à 2),
la valeur maximale de son premier indice (par exemple NDSM, le nombre de cas de charge),
la valeur maximale de son second indice (par exemple NTDL si B4 n'a qu'une page),
le code de découpage en blocs du tableau B4 avec :
le nombre de blocs,
le nombre de noeuds,
le nombre de tableaux B4 lorsque la SD est sur fichier,
le nombre de degrés de liberté par noeud s'il est constant, 0 sinon,
le nombre de degrés de liberté ou la valeur maximale du second indice du tableau B4 lorsque les NBLOC blocs sont considérés,
le code de stockage du tableau B4 avec :
Tableau B3 : Pointeur sur les blocs.
Ce tableau de type entier contient NBLOC+1 variables indiquant la segmentation du tableau B4.
Tableau B4 : Les coefficients du(des) tableau(x).
De type NTYP ce tableau contient les NDSM*M2 valeurs de chaque page.
Une SD, résidant en mémoire centrale, est écrite en M.S. sur fichier d'accès séquentiel ou direct.
Cette SD est de catégorie 2, seuls ses 4 premiers tableaux ainsi que les éventuels tableaux associés (décrits dans son tableau B1) sont lus (module SDLECT) ou écrits (module SDECRI) :
READ(NFB) LE,(M(IAB4-1+I),I=1,LE)
ou
DOUBLE PRECISION B4(LE)
READ(NFB) NBREMO*LE,(B4(I),I=1,LE)
Le contenu (total ou partiel) d'une SD B peut être imprimé en utilisant les modules suivants :
SUBROUTINE IMB(M,NFB,NIB,IMPRE) C BUT : IMRESSION DES TABLEAUX DE LA SD B, CROISSANTE AVEC IMPRE C --- FICHIER NFB (OU MC SI 0), NIVEAU NIB
SUBROUTINE IMBND0(M,XM,DM,NFMAIL,NIMAIL,NFB,NIB,IMPR) C BUT : IMPRIMER LE CONTENU D'UNE SD B (CAS ND = 0) C --- (VOIR IMB SI ND DIFFERENT DE 0) (NDSM = 1 !!!)
SUBROUTINE INFOBB(M,IOPT,TYPESD,NIVEAU,TAB2,TAB3,TAB4,DTAB4, + NUMREC) C BUT : DONNER DES INFORMATIONS SUR UNE SD B
Les préprocesseurs IMAGXX et INFOXX permettent l'appel conversationnel de IMB, IMBND0 et INFOBB respectivement.
SUBROUTINE PRINTB(M,NFB,NIB,NFTYNO,NITYNO,TSIFO,IND1,ITAB,IND2, + NFNDL1,NINDL1,IMPR) C BUT : IMPRESSION DE LA SD B AVEC DESCRIPTION DES TYPE DE NOEUDS
Ce module utilise la SD TYNO que l'on peut créer en utilisant le module COTYNO (cf. la SD TYNO).
La SD B est généralement le résultat d'un calcul effectué par tel ou tel module (assemblage d'un second membre, solution d'un système, ...) ; elle peut aussi, dans certains cas, être construite à la main (par exemple pour donner la solution initiale d'un problème transitoire).
Création à la main :
SUBROUTINE COSDB(M,NVEC,U,V,LUV,ND,NFB,NIB,NTAB) C BUT : CREER UNE SD B A PARTIR DE UN OU DEUX VECTEURS
SUBROUTINE COSNOB(M,XM,NFNOPO,NINOPO,NVEC,U0,U1,DU0,DU1,ND, + NFB,NIB,NTAB,FONINT,VALCLR,VALCLD) C BUT : CREER UNE SD B A PARTIR DE NOPO ET D'UNE FONCTION C --- (MEME BUT QUE COSDB) C U(I) ( V(I) ) = FONCTION(X(I),Y(I),Z(I)) AU POINT I DE LA SD NOPO
SUBROUTINE COSMCB (M,XM,DM,NFMAIL,NIMAIL,NFCOOR,NICOOR,NVEC, + NFBS,NIBS,NTAB,FONINT,VALCLR,VALCLD,U0,U1,DU0,DU1) C BUT : VOIR COSNOB, ICI ND = 0 EST POSSIBLE
Le préprocesseur COSDXX permet l'appel conversationnel de ces modules.
Assemblage de tableaux élémentaires :
SUBROUTINE ASEMBV(M,NOT,NDSM,NCODSB,NFTAE,NITAE,NFNDL1,NINDL1, + NFB,NIB,NTB) C BUT : ASSEMBLAGE DES SECONDS MEMBRES C --- REELS SIMPLE OU DOUBLE PRECISION COMPLEXE SIMPLE PRECISION C TOUS LES TABLEAUX RESIDENT SIMULTANEMENT EN M.C.
SUBROUTINE ASMBMS(M,NOT,NDSM,NCODBB,NFTAE,NITAE,NFNDL1,NINDL1, + NFB,NIB,NTB) C BUT : ASSEMBLAGE DES SECONDS MEMBRES C --- REELS SIMPLE OU DOUBLE PRECISION C COMPLEXE SIMPLE PRECISION C LA SDS B RESIDE SUR MEMOIRE SECONDAIRE A ACCES DIRECT
Le préprocesseur ASSEXX permet l'appel conversationnel de ces modules. Par ailleurs, les préprocesseurs de résolution (par exemple CHOLXX) incluent la phase d'assemblage, par suite, on n'effectuera soi-même cette opération que dans certains cas particuliers (pour dessiner la structure de la matrice ou pour les calculs de valeurs/vecteurs propres d'un problème).
Il existe de nombreux utilitaires permettant de manipuler le contenu d'une SD B.
SUBROUTINE BDISEQ(M,INOUT,NFBDI,NIBDI,NFBSEQ,NIBSEQ) C BUT : TRANSFORMER UN FICHIER SD B DIRECT EN SEQUENTIEL OU INVERSE
SUBROUTINE MAXDLB(M,XM,DM,NFB,NIB,MAXI,NIMPR) C BUT : IMPRIMER PAR D.L. LOCAL LES NIMPR NOEUDS DE RESULTAT OPTIMUM C --- SELON MAXI
SUBROUTINE NORME (M,XM,DM,NFMAIL,NIMAIL,NFCOOR,NICOOR,NFB,NIB, + NFBS,NIBS,INDICB,NSM,FONINT,SOLEX,DSOLEX) C BUT : IMPRIMER LA SOLUTION EXACTE, LA SOLUTION CALCULEE, C --- LES DIFFERENCES ABSOLUES ET RELATIVES ENTRE ELLES, C LES ERREURS L1,L2 ET MAX
SUBROUTINE ERREUR(M,NFTAE,NITAE,NFB,NIB,NFNDL1,NINDL1,NFBER, + NIBER,NTBER,NOT1,NOT2) C BUT : CALCUL DU VECTEUR ERREUR.
SUBROUTINE SYMBEL(M,DM,NF1,NI1,NF2,NI2,NDIM,AA,BB,CC,DD) C BUT : SYMETRIE TRIDIM PAR RAPPORT A UN PLAN D UNE SD B C --- SYMETRIE BIDIM PAR RAPPORT A UNE DROITE D UNE SD B C LIMITES : PROBLEME ELASTIQUE C ------- LES D.L. SONT DES DEPLACEMENTS
SUBROUTINE INTERQ(M,XM,NQ,NFB,NIB,PAS,NPAS,T0,TSAV,NFBS,NIBS) C BUT : INTERPOLER A L ORDRE NQ LES SOLUTIONS ISSUES DE EVO*GE(RK)
SUBROUTINE UNIONB(M,XM,NFB1,NIB1,NFB2,NIB2,JOPTIO,NFBS,NIBS) C BUT : RECOLLER 2 SDE B EN UNE SEULE SDS B
SUBROUTINE SDB2MC(M,ALFA1D,NDSM1,NFB1,NIB1, + ALFA2D,NDSM2,NFB2,NIB2,NDSMS,NFBS,NIBS) C BUT : FORMER LA SDS BS COMBINAISON LINEAIRE DES SDE B1 ET B2 C --- BS(J) <= SOMME ALFA1D(I,J) * B1(I) + SOMME ALFA2D(I,J) * B2(I) C I=1,...,NDSM1 I=1,...,NDSM2 C POUR J=1,...,NDSMS
SUBROUTINE SDB2MS(M,ALFA1D,NDSM1,NFB1,NIB1, + ALFA2D,NDSM2,NFB2,NIB2,NDSMS,NFBS,NIBS) C BUT : FORMER LA SDS BS COMBINAISON LINEAIRE DES SDE B1 ET B2 C --- BS(J) <= SOMME ALFA1D(I,J) * B1(I) + SOMME ALFA2D(I,J) * B2(I) C I=1,...,NDSM1 I=1,...,NDSM2 C POUR J=1,...,NDSMS C B1 ET B2 RESIDENT SUR DES FICHIERS A ACCES DIRECT => BS AUSSI