18#include "libmesh/communicator.h"
55#ifdef MOOSE_KOKKOS_SCOPE
209 unsigned int var)
const
223 unsigned int var)
const
393#ifdef MOOSE_KOKKOS_SCOPE
394#define MakeSystemHolderMethods(SystemTypeName) \
395 KOKKOS_FUNCTION const Array<SystemTypeName> & kokkosSystems() const \
397 KOKKOS_IF_ON_HOST(return _systems_host;) \
398 return _systems_device; \
400 Array<SystemTypeName> & kokkosSystems() { return _systems_host; } \
401 KOKKOS_FUNCTION const SystemTypeName & kokkosSystem(unsigned int sys) const \
403 KOKKOS_IF_ON_HOST(return _systems_host[sys];) \
404 return _systems_device[sys]; \
406 SystemTypeName & kokkosSystem(unsigned int sys) { return _systems_host[sys]; }
408#define MakeSystemHolderMethods(SystemTypeName)
418#define MakeSystemHolder(SystemTypeName) \
419 class SystemTypeName##Holder \
422 SystemTypeName##Holder(Array<SystemTypeName> & systems) \
423 : _systems_host(systems), _systems_device(systems) \
426 SystemTypeName##Holder(const SystemTypeName##Holder & holder) \
427 : _systems_host(holder._systems_host), _systems_device(holder._systems_host) \
430 MakeSystemHolderMethods(SystemTypeName) \
432 Array<SystemTypeName> & _systems_host; \
433 const Array<SystemTypeName> _systems_device; \
dof_id_type ContiguousElementID
MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and s...
void destroy()
Free all data and reset.
The Kokkos wrapper class for PETSc matrix.
The Kokkos interface that holds the host reference of the Kokkos mesh and copies it to device during ...
The Kokkos base system class.
void clearActiveSolutionTags()
Clear the cached active solution tags.
const unsigned int _num_vars
Number of variables.
void setActiveMatrixTags(const std::set< TagID > &tags)
Set the active matrix tags.
Array< TagID > _active_matrix_tags
void sync(const TagID tag, const MemcpyType dir)
const Array< Array< dof_id_type > > & getLocalCommList() const
Get the list of local DOF indices to communicate.
KOKKOS_FUNCTION bool isResidualTagActive(TagID tag) const
Check whether a residual tag is active.
Array< unsigned int > _max_dofs_per_elem
Maximum number of DOFs per element for each variable.
Sparsity _sparsity
Matrix sparsity pattern data.
void sync(const MemcpyType dir)
Synchronize the active tagged vectors and matrices between host and device.
SystemBase & _system
Reference of the MOOSE system.
void clearActiveResidualTags()
Clear the cached active residual tags.
void sync(const std::vector< TagID > &tags, const MemcpyType dir)
Array< Array< dof_id_type > > _local_comm_list
List of DOFs to send and receive.
const SystemBase & getSystem() const
const Array< Array< dof_id_type > > & getGhostCommList() const
Get the list of ghost DOF indices to communicate.
void setActiveResidualTags(const std::set< TagID > &tags)
Set the active residual tags.
void clearActiveMatrixTags()
Clear the cached active matrix tags.
KOKKOS_FUNCTION dof_id_type getElemLocalDofIndex(ContiguousElementID elem, unsigned int i, unsigned int var) const
Get the local DOF index of a variable for an element.
Array< unsigned int > _active_variables
List of active variable numbers.
const Parallel::Communicator & getComm() const
Get the libMesh communicator.
KOKKOS_FUNCTION dof_id_type getElemGlobalDofIndex(ContiguousElementID elem, unsigned int i, unsigned int var) const
Get the global DOF index of a variable for an element.
KOKKOS_FUNCTION bool isVariableActive(unsigned int var, ContiguousSubdomainID subdomain) const
Check whether a variable is active on a subdomain.
const libMesh::DofMap & getDofMap() const
Get the libMesh DOF map.
KOKKOS_FUNCTION Real & getVectorDofValue(const dof_id_type dof, const TagID tag) const
Get the DOF value of a tagged vector.
Array< TagID > _active_solution_tags
List of active tags.
KOKKOS_FUNCTION Real & getMatrixValue(dof_id_type row, dof_id_type col, TagID tag) const
Get an entry from a tagged matrix.
KOKKOS_FUNCTION Vector & getVector(TagID tag) const
Get a tagged Kokkos vector.
SystemBase & getSystem()
Get the MOOSE system.
Array2D< bool > _var_subdomain_active
Whether each variable is active on subdomains.
System(SystemBase &system)
Constructor.
Array< dof_id_type > _local_to_global_dof_index
Map from local DOF index to global DOF index.
void setupVariables()
Setup variable data.
System(const System &src)=default
Defaulted copy constructor Used by FESystem in mixed FE+FV simulations.
KOKKOS_FUNCTION Matrix & getMatrix(TagID tag) const
Get a tagged Kokkos matrix.
Array< Array2D< dof_id_type > > _local_elem_dof_index
Local element DOF indices of each variable.
void setActiveVariables(const std::set< MooseVariableFieldBase * > &vars)
Set the active variables.
const dof_id_type _num_ghost_dofs
Number of ghost DOFs.
const MooseMesh & _mesh
Reference of the MOOSE mesh.
KOKKOS_FUNCTION bool isMatrixTagActive(TagID tag) const
Check whether a matrix tag is active.
const dof_id_type _num_local_dofs
Number of local DOFs.
Array< TagID > _active_residual_tags
Array< Vector > _vectors
Kokkos vectors and matrices on device.
void setupDofs()
Setup DOF data.
Array< bool > _matrix_tag_active
void setActiveSolutionTags(const std::set< TagID > &tags)
Set the active solution tags.
Array< Array< dof_id_type > > _ghost_comm_list
const libMesh::DofMap & _dof_map
Reference of the libMesh DOF map.
void sync(const std::set< TagID > &tags, const MemcpyType dir)
Synchronize the specified tagged vectors between host and device.
KOKKOS_FUNCTION dof_id_type localToGlobalDofIndex(dof_id_type dof) const
Get the global DOF index of a local DOF index.
Array< bool > _residual_tag_active
Flag whether each tag is active.
KOKKOS_FUNCTION dof_id_type getNumLocalDofs() const
Get the number of local DOFs.
Array< Matrix > _matrices
const Sparsity & getSparsity() const
Get the sparisty pattern data.
void clearActiveVariables()
Clear the cached active variables.
KOKKOS_FUNCTION dof_id_type getNumGhostDofs() const
Get the number of ghost DOFs.
const Parallel::Communicator & _comm
Reference of the libMesh communicator.
void setupSparsity()
Setup sparsity data.
The Kokkos wrapper class for PETSc vector.
Interface for objects interacting with the PerfGraph.
Base class for a system (of equations)
MakeSystemHolder(FESystem)
MemcpyType
The enumerator that dictates the memory copy direction.
CSR format sparsity data.
Array< PetscInt > col_idx
Array< PetscInt > row_idx
Array< PetscInt > row_ptr