Go to the documentation of this file.
   18 #include "libmesh/coupling_matrix.h" 
   19 #include "libmesh/dense_matrix.h" 
   20 #include "libmesh/dense_vector.h" 
   21 #include "libmesh/dof_map.h" 
   22 #include "libmesh/elem.h" 
   23 #include "libmesh/equation_systems.h" 
   24 #include "libmesh/fe.h" 
   25 #include "libmesh/gmv_io.h" 
   26 #include "libmesh/libmesh.h" 
   27 #include "libmesh/linear_implicit_system.h" 
   28 #include "libmesh/mesh.h" 
   29 #include "libmesh/mesh_refinement.h" 
   30 #include "libmesh/numeric_vector.h" 
   31 #include "libmesh/quadrature_gauss.h" 
   32 #include "libmesh/sparse_matrix.h" 
   39               const std::string & system_name);
 
   45 #ifdef LIBMESH_ENABLE_AMR 
   46 int main (
int argc, 
char ** argv)
 
   51     libmesh_error_msg(
"Usage: ./prog -d DIM filename");
 
   54   const unsigned char dim = cast_int<unsigned char>(atoi(argv[2]));
 
   56   std::string meshname  (argv[3]);
 
  120 int main (
int, 
char **)
 
  132               const std::string & libmesh_dbg_var(system_name))
 
  134   libmesh_assert_equal_to (system_name, 
"primary");
 
  146   fe->attach_quadrature_rule (&qrule);
 
  151   fe_face->attach_quadrature_rule(&qface);
 
  158   const std::vector<Real> & JxW_face                   = fe_face->get_JxW();
 
  159   const std::vector<Real> & JxW                        = fe->get_JxW();
 
  160   const std::vector<Point> & q_point                   = fe->get_xyz();
 
  161   const std::vector<std::vector<Real>> & phi          = fe->get_phi();
 
  162   const std::vector<std::vector<RealGradient>> & dphi = fe->get_dphi();
 
  164   std::vector<dof_id_type> dof_indices_U;
 
  165   std::vector<dof_id_type> dof_indices_V;
 
  173   Real vol=0., area=0.;
 
  186       const unsigned int n_phi = cast_int<unsigned int>(phi.size());
 
  189       Kuu.
resize (n_phi, n_phi);
 
  191       Kvv.
resize (n_phi, n_phi);
 
  197       for (
unsigned int gp=0; gp<qrule.
n_points(); gp++)
 
  199           for (
unsigned int i=0; i<n_phi; ++i)
 
  207               const Real f = q_point[gp]*q_point[gp];
 
  214               Fu(i) += JxW[gp]*f*phi[i][gp];
 
  215               Fv(i) += JxW[gp]*f*phi[i][gp];
 
  217               for (
unsigned int j=0; j != n_phi; ++j)
 
  220                   Kuu(i,j) += JxW[gp]*((phi[i][gp])*(phi[j][gp]));
 
  222                   Kvv(i,j) += JxW[gp]*((phi[i][gp])*(phi[j][gp]) +
 
  223                                        1.*((dphi[i][gp])*(dphi[j][gp])));
 
  233           for (
auto side : elem->side_index_range())
 
  234             if (elem->neighbor_ptr(side) == 
nullptr)
 
  236                 fe_face->reinit (elem, side);
 
  238                 for (
const auto & val : JxW_face)
 
  
bool refine_and_coarsen_elements()
Refines and coarsens user-requested elements.
 
The Mesh class is a thin wrapper, around the ReplicatedMesh class by default.
 
virtual System & add_system(const std::string &system_type, const std::string &name)
Add the system of type system_type named name to the systems array.
 
const MeshBase & get_mesh() const
 
virtual void read(const std::string &name, void *mesh_data=nullptr, bool skip_renumber_nodes_and_elements=false, bool skip_find_neighbors=false)=0
Interfaces for reading/writing a mesh to/from a file.
 
NumericVector< Number > * rhs
The system matrix.
 
This class implements specific orders of Gauss quadrature.
 
void dof_indices(const Elem *const elem, std::vector< dof_id_type > &di) const
Fills the vector di with the global degree of freedom indices for the element.
 
void print_dof_constraints(std::ostream &os=libMesh::out, bool print_nonlocal=false) const
Prints (from processor 0) all DoF and Node constraints.
 
virtual SimpleRange< element_iterator > active_local_element_ptr_range()=0
 
void resize(const unsigned int n)
Resizes the matrix and initializes all entries to be 0.
 
unsigned int n_points() const
 
void assemble(EquationSystems &es, const std::string &system_name)
 
virtual const Elem & elem_ref(const dof_id_type i) const
 
The libMesh namespace provides an interface to certain functionality in the library.
 
const T_sys & get_system(const std::string &name) const
 
virtual void solve() override
Assembles & solves the linear system A*x=b.
 
unsigned int mesh_dimension() const
 
This class implements writing meshes in the GMV format.
 
void resize(const unsigned int new_m, const unsigned int new_n)
Resize the matrix.
 
void init(triangulateio &t)
Initializes the fields of t to nullptr/0 as necessary.
 
Implements (adaptive) mesh refinement algorithms for a MeshBase.
 
void attach_assemble_function(void fptr(EquationSystems &es, const std::string &name))
Register a user function to use in assembling the system matrix and RHS.
 
virtual void add_vector(const T *v, const std::vector< numeric_index_type > &dof_indices)
Computes , where v is a pointer and each dof_indices[i] specifies where to add value v[i].
 
This is the MeshBase class.
 
static std::unique_ptr< FEGenericBase > build(const unsigned int dim, const FEType &type)
Builds a specific finite element type.
 
unsigned int add_variable(const std::string &var, const FEType &type, const std::set< subdomain_id_type > *const active_subdomains=nullptr)
Adds the variable var to the list of variables for this system.
 
virtual void init()
Initialize all the systems.
 
SparseMatrix< Number > * matrix
The system matrix.
 
virtual void write(const std::string &) override
This method implements writing a mesh to a specified file.
 
The LibMeshInit class, when constructed, initializes the dependent libraries (e.g.
 
int main(int argc, char **argv)
 
void print_info(std::ostream &os=libMesh::out) const
Prints information about the equation systems, by default to libMesh::out.
 
This is the EquationSystems class.
 
void constrain_element_matrix_and_vector(DenseMatrix< Number > &matrix, DenseVector< Number > &rhs, std::vector< dof_id_type > &elem_dofs, bool asymmetric_constraint_rows=true) const
Constrains the element matrix and vector.
 
virtual void write_equation_systems(const std::string &, const EquationSystems &, const std::set< std::string > *system_names=nullptr)
This method implements writing a mesh with data to a specified file where the data is taken from the ...
 
void resize(const unsigned int n)
Resize the vector.
 
virtual void reinit()
Handle any mesh changes and reinitialize all the systems on the updated mesh.
 
virtual void add_matrix(const DenseMatrix< T > &dm, const std::vector< numeric_index_type > &rows, const std::vector< numeric_index_type > &cols)=0
Add the full matrix dm to the SparseMatrix.
 
class FEType hides (possibly multiple) FEFamily and approximation orders, thereby enabling specialize...
 
This class handles the numbering of degrees of freedom on a mesh.
 
void print_info(std::ostream &os=libMesh::out) const
Prints relevant information about the mesh.
 
const DofMap & get_dof_map() const
 
void set_refinement_flag(const RefinementState rflag)
Sets the value of the refinement flag for the element.
 
CouplingMatrix * _dof_coupling
Degree of freedom coupling.
 
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
 
Manages consistently variables, degrees of freedom, coefficient vectors, matrices and linear solvers ...
 
void uniformly_refine(unsigned int n=1)
Uniformly refines the mesh n times.