Page MenuHomec4science

bem_polonski.hh
No OneTemporary

File Metadata

Created
Wed, Jul 31, 05:47

bem_polonski.hh

#ifndef BEM_POLONSKI_H
#define BEM_POLONSKI_H
/* -------------------------------------------------------------------------- */
#include "bem_fft_base.hh"
/* -------------------------------------------------------------------------- */
class BemPolonski : public BemFFTBase {
/* ------------------------------------------------------------------------ */
/* Constructors/Destructors */
/* ------------------------------------------------------------------------ */
public:
BemPolonski(Surface<Real> & p) :
BemFFTBase(p),
surface_t(p.size(),p.getL()),
surface_r(p.size(),p.getL()),
surface_spectral_r(p.size(),p.getL()),
pold(p.size(),p.getL()){
e_star = 1.;
max_iterations = 10000;
};
virtual ~BemPolonski(){};
/* ------------------------------------------------------------------------ */
/* Methods */
/* ------------------------------------------------------------------------ */
public:
//! compute the equilibrium situation
Real computeEquilibrium(Real epsilon,Real pressure,
int nthreads = 1);
// compute the mean of the gaps in the contact region
Real computeMeanGapsInContact();
// compute the non zero gap penalty functional
Real computeG();
// update the search direction
void updateT(Real G, Real Gold, Real delta);
// compute the conjugate step size
Real computeTau();
// update the tractions
Real updateTractions(Real tau);
// enforce the applied and contact pressures balance
void enforcePressureBalance(Real applied_pressure);
void computeGaps();
/* ------------------------------------------------------------------------ */
/* Accessors */
/* ------------------------------------------------------------------------ */
public:
//! get the number of iterations
UInt getNbIterations() const{return this->nb_iterations;};
//! get the convergence steps of iterations
const std::vector<Real> & getConvergenceIterations() const{return this->convergence_iterations;};
Surface<Real> & getSurfaceT(){return surface_t;};
/* ------------------------------------------------------------------------ */
/* Class Members */
/* ------------------------------------------------------------------------ */
protected:
//! exploration direction for the polonski algo
Surface<Real> surface_t;
//! projected exploration direction for the polonski algo
Surface<Real> surface_r;
//! projected exploration direction for the polonski algo (fourier version)
SurfaceComplex<Real> surface_spectral_r;
//! previous pressure
Surface<Real> pold;
};
#endif /* BEM_POLONSKI_H */

Event Timeline