diff --git a/src/DOUAR.f90 b/src/DOUAR.f90
index 0a15c95dfda73ad2def23b1e9e2851307d79e980..57f4ea149135357b13cf11f2fde5fe5048363720 100644
--- a/src/DOUAR.f90
+++ b/src/DOUAR.f90
@@ -63,13 +63,14 @@ type (face),dimension(6) :: cube_faces
 type (edge),dimension(:),allocatable::ed,edswap
 type (parameters) params
 type (thread) threadinfo
+type (ziso) zi
 
 integer n_iproc_st,n_iproc_end,n_iproc
 integer ldb,nrhs,n,nz_loc
 integer, dimension(:), allocatable :: ia,ja
 logical, dimension(:), allocatable :: iproc_col
 double precision, dimension(:), allocatable :: avals
-double precision, dimension(:,:), allocatable :: b,zisodisp
+double precision, dimension(:,:), allocatable :: b
 double precision, dimension(:), allocatable :: weightel
 double precision, dimension(:), allocatable :: xyz_t
 
@@ -177,7 +178,7 @@ else
    current_level=params%levelmax_oct
 end if
 
-if (params%isobc) allocate(zisodisp(2**params%levelmax_oct+1,2**params%levelmax_oct+1),stat=err) ; if (err.ne.0) call stop_run ('Error alloc zisodisp in main$')
+!if (params%isobc) allocate(zisodisp(2**params%levelmax_oct+1,2**params%levelmax_oct+1),stat=err) ; if (err.ne.0) call stop_run ('Error alloc zisodisp in main$')
 
 call show_time (total,step,inc,1,'Problem Setup$')
 
@@ -195,7 +196,7 @@ call define_surface(params,surface,threadinfo,total,step,inc,current_time)
 !------------------------------------------------------------------------------|
 !------------------------------------------------------------------------------|
 call show_time (total,step,inc,1,'define cloud$')
-call  define_cloud(cl,params,zisodisp)
+call  define_cloud(cl,params,zi)
 
 !------------------------------------------------------------------------------|
 !------------------------------------------------------------------------------|
@@ -586,7 +587,7 @@ do while (istep.le.params%nstep)
       allocate (osolve%kfixt(osolve%nnode),stat=threadinfo%err)         
  call heap (threadinfo,'osolve%kfixt','main',size(osolve%kfixt),'int',+1)
 
-      call define_bc (params,osolve,vo,zisodisp)
+      call define_bc (params,osolve,vo,zi)
 
       !------------------------------------------------------------------------|
       !------------------------------------------------------------------------|
@@ -741,7 +742,7 @@ do while (istep.le.params%nstep)
          !--------------------------------------------------------------------------------------
          if (params%debug>=2) then
             call show_time (total,step,inc,1,'write global output$')
-            call write_global_output(params,istep,iter,current_time,osolve,ov,vo,surface,cl,zisodisp,'debug')
+            call write_global_output(params,istep,iter,current_time,osolve,ov,vo,surface,cl,zi,'debug')
             call mpi_barrier (mpi_comm_world,ierr)
 !            call slices (params,osolve,ov,vo,sections,istep,iter,iter_nl)
          end if
@@ -795,7 +796,7 @@ do while (istep.le.params%nstep)
       call show_time (total,step,inc,1,'Compute isostasy and adjust vertical velocity$')
 
       allocate(ov%wpreiso(ov%nnode),stat=err) ; if (err.ne.0) call stop_run ('Error alloc ov%wpreiso in main$')
-      if (params%isostasy) call isostasy (params,weightel,ov,surface,mat,zisodisp)
+      if (params%isostasy) call isostasy (params,weightel,ov,surface,mat,zi)
 
       !--------------------------------------------------------------------------------------
       !--------------------------------------------------------------------------------------
@@ -1240,7 +1241,7 @@ do while (istep.le.params%nstep)
    !--------------------------------------------------------------------------------------
    !--------------------------------------------------------------------------------------
    call show_time (total,step,inc,1,'Write output$')
-   call write_global_output (params,istep,iter-1,current_time,osolve,ov,vo,surface,cl,zisodisp,'final')
+   call write_global_output (params,istep,iter-1,current_time,osolve,ov,vo,surface,cl,zi,'final')
    call mpi_barrier (mpi_comm_world,ierr)
 
    !--------------------------------------------------------------------------------------
@@ -1347,7 +1348,8 @@ end do
 deallocate (surface)
 deallocate (surface0)
 deallocate (mat)
-if (params%isobc) deallocate (zisodisp)
+!if (params%isobc) deallocate (zisodisp)
+if (params%isobc) deallocate (zi%zisodisp)
 deallocate (params%materialn)
 
 call heap_final (threadinfo)