|
boost::shared_ptr< BlockStructure > | MoFEM::createBlockMatStructure (DM dm, SchurFEOpsFEandFields schur_fe_op_vec) |
| Create a Mat Diag Blocks object. More...
|
|
static MoFEMErrorCode | MoFEM::mult_schur_block_shell (Mat mat, Vec x, Vec y, InsertMode iora) |
|
static MoFEMErrorCode | MoFEM::solve_schur_block_shell (Mat mat, Vec x, Vec y, InsertMode iora) |
|
static PetscErrorCode | MoFEM::mult (Mat mat, Vec x, Vec y) |
|
static PetscErrorCode | MoFEM::mult_add (Mat mat, Vec x, Vec y) |
|
static PetscErrorCode | MoFEM::solve (Mat mat, Vec x, Vec y) |
|
static PetscErrorCode | MoFEM::solve_add (Mat mat, Vec x, Vec y) |
|
static PetscErrorCode | MoFEM::zero_rows_columns (Mat A, PetscInt N, const PetscInt rows[], PetscScalar diag, Vec x, Vec b) |
|
static PetscErrorCode | MoFEM::mat_zero (Mat m) |
|
static MoFEMErrorCode | MoFEM::setSchurBlockMatOps (Mat mat_raw) |
|
SchurShellMatData | MoFEM::createBlockMat (DM dm, boost::shared_ptr< BlockStructure > data) |
| Create a Schur Mat object. More...
|
|
MoFEMErrorCode | MoFEM::shell_block_mat_asmb_wrap_impl (BlockStructure *ctx, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora, boost::function< int(const DiagBlockIndex::Indexes *)> shift_extractor, boost::shared_ptr< std::vector< double >> data_blocks_ptr) |
|
MoFEMErrorCode | MoFEM::shell_block_mat_asmb_wrap (Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora) |
|
MoFEMErrorCode | MoFEM::shell_block_preconditioner_mat_asmb_wrap (Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora) |
|
boost::shared_ptr< NestSchurData > | MoFEM::getNestSchurData (std::pair< SmartPetscObj< DM >, SmartPetscObj< DM >> dms, boost::shared_ptr< BlockStructure > block_mat_data, std::vector< std::string > fields_name, std::vector< boost::shared_ptr< Range >> field_ents, bool add_preconditioner_block=false) |
| Get the Schur Nest Mat Array object. More...
|
|
std::pair< SmartPetscObj< Mat >, boost::shared_ptr< NestSchurData > > | MoFEM::createSchurNestedMatrix (boost::shared_ptr< NestSchurData > schur_net_data_ptr) |
| Create a Mat Diag Blocks object. More...
|
|
OpSchurAssembleBase * | MoFEM::createOpSchurAssembleBegin () |
|
OpSchurAssembleBase * | MoFEM::createOpSchurAssembleEnd (std::vector< std::string > fields_name, std::vector< boost::shared_ptr< Range >> field_ents, std::vector< SmartPetscObj< AO >> sequence_of_aos, std::vector< SmartPetscObj< Mat >> sequence_of_mats, std::vector< bool > sym_schur, bool symm_op, boost::shared_ptr< BlockStructure > diag_blocks=nullptr) |
| Construct a new Op Schur Assemble End object. More...
|
|
OpSchurAssembleBase * | MoFEM::createOpSchurAssembleEnd (std::vector< std::string > fields_name, std::vector< boost::shared_ptr< Range >> field_ents, std::vector< SmartPetscObj< AO >> sequence_of_aos, std::vector< SmartPetscObj< Mat >> sequence_of_mats, std::vector< bool > sym_schur, std::vector< double > diag_eps, bool symm_op, boost::shared_ptr< BlockStructure > diag_blocks=nullptr) |
| Construct a new Op Schur Assemble End object. More...
|
|
MoFEMErrorCode | MoFEM::setSchurA00MatSolvePC (SmartPetscObj< PC > pc) |
| Set PC for A00 block. More...
|
|
MoFEMErrorCode | MoFEM::setSchurMatSolvePC (SmartPetscObj< PC > pc) |
|
template<> |
MoFEMErrorCode | MoFEM::MatSetValues< SchurElemMats > (Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora) |
|
MoFEMErrorCode | MoFEM::schur_mat_set_values_wrap (Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora) |
|
template<> |
MoFEMErrorCode | MoFEM::MatSetValues< AssemblyTypeSelector< SCHUR > > (Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora) |
|
template<> |
MoFEMErrorCode | MoFEM::MatSetValues< BlockStructure > (Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora) |
|
template<> |
MoFEMErrorCode | MoFEM::MatSetValues< SchurElemMatsBlock > (Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora) |
|
template<> |
MoFEMErrorCode | MoFEM::MatSetValues< SchurElemMatsPreconditionedBlock > (Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora) |
|
MoFEMErrorCode | MoFEM::schurSwitchPreconditioner (boost::shared_ptr< BlockStructure > block_mat_data) |
| Switch preconditioner. More...
|
|
MoFEMErrorCode | MoFEM::schurSaveBlockMesh (boost::shared_ptr< BlockStructure > block_mat_data, std::string filename) |
| Save block matrix as a mesh. More...
|
|
Implementation of Schur Complement.
- Date
- 2023-02-03
- Copyright
- Copyright (c) 2023
Definition in file Schur.cpp.