Krylov space solver in Fortran 2009: Beta version |

The first step involves constructing the data space vectors, and . The user might begin by specifying some initial values for these two vectors. These values then need to be updated according to the data associated with the problem, a potential initial model , the operators being used , and weights applied to the residual .

(7) |

Once the initial residual is calculated, we iterate to find through,

(8) |

where is a preconditioning operator. Finally we need update our model,

(9) |

This procedure allows a single solver to be written for a myriad of different inverse problems. It also demonstrates one of the biggest weaknesses of Fortran 90. Fortran 90 does not support function pointers. As a result, SEP has traditionally written different solvers for regularized and preconditioned problems. Combination operators could only be created by writing a function that specifically named the two operators that were to be combined. As a result, creating complex inversion problems quickly became cumbersome and prone to errors.

Krylov space solver in Fortran 2009: Beta version |

2011-09-13