Loading [MathJax]/extensions/AMSmath.js
 |
| v0.14.0
|
Go to the documentation of this file.
63 std::vector<boost::shared_ptr<Range>> field_ents,
66 bool sym_schur =
false,
bool symm_op =
false);
75 boost::shared_ptr<std::vector<unsigned char>> marker_ptr,
double diag_val);
81 std::pair<std::string, std::vector<SchurFieldPair>>
98 std::pair<SmartPetscObj<Mat>, boost::shared_ptr<BlockStructure>>;
111 std::array<SmartPetscObj<Mat>, 4>,
112 std::array<boost::shared_ptr<BlockStructure>, 4>,
113 boost::shared_ptr<BlockStructure>,
130 boost::shared_ptr<BlockStructure> block_mat_data,
132 std::vector<std::string> fields_name,
133 std::vector<boost::shared_ptr<Range>> field_ents,
134 bool add_preconditioner_block =
false
151 std::vector<std::string> fields_name,
152 std::vector<boost::shared_ptr<Range>> field_ents,
167 boost::shared_ptr<std::vector<double>>
188 std::string filename);
211 std::pair<SmartPetscObj<Mat>, boost::shared_ptr<NestSchurData>>
353 MatSetValues<AssemblyTypeSelector<BLOCK_PRECONDITIONER_SCHUR>>(
366 VecSetValues<AssemblyTypeSelector<BLOCK_PRECONDITIONER_SCHUR>>(
370 &*data.getIndices().begin(), &*nf.begin(), iora);
377 std::vector<std::string> fields_name,
378 std::vector<boost::shared_ptr<Range>> field_ents,
379 std::vector<SmartPetscObj<AO>> sequence_of_aos,
380 std::vector<SmartPetscObj<Mat>> sequence_of_mats,
381 std::vector<bool> sym_schur,
bool symm_op,
382 boost::shared_ptr<BlockStructure> diag_blocks =
nullptr);
388 std::vector<std::string> fields_name,
389 std::vector<boost::shared_ptr<Range>> field_ents,
390 std::vector<SmartPetscObj<AO>> sequence_of_aos,
391 std::vector<SmartPetscObj<Mat>> sequence_of_mats,
392 std::vector<bool> sym_schur, std::vector<double> diag_eps,
bool symm_op,
393 boost::shared_ptr<BlockStructure> diag_blocks =
nullptr);
396 DEPRECATED inline boost::shared_ptr<NestSchurData>
398 boost::shared_ptr<BlockStructure> block_mat_data,
400 std::vector<std::string> fields_name,
401 std::vector<boost::shared_ptr<Range>> field_ents,
402 bool add_preconditioner_block =
false
406 field_ents, add_preconditioner_block);
411 #endif //__SCHUR_HPP__
Data on single entity (This is passed as argument to DataOperator::doWork)
OpSchurAssembleBase * createOpSchurZeroRowsAndCols(boost::shared_ptr< std::vector< unsigned char >> marker_ptr, double diag_val)
Create a Op Schur Zero Rows And Cols object.
MoFEMErrorCode MatSetValues< BlockStructure >(Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora)
constexpr const char MoFEM_BLOCK_MAT[]
std::pair< std::string, std::string > SchurFieldPair
OpSchurAssembleBase()=delete
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
UBlasMatrix< double > MatrixDouble
boost::function< MoFEMErrorCode(Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora)> MatSetValuesPtr
static PetscLogEvent MOFEM_EVENT_BlockStructureMult
static PetscLogEvent MOFEM_EVENT_schurMatSetValues
MoFEMErrorCode VecSetValues(Vec V, const EntitiesFieldData::EntData &data, const double *ptr, InsertMode iora)
Assemble PETSc vector.
static PetscLogEvent MOFEM_EVENT_AssembleSchurMat
Deprecated interface functions.
boost::shared_ptr< std::vector< double > > getBlockMatStorageMat(Mat B)
Get the Block Storage object.
FTensor::Index< 'M', 3 > M
OpSchurAssembleBase * createOpSchurAssembleEnd(std::vector< std::string > fields_name, std::vector< boost::shared_ptr< Range >> field_ents, SmartPetscObj< AO > ao, SmartPetscObj< Mat > schur, bool sym_schur, bool symm_op)
Construct a new Op Schur Assemble End object.
MoFEMErrorCode VecSetValues< SchurElemMatsBlock >(Vec V, const EntitiesFieldData::EntData &data, const VectorDouble &nf, InsertMode iora)
SchurShellMatData createBlockMat(DM dm, boost::shared_ptr< BlockStructure > data)
Create a Schur Mat object.
implementation of Data Operators for Forces and Sources
static PetscLogEvent MOFEM_EVENT_BlockStructureSolve
MoFEMErrorCode schurSwitchPreconditioner(boost::shared_ptr< BlockStructure > block_mat_data)
Switch preconditioner.
DEPRECATED boost::shared_ptr< NestSchurData > 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)
SchurBackendMatSetValuesPtr()=delete
OpSchurAssembleBase * createOpSchurAssembleBegin()
static PetscLogEvent MOFEM_EVENT_opSchurAssembleEnd
std::pair< SmartPetscObj< Mat >, boost::shared_ptr< NestSchurData > > createSchurNestedMatrix(boost::shared_ptr< NestSchurData > schur_net_data_ptr)
Create a Mat Diag Blocks object.
MoFEMErrorCode MatSetValues< SchurElemMatsPreconditionedBlock >(Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora)
static MatSetValuesPtr matSetValuesPtr
backend assembly function
MoFEMErrorCode 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.
EntitiesFieldData::EntData EntData
MoFEMErrorCode setSchurMatSolvePC(SmartPetscObj< PC > pc)
Schur complement data storage.
MoFEMErrorCode setSchurA00MatSolvePC(SmartPetscObj< PC > pc)
Set PC for A00 block.
static MatSetValuesPtr matSetValuesPreconditionedBlockPtr
boost::shared_ptr< std::vector< double > > getBlockMatPrconditionerStorageMat(Mat B)
Get the Block Storage object.
MoFEMErrorCode MatSetValues< SchurElemMats >(Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora)
boost::shared_ptr< NestSchurData > createSchurNestedMatrixStruture(std::pair< SmartPetscObj< DM >, SmartPetscObj< DM >> dms, boost::shared_ptr< BlockStructure > block_mat_data_ptr, std::vector< std::string > fields_names, std::vector< boost::shared_ptr< Range >> field_ents, bool add_preconditioner_block)
Get the Schur Nest Mat Array object.
const FTensor::Tensor2< T, Dim, Dim > Vec
Structure to register events for Schur block assembly and solver.
std::pair< SmartPetscObj< Mat >, boost::shared_ptr< BlockStructure > > SchurShellMatData
UBlasVector< double > VectorDouble
MoFEMErrorCode DMMoFEMSetNestSchurData(DM dm, boost::shared_ptr< NestSchurData >)
MoFEMErrorCode VecSetValues< SchurElemMats >(Vec V, const EntitiesFieldData::EntData &data, const VectorDouble &nf, InsertMode iora)
boost::shared_ptr< BlockStructure > createBlockMatStructure(DM dm, SchurFEOpsFEandFields schur_fe_op_vec)
Create a Mat Diag Blocks object.
static MatSetValuesPtr matSetValuesBlockPtr
backend assembly block mat function
MoFEMErrorCode MatSetValues< SchurElemMatsBlock >(Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora)
std::tuple< std::array< SmartPetscObj< Mat >, 4 >, std::array< boost::shared_ptr< BlockStructure >, 4 >, boost::shared_ptr< BlockStructure >, std::pair< SmartPetscObj< IS >, SmartPetscObj< IS > > > NestSchurData
static PetscLogEvent MOFEM_EVENT_zeroRowsAndCols
MoFEMErrorCode schurSaveBlockMesh(boost::shared_ptr< BlockStructure > block_mat_data, std::string filename)
Save block matrix as a mesh.
static PetscLogEvent MOFEM_EVENT_BlockStructureSetValues
std::vector< std::pair< std::string, std::vector< SchurFieldPair > > > SchurFEOpsFEandFields
UserDataOperator(const FieldSpace space, const char type=OPSPACE, const bool symm=true)