$extrastylesheet
#include <exodusII_io.h>

Public Member Functions | |
| ExodusII_IO (MeshBase &mesh, bool single_precision=false) | |
| virtual | ~ExodusII_IO () |
| virtual void | read (const std::string &name) |
| virtual void | write (const std::string &fname) |
| void | verbose (bool set_verbosity) |
| const std::vector< Real > & | get_time_steps () |
| int | get_num_time_steps () |
| void | copy_nodal_solution (System &system, std::string var_name, unsigned int timestep=1) |
| void | copy_nodal_solution (System &system, std::string system_var_name, std::string exodus_var_name, unsigned int timestep=1) |
| void | copy_elemental_solution (System &system, std::string system_var_name, std::string exodus_var_name, unsigned int timestep=1) |
| void | write_discontinuous_exodusII (const std::string &name, const EquationSystems &es, const std::set< std::string > *system_names=NULL) |
| void | write_element_data (const EquationSystems &es) |
| void | write_nodal_data (const std::string &, const std::vector< Number > &, const std::vector< std::string > &) |
| void | write_nodal_data_discontinuous (const std::string &, const std::vector< Number > &, const std::vector< std::string > &) |
| void | write_global_data (const std::vector< Number > &, const std::vector< std::string > &) |
| void | write_information_records (const std::vector< std::string > &) |
| void | write_timestep (const std::string &fname, const EquationSystems &es, const int timestep, const Real time) |
| void | set_output_variables (const std::vector< std::string > &output_variables, bool allow_empty=true) |
| void | use_mesh_dimension_instead_of_spatial_dimension (bool val) |
| void | set_coordinate_offset (Point p) |
| void | append (bool val) |
| const std::vector< std::string > & | get_elem_var_names () |
| const std::vector< std::string > & | get_nodal_var_names () |
| virtual void | write_equation_systems (const std::string &, const EquationSystems &, const std::set< std::string > *system_names=NULL) |
| unsigned int & | ascii_precision () |
| const Parallel::Communicator & | comm () const |
| processor_id_type | n_processors () const |
| processor_id_type | processor_id () const |
Protected Member Functions | |
| MeshBase & | mesh () |
| void | set_n_partitions (unsigned int n_parts) |
| void | skip_comment_lines (std::istream &in, const char comment_start) |
| const MeshBase & | mesh () const |
Protected Attributes | |
| std::vector< bool > | elems_of_dimension |
| const bool | _is_parallel_format |
| const Parallel::Communicator & | _communicator |
Private Member Functions | |
| void | write_nodal_data_common (std::string fname, const std::vector< std::string > &names, bool continuous=true) |
Private Attributes | |
| ExodusII_IO_Helper * | exio_helper |
| int | _timestep |
| bool | _verbose |
| std::vector< std::string > | _output_variables |
| bool | _append |
| bool | _allow_empty_variables |
The ExodusII_IO class implements reading meshes in the ExodusII file format from Sandia National Labs. By default, LibMesh expects ExodusII files to have a ".exd" or ".e" file extension.
Definition at line 52 of file exodusII_io.h.
| libMesh::ExodusII_IO::ExodusII_IO | ( | MeshBase & | mesh, |
| bool | single_precision = false |
||
| ) | [explicit] |
Constructor. Takes a writeable reference to a mesh object. This is the constructor required to read a mesh.
Definition at line 42 of file exodusII_io.C.
: MeshInput<MeshBase> (mesh), MeshOutput<MeshBase> (mesh), ParallelObject(mesh), #ifdef LIBMESH_HAVE_EXODUS_API exio_helper(new ExodusII_IO_Helper(*this, false, true, single_precision)), #endif _timestep(1), _verbose(false), _append(false), _allow_empty_variables(false) { }
| libMesh::ExodusII_IO::~ExodusII_IO | ( | ) | [virtual] |
Destructor.
Definition at line 102 of file exodusII_io.C.
References libMesh::ExodusII_IO_Helper::close(), and exio_helper.
{
exio_helper->close();
delete exio_helper;
}
| void libMesh::ExodusII_IO::append | ( | bool | val | ) |
If true, this flag will cause the ExodusII_IO object to attempt to open an existing file for writing, rather than creating a new file. Obviously this will only work if the file already exists.
Definition at line 381 of file exodusII_io.C.
References _append.
{
_append = val;
}
| unsigned int& libMesh::MeshOutput< MeshBase >::ascii_precision | ( | ) | [inherited] |
Return/set the precision to use when writing ASCII files.
By default we use numeric_limits<Real>::digits10 + 2, which should be enough to write out to ASCII and get the exact same Real back when reading in.
Referenced by libMesh::TecplotIO::write_ascii(), libMesh::GMVIO::write_ascii_new_impl(), and libMesh::GMVIO::write_ascii_old_impl().
| const Parallel::Communicator& libMesh::ParallelObject::comm | ( | ) | const [inline, inherited] |
Parallel::Communicator object used by this mesh. Definition at line 86 of file parallel_object.h.
References libMesh::ParallelObject::_communicator.
Referenced by libMesh::__libmesh_petsc_diff_solver_monitor(), libMesh::__libmesh_petsc_diff_solver_residual(), libMesh::__libmesh_petsc_snes_residual(), libMesh::MeshRefinement::_coarsen_elements(), libMesh::ExactSolution::_compute_error(), libMesh::MetisPartitioner::_do_partition(), libMesh::ParmetisPartitioner::_do_repartition(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::SlepcEigenSolver< T >::_petsc_shell_matrix_get_diagonal(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_get_diagonal(), libMesh::SlepcEigenSolver< T >::_petsc_shell_matrix_mult(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_mult(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_mult_add(), libMesh::EquationSystems::_read_impl(), libMesh::MeshRefinement::_refine_elements(), libMesh::ImplicitSystem::add_matrix(), libMesh::System::add_vector(), libMesh::UnstructuredMesh::all_second_order(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::FEMSystem::assemble_qoi(), libMesh::MeshCommunication::assign_global_indices(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::DofMap::attach_matrix(), libMesh::MeshTools::bounding_box(), libMesh::MeshBase::cache_elem_dims(), libMesh::System::calculate_norm(), libMesh::MeshRefinement::coarsen_elements(), libMesh::Nemesis_IO_Helper::compute_num_global_elem_blocks(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::Nemesis_IO_Helper::compute_num_global_sidesets(), libMesh::Problem_Interface::computeF(), libMesh::Problem_Interface::computeJacobian(), libMesh::Problem_Interface::computePreconditioner(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), DMlibMeshFunction(), DMlibMeshSetSystem_libMesh(), libMesh::MeshRefinement::eliminate_unrefined_patches(), libMesh::WeightedPatchRecoveryErrorEstimator::estimate_error(), libMesh::PatchRecoveryErrorEstimator::estimate_error(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::MeshRefinement::flag_elements_by_elem_fraction(), libMesh::MeshRefinement::flag_elements_by_error_fraction(), libMesh::MeshRefinement::flag_elements_by_nelem_target(), libMesh::CondensedEigenSystem::get_eigenpair(), libMesh::ImplicitSystem::get_linear_solver(), libMesh::LocationMap< T >::init(), libMesh::TimeSolver::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::EigenSystem::init_data(), libMesh::EigenSystem::init_matrices(), libMesh::ParmetisPartitioner::initialize(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::ParallelMesh::libmesh_assert_valid_parallel_flags(), libMesh::MeshTools::libmesh_assert_valid_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::MeshRefinement::limit_level_mismatch_at_edge(), libMesh::MeshRefinement::limit_level_mismatch_at_node(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshCommunication::make_elems_parallel_consistent(), libMesh::MeshRefinement::make_flags_parallel_consistent(), libMesh::MeshCommunication::make_node_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_nodes_parallel_consistent(), libMesh::MeshRefinement::make_refinement_compatible(), libMesh::FEMSystem::mesh_position_set(), libMesh::MeshSerializer::MeshSerializer(), libMesh::ParallelMesh::n_active_elem(), libMesh::MeshTools::n_active_levels(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::CondensedEigenSystem::n_global_non_condensed_dofs(), libMesh::MeshTools::n_levels(), libMesh::BoundaryInfo::n_nodeset_conds(), libMesh::MeshTools::n_p_levels(), libMesh::ParallelMesh::parallel_max_elem_id(), libMesh::ParallelMesh::parallel_max_node_id(), libMesh::ParallelMesh::parallel_n_elem(), libMesh::ParallelMesh::parallel_n_nodes(), libMesh::Partitioner::partition(), libMesh::Partitioner::partition_unpartitioned_elements(), libMesh::petsc_auto_fieldsplit(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::MeshBase::prepare_for_use(), libMesh::System::project_vector(), libMesh::Nemesis_IO::read(), libMesh::XdrIO::read(), libMesh::System::read_header(), libMesh::System::read_legacy_data(), libMesh::System::read_SCALAR_dofs(), libMesh::XdrIO::read_serialized_bc_names(), libMesh::XdrIO::read_serialized_bcs(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::XdrIO::read_serialized_nodes(), libMesh::XdrIO::read_serialized_nodesets(), libMesh::XdrIO::read_serialized_subdomain_names(), libMesh::System::read_serialized_vector(), libMesh::MeshBase::recalculate_n_partitions(), libMesh::MeshRefinement::refine_and_coarsen_elements(), libMesh::MeshRefinement::refine_elements(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::MeshBase::subdomain_ids(), libMesh::BoundaryInfo::sync(), libMesh::Parallel::sync_element_data_by_parent_id(), libMesh::Parallel::sync_node_data_by_element_id(), libMesh::MeshRefinement::test_level_one(), libMesh::MeshRefinement::test_unflagged(), libMesh::MeshTools::total_weight(), libMesh::NameBasedIO::write(), libMesh::CheckpointIO::write(), libMesh::XdrIO::write(), libMesh::LegacyXdrIO::write_mesh(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), libMesh::XdrIO::write_serialized_nodesets(), and libMesh::DivaIO::write_stream().
{ return _communicator; }
| void libMesh::ExodusII_IO::copy_elemental_solution | ( | System & | system, |
| std::string | system_var_name, | ||
| std::string | exodus_var_name, | ||
| unsigned int | timestep = 1 |
||
| ) |
If we read in a elemental solution while reading in a mesh, we can attempt to copy that elemental solution into an EquationSystems object.
Definition at line 442 of file exodusII_io.C.
References libMesh::CONSTANT, libMesh::DofObject::dof_number(), libMesh::ExodusII_IO_Helper::elem_var_values, exio_helper, libMesh::MeshInput< MeshBase >::mesh(), libMesh::MONOMIAL, libMesh::System::number(), libMesh::ExodusII_IO_Helper::opened_for_reading, libMesh::MeshBase::query_elem(), libMesh::ExodusII_IO_Helper::read_elemental_var_values(), libMesh::System::solution, libMesh::System::update(), libMesh::System::variable_number(), and libMesh::System::variable_type().
{
if (!exio_helper->opened_for_reading)
libmesh_error_msg("ERROR, ExodusII file must be opened for reading before copying an elemental solution!");
exio_helper->read_elemental_var_values(exodus_var_name, timestep);
const unsigned int var_num = system.variable_number(system_var_name);
if (system.variable_type(var_num) != FEType(CONSTANT, MONOMIAL))
libmesh_error_msg("Error! Trying to copy elemental solution into a variable that is not of CONSTANT MONOMIAL type.");
for (unsigned int i=0; i<exio_helper->elem_var_values.size(); ++i)
{
const Elem * elem = MeshInput<MeshBase>::mesh().query_elem(i);
if (!elem)
libmesh_error_msg("Error! Mesh returned NULL pointer for elem " << i);
dof_id_type dof_index = elem->dof_number(system.number(), var_num, 0);
// If the dof_index is local to this processor, set the value
if ((dof_index >= system.solution->first_local_index()) && (dof_index < system.solution->last_local_index()))
system.solution->set (dof_index, exio_helper->elem_var_values[i]);
}
system.solution->close();
system.update();
}
| void libMesh::ExodusII_IO::copy_nodal_solution | ( | System & | system, |
| std::string | var_name, | ||
| unsigned int | timestep = 1 |
||
| ) |
Backward compatibility version of function that takes a single variable name
Definition at line 72 of file exodusII_io.C.
{
libmesh_deprecated();
copy_nodal_solution(system, var_name, var_name, timestep);
}
| void libMesh::ExodusII_IO::copy_nodal_solution | ( | System & | system, |
| std::string | system_var_name, | ||
| std::string | exodus_var_name, | ||
| unsigned int | timestep = 1 |
||
| ) |
If we read in a nodal solution while reading in a mesh, we can attempt to copy that nodal solution into an EquationSystems object.
Definition at line 410 of file exodusII_io.C.
References libMesh::DofObject::dof_number(), exio_helper, libMesh::MeshInput< MeshBase >::mesh(), libMesh::ExodusII_IO_Helper::nodal_var_values, libMesh::System::number(), libMesh::ExodusII_IO_Helper::opened_for_reading, libMesh::MeshBase::query_node_ptr(), libMesh::ExodusII_IO_Helper::read_nodal_var_values(), libMesh::System::solution, libMesh::System::update(), and libMesh::System::variable_number().
{
if (!exio_helper->opened_for_reading)
libmesh_error_msg("ERROR, ExodusII file must be opened for reading before copying a nodal solution!");
exio_helper->read_nodal_var_values(exodus_var_name, timestep);
const unsigned int var_num = system.variable_number(system_var_name);
for (unsigned int i=0; i<exio_helper->nodal_var_values.size(); ++i)
{
const Node* node = MeshInput<MeshBase>::mesh().query_node_ptr(i);
if (!node)
libmesh_error_msg("Error! Mesh returned NULL pointer for node " << i);
dof_id_type dof_index = node->dof_number(system.number(), var_num, 0);
// If the dof_index is local to this processor, set the value
if ((dof_index >= system.solution->first_local_index()) && (dof_index < system.solution->last_local_index()))
system.solution->set (dof_index, exio_helper->nodal_var_values[i]);
}
system.solution->close();
system.update();
}
| const std::vector< std::string > & libMesh::ExodusII_IO::get_elem_var_names | ( | ) |
Return list of the elemental variable names
Definition at line 906 of file exodusII_io.C.
References libMesh::ExodusII_IO_Helper::elem_var_names, libMesh::ExodusII_IO_Helper::ELEMENTAL, exio_helper, and libMesh::ExodusII_IO_Helper::read_var_names().
{
exio_helper->read_var_names(ExodusII_IO_Helper::ELEMENTAL);
return exio_helper->elem_var_names;
}
| const std::vector< std::string > & libMesh::ExodusII_IO::get_nodal_var_names | ( | ) |
Return list of the nodal variable names
Definition at line 900 of file exodusII_io.C.
References exio_helper, libMesh::ExodusII_IO_Helper::NODAL, libMesh::ExodusII_IO_Helper::nodal_var_names, and libMesh::ExodusII_IO_Helper::read_var_names().
{
exio_helper->read_var_names(ExodusII_IO_Helper::NODAL);
return exio_helper->nodal_var_names;
}
Returns the number of timesteps currently stored in the Exodus file. Knowing the number of time steps currently stored in the file is sometimes necessary when appending, so we can know where to start writing new data. Throws an error if the file is not currently open for reading or writing.
Definition at line 399 of file exodusII_io.C.
References exio_helper, libMesh::ExodusII_IO_Helper::num_time_steps, libMesh::ExodusII_IO_Helper::opened_for_reading, libMesh::ExodusII_IO_Helper::opened_for_writing, and libMesh::ExodusII_IO_Helper::read_num_time_steps().
{
if (!exio_helper->opened_for_reading && !exio_helper->opened_for_writing)
libmesh_error_msg("ERROR, ExodusII file must be opened for reading or writing before calling ExodusII_IO::get_num_time_steps()!");
exio_helper->read_num_time_steps();
return exio_helper->num_time_steps;
}
| const std::vector< Real > & libMesh::ExodusII_IO::get_time_steps | ( | ) |
Returns an array containing the timesteps in the file
Definition at line 388 of file exodusII_io.C.
References exio_helper, libMesh::ExodusII_IO_Helper::opened_for_reading, libMesh::ExodusII_IO_Helper::read_time_steps(), and libMesh::ExodusII_IO_Helper::time_steps.
{
if (!exio_helper->opened_for_reading)
libmesh_error_msg("ERROR, ExodusII file must be opened for reading before calling ExodusII_IO::get_time_steps()!");
exio_helper->read_time_steps();
return exio_helper->time_steps;
}
| MeshBase & libMesh::MeshInput< MeshBase >::mesh | ( | ) | [protected, inherited] |
Returns the object as a writeable reference.
Referenced by libMesh::GMVIO::_read_materials(), libMesh::GMVIO::_read_nodes(), libMesh::GMVIO::_read_one_cell(), libMesh::AbaqusIO::assign_boundary_node_ids(), libMesh::AbaqusIO::assign_sideset_ids(), libMesh::AbaqusIO::assign_subdomain_ids(), libMesh::VTKIO::cells_to_vtk(), copy_elemental_solution(), copy_nodal_solution(), libMesh::GMVIO::copy_nodal_solution(), libMesh::TetGenIO::element_in(), libMesh::UNVIO::elements_in(), libMesh::UNVIO::elements_out(), libMesh::UNVIO::groups_in(), libMesh::TetGenIO::node_in(), libMesh::UNVIO::nodes_in(), libMesh::UNVIO::nodes_out(), libMesh::VTKIO::nodes_to_vtk(), libMesh::AbaqusIO::read(), libMesh::NameBasedIO::read(), libMesh::TetGenIO::read(), libMesh::Nemesis_IO::read(), read(), libMesh::GMVIO::read(), libMesh::CheckpointIO::read(), libMesh::XdrIO::read(), libMesh::VTKIO::read(), libMesh::LegacyXdrIO::read_ascii(), libMesh::CheckpointIO::read_bcs(), libMesh::CheckpointIO::read_connectivity(), libMesh::AbaqusIO::read_elements(), libMesh::UCDIO::read_implementation(), libMesh::UNVIO::read_implementation(), libMesh::GmshIO::read_mesh(), libMesh::LegacyXdrIO::read_mesh(), libMesh::AbaqusIO::read_nodes(), libMesh::CheckpointIO::read_nodes(), libMesh::CheckpointIO::read_nodesets(), libMesh::XdrIO::read_serialized_bcs(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::XdrIO::read_serialized_nodes(), libMesh::XdrIO::read_serialized_nodesets(), libMesh::XdrIO::read_serialized_subdomain_names(), libMesh::OFFIO::read_stream(), libMesh::MatlabIO::read_stream(), libMesh::CheckpointIO::read_subdomain_names(), libMesh::NameBasedIO::write(), libMesh::TetGenIO::write(), libMesh::Nemesis_IO::write(), write(), libMesh::CheckpointIO::write(), libMesh::XdrIO::write(), libMesh::GMVIO::write_ascii_new_impl(), libMesh::GMVIO::write_ascii_old_impl(), libMesh::CheckpointIO::write_bcs(), libMesh::GMVIO::write_binary(), libMesh::CheckpointIO::write_connectivity(), libMesh::GMVIO::write_discontinuous_gmv(), write_element_data(), libMesh::UCDIO::write_implementation(), libMesh::GmshIO::write_mesh(), libMesh::LegacyXdrIO::write_mesh(), libMesh::UCDIO::write_nodal_data(), libMesh::VTKIO::write_nodal_data(), libMesh::Nemesis_IO::write_nodal_data(), libMesh::NameBasedIO::write_nodal_data(), write_nodal_data(), write_nodal_data_common(), write_nodal_data_discontinuous(), libMesh::CheckpointIO::write_nodes(), libMesh::CheckpointIO::write_nodesets(), libMesh::XdrIO::write_parallel(), libMesh::GmshIO::write_post(), libMesh::XdrIO::write_serialized_bcs(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), libMesh::XdrIO::write_serialized_nodesets(), libMesh::XdrIO::write_serialized_subdomain_names(), libMesh::LegacyXdrIO::write_soln(), and libMesh::CheckpointIO::write_subdomain_names().
| const MeshBase & libMesh::MeshOutput< MeshBase >::mesh | ( | ) | const [protected, inherited] |
Returns the object as a read-only reference.
Referenced by libMesh::TecplotIO::elem_dimension(), libMesh::FroIO::write(), libMesh::DivaIO::write(), libMesh::TecplotIO::write(), libMesh::PostscriptIO::write(), libMesh::MEDITIO::write(), libMesh::EnsightIO::write(), libMesh::MEDITIO::write_ascii(), libMesh::TecplotIO::write_ascii(), libMesh::TecplotIO::write_binary(), libMesh::EnsightIO::write_geometry_ascii(), libMesh::TecplotIO::write_nodal_data(), libMesh::MEDITIO::write_nodal_data(), libMesh::EnsightIO::write_scalar_ascii(), libMesh::GnuPlotIO::write_solution(), libMesh::DivaIO::write_stream(), and libMesh::EnsightIO::write_vector_ascii().
| processor_id_type libMesh::ParallelObject::n_processors | ( | ) | const [inline, inherited] |
Definition at line 92 of file parallel_object.h.
References libMesh::ParallelObject::_communicator, and libMesh::Parallel::Communicator::size().
Referenced by libMesh::ParmetisPartitioner::_do_repartition(), libMesh::ParallelMesh::add_elem(), libMesh::ParallelMesh::add_node(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::FEMSystem::assembly(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::ParallelMesh::assign_unique_ids(), libMesh::AztecLinearSolver< T >::AztecLinearSolver(), libMesh::ParallelMesh::clear(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::UnstructuredMesh::create_pid_mesh(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::EnsightIO::EnsightIO(), libMesh::MeshBase::get_info(), libMesh::EquationSystems::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::ParmetisPartitioner::initialize(), libMesh::Nemesis_IO_Helper::initialize(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::MeshTools::libmesh_assert_valid_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::DofMap::local_variable_indices(), libMesh::MeshBase::n_active_elem_on_proc(), libMesh::MeshBase::n_elem_on_proc(), libMesh::MeshBase::n_nodes_on_proc(), libMesh::Partitioner::partition(), libMesh::MeshBase::partition(), libMesh::Partitioner::partition_unpartitioned_elements(), libMesh::PetscLinearSolver< T >::PetscLinearSolver(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::MeshTools::processor_bounding_box(), libMesh::System::project_vector(), libMesh::NameBasedIO::read(), libMesh::Nemesis_IO::read(), libMesh::CheckpointIO::read(), libMesh::XdrIO::read(), libMesh::System::read_parallel_data(), libMesh::System::read_SCALAR_dofs(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::System::read_serialized_vector(), libMesh::Partitioner::repartition(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::BoundaryInfo::sync(), libMesh::ParallelMesh::update_parallel_id_counts(), libMesh::CheckpointIO::write(), libMesh::GMVIO::write_binary(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::System::write_parallel_data(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), and libMesh::XdrIO::write_serialized_nodesets().
{ return cast_int<processor_id_type>(_communicator.size()); }
| processor_id_type libMesh::ParallelObject::processor_id | ( | ) | const [inline, inherited] |
Definition at line 98 of file parallel_object.h.
References libMesh::ParallelObject::_communicator, and libMesh::Parallel::Communicator::rank().
Referenced by libMesh::MetisPartitioner::_do_partition(), libMesh::EquationSystems::_read_impl(), libMesh::SerialMesh::active_local_elements_begin(), libMesh::ParallelMesh::active_local_elements_begin(), libMesh::SerialMesh::active_local_elements_end(), libMesh::ParallelMesh::active_local_elements_end(), libMesh::SerialMesh::active_local_subdomain_elements_begin(), libMesh::ParallelMesh::active_local_subdomain_elements_begin(), libMesh::SerialMesh::active_local_subdomain_elements_end(), libMesh::ParallelMesh::active_local_subdomain_elements_end(), libMesh::SerialMesh::active_not_local_elements_begin(), libMesh::ParallelMesh::active_not_local_elements_begin(), libMesh::SerialMesh::active_not_local_elements_end(), libMesh::ParallelMesh::active_not_local_elements_end(), libMesh::ParallelMesh::add_elem(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::ParallelMesh::add_node(), libMesh::UnstructuredMesh::all_second_order(), libMesh::FEMSystem::assembly(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::ParallelMesh::assign_unique_ids(), libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::Nemesis_IO_Helper::build_element_and_node_maps(), libMesh::ParmetisPartitioner::build_graph(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::DofMap::build_sparsity(), libMesh::ParallelMesh::clear(), libMesh::ExodusII_IO_Helper::close(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::compute_communication_map_parameters(), libMesh::Nemesis_IO_Helper::compute_internal_and_border_elems_and_internal_nodes(), libMesh::Nemesis_IO_Helper::compute_node_communication_maps(), libMesh::Nemesis_IO_Helper::compute_num_global_elem_blocks(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::Nemesis_IO_Helper::compute_num_global_sidesets(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::ExodusII_IO_Helper::create(), libMesh::ParallelMesh::delete_elem(), libMesh::ParallelMesh::delete_node(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::DofMap::end_dof(), libMesh::DofMap::end_old_dof(), libMesh::EnsightIO::EnsightIO(), libMesh::SerialMesh::facelocal_elements_begin(), libMesh::ParallelMesh::facelocal_elements_begin(), libMesh::SerialMesh::facelocal_elements_end(), libMesh::ParallelMesh::facelocal_elements_end(), libMesh::MeshFunction::find_element(), libMesh::UnstructuredMesh::find_neighbors(), libMesh::DofMap::first_dof(), libMesh::DofMap::first_old_dof(), libMesh::Nemesis_IO_Helper::get_cmap_params(), libMesh::Nemesis_IO_Helper::get_eb_info_global(), libMesh::Nemesis_IO_Helper::get_elem_cmap(), libMesh::Nemesis_IO_Helper::get_elem_map(), libMesh::MeshBase::get_info(), libMesh::Nemesis_IO_Helper::get_init_global(), libMesh::Nemesis_IO_Helper::get_init_info(), libMesh::Nemesis_IO_Helper::get_loadbal_param(), libMesh::Nemesis_IO_Helper::get_node_cmap(), libMesh::Nemesis_IO_Helper::get_node_map(), libMesh::Nemesis_IO_Helper::get_ns_param_global(), libMesh::Nemesis_IO_Helper::get_ss_param_global(), libMesh::SystemSubsetBySubdomain::init(), libMesh::ParmetisPartitioner::initialize(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::ExodusII_IO_Helper::initialize_element_variables(), libMesh::ExodusII_IO_Helper::initialize_global_variables(), libMesh::ExodusII_IO_Helper::initialize_nodal_variables(), libMesh::ParallelMesh::insert_elem(), libMesh::SparsityPattern::Build::join(), libMesh::DofMap::last_dof(), libMesh::MeshTools::libmesh_assert_valid_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_procids< Node >(), libMesh::SerialMesh::local_elements_begin(), libMesh::ParallelMesh::local_elements_begin(), libMesh::SerialMesh::local_elements_end(), libMesh::ParallelMesh::local_elements_end(), libMesh::SerialMesh::local_level_elements_begin(), libMesh::ParallelMesh::local_level_elements_begin(), libMesh::SerialMesh::local_level_elements_end(), libMesh::ParallelMesh::local_level_elements_end(), libMesh::SerialMesh::local_nodes_begin(), libMesh::ParallelMesh::local_nodes_begin(), libMesh::SerialMesh::local_nodes_end(), libMesh::ParallelMesh::local_nodes_end(), libMesh::SerialMesh::local_not_level_elements_begin(), libMesh::ParallelMesh::local_not_level_elements_begin(), libMesh::SerialMesh::local_not_level_elements_end(), libMesh::ParallelMesh::local_not_level_elements_end(), libMesh::DofMap::local_variable_indices(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshBase::n_active_local_elem(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::DofMap::n_local_dofs(), libMesh::System::n_local_dofs(), libMesh::MeshBase::n_local_elem(), libMesh::MeshBase::n_local_nodes(), libMesh::BoundaryInfo::n_nodeset_conds(), libMesh::SerialMesh::not_local_elements_begin(), libMesh::ParallelMesh::not_local_elements_begin(), libMesh::SerialMesh::not_local_elements_end(), libMesh::ParallelMesh::not_local_elements_end(), libMesh::WeightedPatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::SparsityPattern::Build::operator()(), libMesh::PatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::ParallelMesh::ParallelMesh(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::System::project_vector(), libMesh::Nemesis_IO_Helper::put_cmap_params(), libMesh::Nemesis_IO_Helper::put_elem_cmap(), libMesh::Nemesis_IO_Helper::put_elem_map(), libMesh::Nemesis_IO_Helper::put_loadbal_param(), libMesh::Nemesis_IO_Helper::put_node_cmap(), libMesh::Nemesis_IO_Helper::put_node_map(), libMesh::NameBasedIO::read(), libMesh::Nemesis_IO::read(), libMesh::CheckpointIO::read(), libMesh::XdrIO::read(), libMesh::ExodusII_IO_Helper::read_elem_num_map(), libMesh::System::read_header(), libMesh::System::read_legacy_data(), libMesh::ExodusII_IO_Helper::read_node_num_map(), libMesh::System::read_parallel_data(), libMesh::System::read_SCALAR_dofs(), libMesh::XdrIO::read_serialized_bc_names(), libMesh::XdrIO::read_serialized_bcs(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::System::read_serialized_data(), libMesh::XdrIO::read_serialized_nodes(), libMesh::XdrIO::read_serialized_nodesets(), libMesh::XdrIO::read_serialized_subdomain_names(), libMesh::System::read_serialized_vector(), libMesh::System::read_serialized_vectors(), libMesh::MeshData::read_xdr(), libMesh::SerialMesh::semilocal_elements_begin(), libMesh::ParallelMesh::semilocal_elements_begin(), libMesh::SerialMesh::semilocal_elements_end(), libMesh::ParallelMesh::semilocal_elements_end(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::BoundaryInfo::sync(), libMesh::MeshTools::total_weight(), libMesh::ParallelMesh::update_parallel_id_counts(), libMesh::MeshTools::weight(), libMesh::NameBasedIO::write(), write(), libMesh::CheckpointIO::write(), libMesh::XdrIO::write(), libMesh::EquationSystems::write(), libMesh::GMVIO::write_discontinuous_gmv(), write_element_data(), libMesh::ExodusII_IO_Helper::write_element_values(), libMesh::ExodusII_IO_Helper::write_elements(), write_global_data(), libMesh::ExodusII_IO_Helper::write_global_values(), libMesh::System::write_header(), write_information_records(), libMesh::ExodusII_IO_Helper::write_information_records(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::UCDIO::write_nodal_data(), write_nodal_data(), write_nodal_data_discontinuous(), libMesh::ExodusII_IO_Helper::write_nodal_values(), libMesh::ExodusII_IO_Helper::write_nodesets(), libMesh::Nemesis_IO_Helper::write_nodesets(), libMesh::System::write_parallel_data(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bc_names(), libMesh::XdrIO::write_serialized_bcs(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::System::write_serialized_data(), libMesh::XdrIO::write_serialized_nodes(), libMesh::XdrIO::write_serialized_nodesets(), libMesh::XdrIO::write_serialized_subdomain_names(), libMesh::System::write_serialized_vector(), libMesh::System::write_serialized_vectors(), libMesh::ExodusII_IO_Helper::write_sidesets(), libMesh::Nemesis_IO_Helper::write_sidesets(), write_timestep(), and libMesh::ExodusII_IO_Helper::write_timestep().
{ return cast_int<processor_id_type>(_communicator.rank()); }
| void libMesh::ExodusII_IO::read | ( | const std::string & | name | ) | [virtual] |
This method implements reading a mesh from a specified file. Open the file named name and read the mesh in Sandia National Lab's ExodusII format. This is the method to use for reading in meshes generated by cubit. Works in 2D for TRIs, TRI6s, QUAD s, and QUAD9s. Works in 3D for TET4s, TET10s, HEX8s, and HEX27s.
Implements libMesh::MeshInput< MeshBase >.
Definition at line 110 of file exodusII_io.C.
References libMesh::MeshBase::add_elem(), libMesh::BoundaryInfo::add_node(), libMesh::MeshBase::add_point(), libMesh::BoundaryInfo::add_side(), libMesh::ExodusII_IO_Helper::ElementMaps::assign_conversion(), libMesh::Elem::build(), libMesh::MeshBase::clear(), libMesh::ExodusII_IO_Helper::connect, libMesh::Elem::dim(), libMesh::MeshBase::elem(), libMesh::ExodusII_IO_Helper::elem_list, libMesh::ExodusII_IO_Helper::elem_num_map, libMesh::MeshInput< MeshBase >::elems_of_dimension, exio_helper, libMesh::ExodusII_IO_Helper::get_block_id(), libMesh::ExodusII_IO_Helper::get_block_name(), libMesh::MeshBase::get_boundary_info(), libMesh::ExodusII_IO_Helper::get_elem_type(), libMesh::ExodusII_IO_Helper::get_node_set_name(), libMesh::ExodusII_IO_Helper::Conversion::get_side_map(), libMesh::ExodusII_IO_Helper::get_side_set_id(), libMesh::ExodusII_IO_Helper::get_side_set_name(), libMesh::DofObject::id(), libMesh::ExodusII_IO_Helper::id_list, libMesh::libmesh_assert(), libMesh::MeshInput< MeshBase >::mesh(), libMesh::MeshBase::mesh_dimension(), libMesh::ExodusII_IO_Helper::node_list, libMesh::ExodusII_IO_Helper::node_num_map, libMesh::MeshBase::node_ptr(), libMesh::ExodusII_IO_Helper::nodeset_ids, libMesh::BoundaryInfo::nodeset_name(), libMesh::ExodusII_IO_Helper::num_elem, libMesh::ExodusII_IO_Helper::num_elem_blk, libMesh::ExodusII_IO_Helper::num_elem_this_blk, libMesh::ExodusII_IO_Helper::num_node_sets, libMesh::ExodusII_IO_Helper::num_nodes, libMesh::ExodusII_IO_Helper::num_nodes_per_elem, libMesh::ExodusII_IO_Helper::num_side_sets, libMesh::ExodusII_IO_Helper::num_sides_per_set, libMesh::ExodusII_IO_Helper::open(), libMesh::ExodusII_IO_Helper::print_header(), libMesh::ExodusII_IO_Helper::read_block_info(), libMesh::ExodusII_IO_Helper::read_elem_in_block(), libMesh::ExodusII_IO_Helper::read_elem_num_map(), libMesh::ExodusII_IO_Helper::read_header(), libMesh::ExodusII_IO_Helper::read_node_num_map(), libMesh::ExodusII_IO_Helper::read_nodes(), libMesh::ExodusII_IO_Helper::read_nodeset(), libMesh::ExodusII_IO_Helper::read_nodeset_info(), libMesh::ExodusII_IO_Helper::read_sideset(), libMesh::ExodusII_IO_Helper::read_sideset_info(), libMesh::MeshBase::reserve_elem(), libMesh::MeshBase::reserve_nodes(), libMesh::DofObject::set_id(), libMesh::MeshBase::set_mesh_dimension(), libMesh::Elem::set_node(), libMesh::ExodusII_IO_Helper::side_list, libMesh::BoundaryInfo::sideset_name(), libMesh::Elem::subdomain_id(), libMesh::MeshBase::subdomain_name(), verbose(), libMesh::ExodusII_IO_Helper::x, libMesh::ExodusII_IO_Helper::y, and libMesh::ExodusII_IO_Helper::z.
Referenced by libMesh::NameBasedIO::read(), and libMesh::Nemesis_IO::read().
{
// Get a reference to the mesh we are reading
MeshBase& mesh = MeshInput<MeshBase>::mesh();
// Clear any existing mesh data
mesh.clear();
// Keep track of what kinds of elements this file contains
elems_of_dimension.clear();
elems_of_dimension.resize(4, false);
#ifdef DEBUG
this->verbose(true);
#endif
// Instantiate the ElementMaps interface
ExodusII_IO_Helper::ElementMaps em;
// Open the exodus file in EX_READ mode
exio_helper->open(fname.c_str(), /*read_only=*/true);
// Get header information from exodus file
exio_helper->read_header();
// Print header information
exio_helper->print_header();
// Read nodes from the exodus file
exio_helper->read_nodes();
// Reserve space for the nodes.
mesh.reserve_nodes(exio_helper->num_nodes);
// Read the node number map from the Exodus file. This is
// required if we want to preserve the numbering of nodes as it
// exists in the Exodus file. If the Exodus file does not contain
// a node_num_map, the identity map is returned by this call.
exio_helper->read_node_num_map();
// Loop over the nodes, create Nodes with local processor_id 0.
for (int i=0; i<exio_helper->num_nodes; i++)
{
// Use the node_num_map to get the correct ID for Exodus
int exodus_id = exio_helper->node_num_map[i];
// Catch the node that was added to the mesh
Node* added_node = mesh.add_point (Point(exio_helper->x[i], exio_helper->y[i], exio_helper->z[i]), exodus_id-1);
// If the Mesh assigned an ID different from what is in the
// Exodus file, we should probably error.
if (added_node->id() != static_cast<unsigned>(exodus_id-1))
libmesh_error_msg("Error! Mesh assigned node ID " \
<< added_node->id() \
<< " which is different from the (zero-based) Exodus ID " \
<< exodus_id-1 \
<< "!");
}
// This assert is no longer valid if the nodes are not numbered
// sequentially starting from 1 in the Exodus file.
// libmesh_assert_equal_to (static_cast<unsigned int>(exio_helper->num_nodes), mesh.n_nodes());
// Get information about all the blocks
exio_helper->read_block_info();
// Reserve space for the elements
mesh.reserve_elem(exio_helper->num_elem);
// Read the element number map from the Exodus file. This is
// required if we want to preserve the numbering of elements as it
// exists in the Exodus file. If the Exodus file does not contain
// an elem_num_map, the identity map is returned by this call.
exio_helper->read_elem_num_map();
// Read in the element connectivity for each block.
int nelem_last_block = 0;
// Loop over all the blocks
for (int i=0; i<exio_helper->num_elem_blk; i++)
{
// Read the information for block i
exio_helper->read_elem_in_block (i);
int subdomain_id = exio_helper->get_block_id(i);
// populate the map of names
std::string subdomain_name = exio_helper->get_block_name(i);
if (!subdomain_name.empty())
mesh.subdomain_name(static_cast<subdomain_id_type>(subdomain_id)) = subdomain_name;
// Set any relevant node/edge maps for this element
const std::string type_str (exio_helper->get_elem_type());
const ExodusII_IO_Helper::Conversion conv = em.assign_conversion(type_str);
// Loop over all the faces in this block
int jmax = nelem_last_block+exio_helper->num_elem_this_blk;
for (int j=nelem_last_block; j<jmax; j++)
{
Elem* elem = Elem::build (conv.get_canonical_type()).release();
libmesh_assert (elem);
elem->subdomain_id() = static_cast<subdomain_id_type>(subdomain_id) ;
// Use the elem_num_map to obtain the ID of this element in the Exodus file
int exodus_id = exio_helper->elem_num_map[j];
// Assign this element the same ID it had in the Exodus
// file, but make it zero-based by subtracting 1. Note:
// some day we could use 1-based numbering in libmesh and
// thus match the Exodus numbering exactly, but at the
// moment libmesh is zero-based.
elem->set_id(exodus_id-1);
// Record that we have seen an element of dimension elem->dim()
elems_of_dimension[elem->dim()] = true;
// Catch the Elem pointer that the Mesh throws back
elem = mesh.add_elem (elem);
// If the Mesh assigned an ID different from what is in the
// Exodus file, we should probably error.
if (elem->id() != static_cast<unsigned>(exodus_id-1))
libmesh_error_msg("Error! Mesh assigned ID " \
<< elem->id() \
<< " which is different from the (zero-based) Exodus ID " \
<< exodus_id-1 \
<< "!");
// Set all the nodes for this element
for (int k=0; k<exio_helper->num_nodes_per_elem; k++)
{
// global index
int gi = (j-nelem_last_block)*exio_helper->num_nodes_per_elem + conv.get_node_map(k);
// The entries in 'connect' are actually (1-based)
// indices into the node_num_map, so to get the right
// node ID we:
// 1.) Subtract 1 from connect[gi]
// 2.) Pass it through node_num_map to get the corresponding Exodus ID
// 3.) Subtract 1 from that, since libmesh node numbering is "zero"-based,
// even when the Exodus node numbering doesn't start with 1.
int libmesh_node_id = exio_helper->node_num_map[exio_helper->connect[gi] - 1] - 1;
// Set the node pointer in the Elem
elem->set_node(k) = mesh.node_ptr(libmesh_node_id);
}
}
// running sum of # of elements per block,
// (should equal total number of elements in the end)
nelem_last_block += exio_helper->num_elem_this_blk;
}
// This assert isn't valid if the Exodus file's numbering doesn't
// start with 1! For example, if Exodus's elem_num_map is 21, 22,
// 23, 24, 25, 26, 27, 28, 29, 30, ... 84, then by the time you are
// done with the loop above, mesh.n_elem() will report 84 and
// nelem_last_block will be 64.
// libmesh_assert_equal_to (static_cast<unsigned>(nelem_last_block), mesh.n_elem());
// Set the mesh dimension to the largest encountered for an element
for (unsigned char i=0; i!=4; ++i)
if (elems_of_dimension[i])
mesh.set_mesh_dimension(i);
// Read in sideset information -- this is useful for applying boundary conditions
{
// Get basic information about all sidesets
exio_helper->read_sideset_info();
int offset=0;
for (int i=0; i<exio_helper->num_side_sets; i++)
{
// Compute new offset
offset += (i > 0 ? exio_helper->num_sides_per_set[i-1] : 0);
exio_helper->read_sideset (i, offset);
std::string sideset_name = exio_helper->get_side_set_name(i);
if (!sideset_name.empty())
mesh.get_boundary_info().sideset_name
(cast_int<boundary_id_type>(exio_helper->get_side_set_id(i)))
= sideset_name;
}
for (unsigned int e=0; e<exio_helper->elem_list.size(); e++)
{
// The numbers in the Exodus file sidesets should be thought
// of as (1-based) indices into the elem_num_map array. So,
// to get the right element ID we have to:
// 1.) Subtract 1 from elem_list[e] (to get a zero-based index)
// 2.) Pass it through elem_num_map (to get the corresponding Exodus ID)
// 3.) Subtract 1 from that, since libmesh is "zero"-based,
// even when the Exodus numbering doesn't start with 1.
dof_id_type libmesh_elem_id =
cast_int<dof_id_type>(exio_helper->elem_num_map[exio_helper->elem_list[e] - 1] - 1);
// Set any relevant node/edge maps for this element
Elem * elem = mesh.elem(libmesh_elem_id);
const ExodusII_IO_Helper::Conversion conv = em.assign_conversion(elem->type());
// Add this (elem,side,id) triplet to the BoundaryInfo object.
mesh.get_boundary_info().add_side
(libmesh_elem_id,
cast_int<unsigned short>(conv.get_side_map(exio_helper->side_list[e]-1)),
cast_int<boundary_id_type>(exio_helper->id_list[e]));
}
}
// Read nodeset info
{
exio_helper->read_nodeset_info();
for (int nodeset=0; nodeset<exio_helper->num_node_sets; nodeset++)
{
boundary_id_type nodeset_id =
cast_int<boundary_id_type>(exio_helper->nodeset_ids[nodeset]);
std::string nodeset_name = exio_helper->get_node_set_name(nodeset);
if (!nodeset_name.empty())
mesh.get_boundary_info().nodeset_name(nodeset_id) = nodeset_name;
exio_helper->read_nodeset(nodeset);
for (unsigned int node=0; node<exio_helper->node_list.size(); node++)
{
// As before, the entries in 'node_list' are 1-based
// indcies into the node_num_map array, so we have to map
// them. See comment above.
int libmesh_node_id = exio_helper->node_num_map[exio_helper->node_list[node] - 1] - 1;
mesh.get_boundary_info().add_node(cast_int<dof_id_type>(libmesh_node_id),
nodeset_id);
}
}
}
#if LIBMESH_DIM < 3
if (mesh.mesh_dimension() > LIBMESH_DIM)
libmesh_error_msg("Cannot open dimension " \
<< mesh.mesh_dimension() \
<< " mesh file when configured without " \
<< mesh.mesh_dimension() \
<< "D support.");
#endif
}
Allows you to set a vector that is added to the coordinates of all of the nodes. Effectively, this "moves" the mesh to a particular position
Definition at line 373 of file exodusII_io.C.
References exio_helper, and libMesh::ExodusII_IO_Helper::set_coordinate_offset().
{
libmesh_deprecated();
exio_helper->set_coordinate_offset(p);
}
| void libMesh::MeshInput< MeshBase >::set_n_partitions | ( | unsigned int | n_parts | ) | [inline, protected, inherited] |
Sets the number of partitions in the mesh. Typically this gets done by the partitioner, but some parallel file formats begin "pre-partitioned".
Definition at line 94 of file mesh_input.h.
References libMesh::MeshInput< MT >::mesh().
Referenced by libMesh::Nemesis_IO::read(), and libMesh::XdrIO::read().
{ this->mesh().set_n_partitions() = n_parts; }
| void libMesh::ExodusII_IO::set_output_variables | ( | const std::vector< std::string > & | output_variables, |
| bool | allow_empty = true |
||
| ) |
Sets the list of variable names to be included in the output. This is _optional_. If this is never called then all variables will be present. If this is called and an empty vector is supplied no variables will be output. Setting the allow_empty = false will result in empty vectors supplied here to also be populated with all variables.
Definition at line 63 of file exodusII_io.C.
References _allow_empty_variables, and _output_variables.
{
_output_variables = output_variables;
_allow_empty_variables = allow_empty;
}
| void libMesh::MeshInput< MeshBase >::skip_comment_lines | ( | std::istream & | in, |
| const char | comment_start | ||
| ) | [protected, inherited] |
Reads input from in, skipping all the lines that start with the character comment_start.
Referenced by libMesh::TetGenIO::read(), and libMesh::UCDIO::read_implementation().
In the general case, meshes containing 2D elements can be manifolds living in 3D space, thus by default we write all meshes with the Exodus dimension set to LIBMESH_DIM = mesh.spatial_dimension().
In certain cases, however, the user may know his 2D mesh actually lives in the z=0 plane, and therefore wants to write a truly 2D Exodus mesh. In such a case, he should call this function with val=true.
Definition at line 366 of file exodusII_io.C.
References exio_helper, and libMesh::ExodusII_IO_Helper::use_mesh_dimension_instead_of_spatial_dimension().
| void libMesh::ExodusII_IO::verbose | ( | bool | set_verbosity | ) |
Set the flag indicating if we should be verbose.
Definition at line 356 of file exodusII_io.C.
References _verbose, exio_helper, and libMesh::ExodusII_IO_Helper::verbose.
Referenced by read().
{
_verbose = set_verbosity;
// Set the verbose flag in the helper object as well.
exio_helper->verbose = _verbose;
}
| void libMesh::ExodusII_IO::write | ( | const std::string & | fname | ) | [virtual] |
This method implements writing a mesh to a specified file.
Implements libMesh::MeshOutput< MeshBase >.
Definition at line 734 of file exodusII_io.C.
References _append, _verbose, libMesh::ExodusII_IO_Helper::create(), exio_helper, libMesh::MeshBase::get_boundary_info(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::libmesh_assert(), libMesh::MeshInput< MeshBase >::mesh(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::ExodusII_IO_Helper::opened_for_writing, libMesh::out, libMesh::ParallelObject::processor_id(), libMesh::ExodusII_IO_Helper::write_elements(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::ExodusII_IO_Helper::write_nodesets(), and libMesh::ExodusII_IO_Helper::write_sidesets().
Referenced by libMesh::ErrorVector::plot_error(), and libMesh::NameBasedIO::write().
{
const MeshBase & mesh = MeshOutput<MeshBase>::mesh();
// We may need to gather a ParallelMesh to output it, making that
// const qualifier in our constructor a dirty lie
MeshSerializer serialize(const_cast<MeshBase&>(mesh), !MeshOutput<MeshBase>::_is_parallel_format);
libmesh_assert( !exio_helper->opened_for_writing );
// If the user has set the append flag here, it doesn't really make
// sense: the intent of this function is to write a Mesh with no
// data, while "appending" is really intended to add data to an
// existing file. If we're verbose, print a message to this effect.
if (_append && _verbose)
libMesh::out << "Warning: Appending in ExodusII_IO::write() does not make sense.\n"
<< "Creating a new file instead!"
<< std::endl;
exio_helper->create(fname);
exio_helper->initialize(fname,mesh);
exio_helper->write_nodal_coordinates(mesh);
exio_helper->write_elements(mesh);
exio_helper->write_sidesets(mesh);
exio_helper->write_nodesets(mesh);
if(MeshOutput<MeshBase>::mesh().processor_id())
return;
if( (mesh.get_boundary_info().n_edge_conds() > 0) &&
_verbose )
{
libMesh::out << "Warning: Mesh contains edge boundary IDs, but these "
<< "are not supported by the ExodusII format."
<< std::endl;
}
}
| void libMesh::ExodusII_IO::write_discontinuous_exodusII | ( | const std::string & | name, |
| const EquationSystems & | es, | ||
| const std::set< std::string > * | system_names = NULL |
||
| ) |
Writes a exodusII file with discontinuous data
Definition at line 82 of file exodusII_io.C.
References libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::EquationSystems::build_variable_names(), and write_nodal_data_discontinuous().
{
std::vector<std::string> solution_names;
std::vector<Number> v;
es.build_variable_names (solution_names, NULL, system_names);
es.build_discontinuous_solution_vector (v, system_names);
this->write_nodal_data_discontinuous(name, v, solution_names);
}
| void libMesh::ExodusII_IO::write_element_data | ( | const EquationSystems & | es | ) |
Write out element solution.
Definition at line 476 of file exodusII_io.C.
References _output_variables, _timestep, std::abs(), libMesh::EquationSystems::build_variable_names(), libMesh::CONSTANT, exio_helper, libMesh::ExodusII_IO_Helper::get_complex_names(), libMesh::EquationSystems::get_solution(), libMesh::ExodusII_IO_Helper::initialize_element_variables(), libMesh::MeshInput< MeshBase >::mesh(), libMesh::MONOMIAL, libMesh::ExodusII_IO_Helper::opened_for_writing, libMesh::ParallelObject::processor_id(), and libMesh::ExodusII_IO_Helper::write_element_values().
Referenced by libMesh::ErrorVector::plot_error().
{
// Be sure the file has been opened for writing!
if (MeshOutput<MeshBase>::mesh().processor_id() == 0 && !exio_helper->opened_for_writing)
libmesh_error_msg("ERROR, ExodusII file must be initialized before outputting element variables.");
// This function currently only works on SerialMeshes. We rely on
// having a reference to a non-const MeshBase object from our
// MeshInput parent class to construct a MeshSerializer object,
// similar to what is done in ExodusII_IO::write(). Note that
// calling ExodusII_IO::write_timestep() followed by
// ExodusII_IO::write_element_data() when the underlying Mesh is a
// ParallelMesh will result in an unnecessary additional
// serialization/re-parallelization step.
MeshSerializer serialize(MeshInput<MeshBase>::mesh(), !MeshOutput<MeshBase>::_is_parallel_format);
// To be (possibly) filled with a filtered list of variable names to output.
std::vector<std::string> names;
// If _output_variables is populated, only output the monomials which are
// also in the _output_variables vector.
if (_output_variables.size() > 0)
{
std::vector<std::string> monomials;
const FEType type(CONSTANT, MONOMIAL);
// Create a list of monomial variable names
es.build_variable_names(monomials, &type);
// Filter that list against the _output_variables list. Note: if names is still empty after
// all this filtering, all the monomial variables will be gathered
std::vector<std::string>::iterator it = monomials.begin();
for (; it!=monomials.end(); ++it)
if (std::find(_output_variables.begin(), _output_variables.end(), *it) != _output_variables.end())
names.push_back(*it);
}
// If we pass in a list of names to "get_solution" it'll filter the variables coming back
std::vector<Number> soln;
es.get_solution(soln, names);
if(soln.empty()) // If there is nothing to write just return
return;
// The data must ultimately be written block by block. This means that this data
// must be sorted appropriately.
if(MeshOutput<MeshBase>::mesh().processor_id())
return;
const MeshBase & mesh = MeshOutput<MeshBase>::mesh();
#ifdef LIBMESH_USE_COMPLEX_NUMBERS
std::vector<std::string> complex_names = exio_helper->get_complex_names(names);
exio_helper->initialize_element_variables(complex_names);
unsigned int num_values = soln.size();
unsigned int num_vars = names.size();
unsigned int num_elems = num_values / num_vars;
// This will contain the real and imaginary parts and the magnitude
// of the values in soln
std::vector<Real> complex_soln(3*num_values);
for (unsigned i=0; i<num_vars; ++i)
{
for (unsigned int j=0; j<num_elems; ++j)
{
Number value = soln[i*num_vars + j];
complex_soln[3*i*num_elems + j] = value.real();
}
for (unsigned int j=0; j<num_elems; ++j)
{
Number value = soln[i*num_vars + j];
complex_soln[3*i*num_elems + num_elems +j] = value.imag();
}
for (unsigned int j=0; j<num_elems; ++j)
{
Number value = soln[i*num_vars + j];
complex_soln[3*i*num_elems + 2*num_elems + j] = std::abs(value);
}
}
exio_helper->write_element_values(mesh, complex_soln, _timestep);
#else
exio_helper->initialize_element_variables(names);
exio_helper->write_element_values(mesh, soln, _timestep);
#endif
}
| virtual void libMesh::MeshOutput< MeshBase >::write_equation_systems | ( | const std::string & | , |
| const EquationSystems & | , | ||
| const std::set< std::string > * | system_names = NULL |
||
| ) | [virtual, inherited] |
This method implements writing a mesh with data to a specified file where the data is taken from the EquationSystems object.
Reimplemented in libMesh::NameBasedIO.
Referenced by libMesh::Nemesis_IO::write_timestep(), and write_timestep().
| void libMesh::ExodusII_IO::write_global_data | ( | const std::vector< Number > & | soln, |
| const std::vector< std::string > & | names | ||
| ) |
Write out global variables.
Definition at line 665 of file exodusII_io.C.
References _timestep, std::abs(), exio_helper, libMesh::ExodusII_IO_Helper::get_complex_names(), libMesh::ExodusII_IO_Helper::initialize_global_variables(), libMesh::ExodusII_IO_Helper::opened_for_writing, libMesh::ParallelObject::processor_id(), and libMesh::ExodusII_IO_Helper::write_global_values().
{
if(MeshOutput<MeshBase>::mesh().processor_id())
return;
if (!exio_helper->opened_for_writing)
libmesh_error_msg("ERROR, ExodusII file must be initialized before outputting global variables.");
#ifdef LIBMESH_USE_COMPLEX_NUMBERS
std::vector<std::string> complex_names = exio_helper->get_complex_names(names);
exio_helper->initialize_global_variables(complex_names);
unsigned int num_values = soln.size();
unsigned int num_vars = names.size();
unsigned int num_elems = num_values / num_vars;
// This will contain the real and imaginary parts and the magnitude
// of the values in soln
std::vector<Real> complex_soln(3*num_values);
for (unsigned i=0; i<num_vars; ++i)
{
for (unsigned int j=0; j<num_elems; ++j)
{
Number value = soln[i*num_vars + j];
complex_soln[3*i*num_elems + j] = value.real();
}
for (unsigned int j=0; j<num_elems; ++j)
{
Number value = soln[i*num_vars + j];
complex_soln[3*i*num_elems + num_elems +j] = value.imag();
}
for (unsigned int j=0; j<num_elems; ++j)
{
Number value = soln[i*num_vars + j];
complex_soln[3*i*num_elems + 2*num_elems + j] = std::abs(value);
}
}
exio_helper->write_global_values(complex_soln, _timestep);
#else
exio_helper->initialize_global_variables(names);
exio_helper->write_global_values(soln, _timestep);
#endif
}
| void libMesh::ExodusII_IO::write_information_records | ( | const std::vector< std::string > & | records | ) |
Write out information records.
Definition at line 652 of file exodusII_io.C.
References exio_helper, libMesh::ExodusII_IO_Helper::opened_for_writing, libMesh::ParallelObject::processor_id(), and libMesh::ExodusII_IO_Helper::write_information_records().
{
if(MeshOutput<MeshBase>::mesh().processor_id())
return;
if (!exio_helper->opened_for_writing)
libmesh_error_msg("ERROR, ExodusII file must be initialized before outputting information records.");
exio_helper->write_information_records(records);
}
| void libMesh::ExodusII_IO::write_nodal_data | ( | const std::string & | fname, |
| const std::vector< Number > & | soln, | ||
| const std::vector< std::string > & | names | ||
| ) | [virtual] |
Write out a nodal solution.
Reimplemented from libMesh::MeshOutput< MeshBase >.
Definition at line 571 of file exodusII_io.C.
References _allow_empty_variables, _output_variables, _timestep, std::abs(), exio_helper, libMesh::ExodusII_IO_Helper::get_complex_names(), libMesh::MeshInput< MeshBase >::mesh(), libMesh::MeshBase::n_nodes(), libMesh::ParallelObject::processor_id(), libMesh::START_LOG(), write_nodal_data_common(), and libMesh::ExodusII_IO_Helper::write_nodal_values().
Referenced by libMesh::NameBasedIO::write_nodal_data().
{
START_LOG("write_nodal_data()", "ExodusII_IO");
const MeshBase & mesh = MeshOutput<MeshBase>::mesh();
int num_vars = cast_int<int>(names.size());
dof_id_type num_nodes = mesh.n_nodes();
// The names of the variables to be output
std::vector<std::string> output_names;
if(_allow_empty_variables || !_output_variables.empty())
output_names = _output_variables;
else
output_names = names;
#ifdef LIBMESH_USE_COMPLEX_NUMBERS
std::vector<std::string> complex_names = exio_helper->get_complex_names(names);
// Call helper function for opening/initializing data, giving it the
// complex variable names
this->write_nodal_data_common(fname, complex_names, /*continuous=*/true);
#else
// Call helper function for opening/initializing data
this->write_nodal_data_common(fname, output_names, /*continuous=*/true);
#endif
if(mesh.processor_id())
{
STOP_LOG("write_nodal_data()", "ExodusII_IO");
return;
}
// This will count the number of variables actually output
for (int c=0; c<num_vars; c++)
{
std::stringstream name_to_find;
std::vector<std::string>::iterator pos =
std::find(output_names.begin(), output_names.end(), names[c]);
if (pos == output_names.end())
continue;
unsigned int variable_name_position =
cast_int<unsigned int>(pos - output_names.begin());
#ifdef LIBMESH_USE_COMPLEX_NUMBERS
std::vector<Real> real_parts(num_nodes);
std::vector<Real> imag_parts(num_nodes);
std::vector<Real> magnitudes(num_nodes);
for (unsigned int i=0; i<num_nodes; ++i)
{
real_parts[i] = soln[i*num_vars + c].real();
imag_parts[i] = soln[i*num_vars + c].imag();
magnitudes[i] = std::abs(soln[i*num_vars + c]);
}
exio_helper->write_nodal_values(3*variable_name_position+1,real_parts,_timestep);
exio_helper->write_nodal_values(3*variable_name_position+2,imag_parts,_timestep);
exio_helper->write_nodal_values(3*variable_name_position+3,magnitudes,_timestep);
#else
std::vector<Number> cur_soln(num_nodes);
// Copy out this variable's solution
for (dof_id_type i=0; i<num_nodes; i++)
cur_soln[i] = soln[i*num_vars + c];
exio_helper->write_nodal_values(variable_name_position+1,cur_soln,_timestep);
#endif
}
STOP_LOG("write_nodal_data()", "ExodusII_IO");
}
| void libMesh::ExodusII_IO::write_nodal_data_common | ( | std::string | fname, |
| const std::vector< std::string > & | names, | ||
| bool | continuous = true |
||
| ) | [private] |
This function factors out a bunch of code which is common to the write_nodal_data() and write_nodal_data_discontinuous() functions
Definition at line 840 of file exodusII_io.C.
References _append, _verbose, libMesh::ExodusII_IO_Helper::create(), libMesh::ExodusII_IO_Helper::current_filename, exio_helper, libMesh::MeshBase::get_boundary_info(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::ExodusII_IO_Helper::initialize_nodal_variables(), libMesh::MeshInput< MeshBase >::mesh(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::ExodusII_IO_Helper::open(), libMesh::ExodusII_IO_Helper::opened_for_writing, libMesh::out, libMesh::ExodusII_IO_Helper::read_block_info(), libMesh::ExodusII_IO_Helper::read_header(), libMesh::ExodusII_IO_Helper::write_elements(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::ExodusII_IO_Helper::write_nodesets(), and libMesh::ExodusII_IO_Helper::write_sidesets().
Referenced by write_nodal_data(), and write_nodal_data_discontinuous().
{
const MeshBase & mesh = MeshOutput<MeshBase>::mesh();
// This function can be called multiple times, we only want to open
// the ExodusII file the first time it's called.
if (!exio_helper->opened_for_writing)
{
// If we're appending, open() the file with read_only=false,
// otherwise create() it and write the contents of the mesh to
// it.
if (_append)
{
exio_helper->open(fname.c_str(), /*read_only=*/false);
// If we're appending, it's not valid to call exio_helper->initialize()
// or exio_helper->initialize_nodal_variables(), but we do need to set up
// certain aspects of the Helper object itself, such as the number of nodes
// and elements. We do that by reading the header...
exio_helper->read_header();
// ...and reading the block info
exio_helper->read_block_info();
}
else
{
exio_helper->create(fname);
exio_helper->initialize(fname, mesh, !continuous);
exio_helper->write_nodal_coordinates(mesh, !continuous);
exio_helper->write_elements(mesh, !continuous);
exio_helper->write_sidesets(mesh);
exio_helper->write_nodesets(mesh);
if( (mesh.get_boundary_info().n_edge_conds() > 0) &&
_verbose )
{
libMesh::out << "Warning: Mesh contains edge boundary IDs, but these "
<< "are not supported by the ExodusII format."
<< std::endl;
}
exio_helper->initialize_nodal_variables(names);
}
}
else
{
// We are already open for writing, so check that the filename
// passed to this function matches the filename currently in use
// by the helper.
if (fname != exio_helper->current_filename)
libmesh_error_msg("Error! This ExodusII_IO object is already associated with file: " \
<< exio_helper->current_filename \
<< ", cannot use it with requested file: " \
<< fname);
}
}
| void libMesh::ExodusII_IO::write_nodal_data_discontinuous | ( | const std::string & | fname, |
| const std::vector< Number > & | soln, | ||
| const std::vector< std::string > & | names | ||
| ) |
Write out a discontinuous nodal solution.
Definition at line 774 of file exodusII_io.C.
References _timestep, std::abs(), libMesh::MeshBase::active_elements_begin(), libMesh::MeshBase::active_elements_end(), end, exio_helper, libMesh::ExodusII_IO_Helper::get_complex_names(), libMesh::MeshInput< MeshBase >::mesh(), libMesh::ParallelObject::processor_id(), libMesh::START_LOG(), write_nodal_data_common(), and libMesh::ExodusII_IO_Helper::write_nodal_values().
Referenced by write_discontinuous_exodusII().
{
START_LOG("write_nodal_data_discontinuous()", "ExodusII_IO");
const MeshBase & mesh = MeshOutput<MeshBase>::mesh();
int num_vars = cast_int<int>(names.size());
int num_nodes = 0;
MeshBase::const_element_iterator it = mesh.active_elements_begin();
const MeshBase::const_element_iterator end = mesh.active_elements_end();
for ( ; it != end; ++it)
num_nodes += (*it)->n_nodes();
#ifdef LIBMESH_USE_COMPLEX_NUMBERS
std::vector<std::string> complex_names = exio_helper->get_complex_names(names);
// Call helper function for opening/initializing data, giving it the
// complex variable names
this->write_nodal_data_common(fname, complex_names, /*continuous=*/false);
#else
// Call helper function for opening/initializing data
this->write_nodal_data_common(fname, names, /*continuous=*/false);
#endif
if (mesh.processor_id())
{
STOP_LOG("write_nodal_data_discontinuous()", "ExodusII_IO");
return;
}
for (int c=0; c<num_vars; c++)
{
#ifdef LIBMESH_USE_COMPLEX_NUMBERS
std::vector<Real> real_parts(num_nodes);
std::vector<Real> imag_parts(num_nodes);
std::vector<Real> magnitudes(num_nodes);
for (int i=0; i<num_nodes; ++i)
{
real_parts[i] = soln[i*num_vars + c].real();
imag_parts[i] = soln[i*num_vars + c].imag();
magnitudes[i] = std::abs(soln[i*num_vars + c]);
}
exio_helper->write_nodal_values(3*c+1,real_parts,_timestep);
exio_helper->write_nodal_values(3*c+2,imag_parts,_timestep);
exio_helper->write_nodal_values(3*c+3,magnitudes,_timestep);
#else
// Copy out this variable's solution
std::vector<Number> cur_soln(num_nodes);
for (int i=0; i<num_nodes; i++)
cur_soln[i] = soln[i*num_vars + c];
exio_helper->write_nodal_values(c+1,cur_soln,_timestep);
#endif
}
STOP_LOG("write_nodal_data_discontinuous()", "ExodusII_IO");
}
| void libMesh::ExodusII_IO::write_timestep | ( | const std::string & | fname, |
| const EquationSystems & | es, | ||
| const int | timestep, | ||
| const Real | time | ||
| ) |
Writes out the solution at a specific timestep.
| timestep | The timestep to write out, should be _1_ indexed. |
Definition at line 718 of file exodusII_io.C.
References _timestep, exio_helper, libMesh::ParallelObject::processor_id(), libMesh::MeshOutput< MeshBase >::write_equation_systems(), and libMesh::ExodusII_IO_Helper::write_timestep().
{
_timestep = timestep;
write_equation_systems(fname,es);
if(MeshOutput<MeshBase>::mesh().processor_id())
return;
exio_helper->write_timestep(timestep, time);
}
bool libMesh::ExodusII_IO::_allow_empty_variables [private] |
If true, _output_variables is allowed to remain empty. If false, if _output_variables is empty it will be populated with a complete list of all variables By default, calling set_output_variables() sets this flag to true, but it provides an override.
Definition at line 268 of file exodusII_io.h.
Referenced by set_output_variables(), and write_nodal_data().
bool libMesh::ExodusII_IO::_append [private] |
Default false. If true, files will be opened with EX_WRITE rather than created from scratch when writing.
Definition at line 253 of file exodusII_io.h.
Referenced by append(), write(), and write_nodal_data_common().
const Parallel::Communicator& libMesh::ParallelObject::_communicator [protected, inherited] |
Definition at line 104 of file parallel_object.h.
Referenced by libMesh::EquationSystems::build_solution_vector(), libMesh::ParallelObject::comm(), libMesh::EquationSystems::get_solution(), libMesh::ParallelObject::n_processors(), libMesh::ParallelObject::operator=(), and libMesh::ParallelObject::processor_id().
const bool libMesh::MeshOutput< MeshBase >::_is_parallel_format [protected, inherited] |
Flag specifying whether this format is parallel-capable. If this is false (default) I/O is only permitted when the mesh has been serialized.
Definition at line 126 of file mesh_output.h.
Referenced by libMesh::FroIO::write(), libMesh::DivaIO::write(), libMesh::PostscriptIO::write(), and libMesh::EnsightIO::write().
std::vector<std::string> libMesh::ExodusII_IO::_output_variables [private] |
The names of the variables to be output. If this is empty then all variables are output.
Definition at line 247 of file exodusII_io.h.
Referenced by set_output_variables(), write_element_data(), and write_nodal_data().
int libMesh::ExodusII_IO::_timestep [private] |
Stores the current value of the timestep when calling ExodusII_IO::write_timestep().
Definition at line 236 of file exodusII_io.h.
Referenced by write_element_data(), write_global_data(), write_nodal_data(), write_nodal_data_discontinuous(), and write_timestep().
bool libMesh::ExodusII_IO::_verbose [private] |
should we be verbose?
Definition at line 241 of file exodusII_io.h.
Referenced by verbose(), write(), and write_nodal_data_common().
std::vector<bool> libMesh::MeshInput< MeshBase >::elems_of_dimension [protected, inherited] |
A vector of bools describing what dimension elements have been encountered when reading a mesh.
Definition at line 100 of file mesh_input.h.
Referenced by libMesh::GMVIO::_read_one_cell(), libMesh::UNVIO::elements_in(), libMesh::UNVIO::max_elem_dimension_seen(), libMesh::AbaqusIO::max_elem_dimension_seen(), libMesh::AbaqusIO::read(), libMesh::Nemesis_IO::read(), read(), libMesh::GMVIO::read(), libMesh::VTKIO::read(), libMesh::AbaqusIO::read_elements(), libMesh::UCDIO::read_implementation(), libMesh::UNVIO::read_implementation(), libMesh::LegacyXdrIO::read_mesh(), and libMesh::XdrIO::read_serialized_connectivity().
Only attempt to instantiate an ExodusII helper class if the Exodus API is defined. This class will have no functionality when LIBMESH_HAVE_EXODUS_API is not defined.
Definition at line 229 of file exodusII_io.h.
Referenced by copy_elemental_solution(), copy_nodal_solution(), get_elem_var_names(), get_nodal_var_names(), get_num_time_steps(), get_time_steps(), read(), set_coordinate_offset(), use_mesh_dimension_instead_of_spatial_dimension(), verbose(), write(), write_element_data(), write_global_data(), write_information_records(), write_nodal_data(), write_nodal_data_common(), write_nodal_data_discontinuous(), write_timestep(), and ~ExodusII_IO().