[petsc-users] (no subject)
Ji Zhang
gotofd at gmail.com
Thu Sep 15 21:21:32 CDT 2016
I'm so apologize for the ambiguity. Let me clarify it.
I'm trying to simulation interactions among different bodies. Now I have
calculated the interaction between two of them and stored in the sub-matrix
m_ij. What I want to do is to consider the whole interaction and construct
all sub-matrices m_ij into a big matrix M, just like this, imaging the
problem contain 3 bodies,
[ m11 m12 m13 ]
M = | m21 m22 m23 | ,
[ m31 m32 m33 ]
The system is huge that I have to use MPI and a lot of cups. A mcve code is
showing below, and I'm using a python wrap of PETSc, however, their grammar
is similar.
import numpy as np
from petsc4py import PETSc
mSizes = (5, 8, 6)
mij = []
# create sub-matrices mij
for i in range(len(mSizes)):
for j in range(len(mSizes)):
temp_m = PETSc.Mat().create(comm=PETSc.COMM_WORLD)
temp_m.setSizes(((None, mSizes[i]), (None, mSizes[j])))
temp_m.setType('mpidense')
temp_m.setFromOptions()
temp_m.setUp()
temp_m[:, :] = np.random.random_sample((mSizes[i], mSizes[j]))
temp_m.assemble()
mij.append(temp_m)
# Now we have four sub-matrices. I would like to construct them into a
big matrix M.
M = PETSc.Mat().create(comm=PETSc.COMM_WORLD)
M.setSizes(((None, np.sum(mSizes)), (None, np.sum(mSizes))))
M.setType('mpidense')
M.setFromOptions()
M.setUp()
mLocations = np.insert(np.cumsum(mSizes), 0, 0) # mLocations = [0, mSizes]
for i in range(len(mSizes)):
for j in range(len(mSizes)):
M[mLocations[i]:mLocations[i+1],
mLocations[j]:mLocations[j+1]] = mij[i*len(mSizes)+j][:, :]
M.assemble()
Thanks.
2016-09-16
Best,
Regards,
Zhang Ji
Beijing Computational Science Research Center
E-mail: gotofd at gmail.com
Wayne
On Thu, Sep 15, 2016 at 8:58 PM, Matthew Knepley <knepley at gmail.com> wrote:
> On Thu, Sep 15, 2016 at 4:23 AM, Ji Zhang <gotofd at gmail.com> wrote:
>
>> Thanks Matt. It works well for signal core. But is there any solution if
>> I need a MPI program?
>>
>
> It unclear what the stuff below would mean in parallel.
>
> If you want to assemble several blocks of a parallel matrix that looks
> like serial matrices, then use
>
> http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/
> MatGetLocalSubMatrix.html
>
> Thanks,
>
> Matt
>
>
>> Thanks.
>>
>> Wayne
>>
>> On Tue, Sep 13, 2016 at 9:30 AM, Matthew Knepley <knepley at gmail.com>
>> wrote:
>>
>>> On Mon, Sep 12, 2016 at 8:24 PM, Ji Zhang <gotofd at gmail.com> wrote:
>>>
>>>> Dear all,
>>>>
>>>> I'm using petsc4py and now face some problems.
>>>> I have a number of small petsc dense matrices mij, and I want to
>>>> construct them to a big matrix M like this:
>>>>
>>>> [ m11 m12 m13 ]
>>>> M = | m21 m22 m23 | ,
>>>> [ m31 m32 m33 ]
>>>> How could I do it effectively?
>>>>
>>>> Now I'm using the code below:
>>>>
>>>> # get indexes of matrix mij
>>>> index1_begin, index1_end = getindex_i( )
>>>> index2_begin, index2_end = getindex_j( )
>>>> M[index1_begin:index1_end, index2_begin:index2_end] = mij[:, :]
>>>> which report such error messages:
>>>>
>>>> petsc4py.PETSc.Error: error code 56
>>>> [0] MatGetValues() line 1818 in /home/zhangji/PycharmProjects/
>>>> petsc-petsc-31a1859eaff6/src/mat/interface/matrix.c
>>>> [0] MatGetValues_MPIDense() line 154 in
>>>> /home/zhangji/PycharmProjects/petsc-petsc-31a1859eaff6/src/m
>>>> at/impls/dense/mpi/mpidense.c
>>>>
>>>
>>> Make M a sequential dense matrix.
>>>
>>> Matt
>>>
>>>
>>>> [0] No support for this operation for this object type
>>>> [0] Only local values currently supported
>>>>
>>>> Thanks.
>>>>
>>>>
>>>> 2016-09-13
>>>> Best,
>>>> Regards,
>>>> Zhang Ji
>>>> Beijing Computational Science Research Center
>>>> E-mail: gotofd at gmail.com
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> What most experimenters take for granted before they begin their
>>> experiments is infinitely more interesting than any results to which their
>>> experiments lead.
>>> -- Norbert Wiener
>>>
>>
>>
>
>
> --
> What most experimenters take for granted before they begin their
> experiments is infinitely more interesting than any results to which their
> experiments lead.
> -- Norbert Wiener
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20160916/f6b5995b/attachment-0001.html>
More information about the petsc-users
mailing list