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, &