[cig-commits] r19714 - in seismo/3D/SPECFEM3D/trunk: examples/BENCHMARK_CLAERBOUT_ADJOINT/ACOUSTIC/in_data_files/meshfem3D_files examples/BENCHMARK_CLAERBOUT_ADJOINT/ELASTIC/in_data_files/meshfem3D_files examples/meshfem3D_examples/many_interfaces examples/meshfem3D_examples/simple_model examples/meshfem3D_examples/socal1D examples/meshfem3D_examples/socal1D/example_deep examples/meshfem3D_examples/socal1D/example_utm in_data_files/meshfem3D_files src/meshfem3D

danielpeter at geodynamics.org danielpeter at geodynamics.org
Sat Mar 3 13:52:01 PST 2012


Author: danielpeter
Date: 2012-03-03 13:52:01 -0800 (Sat, 03 Mar 2012)
New Revision: 19714

Modified:
   seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ACOUSTIC/in_data_files/meshfem3D_files/Mesh_Par_file
   seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ELASTIC/in_data_files/meshfem3D_files/Mesh_Par_file
   seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/many_interfaces/Mesh_Par_file
   seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/simple_model/Mesh_Par_file
   seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/Mesh_Par_file
   seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/Mesh_Par_file_001
   seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/Mesh_Par_file_042
   seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/Mesh_Par_file_168
   seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/example_deep/Mesh_Par_file_deep
   seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/example_deep/Mesh_Par_file_deep_honor60km
   seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/example_utm/Mesh_Par_file_utm
   seismo/3D/SPECFEM3D/trunk/in_data_files/meshfem3D_files/Mesh_Par_file
   seismo/3D/SPECFEM3D/trunk/src/meshfem3D/create_regions_mesh.f90
   seismo/3D/SPECFEM3D/trunk/src/meshfem3D/create_visual_files.f90
   seismo/3D/SPECFEM3D/trunk/src/meshfem3D/meshfem3D.f90
   seismo/3D/SPECFEM3D/trunk/src/meshfem3D/read_parameter_file.f90
   seismo/3D/SPECFEM3D/trunk/src/meshfem3D/save_databases.f90
Log:
adds flag for VTK mesh output files in xmeshfem3D

Modified: seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ACOUSTIC/in_data_files/meshfem3D_files/Mesh_Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ACOUSTIC/in_data_files/meshfem3D_files/Mesh_Par_file	2012-03-02 23:51:21 UTC (rev 19713)
+++ seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ACOUSTIC/in_data_files/meshfem3D_files/Mesh_Par_file	2012-03-03 21:52:01 UTC (rev 19714)
@@ -32,6 +32,7 @@
 # create mesh files for visualisation or further checking
 CREATE_ABAQUS_FILES             = .false.
 CREATE_DX_FILES                 = .false.
+CREATE_VTK_FILES                = .false.
 
 # path to store the databases files
 LOCAL_PATH                      = ../in_out_files/DATABASES_MPI/

Modified: seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ELASTIC/in_data_files/meshfem3D_files/Mesh_Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ELASTIC/in_data_files/meshfem3D_files/Mesh_Par_file	2012-03-02 23:51:21 UTC (rev 19713)
+++ seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ELASTIC/in_data_files/meshfem3D_files/Mesh_Par_file	2012-03-03 21:52:01 UTC (rev 19714)
@@ -32,6 +32,7 @@
 # create mesh files for visualisation or further checking
 CREATE_ABAQUS_FILES             = .false.
 CREATE_DX_FILES                 = .false.
+CREATE_VTK_FILES                = .false.
 
 # path to store the databases files
 LOCAL_PATH                      = ../in_out_files/DATABASES_MPI/

Modified: seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/many_interfaces/Mesh_Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/many_interfaces/Mesh_Par_file	2012-03-02 23:51:21 UTC (rev 19713)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/many_interfaces/Mesh_Par_file	2012-03-03 21:52:01 UTC (rev 19714)
@@ -32,6 +32,7 @@
 # create mesh files for visualisation or further checking
 CREATE_ABAQUS_FILES             = .false.
 CREATE_DX_FILES                 = .false.
+CREATE_VTK_FILES                = .false.
 
 # path to store the databases files
 LOCAL_PATH                      = ../in_out_files/DATABASES_MPI

Modified: seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/simple_model/Mesh_Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/simple_model/Mesh_Par_file	2012-03-02 23:51:21 UTC (rev 19713)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/simple_model/Mesh_Par_file	2012-03-03 21:52:01 UTC (rev 19714)
@@ -32,6 +32,7 @@
 # create mesh files for visualisation or further checking
 CREATE_ABAQUS_FILES             = .true.
 CREATE_DX_FILES                 = .true.
+CREATE_VTK_FILES                = .false.
 
 # path to store the databases files
 LOCAL_PATH                      = ../in_out_files/DATABASES_MPI

Modified: seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/Mesh_Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/Mesh_Par_file	2012-03-02 23:51:21 UTC (rev 19713)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/Mesh_Par_file	2012-03-03 21:52:01 UTC (rev 19714)
@@ -32,6 +32,7 @@
 # create mesh files for visualisation or further checking
 CREATE_ABAQUS_FILES             = .true.
 CREATE_DX_FILES                 = .true.
+CREATE_VTK_FILES                = .false.
 
 # path to store the databases files
 LOCAL_PATH                      = ../in_out_files/DATABASES_MPI

Modified: seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/Mesh_Par_file_001
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/Mesh_Par_file_001	2012-03-02 23:51:21 UTC (rev 19713)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/Mesh_Par_file_001	2012-03-03 21:52:01 UTC (rev 19714)
@@ -32,6 +32,7 @@
 # create mesh files for visualisation or further checking
 CREATE_ABAQUS_FILES             = .true.
 CREATE_DX_FILES                 = .true.
+CREATE_VTK_FILES                = .false.
 
 # path to store the databases files
 LOCAL_PATH                      = ../in_out_files/DATABASES_MPI

Modified: seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/Mesh_Par_file_042
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/Mesh_Par_file_042	2012-03-02 23:51:21 UTC (rev 19713)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/Mesh_Par_file_042	2012-03-03 21:52:01 UTC (rev 19714)
@@ -32,6 +32,7 @@
 # create mesh files for visualisation or further checking
 CREATE_ABAQUS_FILES             = .true.
 CREATE_DX_FILES                 = .true.
+CREATE_VTK_FILES                = .false.
 
 # path to store the databases files
 LOCAL_PATH                      = ../in_out_files/DATABASES_MPI

Modified: seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/Mesh_Par_file_168
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/Mesh_Par_file_168	2012-03-02 23:51:21 UTC (rev 19713)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/Mesh_Par_file_168	2012-03-03 21:52:01 UTC (rev 19714)
@@ -32,6 +32,7 @@
 # create mesh files for visualisation or further checking
 CREATE_ABAQUS_FILES             = .true.
 CREATE_DX_FILES                 = .true.
+CREATE_VTK_FILES                = .false.
 
 # path to store the databases files
 LOCAL_PATH                      = ../in_out_files/DATABASES_MPI

Modified: seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/example_deep/Mesh_Par_file_deep
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/example_deep/Mesh_Par_file_deep	2012-03-02 23:51:21 UTC (rev 19713)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/example_deep/Mesh_Par_file_deep	2012-03-03 21:52:01 UTC (rev 19714)
@@ -32,6 +32,7 @@
 # create mesh files for visualisation or further checking
 CREATE_ABAQUS_FILES             = .true.
 CREATE_DX_FILES                 = .true.
+CREATE_VTK_FILES                = .false.
 
 # path to store the databases files
 LOCAL_PATH                      = ../in_out_files/DATABASES_MPI

Modified: seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/example_deep/Mesh_Par_file_deep_honor60km
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/example_deep/Mesh_Par_file_deep_honor60km	2012-03-02 23:51:21 UTC (rev 19713)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/example_deep/Mesh_Par_file_deep_honor60km	2012-03-03 21:52:01 UTC (rev 19714)
@@ -32,6 +32,7 @@
 # create mesh files for visualisation or further checking
 CREATE_ABAQUS_FILES             = .true.
 CREATE_DX_FILES                 = .true.
+CREATE_VTK_FILES                = .false.
 
 # path to store the databases files
 LOCAL_PATH                      = ../in_out_files/DATABASES_MPI

Modified: seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/example_utm/Mesh_Par_file_utm
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/example_utm/Mesh_Par_file_utm	2012-03-02 23:51:21 UTC (rev 19713)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/example_utm/Mesh_Par_file_utm	2012-03-03 21:52:01 UTC (rev 19714)
@@ -32,6 +32,7 @@
 # create mesh files for visualisation or further checking
 CREATE_ABAQUS_FILES             = .true.
 CREATE_DX_FILES                 = .true.
+CREATE_VTK_FILES                = .false.
 
 # path to store the databases files
 LOCAL_PATH                      = ../in_out_files/DATABASES_MPI

Modified: seismo/3D/SPECFEM3D/trunk/in_data_files/meshfem3D_files/Mesh_Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/in_data_files/meshfem3D_files/Mesh_Par_file	2012-03-02 23:51:21 UTC (rev 19713)
+++ seismo/3D/SPECFEM3D/trunk/in_data_files/meshfem3D_files/Mesh_Par_file	2012-03-03 21:52:01 UTC (rev 19714)
@@ -32,6 +32,7 @@
 # create mesh files for visualisation or further checking
 CREATE_ABAQUS_FILES             = .false.
 CREATE_DX_FILES                 = .false.
+CREATE_VTK_FILES                = .false.
 
 # path to store the databases files
 LOCAL_PATH                      = ../in_out_files/DATABASES_MPI

Modified: seismo/3D/SPECFEM3D/trunk/src/meshfem3D/create_regions_mesh.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/meshfem3D/create_regions_mesh.f90	2012-03-02 23:51:21 UTC (rev 19713)
+++ seismo/3D/SPECFEM3D/trunk/src/meshfem3D/create_regions_mesh.f90	2012-03-03 21:52:01 UTC (rev 19714)
@@ -31,15 +31,15 @@
 
 
   subroutine create_regions_mesh(xgrid,ygrid,zgrid,ibool, &
-       xstore,ystore,zstore,iproc_xi,iproc_eta,addressing,nspec, &
-       NGLOB_AB,npointot, &
-       NEX_PER_PROC_XI,NEX_PER_PROC_ETA,NER, &
-       NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX,NSPEC2D_BOTTOM,NSPEC2D_TOP, &
-       NPROC_XI,NPROC_ETA, &
-       nsubregions,subregions,nblayers,ner_layer,NMATERIALS,material_properties, &
-       myrank,LOCAL_PATH,UTM_X_MIN,UTM_X_MAX,UTM_Y_MIN,UTM_Y_MAX,Z_DEPTH_BLOCK, &
-       CREATE_ABAQUS_FILES,CREATE_DX_FILES,&
-       USE_REGULAR_MESH,NDOUBLINGS,ner_doublings)
+                               xstore,ystore,zstore,iproc_xi,iproc_eta,addressing,nspec, &
+                               NGLOB_AB,npointot, &
+                               NEX_PER_PROC_XI,NEX_PER_PROC_ETA,NER, &
+                               NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX,NSPEC2D_BOTTOM,NSPEC2D_TOP, &
+                               NPROC_XI,NPROC_ETA, &
+                               nsubregions,subregions,nblayers,ner_layer,NMATERIALS,material_properties, &
+                               myrank,LOCAL_PATH,UTM_X_MIN,UTM_X_MAX,UTM_Y_MIN,UTM_Y_MAX,Z_DEPTH_BLOCK, &
+                               CREATE_ABAQUS_FILES,CREATE_DX_FILES,CREATE_VTK_FILES, &
+                               USE_REGULAR_MESH,NDOUBLINGS,ner_doublings)
 
     ! create the different regions of the mesh
 
@@ -59,7 +59,7 @@
     integer npointot
 
     logical USE_REGULAR_MESH
-    logical CREATE_ABAQUS_FILES,CREATE_DX_FILES
+    logical CREATE_ABAQUS_FILES,CREATE_DX_FILES,CREATE_VTK_FILES
 
     integer NDOUBLINGS
     integer, dimension(2) :: ner_doublings
@@ -365,6 +365,7 @@
     ! check that we assign a material to each element
     if(any(true_material_num(:) == -1000)) stop 'Element of undefined material found'
 
+    ! puts x,y,z locations into 1D arrays
     do ispec=1,nspec
        ieoff = NGLLCUBE*(ispec-1)
        ilocnum = 0
@@ -380,12 +381,23 @@
        enddo
     enddo
 
+    ! sorts xp,yp,zp in lexicographical order (increasing values)
     call get_global(nspec,xp,yp,zp,iglob,locval,ifseg,nglob,npointot,UTM_X_MIN,UTM_X_MAX)
 
+    ! checks nglob range with pre-computed values
+    ! note: if mesh squeezes elements such that we can't distinguish two close-by mesh points anymore
+    !          the total number of mesh points might have changed
+    if(nglob /= NGLOB_AB) then
+       print*,'error nglob: sorted value ',nglob,'differs from pre-computed ',NGLOB_AB
+       call exit_MPI(myrank,'incorrect global number, please check mesh input parameters')
+    end if
+
     ! put in classical format
     allocate(nodes_coords(nglob,3),stat=ier)
     if( ier /= 0 ) stop 'error allocating array nodes_coords'
-
+    nodes_coords(:,:) = 0.0d0
+    ibool(:,:,:,:) = 0
+    
     do ispec=1,nspec
        ieoff = NGLLCUBE*(ispec-1)
        ilocnum = 0
@@ -401,28 +413,39 @@
           enddo
        enddo
     enddo
-
-    if(minval(ibool(:,:,:,:)) /= 1 .or. maxval(ibool(:,:,:,:)) /= NGLOB_AB) then
-       print*,maxval(ibool(:,:,:,:)) ,NGLOB_AB
-       call exit_MPI(myrank,'incorrect global numbering')
+    
+    ! checks ibool range
+    if(minval(ibool(:,:,:,:)) /= 1 .or. maxval(ibool(:,:,:,:)) /= nglob) then
+       print*,'error ibool: maximum value ',maxval(ibool(:,:,:,:)) ,'should be ',nglob
+       call exit_MPI(myrank,'incorrect global ibool numbering')
     end if
 
-    call create_visual_files(CREATE_ABAQUS_FILES,CREATE_DX_FILES,nspec,nglob,prname,nodes_coords,ibool,true_material_num)
+    ! outputs mesh file for visualization
+    call create_visual_files(CREATE_ABAQUS_FILES,CREATE_DX_FILES,CREATE_VTK_FILES, &
+                            nspec,nglob, &
+                            prname,nodes_coords,ibool,true_material_num)
 
+    ! stores boundary informations
     call store_boundaries(myrank,iboun,nspec, &
          ibelm_xmin,ibelm_xmax,ibelm_ymin,ibelm_ymax,ibelm_bottom,ibelm_top, &
          nspec2D_xmin,nspec2D_xmax,nspec2D_ymin,nspec2D_ymax, &
          NSPEC2D_BOTTOM,NSPEC2D_TOP, &
          NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX)
 
+    ! checks mesh resolution
     VP_MAX = maxval(material_properties(:,2))
     call check_mesh_quality(myrank,VP_MAX,nglob,nspec,nodes_coords(:,1),nodes_coords(:,2),nodes_coords(:,3),ibool)
 
-      call save_databases(prname,nspec,nglob,iproc_xi,iproc_eta,NPROC_XI,NPROC_ETA,addressing,iMPIcut_xi,iMPIcut_eta,&
-           ibool,nodes_coords,true_material_num,nspec2D_xmin,nspec2D_xmax,nspec2D_ymin,nspec2D_ymax,NSPEC2D_BOTTOM,NSPEC2D_TOP,&
-           NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX,ibelm_xmin,ibelm_xmax,ibelm_ymin,ibelm_ymax,ibelm_bottom,ibelm_top,&
-           NMATERIALS,material_properties)
+    ! saves mesh as databases file
+    call save_databases(prname,nspec,nglob,iproc_xi,iproc_eta, &
+                      NPROC_XI,NPROC_ETA,addressing,iMPIcut_xi,iMPIcut_eta,&
+                      ibool,nodes_coords,true_material_num, &
+                      nspec2D_xmin,nspec2D_xmax,nspec2D_ymin,nspec2D_ymax,NSPEC2D_BOTTOM,NSPEC2D_TOP,&
+                      NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX, &
+                      ibelm_xmin,ibelm_xmax,ibelm_ymin,ibelm_ymax,ibelm_bottom,ibelm_top,&
+                      NMATERIALS,material_properties)
 
+
   end subroutine create_regions_mesh
 
 end module createRegMesh

Modified: seismo/3D/SPECFEM3D/trunk/src/meshfem3D/create_visual_files.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/meshfem3D/create_visual_files.f90	2012-03-02 23:51:21 UTC (rev 19713)
+++ seismo/3D/SPECFEM3D/trunk/src/meshfem3D/create_visual_files.f90	2012-03-03 21:52:01 UTC (rev 19714)
@@ -25,15 +25,16 @@
 !=====================================================================
 
 
-  subroutine create_visual_files(CREATE_ABAQUS_FILES,CREATE_DX_FILES,nspec,nglob,&
-       prname,nodes_coords,ibool,true_material_num)
+  subroutine create_visual_files(CREATE_ABAQUS_FILES,CREATE_DX_FILES,CREATE_VTK_FILES,&
+                                nspec,nglob,&
+                                prname,nodes_coords,ibool,true_material_num)
 
   implicit none
 
   include "constants.h"
 
 ! Mesh files for visualization
-  logical CREATE_ABAQUS_FILES,CREATE_DX_FILES
+  logical CREATE_ABAQUS_FILES,CREATE_DX_FILES,CREATE_VTK_FILES
 
 ! number of spectral elements in each block
   integer nspec
@@ -52,7 +53,6 @@
 !  ---------------
   integer i,ipoin,ispec
 
-
   if(CREATE_ABAQUS_FILES) then
 
      open(unit=64,file=prname(1:len_trim(prname))//'.INP',status='unknown',action='write',form='formatted')
@@ -71,7 +71,7 @@
              ibool(2,2,2,ispec)
      end do
      close(64)
-
+     
   end if
 
 
@@ -127,7 +127,49 @@
 
   end if
 
+  if( CREATE_VTK_FILES ) then
+    ! vtk file output    
+    open(66,file=prname(1:len_trim(prname))//'.vtk',status='unknown')
+    write(66,'(a)') '# vtk DataFile Version 3.1'
+    write(66,'(a)') 'material model VTK file'
+    write(66,'(a)') 'ASCII'
+    write(66,'(a)') 'DATASET UNSTRUCTURED_GRID'
+    write(66, '(a,i12,a)') 'POINTS ', nglob, ' float'
+    do ipoin = 1,nglob
+      write(66,*) sngl(nodes_coords(ipoin,1)),sngl(nodes_coords(ipoin,2)),sngl(nodes_coords(ipoin,3))
+    enddo    
+    write(66,*) ""
+
+    ! note: indices for vtk start at 0
+    write(66,'(a,i12,i12)') "CELLS ",nspec,nspec*9
+    do ispec=1,nspec
+      write(66,'(9i12)') 8, &
+            ibool(1,1,1,ispec)-1,ibool(2,1,1,ispec)-1,ibool(2,2,1,ispec)-1,ibool(1,2,1,ispec)-1,&
+            ibool(1,1,2,ispec)-1,ibool(2,1,2,ispec)-1,ibool(2,2,2,ispec)-1,ibool(1,2,2,ispec)-1
+    enddo
+    write(66,*) ""
+
+    ! type: hexahedrons
+    write(66,'(a,i12)') "CELL_TYPES ",nspec
+    write(66,*) (12,ispec=1,nspec)
+    write(66,*) ""
+
+    write(66,'(a,i12)') "CELL_DATA ",nspec
+    write(66,'(a)') "SCALARS elem_val float"
+    write(66,'(a)') "LOOKUP_TABLE default"
+    do ispec = 1,nspec
+      write(66,*) true_material_num(ispec)
+    enddo
+    write(66,*) ""
+    close(66)
+  
+  endif
+
+
+
   call sync_all()
 
 
   end subroutine create_visual_files
+
+

Modified: seismo/3D/SPECFEM3D/trunk/src/meshfem3D/meshfem3D.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/meshfem3D/meshfem3D.f90	2012-03-02 23:51:21 UTC (rev 19713)
+++ seismo/3D/SPECFEM3D/trunk/src/meshfem3D/meshfem3D.f90	2012-03-03 21:52:01 UTC (rev 19714)
@@ -239,7 +239,7 @@
   logical SUPPRESS_UTM_PROJECTION,USE_REGULAR_MESH
 
 ! Mesh files for visualization
-  logical CREATE_ABAQUS_FILES,CREATE_DX_FILES
+  logical CREATE_ABAQUS_FILES,CREATE_DX_FILES,CREATE_VTK_FILES
 
 ! doublings parameters
   integer NDOUBLINGS
@@ -331,12 +331,12 @@
 
  ! nullify(subregions,material_properties)
   call read_parameter_file(LATITUDE_MIN,LATITUDE_MAX,LONGITUDE_MIN,LONGITUDE_MAX, &
-        UTM_X_MIN,UTM_X_MAX,UTM_Y_MIN,UTM_Y_MAX,Z_DEPTH_BLOCK, &
-        NEX_XI,NEX_ETA,NPROC_XI,NPROC_ETA,UTM_PROJECTION_ZONE, &
-        LOCAL_PATH,SUPPRESS_UTM_PROJECTION,&
-        INTERFACES_FILE,NSUBREGIONS,subregions,NMATERIALS,material_properties, &
-        CREATE_ABAQUS_FILES,CREATE_DX_FILES,&
-        USE_REGULAR_MESH,NDOUBLINGS,ner_doublings)
+                          UTM_X_MIN,UTM_X_MAX,UTM_Y_MIN,UTM_Y_MAX,Z_DEPTH_BLOCK, &
+                          NEX_XI,NEX_ETA,NPROC_XI,NPROC_ETA,UTM_PROJECTION_ZONE, &
+                          LOCAL_PATH,SUPPRESS_UTM_PROJECTION,&
+                          INTERFACES_FILE,NSUBREGIONS,subregions,NMATERIALS,material_properties, &
+                          CREATE_ABAQUS_FILES,CREATE_DX_FILES,CREATE_VTK_FILES, &
+                          USE_REGULAR_MESH,NDOUBLINGS,ner_doublings)
 
   if (sizeprocs == 1 .and. (NPROC_XI /= 1 .or. NPROC_ETA /= 1)) then
     stop 'must have NPROC_XI = NPROC_ETA = 1 for a serial run'
@@ -393,12 +393,12 @@
 
 ! compute other parameters based upon values read
   call compute_parameters(NER,NEX_XI,NEX_ETA,NPROC_XI,NPROC_ETA, &
-      NPROC,NEX_PER_PROC_XI,NEX_PER_PROC_ETA, &
-      NSPEC_AB,NSPEC2D_A_XI,NSPEC2D_B_XI, &
-      NSPEC2D_A_ETA,NSPEC2D_B_ETA, &
-      NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX,NSPEC2D_BOTTOM,NSPEC2D_TOP, &
-      NPOIN2DMAX_XMIN_XMAX,NPOIN2DMAX_YMIN_YMAX,NGLOB_AB,&
-      USE_REGULAR_MESH,NDOUBLINGS,ner_doublings)
+                        NPROC,NEX_PER_PROC_XI,NEX_PER_PROC_ETA, &
+                        NSPEC_AB,NSPEC2D_A_XI,NSPEC2D_B_XI, &
+                        NSPEC2D_A_ETA,NSPEC2D_B_ETA, &
+                        NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX,NSPEC2D_BOTTOM,NSPEC2D_TOP, &
+                        NPOIN2DMAX_XMIN_XMAX,NPOIN2DMAX_YMIN_YMAX,NGLOB_AB,&
+                        USE_REGULAR_MESH,NDOUBLINGS,ner_doublings)
 
 ! check that the code is running with the requested nb of processes
   if(sizeprocs /= NPROC) then
@@ -743,15 +743,15 @@
   if(ier /= 0) call exit_MPI(myrank,'not enough memory to allocate arrays')
 
   call create_regions_mesh(xgrid,ygrid,zgrid,ibool, &
-           xstore,ystore,zstore,iproc_xi,iproc_eta,addressing,nspec, &
-           NGLOB_AB,npointot, &
-           NEX_PER_PROC_XI,NEX_PER_PROC_ETA,NER, &
-           NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX,NSPEC2D_BOTTOM,NSPEC2D_TOP, &
-           NPROC_XI,NPROC_ETA, &
-           NSUBREGIONS,subregions,number_of_layers,ner_layer,NMATERIALS,material_properties, &
-           myrank,LOCAL_PATH,UTM_X_MIN,UTM_X_MAX,UTM_Y_MIN,UTM_Y_MAX,Z_DEPTH_BLOCK,&
-           CREATE_ABAQUS_FILES,CREATE_DX_FILES,&
-           USE_REGULAR_MESH,NDOUBLINGS,ner_doublings)
+                         xstore,ystore,zstore,iproc_xi,iproc_eta,addressing,nspec, &
+                         NGLOB_AB,npointot, &
+                         NEX_PER_PROC_XI,NEX_PER_PROC_ETA,NER, &
+                         NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX,NSPEC2D_BOTTOM,NSPEC2D_TOP, &
+                         NPROC_XI,NPROC_ETA, &
+                         NSUBREGIONS,subregions,number_of_layers,ner_layer,NMATERIALS,material_properties, &
+                         myrank,LOCAL_PATH,UTM_X_MIN,UTM_X_MAX,UTM_Y_MIN,UTM_Y_MAX,Z_DEPTH_BLOCK,&
+                         CREATE_ABAQUS_FILES,CREATE_DX_FILES,CREATE_VTK_FILES, &
+                         USE_REGULAR_MESH,NDOUBLINGS,ner_doublings)
 
   if(myrank == 0) then
 ! compare to exact theoretical value (bottom is always flat)

Modified: seismo/3D/SPECFEM3D/trunk/src/meshfem3D/read_parameter_file.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/meshfem3D/read_parameter_file.f90	2012-03-02 23:51:21 UTC (rev 19713)
+++ seismo/3D/SPECFEM3D/trunk/src/meshfem3D/read_parameter_file.f90	2012-03-03 21:52:01 UTC (rev 19714)
@@ -28,12 +28,12 @@
 contains
 
   subroutine read_parameter_file(LATITUDE_MIN,LATITUDE_MAX,LONGITUDE_MIN,LONGITUDE_MAX, &
-        UTM_X_MIN,UTM_X_MAX,UTM_Y_MIN,UTM_Y_MAX,Z_DEPTH_BLOCK, &
-        NEX_XI,NEX_ETA,NPROC_XI,NPROC_ETA,UTM_PROJECTION_ZONE, &
-        LOCAL_PATH,SUPPRESS_UTM_PROJECTION,&
-        INTERFACES_FILE,NSUBREGIONS,subregions,NMATERIALS,material_properties,&
-        CREATE_ABAQUS_FILES,CREATE_DX_FILES,&
-        USE_REGULAR_MESH,NDOUBLINGS,ner_doublings)
+                                UTM_X_MIN,UTM_X_MAX,UTM_Y_MIN,UTM_Y_MAX,Z_DEPTH_BLOCK, &
+                                NEX_XI,NEX_ETA,NPROC_XI,NPROC_ETA,UTM_PROJECTION_ZONE, &
+                                LOCAL_PATH,SUPPRESS_UTM_PROJECTION,&
+                                INTERFACES_FILE,NSUBREGIONS,subregions,NMATERIALS,material_properties,&
+                                CREATE_ABAQUS_FILES,CREATE_DX_FILES,CREATE_VTK_FILES, &
+                                USE_REGULAR_MESH,NDOUBLINGS,ner_doublings)
 
   implicit none
 
@@ -45,7 +45,7 @@
   double precision LATITUDE_MIN,LATITUDE_MAX,LONGITUDE_MIN,LONGITUDE_MAX
 
   logical SUPPRESS_UTM_PROJECTION,USE_REGULAR_MESH
-  logical CREATE_ABAQUS_FILES,CREATE_DX_FILES
+  logical CREATE_ABAQUS_FILES,CREATE_DX_FILES,CREATE_VTK_FILES
 
   integer NDOUBLINGS
   integer, dimension(2) :: ner_doublings
@@ -150,6 +150,8 @@
   if(err_occurred() /= 0) return
   call read_value_logical(IIN,IGNORE_JUNK,CREATE_DX_FILES, 'mesher.CREATE_DX_FILES')
   if(err_occurred() /= 0) return
+  call read_value_logical(IIN,IGNORE_JUNK,CREATE_VTK_FILES, 'mesher.CREATE_VTK_FILES')
+  if(err_occurred() /= 0) return
 
 ! file in which we store the databases
   call read_value_string(IIN,IGNORE_JUNK,LOCAL_PATH, 'LOCAL_PATH')

Modified: seismo/3D/SPECFEM3D/trunk/src/meshfem3D/save_databases.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/meshfem3D/save_databases.f90	2012-03-02 23:51:21 UTC (rev 19713)
+++ seismo/3D/SPECFEM3D/trunk/src/meshfem3D/save_databases.f90	2012-03-03 21:52:01 UTC (rev 19714)
@@ -25,10 +25,13 @@
 !=====================================================================
 
 
-  subroutine save_databases(prname,nspec,nglob,iproc_xi,iproc_eta,NPROC_XI,NPROC_ETA,addressing,iMPIcut_xi,iMPIcut_eta,&
-     ibool,nodes_coords,true_material_num,nspec2D_xmin,nspec2D_xmax,nspec2D_ymin,nspec2D_ymax,NSPEC2D_BOTTOM,NSPEC2D_TOP,&
-     NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX,ibelm_xmin,ibelm_xmax,ibelm_ymin,ibelm_ymax,ibelm_bottom,ibelm_top,&
-     NMATERIALS,material_properties)
+  subroutine save_databases(prname,nspec,nglob,iproc_xi,iproc_eta, &
+                            NPROC_XI,NPROC_ETA,addressing,iMPIcut_xi,iMPIcut_eta,&
+                            ibool,nodes_coords,true_material_num, &
+                            nspec2D_xmin,nspec2D_xmax,nspec2D_ymin,nspec2D_ymax,NSPEC2D_BOTTOM,NSPEC2D_TOP,&
+                            NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX, &
+                            ibelm_xmin,ibelm_xmax,ibelm_ymin,ibelm_ymax,ibelm_bottom,ibelm_top,&
+                            NMATERIALS,material_properties)
 
   implicit none
 



More information about the CIG-COMMITS mailing list