C RELR10 SOURCE PV 16/11/17 22:01:18 9180 SUBROUTINE RELR10(MLIN,MATASS,IMPR,IRET) IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C*********************************************************************** C NOM : RELR10 C DESCRIPTION : Assemblage d'un rigidité C C C C LANGAGE : ESOPE C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) C mél : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELES : C APPELES (E/S) : C APPELES (BLAS) : C APPELES (CALCUL) : C APPELE PAR : C*********************************************************************** C SYNTAXE GIBIANE : C ENTREES : C ENTREES/SORTIES : C SORTIES : C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 26/06/2003, version initiale C HISTORIQUE : v1, 26/06/2003, création C HISTORIQUE : C HISTORIQUE : C*********************************************************************** C Prière de PRENDRE LE TEMPS de compléter les commentaires C en cas de modification de ce sous-programme afin de faciliter C la maintenance ! C*********************************************************************** -INC PPARAM -INC CCOPTIO -INC SMRIGID POINTEUR MLIN.MRIGID * Includes persos CBEGININCLUDE SMMINC SEGMENT MINC INTEGER NPOS(NPT+1) INTEGER MPOS(NPT,NBI+1) ENDSEGMENT SEGMENT IMINC INTEGER LNUPO (NDDL) INTEGER LNUINC(NDDL) ENDSEGMENT CENDINCLUDE SMMINC POINTEUR MINCP.MINC POINTEUR MINCD.MINC CBEGININCLUDE SMPMORS SEGMENT PMORS INTEGER IA (NTT+1) INTEGER JA (NJA) ENDSEGMENT CENDINCLUDE SMPMORS POINTEUR PROFM.PMORS CBEGININCLUDE SMIZA SEGMENT IZA REAL*8 A(NBVA) ENDSEGMENT CENDINCLUDE SMIZA POINTEUR VALM.IZA CBEGININCLUDE SMMATASS SEGMENT MATASS POINTEUR KJPOPA.MLENTI POINTEUR LINCPA.MLMOTS POINTEUR MINCPA.MINC POINTEUR KJPODA.MLENTI POINTEUR LINCDA.MLMOTS POINTEUR MINCDA.MINC POINTEUR PROFMA.PMORS POINTEUR VALMA.IZA ENDSEGMENT CENDINCLUDE SMMATASS * -INC SMLENTI POINTEUR KJSPGP.MLENTI POINTEUR KJSPGD.MLENTI -INC SMLMOTS POINTEUR LINCP.MLMOTS POINTEUR LINCD.MLMOTS * INTEGER IMPR,IRET * * Executable statements * IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans relr10.eso' * * Construction de : * - l'ensemble des points sur lesquels il y a au moins une inconnue * primale : KJSPGP * - l'ensemble des points sur lesquels il y a au moins une inconnue * duale : KJSPGD * CALL RELR11(MLIN,KJSPGP,KJSPGD,IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * SEGPRT,KJSPGP * SEGPRT,KJSPGD * * Construction de : * - l'ensemble des noms d'inconnues primales : LINCP * - l'ensemble des noms d'inconnues duales : LINCD * CALL RELR12(MLIN,LINCP,LINCD,IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * SEGPRT,LINCP * SEGPRT,LINCD * * Construction des tableaux de correspondance ddl <-> (point, nom de * variable) : * - pour les inconnues primales : MINCP * - pour les inconnues duales : MINCD * CALL RELR13(MLIN,KJSPGP,KJSPGD,LINCP,LINCD, $ MINCP,MINCD, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * SEGPRT,MINCP * SEGPRT,MINCD * * Construction du profil Morse de la matrice assemblée * Celui-ci est ordonné (les numeros de colonnes * dans IA sont en ordre croissant) * Remplissage des valeurs de la matrice Morse * On pourrait reprendre ce qu'il y a dans prase3 * pour accélérer la formation du profil. CALL RELR14(MLIN,KJSPGP,KJSPGD,LINCP,LINCD, $ MINCP,MINCD, $ PROFM,VALM, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * SEGPRT,PROFM * SEGPRT,VALM * * Remplissage de MATASS * SEGINI MATASS MATASS.KJPOPA=KJSPGP MATASS.LINCPA=LINCP MATASS.MINCPA=MINCP MATASS.KJPODA=KJSPGD MATASS.LINCDA=LINCD MATASS.MINCDA=MINCD MATASS.PROFMA=PROFM MATASS.VALMA =VALM SEGDES MATASS * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine relr10' RETURN * * End of subroutine RELR10 * END