# f/2.3.6/test28.f

    00001 C*  This file is part of MED.
    00002 C*
    00003 C*  COPYRIGHT (C) 1999 - 2012  EDF R&D, CEA/DEN
    00004 C*  MED is free software: you can redistribute it and/or modify
    00005 C*  it under the terms of the GNU Lesser General Public License as published by
    00006 C*  the Free Software Foundation, either version 3 of the License, or
    00007 C*  (at your option) any later version.
    00008 C*
    00009 C*  MED is distributed in the hope that it will be useful,
    00010 C*  but WITHOUT ANY WARRANTY; without even the implied warranty of
    00011 C*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    00012 C*  GNU Lesser General Public License for more details.
    00013 C*
    00014 C*  You should have received a copy of the GNU Lesser General Public License
    00015 C*  along with MED.  If not, see <http://www.gnu.org/licenses/>.
    00016 C*
    00017
    00018 C       ******************************************************************************
    00019 C       * - Nom du fichier : test28.f
    00020 C       *
    00021 C       * - Description : lecture des maillages structures (grille cartesienne |
    00022 C       *                 grille de-structuree ) dans le fichier test27.med
    00023 C       *
    00024 C       *****************************************************************************
    00025         program test28
    00026 C
    00027         implicit none
    00028         include 'med.hf'
    00029 C
    00030 C
    00031         integer       cret, fid,i,j
    00032 C       ** la dimension du maillage                         **
    00033         integer       mdim,nind,nmaa,type,quoi,rep,typmaa
    00034 C       ** nom du maillage de longueur maxi MED_TAILLE_NOM  **
    00035         character*32  maa
    00036 C       ** le nombre de noeuds                              **
    00037         integer       nnoe
    00038 C       ** table des coordonnees                            **
    00039         real*8        coo(8)
    00040         character*16  comp, comp2(2)
    00041         character*16  unit, unit2(2)
    00042         character*200 desc
    00043         integer       strgri(2)
    00044 C       ** grille cartesienne                               **
    00045         integer       axe
    00046         real*8        indice(4)
    00047         integer tmp
    00048
    00049 C
    00050 C       On ouvre le fichier test27.med en lecture seule
    00051         call efouvr(fid,'test27.med',MED_LECTURE, cret)
    00052         if (cret .ne. 0 ) then
    00053            print *,'Erreur ouverture du fichier'
    00054            call efexit(-1)
    00055         endif
    00056         print *,cret
    00057
    00058         print *,'Ouverture du fichier test27.med'
    00059 C
    00060 C       Combien de maillage ?
    00061         call efnmaa(fid,nmaa,cret)
    00062         print *,cret
    00063         if (cret .ne. 0 ) then
    00064            print *,'Erreur lecture du nombre de maillage'
    00065            call efexit(-1)
    00066         endif
    00067 C
    00068 C       On boucle sur les maillages et on ne lit que les
    00069 C       maillages structures
    00070         do 10 i=1,nmaa
    00071 C
    00072 C          On repere les maillages qui nous interessent
    00073 C
    00074            call efmaai(fid,i,maa,mdim,typmaa,desc,cret)
    00075            print *,cret
    00076            if (cret .ne. 0 ) then
    00077               print *,'Erreur lecture maillage info'
    00078               call efexit(-1)
    00079            endif
    00080            print *,'Maillge de nom : ',maa
    00081            print *,'- Dimension : ',mdim
    00082            if (typmaa.eq.MED_STRUCTURE) then
    00083               print *,'- Type : MED_STRUCTURE'
    00084            else
    00085               print *,'- Type : MED_NON_STRUCTURE'
    00086            endif
    00087 C
    00088 C          On repere le type de la grille
    00089            if (typmaa.eq.MED_STRUCTURE) then
    00090               call efnagl(fid,maa,type,cret)
    00091               print *,cret
    00092               if (cret .ne. 0 ) then
    00093                  print *,'Erreur lecture nature de la grille'
    00094                  call efexit(-1)
    00095               endif
    00096               if (type.eq.MED_GRILLE_CARTESIENNE) then
    00097                  print *,'- Nature de la grille :',
    00098      &                   'MED_GRILLE_CARTESIENNE'
    00099               endif
    00100               if (type.eq.MED_GRILLE_STANDARD) then
    00101                  print *,'- Nature de la grille : MED_GRILLE_STANDARD'
    00102               endif
    00103            endif
    00104 C
    00105 C          On regarde la structure et les coordonnees de la grille MED_GRILLE_STANDARD
    00106            if ((type.eq.MED_GRILLE_STANDARD)
    00107      &           .and. (typmaa.eq.MED_STRUCTURE)) then
    00108 C
    00109               call efnema(fid,maa,MED_COOR,MED_NOEUD,0,0,nnoe,cret)
    00110               print *,cret
    00111               if (cret .ne. 0 ) then
    00112                  print *,'Erreur lecture nombre de noeud'
    00113                  call efexit(-1)
    00114               endif
    00115               print *,'- Nombre de noeuds : ',nnoe
    00116 C
    00117               call efscol(fid,maa,mdim,strgri,cret)
    00118               print *,cret
    00119               if (cret .ne. 0 ) then
    00120                  print *,'Erreur lecture structure de la grille'
    00121                  call efexit(-1)
    00122               endif
    00123               print *,'- Structure de la grille : ',strgri
    00124 C
    00125               call efcool(fid,maa,mdim,coo,
    00126      &                        MED_FULL_INTERLACE,MED_ALL,tmp,
    00127      &                        0,rep,comp2,unit2,cret)
    00128               print *,cret
    00129               if (cret .ne. 0 ) then
    00130                  print *,'Erreur lecture des coordonnees des noeuds'
    00131                  call efexit(-1)
    00132               endif
    00133               print *,'- Coordonnees :'
    00134               do 20 j=1,nnoe*mdim
    00135                  print *,coo(j)
    00136  20           continue
    00137            endif
    00138 C
    00139            if ((type.eq.MED_GRILLE_CARTESIENNE)
    00140      &          .and. (typmaa.eq.MED_STRUCTURE)) then
    00141 C
    00142               do 30 axe=1,mdim
    00143                  if (axe.eq.1) then
    00144                     quoi = MED_COOR_IND1
    00145                  endif
    00146                  if (axe.eq.2) then
    00147                     quoi = MED_COOR_IND2
    00148                  endif
    00149                  if (axe.eq.3) then
    00150                     quoi = MED_COOR_IND3
    00151                  endif
    00152 C                Lecture de la taille de l'indice selon la dimension
    00153 C                fournie par le parametre quoi
    00154                  call efnema(fid,maa,quoi,MED_NOEUD,0,0,nind,cret)
    00155                  print *,cret
    00156                  if (cret .ne. 0 ) then
    00157                     print *,'Erreur lecture taille indice'
    00158                     call efexit(-1)
    00159                  endif
    00160                  print *,'- Axe ',axe
    00161                  print *,'- Nombre d indices : ',nind
    00162 C                Lecture des indices des coordonnees de la grille
    00163                  call eficol(fid,maa,mdim,indice,nind,axe,comp,unit,
    00164      &                       cret)
    00165                  print *,cret
    00166                  if (cret .ne. 0 ) then
    00167                     print *,'Erreur lecture indices de coordonnées'
    00168                     call efexit(-1)
    00169                  endif
    00170                  print *,'- Axe ',comp
    00171                  print *,'  unite : ',unit
    00172                  do 40 j=1,nind
    00173                     print *,indice(j)
    00174  40              continue
    00175  30           continue
    00176 C
    00177            endif
    00178 C
    00179  10     continue
    00180 C
    00181 C       On ferme le fichier
    00182         call efferm (fid,cret)
    00183         print *,cret
    00184         if (cret .ne. 0 ) then
    00185            print *,'Erreur fermeture du fichier'
    00186            call efexit(-1)
    00187         endif
    00188         print *,'Fermeture du fichier'
    00189 C
    00190         end
    00191