~fluidity-core/fluidity/sea-ice-branch

« back to all changes in this revision

Viewing changes to femtools/Halos_Communications.F90

  • Committer: Simon Mouradian
  • Date: 2012-10-19 10:35:59 UTC
  • mfrom: (3520.32.371 fluidity)
  • Revision ID: simon.mouradian06@imperial.ac.uk-20121019103559-y36qa47phc69q8sc
mergeĀ fromĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
765
765
    
766
766
    type(halo_type), intent(in) :: halo
767
767
    real, dimension(:), intent(in) :: real_array
 
768
 
 
769
    real :: epsl
768
770
    
769
771
    logical :: verifies
770
772
    
778
780
    
779
781
    call halo_update(halo, lreal_array)
780
782
    
781
 
    verifies = all(abs(real_array - lreal_array) < 10000.0 * max(spacing(lreal_array), epsilon(lreal_array)))
 
783
    epsl = spacing( maxval( abs( lreal_array ))) * 10000.
 
784
    call allmax(epsl)
 
785
 
 
786
    verifies = all(abs(real_array - lreal_array) < epsl )
782
787
#ifdef DDEBUG
783
788
    if(.not. verifies) then
784
789
      do i = 1, halo_proc_count(halo)
785
790
        do j = 1, halo_receive_count(halo, i)
786
791
          receive = halo_receive(halo, i, j)
787
 
          if(abs(real_array(receive) - lreal_array(receive)) >= 10000.0&
788
 
               &*max(spacing(real_array(receive)), epsilon(real_array(receive)))) then 
 
792
          if(abs(real_array(receive) - lreal_array(receive)) >= epsl) then
789
793
            ewrite(0, *) "Warning: Halo receive ", receive, " for halo " // halo_name(halo) // " failed verification"
790
794
            ewrite(0, *) "Reference = ", real_array(receive)
791
795
            ewrite(0, *) "Value in verification array = ", lreal_array(receive)
794
798
      end do
795
799
      
796
800
      do i = 1, size(real_array)
797
 
        if(abs(real_array(i) - lreal_array(i)) >= 10000.0&
798
 
               &*max(spacing(real_array(i)), epsilon(real_array(i)))) then
799
 
          ewrite(0, *) "Warning: Reference index ", i, " for halo " // halo_name(halo) // " failed verification"
800
 
          ewrite(0, *) "Reference = ", real_array(i)
801
 
          ewrite(0, *) "Value in verification array = ", lreal_array(i)
802
 
        end if
803
 
      end do
 
801
         if(abs(real_array(i) - lreal_array(i)) >= epsl ) then
 
802
            ewrite(0, *) "Warning: Reference index ", i, " for halo " // halo_name(halo) // " failed verification"
 
803
            ewrite(0, *) "Reference = ", real_array(i)
 
804
            ewrite(0, *) "Value in verification array = ", lreal_array(i)
 
805
         end if
 
806
     end do
804
807
    end if
805
808
#endif
806
809