## build -- Builds a preconditioner

    call prec%build(a, desc_a, info[,amold,vmold,imold])

Type:
  Synchronous.
On Entry
a
  the system sparse matrix. Scope: local
  Type: required
  Intent: in, target.
  Specified as: a sparse matrix data structure spdata`psb_Tspmat_type`.
prec
  the preconditioner.
  Scope: local
  Type: required
  Intent: inout.
  Specified as: an already initialized precondtioner data structure precdata`psb_prec_type`
desc_a
  the problem communication descriptor. Scope: local
  Type: required
  Intent: in, target.
  Specified as: a communication descriptor data structure descdata`psb_desc_type`.
amold
  The desired dynamic type for the internal matrix storage.
  Scope: local.
  Type: optional.
  Intent: in.
  Specified as: an object of a class derived from spbasedata`psb_T_base_sparse_mat`.
vmold
  The desired dynamic type for the internal vector storage.
  Scope: local.
  Type: optional.
  Intent: in.
  Specified as: an object of a class derived from vbasedata`psb_T_base_vect_type`.
imold
  The desired dynamic type for the internal integer vector storage.
  Scope: local.
  Type: optional.
  Intent: in.
  Specified as: an object of a class derived from (integer) vbasedata`psb_T_base_vect_type`.

On Return
prec
  the preconditioner.
  Scope: local
  Type: required
  Intent: inout.
  Specified as: a precondtioner data structure precdata`psb_prec_type`
info
  Error code.
  Scope: local
  Type: required
  Intent: out.
  An integer value; 0 means no error has been detected.

The `amold`, `vmold` and `imold` arguments may be employed to interface with special devices, such as GPUs and other accelerators.