diff --git a/tensorproductmultigrid_Source/communication.f90 b/tensorproductmultigrid_Source/communication.f90
index 5c6a85ab0abf684bed838628d9fc304b24cf7b40..b5b2091857c91d9c08322e01e9b531dddbd1bc6a 100644
--- a/tensorproductmultigrid_Source/communication.f90
+++ b/tensorproductmultigrid_Source/communication.f90
@@ -49,6 +49,7 @@ public::comm_initialise
 public::comm_finalise
 public::scalarprod_mnh
 public::scalarprod
+public::print_scalaprod2
 public::boundary_mnh
 public::haloswap_mnh
 public::haloswap
@@ -570,6 +571,26 @@ contains
     s = global_sum
   end subroutine scalarprod
 !==================================================================
+!  Pritn Scalar product^2  of 1 fields
+!==================================================================
+  subroutine print_scalaprod2(l,m, a, message )
+    implicit none
+    integer, intent(in) :: l,m
+    type(scalar3d), intent(in) :: a
+    character(len=*) , intent(in) :: message
+
+    !local 
+    real(kind=rl) :: s
+
+    call scalarprod_mnh(m, a, a, s)
+    s = sqrt(s)
+    if (i_am_master_mpi) then
+       write(STDOUT,'("Print_norm::",A,2I3,E23.15)') message, l,m,s
+       call flush(STDOUT)
+    end if
+
+  end subroutine print_scalaprod2
+!==================================================================
 ! Boundary Neumann
 !==================================================================
   subroutine boundary_mnh(a)              ! data field
diff --git a/tensorproductmultigrid_Source/multigrid.f90 b/tensorproductmultigrid_Source/multigrid.f90
index ca0f97a64ba462ed78fc18f53bafe33f29569b94..a96e7a1362ee8bce2e62668068d6cf662aee57ab 100644
--- a/tensorproductmultigrid_Source/multigrid.f90
+++ b/tensorproductmultigrid_Source/multigrid.f90
@@ -1195,7 +1195,8 @@ contains
         ! Collect data on coarser level
         call start_timer(t_total(level,m))
         call collect(level-1,m,b(level-1,m),b(level-1,m-1))
-        call haloswap_mnh(level-1,m-1,b(level-1,m-1))
+!!$        call print_scalaprod2(level-1, m  , b(level-1,m)  , "After collect b(level-1,m  )=" )
+!!$        call print_scalaprod2(level-1, m-1, b(level-1,m-1), "After collect b(level-1,m-1)=" )
         call finish_timer(t_total(level,m))
         ! Set initial solution on coarser level to zero (incl. halos!)
         if (LUseO) u(level-1,m-1)%s(:,:,:) = 0.0_rl
@@ -1205,7 +1206,8 @@ contains
         ! Distribute data on coarser grid
         call start_timer(t_total(level,m))
         call distribute(level-1,m,u(level-1,m-1),u(level-1,m))
-        call haloswap_mnh(level-1,m,u(level-1,m))
+!!$        call print_scalaprod2(level-1, m  , u(level-1,m)  , "After distribute u(level-1,m  )=" )
+!!$        call print_scalaprod2(level-1, m-1, u(level-1,m-1), "After distribute u(level-1,m-1)=" )       
         call finish_timer(t_total(level,m))
       else
         ! Set initial solution on coarser level to zero (incl. halos!)
@@ -1217,7 +1219,13 @@ contains
       ! Prolongate error
       call start_timer(t_prolongate(level,m))
       call start_timer(t_total(level,m))
+      call haloswap_mnh(level-1,m,u(level-1,m))
+      call boundary_mnh(u(level-1,m))
+!!$      call print_scalaprod2(level-1 , m  , u(level-1,m)  , "Befor prolongate_mnh u(level-1,m  )=" )
+!!$      call print_scalaprod2(level   , m  , r(level  ,m)  , "Befor prolongate_mnh r(level  ,m  )=" )
       call prolongate_mnh(level,m,u(level-1,m),r(level,m))
+!!$      call print_scalaprod2(level-1 , m  , u(level-1,m)  , "After prolongate_mnh u(level-1,m  )=" )
+!!$      call print_scalaprod2(level   , m  , r(level  ,m)  , "After prolongate_mnh r(level  ,m  )=" )
       call finish_timer(t_total(level,m))
       call finish_timer(t_prolongate(level,m))
       ! Add error to fine grid solution
@@ -1241,6 +1249,7 @@ contains
       call start_timer(t_total(level,m))
       if (mg_param%coarsegridsolver == COARSEGRIDSOLVER_CG) then
         call cg_solve_mnh(level,m,b(level,m),u(level,m))
+!!$        call print_scalaprod2(level, m , u(level,m), "After cg_solve_mnh u=(level,m)" )
       else if (mg_param%coarsegridsolver == COARSEGRIDSOLVER_SMOOTHER) then
         ! Smooth on coarsest level
         call smooth_mnh(level,m, &