Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Interpolator Class Reference

Specialization for transfering nodal forces using Farhat's algorithm. More...

#include <Transfer_2n.h>

Inheritance diagram for Interpolator:
Collaboration diagram for Interpolator:

Public Member Functions

 Interpolator (RFC_Window_transfer *s, RFC_Window_transfer *t)
 Constructor. More...
 
void transfer (const Nodal_data_const &sf, Nodal_data &tf, bool verb)
 The main entry to the data transfer algorithm. More...
 
- Public Member Functions inherited from Transfer_base
 Transfer_base (RFC_Window_transfer *s, RFC_Window_transfer *t)
 
template<class _SDF >
void transfer_2f (const _SDF &sDF, Facial_data &tDF, const Real alpha, int doa, bool verb)
 template function for transfering from nodes/faces to faces. More...
 
template<class _SDF >
void transfer_2n (const _SDF &sDF, Nodal_data &tDF, const Real alpha, Real *tol, int *iter, int doa, bool verb)
 template function for transfering from nodes/faces to nodes. More...
 
template<class _SDF >
void interpolate_fe (const _SDF &sDF, Nodal_data &tDF, bool verb)
 Perform finite-element interpolation (non-conservative), assuming source data has been replicated. More...
 
template<class _SDF >
void loadtransfer (const _SDF &vS, Nodal_data &vT, const Real alpha, const int order, bool verb)
 Computes the load vector. More...
 
void minmax (const RFC_Window_transfer &win, const Facial_data_const &sDF, Array_n &min_v, Array_n &max_v)
 
void minmax (const RFC_Window_transfer &win, const Nodal_data_const &sDF, Array_n &min_v, Array_n &max_v)
 
void integrate (const RFC_Window_transfer &win, const Nodal_data_const &sDF, Array_n &intergral, const int doa)
 
void integrate (const RFC_Window_transfer &win, const Facial_data_const &sDF, Array_n &intergral, const int doa)
 
bool isfinite (Real x)
 
template<class _Data >
RFC_BEGIN_NAME_SPACE void integrate_subface (const RFC_Pane_transfer *p_src, RFC_Pane_transfer *p_trg, const _Data &data_s, ENE &ene_src, ENE &ene_trg, int sfid_src, int sfid_trg, const Real alpha, Facial_data &tDF, Facial_data &tBF, int doa)
 
template<class _SDF >
RFC_BEGIN_NAME_SPACE void interpolate_fe (const _SDF &sDF, Nodal_data &tDF, bool verbose)
 

Private Types

typedef Interpolator Self
 
typedef Transfer_base Base
 

Additional Inherited Members

- Public Types inherited from Transfer_base
typedef Element_node_enumerator ENE
 
typedef Field< Nodal_data, ENEElement_var
 
typedef Field< const
Nodal_data_const, ENE
Element_var_const
 
typedef Field< const
Nodal_coor_const, ENE
Element_coor_const
 
typedef Transfer_base Self
 
typedef std::vector
< RFC_Pane_transfer * >
::iterator 
Pane_iterator
 
typedef std::vector
< RFC_Pane_transfer * >
::const_iterator 
Pane_iterator_const
 
typedef std::vector< const
RFC_Pane_transfer * >
::const_iterator 
Pane_const_iterator
 
- Protected Member Functions inherited from Transfer_base
template<class _SDF >
void integrate_subface (const RFC_Pane_transfer *p_src, RFC_Pane_transfer *p_trg, const _SDF &sDF, ENE &ene_src, ENE &ene_trg, int sfid_src, int sfid_trg, const Real alpha, Facial_data &tDF, Facial_data &tBF, int doa)
 
template<class _SDF >
void init_load_vector (const _SDF &vS, const Real alpha, Nodal_data &ld, Nodal_data &diag, int doa, bool lump)
 Initialize load vector and the diagonal of the mass matrix. More...
 
int pcg (Nodal_data &x, Nodal_data &b, Nodal_data &p, Nodal_data &q, Nodal_data &r, Nodal_data &s, Nodal_data &z, Nodal_data &di, Real *tol, int *max_iter)
 
void precondition_Jacobi (const Nodal_data_const &rhs, const Nodal_data_const &diag, Nodal_data &x)
 Diagonal (Jacobi) preconditioner. More...
 
void multiply_mass_mat_and_x (const Nodal_data_const &x, Nodal_data &y)
 
Real square (const Array_n_const &x) const
 
Real norm2 (const Nodal_data_const &x) const
 
Real dot (const Nodal_data_const &x, const Nodal_data_const &y) const
 
void dot2 (const Nodal_data_const &x1, const Nodal_data_const &y1, const Nodal_data_const &x2, const Nodal_data_const &y2, Array_n prod) const
 
void scale (const Real &a, Nodal_data &x)
 
void invert (Nodal_data &x)
 
void copy_vec (const Nodal_data_const &x, Nodal_data &y)
 
void saxpy (const Real &a, const Nodal_data_const &x, const Real &b, Nodal_data &y)
 
template<class _SDF >
void compute_load_vector_wra (const RFC_Pane_transfer *p_src, RFC_Pane_transfer *p_dst, const _SDF &sDF, ENE &ene_src, ENE &ene_trg, int sfid_src, int sfid_trg, const Real alpha, Nodal_data &rhs, Nodal_data &diag, int doa, bool lump)
 Computes the element-wise load vector, and also computes mass matrix if diag has a nonnegative ID. More...
 
template<class _Data , class _Points , class _Loads , class Tag >
void element_load_vector (const _Data &data_s, const Generic_element &e_s, const Generic_element &e_t, const _Points &pnts_s, const _Points &pnts_t, const Point_2 *ncs_s, const Point_2 *ncs_t, const Real alpha, const int sne, const Tag &tag, _Loads loads, _Loads diag, Real *emm, int doa, bool lump)
 Computes the element-wise load vector, and also computes mass matrix if emm is not NULL. More...
 
template<class _Data >
void compute_load_prime (const Generic_element &e_s, const _Data &data_s, const Vector_3 *grads_s, Vector_3 *load_prime, Tag_nodal)
 
template<class _Data >
void compute_load_prime (const Generic_element &e_s, const _Data &data_s, const Vector_3 *grads_s, Vector_3 *load_prime, Tag_facial)
 
- Protected Attributes inherited from Transfer_base
RFC_Window_transfersrc
 
RFC_Window_transfertrg
 
int sc
 

Detailed Description

Specialization for transfering nodal forces using Farhat's algorithm.

Definition at line 101 of file Transfer_2n.h.

Member Typedef Documentation

typedef Transfer_base Base
private

Definition at line 103 of file Transfer_2n.h.

typedef Interpolator Self
private

Definition at line 102 of file Transfer_2n.h.

Constructor & Destructor Documentation

Constructor.

Definition at line 107 of file Transfer_2n.h.

108  : Base(s, t) {}
Transfer_base Base
Definition: Transfer_2n.h:103

Member Function Documentation

void transfer ( const Nodal_data_const sf,
Nodal_data tf,
bool  verb 
)

The main entry to the data transfer algorithm.

Parameters
sfSouce data
tfTarget data
verbVerbose level

Definition at line 470 of file Transfer_2n.C.

References RFC_Window_transfer::barrier(), RFC_Window_transfer::clear_replicated_data(), get_wtime(), Transfer_base::interpolate_fe(), RFC_Window_transfer::is_root(), RFC_Window_transfer::replicate_data(), Transfer_base::src, and Transfer_base::trg.

Referenced by Transfer_traits< Nodal_data_const, Nodal_data, false >::transfer().

471 {
472  double t0=0.;
473  if ( verbose) {
474  trg.barrier(); t0=get_wtime();
475  }
476 
477  src.replicate_data( sv, false); // replicate data but not the coordinates
478  Base::interpolate_fe( sv, tv, verbose);
480 
481  if ( verbose) {
482  // Output timing information
483  trg.barrier();
484  if ( trg.is_root())
485  std:: cout << "RFACE: Interpolation done in "
486  << get_wtime()-t0 << " seconds." << std::endl;
487  }
488 }
void replicate_data(const Facial_data_const &data, bool replicate_coor)
Replicate the given data from remote processes onto local process.
void barrier() const
Block until all processes of the window have reached here.
void clear_replicated_data()
Clear all the replicate data but keep metadata.
RFC_Window_transfer & trg
void interpolate_fe(const _SDF &sDF, Nodal_data &tDF, bool verb)
Perform finite-element interpolation (non-conservative), assuming source data has been replicated...
RFC_Window_transfer & src
RFC_BEGIN_NAME_SPACE double get_wtime()
Definition: Timing.h:33
bool is_root() const
Check whether the process has rank 0.

Here is the call graph for this function:

Here is the caller graph for this function:


The documentation for this class was generated from the following files: