Download openmm.eso

Back to the list

   1 : C OPENMM    SOURCE    JC220346  13/12/16    21:16:05     7884           
   2 : C SORMAT    SOURCE    JC220346  12/06/18    21:15:25     7403
   3 : ************************************************************************
   4 : * NOM         : openmm.eso
   5 : * DESCRIPTION : Ouverture d'un fichier au format MATRIX MARKET (.mm)
   6 : * REFERENCES  : - The Matrix Market Exchange Formats: Initial Design,
   7 : *                 Boisvert R. F., Pozo R., Remington K. A. (Dec 1996)
   8 : *               - The Rutherford-Boeing Sparse Matrix Collection,
   9 : *                 Duff I. S., Grimes R. G., Lewis G. L. (Sep 1997)
  10 : ************************************************************************
  11 : * HISTORIQUE :  4/12/2012 : JCARDO : création de la subroutine
  12 : * HISTORIQUE :
  13 : * HISTORIQUE :
  14 : ************************************************************************
  15 : * Prière de PRENDRE LE TEMPS DE COMPLÉTER LES COMMENTAIRES
  16 : * en cas de modification de ce sous-programme afin de faciliter
  17 : * la maintenance !
  18 : ************************************************************************
  19 : * APPELÉ PAR : sormat.eso
  20 : ************************************************************************
  21 : 
  22 :       SUBROUTINE OPENMM(CHNOMF,CHTYPE,CHTITR,
  23 :      &                  IVA1,IVA2,IVA3,
  24 :      &                  CVA1)
  25 : 
  26 :       IMPLICIT INTEGER(I-N)
  27 :       IMPLICIT REAL*8(A-H,O-Z)
  28 : 
  29 :       EXTERNAL LONG
  30 : 
  31 : -INC CCOPTIO
  32 : 
  33 :       CHARACTER*(*) CHNOMF,CHTYPE,CHTITR,CVA1
  34 :       CHARACTER*8   CHA8
  35 : 
  36 : 
  37 : *     ====================
  38 : *     OUVERTURE DU FICHIER
  39 : *     ====================
  40 : 
  41 :       OPEN(UNIT   = IOPER                 ,
  42 :      &     STATUS = 'UNKNOWN'             ,
  43 :      &     FILE   = CHNOMF(1:LONG(CHNOMF))//'.'//
  44 :      &              CHTYPE(1:LONG(CHTYPE))//'.mm',
  45 :      &     IOSTAT = IOS                   ,
  46 :      &     FORM   = 'FORMATTED'           )
  47 : 
  48 : 
  49 : *     ====================
  50 : *     ÉCRITURE DE L'ENTETE
  51 : *     ====================
  52 : 
  53 : *     Ligne d'entête (OBLIGATOIRE)
  54 :       WRITE(UNIT=IOPER,FMT='(A,A)')
  55 :      .'%%MatrixMarket ',CVA1
  56 : 
  57 : *     Nom du programme (commentaire facultatif)
  58 :       WRITE(UNIT=IOPER,FMT='("%",/,A,/,A)')
  59 :      .'% PROGRAMME',
  60 :      .'% CASTEM/SORMAT'
  61 : 
  62 : *     Utilisateur (commentaire facultatif)
  62 :       CALL GIBNAM(CHA8)
  62 :       CALL NETCHA(CHA8)
  63 :       WRITE(UNIT=IOPER,FMT='("%",/,A,/,A)')
  64 :      .'% UTILISATEUR',
  65 :      .'% '//CHA8(1:LONG(CHA8))
  66 : 
  67 : *     Date (commentaire facultatif)
  67 :       CALL GIBDAT(IJOUR,IMOIS,IANNEE)
  68 :       IANNEE=MOD(IANNEE,100)+2000
  69 :       WRITE(UNIT=IOPER,FMT='("%",/,A,/,A,I2.2,A1,I2.2,A1,I4)')
  70 :      .'% DATE',
  71 :      .'% ',IJOUR,'/',IMOIS,'/',IANNEE
  72 :            
  73 : *     Type de contenu
  74 :       WRITE(UNIT=IOPER,FMT='("%",/,A)')
  75 :      .'% CONTENU'
  76 :       WRITE(UNIT=IOPER,FMT='(A,A)')
  77 :      .'% ',CHTYPE(1:LONG(CHTYPE))
  78 :      
  79 : *     Titre (commentaire facultatif)
  80 :       WRITE(UNIT=IOPER,FMT='("%",/,A)')
  81 :      .'% TITRE'
  82 :       LC=LONG(CHTITR)
  83 :       IF (LC.GT.0) THEN
  84 :           WRITE(UNIT=IOPER,FMT='(A,A)')
  85 :      .    '% ',CHTITR(1:LC)
  86 :       ELSE
  87 :           WRITE(UNIT=IOPER,FMT='(A,A)')
  88 :      .    '% ',CHNOMF(1:LONG(CHNOMF))
  89 :       ENDIF
  90 :       
  91 : *     Nb de lignes et de colonnes + nb de valeurs non nulles si besoin
  92 :       IF (IVA3.EQ.0) THEN
  93 :           WRITE(IOPER,FMT='(I6,1X,I6)') IVA1,IVA2
  94 :       ELSE
  95 :           WRITE(IOPER,FMT='(I6,2(1X,I6))') IVA1,IVA2,IVA3
  96 :       ENDIF
  97 : 
  98 : 
  99 : 
 100 :       RETURN
 101 : 
 102 :       END
 103 :  

© Cast3M 2003 - All rights reserved.
Disclaimer