C ECIMAT SOURCE MAGN 09/07/30 21:16:42 6458 SUBROUTINE ECIMAT(IMATRI,NIVIMP) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C*********************************************************************** C NOM : ECIMAT C DESCRIPTION : Impression d'un segment de type IMATRI. C Ce segment contient des groupes de C matrices élémentaires non assemblées. C cf. include SMMATRIK C C LANGAGE : ESOPE C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/TTMF) C mél : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELES : - C*********************************************************************** C ENTREES : IMATRI, NIVIMP C ENTREES/SORTIES : - C SORTIES : - C CODE RETOUR (IRET) : - C IMATRI : segment de type IMATRI (include SMMATRIK) C NIVIMP : niveau d'impression. Suivant sa valeur, on obtient : C Convention (probablement non totalement respectée) : C ---------- 0 : presque rien (numéro de pointeur) C 1 : affichage du chapeau IMATRI C 2 : affichage des données concernant les objets C pointés par IMATRI (s'il y en a) C 3 : affichage du contenu des objets vectoriels C 4 : affichage du contenu des objets matriciels C On ne change pas l'état (actif ou inactif) du segment IMATRI. C*********************************************************************** C VERSION : v1, 01/04/98, version initiale C HISTORIQUE : v1, 01/04/98, création C HISTORIQUE : 29/10/98, modif. l'état du segment reste inchangé C en sortie 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 CCOPTIO -INC SMMATRIK * Variable d'état du segment IMATRK INTEGER IMAETA * * Executable statements * IF (IMATRI.EQ.0) THEN WRITE(IOIMP,*) 'Nil pointer transmitted to ecimat' GOTO 9999 ENDIF CALL OOOETA(IMATRI,IMAETA) IF (IMAETA.NE.1) SEGACT IMATRI WRITE(IOIMP,2001) 'Segment IMATRI de pointeur ',IMATRI * NBME=LIZAFM(/2) NBSOUS=LIZAFM(/1) WRITE(IOIMP,2003) 'NBME =',NBME,'(nb groupe mat. élém.)' WRITE(IOIMP,2003) 'NBSOUS=',NBSOUS,'(nb sous-obj.)' WRITE(IOIMP,2004) 'KSPGP=',KSPGP,'KSPGD=',KSPGD WRITE(IOIMP,1999) 'Liste inconnues primales et duales' WRITE(IOIMP,2999) 'LISPRI(NBME)=',(LISPRI(N),N=1,NBME) WRITE(IOIMP,2999) 'LISDUA(NBME)=',(LISDUA(N),N=1,NBME) WRITE(IOIMP,1999) 'Matrices élémentaires non assemblées' WRITE(IOIMP,1999) 'Tableau LIZAFM(NBSOUS,NBME)' DO 4 J=1,NBME DO 5 K=1,NBSOUS IZAFM=LIZAFM(K,J) WRITE(IOIMP,2007) 'LIZAFM(',K,',',J,')=',IZAFM, $ 'pointeur IZAFM' IF ((NIVIMP.GT.2).AND.(IZAFM.NE.0)) THEN * Affichage des IZAFM SEGACT IZAFM NBEL=AM(/1) NP=AM(/2) MP=AM(/3) WRITE(IOIMP,2008) 'NBEL=',NBEL,'(nb élém)' WRITE(IOIMP,2009) 'NP =',NP,'MP =',MP, $ '(nb points)' DO 6 L=1,NBEL WRITE(IOIMP,2010) 'Matrice pour l''élément',L DO 7 N=1,NP * Affichage des AM WRITE(IOIMP,2011) (AM(L,N,M),M=1,MP) 7 CONTINUE 6 CONTINUE SEGDES IZAFM ENDIF WRITE(IOIMP,1998) 'End segment IZAFM' WRITE(IOIMP,1998) '---' 5 CONTINUE 4 CONTINUE IF (IMAETA.NE.1) SEGDES IMATRI * * Normal termination * RETURN * * Format handling * 1998 FORMAT (2X,A) 1999 FORMAT (A) 2001 FORMAT (A,1X,I6) 2003 FORMAT (2X,A,I2,1X,A) 2004 FORMAT (2X,A,I6,4X,A,I6) 2007 FORMAT (2X,A,I2,A,I2,A,I6,2X,A) 2008 FORMAT (4X,A,I6,1X,A) 2009 FORMAT (4X,A,I6,2X,A,I6,1X,A) 2010 FORMAT (6X,A,1X,I6) 2011 FORMAT (4(1X,1PE18.10)) 2999 FORMAT (2X,A,100(1X,A8)) * * Error handling * 9999 CONTINUE WRITE(IOIMP,*) 'An error was detected in subroutine ecimat' RETURN * * End of subroutine ECIMAT * END