# Interface definition for thorn FEMDriver # $Header$ implements: FEMDriver inherits: # -access to basis functions # -registration of independent local routines # -build matrix # -linear solver # -access/set mesh data # -access to field data (for IO) # -mesh reader and I/O # -interface to existing linear solvers # Register Basis functions # May need to have different basis functions at different points of the grid, # so will need to modify this in future somehow CCTK_INT FUNCTION FEMDriver_RegisterBasisFunction(CCTK_POINTER_TO_CONST IN GH, \ CCTK_INT IN which, \ CCTK_REAL IN CCTK_FPOINTER function_pointer(CCTK_REAL IN ARRAY coords)) # Register local element routines CCTK_INT FUNCTION FEMDriver_RegisterLEFunction(CCTK_POINTER_TO_CONST IN GH, \ CCTK_INT IN CCTK_FPOINTER function_pointer(CCTK_POINTER_TO_CONST IN GH)) # Register a linear solver CCTK_INT FUNCTION FEMDriver_RegisterLinearSolver(CCTK_POINTER_TO_CONST IN GH, \ CCTK_INT IN CCTK_FPOINTER function_pointer(CCTK_POINTER_TO_CONST IN GH)) PROVIDES FUNCTION FEMDriver_RegisterBasisFunction WITH FEMDriver_iRegisterBasisFunction LANGUAGE C PROVIDES FUNCTION FEMDriver_RegisterLEFunction WITH FEMDriver_iRegisterLEFunction LANGUAGE C PROVIDES FUNCTION FEMDriver_RegisterLinearSolver WITH FEMDriver_iRegisterLinearSolver LANGUAGE C # -access/set mesh data # -access to field data (for IO) # Provide AIF functions # Call basis function N CCTK_REAL FUNCTION FEMDriver_CallBasisFunction(CCTK_INT IN which, CCTK_REAL IN ARRAY coords) PROVIDES FUNCTION FEMDriver_CallBasisFunction WITH FEMDriver_iCallBasisFunction LANGUAGE C