Thank you, Andrew, now it is clear that my problem is ill-posed. On 30.03.2016 14:18, Andrew McRae wrote:
Ah, when using preonly/lu, adding "ksp_converged_reason": True to the solver_parameters dictionary gives the extra output
Linear firedrake_snes_0_ solve did not converge due to DIVERGED_PCSETUP_FAILED iterations 0 PCSETUP_FAILED due to FACTOR_NUMERIC_ZEROPIVOT
On 30 March 2016 at 12:16, Andrew McRae <A.T.T.McRae@bath.ac.uk <mailto:A.T.T.McRae@bath.ac.uk>> wrote:
The matrix appears to be singular, though I don't know why I don't get a zero-pivot error or similar.
The code I run is as follow, using 8x8 rather than 64x64 for sanity.
--- from firedrake import *
size = 8 mesh = UnitSquareMesh(size, size, quadrilateral = True) V = FunctionSpace(mesh, "CG", 1)
f = Function(V) f.interpolate(Expression("1"))
u_tilde = Function(V) u_tilde.interpolate(Expression("1.0/(1+exp(-10*x[0]))/(1+exp(-10*(1-x[0])))/(1+exp(-10*x[1]))/(1+exp(-10*(1-x[1])))"))
w_tilde = TrialFunction(V) v = TestFunction(V)
a_tilde = (w_tilde*dot(grad(u_tilde), grad(v)))*dx L = f*v*dx
A = assemble(a_tilde) vals = A.M.handle[:, :] import numpy as np print np.linalg.svd(vals)[1] assert False ---
This gives me a O(10^-16) singular value, i.e. the matrix is singular. I suspect this is due to the symmetry of u_tilde: grad(u_tilde) is 0 at the middle of the domain, so perhaps that test function is essentially unused.
On 30 March 2016 at 11:48, George Ovchinnikov <lives9@gmail.com <mailto:lives9@gmail.com>> wrote:
Yes, I think it was connection issue, now I've updated firedrake and following code
size = 64 mesh = UnitSquareMesh(size, size, quadrilateral = True) V = FunctionSpace(mesh, "CG", 1)
f = Function(V) f.interpolate(Expression("1"))
u_tilde = Function(V) u_tilde.interpolate(Expression("1.0/(1+exp(-10*x[0]))/(1+exp(-10*(1-x[0])))/(1+exp(-10*x[1]))/(1+exp(-10*(1-x[1])))" ))
w_tilde = TrialFunction(V) v = TestFunction(V)
a_tilde = (w_tilde * dot(grad(u_tilde), grad(v))) * dx frm_tilde = assemble( a_tilde )
L = f * v * dx rhs = assemble(L)
w_sol = Function(V) solve(a_tilde == L, w_sol)
File("w_sol.pvd").write(w_sol)
runs, but result looks suspicious: the f and u_tilde have symmetries, while w_sol, does not (look at lower left corner of the image attached). Also, solve runs only without any parameters, attempt to set any results in errors. For example
solve(a_tilde == L, w_sol, solver_parameters={'ksp_type': 'richardson', 'pc_type': 'jacobi'})
results in
--------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) <ipython-input-12-682f5be8ad08> in <module>() 22 w_sol = Function(V) 23 solve(a_tilde == L, w_sol, solver_parameters={'ksp_type': 'richardson', ---> 24 'pc_type': 'jacobi'}) 25 26 File("w_sol.pvd").write(w_sol)
/home/george/polygon/firedrake/local/lib/python2.7/site-packages/firedrake/solving.pyc in solve(*args, **kwargs) 118 # Call variational problem solver if we get an equation 119 if isinstance(args[0], ufl.classes.Equation): --> 120 _solve_varproblem(*args, **kwargs) 121 else: 122 # Solve pre-assembled system
/home/george/polygon/firedrake/local/lib/python2.7/site-packages/firedrake/solving.pyc in _solve_varproblem(*args, **kwargs) 145 options_prefix=options_prefix) 146 with progress(INFO, 'Solving linear variational problem'): --> 147 solver.solve() 148 149 # Solve nonlinear variational problem
<decorator-gen-418> in solve(self)
/home/george/polygon/firedrake/local/lib/python2.7/site-packages/pyop2/profiling.pyc in wrapper(f, *args, **kwargs) 201 self.stop() 202 else: --> 203 return f(*args, **kwargs) 204 return decorator(wrapper, f) 205
/home/george/polygon/firedrake/local/lib/python2.7/site-packages/firedrake/variational_solver.pyc in solve(self) 188 self.snes.solve(None, v) 189 --> 190 solving_utils.check_snes_convergence(self.snes) 191 192
/home/george/polygon/firedrake/local/lib/python2.7/site-packages/firedrake/solving_utils.pyc in check_snes_convergence(snes) 60 raise RuntimeError("""Nonlinear solve failed to converge after %d nonlinear iterations. 61 Reason: ---> 62 %s""" % (snes.getIterationNumber(), msg)) 63 64
RuntimeError: Nonlinear solve failed to converge after 0 nonlinear iterations. Reason: Inner linear solve failed to converge after 3 iterations with reason: DIVERGED_DTOL
and solve(a_tilde == L, w_sol, solver_parameters={'ksp_type': 'preonly', 'pc_type': 'lu'})
results in:
--------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) <ipython-input-13-7297871754fa> in <module>() 22 w_sol = Function(V) 23 solve(a_tilde == L, w_sol, solver_parameters={'ksp_type': 'preonly', ---> 24 'pc_type': 'lu'}) 25 26 File("w_sol.pvd").write(w_sol)
/home/george/polygon/firedrake/local/lib/python2.7/site-packages/firedrake/solving.pyc in solve(*args, **kwargs) 118 # Call variational problem solver if we get an equation 119 if isinstance(args[0], ufl.classes.Equation): --> 120 _solve_varproblem(*args, **kwargs) 121 else: 122 # Solve pre-assembled system
/home/george/polygon/firedrake/local/lib/python2.7/site-packages/firedrake/solving.pyc in _solve_varproblem(*args, **kwargs) 145 options_prefix=options_prefix) 146 with progress(INFO, 'Solving linear variational problem'): --> 147 solver.solve() 148 149 # Solve nonlinear variational problem
<decorator-gen-418> in solve(self)
/home/george/polygon/firedrake/local/lib/python2.7/site-packages/pyop2/profiling.pyc in wrapper(f, *args, **kwargs) 201 self.stop() 202 else: --> 203 return f(*args, **kwargs) 204 return decorator(wrapper, f) 205
/home/george/polygon/firedrake/local/lib/python2.7/site-packages/firedrake/variational_solver.pyc in solve(self) 188 self.snes.solve(None, v) 189 --> 190 solving_utils.check_snes_convergence(self.snes) 191 192
/home/george/polygon/firedrake/local/lib/python2.7/site-packages/firedrake/solving_utils.pyc in check_snes_convergence(snes) 60 raise RuntimeError("""Nonlinear solve failed to converge after %d nonlinear iterations. 61 Reason: ---> 62 %s""" % (snes.getIterationNumber(), msg)) 63 64
RuntimeError: Nonlinear solve failed to converge after 0 nonlinear iterations. Reason: Inner linear solve failed to converge after 0 iterations with reason: unknown reason (petsc4py enum incomplete?)
On 30.03.2016 12:46, Andrew McRae wrote: > The second and third of those links work for me, so perhaps there's an > issue at your end. > > Anyway, let's bypass this for now by running in "minimal PETSc" mode. > Can you edit your firedrake-update script (located at, I guess, > /home/george/polygon/firedrake/bin/firedrake-update) by changing > args.minimal_petsc from False to True (around line 120-130) and rerun? > This should install PETSc without most third-party packages, including > the one you're having trouble with, when you run firedrake-update. > > On 29 March 2016 at 20:18, George Ovchinnikov <lives9@gmail.com <mailto:lives9@gmail.com> > <mailto:lives9@gmail.com <mailto:lives9@gmail.com>>> wrote: > > I'm trying to update firedrake, but getting > > TESTING: configureLibrary from > config.packages.netcdf(/tmp/pip-YAhIai-build/config/BuildSystem/config/package.py:626) > > =============================================================================== > Trying to download > ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4.3.2.tar.gz for NETCDF > > =============================================================================== > > > =============================================================================== > Trying to download > http://ftp.mcs.anl.gov/pub/petsc/externalpackages/netcdf-4.3.2.tar.gz > for NETCDF > > =============================================================================== > > > =============================================================================== > Trying to download > ftp://ftp.mcs.anl.gov/pub/petsc/externalpackages/netcdf-4.3.2.tar.gz for > NETCDF > > =============================================================================== > > > ******************************************************************************* > UNABLE to CONFIGURE with GIVEN OPTIONS (see > configure.log for details): > > ------------------------------------------------------------------------------- > Unable to download NETCDF > Unable to download package NETCDF from: > ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4.3.2.tar.gz > * If URL specified manually - perhaps there is a typo? > * If your network is disconnected - please reconnect and rerun > ./configure > * Or perhaps you have a firewall blocking the download > * Alternatively, you can download the above URL manually, to > /yourselectedlocation/netcdf-4.3.2.tar.gz > and use the configure option: > --download-netcdf=/yourselectedlocation/netcdf-4.3.2.tar.gz > file could not be opened successfully > Downloaded package NETCDF from: > http://ftp.mcs.anl.gov/pub/petsc/externalpackages/netcdf-4.3.2.tar.gz is > not a tarball. > [or installed python cannot process compressed files] > * If you are behind a firewall - please fix your proxy and rerun > ./configure > For example at LANL you may need to set the environmental variable > http_proxy (or HTTP_PROXY?) to http://proxyout.lanl.gov > * Alternatively, you can download the above URL manually, to > /yourselectedlocation/netcdf-4.3.2.tar.gz > and use the configure option: > --download-netcdf=/yourselectedlocation/netcdf-4.3.2.tar.gz > Unable to download package NETCDF from: > ftp://ftp.mcs.anl.gov/pub/petsc/externalpackages/netcdf-4.3.2.tar.gz > * If URL specified manually - perhaps there is a typo? > * If your network is disconnected - please reconnect and rerun > ./configure > * Or perhaps you have a firewall blocking the download > * Alternatively, you can download the above URL manually, to > /yourselectedlocation/netcdf-4.3.2.tar.gz > and use the configure option: > --download-netcdf=/yourselectedlocation/netcdf-4.3.2.tar.gz > > ******************************************************************************* > > Traceback (most recent call last): > File "<string>", line 1, in <module> > File "/tmp/pip-YAhIai-build/setup.py", line 302, in <module> > **metadata) > File "/usr/lib/python2.7/distutils/core.py", line 151, in setup > dist.run_commands() > File "/usr/lib/python2.7/distutils/dist.py", line 953, in > run_commands > self.run_command(cmd) > File "/usr/lib/python2.7/distutils/dist.py", line 972, in > run_command > cmd_obj.run() > File "/tmp/pip-YAhIai-build/setup.py", line 218, in run > config(prefix, self.dry_run) > File "/tmp/pip-YAhIai-build/setup.py", line 148, in config > if status != 0: raise RuntimeError(status) > RuntimeError: 256 > > ---------------------------------------- > Command "/home/george/polygon/firedrake/bin/python -u -c "import > setuptools, > tokenize;__file__='/tmp/pip-YAhIai-build/setup.py';exec(compile(getattr(tokenize, > 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, > 'exec'))" install --record /tmp/pip-OhlEEH-record/install-record.txt > --single-version-externally-managed --compile --install-headers > /home/george/polygon/firedrake/include/site/python2.7/petsc" failed with > error code 1 in /tmp/pip-YAhIai-build/ > Traceback (most recent call last): > File "firedrake-install", line 836, in <module> > install("petsc/") > File "firedrake-install", line 497, in install > run_pip_install(["--ignore-installed", package]) > File "firedrake-install", line 360, in run_pip_install > check_call(pipinstall + pipargs) > File "firedrake-install", line 211, in check_call > subprocess.check_call(arguments, env=env) > File "/usr/lib/python2.7/subprocess.py", line 540, in check_call > raise CalledProcessError(retcode, cmd) > subprocess.CalledProcessError: Command > '['/home/george/polygon/firedrake/bin/pip', 'install', '--no-deps', > '--ignore-installed', 'petsc/']' returned non-zero exit status 1 > > > On all of the abovementioned urls I'm getting 403 error when trying to > access manually. > > Sincerely, > George > > > On 29.03.2016 18:30, Andrew McRae wrote: > > I also note that your line numbers don't match up with the current > > codebase; e.g. > > https://github.com/firedrakeproject/firedrake/blob/master/firedrake/linear_s... > > > > On 29 March 2016 at 16:13, George Ovchinnikov <lives9@gmail.com <mailto:lives9@gmail.com> <mailto:lives9@gmail.com <mailto:lives9@gmail.com>> > > <mailto:lives9@gmail.com <mailto:lives9@gmail.com> <mailto:lives9@gmail.com <mailto:lives9@gmail.com>>>> wrote: > > > > Here it is > > > > > --------------------------------------------------------------------------- > > KeyError Traceback (most recent > > call last) > > <ipython-input-8-752634385ffb> in <module>() > > 22 > > 23 w_sol = Function(V) > > ---> 24 solve(frm_tilde, rhs, w_sol, > solver_parameters={"ksp_type": > > "preonly", "pc_type": "lu"}) > > 25 File("w_sol.pvd") << w_sol > > > > > /home/george/polygon/firedrake_new/firedrake/local/lib/python2.7/site-packages/firedrake/solving.pyc > > in solve(*args, **kwargs) > > 121 else: > > 122 # Solve pre-assembled system > > --> 123 return _la_solve(*args, **kwargs) > > 124 > > 125 > > > > > /home/george/polygon/firedrake_new/firedrake/local/lib/python2.7/site-packages/firedrake/solving.pyc > > in _la_solve(A, x, b, **kwargs) > > 209 > options_prefix=options_prefix) > > 210 > > --> 211 solver.solve(x, b) > > 212 > > 213 > > > > > /home/george/polygon/firedrake_new/firedrake/local/lib/python2.7/site-packages/firedrake/linear_solver.pyc > > in solve(self, x, b) > > 140 r = self.ksp.getConvergedReason() > > 141 if r < 0: > > --> 142 raise RuntimeError("LinearSolver failed to > converge > > after %d iterations with reason: %s", > self.ksp.getIterationNumber(), > > solving_utils.KSPReasons[r]) > > > > KeyError: -11 > > > > > > > > On 29.03.2016 18:10, Andrew McRae wrote: > > > What output do you get? > > > > > > On 29 March 2016 at 16:09, George Ovchinnikov > <lives9@gmail.com <mailto:lives9@gmail.com> <mailto:lives9@gmail.com <mailto:lives9@gmail.com>> <mailto:lives9@gmail.com <mailto:lives9@gmail.com> > <mailto:lives9@gmail.com <mailto:lives9@gmail.com>>> > > > <mailto:lives9@gmail.com <mailto:lives9@gmail.com> <mailto:lives9@gmail.com <mailto:lives9@gmail.com>> > <mailto:lives9@gmail.com <mailto:lives9@gmail.com> <mailto:lives9@gmail.com <mailto:lives9@gmail.com>>>>> wrote: > > > > > > Dear All, > > > > > > I have trilinear form a(w,u,v) and usually solve > > > a(w,u,v) = l(v), for u with fixed w. > > > > > > Here I have: > > > > > > a = w dot(grad(u), grad(v)) * dx, > > > and > > > l(v) = f * v * dx. > > > > > > Now, given u_tilde I want to solve for w, i.e. find > > > w_tilde such, that > > > a(w_tilde, u_tilde, v) = l(v), for any v in suitable > subspace. > > > > > > I'm trying the following: > > > > > > mesh = UnitSquareMesh(size, size) > > > V = FunctionSpace(mesh, "CG", 1) > > > > > > f = Function(V) > > > f.interpolate(Expression("1")) > > > > > > u_tilde = Function(V) > > > u_tilde.interpolate(Expression("1/(1+exp(-1*x[0])) * > > > 1/(1+exp(-1*(1-x[0]))) *1/(1+exp(-1*x[1])) * > > 1/(1+exp(-1*(1-x[1])))" )) > > > > > > w_tilde = TrialFunction(V) > > > v = TestFunction(V) > > > > > > a_tilde = (w_tilde * dot(grad(u_tilde), grad(v))) * dx > > > frm_tilde = assemble( a_tilde ) > > > > > > L = f * v * dx > > > rhs = assemble(L) > > > > > > w_sol = Function(V) > > > solve(frm_tilde, rhs, w_sol, solver_parameters={"ksp_type": > > "preonly", > > > "pc_type": "lu"}) > > > File("w_sol.pvd") << w_sol > > > > > > > > > It fails to converge: > > > 140 r = self.ksp.getConvergedReason() > > > 141 if r < 0: > > > --> 142 raise RuntimeError("LinearSolver > failed to > > converge > > > after %d iterations with reason: %s", > > self.ksp.getIterationNumber(), > > > solving_utils.KSPReasons[r]) > > > > > > KeyError: -11 > > > > > > I'm using direct method, not the iterative one, so what is > > happening > > > here? > > > > > > _______________________________________________ > > > firedrake mailing list > > > firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk> > <mailto:firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk>> <mailto:firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk> > <mailto:firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk>>> > > <mailto:firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk> > <mailto:firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk>> <mailto:firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk> > <mailto:firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk>>>> > > > https://mailman.ic.ac.uk/mailman/listinfo/firedrake > > > > > > > > > > > > > > > _______________________________________________ > > > firedrake mailing list > > > firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk> <mailto:firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk>> > <mailto:firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk> <mailto:firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk>>> > > > https://mailman.ic.ac.uk/mailman/listinfo/firedrake > > > > > > > > > _______________________________________________ > > firedrake mailing list > > firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk> <mailto:firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk>> > <mailto:firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk> <mailto:firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk>>> > > https://mailman.ic.ac.uk/mailman/listinfo/firedrake > > > > > > > > > > _______________________________________________ > > firedrake mailing list > > firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk> <mailto:firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk>> > > https://mailman.ic.ac.uk/mailman/listinfo/firedrake > > > > > _______________________________________________ > firedrake mailing list > firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk> <mailto:firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk>> > https://mailman.ic.ac.uk/mailman/listinfo/firedrake > > > > > _______________________________________________ > firedrake mailing list > firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk> > https://mailman.ic.ac.uk/mailman/listinfo/firedrake >
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake