I have noticed that `KrylovSolver`

is able to solve Poisson equation with no boundary condition given explicitly. What are the default boundary conditions?

My MWE:

```
from fenics import *
# Create mesh and define function space
mesh = UnitSquareMesh(8, 8)
V = FunctionSpace(mesh, 'P', 1)
# Define variational problem
u = TrialFunction(V)
v = TestFunction(V)
f = Expression('(x[0] - 0.5) + (x[1] - 0.5)', degree=1)
a = dot(grad(u), grad(v))*dx
L = f*v*dx
# Compute solution
u = Function(V)
solver = KrylovSolver("cg", "ilu")
solver.parameters["maximum_iterations"] = 20000
solver.parameters["absolute_tolerance"] = 1E-8
solver.parameters["monitor_convergence"] = True
solver.solve(assemble(a), u.vector(), assemble(L))
```