|  | 
| OpSchurAssembleBase * | MoFEM::createOpSchurAssembleBegin () | 
|  | 
| OpSchurAssembleBase * | MoFEM::createOpSchurAssembleEnd (std::vector< std::string > fields_name, std::vector< boost::shared_ptr< Range > > field_ents, SmartPetscObj< AO > ao=SmartPetscObj< AO >(), SmartPetscObj< Mat > schur=SmartPetscObj< Mat >(), bool sym_schur=false, bool symm_op=false) | 
|  | Construct a new Op Schur Assemble End object. 
 | 
|  | 
| OpSchurAssembleBase * | MoFEM::createOpSchurZeroRowsAndCols (boost::shared_ptr< std::vector< unsigned char > > marker_ptr, double diag_val) | 
|  | Create a Op Schur Zero Rows And Cols object. 
 | 
|  | 
| boost::shared_ptr< BlockStructure > | MoFEM::createBlockMatStructure (DM dm, SchurFEOpsFEandFields schur_fe_op_vec) | 
|  | Create a Mat Diag Blocks object. 
 | 
|  | 
| SchurShellMatData | MoFEM::createBlockMat (DM dm, boost::shared_ptr< BlockStructure > data) | 
|  | Create a Schur Mat object. 
 | 
|  | 
| boost::shared_ptr< NestSchurData > | MoFEM::createSchurNestedMatrixStruture (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. 
 | 
|  | 
| MoFEMErrorCode | MoFEM::assembleBlockMatSchur (MoFEM::Interface &m_field, Mat B, Mat S, std::vector< std::string > fields_name, std::vector< boost::shared_ptr< Range > > field_ents, SmartPetscObj< AO > ao) | 
|  | Assemble Schur matrix. 
 | 
|  | 
| boost::shared_ptr< std::vector< double > > | MoFEM::getBlockMatStorageMat (Mat B) | 
|  | Get the Block Storage object. 
 | 
|  | 
| boost::shared_ptr< std::vector< double > > | MoFEM::getBlockMatPrconditionerStorageMat (Mat B) | 
|  | Get the Block Storage object. 
 | 
|  | 
| MoFEMErrorCode | MoFEM::schurSwitchPreconditioner (boost::shared_ptr< BlockStructure > block_mat_data) | 
|  | Switch preconditioner. 
 | 
|  | 
| MoFEMErrorCode | MoFEM::schurSaveBlockMesh (boost::shared_ptr< BlockStructure > block_mat_data, std::string filename) | 
|  | Save block matrix as a mesh. 
 | 
|  | 
| std::pair< SmartPetscObj< Mat >, boost::shared_ptr< NestSchurData > > | MoFEM::createSchurNestedMatrix (boost::shared_ptr< NestSchurData > schur_net_data_ptr) | 
|  | Create a Mat Diag Blocks object. 
 | 
|  | 
| template<> | 
| MoFEMErrorCode | MoFEM::DMMoFEMSetNestSchurData (DM dm, boost::shared_ptr< NestSchurData >) | 
|  | 
| MoFEMErrorCode | MoFEM::setSchurA00MatSolvePC (SmartPetscObj< PC > pc) | 
|  | Set PC for A00 block. 
 | 
|  | 
| 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) | 
|  | 
| template<> | 
| MoFEMErrorCode | MoFEM::VecSetValues< SchurElemMats > (Vec V, const EntitiesFieldData::EntData &data, const VectorDouble &nf, 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::VecSetValues< AssemblyTypeSelector< SCHUR > > (Vec V, const EntitiesFieldData::EntData &data, const VectorDouble &nf, 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< AssemblyTypeSelector< BLOCK_MAT > > (Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora) | 
|  | 
| template<> | 
| MoFEMErrorCode | MoFEM::VecSetValues< AssemblyTypeSelector< BLOCK_MAT > > (Vec V, const EntitiesFieldData::EntData &data, const VectorDouble &nf, 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::VecSetValues< SchurElemMatsBlock > (Vec V, const EntitiesFieldData::EntData &data, const VectorDouble &nf, InsertMode iora) | 
|  | 
| template<> | 
| MoFEMErrorCode | MoFEM::MatSetValues< AssemblyTypeSelector< BLOCK_SCHUR > > (Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora) | 
|  | 
| template<> | 
| MoFEMErrorCode | MoFEM::VecSetValues< AssemblyTypeSelector< BLOCK_SCHUR > > (Vec V, const EntitiesFieldData::EntData &data, const VectorDouble &nf, InsertMode iora) | 
|  | 
| template<> | 
| MoFEMErrorCode | MoFEM::MatSetValues< SchurElemMatsPreconditionedBlock > (Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora) | 
|  | 
| template<> | 
| MoFEMErrorCode | MoFEM::MatSetValues< AssemblyTypeSelector< BLOCK_PRECONDITIONER_SCHUR > > (Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora) | 
|  | 
| template<> | 
| MoFEMErrorCode | MoFEM::VecSetValues< AssemblyTypeSelector< BLOCK_PRECONDITIONER_SCHUR > > (Vec V, const EntitiesFieldData::EntData &data, const VectorDouble &nf, InsertMode iora) | 
|  | 
| 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) | 
|  | 
| 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) | 
|  | 
| DEPRECATED 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) | 
|  | 
Assemble Schur complement. 
- Date
- 2023-02-02
- Copyright
- Copyright (c) 2023
To create nested system of Schur complements, you push sequence of operator, to set up data on entities, and then assemble complements.
- Note
- Try separate floating points operations from book keeping. Also, align memory that blocks follow floating point operations. 
Definition in file Schur.hpp.