Skip to content

Commit

Permalink
Fortran: add sum_boundary and average_sync
Browse files Browse the repository at this point in the history
  • Loading branch information
WeiqunZhang committed Jul 24, 2017
1 parent f191bb8 commit 894e15d
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 2 deletions.
10 changes: 10 additions & 0 deletions Src/F_Interfaces/Base/AMReX_multifab_fi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,16 @@ extern "C" {
mf->OverrideSync(*msk, geom->periodicity());
}

void amrex_fi_multifab_sum_boundary (MultiFab* mf, const Geometry* geom, int icomp, int ncomp)
{
mf->SumBoundary(icomp, ncomp, geom->periodicity());
}

void amrex_fi_multifab_average_sync (MultiFab* mf, const Geometry* geom)
{
mf->AverageSync(geom->periodicity());
}

// iMultiFab

void amrex_fi_new_imultifab (iMultiFab*& imf, const BoxArray*& ba,
Expand Down
39 changes: 37 additions & 2 deletions Src/F_Interfaces/Base/AMReX_multifab_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,13 @@ module amrex_multifab_module
amrex_multifab_parallel_copy_cg
generic :: fill_boundary => amrex_multifab_fill_boundary, amrex_multifab_fill_boundary_c
generic :: override_sync => amrex_multifab_override_sync, amrex_multifab_override_sync_mask
generic :: sum_boundary => amrex_multifab_sum_boundary, amrex_multifab_sum_boundary_c
procedure :: average_sync => amrex_multifab_average_sync
procedure, private :: amrex_multifab_fill_boundary, amrex_multifab_fill_boundary_c, &
amrex_multifab_parallel_copy, amrex_multifab_parallel_copy_c, amrex_multifab_parallel_copy_cg, &
amrex_multifab_assign, amrex_multifab_install, amrex_multifab_dataptr_iter, &
amrex_multifab_dataptr_int, amrex_multifab_override_sync, amrex_multifab_override_sync_mask
amrex_multifab_dataptr_int, amrex_multifab_override_sync, amrex_multifab_override_sync_mask, &
amrex_multifab_sum_boundary, amrex_multifab_sum_boundary_c, amrex_multifab_average_sync
#if !defined(__GFORTRAN__) || (__GNUC__ > 4)
final :: amrex_multifab_destroy
#endif
Expand Down Expand Up @@ -244,6 +247,19 @@ subroutine amrex_fi_multifab_override_sync_mask (mf, geom, msk) bind(c)
implicit none
type(c_ptr), value :: mf, geom, msk
end subroutine amrex_fi_multifab_override_sync_mask

subroutine amrex_fi_multifab_sum_boundary (mf, geom, icomp, ncomp) bind(c)
import
implicit none
type(c_ptr), value :: mf, geom
integer, value :: icomp, ncomp
end subroutine amrex_fi_multifab_sum_boundary

subroutine amrex_fi_multifab_average_sync (mf, geom) bind(c)
import
implicit none
type(c_ptr), value :: mf, geom
end subroutine amrex_fi_multifab_average_sync
end interface

interface
Expand Down Expand Up @@ -563,7 +579,7 @@ subroutine amrex_multifab_fill_boundary_c (this, geom, c, nc, cross)
lcross = 0
end if
end if
call amrex_fi_multifab_fill_boundary (this%p, geom%p, c-1, nc, lcross)
call amrex_fi_multifab_fill_boundary(this%p, geom%p, c-1, nc, lcross)
end subroutine amrex_multifab_fill_boundary_c

subroutine amrex_multifab_write (mf, name)
Expand Down Expand Up @@ -596,6 +612,25 @@ subroutine amrex_multifab_override_sync_mask (this, geom, msk)
call amrex_fi_multifab_override_sync_mask(this%p, geom%p, msk%p)
end subroutine amrex_multifab_override_sync_mask

subroutine amrex_multifab_sum_boundary (this, geom)
class(amrex_multifab) :: this
type(amrex_geometry), intent(in) :: geom
call this%amrex_multifab_sum_boundary_c(geom, 1, this%nc)
end subroutine amrex_multifab_sum_boundary

subroutine amrex_multifab_sum_boundary_c (this, geom, c, nc)
class(amrex_multifab) :: this
type(amrex_geometry), intent(in) :: geom
integer, intent(in) :: c, nc
call amrex_fi_multifab_sum_boundary(this%p, geom%p, c-1, nc)
end subroutine amrex_multifab_sum_boundary_c

subroutine amrex_multifab_average_sync (this, geom)
class(amrex_multifab) :: this
type(amrex_geometry), intent(in) :: geom
call amrex_fi_multifab_average_sync(this%p, geom%p)
end subroutine amrex_multifab_average_sync

!------ imultifab routines ------!

subroutine amrex_imultifab_build (imf, ba, dm, nc, ng)
Expand Down

0 comments on commit 894e15d

Please sign in to comment.