From 4da64452efea307660ca9fd8d777633470916275 Mon Sep 17 00:00:00 2001
From: Dave Whipp <dwhipp@dal.ca>
Date: Wed, 25 May 2011 15:23:51 +0000
Subject: [PATCH] Tweaked to read all output values from write_global_output
 subroutine; Added scaling of model dimensions for nested models

---
 src/VTK/post.f90 | 78 ++++++++++++++++++++++++++++++++----------------
 1 file changed, 53 insertions(+), 25 deletions(-)

diff --git a/src/VTK/post.f90 b/src/VTK/post.f90
index 8b311e7c..b861e9a1 100644
--- a/src/VTK/post.f90
+++ b/src/VTK/post.f90
@@ -91,19 +91,21 @@ integer,dimension(:),allocatable::invoid,elvoid,rtf,ftr
 integer myicon(100),nstep,ndir,iter,ii,lsf,levmax
 
 logical,dimension(:),allocatable::influid,do_it,subset_leaves,instrain
+logical :: nest
 
 character clsf*3,c4*4,cc4*4,dir*128
-character cs
+character cs,nestin
 
 double precision :: eps,dil,current_time,activation_time,zmin,xx,yy,zz,maxe2d,dist
 double precision, allocatable, dimension (:) :: ov_nodee2d, ov_nodecrit
 double precision, allocatable, dimension (:) :: countnode 
-double precision,dimension(:,:),allocatable::s,n1,n2,n3,zisodisp,zisoslx
+double precision,dimension(:,:),allocatable::s,n1,n2,n3,zisodisp
 double precision,dimension(:,:,:),allocatable::strain,strainn
 double precision,dimension(:),allocatable::xi,yi,zi,ui,vi,wi,si,ei
 double precision,dimension(:),allocatable::s11,s12,s13,s22,s23,s33,str11,str12,str13,str22,str23,str33
 double precision,dimension(:),allocatable::azimuth1,azimuth3,dip1,dip3
 double precision zmax,dz,l1,l2,l3,n11,n12,n13,n21,n22,n23,n31,n32,n33,con,dxy
+double precision :: sselemx,sselemy,sselemz,xminls,yminls,zminls
 
 double precision dxyz,x,y,z,xcut,dumpdp
 integer icut 
@@ -148,6 +150,18 @@ case default
    stop
 end select
 
+write (*,*) 'Is this a nested model? (y/n)'
+read (*,'(a)') nestin
+select case (trim(nestin))
+case ('y','Y','yes','Yes')
+   nest=.true.
+case ('n','N','no','No')
+   nest=.false.
+case default 
+   write (*,*) 'Error: Response must be either "y" or "n"'
+   stop
+end select
+
 !==============================================================================
 !==============================================================================
 
@@ -362,30 +376,39 @@ end if
 
 end do
 
-if (output_zisodisp==1) then
+!=============================
+!=====[cloud information]=====
+!=============================
+
+read (7) (dumpdp,      & 
+            dumpdp,    &
+            dumpdp,    &
+            dumpdp,    &
+            dumpdp,    & 
+            dumpdp,    &
+            dumpdp,    &
+            dumpdp,    &
+            dumpdp,    &
+            dumpdp,    &
+            dumpi,     &
+            i=1,npcl)
 
-   read (7) (dumpdp,      & 
-                dumpdp,    &
-                dumpdp,    &
-                dumpdp,    &
-                dumpdp,    & 
-                dumpdp,    &
-                dumpdp,    &
-                dumpdp,    &
-                dumpdp,    &
-                dumpdp,    &
-                dumpi,     &
-                i=1,npcl)
-
-   ! read isostasy basal displacement array - dwhipp 11/09
-   read (7) nb
-   dxy=1.d0/real(nb)
-   allocate(zisodisp(nb+1,nb+1),zisoslx(nb+1,nb+1))
-   if (1==1) read (7) ((zisodisp(i,j),j=1,nb+1),i=1,nb+1)
-endif
+!================================
+!=====[isostasy information]=====
+!================================
 
-close(7)
+read (7) nb
+dxy=1.d0/real(nb)
+allocate(zisodisp(nb+1,nb+1))
+read (7) ((zisodisp(i,j),j=1,nb+1),i=1,nb+1)
 
+!============================
+!=====[nest information]=====
+!============================
+
+read(7) sselemx,sselemy,sselemz,xminls,yminls,zminls
+
+close(7)
 
 !==============================================================================
 !==============================================================================
@@ -417,6 +440,13 @@ do i=1,ov%nnode
    end if
 end do
 
+! Convert coordinates if using a nest
+if (nest) then
+  ov%x=ov%x*sselemx+xminls
+  ov%y=ov%y*sselemy+yminls
+  ov%z=ov%z*sselemz+zminls
+endif
+
 !==============================================================================
 !==============================================================================
 
@@ -433,9 +463,7 @@ write(*,'(a,2f30.20)') 'u                 range : ',minval(ov%u(1:nn)),       ma
 write(*,'(a,2f30.20)') 'v                 range : ',minval(ov%v(1:nn)),       maxval(ov%v(1:nn))
 write(*,'(a,2f30.20)') 'w                 range : ',minval(ov%w(1:nn)),       maxval(ov%w(1:nn))
 write(*,'(a,2f30.20)') 'w (iso)           range : ',minval(ov%wiso(1:nn)),    maxval(ov%wiso(1:nn))
-! Line below added by dwhipp - 12/09 
 write(*,'(a,2f30.20)') 'pressure          range : ',minval(ov%pressure),      maxval(ov%pressure) 
-! Line below added by dwhipp - 12/09 
 write(*,'(a,2f30.20)') 'smooth pressure   range : ',minval(ov%spressure),     maxval(ov%spressure)
 write(*,'(a,2f30.20)') 'pressure (nodes)  range : ',minval(ov%nodal_pressure),maxval(ov%nodal_pressure)
 write(*,'(a,2f30.20)') 'e2d               range : ',minval(ov%e2d),           maxval(ov%e2d)
-- 
GitLab