All Packages Class Hierarchy This Package Previous Next Index
Interface jam.operator.BiLinearOperatorAdjoint
 public interface interface BiLinearOperatorAdjoint
 extends JamObject, BiLinearOperator
BiLinearOperatorAdjoint is a BiLinearOperator
in which the two underlying linear operators have adjoints implemented.
Should we include the PartialAdjoint as is done in HCL:
// access to the "partial adjoint" of the bilinear operator:
// Assume A:XxY > Z is the bilinear operator.
// Then this method returns the operator x > (A(x))'z.
// Its adjoint is the operator y > (A(.)y)'z
public hasAdjoint getPartialAdjoint(Vector z);

getPartialAdjoint(Vector)
 A BiLinearOperator in components is A_{ijk}
Here, the first index, i, indicates the range.
getPartialAdjoint
public abstract hasAdjoint getPartialAdjoint(Vector r)
 A BiLinearOperator in components is A_{ijk}
Here, the first index, i, indicates the range.
By contracting A with a vector in the range, r_{i}, we get a linear
operator:
B_{jk} = A_{ijk} * r_{i} (sum over i)
This is what I mean by the "partial adjoint".
It is an operator with adjoint which maps the spaces:
B : domain2 > domain1
adj(B) : domain1 > domain2
Why does the adjoint of B map from domain1 instead of B itself?
We use the convention that the first index from the left indicates
the range index. In A_{ijk}, j is for domain1 and k is for domain2.
Thus, B_{jk} maps from domain2 to domain1.
All Packages Class Hierarchy This Package Previous Next Index