Skip to content

Commit

Permalink
Add some supports for nghost vector in Fortran multifab (#1099)
Browse files Browse the repository at this point in the history
* Support nghost vector in Fortran multifab

* nghost vector version of amrex_multifab%copy
  • Loading branch information
WeiqunZhang authored Jul 24, 2020
1 parent e010fa8 commit 84276f6
Show file tree
Hide file tree
Showing 2 changed files with 109 additions and 41 deletions.
25 changes: 13 additions & 12 deletions Src/F_Interfaces/Base/AMReX_multifab_fi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ extern "C" {

void amrex_fi_new_multifab (MultiFab*& mf, const BoxArray*& ba,
const DistributionMapping*& dm,
int nc, int ng, const int* nodal)
int nc, const int* ng, const int* nodal)
{
mf = new MultiFab(amrex::convert(*ba, IntVect(nodal)), *dm, nc, ng);
mf = new MultiFab(amrex::convert(*ba, IntVect(nodal)), *dm, nc, IntVect(ng));
ba = &(mf->boxArray());
dm = &(mf->DistributionMap());
}
Expand All @@ -31,9 +31,10 @@ extern "C" {
return mf->nComp();
}

int amrex_fi_multifab_ngrow (const MultiFab* mf)
void amrex_fi_multifab_ngrow (const MultiFab* mf, int* ngv)
{
return mf->nGrow();
IntVect const& ng = mf->nGrowVect();
AMREX_D_TERM(ngv[0] = ng[0];, ngv[1] = ng[1];, ngv[2] = ng[2]);
}

const BoxArray* amrex_fi_multifab_boxarray (const MultiFab* mf)
Expand Down Expand Up @@ -102,9 +103,9 @@ extern "C" {
return mf->norm2(comp);
}

void amrex_fi_multifab_setval (MultiFab* mf, Real val, int ic, int nc, int ng)
void amrex_fi_multifab_setval (MultiFab* mf, Real val, int ic, int nc, const int* ng)
{
mf->setVal(val, ic, nc, ng);
mf->setVal(val, ic, nc, IntVect(ng));
}

void amrex_fi_multifab_plus (MultiFab* mf, Real val, int ic, int nc, int ng)
Expand Down Expand Up @@ -156,9 +157,9 @@ extern "C" {
}

void amrex_fi_multifab_copy (MultiFab* dstmf, const MultiFab* srcmf,
int srccomp, int dstcomp, int nc, int ng)
int srccomp, int dstcomp, int nc, const int* ng)
{
MultiFab::Copy(*dstmf, *srcmf, srccomp, dstcomp, nc, ng);
MultiFab::Copy(*dstmf, *srcmf, srccomp, dstcomp, nc, IntVect(ng));
}

void amrex_fi_multifab_parallelcopy (MultiFab* dstmf, const MultiFab* srcmf,
Expand Down Expand Up @@ -217,9 +218,9 @@ extern "C" {

void amrex_fi_new_imultifab (iMultiFab*& imf, const BoxArray*& ba,
const DistributionMapping*& dm,
int nc, int ng, const int* nodal)
int nc, const int* ng, const int* nodal)
{
imf = new iMultiFab(amrex::convert(*ba, IntVect(nodal)), *dm, nc, ng);
imf = new iMultiFab(amrex::convert(*ba, IntVect(nodal)), *dm, nc, IntVect(ng));
ba = &(imf->boxArray());
dm = &(imf->DistributionMap());
}
Expand Down Expand Up @@ -247,9 +248,9 @@ extern "C" {
}
}

void amrex_fi_imultifab_setval (iMultiFab* imf, int val, int ic, int nc, int ng)
void amrex_fi_imultifab_setval (iMultiFab* imf, int val, int ic, int nc, const int* ng)
{
imf->setVal(val, ic, nc, ng);
imf->setVal(val, ic, nc, IntVect(ng));
}

// MFIter routines
Expand Down
Loading

0 comments on commit 84276f6

Please sign in to comment.