`NDSolve` is not capable of solving this sort of problem as a PDE. Thus, it is necessary to perform the computation by discretizing the PDE in `x`. This procedure is discussed in [Introduction to Method of Lines][1]. A while ago, I solved a somewhat similar problem, [78493][2], that involved an integral over `u` in one of the boundary conditions. Here, the integral of `x u` enters into the PDE itself. The code nonetheless resembles that in the earlier problem. xmax = 5; tmax = 5; n = 100; h = xmax/n; U[t_] = Table[u[i][t], {i, 1, n + 1}]; xtab = Table[(i - 1) h, {i, 1, n + 1}]; creates the list of dependent variables and their corresponding positions in `x`. Then, usum = xtab.U[t] h; stab = Join[{0}, Thread[(xtab - usum) U[t]][[2 ;; n]], {0}]; generates the result of the discretized integral of `x u` and constructs the source term. `(x - NIntegrate[x u[x, t], {x, 0, xmax}]) u[x, t]`. (Observe that the source term is not applied to the boundary equations.) Next, eqns = Thread[D[U[t], t] == stab + Join[{0}, ListCorrelate[{1, -2, 1}/h^2, U[t]], {0}]]; initc = Thread[U[0] == 2/(Sqrt[Pi]*Exp[xtab^2])]; lines = NDSolveValue[{eqns, initc}, U[t], {t, 0, tmax}] // Flatten; constructs the coupled ODEs that represent the PDE, the initial conditions, and solves them numerically. The result is, ParametricPlot3D[Evaluate@Thread[{xtab, t, lines}], {t, 0, tmax}, PlotRange -> All, AxesLabel -> {"x", "t", "u"}, BoxRatios -> {2, 2, 1}, ImageSize -> Large, LabelStyle -> {Black, Bold, Medium}] [![enter image description here][3]][3] [1]: http://reference.wolfram.com/language/tutorial/NDSolveMethodOfLines.html [2]: https://mathematica.stackexchange.com/a/78564/1063 [3]: https://i.sstatic.net/UFd81.png