25                             const int p, 
const int space_dim, 
const int type,
 
 
  104   : H1FESpace_(&H1FESpace),
 
  105     HCurlFESpace_(&HCurlFESpace),
 
  115     ownsWeakDiv_(weakDiv == NULL),
 
  116     ownsGrad_(grad == NULL)
 
  135   if ( weakDiv_ == NULL )
 
 
  170IrrotationalProjector::InitSolver()
 const 
  188   weakDiv_->
Mult(x,*xDiv_); *xDiv_ *= -1.0;
 
  195   if ( pcg_ == NULL ) { this->InitSolver(); }
 
  196   pcg_->
Mult(RHS_, Psi_);
 
  202   grad_->
Mult(*psi_, y);
 
 
  208   delete pcg_; pcg_ = NULL;
 
  209   delete amg_; amg_ = NULL;
 
 
  237DivergenceFreeProjector
 
 
  265                   ParMesh &pmesh, 
const char *title,
 
  266                   int x, 
int y, 
int w, 
int h, 
const char *keys)
 
  268   MPI_Comm comm = pmesh.
GetComm();
 
  271   MPI_Comm_size(comm, &num_procs);
 
  272   MPI_Comm_rank(comm, &myid);
 
  274   bool newly_opened = 
false;
 
  275   int connection_failed;
 
  292      if (myid == 0 && newly_opened)
 
  294         sock << 
"window_title '" << title << 
"'\n" 
  295              << 
"window_geometry " 
  296              << x << 
" " << y << 
" " << w << 
" " << h << 
"\n";
 
  297         if ( keys ) { sock << 
"keys " << keys << 
"\n"; }
 
  303         connection_failed = !sock && !newly_opened;
 
  305      MPI_Bcast(&connection_failed, 1, MPI_INT, 0, comm);
 
  307   while (connection_failed);
 
 
  312                    int x, 
int y, 
int w, 
int h, 
const char *keys, 
bool vec)
 
  315   MPI_Comm comm = pmesh.
GetComm();
 
  318   MPI_Comm_size(comm, &num_procs);
 
  319   MPI_Comm_rank(comm, &myid);
 
  321   bool newly_opened = 
false;
 
  322   int connection_failed;
 
  334         sock << 
"solution\n";
 
  340      if (myid == 0 && newly_opened)
 
  342         sock << 
"window_title '" << title << 
"'\n" 
  343              << 
"window_geometry " 
  344              << x << 
" " << y << 
" " << w << 
" " << h << 
"\n";
 
  345         if ( keys ) { sock << 
"keys " << keys << 
"\n"; }
 
  346         else { sock << 
"keys maaAc"; }
 
  347         if ( vec ) { sock << 
"vvv"; }
 
  353         connection_failed = !sock && !newly_opened;
 
  355      MPI_Bcast(&connection_failed, 1, MPI_INT, 0, comm);
 
  357   while (connection_failed);
 
 
T Max() const
Find the maximal element in the array, using the comparison operator < for class T.
void SetSize(int nsize)
Change the logical size of the array, keep existing entries.
void AddDomainInterpolator(DiscreteInterpolator *di)
Adds a domain interpolator. Assumes ownership of di.
virtual void Assemble(int skip_zeros=1)
Construct the internal matrix representation of the discrete linear operator.
const FiniteElementCollection * fec
Associated FE collection (not owned).
Mesh * GetMesh() const
Returns the mesh.
Arbitrary order H1-conforming (continuous) finite elements.
The BoomerAMG solver in hypre.
void SetPrintLevel(int print_level)
void Mult(const HypreParVector &b, HypreParVector &x) const override
Solve Ax=b with hypre's PCG.
void SetPrintLevel(int print_lvl)
void SetPreconditioner(HypreSolver &precond)
Set the hypre solver to be used as a preconditioner.
void SetMaxIter(int max_iter)
Wrapper for hypre's ParCSR matrix class.
Class for an integration rule - an Array of IntegrationPoint.
const IntegrationRule & Get(int GeomType, int Order)
Returns an integration rule for given GeomType and Order.
virtual void SetIntRule(const IntegrationRule *ir)
Prescribe a fixed IntegrationRule to use, or set to null to let the integrator choose an appropriate ...
Arbitrary order "L2-conforming" discontinuous finite elements.
Array< int > bdr_attributes
A list of all unique boundary attributes used by the Mesh.
Geometry::Type GetTypicalElementGeometry() const
If the local mesh is not empty, return GetElementGeometry(0); otherwise, return a typical Geometry pr...
Arbitrary order H(curl)-conforming Nedelec finite elements.
Abstract parallel finite element space.
void GetEssentialTrueDofs(const Array< int > &bdr_attr_is_ess, Array< int > &ess_tdof_list, int component=-1) const override
ParMesh * GetParMesh() const
Class for parallel grid function.
ParFiniteElementSpace * ParFESpace() const
void SaveAsOne(const char *fname, int precision=16) const
void Update() override
Transform by the Space UpdateMatrix (e.g., on Mesh change).
Class for parallel meshes.
void PrintAsOne(std::ostream &out=mfem::out, const std::string &comments="") const
Arbitrary order H(div)-conforming Raviart-Thomas finite elements.
void Mult(const Vector &x, Vector &y) const override
Operator application: y=A(x).
virtual ~DivergenceFreeProjector()
H1_ParFESpace(ParMesh *m, const int p, const int space_dim=3, const int type=BasisType::GaussLobatto, int vdim=1, int order=Ordering::byNODES)
virtual ~IrrotationalProjector()
void Mult(const Vector &x, Vector &y) const override
Operator application: y=A(x).
L2_ParFESpace(ParMesh *m, const int p, const int space_dim, int vdim=1, int order=Ordering::byNODES)
ND_ParFESpace(ParMesh *m, const int p, const int space_dim, int vdim=1, int order=Ordering::byNODES)
ParDiscreteCurlOperator(ParFiniteElementSpace *dfes, ParFiniteElementSpace *rfes)
ParDiscreteDivOperator(ParFiniteElementSpace *dfes, ParFiniteElementSpace *rfes)
ParDiscreteGradOperator(ParFiniteElementSpace *dfes, ParFiniteElementSpace *rfes)
virtual ~ParDiscreteInterpolationOperator()
RT_ParFESpace(ParMesh *m, const int p, const int space_dim, int vdim=1, int order=Ordering::byNODES)
int open(const char hostname[], int port)
Open the socket stream on 'port' at 'hostname'.
bool is_open()
True if the socketstream is open, false otherwise.
void VisualizeMesh(socketstream &sock, const char *vishost, int visport, Mesh &mesh, const char *title, int x, int y, int w, int h, const char *keys)
void VisualizeField(socketstream &sock, const char *vishost, int visport, GridFunction &gf, const char *title, int x, int y, int w, int h, const char *keys, bool vec)
IntegrationRules IntRules(0, Quadrature1D::GaussLegendre)
A global object with all integration rules (defined in intrules.cpp)
real_t p(const Vector &x, real_t t)