# T4 - Solver Order

## The Order of Finite Differencing

In addition to whether the computation is done on the CPU or GPU, what order of finite differencing is also selectable with the `getEnergyTensor` function call. The default is 4th order.

{% code overflow="wrap" lineNumbers="true" %}

```matlab
%% Alcubierre
gridSize = [1 20 20 20];
worldCenter = (gridSize+1)./2;
velocity = 0.5;
R = 5;
sigma = 0.5;
Metric = metricGet_AlcubierreComoving(gridSize,worldCenter,velocity,R,sigma);

% Compute energy tensor on CPU using fourth order
EnergyTensorFourth = getEnergyTensor(Metric,0,'fourth');

% Compute energy tensor on CPU using second order
EnergyTensorSecond = getEnergyTensor(Metric,0,'second');

% Plotting Energy Tensor
clf
for i = 1:4
    for j = 1:4
        h = nexttile;
        surfq(EnergyTensorFourth.tensor{i,j}(1,:,:,round(worldCenter(4))),'EdgeColor','none')
        title(num2str(i) + "," + num2str(j))
    end
end
sgtitle(Metric.name + " Energy Tensor Fourth Order")

% Plotting Energy Tensor
clf
for i = 1:4
    for j = 1:4
        h = nexttile;
        surfq(EnergyTensorSecond.tensor{i,j}(1,:,:,round(worldCenter(4))),'EdgeColor','none')
        title(num2str(i) + "," + num2str(j))
    end
end
sgtitle(Metric.name + " Energy Tensor Second Order")
```

{% endcode %}

### Deciding between fourth vs second order

For almost all applications, fourth order is preferred over second order. However, when analyzing sharp metric transitions, second order can be a helpful check on the finite differencing errors.
