Actual source code: bddc.h

petsc-3.7.3 2016-08-01
Report Typos and Errors
4: #include <../src/ksp/pc/impls/is/pcis.h> 5: #include <../src/ksp/pc/impls/bddc/bddcstructs.h> 7: /* Private context (data structure) for the BDDC preconditioner. */ 8: typedef struct { 9: /* First MUST come the folowing line, for the stuff that is common to FETI and Neumann-Neumann. */ 10: PC_IS pcis; 11: /* Coarse stuffs needed by BDDC application in KSP */ 12: Vec coarse_vec; 13: KSP coarse_ksp; 14: Mat coarse_phi_B; 15: Mat coarse_phi_D; 16: Mat coarse_psi_B; 17: Mat coarse_psi_D; 18: PetscInt local_primal_size; 19: PetscInt coarse_size; 20: PetscInt* global_primal_indices; 21: VecScatter coarse_loc_to_glob; 22: /* Local stuffs needed by BDDC application in KSP */ 23: Vec vec1_P; 24: Vec vec1_C; 25: Mat local_auxmat1; 26: Mat local_auxmat2; 27: Vec vec1_R; 28: Vec vec2_R; 29: IS is_R_local; 30: VecScatter R_to_B; 31: VecScatter R_to_D; 32: KSP ksp_R; 33: KSP ksp_D; 34: /* Quantities defining constraining details (local) of the preconditioner */ 35: /* These quantities define the preconditioner itself */ 36: PetscInt n_vertices; 37: Mat ConstraintMatrix; 38: PetscBool new_primal_space; 39: PetscBool new_primal_space_local; 40: PetscInt *primal_indices_local_idxs; 41: PetscInt local_primal_size_cc; 42: PetscInt *local_primal_ref_node; 43: PetscInt *local_primal_ref_mult; 44: PetscBool use_change_of_basis; 45: PetscBool use_change_on_faces; 46: Mat ChangeOfBasisMatrix; 47: Mat user_ChangeOfBasisMatrix; 48: Mat new_global_mat; 49: Vec original_rhs; 50: Vec temp_solution; 51: Mat local_mat; 52: PetscBool use_exact_dirichlet_trick; 53: PetscBool ksp_guess_nonzero; 54: PetscBool rhs_change; 55: /* Some defaults on selecting vertices and constraints*/ 56: PetscBool use_local_adj; 57: PetscBool use_vertices; 58: PetscBool use_faces; 59: PetscBool use_edges; 60: /* Some customization is possible */ 61: PetscBool recompute_topography; 62: PCBDDCGraph mat_graph; 63: MatNullSpace onearnullspace; 64: PetscObjectState *onearnullvecs_state; 65: MatNullSpace NullSpace; 66: IS user_primal_vertices; 67: PetscBool use_nnsp_true; 68: PetscBool use_qr_single; 69: PetscBool user_provided_isfordofs; 70: PetscInt n_ISForDofs; 71: PetscInt n_ISForDofsLocal; 72: IS *ISForDofs; 73: IS *ISForDofsLocal; 74: IS NeumannBoundaries; 75: IS NeumannBoundariesLocal; 76: IS DirichletBoundaries; 77: IS DirichletBoundariesLocal; 78: PetscBool switch_static; 79: PetscInt coarsening_ratio; 80: PetscInt coarse_adj_red; 81: PetscInt current_level; 82: PetscInt max_levels; 83: PetscInt redistribute_coarse; 84: IS coarse_subassembling; 85: IS coarse_subassembling_init; 86: PetscBool use_coarse_estimates; 87: PetscBool symmetric_primal; 88: /* scaling */ 89: Vec work_scaling; 90: PetscBool use_deluxe_scaling; 91: PCBDDCDeluxeScaling deluxe_ctx; 92: PetscBool faster_deluxe; 94: /* schur complements on interface's subsets */ 95: PCBDDCSubSchurs sub_schurs; 96: PetscBool sub_schurs_rebuild; 97: PetscInt sub_schurs_layers; 98: PetscBool sub_schurs_use_useradj; 99: PetscBool computed_rowadj; 101: /* adaptive selection of constraints */ 102: PetscBool adaptive_selection; 103: PetscReal adaptive_threshold; 104: PetscInt adaptive_nmin; 105: PetscInt adaptive_nmax; 106: PetscInt* adaptive_constraints_n; 107: PetscInt* adaptive_constraints_idxs; 108: PetscInt* adaptive_constraints_idxs_ptr; 109: PetscScalar* adaptive_constraints_data; 110: PetscInt* adaptive_constraints_data_ptr; 112: /* For verbose output of some bddc data structures */ 113: PetscInt dbg_flag; 114: PetscViewer dbg_viewer; 115: } PC_BDDC; 118: #endif /* __pcbddc_h */