[cig-commits] r20670 - in seismo/2D/SPECFEM2D/trunk/UTILS: . visualization

dkomati1 at geodynamics.org dkomati1 at geodynamics.org
Sun Sep 2 15:20:08 PDT 2012


Author: dkomati1
Date: 2012-09-02 15:20:08 -0700 (Sun, 02 Sep 2012)
New Revision: 20670

Added:
   seismo/2D/SPECFEM2D/trunk/UTILS/visualization/assemble_all_movie_images_ImageMagick_montage.csh
Removed:
   seismo/2D/SPECFEM2D/trunk/UTILS/rotate_mesh_for_absorbing_conditions.f90
Log:
added UTILS/visualization/assemble_all_movie_images_ImageMagick_montage.csh


Deleted: seismo/2D/SPECFEM2D/trunk/UTILS/rotate_mesh_for_absorbing_conditions.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/UTILS/rotate_mesh_for_absorbing_conditions.f90	2012-09-02 08:06:22 UTC (rev 20669)
+++ seismo/2D/SPECFEM2D/trunk/UTILS/rotate_mesh_for_absorbing_conditions.f90	2012-09-02 22:20:08 UTC (rev 20670)
@@ -1,437 +0,0 @@
-
- program rotate_mesh
-
- implicit none
-
-!! DK DK Dec 2011: rotate mesh elements to make sure topological absorbing surface is aligned with physical absorbing surface
-
-!! DK DK Dec 2011: this code still has a problem with mesh corners, there is does not seem to work (elsewhere it works fine):
-
-! element            5        2295  must be rotated 2 times top
-! element           13        2585  must be rotated 2 times top
-! element            1        2099  must be rotated 2 times bottom
-! element           11        2789  must be rotated 2 times bottom
-! element           10        2295  must be rotated 2 times left
-! element           33        2789  must be rotated 2 times left
-! element            6        2099  must be rotated 2 times right
-! element           37        2585  must be rotated 2 times right
-
-integer, parameter :: ngnod = 9
-
-integer :: nspec, nglob, nabs
-
-integer :: i,ispec,iglob,idummy,i1,i2,inode,iswap
-
-logical :: found_this_point
-
-integer, dimension(:,:), allocatable :: ibool,ibool_rotated
-
-integer, dimension(:), allocatable :: ielem,iglob1,iglob2
-
-open(unit=12,file='Mesh_ht_test1',status='old')
-read(12,*) nspec
-allocate(ibool(ngnod,nspec))
-allocate(ibool_rotated(ngnod,nspec))
-do ispec = 1,nspec
-  read(12,*) ibool(1,ispec), ibool(2,ispec), ibool(3,ispec), ibool(4,ispec), &
-                  ibool(5,ispec), ibool(6,ispec), ibool(7,ispec), ibool(8,ispec), ibool(9,ispec)
-enddo
-close(12)
-
-!!!!!!!!!!! rotate for TOP surface !!!!!!!!!!!!!
-
-! first make a copy of ibool (for all elements that will be unchanged)
-  ibool_rotated(:,:) = ibool(:,:)
-
-open(unit=12,file='Surf_top_ht_test1',status='old')
-read(12,*) nabs
-allocate(ielem(nabs))
-allocate(iglob1(nabs))
-allocate(iglob2(nabs))
-do i = 1,nabs
-  read(12,*) ielem(i),idummy,iglob1(i),iglob2(i)
-enddo
-close(12)
-
-! look for rotations needed
-do i = 1,nabs
-  ispec = ielem(i)
-
-  found_this_point = .false.
-  do inode = 1,4
-    if(ibool(inode,ispec) == iglob1(i)) then
-      i1 = inode
-      found_this_point = .true.
-      exit
-    endif
-  enddo
-  if(.not. found_this_point) stop 'point not found'
-
-  found_this_point = .false.
-  do inode = 1,4
-    if(ibool(inode,ispec) == iglob2(i)) then
-      i2 = inode
-      found_this_point = .true.
-      exit
-    endif
-  enddo
-  if(.not. found_this_point) stop 'point not found'
-
-! swap points if needed for clarity, to avoid testing both cases each time below
-  if(i1 > i2) then
-    iswap = i1
-    i1 = i2
-    i2 = iswap
-  endif
-
-! test orientation
-  if(i1 == 3 .and. i2 == 4) then
-    print *,'orientation of element ',i,' is already good'
-
-  else if (i1 == 1 .and. i2 == 4) then ! for this one, remember that we have swapped, thus 4 1 is 1 4
-    print *,'element ',i,' must be rotated 3 times'
-    ibool_rotated(4,ispec) = ibool(1,ispec)
-    ibool_rotated(1,ispec) = ibool(2,ispec)
-    ibool_rotated(2,ispec) = ibool(3,ispec)
-    ibool_rotated(3,ispec) = ibool(4,ispec)
-    ibool_rotated(8,ispec) = ibool(5,ispec)
-    ibool_rotated(5,ispec) = ibool(6,ispec)
-    ibool_rotated(6,ispec) = ibool(7,ispec)
-    ibool_rotated(7,ispec) = ibool(8,ispec)
-! 9th point is at the element center and thus never changes when we rotate an element
-
-  else if (i1 == 1 .and. i2 == 2) then
-    print *,'element ',i,ispec,' must be rotated 2 times top'
-    ibool_rotated(3,ispec) = ibool(1,ispec)
-    ibool_rotated(4,ispec) = ibool(2,ispec)
-    ibool_rotated(1,ispec) = ibool(3,ispec)
-    ibool_rotated(2,ispec) = ibool(4,ispec)
-    ibool_rotated(7,ispec) = ibool(5,ispec)
-    ibool_rotated(8,ispec) = ibool(6,ispec)
-    ibool_rotated(5,ispec) = ibool(7,ispec)
-    ibool_rotated(6,ispec) = ibool(8,ispec)
-! 9th point is at the element center and thus never changes when we rotate an element
-
-  else if (i1 == 2 .and. i2 == 3) then
-    print *,'element ',i,' must be rotated 1 time'
-    ibool_rotated(2,ispec) = ibool(1,ispec)
-    ibool_rotated(3,ispec) = ibool(2,ispec)
-    ibool_rotated(4,ispec) = ibool(3,ispec)
-    ibool_rotated(1,ispec) = ibool(4,ispec)
-    ibool_rotated(6,ispec) = ibool(5,ispec)
-    ibool_rotated(7,ispec) = ibool(6,ispec)
-    ibool_rotated(8,ispec) = ibool(7,ispec)
-    ibool_rotated(5,ispec) = ibool(8,ispec)
-! 9th point is at the element center and thus never changes when we rotate an element
-
-  else
-    stop 'problem in an element'
-  endif
-
-enddo
-
-deallocate(ielem)
-deallocate(iglob1)
-deallocate(iglob2)
-
-!!!!!!!!!!! rotate for BOTTOM surface !!!!!!!!!!!!!
-
-! copy the changes above back to ibool, which is used again below
-  ibool(:,:) = ibool_rotated(:,:)
-
-open(unit=12,file='Surf_bottom_ht_test1',status='old')
-read(12,*) nabs
-allocate(ielem(nabs))
-allocate(iglob1(nabs))
-allocate(iglob2(nabs))
-do i = 1,nabs
-  read(12,*) ielem(i),idummy,iglob1(i),iglob2(i)
-enddo
-close(12)
-
-! look for rotations needed
-do i = 1,nabs
-  ispec = ielem(i)
-
-  found_this_point = .false.
-  do inode = 1,4
-    if(ibool(inode,ispec) == iglob1(i)) then
-      i1 = inode
-      found_this_point = .true.
-      exit
-    endif
-  enddo
-  if(.not. found_this_point) stop 'point not found'
-
-  found_this_point = .false.
-  do inode = 1,4
-    if(ibool(inode,ispec) == iglob2(i)) then
-      i2 = inode
-      found_this_point = .true.
-      exit
-    endif
-  enddo
-  if(.not. found_this_point) stop 'point not found'
-
-! swap points if needed for clarity, to avoid testing both cases each time below
-  if(i1 > i2) then
-    iswap = i1
-    i1 = i2
-    i2 = iswap
-  endif
-
-! test orientation
-  if(i1 == 1 .and. i2 == 2) then
-    print *,'orientation of element ',i,' is already good'
-
-  else if (i1 == 2 .and. i2 == 3) then
-    print *,'element ',i,' must be rotated 3 times'
-    ibool_rotated(4,ispec) = ibool(1,ispec)
-    ibool_rotated(1,ispec) = ibool(2,ispec)
-    ibool_rotated(2,ispec) = ibool(3,ispec)
-    ibool_rotated(3,ispec) = ibool(4,ispec)
-    ibool_rotated(8,ispec) = ibool(5,ispec)
-    ibool_rotated(5,ispec) = ibool(6,ispec)
-    ibool_rotated(6,ispec) = ibool(7,ispec)
-    ibool_rotated(7,ispec) = ibool(8,ispec)
-! 9th point is at the element center and thus never changes when we rotate an element
-
-  else if (i1 == 3 .and. i2 == 4) then
-    print *,'element ',i,ispec,' must be rotated 2 times bottom'
-    ibool_rotated(3,ispec) = ibool(1,ispec)
-    ibool_rotated(4,ispec) = ibool(2,ispec)
-    ibool_rotated(1,ispec) = ibool(3,ispec)
-    ibool_rotated(2,ispec) = ibool(4,ispec)
-    ibool_rotated(7,ispec) = ibool(5,ispec)
-    ibool_rotated(8,ispec) = ibool(6,ispec)
-    ibool_rotated(5,ispec) = ibool(7,ispec)
-    ibool_rotated(6,ispec) = ibool(8,ispec)
-! 9th point is at the element center and thus never changes when we rotate an element
-
-  else if (i1 == 1 .and. i2 == 4) then ! for this one, remember that we have swapped, thus 4 1 is 1 4
-    print *,'element ',i,' must be rotated 1 time'
-    ibool_rotated(2,ispec) = ibool(1,ispec)
-    ibool_rotated(3,ispec) = ibool(2,ispec)
-    ibool_rotated(4,ispec) = ibool(3,ispec)
-    ibool_rotated(1,ispec) = ibool(4,ispec)
-    ibool_rotated(6,ispec) = ibool(5,ispec)
-    ibool_rotated(7,ispec) = ibool(6,ispec)
-    ibool_rotated(8,ispec) = ibool(7,ispec)
-    ibool_rotated(5,ispec) = ibool(8,ispec)
-! 9th point is at the element center and thus never changes when we rotate an element
-
-  else
-    stop 'problem in an element'
-  endif
-
-enddo
-
-deallocate(ielem)
-deallocate(iglob1)
-deallocate(iglob2)
-
-!!!!!!!!!!! rotate for LEFT surface !!!!!!!!!!!!!
-
-! copy the changes above back to ibool, which is used again below
-  ibool(:,:) = ibool_rotated(:,:)
-
-open(unit=12,file='Surf_left_ht_test1',status='old')
-read(12,*) nabs
-allocate(ielem(nabs))
-allocate(iglob1(nabs))
-allocate(iglob2(nabs))
-do i = 1,nabs
-  read(12,*) ielem(i),idummy,iglob1(i),iglob2(i)
-enddo
-close(12)
-
-! look for rotations needed
-do i = 1,nabs
-  ispec = ielem(i)
-
-  found_this_point = .false.
-  do inode = 1,4
-    if(ibool(inode,ispec) == iglob1(i)) then
-      i1 = inode
-      found_this_point = .true.
-      exit
-    endif
-  enddo
-  if(.not. found_this_point) stop 'point not found'
-
-  found_this_point = .false.
-  do inode = 1,4
-    if(ibool(inode,ispec) == iglob2(i)) then
-      i2 = inode
-      found_this_point = .true.
-      exit
-    endif
-  enddo
-  if(.not. found_this_point) stop 'point not found'
-
-! swap points if needed for clarity, to avoid testing both cases each time below
-  if(i1 > i2) then
-    iswap = i1
-    i1 = i2
-    i2 = iswap
-  endif
-
-! test orientation
-  if(i1 == 1 .and. i2 == 4) then ! for this one, remember that we have swapped, thus 4 1 is 1 4
-    print *,'orientation of element ',i,' is already good'
-
-  else if (i1 == 1 .and. i2 == 2) then
-    print *,'element ',i,' must be rotated 3 times'
-    ibool_rotated(4,ispec) = ibool(1,ispec)
-    ibool_rotated(1,ispec) = ibool(2,ispec)
-    ibool_rotated(2,ispec) = ibool(3,ispec)
-    ibool_rotated(3,ispec) = ibool(4,ispec)
-    ibool_rotated(8,ispec) = ibool(5,ispec)
-    ibool_rotated(5,ispec) = ibool(6,ispec)
-    ibool_rotated(6,ispec) = ibool(7,ispec)
-    ibool_rotated(7,ispec) = ibool(8,ispec)
-! 9th point is at the element center and thus never changes when we rotate an element
-
-  else if (i1 == 2 .and. i2 == 3) then
-    print *,'element ',i,ispec,' must be rotated 2 times left'
-    ibool_rotated(3,ispec) = ibool(1,ispec)
-    ibool_rotated(4,ispec) = ibool(2,ispec)
-    ibool_rotated(1,ispec) = ibool(3,ispec)
-    ibool_rotated(2,ispec) = ibool(4,ispec)
-    ibool_rotated(7,ispec) = ibool(5,ispec)
-    ibool_rotated(8,ispec) = ibool(6,ispec)
-    ibool_rotated(5,ispec) = ibool(7,ispec)
-    ibool_rotated(6,ispec) = ibool(8,ispec)
-! 9th point is at the element center and thus never changes when we rotate an element
-
-  else if (i1 == 3 .and. i2 == 4) then
-    print *,'element ',i,' must be rotated 1 time'
-    ibool_rotated(2,ispec) = ibool(1,ispec)
-    ibool_rotated(3,ispec) = ibool(2,ispec)
-    ibool_rotated(4,ispec) = ibool(3,ispec)
-    ibool_rotated(1,ispec) = ibool(4,ispec)
-    ibool_rotated(6,ispec) = ibool(5,ispec)
-    ibool_rotated(7,ispec) = ibool(6,ispec)
-    ibool_rotated(8,ispec) = ibool(7,ispec)
-    ibool_rotated(5,ispec) = ibool(8,ispec)
-! 9th point is at the element center and thus never changes when we rotate an element
-
-  else
-    stop 'problem in an element'
-  endif
-
-enddo
-
-deallocate(ielem)
-deallocate(iglob1)
-deallocate(iglob2)
-
-!!!!!!!!!!! rotate for RIGHT surface !!!!!!!!!!!!!
-
-! copy the changes above back to ibool, which is used again below
-  ibool(:,:) = ibool_rotated(:,:)
-
-open(unit=12,file='Surf_right_ht_test1',status='old')
-read(12,*) nabs
-allocate(ielem(nabs))
-allocate(iglob1(nabs))
-allocate(iglob2(nabs))
-do i = 1,nabs
-  read(12,*) ielem(i),idummy,iglob1(i),iglob2(i)
-enddo
-close(12)
-
-! look for rotations needed
-do i = 1,nabs
-  ispec = ielem(i)
-
-  found_this_point = .false.
-  do inode = 1,4
-    if(ibool(inode,ispec) == iglob1(i)) then
-      i1 = inode
-      found_this_point = .true.
-      exit
-    endif
-  enddo
-  if(.not. found_this_point) stop 'point not found'
-
-  found_this_point = .false.
-  do inode = 1,4
-    if(ibool(inode,ispec) == iglob2(i)) then
-      i2 = inode
-      found_this_point = .true.
-      exit
-    endif
-  enddo
-  if(.not. found_this_point) stop 'point not found'
-
-! swap points if needed for clarity, to avoid testing both cases each time below
-  if(i1 > i2) then
-    iswap = i1
-    i1 = i2
-    i2 = iswap
-  endif
-
-! test orientation
-  if(i1 == 2 .and. i2 == 3) then
-    print *,'orientation of element ',i,' is already good'
-
-  else if (i1 == 3 .and. i2 == 4) then
-    print *,'element ',i,' must be rotated 3 times'
-    ibool_rotated(4,ispec) = ibool(1,ispec)
-    ibool_rotated(1,ispec) = ibool(2,ispec)
-    ibool_rotated(2,ispec) = ibool(3,ispec)
-    ibool_rotated(3,ispec) = ibool(4,ispec)
-    ibool_rotated(8,ispec) = ibool(5,ispec)
-    ibool_rotated(5,ispec) = ibool(6,ispec)
-    ibool_rotated(6,ispec) = ibool(7,ispec)
-    ibool_rotated(7,ispec) = ibool(8,ispec)
-! 9th point is at the element center and thus never changes when we rotate an element
-
-  else if (i1 == 1 .and. i2 == 4) then ! for this one, remember that we have swapped, thus 4 1 is 1 4
-    print *,'element ',i,ispec,' must be rotated 2 times right'
-    ibool_rotated(3,ispec) = ibool(1,ispec)
-    ibool_rotated(4,ispec) = ibool(2,ispec)
-    ibool_rotated(1,ispec) = ibool(3,ispec)
-    ibool_rotated(2,ispec) = ibool(4,ispec)
-    ibool_rotated(7,ispec) = ibool(5,ispec)
-    ibool_rotated(8,ispec) = ibool(6,ispec)
-    ibool_rotated(5,ispec) = ibool(7,ispec)
-    ibool_rotated(6,ispec) = ibool(8,ispec)
-! 9th point is at the element center and thus never changes when we rotate an element
-
-  else if (i1 == 1 .and. i2 == 2) then
-    print *,'element ',i,' must be rotated 1 time'
-    ibool_rotated(2,ispec) = ibool(1,ispec)
-    ibool_rotated(3,ispec) = ibool(2,ispec)
-    ibool_rotated(4,ispec) = ibool(3,ispec)
-    ibool_rotated(1,ispec) = ibool(4,ispec)
-    ibool_rotated(6,ispec) = ibool(5,ispec)
-    ibool_rotated(7,ispec) = ibool(6,ispec)
-    ibool_rotated(8,ispec) = ibool(7,ispec)
-    ibool_rotated(5,ispec) = ibool(8,ispec)
-! 9th point is at the element center and thus never changes when we rotate an element
-
-  else
-    stop 'problem in an element'
-  endif
-
-enddo
-
-deallocate(ielem)
-deallocate(iglob1)
-deallocate(iglob2)
-
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-! save the rotated mesh file
-open(unit=12,file='Mesh_ht_test1_rotated',status='unknown')
-write(12,*) nspec
-do ispec = 1,nspec
-  write(12,*) ibool_rotated(1,ispec), ibool_rotated(2,ispec), ibool_rotated(3,ispec), ibool_rotated(4,ispec), &
-            ibool_rotated(5,ispec), ibool_rotated(6,ispec), ibool_rotated(7,ispec), ibool_rotated(8,ispec), ibool_rotated(9,ispec)
-enddo
-close(12)
-
-end
-

Added: seismo/2D/SPECFEM2D/trunk/UTILS/visualization/assemble_all_movie_images_ImageMagick_montage.csh
===================================================================
--- seismo/2D/SPECFEM2D/trunk/UTILS/visualization/assemble_all_movie_images_ImageMagick_montage.csh	                        (rev 0)
+++ seismo/2D/SPECFEM2D/trunk/UTILS/visualization/assemble_all_movie_images_ImageMagick_montage.csh	2012-09-02 22:20:08 UTC (rev 20670)
@@ -0,0 +1,4 @@
+#!/bin/csh
+
+montage -gravity Center -page A4 -geometry +0+0 -tile 2x2 -strip -depth 8 image*.jpg final_image.jpg
+


Property changes on: seismo/2D/SPECFEM2D/trunk/UTILS/visualization/assemble_all_movie_images_ImageMagick_montage.csh
___________________________________________________________________
Name: svn:executable
   + *



More information about the CIG-COMMITS mailing list