FemaxxDriver Class Reference

#include <femaxxdriver.h>

Collaboration diagram for FemaxxDriver:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 FemaxxDriver (const Epetra_Comm &comm, Teuchos::ParameterList &params)
 ~FemaxxDriver ()
void run ()
void load_mesh ()
void calculate_eigenfields ()
void postprocess ()
const Teuchos::ParameterList & get_params ()
FemaxMeshget_femax_mesh ()
mesh::TetMeshget_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 &params)

Protected Attributes

const Epetra_Comm & comm_
Teuchos::ParameterList params_
Epetra_MultiVector * Q_
double * lambda_
int nof_converged_
mesh::TetMeshtmesh_
FemaxMeshfemax_mesh_

Private Member Functions

 FemaxxDriver (const FemaxxDriver &)
FemaxxDriveroperator= (const FemaxxDriver &)

Detailed Description

Driver class that executes the whole computation: including mesh generation, matrix assembly, preconditioner construction, eigenvalue computation and postprocessing. The computation is steered using a single hierarchical parameter list.

Author:
Roman Geus

Definition at line 35 of file femaxxdriver.h.


Constructor & Destructor Documentation

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


Member Function Documentation

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:


Member Data Documentation

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().


The documentation for this class was generated from the following files:
Generated on Fri Oct 26 13:35:16 2007 for FEMAXX (Finite Element Maxwell Eigensolver) by  doxygen 1.4.7