00001 // lsh_mkb_core_fem_intf.h - interface required by mkb_core 00002 // implementations are usually provided by some adapter like e.g. 00003 // the ones in lsd_mkb or lsd_ns_supg directories, that implement 00004 // an interface known to FEM code - in particular in ModFEM 00005 // the FEM part of code interacting with the solver is a solver 00006 // interface module with the current practice of one-to-one 00007 // correspondence between interface and adapter modules (e.g. 00008 // sid_mkb for lsd_mkd, sid_ns_supg for lsd_ns_supg etc.) 00009 00010 #ifndef _lsh_mkb_core_fem_intf_ 00011 #define _lsh_mkb_core_fem_intf_ 00012 00013 #include <stdio.h> 00014 00018 int lsr_mkb_core_fem_proj_sol_lev( /* returns: 1 - success; <=0 - error code*/ 00019 int Solver_id, /* in: solver data structure to be used */ 00020 int Subsystem_id, /* in: subsystem data structure to be used */ 00021 int Ilev_from, /* in: level number to project from */ 00022 double* Vec_from, /* in: vector of values to project */ 00023 int Ilev_to, /* in: level number to project to */ 00024 double* Vec_to /* out: vector of projected values */ 00025 ); 00026 00030 extern double lsr_mkb_core_fem_vec_norm( /* returns: L2 norm of global Vector */ 00031 int Solver_id, /* in: pointer to solver data structure to be passed 00032 to data structure dependent routines */ 00033 int Subsystem_id, /* in: subsystem data structure to be used */ 00034 int Level_id, /* in: index of the mesh (level) */ 00035 int Nrdof, /* in: number of vector components */ 00036 double* Vector /* in: local part of global Vector */ 00037 ); 00038 00042 extern double lsr_mkb_core_fem_sc_prod( 00043 /* returns: scalar product of Vector1 and Vector2 */ 00044 int Solver_id, /* in: pointer to solver data structure to be passed 00045 to data structure dependent routines */ 00046 int Subsystem_id, /* in: subsystem data structure to be used */ 00047 int Level_id, /* in: index of the mesh (level) */ 00048 int Nrdof, /* in: number of vector components */ 00049 double* Vector1, /* in: local part of global Vector */ 00050 double* Vector2 /* in: local part of global Vector */ 00051 ); 00052 00056 extern int lsr_mkb_core_fem_exchange_dofs( 00057 int Solver_id, /* in: pointer to solver data structure to be passed 00058 to data structure dependent routines */ 00059 int Subsystem_id, /* in: subsystem data structure to be used */ 00060 int Level_id, /* in: index of the mesh (level) */ 00061 double* Vec_dofs /* in: vector of dofs to be exchanged */ 00062 ); 00063 00064 #endif