[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Program Design Question
On Mon, 8 May 2006, Joshua L. Adelman wrote:
I am a new user of PETsc and was hoping that a more experienced member of the
group could give me some insight as to what would be the proper formulation
of the following problem in PETsc. I am attempting to solve the simple ODE:
d{rho}/dt = K*rho
Is d{rho}/dt implemented simply as {{rho}^{n+1} - {rho}^{n})/dt or do you
have a mass matrix involved?
Where K is a large rate matrix that doesn't depend on time within the
simulation (i.e K(x)) and rho is a vector of densities. K is usually stiff as
it contains terms that reflect both diffusive and chemical transitions, and
its entries are sparse. I am interested in the evolution of the system in
time as well as the steady-state behavior. I have already implemented a
version of the code in Matlab and am looking to write a PETsc version that
can be run in parallel on a cluster. In my matlab code, setting up K is fast
and the rate limiting step is actually doing the solve.
Is the appropriate approach using the Backward Euler TS to solve the problem?
If there is not mass matrix then yes, you want to use that.
Also it is unclear to me whether I need to employ Distributed Arrays (DA).
If your ODE comes from discretizing a PDE on a structured (rectangular) grid
in 2 or 3d then the DA may be helpful to organize the partitioning of the
domain. But so long as you have a way of computing K in parallel (or computing
it fast sequentially (say in Matlab) and then loading it in in parallel then
you have no reason to us DA.
Barry
I
can provide more information about the nature of the simulation if necessary
if it helps in answering my questions.
Any suggestions/insight would be most appreciated.
Josh