The source file exact_solution.C with comments:
#include <math.h>
Mesh library includes
#include "libmesh/libmesh_common.h"
Bring in everything from the libMesh namespace
using namespace libMesh;
/**
* This is the exact solution that
* we are trying to obtain. We will solve
*
* - (u_xx + u_yy) = f
*
* and take a finite difference approximation using this
* function to get f. This is the well-known "method of
* manufactured solutions".
*/
Real exact_solution (const Real x,
const Real y,
const Real z = 0.)
{
static const Real pi = acos(-1.);
return cos(.5*pi*x)*sin(.5*pi*y)*cos(.5*pi*z);
}
The source file subdomains_ex1.C with comments:
Subdomains Example 1 - Solving on a Subdomain
This example builds on the example 4 by showing what to do in order to solve an equation only on a subdomain.
C++ include files that we need
#include <iostream>
#include <algorithm>
#include <math.h>
Basic include file needed for the mesh functionality.
#include "libmesh/libmesh.h"
#include "libmesh/mesh.h"
#include "libmesh/mesh_generation.h"
#include "libmesh/exodusII_io.h"
#include "libmesh/gmv_io.h"
#include "libmesh/gnuplot_io.h"
#include "libmesh/linear_implicit_system.h"
#include "libmesh/equation_systems.h"
Define the Finite Element object.
#include "libmesh/fe.h"
Define Gauss quadrature rules.
#include "libmesh/quadrature_gauss.h"
Define the DofMap, which handles degree of freedom
indexing.
#include "libmesh/dof_map.h"
Define useful datatypes for finite element
matrix and vector components.
#include "libmesh/sparse_matrix.h"
#include "libmesh/numeric_vector.h"
#include "libmesh/dense_matrix.h"
#include "libmesh/dense_vector.h"
Define the PerfLog, a performance logging utility.
It is useful for timing events in a code and giving
you an idea where bottlenecks lie.
#include "libmesh/perf_log.h"
The definition of a geometric element
#include "libmesh/elem.h"
#include "libmesh/mesh_refinement.h"
Classes needed for subdomain computation.
#include "libmesh/system_subset_by_subdomain.h"
#include "libmesh/string_to_enum.h"
#include "libmesh/getpot.h"
Bring in everything from the libMesh namespace
using namespace libMesh;
Function prototype. This is the function that will assemble
the linear system for our Poisson problem. Note that the
function will take the \p EquationSystems object and the
name of the system we are assembling as input. From the
\p EquationSystems object we have acess to the \p Mesh and
other objects we might need.
void assemble_poisson(EquationSystems& es,
const std::string& system_name);
Exact solution function prototype.
Real exact_solution (const Real x,
const Real y = 0.,
const Real z = 0.);
Begin the main program.
int main (int argc, char** argv)
{
Initialize libMesh and any dependent libaries, like in example 2.
LibMeshInit init (argc, argv);
Only our PETSc interface currently supports solves restricted to
subdomains
libmesh_example_assert(libMesh::default_solver_package() == PETSC_SOLVERS, "--enable-petsc");
Skip adaptive examples on a non-adaptive libMesh build
#ifndef LIBMESH_ENABLE_AMR
libmesh_example_assert(false, "--enable-amr");
#else
Declare a performance log for the main program
PerfLog perf_main("Main Program");
Create a GetPot object to parse the command line
Create a GetPot object to parse the command line
GetPot command_line (argc, argv);
Check for proper calling arguments.
if (argc < 3)
{
if (libMesh::processor_id() == 0)
std::cerr << "Usage:\n"
<<"\t " << argv[0] << " -d 2(3)" << " -n 15"
<< std::endl;
This handy function will print the file name, line number,
and then abort. Currrently the library does not use C++
exception handling.
libmesh_error();
}
Brief message to the user regarding the program name
and command line arguments.
else
{
std::cout << "Running " << argv[0];
for (int i=1; i<argc; i++)
std::cout << " " << argv[i];
std::cout << std::endl << std::endl;
}
Read problem dimension from command line. Use int
instead of unsigned since the GetPot overload is ambiguous
otherwise.
int dim = 2;
if ( command_line.search(1, "-d") )
dim = command_line.next(dim);
Skip higher-dimensional examples on a lower-dimensional libMesh build
libmesh_example_assert(dim <= LIBMESH_DIM, "2D/3D support");
Create a mesh with user-defined dimension.
Read number of elements from command line
int ps = 15;
if ( command_line.search(1, "-n") )
ps = command_line.next(ps);
Read FE order from command line
std::string order = "FIRST";
if ( command_line.search(2, "-Order", "-o") )
order = command_line.next(order);
Read FE Family from command line
std::string family = "LAGRANGE";
if ( command_line.search(2, "-FEFamily", "-f") )
family = command_line.next(family);
Cannot use discontinuous basis.
if ((family == "MONOMIAL") || (family == "XYZ"))
{
if (libMesh::processor_id() == 0)
std::cerr << "ex4 currently requires a C^0 (or higher) FE basis." << std::endl;
libmesh_error();
}
Mesh mesh;
Use the MeshTools::Generation mesh generator to create a uniform
grid on the square [-1,1]^D. We instruct the mesh generator
to build a mesh of 8x8 \p Quad9 elements in 2D, or \p Hex27
elements in 3D. Building these higher-order elements allows
us to use higher-order approximation, as in example 3.
Real halfwidth = dim > 1 ? 1. : 0.;
Real halfheight = dim > 2 ? 1. : 0.;
if ((family == "LAGRANGE") && (order == "FIRST"))
{
No reason to use high-order geometric elements if we are
solving with low-order finite elements.
MeshTools::Generation::build_cube (mesh,
ps,
(dim>1) ? ps : 0,
(dim>2) ? ps : 0,
-1., 1.,
-halfwidth, halfwidth,
-halfheight, halfheight,
(dim==1) ? EDGE2 :
((dim == 2) ? QUAD4 : HEX8));
}
else
{
MeshTools::Generation::build_cube (mesh,
ps,
(dim>1) ? ps : 0,
(dim>2) ? ps : 0,
-1., 1.,
-halfwidth, halfwidth,
-halfheight, halfheight,
(dim==1) ? EDGE3 :
((dim == 2) ? QUAD9 : HEX27));
}
To demonstate solving on a subdomain, we will solve only on the
interior of a circle (ball in 3d) with radius 0.8. So show that
this also works well on locally refined meshes, we refine once
all elements that are located on the boundary of this circle (or
ball).
{
A MeshRefinement object is needed to refine meshes.
MeshRefinement meshRefinement(mesh);
Loop over all elements.
MeshBase::element_iterator elem_it = mesh.elements_begin();
const MeshBase::element_iterator elem_end = mesh.elements_end();
for (; elem_it != elem_end; ++elem_it)
{
Elem* elem = *elem_it;
if(elem->active())
{
Just check whether the current element has at least one
node inside and one node outside the circle.
bool node_in = false;
bool node_out = false;
for(unsigned int i=0; i<elem->n_nodes(); i++)
{
double d = elem->point(i).size();
if(d<0.8)
{
node_in = true;
}
else
{
node_out = true;
}
}
if(node_in && node_out)
{
elem->set_refinement_flag(Elem::REFINE);
}
else
{
elem->set_refinement_flag(Elem::DO_NOTHING);
}
}
else
{
elem->set_refinement_flag(Elem::INACTIVE);
}
}
Now actually refine.
meshRefinement.refine_elements();
}
Print information about the mesh to the screen.
mesh.print_info();
Now set the subdomain_id of all elements whose centroid is inside
the circle to 1.
{
Loop over all elements.
MeshBase::element_iterator elem_it = mesh.elements_begin();
const MeshBase::element_iterator elem_end = mesh.elements_end();
for (; elem_it != elem_end; ++elem_it)
{
Elem* elem = *elem_it;
double d = elem->centroid().size();
if(d<0.8)
{
elem->subdomain_id() = 1;
}
}
}
Create an equation systems object.
EquationSystems equation_systems (mesh);
Declare the system and its variables.
Create a system named "Poisson"
LinearImplicitSystem& system =
equation_systems.add_system<LinearImplicitSystem> ("Poisson");
Add the variable "u" to "Poisson". "u"
will be approximated using second-order approximation.
system.add_variable("u",
Utility::string_to_enum<Order> (order),
Utility::string_to_enum<FEFamily>(family));
Give the system a pointer to the matrix assembly
function.
system.attach_assemble_function (assemble_poisson);
Initialize the data structures for the equation system.
equation_systems.init();
Print information about the system to the screen.
equation_systems.print_info();
mesh.print_info();
Restrict solves to those elements that have subdomain_id set to 1.
std::set<subdomain_id_type> id_list;
id_list.insert(1);
SystemSubsetBySubdomain::SubdomainSelectionByList selection(id_list);
SystemSubsetBySubdomain subset(system,selection);
system.restrict_solve_to(&subset,SUBSET_ZERO);
Note that using \p SUBSET_ZERO will cause all dofs outside the
subdomain to be cleared. This will, however, cause some hanging
nodes outside the subdomain to have inconsistent values.
Solve the system "Poisson", just like example 2.
Solve the system "Poisson", just like example 2.
equation_systems.get_system("Poisson").solve();
After solving the system write the solution
to a GMV-formatted plot file.
if(dim == 1)
{
GnuPlotIO plot(mesh,"Subdomains Example 1, 1D",GnuPlotIO::GRID_ON);
plot.write_equation_systems("gnuplot_script",equation_systems);
}
else
{
GMVIO (mesh).write_equation_systems ((dim == 3) ?
"out_3.gmv" : "out_2.gmv",equation_systems);
#ifdef LIBMESH_HAVE_EXODUS_API
ExodusII_IO (mesh).write_equation_systems ((dim == 3) ?
"out_3.e" : "out_2.e",equation_systems);
#endif // #ifdef LIBMESH_HAVE_EXODUS_API
}
#endif // #ifndef LIBMESH_ENABLE_AMR
All done.
return 0;
}
We now define the matrix assembly function for the Poisson system. We need to first compute element matrices and right-hand sides, and then take into account the boundary conditions, which will be handled via a penalty method.
void assemble_poisson(EquationSystems& es,
const std::string& system_name)
{
It is a good idea to make sure we are assembling
the proper system.
libmesh_assert_equal_to (system_name, "Poisson");
Declare a performance log. Give it a descriptive
string to identify what part of the code we are
logging, since there may be many PerfLogs in an
application.
PerfLog perf_log ("Matrix Assembly");
Get a constant reference to the mesh object.
const MeshBase& mesh = es.get_mesh();
The dimension that we are running
const unsigned int dim = mesh.mesh_dimension();
Get a reference to the LinearImplicitSystem we are solving
LinearImplicitSystem& system = es.get_system<LinearImplicitSystem>("Poisson");
A reference to the \p DofMap object for this system. The \p DofMap
object handles the index translation from node and element numbers
to degree of freedom numbers. We will talk more about the \p DofMap
in future examples.
const DofMap& dof_map = system.get_dof_map();
Get a constant reference to the Finite Element type
for the first (and only) variable in the system.
FEType fe_type = dof_map.variable_type(0);
Build a Finite Element object of the specified type. Since the
\p FEBase::build() member dynamically creates memory we will
store the object as an \p AutoPtr. This can be thought
of as a pointer that will clean up after itself.
AutoPtr<FEBase> fe (FEBase::build(dim, fe_type));
A 5th order Gauss quadrature rule for numerical integration.
QGauss qrule (dim, FIFTH);
Tell the finite element object to use our quadrature rule.
fe->attach_quadrature_rule (&qrule);
Declare a special finite element object for
boundary integration.
AutoPtr<FEBase> fe_face (FEBase::build(dim, fe_type));
Boundary integration requires one quadraure rule,
with dimensionality one less than the dimensionality
of the element.
QGauss qface(dim-1, FIFTH);
Tell the finte element object to use our
quadrature rule.
fe_face->attach_quadrature_rule (&qface);
Here we define some references to cell-specific data that
will be used to assemble the linear system.
We begin with the element Jacobian * quadrature weight at each
integration point.
const std::vector<Real>& JxW = fe->get_JxW();
The physical XY locations of the quadrature points on the element.
These might be useful for evaluating spatially varying material
properties at the quadrature points.
const std::vector<Point>& q_point = fe->get_xyz();
The element shape functions evaluated at the quadrature points.
const std::vector<std::vector<Real> >& phi = fe->get_phi();
The element shape function gradients evaluated at the quadrature
points.
const std::vector<std::vector<RealGradient> >& dphi = fe->get_dphi();
Define data structures to contain the element matrix
and right-hand-side vector contribution. Following
basic finite element terminology we will denote these
"Ke" and "Fe". More detail is in example 3.
DenseMatrix<Number> Ke;
DenseVector<Number> Fe;
This vector will hold the degree of freedom indices for
the element. These define where in the global system
the element degrees of freedom get mapped.
std::vector<dof_id_type> dof_indices;
Now we will loop over all the elements in the mesh.
We will compute the element matrix and right-hand-side
contribution. See example 3 for a discussion of the
element iterators.
MeshBase::const_element_iterator el = mesh.active_local_elements_begin();
const MeshBase::const_element_iterator end_el = mesh.active_local_elements_end();
for ( ; el != end_el; ++el)
{
Store a pointer to the element we are currently
working on. This allows for nicer syntax later.
const Elem* elem = *el;
Elements with subdomain_id other than 1 are not in the active
subdomain. We don't assemble anything for them.
if(elem->subdomain_id()==1)
{
Start logging the shape function initialization.
This is done through a simple function call with
the name of the event to log.
perf_log.push("elem init");
Get the degree of freedom indices for the
current element. These define where in the global
matrix and right-hand-side this element will
contribute to.
dof_map.dof_indices (elem, dof_indices);
Compute the element-specific data for the current
element. This involves computing the location of the
quadrature points (q_point) and the shape functions
(phi, dphi) for the current element.
fe->reinit (elem);
Zero the element matrix and right-hand side before
summing them. We use the resize member here because
the number of degrees of freedom might have changed from
the last element. Note that this will be the case if the
element type is different (i.e. the last element was a
triangle, now we are on a quadrilateral).
Ke.resize (dof_indices.size(),
dof_indices.size());
Fe.resize (dof_indices.size());
Stop logging the shape function initialization.
If you forget to stop logging an event the PerfLog
object will probably catch the error and abort.
perf_log.pop("elem init");
Now we will build the element matrix. This involves
a double loop to integrate the test funcions (i) against
the trial functions (j).
We have split the numeric integration into two loops so that we can log the matrix and right-hand-side computation seperately.
Now start logging the element matrix computation
We have split the numeric integration into two loops so that we can log the matrix and right-hand-side computation seperately.
Now start logging the element matrix computation
perf_log.push ("Ke");
for (unsigned int qp=0; qp<qrule.n_points(); qp++)
for (unsigned int i=0; i<phi.size(); i++)
for (unsigned int j=0; j<phi.size(); j++)
Ke(i,j) += JxW[qp]*(dphi[i][qp]*dphi[j][qp]);
Stop logging the matrix computation
perf_log.pop ("Ke");
Now we build the element right-hand-side contribution.
This involves a single loop in which we integrate the
"forcing function" in the PDE against the test functions.
Start logging the right-hand-side computation
Start logging the right-hand-side computation
perf_log.push ("Fe");
for (unsigned int qp=0; qp<qrule.n_points(); qp++)
{
fxy is the forcing function for the Poisson equation.
In this case we set fxy to be a finite difference
Laplacian approximation to the (known) exact solution.
We will use the second-order accurate FD Laplacian approximation, which in 2D on a structured grid is
u_xx + u_yy = (u(i-1,j) + u(i+1,j) + u(i,j-1) + u(i,j+1) + -4*u(i,j))/h^2
Since the value of the forcing function depends only on the location of the quadrature point (q_point[qp]) we will compute it here, outside of the i-loop
We will use the second-order accurate FD Laplacian approximation, which in 2D on a structured grid is
u_xx + u_yy = (u(i-1,j) + u(i+1,j) + u(i,j-1) + u(i,j+1) + -4*u(i,j))/h^2
Since the value of the forcing function depends only on the location of the quadrature point (q_point[qp]) we will compute it here, outside of the i-loop
const Real x = q_point[qp](0);
#if LIBMESH_DIM > 1
const Real y = q_point[qp](1);
#else
const Real y = 0.;
#endif
#if LIBMESH_DIM > 2
const Real z = q_point[qp](2);
#else
const Real z = 0.;
#endif
const Real eps = 1.e-3;
const Real uxx = (exact_solution(x-eps,y,z) +
exact_solution(x+eps,y,z) +
-2.*exact_solution(x,y,z))/eps/eps;
const Real uyy = (exact_solution(x,y-eps,z) +
exact_solution(x,y+eps,z) +
-2.*exact_solution(x,y,z))/eps/eps;
const Real uzz = (exact_solution(x,y,z-eps) +
exact_solution(x,y,z+eps) +
-2.*exact_solution(x,y,z))/eps/eps;
Real fxy;
if(dim==1)
{
In 1D, compute the rhs by differentiating the
exact solution twice.
const Real pi = libMesh::pi;
fxy = (0.25*pi*pi)*sin(.5*pi*x);
}
else
{
fxy = - (uxx + uyy + ((dim==2) ? 0. : uzz));
}
Add the RHS contribution
for (unsigned int i=0; i<phi.size(); i++)
Fe(i) += JxW[qp]*fxy*phi[i][qp];
}
Stop logging the right-hand-side computation
perf_log.pop ("Fe");
At this point the interior element integration has
been completed. However, we have not yet addressed
boundary conditions. For this example we will only
consider simple Dirichlet boundary conditions imposed
via the penalty method. This is discussed at length in
example 3.
{
Start logging the boundary condition computation
perf_log.push ("BCs");
The following loops over the sides of the element. If
the element has no neighbor on a side then that side
MUST live on a boundary of the domain. If there is a
neighbor, check that neighbor's subdomain_id; if that
is different from 1, the side is also located on the
boundary.
for (unsigned int side=0; side<elem->n_sides(); side++)
if ((elem->neighbor(side) == NULL) ||
(elem->neighbor(side)->subdomain_id()!=1))
{
The penalty value. \frac{1}{\epsilon}
in the discussion above.
const Real penalty = 1.e10;
The value of the shape functions at the quadrature
points.
const std::vector<std::vector<Real> >& phi_face = fe_face->get_phi();
The Jacobian * Quadrature Weight at the quadrature
points on the face.
const std::vector<Real>& JxW_face = fe_face->get_JxW();
The XYZ locations (in physical space) of the
quadrature points on the face. This is where
we will interpolate the boundary value function.
const std::vector<Point >& qface_point = fe_face->get_xyz();
Compute the shape function values on the element
face.
fe_face->reinit(elem, side);
Loop over the face quadrature points for integration.
for (unsigned int qp=0; qp<qface.n_points(); qp++)
{
The location on the boundary of the current
face quadrature point.
const Real xf = qface_point[qp](0);
#if LIBMESH_DIM > 1
const Real yf = qface_point[qp](1);
#else
const Real yf = 0.;
#endif
#if LIBMESH_DIM > 2
const Real zf = qface_point[qp](2);
#else
const Real zf = 0.;
#endif
The boundary value.
const Real value = exact_solution(xf, yf, zf);
Matrix contribution of the L2 projection.
for (unsigned int i=0; i<phi_face.size(); i++)
for (unsigned int j=0; j<phi_face.size(); j++)
Ke(i,j) += JxW_face[qp]*penalty*phi_face[i][qp]*phi_face[j][qp];
Right-hand-side contribution of the L2
projection.
for (unsigned int i=0; i<phi_face.size(); i++)
Fe(i) += JxW_face[qp]*penalty*value*phi_face[i][qp];
}
}
Stop logging the boundary condition computation
perf_log.pop ("BCs");
}
If this assembly program were to be used on an adaptive mesh,
we would have to apply any hanging node constraint equations
dof_map.constrain_element_matrix_and_vector (Ke, Fe, dof_indices);
The element matrix and right-hand-side are now built
for this element. Add them to the global matrix and
right-hand-side vector. The \p SparseMatrix::add_matrix()
and \p NumericVector::add_vector() members do this for us.
Start logging the insertion of the local (element)
matrix and vector into the global matrix and vector
perf_log.push ("matrix insertion");
system.matrix->add_matrix (Ke, dof_indices);
system.rhs->add_vector (Fe, dof_indices);
Start logging the insertion of the local (element)
matrix and vector into the global matrix and vector
perf_log.pop ("matrix insertion");
}
}
That's it. We don't need to do anything else to the
PerfLog. When it goes out of scope (at this function return)
it will print its log to the screen. Pretty easy, huh?
}
The source file exact_solution.C without comments:
#include <math.h>
#include "libmesh/libmesh_common.h"
using namespace libMesh;
/**
* This is the exact solution that
* we are trying to obtain. We will solve
*
* - (u_xx + u_yy) = f
*
* and take a finite difference approximation using this
* function to get f. This is the well-known "method of
* manufactured solutions".
*/
Real exact_solution (const Real x,
const Real y,
const Real z = 0.)
{
static const Real pi = acos(-1.);
return cos(.5*pi*x)*sin(.5*pi*y)*cos(.5*pi*z);
}
The source file subdomains_ex1.C without comments:
#include <iostream>
#include <algorithm>
#include <math.h>
#include "libmesh/libmesh.h"
#include "libmesh/mesh.h"
#include "libmesh/mesh_generation.h"
#include "libmesh/exodusII_io.h"
#include "libmesh/gmv_io.h"
#include "libmesh/gnuplot_io.h"
#include "libmesh/linear_implicit_system.h"
#include "libmesh/equation_systems.h"
#include "libmesh/fe.h"
#include "libmesh/quadrature_gauss.h"
#include "libmesh/dof_map.h"
#include "libmesh/sparse_matrix.h"
#include "libmesh/numeric_vector.h"
#include "libmesh/dense_matrix.h"
#include "libmesh/dense_vector.h"
#include "libmesh/perf_log.h"
#include "libmesh/elem.h"
#include "libmesh/mesh_refinement.h"
#include "libmesh/system_subset_by_subdomain.h"
#include "libmesh/string_to_enum.h"
#include "libmesh/getpot.h"
using namespace libMesh;
void assemble_poisson(EquationSystems& es,
const std::string& system_name);
Real exact_solution (const Real x,
const Real y = 0.,
const Real z = 0.);
int main (int argc, char** argv)
{
LibMeshInit init (argc, argv);
libmesh_example_assert(libMesh::default_solver_package() == PETSC_SOLVERS, "--enable-petsc");
#ifndef LIBMESH_ENABLE_AMR
libmesh_example_assert(false, "--enable-amr");
#else
GetPot command_line (argc, argv);
if (argc < 3)
{
if (libMesh::processor_id() == 0)
std::cerr << "Usage:\n"
<<"\t " << argv[0] << " -d 2(3)" << " -n 15"
<< std::endl;
libmesh_error();
}
else
{
std::cout << "Running " << argv[0];
for (int i=1; i<argc; i++)
std::cout << " " << argv[i];
std::cout << std::endl << std::endl;
}
int dim = 2;
if ( command_line.search(1, "-d") )
dim = command_line.next(dim);
libmesh_example_assert(dim <= LIBMESH_DIM, "2D/3D support");
int ps = 15;
if ( command_line.search(1, "-n") )
ps = command_line.next(ps);
std::string order = "FIRST";
if ( command_line.search(2, "-Order", "-o") )
order = command_line.next(order);
std::string family = "LAGRANGE";
if ( command_line.search(2, "-FEFamily", "-f") )
family = command_line.next(family);
if ((family == "MONOMIAL") || (family == "XYZ"))
{
if (libMesh::processor_id() == 0)
std::cerr << "ex4 currently requires a C^0 (or higher) FE basis." << std::endl;
libmesh_error();
}
Mesh mesh;
Real halfwidth = dim > 1 ? 1. : 0.;
Real halfheight = dim > 2 ? 1. : 0.;
if ((family == "LAGRANGE") && (order == "FIRST"))
{
MeshTools::Generation::build_cube (mesh,
ps,
(dim>1) ? ps : 0,
(dim>2) ? ps : 0,
-1., 1.,
-halfwidth, halfwidth,
-halfheight, halfheight,
(dim==1) ? EDGE2 :
((dim == 2) ? QUAD4 : HEX8));
}
else
{
MeshTools::Generation::build_cube (mesh,
ps,
(dim>1) ? ps : 0,
(dim>2) ? ps : 0,
-1., 1.,
-halfwidth, halfwidth,
-halfheight, halfheight,
(dim==1) ? EDGE3 :
((dim == 2) ? QUAD9 : HEX27));
}
{
MeshRefinement meshRefinement(mesh);
MeshBase::element_iterator elem_it = mesh.elements_begin();
const MeshBase::element_iterator elem_end = mesh.elements_end();
for (; elem_it != elem_end; ++elem_it)
{
Elem* elem = *elem_it;
if(elem->active())
{
bool node_in = false;
bool node_out = false;
for(unsigned int i=0; i<elem->n_nodes(); i++)
{
double d = elem->point(i).size();
if(d<0.8)
{
node_in = true;
}
else
{
node_out = true;
}
}
if(node_in && node_out)
{
elem->set_refinement_flag(Elem::REFINE);
}
else
{
elem->set_refinement_flag(Elem::DO_NOTHING);
}
}
else
{
elem->set_refinement_flag(Elem::INACTIVE);
}
}
meshRefinement.refine_elements();
}
mesh.print_info();
{
MeshBase::element_iterator elem_it = mesh.elements_begin();
const MeshBase::element_iterator elem_end = mesh.elements_end();
for (; elem_it != elem_end; ++elem_it)
{
Elem* elem = *elem_it;
double d = elem->centroid().size();
if(d<0.8)
{
elem->subdomain_id() = 1;
}
}
}
EquationSystems equation_systems (mesh);
LinearImplicitSystem& system =
equation_systems.add_system<LinearImplicitSystem> ("Poisson");
system.add_variable("u",
Utility::string_to_enum<Order> (order),
Utility::string_to_enum<FEFamily>(family));
system.attach_assemble_function (assemble_poisson);
equation_systems.init();
equation_systems.print_info();
mesh.print_info();
std::set<subdomain_id_type> id_list;
id_list.insert(1);
SystemSubsetBySubdomain::SubdomainSelectionByList selection(id_list);
SystemSubsetBySubdomain subset(system,selection);
system.restrict_solve_to(&subset,SUBSET_ZERO);
equation_systems.get_system("Poisson").solve();
if(dim == 1)
{
GnuPlotIO plot(mesh,"Subdomains Example 1, 1D",GnuPlotIO::GRID_ON);
plot.write_equation_systems("gnuplot_script",equation_systems);
}
else
{
GMVIO (mesh).write_equation_systems ((dim == 3) ?
"out_3.gmv" : "out_2.gmv",equation_systems);
#ifdef LIBMESH_HAVE_EXODUS_API
ExodusII_IO (mesh).write_equation_systems ((dim == 3) ?
"out_3.e" : "out_2.e",equation_systems);
#endif // #ifdef LIBMESH_HAVE_EXODUS_API
}
#endif // #ifndef LIBMESH_ENABLE_AMR
return 0;
}
void assemble_poisson(EquationSystems& es,
const std::string& system_name)
{
libmesh_assert_equal_to (system_name, "Poisson");
PerfLog perf_log ("Matrix Assembly");
const MeshBase& mesh = es.get_mesh();
const unsigned int dim = mesh.mesh_dimension();
LinearImplicitSystem& system = es.get_system<LinearImplicitSystem>("Poisson");
const DofMap& dof_map = system.get_dof_map();
FEType fe_type = dof_map.variable_type(0);
AutoPtr<FEBase> fe (FEBase::build(dim, fe_type));
QGauss qrule (dim, FIFTH);
fe->attach_quadrature_rule (&qrule);
AutoPtr<FEBase> fe_face (FEBase::build(dim, fe_type));
QGauss qface(dim-1, FIFTH);
fe_face->attach_quadrature_rule (&qface);
const std::vector<Real>& JxW = fe->get_JxW();
const std::vector<Point>& q_point = fe->get_xyz();
const std::vector<std::vector<Real> >& phi = fe->get_phi();
const std::vector<std::vector<RealGradient> >& dphi = fe->get_dphi();
DenseMatrix<Number> Ke;
DenseVector<Number> Fe;
std::vector<dof_id_type> dof_indices;
MeshBase::const_element_iterator el = mesh.active_local_elements_begin();
const MeshBase::const_element_iterator end_el = mesh.active_local_elements_end();
for ( ; el != end_el; ++el)
{
const Elem* elem = *el;
if(elem->subdomain_id()==1)
{
perf_log.push("elem init");
dof_map.dof_indices (elem, dof_indices);
fe->reinit (elem);
Ke.resize (dof_indices.size(),
dof_indices.size());
Fe.resize (dof_indices.size());
perf_log.pop("elem init");
perf_log.push ("Ke");
for (unsigned int qp=0; qp<qrule.n_points(); qp++)
for (unsigned int i=0; i<phi.size(); i++)
for (unsigned int j=0; j<phi.size(); j++)
Ke(i,j) += JxW[qp]*(dphi[i][qp]*dphi[j][qp]);
perf_log.pop ("Ke");
perf_log.push ("Fe");
for (unsigned int qp=0; qp<qrule.n_points(); qp++)
{
const Real x = q_point[qp](0);
#if LIBMESH_DIM > 1
const Real y = q_point[qp](1);
#else
const Real y = 0.;
#endif
#if LIBMESH_DIM > 2
const Real z = q_point[qp](2);
#else
const Real z = 0.;
#endif
const Real eps = 1.e-3;
const Real uxx = (exact_solution(x-eps,y,z) +
exact_solution(x+eps,y,z) +
-2.*exact_solution(x,y,z))/eps/eps;
const Real uyy = (exact_solution(x,y-eps,z) +
exact_solution(x,y+eps,z) +
-2.*exact_solution(x,y,z))/eps/eps;
const Real uzz = (exact_solution(x,y,z-eps) +
exact_solution(x,y,z+eps) +
-2.*exact_solution(x,y,z))/eps/eps;
Real fxy;
if(dim==1)
{
const Real pi = libMesh::pi;
fxy = (0.25*pi*pi)*sin(.5*pi*x);
}
else
{
fxy = - (uxx + uyy + ((dim==2) ? 0. : uzz));
}
for (unsigned int i=0; i<phi.size(); i++)
Fe(i) += JxW[qp]*fxy*phi[i][qp];
}
perf_log.pop ("Fe");
{
perf_log.push ("BCs");
for (unsigned int side=0; side<elem->n_sides(); side++)
if ((elem->neighbor(side) == NULL) ||
(elem->neighbor(side)->subdomain_id()!=1))
{
const Real penalty = 1.e10;
const std::vector<std::vector<Real> >& phi_face = fe_face->get_phi();
const std::vector<Real>& JxW_face = fe_face->get_JxW();
const std::vector<Point >& qface_point = fe_face->get_xyz();
fe_face->reinit(elem, side);
for (unsigned int qp=0; qp<qface.n_points(); qp++)
{
const Real xf = qface_point[qp](0);
#if LIBMESH_DIM > 1
const Real yf = qface_point[qp](1);
#else
const Real yf = 0.;
#endif
#if LIBMESH_DIM > 2
const Real zf = qface_point[qp](2);
#else
const Real zf = 0.;
#endif
const Real value = exact_solution(xf, yf, zf);
for (unsigned int i=0; i<phi_face.size(); i++)
for (unsigned int j=0; j<phi_face.size(); j++)
Ke(i,j) += JxW_face[qp]*penalty*phi_face[i][qp]*phi_face[j][qp];
for (unsigned int i=0; i<phi_face.size(); i++)
Fe(i) += JxW_face[qp]*penalty*value*phi_face[i][qp];
}
}
perf_log.pop ("BCs");
}
dof_map.constrain_element_matrix_and_vector (Ke, Fe, dof_indices);
perf_log.push ("matrix insertion");
system.matrix->add_matrix (Ke, dof_indices);
system.rhs->add_vector (Fe, dof_indices);
perf_log.pop ("matrix insertion");
}
}
}
The console output of the program:
***************************************************************
* Running Example subdomains_ex1:
* mpirun -np 2 example-devel -d 1 -n 40 -pc_type bjacobi -sub_pc_type ilu -sub_pc_factor_levels 4 -sub_pc_factor_zeropivot 0 -ksp_right_pc -log_summary
***************************************************************
Running /workspace/libmesh/examples/subdomains/subdomains_ex1/.libs/lt-example-devel -d 1 -n 40 -pc_type bjacobi -sub_pc_type ilu -sub_pc_factor_levels 4 -sub_pc_factor_zeropivot 0 -ksp_right_pc -log_summary
Mesh Information:
mesh_dimension()=1
spatial_dimension()=3
n_nodes()=43
n_local_nodes()=22
n_elem()=44
n_local_elem()=22
n_active_elem()=42
n_subdomains()=1
n_partitions()=2
n_processors()=2
n_threads()=1
processor_id()=0
EquationSystems
n_systems()=1
System #0, "Poisson"
Type "LinearImplicit"
Variables="u"
Finite Element Types="LAGRANGE", "JACOBI_20_00"
Infinite Element Mapping="CARTESIAN"
Approximation Orders="FIRST", "THIRD"
n_dofs()=43
n_local_dofs()=22
n_constrained_dofs()=0
n_local_constrained_dofs()=0
n_vectors()=1
n_matrices()=1
DofMap Sparsity
Average On-Processor Bandwidth <= 2.93023
Average Off-Processor Bandwidth <= 0.0465116
Maximum On-Processor Bandwidth <= 3
Maximum Off-Processor Bandwidth <= 1
DofMap Constraints
Number of DoF Constraints = 0
Number of Node Constraints = 0
Mesh Information:
mesh_dimension()=1
spatial_dimension()=3
n_nodes()=43
n_local_nodes()=22
n_elem()=44
n_local_elem()=22
n_active_elem()=42
n_subdomains()=2
n_partitions()=2
n_processors()=2
n_threads()=1
processor_id()=0
----------------------------------------------------------------------------------------------------------------------
| Processor id: 0 |
| Num Processors: 2 |
| Time: Tue Feb 5 13:41:42 2013 |
| OS: Linux |
| HostName: hbar.ices.utexas.edu |
| OS Release: 2.6.32-279.1.1.el6.x86_64 |
| OS Version: #1 SMP Tue Jul 10 11:24:23 CDT 2012 |
| Machine: x86_64 |
| Username: benkirk |
| Configuration: ./configure '--enable-everything' |
| '--prefix=/workspace/libmesh/install' |
| 'CXX=mpicxx' |
| 'CC=mpicc' |
| 'F77=mpif77' |
| 'FC=mpif90' |
| 'PETSC_DIR=/opt/apps/ossw/libraries/petsc/petsc-3.3-p2' |
| 'PETSC_ARCH=intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt' |
| 'SLEPC_DIR=/opt/apps/ossw/libraries/slepc/slepc-3.3-p2-petsc-3.3-p2-cxx-opt' |
| 'TRILINOS_DIR=/opt/apps/ossw/libraries/trilinos/trilinos-10.12.2/sl6/intel-12.1/mpich2-1.4.1p1/mkl-intel-10.3.12.361'|
| 'VTK_DIR=/opt/apps/ossw/libraries/vtk/vtk-5.10.0/sl6/intel-12.1' |
----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
| Matrix Assembly Performance: Alive time=0.001462, Active time=0.000953 |
-----------------------------------------------------------------------------------------------------------
| Event nCalls Total Time Avg Time Total Time Avg Time % of Active Time |
| w/o Sub w/o Sub With Sub With Sub w/o S With S |
|-----------------------------------------------------------------------------------------------------------|
| |
| BCs 17 0.0001 0.000006 0.0001 0.000006 10.70 10.70 |
| Fe 17 0.0001 0.000005 0.0001 0.000005 8.60 8.60 |
| Ke 17 0.0000 0.000002 0.0000 0.000002 2.94 2.94 |
| elem init 17 0.0007 0.000040 0.0007 0.000040 70.72 70.72 |
| matrix insertion 17 0.0001 0.000004 0.0001 0.000004 7.03 7.03 |
-----------------------------------------------------------------------------------------------------------
| Totals: 85 0.0010 100.00 |
-----------------------------------------------------------------------------------------------------------
************************************************************************************************************************
*** WIDEN YOUR WINDOW TO 120 CHARACTERS. Use 'enscript -r -fCourier9' to print this document ***
************************************************************************************************************************
---------------------------------------------- PETSc Performance Summary: ----------------------------------------------
/workspace/libmesh/examples/subdomains/subdomains_ex1/.libs/lt-example-devel on a intel-12. named hbar.ices.utexas.edu with 2 processors, by benkirk Tue Feb 5 13:41:42 2013
Using Petsc Release Version 3.3.0, Patch 2, Fri Jul 13 15:42:00 CDT 2012
Max Max/Min Avg Total
Time (sec): 3.153e-02 1.00003 3.153e-02
Objects: 6.800e+01 1.00000 6.800e+01
Flops: 2.876e+03 1.00665 2.866e+03 5.733e+03
Flops/sec: 9.123e+04 1.00668 9.092e+04 1.818e+05
MPI Messages: 1.950e+01 1.00000 1.950e+01 3.900e+01
MPI Message Lengths: 2.660e+02 1.03101 1.344e+01 5.240e+02
MPI Reductions: 1.150e+02 1.00000
Flop counting convention: 1 flop = 1 real number operation of type (multiply/divide/add/subtract)
e.g., VecAXPY() for real vectors of length N --> 2N flops
and VecAXPY() for complex vectors of length N --> 8N flops
Summary of Stages: ----- Time ------ ----- Flops ----- --- Messages --- -- Message Lengths -- -- Reductions --
Avg %Total Avg %Total counts %Total Avg %Total counts %Total
0: Main Stage: 3.1497e-02 99.9% 5.7330e+03 100.0% 3.900e+01 100.0% 1.344e+01 100.0% 1.140e+02 99.1%
------------------------------------------------------------------------------------------------------------------------
See the 'Profiling' chapter of the users' manual for details on interpreting output.
Phase summary info:
Count: number of times phase was executed
Time and Flops: Max - maximum over all processors
Ratio - ratio of maximum to minimum over all processors
Mess: number of messages sent
Avg. len: average message length
Reduct: number of global reductions
Global: entire computation
Stage: stages of a computation. Set stages with PetscLogStagePush() and PetscLogStagePop().
%T - percent time in this phase %f - percent flops in this phase
%M - percent messages in this phase %L - percent message lengths in this phase
%R - percent reductions in this phase
Total Mflop/s: 10e-6 * (sum of flops over all processors)/(max time over all processors)
------------------------------------------------------------------------------------------------------------------------
Event Count Time (sec) Flops --- Global --- --- Stage --- Total
Max Ratio Max Ratio Max Ratio Mess Avg len Reduct %T %f %M %L %R %T %f %M %L %R Mflop/s
------------------------------------------------------------------------------------------------------------------------
--- Event Stage 0: Main Stage
VecMDot 5 1.0 3.0518e-05 1.1 5.25e+02 1.1 0.0e+00 0.0e+00 5.0e+00 0 18 0 0 4 0 18 0 0 4 33
VecNorm 7 1.0 3.3855e-05 1.1 2.52e+02 1.1 0.0e+00 0.0e+00 7.0e+00 0 9 0 0 6 0 9 0 0 6 14
VecScale 6 1.0 1.4305e-05 1.1 1.08e+02 1.1 0.0e+00 0.0e+00 0.0e+00 0 4 0 0 0 0 4 0 0 0 15
VecCopy 2 1.0 2.1458e-06 1.0 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
VecSet 16 1.0 4.7684e-06 1.2 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
VecAXPY 2 1.0 6.0341e-03 1.0 7.20e+01 1.1 0.0e+00 0.0e+00 0.0e+00 19 2 0 0 0 19 2 0 0 0 0
VecMAXPY 6 1.0 2.8610e-06 3.0 7.20e+02 1.1 0.0e+00 0.0e+00 0.0e+00 0 24 0 0 0 0 24 0 0 0 489
VecAssemblyBegin 3 1.0 5.9128e-05 1.0 0.00e+00 0.0 2.0e+00 6.0e+00 9.0e+00 0 0 5 2 8 0 0 5 2 8 0
VecAssemblyEnd 3 1.0 1.6928e-05 1.0 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
VecScatterBegin 10 1.0 4.2677e-05 1.0 0.00e+00 0.0 1.4e+01 8.6e+00 0.0e+00 0 0 36 23 0 0 0 36 23 0 0
VecScatterEnd 10 1.0 1.1206e-05 1.1 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
VecNormalize 6 1.0 7.9870e-05 1.0 3.24e+02 1.1 0.0e+00 0.0e+00 6.0e+00 0 11 0 0 5 0 11 0 0 5 8
MatMult 6 1.0 6.3896e-05 1.0 5.28e+02 1.1 1.2e+01 8.0e+00 0.0e+00 0 18 31 18 0 0 18 31 18 0 16
MatSolve 7 1.0 4.7684e-06 1.2 6.79e+02 1.1 0.0e+00 0.0e+00 0.0e+00 0 22 0 0 0 0 22 0 0 0 269
MatLUFactorNum 1 1.0 1.8120e-05 1.1 9.70e+01 1.4 0.0e+00 0.0e+00 0.0e+00 0 3 0 0 0 0 3 0 0 0 9
MatILUFactorSym 1 1.0 5.6982e-05 1.0 0.00e+00 0.0 0.0e+00 0.0e+00 3.0e+00 0 0 0 0 3 0 0 0 0 3 0
MatAssemblyBegin 6 1.0 1.3614e-04 1.1 0.00e+00 0.0 3.0e+00 1.2e+01 8.0e+00 0 0 8 7 7 0 0 8 7 7 0
MatAssemblyEnd 6 1.0 3.5572e-04 1.0 0.00e+00 0.0 1.2e+01 4.0e+00 2.4e+01 1 0 31 9 21 1 0 31 9 21 0
MatGetRowIJ 1 1.0 9.5367e-07 1.0 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
MatGetOrdering 1 1.0 4.6968e-05 1.0 0.00e+00 0.0 0.0e+00 0.0e+00 2.0e+00 0 0 0 0 2 0 0 0 0 2 0
MatZeroEntries 3 1.0 7.1526e-06 1.0 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
KSPGMRESOrthog 5 1.0 5.1260e-05 1.0 1.06e+03 1.1 0.0e+00 0.0e+00 5.0e+00 0 36 0 0 4 0 36 0 0 4 40
KSPSetUp 2 1.0 6.8188e-05 1.0 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
KSPSolve 1 1.0 7.0989e-03 1.0 2.88e+03 1.0 1.2e+01 8.0e+00 1.9e+01 23100 31 18 17 23100 31 18 17 1
PCSetUp 2 1.0 4.8399e-04 1.0 9.70e+01 1.4 0.0e+00 0.0e+00 7.0e+00 2 3 0 0 6 2 3 0 0 6 0
PCSetUpOnBlocks 1 1.0 2.1100e-04 1.0 9.70e+01 1.4 0.0e+00 0.0e+00 5.0e+00 1 3 0 0 4 1 3 0 0 4 1
PCApply 7 1.0 9.6083e-05 1.0 6.79e+02 1.1 0.0e+00 0.0e+00 0.0e+00 0 22 0 0 0 0 22 0 0 0 13
------------------------------------------------------------------------------------------------------------------------
Memory usage is given in bytes:
Object Type Creations Destructions Memory Descendants' Mem.
Reports information only for process 0.
--- Event Stage 0: Main Stage
Vector 30 30 47648 0
Vector Scatter 5 5 5180 0
Index Set 15 15 11208 0
IS L to G Mapping 1 1 564 0
Matrix 12 12 36808 0
Krylov Solver 2 2 19360 0
Preconditioner 2 2 1784 0
Viewer 1 0 0 0
========================================================================================================================
Average time to get PetscTime(): 1.19209e-07
Average time for MPI_Barrier(): 7.62939e-07
Average time for zero size MPI_Send(): 1.35899e-05
#PETSc Option Table entries:
-d 1
-ksp_right_pc
-log_summary
-n 40
-pc_type bjacobi
-sub_pc_factor_levels 4
-sub_pc_factor_zeropivot 0
-sub_pc_type ilu
#End of PETSc Option Table entries
Compiled without FORTRAN kernels
Compiled with full precision matrices (default)
sizeof(short) 2 sizeof(int) 4 sizeof(long) 8 sizeof(void*) 8 sizeof(PetscScalar) 8 sizeof(PetscInt) 4
Configure run at: Thu Nov 8 11:21:02 2012
Configure options: --with-debugging=false --COPTFLAGS=-O3 --CXXOPTFLAGS=-O3 --FOPTFLAGS=-O3 --with-clanguage=C++ --with-shared-libraries=1 --with-mpi-dir=/opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1 --with-mumps=true --download-mumps=1 --with-metis=true --download-metis=1 --with-parmetis=true --download-parmetis=1 --with-superlu=true --download-superlu=1 --with-superludir=true --download-superlu_dist=1 --with-blacs=true --download-blacs=1 --with-scalapack=true --download-scalapack=1 --with-hypre=true --download-hypre=1 --with-blas-lib="[/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64/libmkl_intel_lp64.so,/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64/libmkl_sequential.so,/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64/libmkl_core.so]" --with-lapack-lib="[/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64/libmkl_lapack95_lp64.a]"
-----------------------------------------
Libraries compiled on Thu Nov 8 11:21:02 2012 on daedalus.ices.utexas.edu
Machine characteristics: Linux-2.6.32-279.1.1.el6.x86_64-x86_64-with-redhat-6.3-Carbon
Using PETSc directory: /opt/apps/ossw/libraries/petsc/petsc-3.3-p2
Using PETSc arch: intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt
-----------------------------------------
Using C compiler: /opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/bin/mpicxx -wd1572 -O3 -fPIC ${COPTFLAGS} ${CFLAGS}
Using Fortran compiler: /opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/bin/mpif90 -fPIC -O3 ${FOPTFLAGS} ${FFLAGS}
-----------------------------------------
Using include paths: -I/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/include -I/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/include -I/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/include -I/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/include -I/opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/include
-----------------------------------------
Using C linker: /opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/bin/mpicxx
Using Fortran linker: /opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/bin/mpif90
Using libraries: -Wl,-rpath,/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/lib -L/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/lib -lpetsc -lX11 -Wl,-rpath,/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/lib -L/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/lib -lcmumps -ldmumps -lsmumps -lzmumps -lmumps_common -lpord -lHYPRE -lpthread -lsuperlu_dist_3.0 -lparmetis -lmetis -lscalapack -lblacs -lsuperlu_4.3 -Wl,-rpath,/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64 -L/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64 -lmkl_lapack95_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -Wl,-rpath,/opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/lib -L/opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/lib -Wl,-rpath,/opt/apps/sysnet/intel/12.1/composer_xe_2011_sp1.7.256/compiler/lib/intel64 -L/opt/apps/sysnet/intel/12.1/composer_xe_2011_sp1.7.256/compiler/lib/intel64 -Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/4.4.6 -L/usr/lib/gcc/x86_64-redhat-linux/4.4.6 -lmpichf90 -lifport -lifcore -lm -lm -lmpichcxx -ldl -lmpich -lopa -lmpl -lrt -lpthread -limf -lsvml -lipgo -ldecimal -lcilkrts -lstdc++ -lgcc_s -lirc -lirc_s -ldl
-----------------------------------------
----------------------------------------------------------------------------------------------------------------
| libMesh Performance: Alive time=0.041235, Active time=0.023554 |
----------------------------------------------------------------------------------------------------------------
| Event nCalls Total Time Avg Time Total Time Avg Time % of Active Time |
| w/o Sub w/o Sub With Sub With Sub w/o S With S |
|----------------------------------------------------------------------------------------------------------------|
| |
| |
| DofMap |
| add_neighbors_to_send_list() 1 0.0003 0.000340 0.0004 0.000381 1.44 1.62 |
| build_sparsity() 1 0.0006 0.000619 0.0013 0.001266 2.63 5.37 |
| create_dof_constraints() 1 0.0000 0.000012 0.0000 0.000012 0.05 0.05 |
| distribute_dofs() 1 0.0006 0.000582 0.0015 0.001517 2.47 6.44 |
| dof_indices() 78 0.0012 0.000016 0.0012 0.000016 5.26 5.26 |
| prepare_send_list() 1 0.0000 0.000008 0.0000 0.000008 0.03 0.03 |
| reinit() 1 0.0008 0.000756 0.0008 0.000756 3.21 3.21 |
| |
| EquationSystems |
| build_solution_vector() 1 0.0002 0.000219 0.0007 0.000720 0.93 3.06 |
| |
| FE |
| compute_shape_functions() 18 0.0001 0.000004 0.0001 0.000004 0.33 0.33 |
| init_shape_functions() 2 0.0001 0.000046 0.0001 0.000046 0.39 0.39 |
| |
| FEMap |
| compute_affine_map() 18 0.0001 0.000005 0.0001 0.000005 0.35 0.35 |
| compute_face_map() 1 0.0000 0.000006 0.0000 0.000006 0.03 0.03 |
| init_face_shape_functions() 1 0.0000 0.000008 0.0000 0.000008 0.03 0.03 |
| init_reference_to_physical_map() 2 0.0000 0.000022 0.0000 0.000022 0.18 0.18 |
| |
| GnuPlotIO |
| write_nodal_data() 1 0.0007 0.000742 0.0007 0.000742 3.15 3.15 |
| |
| LocationMap |
| find() 4 0.0000 0.000009 0.0000 0.000009 0.16 0.16 |
| init() 1 0.0001 0.000099 0.0001 0.000099 0.42 0.42 |
| |
| Mesh |
| find_neighbors() 2 0.0011 0.000572 0.0012 0.000621 4.86 5.27 |
| renumber_nodes_and_elem() 4 0.0001 0.000024 0.0001 0.000024 0.41 0.41 |
| |
| MeshCommunication |
| compute_hilbert_indices() 3 0.0006 0.000202 0.0006 0.000202 2.58 2.58 |
| find_global_indices() 3 0.0005 0.000181 0.0023 0.000755 2.31 9.61 |
| parallel_sort() 3 0.0006 0.000208 0.0008 0.000254 2.65 3.23 |
| |
| MeshOutput |
| write_equation_systems() 1 0.0001 0.000094 0.0016 0.001605 0.40 6.81 |
| |
| MeshRefinement |
| _refine_elements() 1 0.0003 0.000257 0.0003 0.000329 1.09 1.40 |
| add_point() 4 0.0000 0.000007 0.0001 0.000016 0.11 0.28 |
| make_refinement_compatible() 2 0.0000 0.000018 0.0000 0.000022 0.16 0.18 |
| |
| MeshTools::Generation |
| build_cube() 1 0.0004 0.000386 0.0004 0.000386 1.64 1.64 |
| |
| MetisPartitioner |
| partition() 2 0.0011 0.000570 0.0023 0.001145 4.84 9.72 |
| |
| Parallel |
| allgather() 13 0.0002 0.000016 0.0002 0.000019 0.87 1.05 |
| max(bool) 5 0.0000 0.000004 0.0000 0.000004 0.09 0.09 |
| max(scalar) 170 0.0004 0.000003 0.0004 0.000003 1.81 1.81 |
| max(vector) 40 0.0002 0.000006 0.0005 0.000013 0.97 2.16 |
| min(bool) 202 0.0004 0.000002 0.0004 0.000002 1.89 1.89 |
| min(scalar) 163 0.0007 0.000004 0.0007 0.000004 2.87 2.87 |
| min(vector) 40 0.0003 0.000007 0.0006 0.000015 1.22 2.61 |
| probe() 17 0.0001 0.000007 0.0001 0.000007 0.52 0.52 |
| receive() 17 0.0001 0.000006 0.0002 0.000013 0.44 0.97 |
| send() 17 0.0001 0.000004 0.0001 0.000004 0.26 0.26 |
| send_receive() 22 0.0002 0.000009 0.0005 0.000024 0.87 2.26 |
| sum() 23 0.0001 0.000006 0.0002 0.000010 0.62 1.01 |
| |
| Parallel::Request |
| wait() 17 0.0000 0.000003 0.0000 0.000003 0.20 0.20 |
| |
| Partitioner |
| set_node_processor_ids() 2 0.0004 0.000202 0.0006 0.000277 1.72 2.35 |
| set_parent_processor_ids() 2 0.0001 0.000058 0.0001 0.000058 0.50 0.50 |
| |
| PetscLinearSolver |
| solve() 1 0.0091 0.009081 0.0091 0.009081 38.55 38.55 |
| |
| System |
| assemble() 1 0.0011 0.001058 0.0017 0.001654 4.49 7.02 |
----------------------------------------------------------------------------------------------------------------
| Totals: 911 0.0236 100.00 |
----------------------------------------------------------------------------------------------------------------
***************************************************************
* Done Running Example subdomains_ex1:
* mpirun -np 2 example-devel -d 1 -n 40 -pc_type bjacobi -sub_pc_type ilu -sub_pc_factor_levels 4 -sub_pc_factor_zeropivot 0 -ksp_right_pc -log_summary
***************************************************************
***************************************************************
* Running Example subdomains_ex1:
* mpirun -np 2 example-devel -d 2 -n 30 -pc_type bjacobi -sub_pc_type ilu -sub_pc_factor_levels 4 -sub_pc_factor_zeropivot 0 -ksp_right_pc -log_summary
***************************************************************
Running /workspace/libmesh/examples/subdomains/subdomains_ex1/.libs/lt-example-devel -d 2 -n 30 -pc_type bjacobi -sub_pc_type ilu -sub_pc_factor_levels 4 -sub_pc_factor_zeropivot 0 -ksp_right_pc -log_summary
Mesh Information:
mesh_dimension()=2
spatial_dimension()=3
n_nodes()=1329
n_local_nodes()=682
n_elem()=1268
n_local_elem()=633
n_active_elem()=1176
n_subdomains()=1
n_partitions()=2
n_processors()=2
n_threads()=1
processor_id()=0
EquationSystems
n_systems()=1
System #0, "Poisson"
Type "LinearImplicit"
Variables="u"
Finite Element Types="LAGRANGE", "JACOBI_20_00"
Infinite Element Mapping="CARTESIAN"
Approximation Orders="FIRST", "THIRD"
n_dofs()=1329
n_local_dofs()=682
n_constrained_dofs()=184
n_local_constrained_dofs()=90
n_vectors()=1
n_matrices()=1
DofMap Sparsity
Average On-Processor Bandwidth <= 9.12641
Average Off-Processor Bandwidth <= 0.174567
Maximum On-Processor Bandwidth <= 15
Maximum Off-Processor Bandwidth <= 5
DofMap Constraints
Number of DoF Constraints = 184
Average DoF Constraint Length= 2
Number of Node Constraints = 368
Maximum Node Constraint Length= 3
Average Node Constraint Length= 2.5
Mesh Information:
mesh_dimension()=2
spatial_dimension()=3
n_nodes()=1329
n_local_nodes()=682
n_elem()=1268
n_local_elem()=633
n_active_elem()=1176
n_subdomains()=2
n_partitions()=2
n_processors()=2
n_threads()=1
processor_id()=0
----------------------------------------------------------------------------------------------------------------------
| Processor id: 0 |
| Num Processors: 2 |
| Time: Tue Feb 5 13:41:43 2013 |
| OS: Linux |
| HostName: hbar.ices.utexas.edu |
| OS Release: 2.6.32-279.1.1.el6.x86_64 |
| OS Version: #1 SMP Tue Jul 10 11:24:23 CDT 2012 |
| Machine: x86_64 |
| Username: benkirk |
| Configuration: ./configure '--enable-everything' |
| '--prefix=/workspace/libmesh/install' |
| 'CXX=mpicxx' |
| 'CC=mpicc' |
| 'F77=mpif77' |
| 'FC=mpif90' |
| 'PETSC_DIR=/opt/apps/ossw/libraries/petsc/petsc-3.3-p2' |
| 'PETSC_ARCH=intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt' |
| 'SLEPC_DIR=/opt/apps/ossw/libraries/slepc/slepc-3.3-p2-petsc-3.3-p2-cxx-opt' |
| 'TRILINOS_DIR=/opt/apps/ossw/libraries/trilinos/trilinos-10.12.2/sl6/intel-12.1/mpich2-1.4.1p1/mkl-intel-10.3.12.361'|
| 'VTK_DIR=/opt/apps/ossw/libraries/vtk/vtk-5.10.0/sl6/intel-12.1' |
----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
| Matrix Assembly Performance: Alive time=0.042295, Active time=0.030116 |
-----------------------------------------------------------------------------------------------------------
| Event nCalls Total Time Avg Time Total Time Avg Time % of Active Time |
| w/o Sub w/o Sub With Sub With Sub w/o S With S |
|-----------------------------------------------------------------------------------------------------------|
| |
| BCs 317 0.0073 0.000023 0.0073 0.000023 24.14 24.14 |
| Fe 317 0.0019 0.000006 0.0019 0.000006 6.24 6.24 |
| Ke 317 0.0027 0.000008 0.0027 0.000008 8.92 8.92 |
| elem init 317 0.0174 0.000055 0.0174 0.000055 57.73 57.73 |
| matrix insertion 317 0.0009 0.000003 0.0009 0.000003 2.97 2.97 |
-----------------------------------------------------------------------------------------------------------
| Totals: 1585 0.0301 100.00 |
-----------------------------------------------------------------------------------------------------------
************************************************************************************************************************
*** WIDEN YOUR WINDOW TO 120 CHARACTERS. Use 'enscript -r -fCourier9' to print this document ***
************************************************************************************************************************
---------------------------------------------- PETSc Performance Summary: ----------------------------------------------
/workspace/libmesh/examples/subdomains/subdomains_ex1/.libs/lt-example-devel on a intel-12. named hbar.ices.utexas.edu with 2 processors, by benkirk Tue Feb 5 13:41:43 2013
Using Petsc Release Version 3.3.0, Patch 2, Fri Jul 13 15:42:00 CDT 2012
Max Max/Min Avg Total
Time (sec): 3.179e-01 1.00003 3.179e-01
Objects: 8.700e+01 1.00000 8.700e+01
Flops: 2.241e+06 1.18821 2.063e+06 4.126e+06
Flops/sec: 7.048e+06 1.18825 6.490e+06 1.298e+07
MPI Messages: 4.150e+01 1.00000 4.150e+01 8.300e+01
MPI Message Lengths: 1.483e+04 1.01924 3.541e+02 2.939e+04
MPI Reductions: 1.590e+02 1.00000
Flop counting convention: 1 flop = 1 real number operation of type (multiply/divide/add/subtract)
e.g., VecAXPY() for real vectors of length N --> 2N flops
and VecAXPY() for complex vectors of length N --> 8N flops
Summary of Stages: ----- Time ------ ----- Flops ----- --- Messages --- -- Message Lengths -- -- Reductions --
Avg %Total Avg %Total counts %Total Avg %Total counts %Total
0: Main Stage: 3.1784e-01 100.0% 4.1265e+06 100.0% 8.300e+01 100.0% 3.541e+02 100.0% 1.580e+02 99.4%
------------------------------------------------------------------------------------------------------------------------
See the 'Profiling' chapter of the users' manual for details on interpreting output.
Phase summary info:
Count: number of times phase was executed
Time and Flops: Max - maximum over all processors
Ratio - ratio of maximum to minimum over all processors
Mess: number of messages sent
Avg. len: average message length
Reduct: number of global reductions
Global: entire computation
Stage: stages of a computation. Set stages with PetscLogStagePush() and PetscLogStagePop().
%T - percent time in this phase %f - percent flops in this phase
%M - percent messages in this phase %L - percent message lengths in this phase
%R - percent reductions in this phase
Total Mflop/s: 10e-6 * (sum of flops over all processors)/(max time over all processors)
------------------------------------------------------------------------------------------------------------------------
Event Count Time (sec) Flops --- Global --- --- Stage --- Total
Max Ratio Max Ratio Max Ratio Mess Avg len Reduct %T %f %M %L %R %T %f %M %L %R Mflop/s
------------------------------------------------------------------------------------------------------------------------
--- Event Stage 0: Main Stage
VecMDot 27 1.0 2.0814e-04 1.2 3.04e+05 1.1 0.0e+00 0.0e+00 2.7e+01 0 14 0 0 17 0 14 0 0 17 2790
VecNorm 29 1.0 7.2956e-05 1.1 2.33e+04 1.1 0.0e+00 0.0e+00 2.9e+01 0 1 0 0 18 0 1 0 0 18 611
VecScale 28 1.0 1.8835e-05 1.1 1.13e+04 1.1 0.0e+00 0.0e+00 0.0e+00 0 1 0 0 0 0 1 0 0 0 1143
VecCopy 2 1.0 2.1458e-06 1.0 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
VecSet 38 1.0 1.5259e-05 1.0 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
VecAXPY 2 1.0 1.0967e-05 1.4 1.61e+03 1.1 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 280
VecMAXPY 28 1.0 8.9169e-05 1.1 3.26e+05 1.1 0.0e+00 0.0e+00 0.0e+00 0 15 0 0 0 0 15 0 0 0 6986
VecAssemblyBegin 3 1.0 5.2214e-05 1.0 0.00e+00 0.0 2.0e+00 4.0e+02 9.0e+00 0 0 2 3 6 0 0 2 3 6 0
VecAssemblyEnd 3 1.0 1.6928e-05 1.0 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
VecScatterBegin 32 1.0 6.8903e-05 1.2 0.00e+00 0.0 5.8e+01 2.9e+02 0.0e+00 0 0 70 57 0 0 0 70 57 0 0
VecScatterEnd 32 1.0 4.0364e-04 9.5 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
VecNormalize 28 1.0 1.3876e-04 1.0 3.38e+04 1.1 0.0e+00 0.0e+00 2.8e+01 0 2 0 0 18 0 2 0 0 18 466
MatMult 28 1.0 6.1393e-04 2.7 1.87e+05 1.1 5.6e+01 2.8e+02 0.0e+00 0 9 67 53 0 0 9 67 53 0 580
MatSolve 29 1.0 4.0770e-04 1.2 9.92e+05 1.3 0.0e+00 0.0e+00 0.0e+00 0 43 0 0 0 0 43 0 0 0 4373
MatLUFactorNum 1 1.0 3.9911e-04 1.5 4.72e+05 1.9 0.0e+00 0.0e+00 0.0e+00 0 17 0 0 0 0 17 0 0 0 1791
MatILUFactorSym 1 1.0 9.4414e-04 1.4 0.00e+00 0.0 0.0e+00 0.0e+00 3.0e+00 0 0 0 0 2 0 0 0 0 2 0
MatAssemblyBegin 6 1.0 1.4305e-04 1.1 0.00e+00 0.0 3.0e+00 1.5e+03 8.0e+00 0 0 4 15 5 0 0 4 15 5 0
MatAssemblyEnd 6 1.0 4.5395e-04 1.0 0.00e+00 0.0 1.2e+01 7.2e+01 2.4e+01 0 0 14 3 15 0 0 14 3 15 0
MatGetRowIJ 1 1.0 9.5367e-07 1.0 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
MatGetOrdering 1 1.0 4.7922e-05 1.0 0.00e+00 0.0 0.0e+00 0.0e+00 2.0e+00 0 0 0 0 1 0 0 0 0 1 0
MatZeroEntries 3 1.0 2.7895e-05 2.5 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
KSPGMRESOrthog 27 1.0 3.3069e-04 1.2 6.07e+05 1.1 0.0e+00 0.0e+00 2.7e+01 0 28 0 0 17 0 28 0 0 17 3514
KSPSetUp 2 1.0 7.2002e-05 1.0 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
KSPSolve 1 1.0 3.3691e-03 1.0 2.24e+06 1.2 5.6e+01 2.8e+02 6.3e+01 1100 67 53 40 1100 67 53 40 1225
PCSetUp 2 1.0 1.7269e-03 1.3 4.72e+05 1.9 0.0e+00 0.0e+00 7.0e+00 0 17 0 0 4 0 17 0 0 4 414
PCSetUpOnBlocks 1 1.0 1.4782e-03 1.4 4.72e+05 1.9 0.0e+00 0.0e+00 5.0e+00 0 17 0 0 3 0 17 0 0 3 484
PCApply 29 1.0 6.2132e-04 1.1 9.92e+05 1.3 0.0e+00 0.0e+00 0.0e+00 0 43 0 0 0 0 43 0 0 0 2869
------------------------------------------------------------------------------------------------------------------------
Memory usage is given in bytes:
Object Type Creations Destructions Memory Descendants' Mem.
Reports information only for process 0.
--- Event Stage 0: Main Stage
Vector 49 49 209528 0
Vector Scatter 5 5 5180 0
Index Set 15 15 13352 0
IS L to G Mapping 1 1 564 0
Matrix 12 12 503908 0
Krylov Solver 2 2 19360 0
Preconditioner 2 2 1784 0
Viewer 1 0 0 0
========================================================================================================================
Average time to get PetscTime(): 0
Average time for MPI_Barrier(): 5.72205e-07
Average time for zero size MPI_Send(): 1.40667e-05
#PETSc Option Table entries:
-d 2
-ksp_right_pc
-log_summary
-n 30
-pc_type bjacobi
-sub_pc_factor_levels 4
-sub_pc_factor_zeropivot 0
-sub_pc_type ilu
#End of PETSc Option Table entries
Compiled without FORTRAN kernels
Compiled with full precision matrices (default)
sizeof(short) 2 sizeof(int) 4 sizeof(long) 8 sizeof(void*) 8 sizeof(PetscScalar) 8 sizeof(PetscInt) 4
Configure run at: Thu Nov 8 11:21:02 2012
Configure options: --with-debugging=false --COPTFLAGS=-O3 --CXXOPTFLAGS=-O3 --FOPTFLAGS=-O3 --with-clanguage=C++ --with-shared-libraries=1 --with-mpi-dir=/opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1 --with-mumps=true --download-mumps=1 --with-metis=true --download-metis=1 --with-parmetis=true --download-parmetis=1 --with-superlu=true --download-superlu=1 --with-superludir=true --download-superlu_dist=1 --with-blacs=true --download-blacs=1 --with-scalapack=true --download-scalapack=1 --with-hypre=true --download-hypre=1 --with-blas-lib="[/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64/libmkl_intel_lp64.so,/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64/libmkl_sequential.so,/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64/libmkl_core.so]" --with-lapack-lib="[/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64/libmkl_lapack95_lp64.a]"
-----------------------------------------
Libraries compiled on Thu Nov 8 11:21:02 2012 on daedalus.ices.utexas.edu
Machine characteristics: Linux-2.6.32-279.1.1.el6.x86_64-x86_64-with-redhat-6.3-Carbon
Using PETSc directory: /opt/apps/ossw/libraries/petsc/petsc-3.3-p2
Using PETSc arch: intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt
-----------------------------------------
Using C compiler: /opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/bin/mpicxx -wd1572 -O3 -fPIC ${COPTFLAGS} ${CFLAGS}
Using Fortran compiler: /opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/bin/mpif90 -fPIC -O3 ${FOPTFLAGS} ${FFLAGS}
-----------------------------------------
Using include paths: -I/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/include -I/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/include -I/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/include -I/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/include -I/opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/include
-----------------------------------------
Using C linker: /opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/bin/mpicxx
Using Fortran linker: /opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/bin/mpif90
Using libraries: -Wl,-rpath,/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/lib -L/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/lib -lpetsc -lX11 -Wl,-rpath,/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/lib -L/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/lib -lcmumps -ldmumps -lsmumps -lzmumps -lmumps_common -lpord -lHYPRE -lpthread -lsuperlu_dist_3.0 -lparmetis -lmetis -lscalapack -lblacs -lsuperlu_4.3 -Wl,-rpath,/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64 -L/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64 -lmkl_lapack95_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -Wl,-rpath,/opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/lib -L/opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/lib -Wl,-rpath,/opt/apps/sysnet/intel/12.1/composer_xe_2011_sp1.7.256/compiler/lib/intel64 -L/opt/apps/sysnet/intel/12.1/composer_xe_2011_sp1.7.256/compiler/lib/intel64 -Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/4.4.6 -L/usr/lib/gcc/x86_64-redhat-linux/4.4.6 -lmpichf90 -lifport -lifcore -lm -lm -lmpichcxx -ldl -lmpich -lopa -lmpl -lrt -lpthread -limf -lsvml -lipgo -ldecimal -lcilkrts -lstdc++ -lgcc_s -lirc -lirc_s -ldl
-----------------------------------------
----------------------------------------------------------------------------------------------------------------
| libMesh Performance: Alive time=0.327875, Active time=0.295795 |
----------------------------------------------------------------------------------------------------------------
| Event nCalls Total Time Avg Time Total Time Avg Time % of Active Time |
| w/o Sub w/o Sub With Sub With Sub w/o S With S |
|----------------------------------------------------------------------------------------------------------------|
| |
| |
| DofMap |
| add_neighbors_to_send_list() 1 0.0132 0.013237 0.0152 0.015214 4.48 5.14 |
| build_constraint_matrix() 317 0.0022 0.000007 0.0022 0.000007 0.75 0.75 |
| build_sparsity() 1 0.0108 0.010767 0.0275 0.027523 3.64 9.30 |
| cnstrn_elem_mat_vec() 317 0.0068 0.000021 0.0068 0.000021 2.28 2.28 |
| create_dof_constraints() 1 0.0099 0.009864 0.0229 0.022852 3.33 7.73 |
| distribute_dofs() 1 0.0131 0.013092 0.0339 0.033867 4.43 11.45 |
| dof_indices() 3208 0.0765 0.000024 0.0765 0.000024 25.87 25.87 |
| prepare_send_list() 1 0.0000 0.000040 0.0000 0.000040 0.01 0.01 |
| reinit() 1 0.0205 0.020535 0.0205 0.020535 6.94 6.94 |
| |
| EquationSystems |
| build_solution_vector() 2 0.0047 0.002340 0.0360 0.017980 1.58 12.16 |
| |
| ExodusII_IO |
| write_nodal_data() 1 0.0058 0.005830 0.0058 0.005830 1.97 1.97 |
| |
| FE |
| compute_shape_functions() 415 0.0044 0.000011 0.0044 0.000011 1.47 1.47 |
| init_shape_functions() 99 0.0003 0.000003 0.0003 0.000003 0.11 0.11 |
| inverse_map() 1214 0.0036 0.000003 0.0036 0.000003 1.21 1.21 |
| |
| FEMap |
| compute_affine_map() 415 0.0029 0.000007 0.0029 0.000007 0.98 0.98 |
| compute_face_map() 98 0.0012 0.000012 0.0026 0.000027 0.40 0.88 |
| init_face_shape_functions() 1 0.0000 0.000011 0.0000 0.000011 0.00 0.00 |
| init_reference_to_physical_map() 99 0.0010 0.000010 0.0010 0.000010 0.32 0.32 |
| |
| GMVIO |
| write_nodal_data() 1 0.0045 0.004461 0.0045 0.004505 1.51 1.52 |
| |
| LocationMap |
| find() 1104 0.0029 0.000003 0.0029 0.000003 0.97 0.97 |
| init() 1 0.0008 0.000838 0.0008 0.000838 0.28 0.28 |
| |
| Mesh |
| find_neighbors() 2 0.0248 0.012386 0.0249 0.012441 8.37 8.41 |
| renumber_nodes_and_elem() 4 0.0014 0.000340 0.0014 0.000340 0.46 0.46 |
| |
| MeshCommunication |
| compute_hilbert_indices() 3 0.0134 0.004461 0.0134 0.004461 4.52 4.52 |
| find_global_indices() 3 0.0053 0.001783 0.0208 0.006920 1.81 7.02 |
| parallel_sort() 3 0.0015 0.000515 0.0017 0.000553 0.52 0.56 |
| |
| MeshOutput |
| write_equation_systems() 2 0.0001 0.000068 0.0465 0.023264 0.05 15.73 |
| |
| MeshRefinement |
| _refine_elements() 1 0.0041 0.004113 0.0100 0.009994 1.39 3.38 |
| add_point() 1104 0.0027 0.000002 0.0057 0.000005 0.93 1.94 |
| make_refinement_compatible() 2 0.0005 0.000244 0.0005 0.000247 0.16 0.17 |
| |
| MeshTools::Generation |
| build_cube() 1 0.0061 0.006063 0.0061 0.006063 2.05 2.05 |
| |
| MetisPartitioner |
| partition() 2 0.0232 0.011607 0.0371 0.018548 7.85 12.54 |
| |
| Parallel |
| allgather() 13 0.0002 0.000018 0.0003 0.000021 0.08 0.09 |
| max(bool) 5 0.0000 0.000004 0.0000 0.000004 0.01 0.01 |
| max(scalar) 189 0.0005 0.000003 0.0005 0.000003 0.18 0.18 |
| max(vector) 44 0.0003 0.000007 0.0006 0.000014 0.10 0.21 |
| min(bool) 225 0.0005 0.000002 0.0005 0.000002 0.18 0.18 |
| min(scalar) 182 0.0013 0.000007 0.0013 0.000007 0.44 0.44 |
| min(vector) 44 0.0003 0.000008 0.0007 0.000016 0.11 0.24 |
| probe() 17 0.0002 0.000010 0.0002 0.000010 0.06 0.06 |
| receive() 17 0.0001 0.000007 0.0003 0.000018 0.04 0.10 |
| send() 17 0.0001 0.000004 0.0001 0.000004 0.02 0.02 |
| send_receive() 22 0.0003 0.000012 0.0007 0.000030 0.09 0.22 |
| sum() 26 0.0002 0.000009 0.0004 0.000014 0.08 0.12 |
| |
| Parallel::Request |
| wait() 17 0.0000 0.000002 0.0000 0.000002 0.01 0.01 |
| |
| Partitioner |
| set_node_processor_ids() 2 0.0027 0.001335 0.0028 0.001416 0.90 0.96 |
| set_parent_processor_ids() 2 0.0017 0.000855 0.0017 0.000855 0.58 0.58 |
| |
| PetscLinearSolver |
| solve() 1 0.0059 0.005879 0.0059 0.005879 1.99 1.99 |
| |
| System |
| assemble() 1 0.0132 0.013220 0.0425 0.042498 4.47 14.37 |
----------------------------------------------------------------------------------------------------------------
| Totals: 9249 0.2958 100.00 |
----------------------------------------------------------------------------------------------------------------
***************************************************************
* Done Running Example subdomains_ex1:
* mpirun -np 2 example-devel -d 2 -n 30 -pc_type bjacobi -sub_pc_type ilu -sub_pc_factor_levels 4 -sub_pc_factor_zeropivot 0 -ksp_right_pc -log_summary
***************************************************************
***************************************************************
* Running Example subdomains_ex1:
* mpirun -np 2 example-devel -d 3 -n 15 -pc_type bjacobi -sub_pc_type ilu -sub_pc_factor_levels 4 -sub_pc_factor_zeropivot 0 -ksp_right_pc -log_summary
***************************************************************
Running /workspace/libmesh/examples/subdomains/subdomains_ex1/.libs/lt-example-devel -d 3 -n 15 -pc_type bjacobi -sub_pc_type ilu -sub_pc_factor_levels 4 -sub_pc_factor_zeropivot 0 -ksp_right_pc -log_summary
Mesh Information:
mesh_dimension()=3
spatial_dimension()=3
n_nodes()=10854
n_local_nodes()=5665
n_elem()=8767
n_local_elem()=4383
n_active_elem()=8093
n_subdomains()=1
n_partitions()=2
n_processors()=2
n_threads()=1
processor_id()=0
EquationSystems
n_systems()=1
System #0, "Poisson"
Type "LinearImplicit"
Variables="u"
Finite Element Types="LAGRANGE", "JACOBI_20_00"
Infinite Element Mapping="CARTESIAN"
Approximation Orders="FIRST", "THIRD"
n_dofs()=10854
n_local_dofs()=5665
n_constrained_dofs()=4068
n_local_constrained_dofs()=2084
n_vectors()=1
n_matrices()=1
DofMap Sparsity
Average On-Processor Bandwidth <= 29.06
Average Off-Processor Bandwidth <= 1.06615
Maximum On-Processor Bandwidth <= 78
Maximum Off-Processor Bandwidth <= 38
DofMap Constraints
Number of DoF Constraints = 4068
Average DoF Constraint Length= 2.66667
Number of Node Constraints = 5428
Maximum Node Constraint Length= 13
Average Node Constraint Length= 6.24613
Mesh Information:
mesh_dimension()=3
spatial_dimension()=3
n_nodes()=10854
n_local_nodes()=5665
n_elem()=8767
n_local_elem()=4383
n_active_elem()=8093
n_subdomains()=2
n_partitions()=2
n_processors()=2
n_threads()=1
processor_id()=0
----------------------------------------------------------------------------------------------------------------------
| Processor id: 0 |
| Num Processors: 2 |
| Time: Tue Feb 5 13:41:47 2013 |
| OS: Linux |
| HostName: hbar.ices.utexas.edu |
| OS Release: 2.6.32-279.1.1.el6.x86_64 |
| OS Version: #1 SMP Tue Jul 10 11:24:23 CDT 2012 |
| Machine: x86_64 |
| Username: benkirk |
| Configuration: ./configure '--enable-everything' |
| '--prefix=/workspace/libmesh/install' |
| 'CXX=mpicxx' |
| 'CC=mpicc' |
| 'F77=mpif77' |
| 'FC=mpif90' |
| 'PETSC_DIR=/opt/apps/ossw/libraries/petsc/petsc-3.3-p2' |
| 'PETSC_ARCH=intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt' |
| 'SLEPC_DIR=/opt/apps/ossw/libraries/slepc/slepc-3.3-p2-petsc-3.3-p2-cxx-opt' |
| 'TRILINOS_DIR=/opt/apps/ossw/libraries/trilinos/trilinos-10.12.2/sl6/intel-12.1/mpich2-1.4.1p1/mkl-intel-10.3.12.361'|
| 'VTK_DIR=/opt/apps/ossw/libraries/vtk/vtk-5.10.0/sl6/intel-12.1' |
----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
| Matrix Assembly Performance: Alive time=0.677289, Active time=0.595858 |
-----------------------------------------------------------------------------------------------------------
| Event nCalls Total Time Avg Time Total Time Avg Time % of Active Time |
| w/o Sub w/o Sub With Sub With Sub w/o S With S |
|-----------------------------------------------------------------------------------------------------------|
| |
| BCs 1465 0.1954 0.000133 0.1954 0.000133 32.79 32.79 |
| Fe 1465 0.0279 0.000019 0.0279 0.000019 4.69 4.69 |
| Ke 1465 0.1206 0.000082 0.1206 0.000082 20.24 20.24 |
| elem init 1465 0.2414 0.000165 0.2414 0.000165 40.51 40.51 |
| matrix insertion 1465 0.0106 0.000007 0.0106 0.000007 1.77 1.77 |
-----------------------------------------------------------------------------------------------------------
| Totals: 7325 0.5959 100.00 |
-----------------------------------------------------------------------------------------------------------
************************************************************************************************************************
*** WIDEN YOUR WINDOW TO 120 CHARACTERS. Use 'enscript -r -fCourier9' to print this document ***
************************************************************************************************************************
---------------------------------------------- PETSc Performance Summary: ----------------------------------------------
/workspace/libmesh/examples/subdomains/subdomains_ex1/.libs/lt-example-devel on a intel-12. named hbar.ices.utexas.edu with 2 processors, by benkirk Tue Feb 5 13:41:49 2013
Using Petsc Release Version 3.3.0, Patch 2, Fri Jul 13 15:42:00 CDT 2012
Max Max/Min Avg Total
Time (sec): 5.498e+00 1.00000 5.498e+00
Objects: 7.800e+01 1.00000 7.800e+01
Flops: 9.422e+08 1.29993 8.335e+08 1.667e+09
Flops/sec: 1.714e+08 1.29993 1.516e+08 3.032e+08
MPI Messages: 3.350e+01 1.00000 3.350e+01 6.700e+01
MPI Message Lengths: 1.890e+05 1.01182 5.608e+03 3.758e+05
MPI Reductions: 1.430e+02 1.00000
Flop counting convention: 1 flop = 1 real number operation of type (multiply/divide/add/subtract)
e.g., VecAXPY() for real vectors of length N --> 2N flops
and VecAXPY() for complex vectors of length N --> 8N flops
Summary of Stages: ----- Time ------ ----- Flops ----- --- Messages --- -- Message Lengths -- -- Reductions --
Avg %Total Avg %Total counts %Total Avg %Total counts %Total
0: Main Stage: 5.4974e+00 100.0% 1.6671e+09 100.0% 6.700e+01 100.0% 5.608e+03 100.0% 1.420e+02 99.3%
------------------------------------------------------------------------------------------------------------------------
See the 'Profiling' chapter of the users' manual for details on interpreting output.
Phase summary info:
Count: number of times phase was executed
Time and Flops: Max - maximum over all processors
Ratio - ratio of maximum to minimum over all processors
Mess: number of messages sent
Avg. len: average message length
Reduct: number of global reductions
Global: entire computation
Stage: stages of a computation. Set stages with PetscLogStagePush() and PetscLogStagePop().
%T - percent time in this phase %f - percent flops in this phase
%M - percent messages in this phase %L - percent message lengths in this phase
%R - percent reductions in this phase
Total Mflop/s: 10e-6 * (sum of flops over all processors)/(max time over all processors)
------------------------------------------------------------------------------------------------------------------------
Event Count Time (sec) Flops --- Global --- --- Stage --- Total
Max Ratio Max Ratio Max Ratio Mess Avg len Reduct %T %f %M %L %R %T %f %M %L %R Mflop/s
------------------------------------------------------------------------------------------------------------------------
--- Event Stage 0: Main Stage
VecMDot 19 1.0 5.5137e-0310.1 1.02e+06 1.1 0.0e+00 0.0e+00 1.9e+01 0 0 0 0 13 0 0 0 0 13 353
VecNorm 21 1.0 6.2609e-04 4.8 1.13e+05 1.1 0.0e+00 0.0e+00 2.1e+01 0 0 0 0 15 0 0 0 0 15 343
VecScale 20 1.0 5.3883e-05 1.0 5.39e+04 1.1 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 1899
VecCopy 2 1.0 1.0967e-05 1.2 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
VecSet 30 1.0 6.0320e-05 1.1 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
VecAXPY 2 1.0 2.5034e-05 1.4 1.08e+04 1.1 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 817
VecMAXPY 20 1.0 3.2163e-04 1.1 1.13e+06 1.1 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 6649
VecAssemblyBegin 3 1.0 9.8944e-05 1.3 0.00e+00 0.0 2.0e+00 6.6e+03 9.0e+00 0 0 3 3 6 0 0 3 3 6 0
VecAssemblyEnd 3 1.0 2.5272e-05 1.2 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
VecScatterBegin 24 1.0 2.0719e-04 1.1 0.00e+00 0.0 4.2e+01 3.1e+03 0.0e+00 0 0 63 35 0 0 0 63 35 0 0
VecScatterEnd 24 1.0 2.3949e-013954.7 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 2 0 0 0 0 2 0 0 0 0 0
VecNormalize 20 1.0 5.1332e-04 1.9 1.62e+05 1.1 0.0e+00 0.0e+00 2.0e+01 0 0 0 0 14 0 0 0 0 14 598
MatMult 20 1.0 2.4140e-01112.9 2.76e+06 1.1 4.0e+01 3.0e+03 0.0e+00 2 0 60 31 0 2 0 60 31 0 21
MatSolve 21 1.0 4.2794e-02 1.1 9.49e+07 1.2 0.0e+00 0.0e+00 0.0e+00 1 11 0 0 0 1 11 0 0 0 4108
MatLUFactorNum 1 1.0 4.4165e-01 1.3 8.42e+08 1.3 0.0e+00 0.0e+00 0.0e+00 7 89 0 0 0 7 89 0 0 0 3355
MatILUFactorSym 1 1.0 7.6827e-01 1.2 0.00e+00 0.0 0.0e+00 0.0e+00 3.0e+00 13 0 0 0 2 13 0 0 0 2 0
MatAssemblyBegin 6 1.0 5.7411e-04 3.8 0.00e+00 0.0 3.0e+00 5.8e+04 8.0e+00 0 0 4 47 6 0 0 4 47 6 0
MatAssemblyEnd 6 1.0 2.1391e-03 1.1 0.00e+00 0.0 1.2e+01 7.5e+02 2.4e+01 0 0 18 2 17 0 0 18 2 17 0
MatGetRowIJ 1 1.0 9.5367e-07 1.0 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
MatGetOrdering 1 1.0 7.1049e-05 1.0 0.00e+00 0.0 0.0e+00 0.0e+00 2.0e+00 0 0 0 0 1 0 0 0 0 1 0
MatZeroEntries 3 1.0 5.2285e-04 1.1 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
KSPGMRESOrthog 19 1.0 5.8727e-03 6.4 2.05e+06 1.1 0.0e+00 0.0e+00 1.9e+01 0 0 0 0 13 0 0 0 0 13 662
KSPSetUp 2 1.0 1.3089e-04 1.0 0.00e+00 0.0 0.0e+00 0.0e+00 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
KSPSolve 1 1.0 1.2578e+00 1.0 9.42e+08 1.3 4.0e+01 3.0e+03 4.7e+01 23100 60 31 33 23100 60 31 33 1325
PCSetUp 2 1.0 1.2105e+00 1.2 8.42e+08 1.3 0.0e+00 0.0e+00 7.0e+00 20 89 0 0 5 20 89 0 0 5 1224
PCSetUpOnBlocks 1 1.0 1.2101e+00 1.2 8.42e+08 1.3 0.0e+00 0.0e+00 5.0e+00 20 89 0 0 3 20 89 0 0 4 1224
PCApply 21 1.0 4.3174e-02 1.1 9.49e+07 1.2 0.0e+00 0.0e+00 0.0e+00 1 11 0 0 0 1 11 0 0 0 4072
------------------------------------------------------------------------------------------------------------------------
Memory usage is given in bytes:
Object Type Creations Destructions Memory Descendants' Mem.
Reports information only for process 0.
--- Event Stage 0: Main Stage
Vector 40 40 815120 0
Vector Scatter 5 5 5180 0
Index Set 15 15 29804 0
IS L to G Mapping 1 1 564 0
Matrix 12 12 33057220 0
Krylov Solver 2 2 19360 0
Preconditioner 2 2 1784 0
Viewer 1 0 0 0
========================================================================================================================
Average time to get PetscTime(): 9.53674e-08
Average time for MPI_Barrier(): 1.38283e-06
Average time for zero size MPI_Send(): 1.34706e-05
#PETSc Option Table entries:
-d 3
-ksp_right_pc
-log_summary
-n 15
-pc_type bjacobi
-sub_pc_factor_levels 4
-sub_pc_factor_zeropivot 0
-sub_pc_type ilu
#End of PETSc Option Table entries
Compiled without FORTRAN kernels
Compiled with full precision matrices (default)
sizeof(short) 2 sizeof(int) 4 sizeof(long) 8 sizeof(void*) 8 sizeof(PetscScalar) 8 sizeof(PetscInt) 4
Configure run at: Thu Nov 8 11:21:02 2012
Configure options: --with-debugging=false --COPTFLAGS=-O3 --CXXOPTFLAGS=-O3 --FOPTFLAGS=-O3 --with-clanguage=C++ --with-shared-libraries=1 --with-mpi-dir=/opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1 --with-mumps=true --download-mumps=1 --with-metis=true --download-metis=1 --with-parmetis=true --download-parmetis=1 --with-superlu=true --download-superlu=1 --with-superludir=true --download-superlu_dist=1 --with-blacs=true --download-blacs=1 --with-scalapack=true --download-scalapack=1 --with-hypre=true --download-hypre=1 --with-blas-lib="[/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64/libmkl_intel_lp64.so,/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64/libmkl_sequential.so,/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64/libmkl_core.so]" --with-lapack-lib="[/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64/libmkl_lapack95_lp64.a]"
-----------------------------------------
Libraries compiled on Thu Nov 8 11:21:02 2012 on daedalus.ices.utexas.edu
Machine characteristics: Linux-2.6.32-279.1.1.el6.x86_64-x86_64-with-redhat-6.3-Carbon
Using PETSc directory: /opt/apps/ossw/libraries/petsc/petsc-3.3-p2
Using PETSc arch: intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt
-----------------------------------------
Using C compiler: /opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/bin/mpicxx -wd1572 -O3 -fPIC ${COPTFLAGS} ${CFLAGS}
Using Fortran compiler: /opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/bin/mpif90 -fPIC -O3 ${FOPTFLAGS} ${FFLAGS}
-----------------------------------------
Using include paths: -I/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/include -I/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/include -I/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/include -I/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/include -I/opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/include
-----------------------------------------
Using C linker: /opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/bin/mpicxx
Using Fortran linker: /opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/bin/mpif90
Using libraries: -Wl,-rpath,/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/lib -L/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/lib -lpetsc -lX11 -Wl,-rpath,/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/lib -L/opt/apps/ossw/libraries/petsc/petsc-3.3-p2/intel-12.1-mkl-intel-10.3.12.361-mpich2-1.4.1p1-cxx-opt/lib -lcmumps -ldmumps -lsmumps -lzmumps -lmumps_common -lpord -lHYPRE -lpthread -lsuperlu_dist_3.0 -lparmetis -lmetis -lscalapack -lblacs -lsuperlu_4.3 -Wl,-rpath,/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64 -L/opt/apps/sysnet/intel/12.1/mkl/10.3.12.361/lib/intel64 -lmkl_lapack95_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -Wl,-rpath,/opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/lib -L/opt/apps/ossw/libraries/mpich2/mpich2-1.4.1p1/sl6/intel-12.1/lib -Wl,-rpath,/opt/apps/sysnet/intel/12.1/composer_xe_2011_sp1.7.256/compiler/lib/intel64 -L/opt/apps/sysnet/intel/12.1/composer_xe_2011_sp1.7.256/compiler/lib/intel64 -Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/4.4.6 -L/usr/lib/gcc/x86_64-redhat-linux/4.4.6 -lmpichf90 -lifport -lifcore -lm -lm -lmpichcxx -ldl -lmpich -lopa -lmpl -lrt -lpthread -limf -lsvml -lipgo -ldecimal -lcilkrts -lstdc++ -lgcc_s -lirc -lirc_s -ldl
-----------------------------------------
----------------------------------------------------------------------------------------------------------------
| libMesh Performance: Alive time=5.50748, Active time=5.37891 |
----------------------------------------------------------------------------------------------------------------
| Event nCalls Total Time Avg Time Total Time Avg Time % of Active Time |
| w/o Sub w/o Sub With Sub With Sub w/o S With S |
|----------------------------------------------------------------------------------------------------------------|
| |
| |
| DofMap |
| add_neighbors_to_send_list() 1 0.1778 0.177782 0.2183 0.218287 3.31 4.06 |
| build_constraint_matrix() 1465 0.0352 0.000024 0.0352 0.000024 0.65 0.65 |
| build_sparsity() 1 0.2973 0.297330 0.5162 0.516188 5.53 9.60 |
| cnstrn_elem_mat_vec() 1465 0.0309 0.000021 0.0309 0.000021 0.57 0.57 |
| create_dof_constraints() 1 0.2402 0.240222 0.6535 0.653452 4.47 12.15 |
| distribute_dofs() 1 0.1161 0.116052 0.3008 0.300846 2.16 5.59 |
| dof_indices() 26715 1.1025 0.000041 1.1025 0.000041 20.50 20.50 |
| prepare_send_list() 1 0.0009 0.000865 0.0009 0.000865 0.02 0.02 |
| reinit() 1 0.1822 0.182216 0.1822 0.182216 3.39 3.39 |
| |
| EquationSystems |
| build_solution_vector() 2 0.0344 0.017201 0.4523 0.226150 0.64 8.41 |
| |
| ExodusII_IO |
| write_nodal_data() 1 0.0361 0.036132 0.0361 0.036132 0.67 0.67 |
| |
| FE |
| compute_shape_functions() 2824 0.1385 0.000049 0.1385 0.000049 2.57 2.57 |
| init_shape_functions() 1360 0.0041 0.000003 0.0041 0.000003 0.08 0.08 |
| inverse_map() 25764 0.1192 0.000005 0.1192 0.000005 2.22 2.22 |
| |
| FEMap |
| compute_affine_map() 2824 0.0495 0.000018 0.0495 0.000018 0.92 0.92 |
| compute_face_map() 1359 0.0231 0.000017 0.0231 0.000017 0.43 0.43 |
| init_face_shape_functions() 1 0.0000 0.000035 0.0000 0.000035 0.00 0.00 |
| init_reference_to_physical_map() 1360 0.0672 0.000049 0.0672 0.000049 1.25 1.25 |
| |
| GMVIO |
| write_nodal_data() 1 0.0368 0.036765 0.0368 0.036811 0.68 0.68 |
| |
| LocationMap |
| find() 37744 0.0752 0.000002 0.0752 0.000002 1.40 1.40 |
| init() 1 0.0038 0.003752 0.0038 0.003752 0.07 0.07 |
| |
| Mesh |
| find_neighbors() 2 0.2206 0.110284 0.2295 0.114743 4.10 4.27 |
| renumber_nodes_and_elem() 4 0.0090 0.002243 0.0090 0.002243 0.17 0.17 |
| |
| MeshCommunication |
| compute_hilbert_indices() 3 0.0680 0.022654 0.0680 0.022654 1.26 1.26 |
| find_global_indices() 3 0.0237 0.007890 0.1006 0.033529 0.44 1.87 |
| parallel_sort() 3 0.0070 0.002325 0.0076 0.002526 0.13 0.14 |
| |
| MeshOutput |
| write_equation_systems() 2 0.0002 0.000105 0.5256 0.262779 0.00 9.77 |
| |
| MeshRefinement |
| _refine_elements() 1 0.0961 0.096065 0.2627 0.262662 1.79 4.88 |
| add_point() 37744 0.0820 0.000002 0.1615 0.000004 1.52 3.00 |
| make_refinement_compatible() 2 0.0021 0.001051 0.0021 0.001056 0.04 0.04 |
| |
| MeshTools::Generation |
| build_cube() 1 0.0109 0.010936 0.0109 0.010936 0.20 0.20 |
| |
| MetisPartitioner |
| partition() 2 0.5046 0.252297 0.5820 0.290994 9.38 10.82 |
| |
| Parallel |
| allgather() 13 0.0015 0.000117 0.0015 0.000119 0.03 0.03 |
| max(bool) 5 0.0007 0.000145 0.0007 0.000145 0.01 0.01 |
| max(scalar) 189 0.0005 0.000003 0.0005 0.000003 0.01 0.01 |
| max(vector) 44 0.0003 0.000006 0.0006 0.000013 0.01 0.01 |
| min(bool) 225 0.0005 0.000002 0.0005 0.000002 0.01 0.01 |
| min(scalar) 182 0.0336 0.000185 0.0336 0.000185 0.63 0.63 |
| min(vector) 44 0.0003 0.000008 0.0007 0.000015 0.01 0.01 |
| probe() 17 0.0025 0.000145 0.0025 0.000145 0.05 0.05 |
| receive() 17 0.0003 0.000016 0.0027 0.000162 0.01 0.05 |
| send() 17 0.0001 0.000005 0.0001 0.000005 0.00 0.00 |
| send_receive() 22 0.0007 0.000031 0.0036 0.000162 0.01 0.07 |
| sum() 26 0.0010 0.000037 0.0060 0.000230 0.02 0.11 |
| |
| Parallel::Request |
| wait() 17 0.0000 0.000003 0.0000 0.000003 0.00 0.00 |
| |
| Partitioner |
| set_node_processor_ids() 2 0.0138 0.006894 0.0143 0.007162 0.26 0.27 |
| set_parent_processor_ids() 2 0.0098 0.004908 0.0098 0.004908 0.18 0.18 |
| |
| PetscLinearSolver |
| solve() 1 1.2700 1.270004 1.2700 1.270004 23.61 23.61 |
| |
| System |
| assemble() 1 0.2484 0.248368 0.6775 0.677540 4.62 12.60 |
----------------------------------------------------------------------------------------------------------------
| Totals: 141483 5.3789 100.00 |
----------------------------------------------------------------------------------------------------------------
***************************************************************
* Done Running Example subdomains_ex1:
* mpirun -np 2 example-devel -d 3 -n 15 -pc_type bjacobi -sub_pc_type ilu -sub_pc_factor_levels 4 -sub_pc_factor_zeropivot 0 -ksp_right_pc -log_summary
***************************************************************
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
C++ Includes