 
             )
 
-        marker_Fe_hat[p] = Fe_hat_t * marker_Fe[p];
+        marker_Fe_hat[p] = (Mat33(1.0) + device_settings.dt * Fe_hat_t) * marker_Fe[p];
     }
 }
 

    const int p = blockIdx.x * blockDim.x + threadIdx.x;
    if (p < device_settings.num_mpm_markers) {
        const real3 xi = sorted_pos[p];
        Mat33 Fe_hat_t(1.0f);

        int cx, cy, cz;
        const real bin_edge = device_settings.bin_edge;


        LOOP_TWO_RING_GPUSP(

            real vnx = grid_vel[current_node * 3 + 0];  //
            real vny = grid_vel[current_node * 3 + 1];  //
            real vnz = grid_vel[current_node * 3 + 2];

            real Tx = (xi.x - current_node_locationx) * inv_bin_edge;  //
            real Ty = (xi.y - current_node_locationy) * inv_bin_edge;  //
