[petsc-users] [petsc4py] Assembly fails
Matthew Knepley
knepley at gmail.com
Sat Mar 28 12:14:41 CDT 2020
On Fri, Mar 27, 2020 at 10:09 AM Matthew Knepley <knepley at gmail.com> wrote:
> On Fri, Mar 27, 2020 at 3:31 AM Alejandro Aragon - 3ME <
> A.M.Aragon at tudelft.nl> wrote:
>
>> Dear Matthew,
>>
>> Thanks for your email. I have attached the python code that reproduces
>> the following error in my computer:
>>
>
> I think I see the problem. There were changes in DM in order to support
> fields which only occupy part of the domain.
> Now you need to tell the DM about the fields before it builds a Section. I
> think in your code, you only need
>
> f = PetscContainer()
> f.setName("potential")
> dm.addField(field = f)
>
So Nicolas Barral found a much better way to do this. You only need
dm.setNumFields(1)
Thanks,
Matt
> from
> https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DM/DMAddField.html
> before the createSection().
> My Python may not be correct since I never use that interface.
>
> Thanks,
>
> Matt
>
>
>> (.pydev) ➜ dmplex_fem mpirun -np 2 python Cpp2Python.py
>> Traceback (most recent call last):
>> File "Cpp2Python.py", line 383, in <module>
>> sys.exit(Cpp2Python())
>> File "Cpp2Python.py", line 357, in Cpp2Python
>> dm = createfields(dm)
>> File "Cpp2Python.py", line 62, in createfields
>> section.setFieldName(0, "u")
>> File "PETSc/Section.pyx", line 59, in
>> petsc4py.PETSc.Section.setFieldName
>> petsc4py.PETSc.Error: error code 63
>> [1] PetscSectionSetFieldName() line 427 in
>> /private/tmp/pip-install-laf1l3br/petsc/src/vec/is/section/interface/section.c
>> [1] Argument out of range
>> [1] Section field 0 should be in [0, 0)
>> Traceback (most recent call last):
>> File "Cpp2Python.py", line 383, in <module>
>> sys.exit(Cpp2Python())
>> File "Cpp2Python.py", line 357, in Cpp2Python
>> dm = createfields(dm)
>> File "Cpp2Python.py", line 62, in createfields
>> section.setFieldName(0, "u")
>> File "PETSc/Section.pyx", line 59, in
>> petsc4py.PETSc.Section.setFieldName
>> petsc4py.PETSc.Error: error code 63
>> [0] PetscSectionSetFieldName() line 427 in
>> /private/tmp/pip-install-laf1l3br/petsc/src/vec/is/section/interface/section.c
>> [0] Argument out of range
>> [0] Section field 0 should be in [0, 0)
>> -------------------------------------------------------
>> Primary job terminated normally, but 1 process returned
>> a non-zero exit code.. Per user-direction, the job has been aborted.
>> -------------------------------------------------------
>> --------------------------------------------------------------------------
>> mpirun detected that one or more processes exited with non-zero status,
>> thus causing
>> the job to be terminated. The first process to do so was:
>>
>> Process name: [[23972,1],0]
>> Exit code: 1
>> --------------------------------------------------------------------------
>>
>> I’m using Python 3.8 and this is the output of ‘pip freeze'
>>
>> (.pydev) ➜ dmplex_fem pip freeze
>> cachetools==4.0.0
>> cycler==0.10.0
>> kiwisolver==1.1.0
>> llvmlite==0.31.0
>> matplotlib==3.2.1
>> mpi4py==3.0.3
>> numba==0.48.0
>> numpy==1.18.2
>> petsc==3.12.4
>> petsc4py==3.12.0
>> plexus==0.1.0
>> pyparsing==2.4.6
>> python-dateutil==2.8.1
>> scipy==1.4.1
>> six==1.14.0
>>
>> I’m looking forward to getting your insight on the issue.
>> Best regards,
>>
>> — Alejandro
>>
>>
>>
>> On 25 Mar 2020, at 17:37, Matthew Knepley <knepley at gmail.com> wrote:
>>
>> On Wed, Mar 25, 2020 at 12:29 PM Alejandro Aragon - 3ME <
>> A.M.Aragon at tudelft.nl> wrote:
>>
>> Dear everyone,
>>
>> I’m new to petsc4py and I’m trying to run a simple finite element code
>> that uses DMPLEX to load a .msh file (created by Gmsh). In version 3.10 the
>> code was working but I recently upgraded to 3.12 and I get the following
>> error:
>>
>> (.pydev) ➜ testmodule git:(e0bc9ae) ✗ mpirun -np 2 python
>> testmodule/__main__.py
>> {3: <testmodule.constitutive.elastic.Elastic object at 0x10feea520>}
>> {3: <testmodule.constitutive.elastic.Elastic object at 0x10d96d520>}
>> Traceback (most recent call last):
>> File "testmodule/__main__.py", line 32, in <module>
>> sys.exit(main(sys.argv))
>> File "testmodule/__main__.py", line 29, in main
>> step.solve(m)
>> File
>> "/Users/aaragon/Local/testmodule/testmodule/fem/analysis/static.py", line
>> 33, in solve
>> self.Amat.assemblyBegin(assembly=0) # FINAL_ASSEMBLY = 0
>> File "PETSc/Mat.pyx", line 1039, in petsc4py.PETSc.Mat.assemblyBegin
>> petsc4py.PETSc.Error: error code 63
>> [1] MatAssemblyBegin() line 5182 in
>> /private/tmp/pip-install-zurcx_6k/petsc/src/mat/interface/matrix.c
>> [1] MatAssemblyBegin_MPIAIJ() line 810 in
>> /private/tmp/pip-install-zurcx_6k/petsc/src/mat/impls/aij/mpi/mpiaij.c
>> [1] MatStashScatterBegin_Private() line 462 in
>> /private/tmp/pip-install-zurcx_6k/petsc/src/mat/utils/matstash.c
>> [1] MatStashScatterBegin_BTS() line 931 in
>> /private/tmp/pip-install-zurcx_6k/petsc/src/mat/utils/matstash.c
>> [1] PetscCommBuildTwoSidedFReq() line 555 in
>> /private/tmp/pip-install-zurcx_6k/petsc/src/sys/utils/mpits.c
>> [1] Argument out of range
>> [1] toranks[0] 2 not in comm size 2
>> Traceback (most recent call last):
>> File "testmodule/__main__.py", line 32, in <module>
>> sys.exit(main(sys.argv))
>> File "testmodule/__main__.py", line 29, in main
>> step.solve(m)
>> File
>> "/Users/aaragon/Local/testmodule/testmodule/fem/analysis/static.py", line
>> 33, in solve
>> self.Amat.assemblyBegin(assembly=0) # FINAL_ASSEMBLY = 0
>> File "PETSc/Mat.pyx", line 1039, in petsc4py.PETSc.Mat.assemblyBegin
>> petsc4py.PETSc.Error: error code 63
>> [0] MatAssemblyBegin() line 5182 in
>> /private/tmp/pip-install-zurcx_6k/petsc/src/mat/interface/matrix.c
>> [0] MatAssemblyBegin_MPIAIJ() line 810 in
>> /private/tmp/pip-install-zurcx_6k/petsc/src/mat/impls/aij/mpi/mpiaij.c
>> [0] MatStashScatterBegin_Private() line 462 in
>> /private/tmp/pip-install-zurcx_6k/petsc/src/mat/utils/matstash.c
>> [0] MatStashScatterBegin_BTS() line 931 in
>> /private/tmp/pip-install-zurcx_6k/petsc/src/mat/utils/matstash.c
>> [0] PetscCommBuildTwoSidedFReq() line 555 in
>> /private/tmp/pip-install-zurcx_6k/petsc/src/sys/utils/mpits.c
>> [0] Argument out of range
>> [0] toranks[0] 2 not in comm size 2
>> -------------------------------------------------------
>> Primary job terminated normally, but 1 process returned
>> a non-zero exit code.. Per user-direction, the job has been aborted.
>> -------------------------------------------------------
>> --------------------------------------------------------------------------
>> mpirun detected that one or more processes exited with non-zero status,
>> thus causing
>> the job to be terminated. The first process to do so was:
>>
>> Process name: [[46994,1],0]
>> Exit code: 1
>> --------------------------------------------------------------------------
>>
>>
>> This is in the call to assembly, which looks like this:
>>
>> # Begins assembling the matrix. This routine should be called after completing all calls to MatSetValues().
>> self.Amat.assemblyBegin(assembly=0) # FINAL_ASSEMBLY = 0
>> # Completes assembling the matrix. This routine should be called after MatAssemblyBegin().
>> self.Amat.assemblyEnd(assembly=0)
>>
>> I would appreciate if someone can give me some insight on what has
>> changed in the new version of petsc4py (or petsc for that matter) to make
>> this code work again.
>>
>>
>> It looks like you have an inconsistent build, or a memory overwrite.
>> Since you are in Python, I suspect the former. Can you build
>> PETSc from scratch and try this? Does it work in serial? Can you send a
>> small code that reproduces this?
>>
>> Thanks,
>>
>> Matt
>>
>>
>> Best regards,
>>
>> — Alejandro
>>
>>
>>
>> --
>> 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
>>
>> https://www.cse.buffalo.edu/~knepley/
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__www.cse.buffalo.edu_-7Eknepley_&d=DwMFaQ&c=XYzUhXBD2cD-CornpT4QE19xOJBbRy-TBPLK0X9U2o8&r=U1Pry6bTDByPujjSnTcPY6KNXqrym6APfmtom-lIPFA&m=WPJk3cZzX4wkA5n5wceeOf2wjrRxHYug5Gs78b9WHlc&s=vuuUnGL1h2Bfv_uY7e5cMSfiF1btYPrvwf5vKy1JoN0&e=>
>>
>>
>>
>
> --
> 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
>
> https://www.cse.buffalo.edu/~knepley/
> <http://www.cse.buffalo.edu/~knepley/>
>
--
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
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200328/7f352844/attachment-0001.html>
More information about the petsc-users
mailing list