Dear Barry,
thank you for your reply.

On 09/07/15 11:47, Barry Smith wrote:
> 
>> On Jul 8, 2015, at 6:25 PM, Chris Bradley <[email protected]> wrote:
>>
>> Dear PETSc,
>> I was wondering if you had any advice for using PETSc TS solvers to
>> solve a vector of ODEs. PETSc TS solvers solve DAEs of the form
>>
>> f(t,u,u^dot,a) = g(u,t) = 0 (for my case)
>>
>> where f is a user provided function, u is a vector of state variables,
>> u^dot a vector of the derivatives of state variables and a is a vector
>> of parameters (passed through the context).
>>
>> I need to solve a large number of these DAEs (one for every node in a
>> bigger finite element problem). Is there a vector form of the TS solvers
>> that can solve
>>
>> F(t,U,U^dot) = G(U,t) = 0
>>
>> where F is now a vector, U is a matrix of state variables and U^dot is a
>> matrix of the derivatives of U. Each row of the system corresponds to
>> the standard PETSc TS problem above and is independent of every other row.
> 
>   No, there is not.
> 
>>
>> If I understand the TS manual correctly then if I wanted to do this in
>> PETSc I would have to create a TS object and state and derivative
>> vectors objects for each row?
> 
>    That is one way to do (if the size of the individual DAE is tiny (say 3) 
> then yes it would use a great deal of "extra" memory). You could also have a 
> single TS on each process that you "reused" for each "small problem" but how 
> difficult this would be depends on how often you need to solve each of these 
> (for example do you run it for many time steps and then move on to the next 
> one or do you need to get out the result after each time step and use it in 
> some other computation?).
> 

The size of the DAE (size of u etc.) is anywhere from 2-3 to 80-90 with
an average of ~30-40. The DAE is integrated from t1 to t2 and then the
solution is used in a larger finite element solve which marches through
time. Thus each ODE is evaluated a large number of times. It could be
possible to reuse the TS object but I think I would still have to use
individual vector objects that point at the state variables and their
derivatives for each ODE??

>> All these PETSc objects for each row would
>> seem like a big overhead if there was a very large number of rows
>> (potentially tens of millions for my problem).
> 
>   How many unknowns are there in each individual (uncoupled) DAE?

anywhere from 2-3 to 80-90 with an average of ~30-40

> 
>   Is each individual DAE essentially the same DAE (with different parameter 
> values etc?)

Yes, It can be organised that way. There may be a few different DAEs but
these can be consolidated into a number of blocks each with the same DAE.

> 
>   Is the Jacobian for each individual (uncoupled) DAE dense or sparse, if 
> sparse is it the same for each one?

The Jacobian would be sparse and constant.

Best wishes
Chris

> 
>   Barry
> 
>>
>> Thanks for your help
>> Chris
>> -- 
>> Chris Bradley
>> Auckland Bioengineering Institute,
>> University of Auckland,
>> Private Bag 92019,
>> New Zealand.
>>
>> Tel: +64 9 373 7599 xtn 89924
>> Fax: +64 9 367 7157
>>
> 

-- 
Chris Bradley
Auckland Bioengineering Institute,
University of Auckland,
Private Bag 92019,
New Zealand.

Tel: +64 9 373 7599 xtn 89924
Fax: +64 9 367 7157

Reply via email to