<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
On 16.06.2011 16:07, Matthew Knepley wrote:
<blockquote
cite="mid:BANLkTiknQ0kWzJ92LPHRFs_5cX39N0DpNg@mail.gmail.com"
type="cite">On Thu, Jun 16, 2011 at 1:43 PM, Alexander Grayver <span
dir="ltr"><<a moz-do-not-send="true"
href="mailto:agrayver@gfz-potsdam.de">agrayver@gfz-potsdam.de</a>></span>
wrote:<br>
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
0.8ex; border-left: 1px solid rgb(204, 204, 204);
padding-left: 1ex;">
<div bgcolor="#ffffff" text="#000000">
<div class="im"> >> Could you explain more about the
task you're trying to do. <br>
<br>
</div>
Well, I can try. That is pretty specific task, I wouldn't
like to go deep into details. <br>
<br>
Let's say we have a discretized model of some physical
parameter m (say acoustic velocity). Number of model
parameters is N. We need to take M measurements d within
model (say time traveling of acoustic wave) based on M
different sets of receiver/source positions.<br>
In our case N >> M (e.g. 10^7 >> 10^3).<br>
We have operator F (which might linear or not) that defines
relationship between m and d:<br>
d=F(m)<br>
<br>
The operator F is just a system of equations actually. I
have no problem now to solve it for any m.<br>
<br>
What I need now is to compute the variation of this
operator:<br>
<br>
A = \frac{\partial d_i}{\partial m_j}, for all i=1..M,
j=1..N<br>
<br>
After some maths this calculation could be reformulated as a
triple product:<br>
<br>
A_i = C*F(m)^-1*v<br>
<br>
Where C some sparse matrix.<br>
<br>
Once the A is computed I want to solve another problem:<br>
<br>
(A'*A)b=A'*r<br>
<br>
Which is a Gauss-Newton system now, <br>
A'*A is truncated Hessian, <br>
A'*r is gradient, <br>
r = d - d_obs, where d_obs is the real observed data.<br>
b -- model change which have to applied to original model m
in order to explain your observed data better<br>
<br>
The latter problem I want to solve using petsc matrix-free
formulation and some iterative solver (haven't decided yet
which, could you advice one?).<br>
<br>
But the POINT here is that the latter problem must be solved
not in the original m-space, but in transformed x-space. For
that we need another A:<br>
<br>
A_tr = \frac{\partial d_i}{\partial x_j}<br>
<br>
However, using chain rule you can represent A_tr in terms of
A:<br>
<br>
A = \frac{\partial d_i}{\partial m_j} * \frac{\partial
m_j}{\partial x_j} <br>
<br>
\frac{\partial m_j}{\partial x_j} - is the exactly
transformation I want to apply to matrix A. It's a simple
scalar expression, but has to be applied to each element of
A.<br>
<br>
Did it help? :)<br>
</div>
</blockquote>
<div><br>
</div>
<div>Do you ever actually use A? If not, why not just build the
transformed operator directly?</div>
</div>
</blockquote>
<br>
Two reasons:<br>
1. It's wrong from the architectural point view. At the point where
I compute A I prefer know nothing about transformation, just working
with original physical parameters is much more natural.<br>
2. This original A might be used in the future. <br>
<br>
I really suggested that would be easier to apply this transformation
to the whole matrix. If it's impossible than I have to find another
way. Just want to be sure of that. <br>
<br>
<blockquote
cite="mid:BANLkTiknQ0kWzJ92LPHRFs_5cX39N0DpNg@mail.gmail.com"
type="cite">
<div class="gmail_quote">
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
0.8ex; border-left: 1px solid rgb(204, 204, 204);
padding-left: 1ex;">
<div bgcolor="#ffffff" text="#000000"> Regards,<br>
<font color="#888888"> Alexander</font>
<div>
<div class="h5"><br>
<br>
<br>
On 16.06.2011 14:55, Jed Brown wrote:
<blockquote type="cite">
<div class="gmail_quote">On Thu, Jun 16, 2011 at
14:48, Alexander Grayver <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:agrayver@gfz-potsdam.de"
target="_blank">agrayver@gfz-potsdam.de</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt
0pt 0pt 0.8ex; border-left: 1px solid rgb(204,
204, 204); padding-left: 1ex;"> by the grid I
meant that this matrix is 2d array, not a real
grid of some physical parameters or whatever and
it's also not a linear operator itself.</blockquote>
</div>
<div><br>
</div>
<div>Could you explain more about the task you're
trying to do. Pseudocode or Matlab for the whole
process would be useful. There might be a better way
to do this without using Mat to store something that
is not a linear operator.</div>
</blockquote>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<br>
-- <br>
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to
which their experiments lead.<br>
-- Norbert Wiener<br>
</blockquote>
<br>
</body>
</html>