|
FEAT 3
Finite Element Analysis Toolbox
|
Algebraic DOF Partitioning implementation. More...
#include <alg_dof_parti.hpp>
Public Types | |
| typedef Intern::ADPAux< IndexVectorType > | ADPAuxType |
| auxiliary helper class type More... | |
| typedef LAFEM::DenseVector< DataType, IndexType > | BufferVectorType |
| the type for buffers used by our mirrors More... | |
| typedef LocalVectorType::DataType | DataType |
| our data type More... | |
| typedef LAFEM::VectorMirror< DataType, IndexType > | DoneeMirrorType |
| type of mirror for neighbor donee owned dof indices More... | |
| typedef Global::Gate< LocalVectorType, MirrorType > | GateType |
| the global gate type More... | |
| typedef Global::Vector< LocalVectorType, MirrorType > | GlobalVectorType |
| the global vector type More... | |
| typedef LocalVectorType::IndexType | IndexType |
| our index type More... | |
| typedef LocalVectorType::template ContainerTypeByDI< IndexType, IndexType > | IndexVectorType |
| the index vector type, this one is required for internal computations More... | |
| typedef LocalVector_ | LocalVectorType |
| the local vector type More... | |
| typedef Mirror_ | MirrorType |
| the vector mirror type More... | |
| typedef MirrorType | OwnedMirrorType |
| type of mirror for owned local dof indices More... | |
| typedef MirrorType | OwnerMirrorType |
| type of mirror for neighbor owner local dof indices More... | |
Public Member Functions | |
| AlgDofParti () | |
| default constructor More... | |
| AlgDofParti (const AlgDofParti &)=delete | |
| no copy, no problems | |
| virtual | ~AlgDofParti ()=default |
| virtual destructor | |
| void | assemble_allgather (bool yes_i_really_want_to_do_this=false) |
| Assembles the required data for the AlgDofPartiSystem::apply() function. More... | |
| void | assemble_by_gate (const GateType &gate, Index extra_local=0u, Index extra_shared=0u) |
| Assembles the AlgDofParti object from a given Global::Gate. More... | |
| std::size_t | bytes () const |
| void | clear () |
| Resets the whole object. More... | |
| template<typename DT2_ > | |
| void | download_vector (const DT2_ *owned_dofs, LocalVectorType &local_vector, DataType *extra_local=nullptr, DataType *extra_shared=nullptr) const |
| const std::vector< int > & | get_all_global_dof_counts () const |
| Returns the all-global-dof-counts vector. More... | |
| const std::vector< int > & | get_all_global_dof_offsets () const |
| Returns the all-global-dof-offsets vector. More... | |
| String | get_block_information () const |
| Returns the block information of the algebraic dof partitioning as an XML string. More... | |
| const Dist::Comm * | get_comm () const |
| const DoneeMirrorType & | get_donee_mirror (Index i) const |
| Returns a donee neighbor mirror. More... | |
| int | get_donee_rank (Index i) const |
| Returns an donee neighbor rank. More... | |
| const IndexVectorType & | get_global_dof_indices () const |
| Returns the global-dof-indices array. More... | |
| Index | get_global_dof_offset () const |
| Index | get_num_donee_neighbors () const |
| Index | get_num_global_dofs () const |
| Index | get_num_local_dofs () const |
| Index | get_num_owned_dofs () const |
| Index | get_num_owner_neighbors () const |
| const OwnedMirrorType & | get_owned_mirror () const |
| Returns the Mirror of the owned DOFs. More... | |
| const OwnerMirrorType & | get_owner_mirror (Index i) const |
| Returns an owner neighbor mirror. More... | |
| int | get_owner_rank (Index i) const |
| Returns an owner neighbor rank. More... | |
| AlgDofParti & | operator= (const AlgDofParti &)=delete |
| no copy, no problems | |
| template<typename DT2_ > | |
| void | upload_vector (DT2_ *owned_dofs, const LocalVectorType &local_vector, const DataType *extra_local=nullptr, const DataType *extra_shared=nullptr) const |
Public Attributes | |
| std::vector< int > | _all_global_dof_counts |
| global DOF counts of all processes, More... | |
| std::vector< int > | _all_global_dof_offset |
| global DOF offsets of all processes, More... | |
| String | _block_information |
| a string containing the block information in XML format More... | |
| const Dist::Comm * | _comm |
| our communicator More... | |
| std::vector< DoneeMirrorType > | _donee_mirrors |
| rank/mirror-pair of DOF-donee processes More... | |
| std::vector< int > | _donee_ranks |
| ranks of DOF-donee neighbor processes More... | |
| Index | _extra_dof_offset |
| offset of first extra DOF More... | |
| Index | _extra_local_dof_count |
| number of extra local dofs; may be different for each process More... | |
| Index | _extra_shared_dof_count |
| number of extra shared dofs; must be equal on all processes More... | |
| Index | _global_dof_count |
| global dof count over all processes More... | |
| IndexVectorType | _global_dof_idx |
| global dof indices for each local dof More... | |
| Index | _global_dof_offset |
| global dof offset of this process More... | |
| Index | _local_dof_count |
| number of local dofs of this process More... | |
| Index | _owned_dof_count |
| number of owned dofs of this process More... | |
| MirrorType | _owned_mirror |
| mirror for this process's owned DOFs More... | |
| std::vector< OwnerMirrorType > | _owner_mirrors |
| rank/mirror-pair of DOF-owner processes More... | |
| std::vector< int > | _owner_ranks |
| ranks of DOF-owner neighbor processes More... | |
Static Protected Member Functions | |
| template<typename DT2_ > | |
| static Index | _gather (LAFEM::DenseVector< DataType, IndexType > &buffer, const DT2_ *vector, const LAFEM::VectorMirror< DataType, IndexType > &mirror) |
| static Index | _get_donee_dofs (std::vector< IndexType > &send_buf, const LAFEM::VectorMirror< DataType, IndexType > &donee_mir, Index offset) |
Algebraic DOF Partitioning implementation.
This class implements the functionality to generate and manage a distributed partitioning of the degrees of freedom of a (linear) system in an algebraic sense instead of the usual domain-decomposition approach. With this algebraic dof partitioning approach (ADP), each process in a given communicator becomes the unique owner of a set of consecutively enumerated global dofs, whereas in the domain-decomposition approach a single global dof may be shared by several processes, thus having no unique owner. The primary purpose of this class and the closely related AlgDofPartiSystem class is to offer the capability of embedding various third-party linear solver libraries as solvers, preconditioners or smoothers within the solver framework used in FEAT.
To use this class, one needs to have a fully assembled Global::Gate object, which contains all the partitioning information in the usual domain-decomposition sense, which is used as a "starting point" for an algebraic DOF partitioning in the assemble_by_gate() function.
Throughout this class and the closely related AlgDofPartiSystem class, you will frequently find the terms "local DOF", "shared DOF" and "owned DOF" and "donee DOF", which are defined as follows:
Furthermore, the neighbor ranks and mirrors, which are used in the Global::Gate of the domain-decomposition based approach, are converted into "owner" and "donee" neighbor ranks and mirrors in this algebraic approach. The basic idea is the following: Assume that three processes A, B and C share a common set of DOFs, i.e. they are neighbors in the domain-decomposition sense, and assume that process A has a lower rank than process B and process C. Due to the "ownership" rule (lowest rank is owner), process A becomes the "owner" of the shared DOFs and thus is responsible for enumerating and managing all DOFs shared by A, B and C, which in turn makes processes B and C "donees". Now, because process A owns at least one DOF that is also a local DOF of process B and a local DOF of process C in the domain decomposition sense, we have that:
Algebraic DOF partitioning of combined discretizations:
This class supports the algebraic dof partitioning of simple scalar FE spaces, which are represented by the LAFEM::DenseVector class, as well as more complex space combinations, which are represented by a hierarchy of meta containers, such as the LAFEM::TupleVector, and basic containers like LAFEM::DenseVector and/or LAFEM::DenseVectorBlocked; one prominent example is the velocity-pressure space pair used in Stokes systems which is typically represented by a LAFEM::DenseVectorBlocked for the velocity components and a (scalar) LAFEM::DenseVector for the pressure component, which are then joined together by a LAFEM::TupleVector meta container to form a single class that contains the entire velocity-pressure pair.
In the case of a combined discretization (such as the velocity-pressure pair), the algebraic dof partitioning distributes the DOFs of the individual components in an interleaved fashion among the processes, i.e. each process owns a set of DOFs of the first component followed by a set of DOFs of the second component, etc., so in the example of the velocity-pressure pair each process owns a set of consecutively numbered velocity DOFs followed by a set of consecutively numbered pressure DOFs, and so from a global perspective, the global DOFs alternate between sets of velocity and pressure DOFs across all processes.
Example:
Let's assume that we have 25x2=50 velocity DOFs (V0.0, V0.1, V1.0, ..., V24.0, V24.1) and 12 pressure DOFs (P0, ..., P11) in total partitioned among 4 processes and let's assume that each process owns 3 pressure DOFs and that the four processes own 18, 12, 12 and 8 velocity dofs, respectively, then the algebraic DOF partitioning of the 62 total global DOFs would look like in the table below:
+------------------------------+-------------------------------+--------------------------------+----------------------------------+ | Process 0 | Process 1 | Process 2 | Process 3 | +------------------------------+-------------------------------+--------------------------------+----------------------------------+ | 0, ..., 17, 18, 19, 20 | 21, ..., 32, 33, 34, 35 | 36, ..., 47, 48, 49, 50 | 51, ..., 58, 59, 60, 61 | <- global algebraic DOF +------------------------------+-------------------------------+--------------------------------+----------------------------------+ | 0, ..., 17, 18, 19, 20 | 0, ..., 11, 12, 13, 14 | 0, ..., 11, 12, 13, 14 | 0, ..., 8, 9, 10, 11 | <- owned (local) algebraic DOF +------------------------------+-------------------------------+--------------------------------+----------------------------------+ | V0.0, ..., V8.1 | V9.0, ..., V14.1 | V15.0, ..., V20.1 | V21.0, ..., V24.1 | <- global velocity DOF (interpreted as blocked DOFs) | V'0, ..., V'17 | V'18, ..., V'29 | V'30, ..., V'41 | V'42, ..., V'49 | <- global velocity DOF (interpreted as scalar DOFs) | P0, P1, P2 | P3, P4, P5 | P6, P7, P8 | P9, P10, P11 | <- global pressure DOF (scalar) +------------------------------+-------------------------------+--------------------------------+----------------------------------+ | v0.0, ..., v8.1 | v0.0, ..., v5.1 | v0.0, ..., v5.1 | v0.0, ..., v4.1 | <- owned (local) velocity DOF (interpreted as blocked DOFs) | v'0, ..., v'17 | v'0, ..., v'11 | v'0, ..., v'11 | v'0, ..., v'7 | <- owned (local) velocity DOF (interpreted as scalar DOFs) | p0, p1, p2 | p0, p1, p2 | p0, p1, p2 | p0, p1, p2 | <- owned (local) pressure DOF +------------------------------+-------------------------------+--------------------------------+----------------------------------+
So in the above example, global algebraic DOF 33 corresponds to global pressure DOF 3 (P3), which is owned by process 1 and which corresponds to the owned pressure DOF 1 (p1) on that process, whereas global DOF 47 corresponds to the second block-component (index 1) of the global velocity DOF 20 (V20.1), which is owned by process 2 and which corresponds to the owned velocity DOF 5 (v5.1), etc.
Retrieving ADP block information for combined discretizations:
Some third-party libraries, which are used as solver backends for ADP based solvers, do not treat the system as a black box, but require information about the composition of the system components within the algebraic DOF partitioning – or in simpler terms: the library needs to know which DOF is a velocity DOF and which DOF is a pressure DOF in the example above. This information can be queried by calling the get_block_information() member function, which returns a String object containing the relevant offsets and counts encoded in XML format.
The returned XML string consists of one or more lines and each line contains a single XML marker, which currently is either
<Scalar .../> marker that represents a scalar component that corresponds to a LAFEM::DenseVector container<Blocked .../> marker that represents a blocked/vector-valued component that corresponds to a LAFEM::DenseVectorBlocked container<Tuple ...> marker that represents a meta component that combines one or more other components and which corresponds to the LAFEM::TupleVector container</Tuple> marker that closes a previously opened <Tuple ...> markerEach of the above XML markers contains the following five attributes in alphabetical order:
gc ("global count"): contains the total number of global DOFs on all processes of the corresponding component; this quantity is identical on all processesgf ("global first"): represents the index of the first DOF of this component that is is owned by the current processgo ("global offset"): represents the index of the first global DOF owned by this process, which corresponds to the first global DOF of the corresponding componentlc ("local count"): contains the number of local DOFs within this component that are owned by the current process.lo ("local offset"): represents the index of the first local DOF owned by this process, which corresponds to the first local DOF of the corresponding componentAdditionally, the <Blocked .../> marker also contains the following attribute:
bs ("block size"): contains the total number values per DOF blockIn the example above, the four processes would contain the following block information strings:
<Tuple gc="62" gf="0" go="0" lc="21" lo="0"> <Blocked bs="2" gc="50" gf="0" go="0" lc="18" lo="0"/> <Scalar gc="12" gf="0" go="18" lc="3" lo="18"/> </Tuple>
<Tuple gc="62" gf="21" go="21" lc="15" lo="0"> <Blocked bs="2" gc="50" gf="18" go="21" lc="12" lo="0"/> <Scalar gc="12" gf="3" go="33" lc="3" lo="12"/> </Tuple>
<Tuple gc="62" gf="36" go="36" lc="15" lo="0"> <Blocked bs="2" gc="50" gf="30" go="36" lc="12" lo="0"/> <Scalar gc="12" gf="6" go="48" lc="3" lo="12"/> </Tuple>
Process 3:
<Tuple gc="62" gf="51" go="51" lc="11" lo="0"> <Blocked bs="2" gc="50" gf="42" go="51" lc="8" lo="0"/> <Scalar gc="12" gf="9" go="59" lc="3" lo="8"/> </Tuple>
decide what happens if this process owns no dofs at all
make sure that this works for discontinuous elements, too
ensure that extra local and extra shared dofs are handled appropriately
Definition at line 191 of file alg_dof_parti.hpp.
| typedef Intern::ADPAux<IndexVectorType> FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::ADPAuxType |
auxiliary helper class type
Definition at line 213 of file alg_dof_parti.hpp.
| typedef LAFEM::DenseVector<DataType, IndexType> FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::BufferVectorType |
the type for buffers used by our mirrors
Definition at line 216 of file alg_dof_parti.hpp.
| typedef LocalVectorType::DataType FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::DataType |
our data type
Definition at line 200 of file alg_dof_parti.hpp.
| typedef LAFEM::VectorMirror<DataType, IndexType> FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::DoneeMirrorType |
type of mirror for neighbor donee owned dof indices
Definition at line 223 of file alg_dof_parti.hpp.
| typedef Global::Gate<LocalVectorType, MirrorType> FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::GateType |
the global gate type
Definition at line 207 of file alg_dof_parti.hpp.
| typedef Global::Vector<LocalVectorType, MirrorType> FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::GlobalVectorType |
the global vector type
Definition at line 205 of file alg_dof_parti.hpp.
| typedef LocalVectorType::IndexType FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::IndexType |
our index type
Definition at line 202 of file alg_dof_parti.hpp.
| typedef LocalVectorType::template ContainerTypeByDI<IndexType, IndexType> FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::IndexVectorType |
the index vector type, this one is required for internal computations
Definition at line 210 of file alg_dof_parti.hpp.
| typedef LocalVector_ FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::LocalVectorType |
the local vector type
Definition at line 195 of file alg_dof_parti.hpp.
| typedef Mirror_ FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::MirrorType |
the vector mirror type
Definition at line 197 of file alg_dof_parti.hpp.
| typedef MirrorType FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::OwnedMirrorType |
type of mirror for owned local dof indices
Definition at line 219 of file alg_dof_parti.hpp.
| typedef MirrorType FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::OwnerMirrorType |
type of mirror for neighbor owner local dof indices
Definition at line 221 of file alg_dof_parti.hpp.
|
inline |
default constructor
Definition at line 268 of file alg_dof_parti.hpp.
|
inlinestaticprotected |
Definition at line 874 of file alg_dof_parti.hpp.
|
inlinestaticprotected |
Definition at line 862 of file alg_dof_parti.hpp.
|
inline |
Assembles the required data for the AlgDofPartiSystem::apply() function.
| [in] | yes_i_really_want_to_do_this | An assertion will fire if this is false. The only purpose of this parameter is to force you to read the warning in this documentation first. |
Definition at line 493 of file alg_dof_parti.hpp.
References FEAT::Dist::Comm::allgather(), FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::get_global_dof_offset(), FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::get_num_global_dofs(), FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::get_num_owned_dofs(), FEAT::Dist::Comm::size(), and XASSERTM.
|
inline |
Assembles the AlgDofParti object from a given Global::Gate.
This function performs the assembly of all required internal data structures.
| [in] | extra_local | The number of extra local dofs for this process. |
| [in] | extra_shared | The number of extra shared dofs for all processes. |
Definition at line 526 of file alg_dof_parti.hpp.
References FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_comm, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_donee_mirrors, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_donee_ranks, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_extra_local_dof_count, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_extra_shared_dof_count, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_owned_dof_count, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_owner_mirrors, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_owner_ranks, FEAT::Global::Gate< LocalVector_, Mirror_ >::_ranks, FEAT::Dist::Comm::allreduce(), FEAT::Dist::Comm::exscan(), FEAT::Global::Gate< LocalVector_, Mirror_ >::get_comm(), FEAT::Global::Gate< LocalVector_, Mirror_ >::get_freqs(), FEAT::Global::Gate< LocalVector_, Mirror_ >::get_mirrors(), FEAT::Dist::Comm::irecv(), FEAT::Dist::Comm::isend(), FEAT::Dist::op_sum, FEAT::Dist::Comm::rank(), FEAT::Dist::Comm::size(), FEAT::Dist::RequestVector::wait_all(), FEAT::Dist::RequestVector::wait_any(), and XASSERTM.
|
inline |
Definition at line 314 of file alg_dof_parti.hpp.
References FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_all_global_dof_counts, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_all_global_dof_offset, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_donee_mirrors, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_global_dof_idx, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_owned_mirror, and FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_owner_mirrors.
|
inline |
Resets the whole object.
Definition at line 289 of file alg_dof_parti.hpp.
References FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_all_global_dof_counts, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_all_global_dof_offset, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_comm, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_donee_mirrors, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_extra_dof_offset, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_extra_local_dof_count, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_extra_shared_dof_count, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_global_dof_count, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_global_dof_idx, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_global_dof_offset, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_local_dof_count, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_owned_dof_count, FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_owned_mirror, and FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_owner_mirrors.
|
inline |
Definition at line 772 of file alg_dof_parti.hpp.
|
inline |
Returns the all-global-dof-counts vector.
Definition at line 475 of file alg_dof_parti.hpp.
References FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_all_global_dof_counts, and XASSERTM.
|
inline |
Returns the all-global-dof-offsets vector.
Definition at line 460 of file alg_dof_parti.hpp.
References FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_all_global_dof_offset, and XASSERTM.
|
inline |
Returns the block information of the algebraic dof partitioning as an XML string.
Definition at line 332 of file alg_dof_parti.hpp.
References FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_block_information.
|
inline |
Definition at line 308 of file alg_dof_parti.hpp.
References FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_comm.
|
inline |
Returns a donee neighbor mirror.
| [in] | i | The index of the donee neighbor. |
Definition at line 446 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::_assemble_data_mirrors(), and FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::_assemble_structure().
|
inline |
Returns an donee neighbor rank.
| [in] | i | The index of the donee neighbor. |
Definition at line 412 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::_assemble_buffers(), and FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::upload_matrix_numeric().
|
inline |
Returns the global-dof-indices array.
Definition at line 364 of file alg_dof_parti.hpp.
References FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_global_dof_idx.
Referenced by FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::_assemble_buffers(), FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::_assemble_data_mirrors(), and FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::_assemble_structure().
|
inline |
Definition at line 356 of file alg_dof_parti.hpp.
References FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_global_dof_offset.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::assemble_allgather().
|
inline |
Definition at line 384 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::_assemble_buffers(), FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::_assemble_structure(), and FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::upload_matrix_numeric().
|
inline |
Definition at line 350 of file alg_dof_parti.hpp.
References FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_global_dof_count.
Referenced by FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::_assemble_buffers(), FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::_assemble_structure(), and FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::assemble_allgather().
|
inline |
Definition at line 344 of file alg_dof_parti.hpp.
References FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_local_dof_count.
|
inline |
Definition at line 338 of file alg_dof_parti.hpp.
References FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_owned_dof_count.
Referenced by FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::_assemble_structure(), and FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::assemble_allgather().
|
inline |
Definition at line 378 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::_assemble_buffers(), and FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::upload_matrix_numeric().
|
inline |
Returns the Mirror of the owned DOFs.
Definition at line 372 of file alg_dof_parti.hpp.
References FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_owned_mirror.
Referenced by FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::_assemble_data_mirrors(), and FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::_assemble_structure().
|
inline |
Returns an owner neighbor mirror.
| [in] | i | The index of the owner neighbor. |
Definition at line 429 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::_assemble_buffers(), and FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::_assemble_data_mirrors().
|
inline |
Returns an owner neighbor rank.
| [in] | i | The index of the owner neighbor. |
Definition at line 398 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::_assemble_buffers(), and FEAT::Global::AlgDofPartiSystem< LocalMatrix_, LocalFilter_, Mirror_ >::upload_matrix_numeric().
|
inline |
Definition at line 743 of file alg_dof_parti.hpp.
| std::vector<int> FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_all_global_dof_counts |
global DOF counts of all processes,
Definition at line 264 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::bytes(), FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::clear(), and FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::get_all_global_dof_counts().
| std::vector<int> FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_all_global_dof_offset |
global DOF offsets of all processes,
Definition at line 262 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::bytes(), FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::clear(), and FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::get_all_global_dof_offsets().
| String FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_block_information |
a string containing the block information in XML format
Definition at line 255 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::get_block_information().
| const Dist::Comm* FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_comm |
our communicator
Definition at line 227 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::assemble_by_gate(), FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::clear(), and FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::get_comm().
| std::vector<DoneeMirrorType> FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_donee_mirrors |
rank/mirror-pair of DOF-donee processes
Definition at line 253 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::assemble_by_gate(), FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::bytes(), and FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::clear().
| std::vector<int> FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_donee_ranks |
ranks of DOF-donee neighbor processes
Definition at line 249 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::assemble_by_gate().
| Index FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_extra_dof_offset |
offset of first extra DOF
Definition at line 241 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::clear().
| Index FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_extra_local_dof_count |
number of extra local dofs; may be different for each process
Definition at line 237 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::assemble_by_gate(), and FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::clear().
| Index FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_extra_shared_dof_count |
number of extra shared dofs; must be equal on all processes
Definition at line 239 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::assemble_by_gate(), and FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::clear().
| Index FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_global_dof_count |
global dof count over all processes
Definition at line 231 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::clear(), and FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::get_num_global_dofs().
| IndexVectorType FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_global_dof_idx |
global dof indices for each local dof
Definition at line 243 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::bytes(), FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::clear(), and FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::get_global_dof_indices().
| Index FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_global_dof_offset |
global dof offset of this process
Definition at line 229 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::clear(), and FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::get_global_dof_offset().
| Index FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_local_dof_count |
number of local dofs of this process
Definition at line 233 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::clear(), and FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::get_num_local_dofs().
| Index FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_owned_dof_count |
number of owned dofs of this process
Definition at line 235 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::assemble_by_gate(), FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::clear(), and FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::get_num_owned_dofs().
| MirrorType FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_owned_mirror |
mirror for this process's owned DOFs
Definition at line 245 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::bytes(), FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::clear(), and FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::get_owned_mirror().
| std::vector<OwnerMirrorType> FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_owner_mirrors |
rank/mirror-pair of DOF-owner processes
Definition at line 251 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::assemble_by_gate(), FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::bytes(), and FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::clear().
| std::vector<int> FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::_owner_ranks |
ranks of DOF-owner neighbor processes
Definition at line 247 of file alg_dof_parti.hpp.
Referenced by FEAT::Global::AlgDofParti< LocalVector_, Mirror_ >::assemble_by_gate().