On Fri, Mar 27, 2020 at 10:09 AM Matthew Knepley <knep...@gmail.com> wrote:
> On Fri, Mar 27, 2020 at 3:31 AM Alejandro Aragon - 3ME < > a.m.ara...@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 <knep...@gmail.com> wrote: >> >> On Wed, Mar 25, 2020 at 12:29 PM Alejandro Aragon - 3ME < >> a.m.ara...@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/>