                                      int nx, int ny, int nxf, int nyf,
                                      int * matching_indices,
                                      int kx_offset, int ky_offset) {
+
+    /*
+    Interpolate SWE variables on fine grid to get them on coarse grid.
+
+    Parameters
+    ----------
+    qf_swe : float *
+        SWE variables on fine grid
+    q_c : float *
+        coarse grid state vector
+    nx, ny : int
+        coarse grid dimensions
+    nxf, nyf : int
+        fine grid dimensions
+    matching_indices : int *
+        position of fine grid wrt coarse grid
+    kx_offset, ky_offset : int
+        kernel offsets in the x and y directions
+    */
     // interpolate fine grid to coarse grid
     int x = kx_offset + blockIdx.x * blockDim.x + threadIdx.x;
     int y = ky_offset + blockIdx.y * blockDim.y + threadIdx.y;

    delete[] Ff_h;
}


#endif

                    int nx, int ny, int nxf, int nyf, float dx, float dy,
                    int * matching_indices_d,
                    int kx_offset, int ky_offset) {
    /*
    Reconstruct fine grid variables from compressible variables on coarse grid

    Parameters
    ----------
    q_comp : float *
        compressible variables on coarse grid
    q_f : float *
        fine grid state vector
    nx, ny : int
        coarse grid dimensions
    nxf, nyf : int
        fine grid dimensions
    dx, dy : float
        coarse grid spacings
    matching_indices_d : int *
        position of fine grid wrt coarse grid
    kx_offset, ky_offset : int
        kernel offsets in the x and y directions
    */

    int x = kx_offset + blockIdx.x * blockDim.x + threadIdx.x;
    int y = ky_offset + blockIdx.y * blockDim.y + threadIdx.y;
