Code indexing in gitaly is broken and leads to code not being visible to the user. We work on the issue with highest priority.

Skip to content
Snippets Groups Projects
Commit 37579188 authored by frey_m's avatar frey_m
Browse files

AMR-Trilinos: update parameters

parent ebd6cfcc
No related branches found
No related tags found
1 merge request!31Master
......@@ -180,7 +180,7 @@ public:
const amrex::DistributionMapping& dmap; ///< AMReX core distribution map
const AmrGeometry_t& geom; ///< geometry of this problem
Teuchos::RCP<dmap_t> map_p; ///< Tpetra core map
Teuchos::RCP</*const*/ dmap_t> map_p; ///< Tpetra core map
Teuchos::RCP<matrix_t> Anf_p; ///< no fine Poisson matrix
Teuchos::RCP<matrix_t> R_p; ///< restriction matrix
......
......@@ -234,7 +234,8 @@ void AmrMultiGridLevel<MatrixType, VectorType>::buildMap_m(const Teuchos::RCP<co
// numGlobalElements == N
int N = grids.numPts();
Teuchos::RCP<dmap_t> full = Teuchos::rcp( new dmap_t(N, globalindices, baseIndex, comm, node) );
/*Teuchos::RCP<dmap_t> full = Teuchos::rcp( new dmap_t(N, globalindices, baseIndex, comm, node) );
map_p = full->removeEmptyProcesses();
map_p = full->removeEmptyProcesses();*/
map_p = Teuchos::rcp( new dmap_t(N, globalindices, baseIndex, comm, node) );
}
......@@ -4,11 +4,12 @@
* http://prod.sandia.gov/techlib/access-control.cgi/2014/1418624r.pdf
*/
MueLuBottomSolver::MueLuBottomSolver()
MueLuBottomSolver::MueLuBottomSolver(/*const AmrGeometry_t& geom*/)
: hierarchy_mp(Teuchos::null),
finest_mp(Teuchos::null),
A_mp(Teuchos::null),
tolerance_m(1.0e-4)
nSweeps_m(6)//,
// geom_mr(geom)
{
this->initMueLuList_m();
}
......@@ -23,7 +24,7 @@ void MueLuBottomSolver::solve(const Teuchos::RCP<mv_t>& x,
// InitialGuessIsZero = true
// startLevel = 0
hierarchy_mp->Iterate(*xb, *xx, 4/*tolerance_m*/, true, 0);
hierarchy_mp->Iterate(*xb, *xx, nSweeps_m, true, 0);
// put multivector back
x->assign(*util_t::MV2NonConstTpetraMV2(*xx));
......@@ -36,15 +37,18 @@ void MueLuBottomSolver::setOperator(const Teuchos::RCP<matrix_t>& A) {
A_mp->SetFixedBlockSize(1); // only 1 DOF per node (pure Laplace problem)
Teuchos::RCP<mv_t> coords_mp = Teuchos::rcp( new amr::multivector_t(A->getDomainMap(),
1/*AMREX_SPACEDIM*/, false) );
1 /*AMREX_SPACEDIM*/, false) );
const Teuchos::RCP<const amr::dmap_t>& map_r = A->getMap();
for (std::size_t i = 0; i < map_r->getNodeNumElements(); ++i) {
// AmrIntVect_t iv = deserialize_m(map_r->getGlobalElement(i));
// for (int d = 0; d < AMREX_SPACEDIM; ++d)
coords_mp->replaceLocalValue(i, 0, map_r->getGlobalElement(i)); //iv[d]);
}
// const scalar_t* domain = geom_mr.ProbLo();
//const scalar_t* spacing = geom_mr.CellSize();
//for (lo_t d = 0; d < AMREX_SPACEDIM; ++d) {
for (std::size_t i = 0; i < map_r->getNodeNumElements(); ++i) {
// coords_mp->replaceLocalValue(i, d, 0.5 * spacing +
coords_mp->replaceLocalValue(i, 0, map_r->getGlobalElement(i)); //iv[d]);
}
// }
Teuchos::RCP<xmv_t> coordinates = MueLu::TpetraMultiVector_To_XpetraMultiVector(coords_mp);
......@@ -97,7 +101,7 @@ void MueLuBottomSolver::initMueLuList_m() {
mueluList_m.set("repartition: rebalance P and R", true);
mueluList_m.set("repartition: partitioner", "zoltan2");
mueluList_m.set("repartition: min rows per proc", 800);
mueluList_m.set("repartition: start level", 2);
mueluList_m.set("repartition: start level", 1);
Teuchos::ParameterList reparms;
reparms.set("algorithm", "rcb");
......@@ -114,7 +118,7 @@ void MueLuBottomSolver::initMueLuList_m() {
mueluList_m.set("aggregation: min agg size", 3);
mueluList_m.set("aggregation: max agg size", 27);
mueluList_m.set("transpose: use implicit", true);
mueluList_m.set("transpose: use implicit", false);
mueluList_m.set("reuse: type", "none");
}
......
......@@ -21,6 +21,7 @@ public:
typedef amr::local_ordinal_t lo_t;
typedef amr::global_ordinal_t go_t;
typedef amr::node_t node_t;
// typedef amr::AmrGeometry_t AmrGeometry_t;
typedef MueLu::Hierarchy<scalar_t, lo_t, go_t, node_t> hierarchy_t;
typedef MueLu::Level level_t;
......@@ -33,7 +34,7 @@ public:
public:
MueLuBottomSolver();
MueLuBottomSolver(/*const AmrGeometry_t& geom*/);
void solve(const Teuchos::RCP<mv_t>& x,
const Teuchos::RCP<mv_t>& b);
......@@ -52,9 +53,11 @@ private:
Teuchos::RCP<xmatrix_t> A_mp; ///< MueLu requires Xpetra
scalar_t tolerance_m; ///< stopping criteria of multigrid iteration
lo_t nSweeps_m; ///< the number of multigrid iterations
Teuchos::ParameterList mueluList_m;
// const AmrGeometry_t& geom_mr; ///< reference to bottom geometry
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment