#include <mesh_function.h>
Public Member Functions | |
MeshFunction (const EquationSystems &eqn_systems, const NumericVector< Number > &vec, const DofMap &dof_map, const std::vector< unsigned int > &vars, const FunctionBase< Number > *master=nullptr) | |
MeshFunction (const EquationSystems &eqn_systems, const NumericVector< Number > &vec, const DofMap &dof_map, const unsigned int var, const FunctionBase< Number > *master=nullptr) | |
MeshFunction (MeshFunction &&)=delete | |
MeshFunction (const MeshFunction &)=delete | |
MeshFunction & | operator= (const MeshFunction &)=delete |
MeshFunction & | operator= (MeshFunction &&)=delete |
~MeshFunction () | |
virtual void | init () override |
void | init (const Trees::BuildType point_locator_build_type) |
virtual void | clear () override |
virtual std::unique_ptr< FunctionBase< Number > > | clone () const override |
Number | operator() (const Point &p, const Real time=0.) override |
std::map< const Elem *, Number > | discontinuous_value (const Point &p, const Real time=0.) |
Gradient | gradient (const Point &p, const Real time=0.) |
std::map< const Elem *, Gradient > | discontinuous_gradient (const Point &p, const Real time=0.) |
Tensor | hessian (const Point &p, const Real time=0.) |
void | operator() (const Point &p, const Real time, DenseVector< Number > &output) override |
void | operator() (const Point &p, const Real time, DenseVector< Number > &output, const std::set< subdomain_id_type > *subdomain_ids) |
void | discontinuous_value (const Point &p, const Real time, std::map< const Elem *, DenseVector< Number >> &output) |
void | discontinuous_value (const Point &p, const Real time, std::map< const Elem *, DenseVector< Number >> &output, const std::set< subdomain_id_type > *subdomain_ids) |
void | gradient (const Point &p, const Real time, std::vector< Gradient > &output, const std::set< subdomain_id_type > *subdomain_ids=nullptr) |
void | discontinuous_gradient (const Point &p, const Real time, std::map< const Elem *, std::vector< Gradient >> &output) |
void | discontinuous_gradient (const Point &p, const Real time, std::map< const Elem *, std::vector< Gradient >> &output, const std::set< subdomain_id_type > *subdomain_ids) |
void | hessian (const Point &p, const Real time, std::vector< Tensor > &output, const std::set< subdomain_id_type > *subdomain_ids=nullptr) |
const PointLocatorBase & | get_point_locator (void) const |
void | enable_out_of_mesh_mode (const DenseVector< Number > &value) |
void | enable_out_of_mesh_mode (const Number &value) |
void | disable_out_of_mesh_mode (void) |
void | set_point_locator_tolerance (Real tol) |
void | unset_point_locator_tolerance () |
void | operator() (const Point &p, DenseVector< Number > &output) |
virtual Number | component (unsigned int i, const Point &p, Real time=0.) |
bool | initialized () const |
void | set_is_time_dependent (bool is_time_dependent) |
bool | is_time_dependent () const |
const Parallel::Communicator & | comm () const |
processor_id_type | n_processors () const |
processor_id_type | processor_id () const |
Protected Member Functions | |
const Elem * | find_element (const Point &p, const std::set< subdomain_id_type > *subdomain_ids=nullptr) const |
std::set< const Elem * > | find_elements (const Point &p, const std::set< subdomain_id_type > *subdomain_ids=nullptr) const |
Protected Attributes | |
const EquationSystems & | _eqn_systems |
const NumericVector< Number > & | _vector |
const DofMap & | _dof_map |
const std::vector< unsigned int > | _system_vars |
PointLocatorBase * | _point_locator |
bool | _out_of_mesh_mode |
DenseVector< Number > | _out_of_mesh_value |
const FunctionBase * | _master |
bool | _initialized |
bool | _is_time_dependent |
const Parallel::Communicator & | _communicator |
This class provides function-like objects for data distributed over a mesh.
Definition at line 53 of file mesh_function.h.
libMesh::MeshFunction::MeshFunction | ( | const EquationSystems & | eqn_systems, |
const NumericVector< Number > & | vec, | ||
const DofMap & | dof_map, | ||
const std::vector< unsigned int > & | vars, | ||
const FunctionBase< Number > * | master = nullptr |
||
) |
Constructor for mesh based functions with vectors as return value. Optionally takes a master function. If the MeshFunction is to be evaluated outside of the local partition of the mesh, then both the mesh in eqn_systems
and the coefficient vector vec
should be serialized.
Definition at line 43 of file mesh_function.C.
Referenced by clone().
libMesh::MeshFunction::MeshFunction | ( | const EquationSystems & | eqn_systems, |
const NumericVector< Number > & | vec, | ||
const DofMap & | dof_map, | ||
const unsigned int | var, | ||
const FunctionBase< Number > * | master = nullptr |
||
) |
Constructor for mesh based functions with a number as return value. Optionally takes a master function. If the MeshFunction is to be evaluated outside of the local partition of the mesh, then both the mesh in eqn_systems
and the coefficient vector vec
should be serialized.
Definition at line 62 of file mesh_function.C.
|
delete |
This class is sometimes responsible for cleaning up the _point_locator, so it can't be default (shallow) copy constructed or move constructed.
|
delete |
libMesh::MeshFunction::~MeshFunction | ( | ) |
Destructor.
Definition at line 88 of file mesh_function.C.
References libMesh::FunctionBase< Number >::_master, and _point_locator.
|
overridevirtual |
Clears the function.
Reimplemented from libMesh::FunctionBase< Number >.
Definition at line 148 of file mesh_function.C.
References libMesh::FunctionBase< Number >::_initialized, libMesh::FunctionBase< Number >::_master, and _point_locator.
|
overridevirtual |
The new copy uses the original as a master function to enable simultaneous evaluations of the copies in different threads.
Implements libMesh::FunctionBase< Number >.
Definition at line 161 of file mesh_function.C.
References _dof_map, _eqn_systems, _system_vars, _vector, libMesh::FunctionBase< Output >::init(), libMesh::FunctionBase< Number >::initialized(), and MeshFunction().
|
inlineinherited |
Parallel::Communicator
object used by this mesh. Definition at line 89 of file parallel_object.h.
References libMesh::ParallelObject::_communicator.
Referenced by libMesh::__libmesh_petsc_diff_solver_jacobian(), libMesh::__libmesh_petsc_diff_solver_monitor(), libMesh::__libmesh_petsc_diff_solver_residual(), libMesh::__libmesh_tao_equality_constraints(), libMesh::__libmesh_tao_equality_constraints_jacobian(), libMesh::__libmesh_tao_gradient(), libMesh::__libmesh_tao_hessian(), libMesh::__libmesh_tao_inequality_constraints(), libMesh::__libmesh_tao_inequality_constraints_jacobian(), libMesh::__libmesh_tao_objective(), libMesh::MeshRefinement::_coarsen_elements(), libMesh::ExactSolution::_compute_error(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::BoundaryInfo::_find_id_maps(), 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::MeshRefinement::_smooth_flags(), libMesh::PetscDMWrapper::add_dofs_helper(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::ImplicitSystem::add_matrix(), libMesh::System::add_vector(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Modification::all_tri(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::FEMSystem::assemble_qoi(), libMesh::MeshCommunication::assign_global_indices(), libMesh::DofMap::attach_matrix(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::PetscDMWrapper::build_section(), libMesh::PetscDMWrapper::build_sf(), libMesh::MeshBase::cache_elem_dims(), libMesh::System::calculate_norm(), libMesh::DofMap::check_dirichlet_bcid_consistency(), libMesh::PetscDMWrapper::check_section_n_dofs(), 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::ExodusII_IO::copy_elemental_solution(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::MeshTools::create_bounding_box(), libMesh::MeshTools::create_nodal_bounding_box(), libMesh::MeshRefinement::create_parent_error_vector(), libMesh::MeshTools::create_processor_bounding_box(), libMesh::MeshTools::create_subdomain_bounding_box(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), DMlibMeshFunction(), DMlibMeshJacobian(), DMlibMeshSetSystem_libMesh(), DMVariableBounds_libMesh(), libMesh::MeshRefinement::eliminate_unrefined_patches(), libMesh::EpetraVector< T >::EpetraVector(), 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::DofMap::get_info(), libMesh::ImplicitSystem::get_linear_solver(), libMesh::LocationMap< T >::init(), libMesh::TimeSolver::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::PetscDMWrapper::init_and_attach_petscdm(), libMesh::EigenSystem::init_data(), libMesh::EigenSystem::init_matrices(), libMesh::OptimizationSystem::initialize_equality_constraints_storage(), libMesh::OptimizationSystem::initialize_inequality_constraints_storage(), libMesh::MeshTools::libmesh_assert_consistent_distributed(), libMesh::MeshTools::libmesh_assert_consistent_distributed_nodes(), libMesh::MeshTools::libmesh_assert_contiguous_dof_ids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_new_node_procids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_topology_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_boundary_ids(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_flags(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_object_ids(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_p_levels(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::MeshTools::libmesh_assert_valid_unique_ids(), libMesh::libmesh_petsc_snes_fd_residual(), libMesh::libmesh_petsc_snes_jacobian(), libMesh::libmesh_petsc_snes_mffd_residual(), libMesh::libmesh_petsc_snes_postcheck(), libMesh::libmesh_petsc_snes_residual(), libMesh::libmesh_petsc_snes_residual_helper(), libMesh::MeshRefinement::limit_level_mismatch_at_edge(), libMesh::MeshRefinement::limit_level_mismatch_at_node(), libMesh::MeshRefinement::limit_overrefined_boundary(), libMesh::MeshRefinement::limit_underrefined_boundary(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshCommunication::make_elems_parallel_consistent(), libMesh::MeshRefinement::make_flags_parallel_consistent(), libMesh::MeshCommunication::make_new_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_new_nodes_parallel_consistent(), libMesh::MeshCommunication::make_node_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_unique_ids_parallel_consistent(), libMesh::MeshCommunication::make_nodes_parallel_consistent(), libMesh::MeshCommunication::make_p_levels_parallel_consistent(), libMesh::MeshRefinement::make_refinement_compatible(), libMesh::FEMSystem::mesh_position_set(), libMesh::DistributedMesh::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::BoundaryInfo::n_shellface_conds(), libMesh::DistributedMesh::parallel_max_elem_id(), libMesh::DistributedMesh::parallel_max_node_id(), libMesh::ReplicatedMesh::parallel_max_unique_id(), libMesh::DistributedMesh::parallel_max_unique_id(), libMesh::DistributedMesh::parallel_n_elem(), libMesh::DistributedMesh::parallel_n_nodes(), libMesh::SparsityPattern::Build::parallel_sync(), libMesh::MeshTools::paranoid_n_levels(), libMesh::petsc_auto_fieldsplit(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::MeshBase::prepare_for_use(), libMesh::Nemesis_IO::read(), libMesh::XdrIO::read(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_header(), 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_helper(), 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::DistributedMesh::renumber_dof_objects(), libMesh::CheckpointIO::select_split_config(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::PetscDiffSolver::setup_petsc_data(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::split_mesh(), libMesh::MeshBase::subdomain_ids(), libMesh::BoundaryInfo::sync(), libMesh::MeshRefinement::test_level_one(), libMesh::MeshRefinement::test_unflagged(), libMesh::MeshTools::total_weight(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::NameBasedIO::write(), libMesh::XdrIO::write(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs_helper(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), and libMesh::XdrIO::write_serialized_nodesets().
|
inlinevirtualinherited |
i
at coordinate p
and time time
.Definition at line 228 of file function_base.h.
void libMesh::MeshFunction::disable_out_of_mesh_mode | ( | void | ) |
Disables out-of-mesh mode. This is also the default.
Definition at line 788 of file mesh_function.C.
References _out_of_mesh_mode, _point_locator, libMesh::PointLocatorBase::disable_out_of_mesh_mode(), and libMesh::FunctionBase< Number >::initialized().
std::map< const Elem *, Gradient > libMesh::MeshFunction::discontinuous_gradient | ( | const Point & | p, |
const Real | time = 0. |
||
) |
p
and for time
. map is from element to Gradient and accounts for double defined values on faces if the gradient is discontinuous Definition at line 209 of file mesh_function.C.
References libMesh::FunctionBase< Number >::initialized().
Referenced by discontinuous_gradient().
void libMesh::MeshFunction::discontinuous_gradient | ( | const Point & | p, |
const Real | time, | ||
std::map< const Elem *, std::vector< Gradient >> & | output | ||
) |
Similar to gradient, but with the difference that multiple values on faces are explicitly permitted. This is useful for evaluating gradients on faces where the values to the left and right are different.
Definition at line 508 of file mesh_function.C.
References discontinuous_gradient().
void libMesh::MeshFunction::discontinuous_gradient | ( | const Point & | p, |
const Real | time, | ||
std::map< const Elem *, std::vector< Gradient >> & | output, | ||
const std::set< subdomain_id_type > * | subdomain_ids | ||
) |
Similar to gradient, but with the difference that multiple values on faces are explicitly permitted. This is useful for evaluating gradients on faces where the values to the left and right are different.
Definition at line 517 of file mesh_function.C.
References _dof_map, _out_of_mesh_mode, _out_of_mesh_value, _system_vars, libMesh::TypeVector< T >::add_scaled(), libMesh::FEGenericBase< OutputType >::build(), libMesh::DofMap::dof_indices(), find_elements(), libMesh::FunctionBase< Number >::initialized(), libMesh::invalid_uint, libMesh::FEInterface::inverse_map(), libMesh::DenseVector< T >::size(), and libMesh::DofMap::variable_type().
std::map< const Elem *, Number > libMesh::MeshFunction::discontinuous_value | ( | const Point & | p, |
const Real | time = 0. |
||
) |
p
and for time
.The std::map is from element to Number and accounts for doubly-defined values on faces if discontinuous variables are used.
Definition at line 184 of file mesh_function.C.
References libMesh::FunctionBase< Number >::initialized().
Referenced by discontinuous_value().
void libMesh::MeshFunction::discontinuous_value | ( | const Point & | p, |
const Real | time, | ||
std::map< const Elem *, DenseVector< Number >> & | output | ||
) |
Similar to operator() with the same parameter list, but with the difference that multiple values on faces are explicitly permitted. This is useful for discontinuous shape functions that are evaluated on faces.
Definition at line 334 of file mesh_function.C.
References discontinuous_value().
void libMesh::MeshFunction::discontinuous_value | ( | const Point & | p, |
const Real | time, | ||
std::map< const Elem *, DenseVector< Number >> & | output, | ||
const std::set< subdomain_id_type > * | subdomain_ids | ||
) |
Similar to operator() with the same parameter list, but with the difference that multiple values on faces are explicitly permitted. This is useful for discontinuous shape functions that are evaluated on faces.
Build an FEComputeData that contains both input and output data for the specific compute_data method.
Definition at line 343 of file mesh_function.C.
References _dof_map, _eqn_systems, _out_of_mesh_mode, _out_of_mesh_value, _system_vars, _vector, libMesh::FEInterface::compute_data(), data, libMesh::DofMap::dof_indices(), find_elements(), libMesh::FunctionBase< Number >::initialized(), libMesh::invalid_uint, libMesh::FEInterface::inverse_map(), libMesh::DenseVector< T >::size(), value, and libMesh::DofMap::variable_type().
void libMesh::MeshFunction::enable_out_of_mesh_mode | ( | const DenseVector< Number > & | value | ) |
Enables out-of-mesh mode. In this mode, if asked for a point that is not contained in any element, the MeshFunction
will return the given value
instead of crashing. This mode is off per default. If you use a master mesh function and you want to enable this mode, you will have to enable it for the master mesh function as well and for all mesh functions that have the same master mesh function. You may, however, specify different values.
Definition at line 773 of file mesh_function.C.
References _out_of_mesh_mode, _out_of_mesh_value, _point_locator, libMesh::PointLocatorBase::enable_out_of_mesh_mode(), libMesh::FunctionBase< Number >::initialized(), and value.
Referenced by enable_out_of_mesh_mode().
void libMesh::MeshFunction::enable_out_of_mesh_mode | ( | const Number & | value | ) |
Enables out-of-mesh mode. In this mode, if asked for a point that is not contained in any element, the MeshFunction
will return the given value
instead of crashing. This mode is off per default. If you use a master mesh function and you want to enable this mode, you will have to enable it for the master mesh function as well and for all mesh functions that have the same master mesh function. You may, however, specify different values.
Definition at line 781 of file mesh_function.C.
References enable_out_of_mesh_mode(), and value.
|
protected |
Helper function to reduce code duplication
Definition at line 674 of file mesh_function.C.
References libMesh::FunctionBase< Number >::_master, _out_of_mesh_mode, _point_locator, _vector, libMesh::Elem::find_point_neighbors(), libMesh::ParallelObject::processor_id(), libMesh::DofObject::processor_id(), libMesh::SERIAL, and libMesh::NumericVector< T >::type().
Referenced by gradient(), hessian(), and operator()().
|
protected |
p
.This is similar to find_element()
but covers cases where p
is on the boundary.
Definition at line 718 of file mesh_function.C.
References libMesh::FunctionBase< Number >::_master, _out_of_mesh_mode, _point_locator, _vector, libMesh::ParallelObject::processor_id(), libMesh::SERIAL, and libMesh::NumericVector< T >::type().
Referenced by discontinuous_gradient(), and discontinuous_value().
const PointLocatorBase & libMesh::MeshFunction::get_point_locator | ( | void | ) | const |
PointLocator
object, for use elsewhere.MeshFunction
object must be initialized before this is called. Definition at line 767 of file mesh_function.C.
References _point_locator, and libMesh::FunctionBase< Number >::initialized().
p
and for time
, which defaults to zero. Definition at line 199 of file mesh_function.C.
References libMesh::FunctionBase< Number >::initialized().
Referenced by libMesh::ExactErrorEstimator::find_squared_element_error().
void libMesh::MeshFunction::gradient | ( | const Point & | p, |
const Real | time, | ||
std::vector< Gradient > & | output, | ||
const std::set< subdomain_id_type > * | subdomain_ids = nullptr |
||
) |
Computes gradients at coordinate p
and for time time
, which defaults to zero, optionally restricting the point to the passed subdomain_ids. This is useful in cases where there are multiple dimensioned elements, for example.
Definition at line 431 of file mesh_function.C.
References _dof_map, _out_of_mesh_mode, _out_of_mesh_value, _system_vars, libMesh::TypeVector< T >::add_scaled(), libMesh::FEGenericBase< OutputType >::build(), libMesh::Elem::dim(), libMesh::DofMap::dof_indices(), find_element(), libMesh::FunctionBase< Number >::initialized(), libMesh::invalid_uint, libMesh::FEInterface::inverse_map(), libMesh::DenseVector< T >::size(), and libMesh::DofMap::variable_type().
p
and for time
, which defaults to zero. Definition at line 225 of file mesh_function.C.
References libMesh::FunctionBase< Number >::initialized().
Referenced by libMesh::ExactErrorEstimator::find_squared_element_error().
void libMesh::MeshFunction::hessian | ( | const Point & | p, |
const Real | time, | ||
std::vector< Tensor > & | output, | ||
const std::set< subdomain_id_type > * | subdomain_ids = nullptr |
||
) |
Computes gradients at coordinate p
and for time time
, which defaults to zero, optionally restricting the point to the passed subdomain_ids. This is useful in cases where there are multiple dimensioned elements, for example.
Definition at line 597 of file mesh_function.C.
References _dof_map, _out_of_mesh_mode, _out_of_mesh_value, _system_vars, libMesh::TypeTensor< T >::add_scaled(), libMesh::FEGenericBase< OutputType >::build(), libMesh::Elem::dim(), libMesh::DofMap::dof_indices(), find_element(), libMesh::FunctionBase< Number >::initialized(), libMesh::invalid_uint, libMesh::FEInterface::inverse_map(), libMesh::DenseVector< T >::size(), and libMesh::DofMap::variable_type().
|
inlineoverridevirtual |
Override the FunctionBase::init() member function by calling our own and specifying the Trees::NODES method. specifies the method to use when building a PointLocator
Reimplemented from libMesh::FunctionBase< Number >.
Definition at line 110 of file mesh_function.h.
References init(), and libMesh::Trees::NODES.
Referenced by init().
void libMesh::MeshFunction::init | ( | const Trees::BuildType | point_locator_build_type | ) |
The actual initialization process. Takes an optional argument which specifies the method to use when building a PointLocator
Definition at line 98 of file mesh_function.C.
References _eqn_systems, libMesh::FunctionBase< Number >::_initialized, libMesh::FunctionBase< Number >::_master, _point_locator, _system_vars, libMesh::EquationSystems::get_mesh(), mesh, and libMesh::MeshBase::sub_point_locator().
|
inlineinherited |
true
when this object is properly initialized and ready for use, false
otherwise. Definition at line 206 of file function_base.h.
Referenced by clone(), disable_out_of_mesh_mode(), discontinuous_gradient(), discontinuous_value(), enable_out_of_mesh_mode(), get_point_locator(), gradient(), hessian(), and operator()().
|
inlineinherited |
true
when the function this object represents is actually time-dependent, false
otherwise. Definition at line 220 of file function_base.h.
|
inlineinherited |
Definition at line 95 of file parallel_object.h.
References libMesh::ParallelObject::_communicator, and libMesh::Parallel::Communicator::size().
Referenced by libMesh::BoundaryInfo::_find_id_maps(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::DistributedMesh::add_elem(), libMesh::DistributedMesh::add_node(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::FEMSystem::assembly(), libMesh::AztecLinearSolver< T >::AztecLinearSolver(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::DistributedMesh::clear(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::UnstructuredMesh::create_pid_mesh(), libMesh::MeshTools::create_processor_bounding_box(), 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::SystemSubsetBySubdomain::init(), libMesh::PetscDMWrapper::init_and_attach_petscdm(), libMesh::Nemesis_IO_Helper::initialize(), libMesh::DistributedMesh::insert_elem(), libMesh::MeshTools::libmesh_assert_contiguous_dof_ids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_new_node_procids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_topology_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_boundary_ids(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::DofMap::local_variable_indices(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshBase::n_active_elem_on_proc(), libMesh::MeshBase::n_elem_on_proc(), libMesh::MeshBase::n_nodes_on_proc(), libMesh::MeshBase::partition(), libMesh::PetscLinearSolver< T >::PetscLinearSolver(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::NameBasedIO::read(), libMesh::Nemesis_IO::read(), libMesh::CheckpointIO::read(), libMesh::CheckpointIO::read_connectivity(), libMesh::XdrIO::read_header(), libMesh::CheckpointIO::read_nodes(), libMesh::System::read_parallel_data(), libMesh::System::read_SCALAR_dofs(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::System::read_serialized_vector(), libMesh::DistributedMesh::renumber_dof_objects(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::DistributedMesh::update_parallel_id_counts(), libMesh::GMVIO::write_binary(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::System::write_parallel_data(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs_helper(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), and libMesh::XdrIO::write_serialized_nodesets().
|
inlineinherited |
Evaluation function for time-independent vector-valued functions. Sets output values in the passed-in output
DenseVector.
Definition at line 241 of file function_base.h.
p
and for time
, which defaults to zero. Implements libMesh::FunctionBase< Number >.
Definition at line 174 of file mesh_function.C.
References libMesh::FunctionBase< Number >::initialized().
Referenced by operator()().
|
overridevirtual |
Computes values at coordinate p
and for time time
, which defaults to zero, optionally restricting the point to the passed subdomain_ids. This is useful in cases where there are multiple dimensioned elements, for example.
Implements libMesh::FunctionBase< Number >.
Definition at line 236 of file mesh_function.C.
References operator()().
void libMesh::MeshFunction::operator() | ( | const Point & | p, |
const Real | time, | ||
DenseVector< Number > & | output, | ||
const std::set< subdomain_id_type > * | subdomain_ids | ||
) |
Computes values at coordinate p
and for time time
, restricting the point to the passed subdomain_ids. This is useful in cases where there are multiple dimensioned elements, for example.
Build an FEComputeData that contains both input and output data for the specific compute_data method.
Definition at line 243 of file mesh_function.C.
References _dof_map, _eqn_systems, _out_of_mesh_mode, _out_of_mesh_value, _system_vars, _vector, libMesh::FEInterface::compute_data(), data, libMesh::Elem::dim(), libMesh::DofMap::dof_indices(), find_element(), libMesh::FunctionBase< Number >::initialized(), libMesh::invalid_uint, libMesh::FEInterface::inverse_map(), libMesh::DenseVector< T >::resize(), libMesh::DenseVector< T >::size(), value, and libMesh::DofMap::variable_type().
|
delete |
This class contains const references so it can't be assigned.
|
delete |
|
inlineinherited |
Definition at line 101 of file parallel_object.h.
References libMesh::ParallelObject::_communicator, and libMesh::Parallel::Communicator::rank().
Referenced by libMesh::BoundaryInfo::_find_id_maps(), libMesh::EquationSystems::_read_impl(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::DistributedMesh::add_elem(), libMesh::BoundaryInfo::add_elements(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::DistributedMesh::add_node(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Modification::all_tri(), libMesh::FEMSystem::assembly(), libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::Nemesis_IO_Helper::build_element_and_node_maps(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::DistributedMesh::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::MeshTools::correct_node_proc_ids(), libMesh::ExodusII_IO_Helper::create(), libMesh::DistributedMesh::delete_elem(), libMesh::DistributedMesh::delete_node(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::DistributedMesh::DistributedMesh(), libMesh::DofMap::end_dof(), libMesh::DofMap::end_old_dof(), libMesh::EnsightIO::EnsightIO(), find_element(), find_elements(), 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::DofMap::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::SparsityPattern::Build::handle_vi_vj(), libMesh::SystemSubsetBySubdomain::init(), 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::DistributedMesh::insert_elem(), libMesh::DofMap::is_evaluable(), libMesh::SparsityPattern::Build::join(), libMesh::DofMap::last_dof(), libMesh::MeshTools::libmesh_assert_consistent_distributed(), libMesh::MeshTools::libmesh_assert_consistent_distributed_nodes(), libMesh::MeshTools::libmesh_assert_contiguous_dof_ids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_object_ids(), 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::BoundaryInfo::n_shellface_conds(), libMesh::SparsityPattern::Build::operator()(), libMesh::DistributedMesh::own_node(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), 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::XdrIO::read(), libMesh::CheckpointIO::read(), libMesh::ExodusII_IO_Helper::read_elem_num_map(), libMesh::ExodusII_IO_Helper::read_global_values(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_header(), 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_helper(), 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::DistributedMesh::renumber_dof_objects(), libMesh::CheckpointIO::select_split_config(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::MeshTools::total_weight(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::Parallel::Packing< T >::unpack(), libMesh::DistributedMesh::update_parallel_id_counts(), libMesh::NameBasedIO::write(), libMesh::XdrIO::write(), libMesh::CheckpointIO::write(), libMesh::EquationSystems::write(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::ExodusII_IO::write_element_data(), libMesh::ExodusII_IO_Helper::write_element_values(), libMesh::ExodusII_IO_Helper::write_elements(), libMesh::ExodusII_IO::write_global_data(), libMesh::ExodusII_IO_Helper::write_global_values(), libMesh::System::write_header(), libMesh::ExodusII_IO::write_information_records(), libMesh::ExodusII_IO_Helper::write_information_records(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::UCDIO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data_discontinuous(), libMesh::ExodusII_IO_Helper::write_nodal_values(), libMesh::Nemesis_IO_Helper::write_nodesets(), libMesh::ExodusII_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_helper(), 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::Nemesis_IO_Helper::write_sidesets(), libMesh::ExodusII_IO_Helper::write_sidesets(), libMesh::ExodusII_IO::write_timestep(), libMesh::ExodusII_IO_Helper::write_timestep(), and libMesh::ExodusII_IO::write_timestep_discontinuous().
|
inlineinherited |
Function to set whether this is a time-dependent function or not. This is intended to be only used by subclasses who cannot natively determine time-dependence. In such a case, this function should be used immediately following construction.
Definition at line 213 of file function_base.h.
void libMesh::MeshFunction::set_point_locator_tolerance | ( | Real | tol | ) |
We may want to specify a tolerance for the PointLocator to use, since in some cases the point we want to evaluate at might be slightly outside the mesh (due to numerical rounding issues, for example).
Definition at line 795 of file mesh_function.C.
References _point_locator, and libMesh::PointLocatorBase::set_close_to_point_tol().
void libMesh::MeshFunction::unset_point_locator_tolerance | ( | ) |
Turn off the user-specified PointLocator tolerance.
Definition at line 800 of file mesh_function.C.
References _point_locator, and libMesh::PointLocatorBase::unset_close_to_point_tol().
|
protectedinherited |
Definition at line 107 of file parallel_object.h.
Referenced by libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::ParallelObject::comm(), libMesh::ParallelObject::n_processors(), libMesh::ParallelObject::operator=(), and libMesh::ParallelObject::processor_id().
|
protected |
Need access to the DofMap
of the other system.
Definition at line 339 of file mesh_function.h.
Referenced by clone(), discontinuous_gradient(), discontinuous_value(), gradient(), hessian(), and operator()().
|
protected |
The equation systems handler, from which the data are gathered.
Definition at line 328 of file mesh_function.h.
Referenced by clone(), discontinuous_value(), init(), and operator()().
|
protectedinherited |
When init()
was called so that everything is ready for calls to operator()
(...), then this bool
is true.
Definition at line 180 of file function_base.h.
|
protectedinherited |
Cache whether or not this function is actually time-dependent.
Definition at line 185 of file function_base.h.
|
protectedinherited |
Const pointer to our master, initialized to nullptr
. There may be cases where multiple functions are required, but to save memory, one master handles some centralized data.
Definition at line 174 of file function_base.h.
Referenced by clear(), find_element(), find_elements(), init(), and ~MeshFunction().
|
protected |
true
if out-of-mesh mode is enabled. See enable_out_of_mesh_mode()
for more details. Default is false
.
Definition at line 357 of file mesh_function.h.
Referenced by disable_out_of_mesh_mode(), discontinuous_gradient(), discontinuous_value(), enable_out_of_mesh_mode(), find_element(), find_elements(), gradient(), hessian(), and operator()().
|
protected |
Value to return outside the mesh if out-of-mesh mode is enabled. See enable_out_of_mesh_mode()
for more details.
Definition at line 363 of file mesh_function.h.
Referenced by discontinuous_gradient(), discontinuous_value(), enable_out_of_mesh_mode(), gradient(), hessian(), and operator()().
|
protected |
A point locator is needed to locate the points in the mesh.
Definition at line 351 of file mesh_function.h.
Referenced by clear(), disable_out_of_mesh_mode(), enable_out_of_mesh_mode(), find_element(), find_elements(), get_point_locator(), init(), set_point_locator_tolerance(), unset_point_locator_tolerance(), and ~MeshFunction().
|
protected |
The indices of the variables within the other system for which data are to be gathered.
Definition at line 345 of file mesh_function.h.
Referenced by clone(), discontinuous_gradient(), discontinuous_value(), gradient(), hessian(), init(), and operator()().
|
protected |
A reference to the vector that holds the data that is to be interpolated.
Definition at line 334 of file mesh_function.h.
Referenced by clone(), discontinuous_value(), find_element(), find_elements(), and operator()().