anchor.diff:                      zr_u(:,i,:)  = (z_u(:,i,:) - z_u(:,i-1,:)) / (dz_scl(i)/2 + dz_scl(i-1)/2 )  ! if dz_scl(i-1) = 0 (and no error)  k=1 can be included
                       zr_v(:,i,:)  = (z_v(:,i,:) - z_v(:,i-1,:)) / (dz_scl(i)/2 + dz_scl(i-1)/2 )
   
  +                    ! TODO does this need to go the parallelized grid (i.e ims:ime like line 1060??)
   
                   else ! above the flat_z_height
   
  
positive.code:                         print*, dz_interface(:,i,:)
                          print*,""
                      endif
                      else if ( ANY(dz_interface(:,i,:)<=0.01) ) then
                      if (this_image()==1)  write(*,*) "WARNING: dz_interface very low (at level ",i,")"
                      endif
  
                      ! - - - - -   u/v grid calculations - - - - -
                      z_u(:,i,:)   = (sum(dz_scl(1:(i-1))) + dz_scl(i)/2)   &
                                  + h1_u  *  SINH( (smooth_height/s1)**n -  ( (sum(dz_scl(1:(i-1)))+dz_scl(i)/2) /s1)**n ) / SINH((smooth_height/s1)**n)  &! large-scale terrain
                                  + h2_u  *  SINH( (smooth_height/s2)**n -  ( (sum(dz_scl(1:(i-1)))+dz_scl(i)/2) /s2)**n ) / SINH((smooth_height/s2)**n)   ! small terrain features
  
negative.code:         class(domain_t), intent(inout)  :: this
          type(options_t), intent(in)     :: options
  
          real, allocatable :: temp(:,:,:), gamma_n(:)
          integer :: i, max_level
          real :: s, n, s1, s2, gamma, gamma_min        
          logical :: SLEVE
  
          associate(ims => this%ims,      ime => this%ime,                        &
  