#include <femaxxdriver.h>
Collaboration diagram for FemaxxDriver:
Public Member Functions | |
FemaxxDriver (const Epetra_Comm &comm, Teuchos::ParameterList ¶ms) | |
~FemaxxDriver () | |
void | run () |
void | load_mesh () |
void | calculate_eigenfields () |
void | postprocess () |
const Teuchos::ParameterList & | get_params () |
FemaxMesh & | get_femax_mesh () |
mesh::TetMesh & | get_tet_mesh () |
const Epetra_MultiVector | get_eigenvectors () |
Epetra_SerialDenseVector | get_eigenvalues () |
const Epetra_Comm & | get_comm () const |
Static Public Member Functions | |
static void | set_defaults (Teuchos::ParameterList ¶ms) |
Protected Attributes | |
const Epetra_Comm & | comm_ |
Teuchos::ParameterList | params_ |
Epetra_MultiVector * | Q_ |
double * | lambda_ |
int | nof_converged_ |
mesh::TetMesh * | tmesh_ |
FemaxMesh * | femax_mesh_ |
Private Member Functions | |
FemaxxDriver (const FemaxxDriver &) | |
FemaxxDriver & | operator= (const FemaxxDriver &) |
Definition at line 35 of file femaxxdriver.h.
FemaxxDriver::FemaxxDriver | ( | const Epetra_Comm & | comm, | |
Teuchos::ParameterList & | params | |||
) |
Definition at line 62 of file femaxxdriver.cpp.
References pbe_init(), and pbe_start.
Here is the call graph for this function:
FemaxxDriver::~FemaxxDriver | ( | ) |
Definition at line 120 of file femaxxdriver.cpp.
References OutputCapturer::begin_capture(), comm_, OutputCapturer::end_capture(), femax_mesh_, lambda_, OutputCapturer::log(), pbe_dump(), pbe_finalize(), pbe_stop, Q_, and tmesh_.
Here is the call graph for this function:
FemaxxDriver::FemaxxDriver | ( | const FemaxxDriver & | ) | [private] |
Copy constructor: private, undefined: disallow copy
void FemaxxDriver::calculate_eigenfields | ( | ) |
Generate matrices and preconditioners and run eigenvalue solver.
We do not delete tmesh here, because it may still be required after the eigensolve; for example to store all eigendats into a HDF5 file
Definition at line 260 of file femaxxdriver.cpp.
References comm_, currentSize(), OperatorTest::dump_stats(), CheckingTools::errorEigenResiduals(), CheckingTools::errorOrthonormality(), femax_mesh_, get_eigenvalues(), get_eigenvectors(), AbstractEigsolvOperators::getA(), AbstractEigsolvOperators::getAsigmaPrec(), AbstractEigsolvOperators::getC(), AbstractEigsolvOperators::getH(), AbstractEigsolvOperators::getHSolver(), AbstractEigsolvOperators::getM(), AbstractEigsolvOperators::getY(), h5_create_empty_file(), h5_write_eigenmodes(), h5_write_param_list(), initMemCounters(), lambda, lambda_, log_mem_footprint(), nof_converged_, params_, pbe_start, pbe_stop, Q, Q_, and OperatorTest::set_operator().
Referenced by run().
Here is the call graph for this function:
const Epetra_Comm& FemaxxDriver::get_comm | ( | ) | const [inline] |
Return communicator.
Definition at line 110 of file femaxxdriver.h.
References comm_.
Referenced by eval_gap_voltage().
FemaxxDriver::get_eigenvalues | ( | ) |
Return converged eigenvalues
Definition at line 664 of file femaxxdriver.cpp.
References lambda_, and nof_converged_.
Referenced by calculate_eigenfields(), and postprocess().
FemaxxDriver::get_eigenvectors | ( | ) |
Return converged eigenvectors
Definition at line 657 of file femaxxdriver.cpp.
References nof_converged_, and Q_.
Referenced by calculate_eigenfields(), and postprocess().
FemaxxDriver::get_femax_mesh | ( | ) | [inline] |
Return mesh of mixed finite elements
Definition at line 74 of file femaxxdriver.h.
References femax_mesh_.
Referenced by eval_gap_voltage(), and eval_tangetial_efield().
FemaxxDriver::get_params | ( | ) | [inline] |
Return parameter list used for steering the computation
Definition at line 67 of file femaxxdriver.h.
References params_.
mesh::TetMesh& FemaxxDriver::get_tet_mesh | ( | ) | [inline] |
Definition at line 81 of file femaxxdriver.h.
References tmesh_.
Referenced by eval_gap_voltage(), and eval_tangetial_efield().
void FemaxxDriver::load_mesh | ( | ) |
Build the mesh data structures only (TetMesh, NedelecMesh).
Definition at line 202 of file femaxxdriver.cpp.
References comm_, femax_mesh_, TetMeshBuilder::get_mesh(), mesh::TetMesh::load_materials(), log_mem_footprint(), mesh::TetMesh::log_mesh_info(), params_, pbe_start, pbe_stop, HDF5ParallelReader::read(), and tmesh_.
Referenced by run().
Here is the call graph for this function:
FemaxxDriver& FemaxxDriver::operator= | ( | const FemaxxDriver & | ) | [private] |
Assignment operator: private, undefined: disallow assignment
void FemaxxDriver::postprocess | ( | ) |
Postprocessing.
Definition at line 482 of file femaxxdriver.cpp.
References comm_, mesh::TetMesh::construct_octree(), femax_mesh_, get_eigenvalues(), get_eigenvectors(), FemaxMesh::get_nedelec_mesh(), lambda, nof_converged_, params_, pbe_start, pbe_stop, pi, Q, NedelecMesh::q_factor(), and tmesh_.
Here is the call graph for this function:
void FemaxxDriver::run | ( | ) |
Execute the computations defined by the input parameter list
Generate mesh data structures (TetMesh, FemaxMesh).
Calculate eigenfields
Create an empty file
Write eigenmesh to file
Write coordinates of mesh point to file
Write eigenvalues into HDF5 file
Write sampled electric field of eigenmodes to HDF5 files
If specified by the user, sample the computed modal fields on an orthogonal cartesian grid
sampling w.r.t x-axis
sampling w.r.t y-axis
samplin w.r.t z-axis
Now, call routine that looks for the elements that contain the desired sampling points and evaluate the electric and magnetic field.
Definition at line 587 of file femaxxdriver.cpp.
References calculate_eigenfields(), comm_, femax_mesh_, FemaxMesh::get_nedelec_mesh(), h5_cartesian_sampling(), h5_create_empty_file(), h5_write_eigenfield(), h5_write_eigenmesh(), h5_write_eigenpoint(), h5_write_eigenvalue(), lambda_, load_mesh(), params_, Q_, and tmesh_.
Here is the call graph for this function:
void FemaxxDriver::set_defaults | ( | Teuchos::ParameterList & | params | ) | [static] |
Initialize parameter list "params" with defaults for later use in the FemaxxDriver constructor.
Definition at line 139 of file femaxxdriver.cpp.
References JDBSYM::set_defaults().
Here is the call graph for this function:
const Epetra_Comm& FemaxxDriver::comm_ [protected] |
Communicator
Definition at line 117 of file femaxxdriver.h.
Referenced by calculate_eigenfields(), get_comm(), load_mesh(), postprocess(), run(), and ~FemaxxDriver().
FemaxMesh* FemaxxDriver::femax_mesh_ [protected] |
Finite element mesh
Definition at line 135 of file femaxxdriver.h.
Referenced by calculate_eigenfields(), get_femax_mesh(), load_mesh(), postprocess(), run(), and ~FemaxxDriver().
double* FemaxxDriver::lambda_ [protected] |
Eigenvalues
Definition at line 126 of file femaxxdriver.h.
Referenced by calculate_eigenfields(), get_eigenvalues(), run(), and ~FemaxxDriver().
int FemaxxDriver::nof_converged_ [protected] |
Number of converged eigenpairs
Definition at line 129 of file femaxxdriver.h.
Referenced by calculate_eigenfields(), get_eigenvalues(), get_eigenvectors(), and postprocess().
Teuchos::ParameterList FemaxxDriver::params_ [protected] |
Parameter list steering the computation
Definition at line 120 of file femaxxdriver.h.
Referenced by calculate_eigenfields(), get_params(), load_mesh(), postprocess(), and run().
Epetra_MultiVector* FemaxxDriver::Q_ [protected] |
Eigenvectors (converged and not converged ones)
Definition at line 123 of file femaxxdriver.h.
Referenced by calculate_eigenfields(), get_eigenvectors(), run(), and ~FemaxxDriver().
mesh::TetMesh* FemaxxDriver::tmesh_ [protected] |
Tetrahedral mesh
Definition at line 132 of file femaxxdriver.h.
Referenced by get_tet_mesh(), load_mesh(), postprocess(), run(), and ~FemaxxDriver().