2.3.6/test28.f

Aller à la documentation de ce fichier.
00001 C*  This file is part of MED.
00002 C*
00003 C*  COPYRIGHT (C) 1999 - 2015  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         

Généré le Thu Oct 8 14:26:17 2015 pour MED fichier par  doxygen 1.6.1