#ifndef QMS_QMS_H #define QMS_QMS_H #include "common.h" #if HAVE_OPENCL #include #endif #include #include "cctk.h" #include "qms_solve.h" /* precomputed values for a given refined grid */ typedef struct CoordPatch { CCTK_REAL origin[3]; CCTK_INT delta[3]; CCTK_INT size[3]; // basis values on the grid double *basis_val_r; double *basis_val_z; double *transform_z; double *transform_matrix; double *transform_matrix1; double *transform_tmp; double *one; double *w_scale; int y_idx; } CoordPatch; typedef struct QMSContext { QMSSolver *solver; cGH *gh; struct { double time; double *coeffs; } solution_cache[8]; int nb_solutions; double *coeffs_eval; uint64_t grid_expand_count; uint64_t grid_expand_time; CoordPatch *patches; int nb_patches; } QMSContext; int qms_maximal_solve(QMSContext *ms); #endif /* QMS_QMS_H */