Public Member Functions | |
BCapplier (int cnt_, int base_, const int *dof_, const double *value_) | |
void | set_c (IFEM_Matrix_product_c A, void *ptr_) |
void | set_f (IFEM_Matrix_product_f A, void *ptr_) |
void | solve (ILSI_Solver s, ILSI_Param *p, int fem_mesh, int fem_entity, int length, int width, const double *b, double *x) |
void | multiply (int length, int width, const double *u, double *Au) |
Private Member Functions | |
void | userMultiply (int length, int width, const double *src, double *dest) |
int | at (int bcIdx) |
Private Attributes | |
IFEM_Matrix_product_c | A_c |
IFEM_Matrix_product_f | A_f |
void * | ptr |
int | bcCount |
Definition of boundary conditions: for (i=0;i<bcCount;i++) assert(x[at(i)]==bcValue[i]). | |
int | idxBase |
const int * | bcDOF |
const double * | bcValue |
The basic idea is that given a problem A x = b where x is only partially unknowns--that is, if x=u+c (Unknowns and boundary Conditions) A u + A c = b so there's an equivalent all-unknown system A u = b - A c = b' Now for A u = b', we have to just zero out all the boundary conditions.
Definition at line 137 of file ifem.C.
void BCapplier::set_c | ( | IFEM_Matrix_product_c | A, | |
void * | ptr_ | |||
) | [inline] |
Definition at line 168 of file ifem.C.
Referenced by IFEM_Solve_shared_bc().
void BCapplier::set_f | ( | IFEM_Matrix_product_f | A, | |
void * | ptr_ | |||
) | [inline] |
Definition at line 171 of file ifem.C.
Referenced by FTN_NAME().
void BCapplier::solve | ( | ILSI_Solver | s, | |
ILSI_Param * | p, | |||
int | fem_mesh, | |||
int | fem_entity, | |||
int | length, | |||
int | width, | |||
const double * | b, | |||
double * | x | |||
) |
Definition at line 202 of file ifem.C.
References at(), BCapplier_multiply(), bcCount, bcValue, c, IFEM_Solve_shared(), and userMultiply().
Referenced by FTN_NAME(), and IFEM_Solve_shared_bc().
Definition at line 181 of file ifem.C.
References at(), bcCount, and userMultiply().
Referenced by BCapplier_multiply().
IFEM_Matrix_product_c BCapplier::A_c [private] |
IFEM_Matrix_product_f BCapplier::A_f [private] |
void* BCapplier::ptr [private] |
Definition at line 141 of file ifem.C.
Referenced by FTN_NAME(), set_c(), set_f(), and userMultiply().
int BCapplier::bcCount [private] |
Definition of boundary conditions: for (i=0;i<bcCount;i++) assert(x[at(i)]==bcValue[i]).
Definition at line 154 of file ifem.C.
Referenced by FTN_NAME(), multiply(), and solve().
int BCapplier::idxBase [private] |
const int* BCapplier::bcDOF [private] |
const double* BCapplier::bcValue [private] |