blob: e91539a4dffacb4280c7aec3092e92a9dc934733 [file] [log] [blame]
//------------------------------------------------------------------------------------------------------------------------------
// Samuel Williams
// SWWilliams@lbl.gov
// Lawrence Berkeley National Lab
//------------------------------------------------------------------------------------------------------------------------------
void apply_op(domain_type *domain, int level, int Ax_id, int x_id, double a, double b);
void residual(domain_type *domain, int level, int res_id, int phi_id, int rhs_id, double a, double b);
void smooth(domain_type *domain, int level, int phi_id, int rhs_id, double a, double b);
void rebuild_lambda(domain_type *domain, int level, double a, double b);
//------------------------------------------------------------------------------------------------------------------------------
void residual_and_restriction(domain_type *domain, int level_f, int phi_id, int rhs_id, int level_c, int res_id, double a, double b);
void restriction(domain_type *domain, int level_f, int id_c, int id_f);
void restriction_betas(domain_type *domain, int level_f, int level_c);
void interpolation_constant(domain_type *domain, int level_f, double prescale_f, int id_f, int id_c);
void interpolation_linear(domain_type *domain, int level_f, double prescale_f, int id_f, int id_c);
//------------------------------------------------------------------------------------------------------------------------------
void exchange_boundary(domain_type *domain, int level, int grid_id, int exchange_faces, int exchange_edges, int exchange_corners);
//------------------------------------------------------------------------------------------------------------------------------
double dot(domain_type *domain, int level, int id_a, int id_b);
double norm(domain_type *domain, int level, int grid_id);
double mean(domain_type *domain, int level, int id_a);
void add_grids(domain_type *domain, int level, int id_c, double scale_a, int id_a, double scale_b, int id_b);
void scale_grid(domain_type *domain, int level, int id_c, double scale_a, int id_a);
void zero_grid(domain_type *domain, int level, int grid_id);
// void shift_grid(domain_type *domain, int level, int id_c, int id_a, double shift_a);
void mul_grids(domain_type *domain, int level, int id_c, double scale, int id_a, int id_b);
// void initialize_grid_to_scalar(domain_type *domain, int level, int grid_id, double scalar);
//------------------------------------------------------------------------------------------------------------------------------
void project_cell_to_face(domain_type *domain, int level, int id_cell, int id_face, int dir);
//------------------------------------------------------------------------------------------------------------------------------
void matmul_grids(domain_type *domain, int level, double *C, int *id_A, int *id_B, int rows, int cols, int A_equals_B_transpose);
//------------------------------------------------------------------------------------------------------------------------------
void initialize_problem(domain_type *domain, int level, double hLevel, double a, double b);
//------------------------------------------------------------------------------------------------------------------------------
// void __box_smooth_GSRB_multiple(box_type *box, int phi_id, int rhs_id, double a, double b, int sweep);
// void __box_smooth_GSRB_multiple_threaded(box_type *box, int phi_id, int rhs_id, double a, double b, int sweep);