# kspaceFirstOrder3DG

3D time-domain simulation of wave propagation on a GPU using C++ CUDA code.

## Syntax

See `kspaceFirstOrder3D` and `kspaceFirstOrder3DC`.

## Description

`kspaceFirstOrder3DG` provides a blind interface to the C++/CUDA version of `kspaceFirstOrder3D` (called `kspaceFirstOrder-CUDA`) in the same way as `kspaceFirstOrder3DC`. Note, the C++ code does not support all input options, and all display options are ignored (only command line outputs are given). See the k-Wave user manual for more information.

The function works by appending the optional input `'SaveToDisk'` to the user inputs and then calling `kspaceFirstOrder3D` to save the input files to disk. The contents of `sensor.record` (if set) are parsed as input flags, and the C++ code is run using the `system` command. The output files are then automatically loaded from disk and returned in the same fashion as `kspaceFirstOrder3D`. The input and output files are saved to the temporary directory native to the operating system, and are deleted after the function runs.

This function requires the C++ binary/executable of `kspaceFirstOrder-CUDA` to be downloaded from www.k-wave.org/download.php and placed in the "binaries" directory of the k-Wave toolbox. Alternatively, the name and location of the binary can be specified using the optional input parameters `'BinaryName'` and `'BinariesPath'`.

## See Also

`kspaceFirstOrder3D`, `kspaceFirstOrder3DC`