Skip to content

Commit

Permalink
Merge pull request #282 from sethrj/final-cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
aprokop committed Dec 1, 2020
2 parents 74ec43a + cae3713 commit 217ba88
Show file tree
Hide file tree
Showing 28 changed files with 384 additions and 1,570 deletions.
6 changes: 6 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#Official Tool: clang-format version 8.0.0
BasedOnStyle: google
SortIncludes: false
AlignConsecutiveAssignments: true
AllowShortCaseLabelsOnASingleLine: true
AllowShortIfStatementsOnASingleLine: true
858 changes: 0 additions & 858 deletions ROADMAP.md

This file was deleted.

72 changes: 0 additions & 72 deletions ReleaseNotes.txt

This file was deleted.

6 changes: 3 additions & 3 deletions doc/install.rst
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ wrappers.)
=========== ============== ======================
ForTrilinos Trilinos SWIG
=========== ============== ======================
2.0.0 13.0 4.0.2+fortran
2.0.0 13 4.0.2+fortran
2.0.0-dev3 12.18.1 4.0.2+fortran
2.0.0-dev2 12.18.1 4.0.0+fortran+15e6ed59
2.0.0-dev1 12.17+8a82b322 4.0.0+fortran+15e6ed59
Expand All @@ -46,12 +46,12 @@ That code is no longer developed and maintained, and is available using the
Spack
-----

To install ForTrilinos version ``2.0.0-dev2`` through an existing Spack
To install ForTrilinos version ``2.0.0`` through an existing Spack
installation (v0.16 or higher, or the ``develop`` branch):

.. code:: console
$ spack install fortrilinos@2.0.0-dev2 ^trilinos@12.18.1+nox+stratimikos
$ spack install fortrilinos@2.0.0 ^trilinos+nox+stratimikos
Manual
------
Expand Down
4 changes: 1 addition & 3 deletions scripts/build-yuri.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ mkdir build 2>/dev/null || true
cd build

module purge
SPACK_VIEW=/usr/local/spack/var/spack/environments/fortrilinos/.spack-env/view
SPACK_VIEW=$SPACK_ROOT/var/spack/environments/fortrilinos/.spack-env/view
export CMAKE_PREFIX_PATH=$SPACK_VIEW:$CMAKE_PREFIX_PATH
export PATH=$SPACK_VIEW/bin:$PATH

Expand All @@ -19,8 +19,6 @@ cmake -G Ninja \
-DForTrilinos_EXAMPLES:BOOL=ON \
-DForTrilinos_TESTING:BOOL=ON \
-DForTrilinos_USE_SWIG_Fortran:BOOL=ON \
-DSWIG_EXECUTABLE:FILENAME=/rnsdhpc/code/swig-old/swig \
-DSWIG_DIR:FILENAME=/rnsdhpc/code/swig-old/Lib \
..
ninja -v
ctest --output-on-failure
23 changes: 23 additions & 0 deletions scripts/spack.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
spack:
specs:
- cmake
- ninja
- openmpi
- swig@4.0.2-fortran
- trilinos +amesos2 +anasazi +belos +teuchos +kokkos +ifpack2 +muelu +nox +tpetra
+stratimikos +mpi gotype=long_long
view: true
concretization: together
packages:
trilinos:
variants: ~adios2 ~alloptpkgs ~boost ~cgns ~chaco ~complex ~debug ~dtk ~exodus
+explicit_template_instantiation ~float +fortran ~glm ~gtest ~hypre ~intrepid2
~isorropia ~matio ~mesquite ~metis ~minitensor ~mumps ~netcdf ~openmp ~phalanx
~piro ~pnetcdf ~python ~rol ~rythmos +shared ~shylu ~stk ~suite-sparse ~superlu
~superlu-dist ~teko ~tempus ~x11 ~xsdkflags ~zlib ~zoltan ~zoltan2 ~epetra
~amesos ~epetraext ~ifpack ~aztec
all:
providers:
blas: [openblas]
lapack: [openblas]
mpi: [openmpi]
46 changes: 22 additions & 24 deletions src/fortrilinos_hl/eigen_handle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,11 @@

namespace ForTrilinos {

void TrilinosEigenSolver::init() {
TEUCHOS_ASSERT(status_ == NOT_INITIALIZED);
comm_ = Teuchos::DefaultComm<int>::getComm();
status_ = INITIALIZED;
}
TrilinosEigenSolver::TrilinosEigenSolver()
: comm_(Teuchos::DefaultComm<int>::getComm()), status_(INITIALIZED) {}

void TrilinosEigenSolver::init(const Teuchos::RCP<const Teuchos::Comm<int>>& comm) {
TEUCHOS_ASSERT(status_ == NOT_INITIALIZED);
comm_ = comm;
status_ = INITIALIZED;
}
TrilinosEigenSolver::TrilinosEigenSolver(const Teuchos::RCP<const Teuchos::Comm<int>>& comm)
: comm_(comm), status_(INITIALIZED) {}

void TrilinosEigenSolver::setup_matrix(const Teuchos::RCP<Matrix>& A) {
TEUCHOS_ASSERT(status_ == INITIALIZED);
Expand Down Expand Up @@ -128,30 +122,36 @@ namespace ForTrilinos {
status_ = SOLVER_SETUP;
}

int TrilinosEigenSolver::max_eigenvalues() const {
TEUCHOS_ASSERT(status_ >= SOLVER_SETUP);
return numEigenvalues_;
}

int TrilinosEigenSolver::solve(Teuchos::ArrayView<SC> eigenValues,
Teuchos::RCP<MultiVector>& eigenVectors,
Teuchos::ArrayView<int> eigenIndex) const {
Teuchos::ArrayView<int> eigenIndex) {
using Teuchos::RCP;
using Teuchos::ArrayRCP;

TEUCHOS_ASSERT(status_ == SOLVER_SETUP);
TEUCHOS_ASSERT(status_ >= SOLVER_SETUP);

Anasazi::ReturnType r = solver_->solve();
TEUCHOS_ASSERT(r == 0);
status_ = SOLVED;
converged_ = (r == Anasazi::Converged);
numIters_ = solver_->getNumIters();

// Extract solution
Anasazi::Eigensolution<SC,MultiVector> solution = solver_->getProblem().getSolution();

int eNum = solution.numVecs;
TEUCHOS_ASSERT(eNum > 0);
std::vector<Anasazi::Value<SC>>& eValues = solution.Evals;
std::vector<int>& eIndex = solution.index;

size_t numConverged = std::min(eNum, numEigenvalues_);
TEUCHOS_TEST_FOR_EXCEPTION(2 * eigenValues.size() < numConverged, std::runtime_error,
"Insufficient space to store eigenvalues. Please provide at least two times the desired number of eigenvalues.");
TEUCHOS_TEST_FOR_EXCEPTION(eigenIndex.size() < numConverged, std::runtime_error,
"Insufficient space to store index. Please provide at least two times the desired number of eigenvalues.");
"Insufficient space to store index. Please provide at least the desired number of eigenvalues.");

for (size_t i = 0; i < eValues.size(); i++) {
eigenValues[2*i+0] = eValues[i].realpart;
Expand All @@ -166,15 +166,13 @@ namespace ForTrilinos {
return eValues.size();
}

void TrilinosEigenSolver::finalize() {
// No need to check the status_, we can finalize() at any moment.
comm_ = Teuchos::null;
A_ = Teuchos::null;
M_ = Teuchos::null;
solver_ = Teuchos::null;
paramList_ = Teuchos::null;

status_ = NOT_INITIALIZED;
bool TrilinosEigenSolver::converged() const {
TEUCHOS_ASSERT(status_ >= SOLVED);
return converged_;
}

int TrilinosEigenSolver::num_iters() const {
TEUCHOS_ASSERT(status_ >= SOLVED);
return numIters_;
}
}
30 changes: 14 additions & 16 deletions src/fortrilinos_hl/eigen_handle.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,47 +44,45 @@ namespace ForTrilinos {
public:

// Constructors
TrilinosEigenSolver() : status_(NOT_INITIALIZED) { }

TrilinosEigenSolver(const TrilinosEigenSolver&) = delete;
void operator=(const TrilinosEigenSolver&) = delete;

// Initialize
void init();
void init(const Teuchos::RCP<const Teuchos::Comm<int>>& comm);
TrilinosEigenSolver();
explicit TrilinosEigenSolver(const Teuchos::RCP<const Teuchos::Comm<int>>& comm);

// Setup matrices by construction
void setup_matrix (const Teuchos::RCP<Matrix>& A);
void setup_matrix(const Teuchos::RCP<Matrix>& A);
void setup_matrix_rhs(const Teuchos::RCP<Matrix>& M);

// Setup operators
void setup_operator (const Teuchos::RCP<Operator>& A);
void setup_operator(const Teuchos::RCP<Operator>& A);
void setup_operator_rhs(const Teuchos::RCP<Operator>& M);

// Setup solver based on the parameter list
void setup_solver(const Teuchos::RCP<Teuchos::ParameterList>& paramList);
// Maximum number of eigenvalues to solve for
int max_eigenvalues() const;

// Solve eigen system given rhs
int solve(Teuchos::ArrayView<SC> eigenValues,
Teuchos::RCP<MultiVector>& eigenVectors,
Teuchos::ArrayView<int> eigenIndex) const;

// Free all data
void finalize();
Teuchos::ArrayView<int> eigenIndex);
// Whether the solver converged
bool converged() const;
// Number of iterations used to solve
int num_iters() const;

private:

Teuchos::RCP<const Teuchos::Comm<int>> comm_;
Teuchos::RCP<Operator> A_, M_;
Teuchos::RCP<SolverManager> solver_;
Teuchos::RCP<ParameterList> paramList_;
int numEigenvalues_;
int numIters_;
bool converged_;

enum Status {
NOT_INITIALIZED,
INITIALIZED,
MATRIX_SETUP,
SOLVER_SETUP,
SOLVED,
} status_;
};

Expand Down
1 change: 1 addition & 0 deletions src/fortrilinos_hl/fortrilinos_hl.i
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ typedef char Packet;
#include "fortrilinos_hl/eigen_handle.hpp"
%}

%fortransubroutine ForTrilinos::TrilinosSolver::solve;
%include "solver_handle.hpp"
%include "eigen_handle.hpp"

Expand Down
Loading

0 comments on commit 217ba88

Please sign in to comment.