                   int nx, int ny, int nxf, int nyf, float dx, float dy,
                   float * gamma_up_d, float rho, float gamma,
                   int * matching_indices_d, int ng, int rank, float * qc_comp) {
+    /*
+    Prolong coarse grid data to fine grid
+
+    Parameters
+    ----------
+    kernels, threads, blocks : dim3 *
+        number of kernels, threads and blocks for each process/kernel
+    cumulative_kernels : int *
+        cumulative number of kernels in mpi processes of r < rank
+    q_cd, q_fd : float *
+        coarse and fine grids of state vectors
+    nx, ny : int
+        dimensions of coarse grid
+    nxf, nyf : int
+        dimensions of fine grid
+    dx, dy : float
+        coarse grid cell spacings
+    gamma_up_d : float *
+        spatial metric
+    rho, gamma : float
+        density and adiabatic index
+    matching_indices_d : int *
+        position of fine grid wrt coarse grid
+    ng : int
+        number of ghost cells
+    rank : int
+        rank of MPI process
+    qc_comp : float *
+        grid of compressible variables on coarse grid
+    */
 
     int kx_offset = 0;
     int ky_offset = (kernels[0].y * blocks[0].y * threads[0].y - 2*ng) * rank;

                                     int nx, int ny, int nxf, int nyf,
                                     int * matching_indices,
                                     int kx_offset, int ky_offset) {
    // 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;

                    int * matching_indices,
                    float rho, float gamma, float * gamma_up,
                    int ng, int rank, float * qf_swe) {
    /*
    Restrict fine grid data to coarse grid

    Parameters
    ----------
    kernels, threads, blocks : dim3 *
        number of kernels, threads and blocks for each process/kernel
    cumulative_kernels : int *
        cumulative number of kernels in mpi processes of r < rank
    q_cd, q_fd : float *
        coarse and fine grids of state vectors
    nx, ny : int
        dimensions of coarse grid
    nxf, nyf : int
        dimensions of fine grid
    matching_indices : int *
        position of fine grid wrt coarse grid
    rho, gamma : float
        density and adiabatic index
    gamma_up : float *
        spatial metric
    ng : int
        number of ghost cells
    rank : int
        rank of MPI process
    qf_swe : float *
        grid of SWE variables on fine grid
    */

    int kx_offset = 0;
    int ky_offset = (kernels[0].y * blocks[0].y * threads[0].y - 2*ng) * rank;
