00001 /************************************************************* 00002 sih_mkb_fem_intf.h - functions from the FEM code called by the block 00003 multigrid preconditioned Krylow methods iterative solver module: 00004 fem_proj_sol_lev - to L2 project solution dofs between mesh levels 00005 fem_vec_norm - to compute a norm of global vector in parallel 00006 fem_sc_prod - to compute a scalar product of two global vectors 00007 fem_exchange_dofs - to exchange dofs between processors 00008 *************************************************************/ 00009 00010 00011 #ifndef _sih_mkb_fem_intf_ 00012 #define _sih_mkb_fem_intf_ 00013 00014 00015 #ifdef __cplusplus 00016 extern "C" { 00017 #endif 00018 00022 extern int fem_proj_sol_lev( /* returns: >=0 - success; <0 - error code*/ 00023 int Solver_id, /* in: solver data structure to be used */ 00024 int Subsystem_id, /* in: solver data structure to be used */ 00025 int Ilev_from, /* in: level number to project from */ 00026 double* Vec_from, /* in: vector of values to project */ 00027 int Ilev_to, /* in: level number to project to */ 00028 double* Vec_to /* out: vector of projected values */ 00029 ); 00030 00034 extern double fem_vec_norm( /* returns: L2 norm of global Vector */ 00035 int Solver_id, /* in: solver data structure to be used */ 00036 int Subsystem_id, /* in: solver data structure to be used */ 00037 int Level_id, /* in: level number */ 00038 int Nrdof, /* in: number of vector components */ 00039 double* Vector /* in: local part of global Vector */ 00040 ); 00041 00045 extern double fem_sc_prod( 00046 /* retruns: scalar product of Vector1 and Vector2 */ 00047 int Solver_id, /* in: solver data structure to be used */ 00048 int Subsystem_id, /* in: solver data structure to be used */ 00049 int Level_id, /* in: level number */ 00050 int Nrdof, /* in: number of vector components */ 00051 double* Vector1, /* in: local part of global Vector */ 00052 double* Vector2 /* in: local part of global Vector */ 00053 ); 00054 00058 extern int fem_exchange_dofs( 00059 int Solver_id, /* in: solver data structure to be used */ 00060 int Subsystem_id, /* in: solver data structure to be used */ 00061 int Level_id, /* in: level number */ 00062 double* Vec_dofs /* in: vector of dofs to be exchanged */ 00063 ); 00064 00065 #ifdef __cplusplus 00066 } 00067 #endif 00068 00069 #endif